From 6b00eedf0800326a3478046d05321640c63626a8 Mon Sep 17 00:00:00 2001 From: Github Actions Date: Mon, 29 Nov 2021 10:05:12 +0000 Subject: [PATCH] Build by Github Actions --- dist/CHANGELOG.md | 16 +++ dist/LICENSE | 201 +++++++++++++++++++++++++++++++++++++ dist/README.md | 95 ++++++++++++++++++ dist/img/logo.png | Bin 0 -> 55646 bytes dist/module.js | 3 + dist/module.js.LICENSE.txt | 25 +++++ dist/module.js.map | 1 + dist/plugin.json | 32 ++++++ 8 files changed, 373 insertions(+) create mode 100644 dist/CHANGELOG.md create mode 100644 dist/LICENSE create mode 100644 dist/README.md create mode 100644 dist/img/logo.png create mode 100644 dist/module.js create mode 100644 dist/module.js.LICENSE.txt create mode 100644 dist/module.js.map create mode 100644 dist/plugin.json diff --git a/dist/CHANGELOG.md b/dist/CHANGELOG.md new file mode 100644 index 0000000..849f2b0 --- /dev/null +++ b/dist/CHANGELOG.md @@ -0,0 +1,16 @@ +# CHANGELOG + +| Version | Changes | +| ------- | -------------------------------------------------- | +| 0.2.0 | **Plugin Signed** | +| | Tagged releases | +| | Bug fixes | +| 0.1.0 | **First version for release** | +| 0.0.4 | Base theme option | +| | Bug fixes (#4) | +| 0.0.3 | Schema changes (BREAKING) | +| | Option to switch between default dark,light themes | +| | BG Image as theme option | +| | Bug fixes | +| 0.0.2 | Multiple Themes, Theme picker | +| 0.0.1 | Base version | diff --git a/dist/LICENSE b/dist/LICENSE new file mode 100644 index 0000000..2008106 --- /dev/null +++ b/dist/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2021 Sriramajeyam Sugumaran + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/dist/README.md b/dist/README.md new file mode 100644 index 0000000..b36e136 --- /dev/null +++ b/dist/README.md @@ -0,0 +1,95 @@ +# Boom Theme Panel + +[![Build & Publish](https://github.com/yesoreyeram/yesoreyeram-boomtheme-panel/workflows/Build%20&%20Publish/badge.svg)](https://github.com/yesoreyeram/yesoreyeram-boomtheme-panel/actions?query=workflow%3A%22Build+%26+Publish%22) +[![Release](https://github.com/yesoreyeram/yesoreyeram-boomtheme-panel/workflows/Release/badge.svg)](https://github.com/yesoreyeram/yesoreyeram-boomtheme-panel/actions?query=workflow%3ARelease) + +Theme switcher with custom styles / themes for grafana dashboards. + +![image](https://user-images.githubusercontent.com/153843/99880461-5e1aa900-2c0b-11eb-9c28-3c80381f2504.png) +![image](https://user-images.githubusercontent.com/153843/99880502-a20dae00-2c0b-11eb-8355-c7c87bcb2f5c.png) + +## Features + +- Theme switcher +- Multiple themes per dashboard +- Theme builder +- External stylesheets support +- Add inline styles to themes to override styles +- Add many themes as possible without rebuilding / restarting grafana +- Users can change the themes without editing the dashboard +- Dashboard specific themes + +## Creating Theme + +Themes can be created with multiple building blocks like background image, base theme etc. + +| Property | Description | +| --------------------------- | -------------------------------------------------------------------------------------------------------- | +| Base theme | Themes can be built on top of default/dark/light theme. Default is **Default Theme** | +| Background image | Optional property. Can be blank. If specified more than once, last wins. Value should be valid image URL | +| CSS url | External theme file. Should be valid CSS file URL | +| Custom Style / CSS Override | CSS Styles. Should be valid css | +| Panel container BG | Background color for the panels | + +## Supported Grafana version + +This grafana plugin is tested with the following grafana versions, But other versions are also expected to work. + +- Grafana version 8.x +- Grafana version 7.x +- Grafana version 6.x + +## Notes + +- When adding external stylesheets, make sure CORS enabled for those domains. + +- To make panel invisible : Modify following theme panel settings: + - transparent = true + - title = "" + - Disable Theme Picker using panel settings + - Move this panel to the bottom of the dashboard + - Adjust the height and width if required. + +## Known issues / Limitations + +- If any custom plugin is used, dark/light theme switch, base theme will not work for those custom plugins. Refer [this](https://github.com/yesoreyeram/yesoreyeram-boomtheme-panel/issues/3) github issue + +- Theme panel should be within view port. Otherwise, Grafana won't render the theme. Refer [this](https://github.com/yesoreyeram/yesoreyeram-boomtheme-panel/issues/17) + +## Installation Instructions + +There are multiple ways to install this plugin into your grafana instance + +### Download and extract zip file + +Download the zip file from [github releases page](https://github.com/yesoreyeram/yesoreyeram-boomtheme-panel/releases) and extract into your grafana plugin folder. Then restart Grafana. + +### Using grafana-cli + +If you are using grafana-cli, execute the following command to install the plugin + +```sh +grafana-cli plugins install yesoreyeram-boomtheme-panel +``` + +or for specific versions + +```sh +grafana-cli --pluginUrl https://github.com/yesoreyeram/yesoreyeram-boomtheme-panel/releases/download/v0.2.0-alpha.5/yesoreyeram-boomtheme-panel-0.2.0-alpha.5.zip plugins install yesoreyeram-boomtheme-panel +``` + +### Using helm chart + +If you use helm chart to provision grafana, use the following config to install the plugin + +```yml +plugins: + - yesoreyeram-boomtheme-panel +``` + +or for any specific versions + +```yml +plugins: + - https://github.com/yesoreyeram/yesoreyeram-boomtheme-panel/releases/download/v0.2.0-alpha.5/yesoreyeram-boomtheme-panel-0.2.0-alpha.5.zip;yesoreyeram-boomtheme-panel +``` diff --git a/dist/img/logo.png b/dist/img/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..c7d0f60737b4e6cf98495bf08ac26e701ae59bda GIT binary patch literal 55646 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.call(this,r(11))},function(e,t,r){e.exports=r(9)()},function(e,t){e.exports=r},function(e,t){e.exports=n},function(e,t,r){!function(){"use strict";e.exports=function(e,t){var r,n,a,c,o,i,s,l,u,f,h,p=0,d=e.length,m="",b=!0,g=!1;function v(e){return" "===e||"\n"===e||"\t"===e||"\r"===e||"\f"===e}function y(e){return"'"===e||'"'===e}function k(e){return a>="a"&&a<="z"||a>="A"&&a<="Z"||a>="0"&&a<="9"||"-_*.:#[]".indexOf(e)>=0}function C(){var e;for(e=l;e>0;e-=1)m+=r.indent}function w(){m=h(m),b?m+=" {":(m+="\n",C(),m+="{"),"\n"!==c&&(m+="\n"),l+=1}function E(){var e;l-=1,(m=h(m)).length>0&&g&&";"!==(e=m.charAt(m.length-1))&&"{"!==e&&(m+=";"),m+="\n",C(),m+="}",n.push(m),m=""}for(void 0===(r=arguments.length>1?t:{}).indent&&(r.indent=" "),"string"==typeof r.openbrace&&(b="end-of-line"===r.openbrace),"boolean"==typeof r.autosemicolon&&(g=r.autosemicolon),h=String.prototype.trimRight?function(e){return e.trimRight()}:function(e){return e.replace(/\s+$/,"")},l=0,i=(s={Start:0,AtRule:1,Block:2,Selector:3,Ruleset:4,Property:5,Separator:6,Expression:7,URL:8}).Start,f=!1,n=[],e=e.replace(/\r\n/g,"\n");p=128){i=s.Start,m+=a;continue}if(k(a)||"@"===a){if(0===(o=h(m)).length)n.length>0&&(m="\n\n");else if("}"===o.charAt(o.length-1)||";"===o.charAt(o.length-1))m=o+"\n\n";else for(;" "===(c=m.charAt(m.length-1))||9===c.charCodeAt(0);)m=m.substr(0,m.length-1);m+=a,i="@"===a?s.AtRule:s.Selector;continue}}if(i!==s.AtRule)if(i!==s.Block)if(i!==s.Selector)if(i!==s.Ruleset)if(i!==s.Property)if(i!==s.Separator)if(i!==s.Expression)i===s.URL&&")"===a&&m.charAt(m.length-1!=="\\")?(m+=a,i=s.Expression):m+=a;else{if("}"===a){E(),i=s.Start,l>0&&(i=s.Block);continue}if(";"===a){m=h(m),m+=";\n",i=s.Ruleset;continue}if(m+=a,"("===a&&"l"===m.charAt(m.length-2)&&"r"===m.charAt(m.length-3)&&"u"===m.charAt(m.length-4)){i=s.URL;continue}}else{if(!v(a)){m+=a,i=s.Expression;continue}y(c)&&(i=s.Expression)}else{if(":"===a){m=h(m),m+=": ",i=s.Expression,v(c)&&(i=s.Separator);continue}if("}"===a){E(),i=s.Start,l>0&&(i=s.Block);continue}m+=a}else{if("}"===a){E(),i=s.Start,l>0&&(i=s.Block);continue}if("\n"===a){m=h(m),m+="\n";continue}if(!v(a)){m=h(m),m+="\n",C(),m+=a,i=s.Property;continue}m+=a}else{if("{"===a){w(),i=s.Ruleset;continue}if("}"===a){E(),i=s.Start;continue}m+=a}else{if(k(a)){if(0===(o=h(m)).length)n.length>0&&(m="\n\n");else if("}"===o.charAt(o.length-1))m=o+"\n\n";else for(;" "===(c=m.charAt(m.length-1))||9===c.charCodeAt(0);)m=m.substr(0,m.length-1);C(),m+=a,i=s.Selector;continue}if("}"===a){E(),i=s.Start;continue}m+=a}else{if(";"===a){m+=a,i=s.Start;continue}if("{"===a){o=h(m),w(),i="@font-face"===o?s.Ruleset:s.Block;continue}m+=a}}else f=!0,m+=a,m+=c,p+=1;return m=n.join("")+m}}()},function(e,t,r){e.exports=function e(t){"use strict";var r=/^\0+/g,n=/[\0\r\f]/g,a=/: */g,c=/zoo|gra/,o=/([,: ])(transform)/g,i=/,+\s*(?![^(]*[)])/g,s=/ +\s*(?![^(]*[)])/g,l=/ *[\0] */g,u=/,\r+?/g,f=/([\t\r\n ])*\f?&/g,h=/:global\(((?:[^\(\)\[\]]*|\[.*\]|\([^\(\)]*\))*)\)/g,p=/\W+/g,d=/@(k\w+)\s*(\S*)\s*/,m=/::(place)/g,b=/:(read-only)/g,g=/\s+(?=[{\];=:>])/g,v=/([[}=:>])\s+/g,y=/(\{[^{]+?);(?=\})/g,k=/\s{2,}/g,C=/([^\(])(:+) */g,w=/[svh]\w+-[tblr]{2}/,E=/\(\s*(.*)\s*\)/g,A=/([\s\S]*?);/g,x=/-self|flex-/g,T=/[^]*?(:[rp][el]a[\w-]+)[^]*/,S=/stretch|:\s*\w+\-(?:conte|avail)/,O=/([^-])(image-set\()/,L="-webkit-",P="-moz-",R="-ms-",N=1,B=1,_=0,j=1,I=1,U=1,G=0,D=0,M=0,F=[],$=[],z=0,H=null,W=0,Y=1,K="",q="",V="";function Z(e,t,a,c,o){for(var i,s,u=0,f=0,h=0,p=0,g=0,v=0,y=0,k=0,w=0,A=0,x=0,T=0,S=0,O=0,P=0,R=0,G=0,$=0,H=0,Q=a.length,ae=Q-1,ce="",oe="",ie="",se="",le="",ue="";P0&&(oe=oe.replace(n,"")),oe.trim().length>0)){switch(y){case 32:case 9:case 59:case 13:case 10:break;default:oe+=a.charAt(P)}y=59}if(1===G)switch(y){case 123:case 125:case 59:case 34:case 39:case 40:case 41:case 44:G=0;case 9:case 13:case 10:case 32:break;default:for(G=0,H=P,g=y,P--,y=59;H0&&(++P,y=g);case 123:H=Q}}switch(y){case 123:for(g=(oe=oe.trim()).charCodeAt(0),x=1,H=++P;P0&&(oe=oe.replace(n,"")),v=oe.charCodeAt(1)){case 100:case 109:case 115:case 45:i=t;break;default:i=F}if(H=(ie=Z(t,i,ie,v,o+1)).length,M>0&&0===H&&(H=oe.length),z>0&&(s=re(3,ie,i=J(F,oe,$),t,B,N,H,v,o,c),oe=i.join(""),void 0!==s&&0===(H=(ie=s.trim()).length)&&(v=0,ie="")),H>0)switch(v){case 115:oe=oe.replace(E,te);case 100:case 109:case 45:ie=oe+"{"+ie+"}";break;case 107:ie=(oe=oe.replace(d,"$1 $2"+(Y>0?K:"")))+"{"+ie+"}",ie=1===I||2===I&&ee("@"+ie,3)?"@"+L+ie+"@"+ie:"@"+ie;break;default:ie=oe+ie,112===c&&(se+=ie,ie="")}else ie="";break;default:ie=Z(t,J(t,oe,$),ie,c,o+1)}le+=ie,T=0,G=0,O=0,R=0,$=0,S=0,oe="",ie="",y=a.charCodeAt(++P);break;case 125:case 59:if((H=(oe=(R>0?oe.replace(n,""):oe).trim()).length)>1)switch(0===O&&(45===(g=oe.charCodeAt(0))||g>96&&g<123)&&(H=(oe=oe.replace(" ",":")).length),z>0&&void 0!==(s=re(1,oe,t,e,B,N,se.length,c,o,c))&&0===(H=(oe=s.trim()).length)&&(oe="\0\0"),g=oe.charCodeAt(0),v=oe.charCodeAt(1),g){case 0:break;case 64:if(105===v||99===v){ue+=oe+a.charAt(P);break}default:if(58===oe.charCodeAt(H-1))break;se+=X(oe,g,v,oe.charCodeAt(2))}T=0,G=0,O=0,R=0,$=0,oe="",y=a.charCodeAt(++P)}}switch(y){case 13:case 10:if(f+p+h+u+D===0)switch(A){case 41:case 39:case 34:case 64:case 126:case 62:case 42:case 43:case 47:case 45:case 58:case 44:case 59:case 123:case 125:break;default:O>0&&(G=1)}47===f?f=0:j+T===0&&107!==c&&oe.length>0&&(R=1,oe+="\0"),z*W>0&&re(0,oe,t,e,B,N,se.length,c,o,c),N=1,B++;break;case 59:case 125:if(f+p+h+u===0){N++;break}default:switch(N++,ce=a.charAt(P),y){case 9:case 32:if(p+u+f===0)switch(k){case 44:case 58:case 9:case 32:ce="";break;default:32!==y&&(ce=" ")}break;case 0:ce="\\0";break;case 12:ce="\\f";break;case 11:ce="\\v";break;case 38:p+f+u===0&&j>0&&($=1,R=1,ce="\f"+ce);break;case 108:if(p+f+u+_===0&&O>0)switch(P-O){case 2:112===k&&58===a.charCodeAt(P-3)&&(_=k);case 8:111===w&&(_=w)}break;case 58:p+f+u===0&&(O=P);break;case 44:f+h+p+u===0&&(R=1,ce+="\r");break;case 34:case 39:0===f&&(p=p===y?0:0===p?y:p);break;case 91:p+f+h===0&&u++;break;case 93:p+f+h===0&&u--;break;case 41:p+f+u===0&&h--;break;case 40:if(p+f+u===0){if(0===T)switch(2*k+3*w){case 533:break;default:x=0,T=1}h++}break;case 64:f+h+p+u+O+S===0&&(S=1);break;case 42:case 47:if(p+u+h>0)break;switch(f){case 0:switch(2*y+3*a.charCodeAt(P+1)){case 235:f=47;break;case 220:H=P,f=42}break;case 42:47===y&&42===k&&H+2!==P&&(33===a.charCodeAt(H+2)&&(se+=a.substring(H,P+1)),ce="",f=0)}}if(0===f){if(j+p+u+S===0&&107!==c&&59!==y)switch(y){case 44:case 126:case 62:case 43:case 41:case 40:if(0===T){switch(k){case 9:case 32:case 10:case 13:ce+="\0";break;default:ce="\0"+ce+(44===y?"":"\0")}R=1}else switch(y){case 40:O+7===P&&108===k&&(O=0),T=++x;break;case 41:0==(T=--x)&&(R=1,ce+="\0")}break;case 9:case 32:switch(k){case 0:case 123:case 125:case 59:case 44:case 12:case 9:case 32:case 10:case 13:break;default:0===T&&(R=1,ce+="\0")}}oe+=ce,32!==y&&9!==y&&(A=y)}}w=k,k=y,P++}if(H=se.length,M>0&&0===H&&0===le.length&&0===t[0].length==0&&(109!==c||1===t.length&&(j>0?q:V)===t[0])&&(H=t.join(",").length+2),H>0){if(i=0===j&&107!==c?function(e){for(var t,r,a=0,c=e.length,o=Array(c);a1)){if(h=s.charCodeAt(s.length-1),p=r.charCodeAt(0),t="",0!==u)switch(h){case 42:case 126:case 62:case 43:case 32:case 40:break;default:t=" "}switch(p){case 38:r=t+q;case 126:case 62:case 43:case 32:case 41:case 40:break;case 91:r=t+r+q;break;case 58:switch(2*r.charCodeAt(1)+3*r.charCodeAt(2)){case 530:if(U>0){r=t+r.substring(8,f-1);break}default:(u<1||i[u-1].length<1)&&(r=t+q+r)}break;case 44:t="";default:r=f>1&&r.indexOf(":")>0?t+r.replace(C,"$1"+q+"$2"):t+r+q}s+=r}o[a]=s.replace(n,"").trim()}return o}(t):t,z>0&&void 0!==(s=re(2,se,i,e,B,N,H,c,o,c))&&0===(se=s).length)return ue+se+le;if(se=i.join(",")+"{"+se+"}",I*_!=0){switch(2!==I||ee(se,2)||(_=0),_){case 111:se=se.replace(b,":-moz-$1")+se;break;case 112:se=se.replace(m,"::"+L+"input-$1")+se.replace(m,"::-moz-$1")+se.replace(m,":-ms-input-$1")+se}_=0}}return ue+se+le}function J(e,t,r){var n=t.trim().split(u),a=n,c=n.length,o=e.length;switch(o){case 0:case 1:for(var i=0,s=0===o?"":e[0]+" ";i0&&j>0)return a.replace(h,"$1").replace(f,"$1"+V);break;default:return e.trim()+a.replace(f,"$1"+e.trim())}default:if(r*j>0&&a.indexOf("\f")>0)return a.replace(f,(58===e.charCodeAt(0)?"":"$1")+e.trim())}return e+a}function X(e,t,r,n){var l,u=0,f=e+";",h=2*t+3*r+4*n;if(944===h)return function(e){var t=e.length,r=e.indexOf(":",9)+1,n=e.substring(0,r).trim(),a=e.substring(r,t-1).trim();switch(e.charCodeAt(9)*Y){case 0:break;case 45:if(110!==e.charCodeAt(10))break;default:var c=a.split((a="",i)),o=0;for(r=0,t=c.length;o64&&f<90||f>96&&f<123||95===f||45===f&&45!==l.charCodeAt(1)))switch(isNaN(parseFloat(l))+(-1!==l.indexOf("("))){case 1:switch(l){case"infinite":case"alternate":case"backwards":case"running":case"normal":case"forwards":case"both":case"none":case"linear":case"ease":case"ease-in":case"ease-out":case"ease-in-out":case"paused":case"reverse":case"alternate-reverse":case"inherit":case"initial":case"unset":case"step-start":case"step-end":break;default:l+=K}}u[r++]=l}a+=(0===o?"":",")+u.join(" ")}}return a=n+a+";",1===I||2===I&&ee(a,1)?L+a+a:a}(f);if(0===I||2===I&&!ee(f,1))return f;switch(h){case 1015:return 97===f.charCodeAt(10)?L+f+f:f;case 951:return 116===f.charCodeAt(3)?L+f+f:f;case 963:return 110===f.charCodeAt(5)?L+f+f:f;case 1009:if(100!==f.charCodeAt(4))break;case 969:case 942:return L+f+f;case 978:return L+f+P+f+f;case 1019:case 983:return L+f+P+f+R+f+f;case 883:return 45===f.charCodeAt(8)?L+f+f:f.indexOf("image-set(",11)>0?f.replace(O,"$1"+L+"$2")+f:f;case 932:if(45===f.charCodeAt(4))switch(f.charCodeAt(5)){case 103:return L+"box-"+f.replace("-grow","")+L+f+R+f.replace("grow","positive")+f;case 115:return L+f+R+f.replace("shrink","negative")+f;case 98:return L+f+R+f.replace("basis","preferred-size")+f}return L+f+R+f+f;case 964:return L+f+R+"flex-"+f+f;case 1023:if(99!==f.charCodeAt(8))break;return l=f.substring(f.indexOf(":",15)).replace("flex-","").replace("space-between","justify"),L+"box-pack"+l+L+f+R+"flex-pack"+l+f;case 1005:return c.test(f)?f.replace(a,":"+L)+f.replace(a,":"+P)+f:f;case 1e3:switch(u=(l=f.substring(13).trim()).indexOf("-")+1,l.charCodeAt(0)+l.charCodeAt(u)){case 226:l=f.replace(w,"tb");break;case 232:l=f.replace(w,"tb-rl");break;case 220:l=f.replace(w,"lr");break;default:return f}return L+f+R+l+f;case 1017:if(-1===f.indexOf("sticky",9))return f;case 975:switch(u=(f=e).length-10,h=(l=(33===f.charCodeAt(u)?f.substring(0,u):f).substring(e.indexOf(":",7)+1).trim()).charCodeAt(0)+(0|l.charCodeAt(7))){case 203:if(l.charCodeAt(8)<111)break;case 115:f=f.replace(l,L+l)+";"+f;break;case 207:case 102:f=f.replace(l,L+(h>102?"inline-":"")+"box")+";"+f.replace(l,L+l)+";"+f.replace(l,R+l+"box")+";"+f}return f+";";case 938:if(45===f.charCodeAt(5))switch(f.charCodeAt(6)){case 105:return l=f.replace("-items",""),L+f+L+"box-"+l+R+"flex-"+l+f;case 115:return L+f+R+"flex-item-"+f.replace(x,"")+f;default:return L+f+R+"flex-line-pack"+f.replace("align-content","").replace(x,"")+f}break;case 973:case 989:if(45!==f.charCodeAt(3)||122===f.charCodeAt(4))break;case 931:case 953:if(!0===S.test(e))return 115===(l=e.substring(e.indexOf(":")+1)).charCodeAt(0)?X(e.replace("stretch","fill-available"),t,r,n).replace(":fill-available",":stretch"):f.replace(l,L+l)+f.replace(l,P+l.replace("fill-",""))+f;break;case 962:if(f=L+f+(102===f.charCodeAt(5)?R+f:"")+f,r+n===211&&105===f.charCodeAt(13)&&f.indexOf("transform",10)>0)return f.substring(0,f.indexOf(";",27)+1).replace(o,"$1"+L+"$2")+f}return f}function ee(e,t){var r=e.indexOf(1===t?":":"{"),n=e.substring(0,3!==t?r:10),a=e.substring(r+1,e.length-1);return H(2!==t?n:n.replace(T,"$1"),a,t)}function te(e,t){var r=X(t,t.charCodeAt(0),t.charCodeAt(1),t.charCodeAt(2));return r!==t+";"?r.replace(A," or ($1)").substring(4):"("+t+")"}function re(e,t,r,n,a,c,o,i,s,l){for(var u,f=0,h=t;f0&&(K=a.replace(p,91===c?"":"-")),c=1,1===j?V=a:q=a;var o,i=[V];z>0&&void 0!==(o=re(-1,r,i,i,B,N,0,0,0,0))&&"string"==typeof o&&(r=o);var s=Z(F,i,r,0,0);return z>0&&void 0!==(o=re(-2,s,i,i,B,N,s.length,0,0,0))&&"string"!=typeof(s=o)&&(c=0),K="",V="",q="",_=0,B=1,N=1,G*c==0?s:function(e){return e.replace(n,"").replace(g,"").replace(v,"$1").replace(y,"$1").replace(k," ")}(s)}return ce.use=function e(t){switch(t){case void 0:case null:z=$.length=0;break;default:if("function"==typeof t)$[z++]=t;else if("object"==typeof t)for(var r=0,n=t.length;r1)for(var r=1;r0)&&!(n=c.next()).done;)o.push(n.value)}catch(e){a={error:e}}finally{try{n&&!n.done&&(r=c.return)&&r.call(c)}finally{if(a)throw a.error}}return o}var c=r(0),o=r.n(c),i=r(3),s=r.n(i),l=r(4),u=function(e){return e.setState=e.setState.bind(e)},f=function(e){return!!e&&e instanceof o.a.Component},h=function(e){return function(t,r){return f(t)?function(n){return t[r]=e(n)}:void 0}};h((function(e){return{component:e,element:Object(l.findDOMNode)(e)}})),h((function(e){return e}));var p=h(l.findDOMNode),d=function(e,t){for(var r=arguments.length,n=Array(r>2?r-2:0),a=2;a=0||Object.prototype.hasOwnProperty.call(e,n)&&(r[n]=e[n]);return r}(e,["children","hasSourceMap","isCompressed","isPrefixed"])),r=this.state.style;return k(this.props,"hasSourceMap")&&b()?o.a.createElement("link",S({},t,{href:this.getCachedLinkHref(r),ref:p(this,"node"),rel:"stylesheet"})):o.a.createElement("style",S({ref:p(this,"node")},t),r)},t}(c.PureComponent);I.propTypes={children:s.a.string.isRequired,hasSourceMap:s.a.bool,id:s.a.string,isCompressed:s.a.bool,isMinified:s.a.bool,isPrefixed:s.a.bool},I.setGlobalOptions=function(e){return Object.keys(e).forEach((function(t){return y.hasOwnProperty(t)&&"boolean"==typeof e[t]&&(y[t]=e[t])}))};var U,G=I,D=r(8),M=r.n(D),F={DARK:{id:"dark",index_id:-2e3,name:"Dark Theme"},DEFAULT:{id:"default",index_id:-1e3,name:"Default Theme"},LIGHT:{id:"light",index_id:-3e3,name:"Light Theme"}},$="New Theme",z={BASE_THEME:"basetheme",BG_IMAGE:"bgimage",NONE:"none",STYLE:"style",PANEL_CONTAINER_BG_COLOR:"panel-container-bg-color",URL:"url"};!function(e){e.BaseTheme="theme",e.BackgroundImage="bgimage",e.CustomStyle="style",e.ExternalURL="url",e.PanelBackground="panel-container-bg-color",e.None="none"}(U||(U={}));var H=function(e,t){switch(this.type=e,e.toLowerCase()){case U.BaseTheme:this.props={theme:t&&t.theme?t.theme:""};break;case U.CustomStyle:this.props={text:t&&t.text?t.text:""};break;case U.ExternalURL:case U.BackgroundImage:this.props={url:t&&t.url?t.url:""};break;case z.PANEL_CONTAINER_BG_COLOR:this.props={color:t&&t.color?t.color:""};break;default:this.props={}}},W=function(e){var t="";if(["dark","light"].indexOf(e.toLowerCase())>-1&&window.performance){var r=window.performance.getEntries().map((function(e){return e.name})).filter((function(e){return e.endsWith(".js")})).filter((function(e){return e.indexOf("/public/build/app.")>-1}));r&&r.length>0&&(t=r[0].replace("/public/build/app.","/public/build/grafana."+e.toLowerCase()+".").slice(0,-3)+".css")}return t},Y=function(e,t){switch(t){case-1e3:return"Grafana Default";case-2e3:return"Grafana Dark";case-3e3:return"Grafana Light";default:return e[t]&&e[t].name?e[t].name:"Grafana Default"}},K=function(){function e(e){this.name=e.name||$,this.styles=0===e.styles.length?[new H(U.BaseTheme,{theme:F.DEFAULT.id}),new H(U.BackgroundImage,{url:""}),new H(U.ExternalURL,{url:""}),new H(U.CustomStyle,{text:""})]:e.styles}return e.prototype.addStyle=function(e){this.styles.push(new H(e,{}))},e.prototype.deleteStyle=function(e){this.styles.splice(e,1)},e.prototype.constructTheme=function(e){var t="";return M.a.each(e,(function(e){e.type===z.URL?e.props&&""!==e.props.url&&(t+="@import url('"+e.props.url+"');\n "):e.type===z.BASE_THEME?e.props&&""!==e.props.theme&&(e.props.theme.toLowerCase()===F.DARK.id?t+="@import url('"+W("dark")+"');\n ":e.props.theme.toLowerCase()===F.LIGHT.id&&(t+="@import url('"+W("light")+"');\n ")):e.type===z.STYLE?e.props&&""!==e.props.text&&(t+=(e.props.text||"")+"\n "):e.type===z.BG_IMAGE?e.props&&""!==e.props.url&&(t+='\n.main-view, .sidemenu, .sidemenu-open .sidemenu, .navbar, .dashboard-container,.dashboard-container > div {\n background: url("'+e.props.url+'") no-repeat center center fixed;\n -webkit-background-size: cover;\n -moz-background-size: cover;\n -o-background-size: cover;\n background-size: cover;\n}\n '):e.type===z.PANEL_CONTAINER_BG_COLOR&&e.props&&""!==e.props.color&&(t+="\n.panel-container {\n background-color: "+e.props.color+"\n}\n")})),t},e.prototype.getThemeContent=function(){var e="";return this.styles&&this.styles.length>0&&(e+=this.constructTheme(this.styles.filter((function(e){return e.type===z.URL}))),e+=this.constructTheme(this.styles.filter((function(e){return e.type===z.STYLE}))),e+=this.constructTheme(this.styles.filter((function(e){return e.type!==z.URL&&e.type!==z.STYLE})))),e},e}(),q=function(e){return o.a.createElement("div",{style:{textAlign:"center"}},o.a.createElement("br",null),e.themes.map((function(e){return e.name})).concat(["Grafana Dark","Grafana Light"]).map((function(t,r){return o.a.createElement("span",{className:"btn btn-secondary",style:{marginLeft:0===r?"0":"10px",marginRight:"10px"},onClick:function(){return function(t){e.onChange(t)}(t)},key:r},t)})))},V=r(1),Z=function(e){var t=e.value,r=e.onChange,n=a(Object(c.useState)(!1),2),i=n[0],s=n[1],l=function(e){var n=t;n.styles=n.styles||[],n.styles.push(new H(e,null)),r(n)},u=function(e){var n=t;n.name=e,r(n)},f=function(e,n,a){var c=t;c.styles[e].props=c.styles[e].props||{},c.styles[e].props[n]=a,r(c)},h=[{value:"default",label:"Default"},{value:"dark",label:"Dark"},{value:"light",label:"light"}];return o.a.createElement(o.a.Fragment,null,o.a.createElement("span",{className:"btn width-18",style:{justifyContent:"start"}},t.name),o.a.createElement("i",{className:"fa fa-edit btn btn-primary px-2",onClick:function(){return s(!0)}}),o.a.createElement(V.Modal,{isOpen:i,onDismiss:function(){return s(!1)},title:"Edit "+t.name},o.a.createElement(V.Label,null,"Theme Theme"),o.a.createElement(V.Input,{css:{},value:t.name,onChange:function(e){return u(e.currentTarget.value)}}),o.a.createElement("br",null),t.styles.map((function(e,t){switch(e.type){case U.BaseTheme:var r=h.find((function(t){return t.value===e.props.theme}))||{label:"Default",value:"default"};return o.a.createElement(o.a.Fragment,null,o.a.createElement(V.Label,null,"Base Theme"),o.a.createElement(V.RadioButtonGroup,{value:r.value,options:h,onChange:function(e){f(t,"theme",e)}}),o.a.createElement("br",null));case U.BackgroundImage:return o.a.createElement(o.a.Fragment,null,o.a.createElement(V.Label,null,"Background Image"),o.a.createElement(V.Input,{css:{},value:e.props.url,onChange:function(e){f(t,"url",e.currentTarget.value)}}),o.a.createElement("br",null));case U.ExternalURL:return o.a.createElement(o.a.Fragment,null,o.a.createElement(V.Label,null,"External CSS URL"),o.a.createElement(V.Input,{css:{},value:e.props.url,onChange:function(e){f(t,"url",e.currentTarget.value)}}),o.a.createElement("br",null));case U.CustomStyle:return o.a.createElement(o.a.Fragment,null,o.a.createElement(V.Label,null,"Additional CSS Style"),o.a.createElement(V.TextArea,{css:{},value:e.props.text,rows:6,onChange:function(e){f(t,"text",e.currentTarget.value)}}),o.a.createElement("br",null));case U.PanelBackground:return o.a.createElement(o.a.Fragment,null,o.a.createElement(V.Label,null,"Panel BG Color"),o.a.createElement(V.Input,{css:{},value:e.props.color,onChange:function(e){f(t,"color",e.currentTarget.value)},prefix:o.a.createElement("div",null,o.a.createElement(V.ColorPicker,{color:e.props.color,onChange:function(e){f(t,"color",e)}}))}),o.a.createElement("br",null));case"url":return o.a.createElement(o.a.Fragment,null,o.a.createElement(V.Label,null,"Panel Container BG Color"),o.a.createElement(V.Input,{css:{},value:e.props.url,onChange:function(e){f(t,"url",e.currentTarget.value)}}),o.a.createElement("br",null));case"none":default:return o.a.createElement(o.a.Fragment,null)}})),o.a.createElement("div",{className:"text-center"},o.a.createElement("br",null),t.styles.filter((function(e){return e.type===U.ExternalURL})).length<1&&o.a.createElement(o.a.Fragment,null,o.a.createElement("button",{className:"btn btn-success",onClick:function(){return l(U.ExternalURL)}},"Add external CSS"),"  "),t.styles.filter((function(e){return e.type===U.CustomStyle})).length<1&&o.a.createElement(o.a.Fragment,null,o.a.createElement("button",{className:"btn btn-success",onClick:function(){return l(U.CustomStyle)}},"Add custom CSS"),"  "),t.styles.filter((function(e){return e.type===U.BackgroundImage})).length<1&&o.a.createElement(o.a.Fragment,null,o.a.createElement("button",{className:"btn btn-success",onClick:function(){return l(U.BackgroundImage)}},"Add BG Image"),"  "),t.styles.filter((function(e){return e.type===U.PanelBackground})).length<1&&o.a.createElement(o.a.Fragment,null,o.a.createElement("button",{className:"btn btn-success",onClick:function(){return l(U.PanelBackground)}},"Add Panel BG Color"),"  "),o.a.createElement("br",null),o.a.createElement("br",null),o.a.createElement("button",{className:"btn btn-success",onClick:function(){return s(!1)}},"OK"))))},J={id:"themes",name:"Themes",path:"themes",category:["Themes"],editor:function(e){var t=e.value,r=e.onChange,n=function(e,n){var a=t||[];a[n]=e,r(a)};return o.a.createElement(o.a.Fragment,null,t.map((function(e,a){return o.a.createElement("div",{key:a},o.a.createElement("br",null),o.a.createElement(Z,{value:e,onChange:function(e){n(e,a)}}),o.a.createElement("i",{className:"btn fa fa-trash btn btn-danger px-2",title:"Edit "+e.name,onClick:function(){return function(e){var n=t||[];n.splice(e,1),r(n)}(a)}}))})),o.a.createElement("br",null),o.a.createElement("div",{className:"text-center"},o.a.createElement("button",{className:"btn btn-primary",onClick:function(){var e=t||[],n=new K({name:"New Theme "+(e.length+1),styles:[]});e.push(n),r(e)}},"Add New Theme")))}};r.d(t,"plugin",(function(){return Q}));var Q=new n.PanelPlugin((function(e){var t=e.options,r=a(Object(c.useState)(!1),2),n=r[0],i=r[1],s=a(Object(c.useState)(""),2),l=s[0],u=s[1],f="";return t.themes.forEach((function(e,r){var a=new K(e);n?l===a.name?f+=a.getThemeContent():"Grafana Dark"===l?f="@import url('"+W("dark")+"');\n ":"Grafana Light"===l&&(f="@import url('"+W("light")+"');\n "):"Grafana Dark"===t.activeTheme?f="@import url('"+W("dark")+"');\n ":"Grafana Light"===t.activeTheme?f="@import url('"+W("light")+"');\n ":t.activeTheme===a.name&&(f+=a.getThemeContent())})),o.a.createElement(o.a.Fragment,null,o.a.createElement(G,null,f),t.disableThemePicker?o.a.createElement(o.a.Fragment,null):o.a.createElement(q,{themes:t.themes,onChange:function(e){i(!0),u(e)}}))})).setPanelOptions((function(e){return e.addCustomEditor(J),e.addBooleanSwitch({name:"Hide Theme Picker",path:"disableThemePicker",category:["Themes Options"]}),e.addTextInput({name:"Default Theme",path:"activeTheme",category:["Themes Options"]}),e})).setMigrationHandler((function(e){var t,r,n,a={disableThemePicker:null!==(t=e.options.disableThemePicker)&&void 0!==t?t:e.disableThemePicker,activeTheme:null!==(r=e.options.activeTheme)&&void 0!==r?r:Y(e.themes,e.activeThemeId),themes:null!==(n=e.options.themes)&&void 0!==n?n:e.themes};return delete e.themes,delete e.activeThemeId,delete e.disableThemePicker,a}))}])})); +//# sourceMappingURL=module.js.map \ No newline at end of file diff --git a/dist/module.js.LICENSE.txt b/dist/module.js.LICENSE.txt new file mode 100644 index 0000000..3e389ab --- /dev/null +++ b/dist/module.js.LICENSE.txt @@ -0,0 +1,25 @@ +/* + * __ ___ + * _____/ /___ __/ (_)____ + * / ___/ __/ / / / / / ___/ + * (__ ) /_/ /_/ / / (__ ) + * /____/\__/\__, /_/_/____/ + * /____/ + * + * light - weight css preprocessor @licence MIT + */ + +/*! ***************************************************************************** +Copyright (c) Microsoft Corporation. + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR +OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. +***************************************************************************** */ diff --git a/dist/module.js.map b/dist/module.js.map new file mode 100644 index 0000000..dde0bad --- /dev/null +++ b/dist/module.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///external \"react\"","webpack:///external \"@grafana/ui\"","webpack:///../node_modules/react-style-tag/es/constants.js","webpack:///../node_modules/prop-types/index.js","webpack:///external \"react-dom\"","webpack:///external \"@grafana/data\"","webpack:///../node_modules/cssbeautify/cssbeautify.js","webpack:///../node_modules/stylis/stylis.js","webpack:///external \"lodash\"","webpack:///../node_modules/prop-types/factoryWithThrowingShims.js","webpack:///../node_modules/prop-types/lib/ReactPropTypesSecret.js","webpack:///../node_modules/process/browser.js","webpack:///../node_modules/tslib/tslib.es6.js","webpack:///../node_modules/react-parm/es/utils.js","webpack:///../node_modules/react-parm/es/index.js","webpack:///../node_modules/react-style-tag/es/blob.js","webpack:///../node_modules/react-style-tag/es/options.js","webpack:///../node_modules/react-style-tag/es/styles.js","webpack:///../node_modules/react-style-tag/es/Style.js","webpack:///./BoomThemeStyle.ts","webpack:///./config.ts","webpack:///./utils.ts","webpack:///./BoomTheme.ts","webpack:///./editors/ThemePicker.tsx","webpack:///./editors/ThemeEditor.tsx","webpack:///./editors/ThemesEditor.tsx","webpack:///./module.ts","webpack:///./Panel.tsx"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","__WEBPACK_EXTERNAL_MODULE__0__","__WEBPACK_EXTERNAL_MODULE__1__","BEAUTIFY_OPTIONS","autosemicolon","indent","IS_PRODUCTION","process","env","_React$version$split$","version","split","slice","map","Number","REACT_MAJOR_VERSION","REACT_MINOR_VERSION","HAS_UNSAFE_METHODS","__WEBPACK_EXTERNAL_MODULE__4__","__WEBPACK_EXTERNAL_MODULE__5__","style","opt","options","blocks","ch","ch2","str","state","State","depth","quote","comment","trimRight","index","length","formatted","openbracesuffix","isWhitespace","isQuote","isName","indexOf","appendIndent","openBlock","closeBlock","last","charAt","push","arguments","openbrace","String","replace","Start","AtRule","Block","Selector","Ruleset","Property","Separator","Expression","URL","charCodeAt","substr","join","factory","nullptn","formatptn","colonptn","cursorptn","transformptn","animationptn","propertiesptn","elementptn","selectorptn","andptn","escapeptn","invalidptn","keyframeptn","plcholdrptn","readonlyptn","beforeptn","afterptn","tailptn","whiteptn","pseudoptn","writingptn","supportsptn","propertyptn","selfptn","pseudofmt","dimensionptn","imgsrcptn","webkit","moz","ms","column","line","pattern","cascade","prefix","escape","compress","semicolon","preserve","array","plugins","plugged","should","unkwn","keyed","nscopealt","nscope","compile","parent","current","body","id","selector","result","bracket","parentheses","first","second","code","tail","trail","peak","counter","context","atrule","pseudo","caret","format","insert","invert","eof","eol","char","chars","child","out","children","flat","trim","delimited","substring","proxy","select","supports","vendor","padding","element","Array","elements","j","size","isolate","selectors","scope","k","level","input","third","cache","hash","declare","list","items","isNaN","parseFloat","animation","test","content","match","group","parents","at","next","stylis","set","this","constructor","output","minify","use","plugin","__WEBPACK_EXTERNAL_MODULE__8__","ReactPropTypesSecret","emptyFunction","emptyFunctionWithReset","resetWarningCache","shim","props","propName","componentName","location","propFullName","secret","err","Error","getShim","isRequired","ReactPropTypes","bool","func","number","string","symbol","any","arrayOf","elementType","instanceOf","node","objectOf","oneOf","oneOfType","shape","exact","checkPropTypes","PropTypes","cachedSetTimeout","cachedClearTimeout","defaultSetTimout","defaultClearTimeout","runTimeout","fun","setTimeout","e","clearTimeout","currentQueue","queue","draining","queueIndex","cleanUpNextTick","concat","drainQueue","timeout","len","run","marker","runClearTimeout","Item","noop","nextTick","args","apply","title","browser","argv","versions","on","addListener","once","off","removeListener","removeAllListeners","emit","prependListener","prependOnceListener","listeners","binding","cwd","chdir","dir","umask","__read","iterator","ar","done","error","bindSetState","instance","setState","Component","createRefCreator","ref","component","logInvalidInstanceError","createElementRef","method","_len","extraArgs","_key","_len2","_key2","getUrl","defaultObject","window","webkitURL","reset","hasBlobSupport","support","Blob","createObjectURL","createGetCachedLinkHref","href","currentStyle","type","getLinkHref","GLOBAL_OPTIONS","hasSourceMap","isCompressed","isMinified","isPrefixed","getCoalescedOption","option","rawStyle","_ref","global","keyframe","_extends","assign","target","source","componentDidMount","relocateNode","componentWillUpdate","_ref2","returnNode","componentDidUpdate","_ref3","_ref4","getStyleForState","previousProps","componentWillUnmount","_ref5","_ref6","_ref7","document","originalParent","parentNode","removeChild","head","appendChild","_ref8","willUpdateMethod","_PureComponent","Style","Constructor","TypeError","_classCallCheck","_this","self","ReferenceError","_possibleConstructorReturn","linkHref","getCachedLinkHref","subClass","superClass","writable","configurable","setPrototypeOf","__proto__","_inherits","render","_props","obj","keys","createElement","rel","propTypes","setGlobalOptions","forEach","BoomThemeStyleProps","CONFIG","DARK","index_id","DEFAULT","LIGHT","BASE_THEME","BG_IMAGE","NONE","STYLE","PANEL_CONTAINER_BG_COLOR","toLowerCase","BaseTheme","theme","CustomStyle","text","ExternalURL","BackgroundImage","url","color","getThemeCSSFile","fileName","performance","appFiles","getEntries","filter","endsWith","getActiveThemeName","themes","styles","addStyle","deleteStyle","splice","constructTheme","each","getThemeContent","textAlign","themeName","className","marginLeft","marginRight","onClick","onChange","onViewChange","editorVisibility","setEditorVisibility","styleType","onTitleChange","onStylePropertyChange","propertyName","replaceValue","defaultThemes","label","justifyContent","isOpen","onDismiss","css","currentTarget","baseTheme","find","rows","PanelBackground","ThemesEditorOptions","path","category","editor","onThemeChange","updatedTheme","deleteTheme","newTheme","runTimeThemeState","setRunTimeThemeState","runTimeTheme","setRunTimeTheme","themeOptions","activeTheme","disableThemePicker","setPanelOptions","builder","addCustomEditor","addBooleanSwitch","addTextInput","setMigrationHandler","panel","newOptions","activeThemeId"],"mappings":"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","file":"module.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 12);\n","module.exports = __WEBPACK_EXTERNAL_MODULE__0__;","module.exports = __WEBPACK_EXTERNAL_MODULE__1__;","import React from 'react';\n\n/**\n * @constant {Object} BEAUTIFY_OPTIONS the options to pass to cssbeautify\n */\nexport var BEAUTIFY_OPTIONS = {\n autosemicolon: true,\n indent: ' '\n};\n\n/**\n * @constant {boolean} IS_PRODUCTION is the runtime in the production environment\n */\nexport var IS_PRODUCTION = !!(process && process.env && process.env.NODE_ENV === 'production');\n\nvar _React$version$split$ = React.version.split('.').slice(0, 2).map(Number),\n REACT_MAJOR_VERSION = _React$version$split$[0],\n REACT_MINOR_VERSION = _React$version$split$[1];\n\n/**\n * @constant {boolean} HAS_UNSAFE_METHODS have lifecycle methods been prefixed with `UNSAFE_` in the React version\n */\n\n\nexport var HAS_UNSAFE_METHODS = REACT_MAJOR_VERSION > 16 || REACT_MAJOR_VERSION === 16 && REACT_MINOR_VERSION >= 3;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","module.exports = __WEBPACK_EXTERNAL_MODULE__4__;","module.exports = __WEBPACK_EXTERNAL_MODULE__5__;","/*\n Copyright (C) 2013 Sencha Inc.\n Copyright (C) 2012 Sencha Inc.\n Copyright (C) 2011 Sencha Inc.\n\n Author: Ariya Hidayat.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in\n all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n THE SOFTWARE.\n*/\n\n/*jslint continue: true, indent: 4 */\n/*global exports:true, module:true, window:true */\n\n(function () {\n\n 'use strict';\n\n function cssbeautify(style, opt) {\n\n var options, index = 0, length = style.length, blocks, formatted = '',\n ch, ch2, str, state, State, depth, quote, comment,\n openbracesuffix = true,\n autosemicolon = false,\n trimRight;\n\n options = arguments.length > 1 ? opt : {};\n if (typeof options.indent === 'undefined') {\n options.indent = ' ';\n }\n if (typeof options.openbrace === 'string') {\n openbracesuffix = (options.openbrace === 'end-of-line');\n }\n if (typeof options.autosemicolon === 'boolean') {\n autosemicolon = options.autosemicolon;\n }\n\n function isWhitespace(c) {\n return (c === ' ') || (c === '\\n') || (c === '\\t') || (c === '\\r') || (c === '\\f');\n }\n\n function isQuote(c) {\n return (c === '\\'') || (c === '\"');\n }\n\n // FIXME: handle Unicode characters\n function isName(c) {\n return (ch >= 'a' && ch <= 'z') ||\n (ch >= 'A' && ch <= 'Z') ||\n (ch >= '0' && ch <= '9') ||\n '-_*.:#[]'.indexOf(c) >= 0;\n }\n\n function appendIndent() {\n var i;\n for (i = depth; i > 0; i -= 1) {\n formatted += options.indent;\n }\n }\n\n function openBlock() {\n formatted = trimRight(formatted);\n if (openbracesuffix) {\n formatted += ' {';\n } else {\n formatted += '\\n';\n appendIndent();\n formatted += '{';\n }\n if (ch2 !== '\\n') {\n formatted += '\\n';\n }\n depth += 1;\n }\n\n function closeBlock() {\n var last;\n depth -= 1;\n formatted = trimRight(formatted);\n\n if (formatted.length > 0 && autosemicolon) {\n last = formatted.charAt(formatted.length - 1);\n if (last !== ';' && last !== '{') {\n formatted += ';';\n }\n }\n\n formatted += '\\n';\n appendIndent();\n formatted += '}';\n blocks.push(formatted);\n formatted = '';\n }\n\n if (String.prototype.trimRight) {\n trimRight = function (s) {\n return s.trimRight();\n };\n } else {\n // old Internet Explorer\n trimRight = function (s) {\n return s.replace(/\\s+$/, '');\n };\n }\n\n State = {\n Start: 0,\n AtRule: 1,\n Block: 2,\n Selector: 3,\n Ruleset: 4,\n Property: 5,\n Separator: 6,\n Expression: 7,\n URL: 8\n };\n\n depth = 0;\n state = State.Start;\n comment = false;\n blocks = [];\n\n // We want to deal with LF (\\n) only\n style = style.replace(/\\r\\n/g, '\\n');\n\n while (index < length) {\n ch = style.charAt(index);\n ch2 = style.charAt(index + 1);\n index += 1;\n\n // Inside a string literal?\n if (isQuote(quote)) {\n formatted += ch;\n if (ch === quote) {\n quote = null;\n }\n if (ch === '\\\\' && ch2 === quote) {\n // Don't treat escaped character as the closing quote\n formatted += ch2;\n index += 1;\n }\n continue;\n }\n\n // Starting a string literal?\n if (isQuote(ch)) {\n formatted += ch;\n quote = ch;\n continue;\n }\n\n // Comment\n if (comment) {\n formatted += ch;\n if (ch === '*' && ch2 === '/') {\n comment = false;\n formatted += ch2;\n index += 1;\n }\n continue;\n }\n if (ch === '/' && ch2 === '*') {\n comment = true;\n formatted += ch;\n formatted += ch2;\n index += 1;\n continue;\n }\n\n if (state === State.Start) {\n\n if (blocks.length === 0) {\n if (isWhitespace(ch) && formatted.length === 0) {\n continue;\n }\n }\n\n // Copy white spaces and control characters\n if (ch <= ' ' || ch.charCodeAt(0) >= 128) {\n state = State.Start;\n formatted += ch;\n continue;\n }\n\n // Selector or at-rule\n if (isName(ch) || (ch === '@')) {\n\n // Clear trailing whitespaces and linefeeds.\n str = trimRight(formatted);\n\n if (str.length === 0) {\n // If we have empty string after removing all the trailing\n // spaces, that means we are right after a block.\n // Ensure a blank line as the separator.\n if (blocks.length > 0) {\n formatted = '\\n\\n';\n }\n } else {\n // After finishing a ruleset or directive statement,\n // there should be one blank line.\n if (str.charAt(str.length - 1) === '}' ||\n str.charAt(str.length - 1) === ';') {\n\n formatted = str + '\\n\\n';\n } else {\n // After block comment, keep all the linefeeds but\n // start from the first column (remove whitespaces prefix).\n while (true) {\n ch2 = formatted.charAt(formatted.length - 1);\n if (ch2 !== ' ' && ch2.charCodeAt(0) !== 9) {\n break;\n }\n formatted = formatted.substr(0, formatted.length - 1);\n }\n }\n }\n formatted += ch;\n state = (ch === '@') ? State.AtRule : State.Selector;\n continue;\n }\n }\n\n if (state === State.AtRule) {\n\n // ';' terminates a statement.\n if (ch === ';') {\n formatted += ch;\n state = State.Start;\n continue;\n }\n\n // '{' starts a block\n if (ch === '{') {\n str = trimRight(formatted);\n openBlock();\n state = (str === '@font-face') ? State.Ruleset : State.Block;\n continue;\n }\n\n formatted += ch;\n continue;\n }\n\n if (state === State.Block) {\n\n // Selector\n if (isName(ch)) {\n\n // Clear trailing whitespaces and linefeeds.\n str = trimRight(formatted);\n\n if (str.length === 0) {\n // If we have empty string after removing all the trailing\n // spaces, that means we are right after a block.\n // Ensure a blank line as the separator.\n if (blocks.length > 0) {\n formatted = '\\n\\n';\n }\n } else {\n // Insert blank line if necessary.\n if (str.charAt(str.length - 1) === '}') {\n formatted = str + '\\n\\n';\n } else {\n // After block comment, keep all the linefeeds but\n // start from the first column (remove whitespaces prefix).\n while (true) {\n ch2 = formatted.charAt(formatted.length - 1);\n if (ch2 !== ' ' && ch2.charCodeAt(0) !== 9) {\n break;\n }\n formatted = formatted.substr(0, formatted.length - 1);\n }\n }\n }\n\n appendIndent();\n formatted += ch;\n state = State.Selector;\n continue;\n }\n\n // '}' resets the state.\n if (ch === '}') {\n closeBlock();\n state = State.Start;\n continue;\n }\n\n formatted += ch;\n continue;\n }\n\n if (state === State.Selector) {\n\n // '{' starts the ruleset.\n if (ch === '{') {\n openBlock();\n state = State.Ruleset;\n continue;\n }\n\n // '}' resets the state.\n if (ch === '}') {\n closeBlock();\n state = State.Start;\n continue;\n }\n\n formatted += ch;\n continue;\n }\n\n if (state === State.Ruleset) {\n\n // '}' finishes the ruleset.\n if (ch === '}') {\n closeBlock();\n state = State.Start;\n if (depth > 0) {\n state = State.Block;\n }\n continue;\n }\n\n // Make sure there is no blank line or trailing spaces inbetween\n if (ch === '\\n') {\n formatted = trimRight(formatted);\n formatted += '\\n';\n continue;\n }\n\n // property name\n if (!isWhitespace(ch)) {\n formatted = trimRight(formatted);\n formatted += '\\n';\n appendIndent();\n formatted += ch;\n state = State.Property;\n continue;\n }\n formatted += ch;\n continue;\n }\n\n if (state === State.Property) {\n\n // ':' concludes the property.\n if (ch === ':') {\n formatted = trimRight(formatted);\n formatted += ': ';\n state = State.Expression;\n if (isWhitespace(ch2)) {\n state = State.Separator;\n }\n continue;\n }\n\n // '}' finishes the ruleset.\n if (ch === '}') {\n closeBlock();\n state = State.Start;\n if (depth > 0) {\n state = State.Block;\n }\n continue;\n }\n\n formatted += ch;\n continue;\n }\n\n if (state === State.Separator) {\n\n // Non-whitespace starts the expression.\n if (!isWhitespace(ch)) {\n formatted += ch;\n state = State.Expression;\n continue;\n }\n\n // Anticipate string literal.\n if (isQuote(ch2)) {\n state = State.Expression;\n }\n\n continue;\n }\n\n if (state === State.Expression) {\n\n // '}' finishes the ruleset.\n if (ch === '}') {\n closeBlock();\n state = State.Start;\n if (depth > 0) {\n state = State.Block;\n }\n continue;\n }\n\n // ';' completes the declaration.\n if (ch === ';') {\n formatted = trimRight(formatted);\n formatted += ';\\n';\n state = State.Ruleset;\n continue;\n }\n\n formatted += ch;\n\n if (ch === '(') {\n if (formatted.charAt(formatted.length - 2) === 'l' &&\n formatted.charAt(formatted.length - 3) === 'r' &&\n formatted.charAt(formatted.length - 4) === 'u') {\n\n // URL starts with '(' and closes with ')'.\n state = State.URL;\n continue;\n }\n }\n\n continue;\n }\n\n if (state === State.URL) {\n\n\n // ')' finishes the URL (only if it is not escaped).\n if (ch === ')' && formatted.charAt(formatted.length - 1 !== '\\\\')) {\n formatted += ch;\n state = State.Expression;\n continue;\n }\n }\n\n // The default action is to copy the character (to prevent\n // infinite loop).\n formatted += ch;\n }\n\n formatted = blocks.join('') + formatted;\n\n return formatted;\n }\n\n if (typeof exports !== 'undefined') {\n // Node.js module.\n module.exports = exports = cssbeautify;\n } else if (typeof window === 'object') {\n // Browser loading.\n window.cssbeautify = cssbeautify;\n }\n\n}());\n","/*\n * __ ___\n * _____/ /___ __/ (_)____\n * / ___/ __/ / / / / / ___/\n * (__ ) /_/ /_/ / / (__ )\n * /____/\\__/\\__, /_/_/____/\n * /____/\n *\n * light - weight css preprocessor @licence MIT\n */\n(function (factory) {/* eslint-disable */\n\ttypeof exports === 'object' && typeof module !== 'undefined' ? (module['exports'] = factory(null)) :\n\t\ttypeof define === 'function' && define['amd'] ? define(factory(null)) :\n\t\t\t(window['stylis'] = factory(null))\n}(/** @param {*=} options */function factory (options) {/* eslint-disable */\n\n\t'use strict'\n\n\t/**\n\t * Notes\n\t *\n\t * The [''] pattern is used to support closure compiler\n\t * the jsdoc signatures are also used to the same effect\n\t *\n\t * ----\n\t *\n\t * int + int + int === n4 [faster]\n\t *\n\t * vs\n\t *\n\t * int === n1 && int === n2 && int === n3\n\t *\n\t * ----\n\t *\n\t * switch (int) { case ints...} [faster]\n\t *\n\t * vs\n\t *\n\t * if (int == 1 && int === 2 ...)\n\t *\n\t * ----\n\t *\n\t * The (first*n1 + second*n2 + third*n3) format used in the property parser\n\t * is a simple way to hash the sequence of characters\n\t * taking into account the index they occur in\n\t * since any number of 3 character sequences could produce duplicates.\n\t *\n\t * On the other hand sequences that are directly tied to the index of the character\n\t * resolve a far more accurate measure, it's also faster\n\t * to evaluate one condition in a switch statement\n\t * than three in an if statement regardless of the added math.\n\t *\n\t * This allows the vendor prefixer to be both small and fast.\n\t */\n\n\tvar nullptn = /^\\0+/g /* matches leading null characters */\n\tvar formatptn = /[\\0\\r\\f]/g /* matches new line, null and formfeed characters */\n\tvar colonptn = /: */g /* splits animation rules */\n\tvar cursorptn = /zoo|gra/ /* assert cursor varient */\n\tvar transformptn = /([,: ])(transform)/g /* vendor prefix transform, older webkit */\n\tvar animationptn = /,+\\s*(?![^(]*[)])/g /* splits multiple shorthand notation animations */\n\tvar propertiesptn = / +\\s*(?![^(]*[)])/g /* animation properties */\n\tvar elementptn = / *[\\0] */g /* selector elements */\n\tvar selectorptn = /,\\r+?/g /* splits selectors */\n\tvar andptn = /([\\t\\r\\n ])*\\f?&/g /* match & */\n\tvar escapeptn = /:global\\(((?:[^\\(\\)\\[\\]]*|\\[.*\\]|\\([^\\(\\)]*\\))*)\\)/g /* matches :global(.*) */\n\tvar invalidptn = /\\W+/g /* removes invalid characters from keyframes */\n\tvar keyframeptn = /@(k\\w+)\\s*(\\S*)\\s*/ /* matches @keyframes $1 */\n\tvar plcholdrptn = /::(place)/g /* match ::placeholder varient */\n\tvar readonlyptn = /:(read-only)/g /* match :read-only varient */\n\tvar beforeptn = /\\s+(?=[{\\];=:>])/g /* matches \\s before ] ; = : */\n\tvar afterptn = /([[}=:>])\\s+/g /* matches \\s after characters [ } = : */\n\tvar tailptn = /(\\{[^{]+?);(?=\\})/g /* matches tail semi-colons ;} */\n\tvar whiteptn = /\\s{2,}/g /* matches repeating whitespace */\n\tvar pseudoptn = /([^\\(])(:+) */g /* pseudo element */\n\tvar writingptn = /[svh]\\w+-[tblr]{2}/ /* match writing mode property values */\n\tvar gradientptn = /([\\w-]+t\\()/g /* match *gradient property */\n\tvar supportsptn = /\\(\\s*(.*)\\s*\\)/g /* match supports (groups) */\n\tvar propertyptn = /([\\s\\S]*?);/g /* match properties leading semicolon */\n\tvar selfptn = /-self|flex-/g /* match flex- and -self in align-self: flex-*; */\n\tvar pseudofmt = /[^]*?(:[rp][el]a[\\w-]+)[^]*/ /* extrats :readonly or :placholder from selector */\n\tvar trimptn = /[ \\t]+$/ /* match tail whitspace */\n\tvar dimensionptn = /stretch|:\\s*\\w+\\-(?:conte|avail)/ /* match max/min/fit-content, fill-available */\n\tvar imgsrcptn = /([^-])(image-set\\()/\n\n\t/* vendors */\n\tvar webkit = '-webkit-'\n\tvar moz = '-moz-'\n\tvar ms = '-ms-'\n\n\t/* character codes */\n\tvar SEMICOLON = 59 /* ; */\n\tvar CLOSEBRACES = 125 /* } */\n\tvar OPENBRACES = 123 /* { */\n\tvar OPENPARENTHESES = 40 /* ( */\n\tvar CLOSEPARENTHESES = 41 /* ) */\n\tvar OPENBRACKET = 91 /* [ */\n\tvar CLOSEBRACKET = 93 /* ] */\n\tvar NEWLINE = 10 /* \\n */\n\tvar CARRIAGE = 13 /* \\r */\n\tvar TAB = 9 /* \\t */\n\tvar AT = 64 /* @ */\n\tvar SPACE = 32 /* */\n\tvar AND = 38 /* & */\n\tvar DASH = 45 /* - */\n\tvar UNDERSCORE = 95 /* _ */\n\tvar STAR = 42 /* * */\n\tvar COMMA = 44 /* , */\n\tvar COLON = 58 /* : */\n\tvar SINGLEQUOTE = 39 /* ' */\n\tvar DOUBLEQUOTE = 34 /* \" */\n\tvar FOWARDSLASH = 47 /* / */\n\tvar GREATERTHAN = 62 /* > */\n\tvar PLUS = 43 /* + */\n\tvar TILDE = 126 /* ~ */\n\tvar NULL = 0 /* \\0 */\n\tvar FORMFEED = 12 /* \\f */\n\tvar VERTICALTAB = 11 /* \\v */\n\n\t/* special identifiers */\n\tvar KEYFRAME = 107 /* k */\n\tvar MEDIA = 109 /* m */\n\tvar SUPPORTS = 115 /* s */\n\tvar PLACEHOLDER = 112 /* p */\n\tvar READONLY = 111 /* o */\n\tvar IMPORT = 105 /* i */\n\tvar CHARSET = 99 /* c */\n\tvar DOCUMENT = 100 /* d */\n\tvar PAGE = 112 /* p */\n\n\tvar column = 1 /* current column */\n\tvar line = 1 /* current line numebr */\n\tvar pattern = 0 /* :pattern */\n\n\tvar cascade = 1 /* #id h1 h2 vs h1#id h2#id */\n\tvar prefix = 1 /* vendor prefix */\n\tvar escape = 1 /* escape :global() pattern */\n\tvar compress = 0 /* compress output */\n\tvar semicolon = 0 /* no/semicolon option */\n\tvar preserve = 0 /* preserve empty selectors */\n\n\t/* empty reference */\n\tvar array = []\n\n\t/* plugins */\n\tvar plugins = []\n\tvar plugged = 0\n\tvar should = null\n\n\t/* plugin context */\n\tvar POSTS = -2\n\tvar PREPS = -1\n\tvar UNKWN = 0\n\tvar PROPS = 1\n\tvar BLCKS = 2\n\tvar ATRUL = 3\n\n\t/* plugin newline context */\n\tvar unkwn = 0\n\n\t/* keyframe animation */\n\tvar keyed = 1\n\tvar key = ''\n\n\t/* selector namespace */\n\tvar nscopealt = ''\n\tvar nscope = ''\n\n\t/**\n\t * Compile\n\t *\n\t * @param {Array} parent\n\t * @param {Array} current\n\t * @param {string} body\n\t * @param {number} id\n\t * @param {number} depth\n\t * @return {string}\n\t */\n\tfunction compile (parent, current, body, id, depth) {\n\t\tvar bracket = 0 /* brackets [] */\n\t\tvar comment = 0 /* comments /* // or /* */\n\t\tvar parentheses = 0 /* functions () */\n\t\tvar quote = 0 /* quotes '', \"\" */\n\n\t\tvar first = 0 /* first character code */\n\t\tvar second = 0 /* second character code */\n\t\tvar code = 0 /* current character code */\n\t\tvar tail = 0 /* previous character code */\n\t\tvar trail = 0 /* character before previous code */\n\t\tvar peak = 0 /* previous non-whitespace code */\n\n\t\tvar counter = 0 /* count sequence termination */\n\t\tvar context = 0 /* track current context */\n\t\tvar atrule = 0 /* track @at-rule context */\n\t\tvar pseudo = 0 /* track pseudo token index */\n\t\tvar caret = 0 /* current character index */\n\t\tvar format = 0 /* control character formating context */\n\t\tvar insert = 0 /* auto semicolon insertion */\n\t\tvar invert = 0 /* inverted selector pattern */\n\t\tvar length = 0 /* generic length address */\n\t\tvar eof = body.length /* end of file(length) */\n\t\tvar eol = eof - 1 /* end of file(characters) */\n\n\t\tvar char = '' /* current character */\n\t\tvar chars = '' /* current buffer of characters */\n\t\tvar child = '' /* next buffer of characters */\n\t\tvar out = '' /* compiled body */\n\t\tvar children = '' /* compiled children */\n\t\tvar flat = '' /* compiled leafs */\n\t\tvar selector /* generic selector address */\n\t\tvar result /* generic address */\n\n\t\t// ...build body\n\t\twhile (caret < eof) {\n\t\t\tcode = body.charCodeAt(caret)\n\n\t\t\t// eof varient\n\t\t\tif (caret === eol) {\n\t\t\t\t// last character + noop context, add synthetic padding for noop context to terminate\n\t\t\t\tif (comment + quote + parentheses + bracket !== 0) {\n\t\t\t\t\tif (comment !== 0) {\n\t\t\t\t\t\tcode = comment === FOWARDSLASH ? NEWLINE : FOWARDSLASH\n\t\t\t\t\t}\n\n\t\t\t\t\tquote = parentheses = bracket = 0\n\t\t\t\t\teof++\n\t\t\t\t\teol++\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (comment + quote + parentheses + bracket === 0) {\n\t\t\t\t// eof varient\n\t\t\t\tif (caret === eol) {\n\t\t\t\t\tif (format > 0) {\n\t\t\t\t\t\tchars = chars.replace(formatptn, '')\n\t\t\t\t\t}\n\n\t\t\t\t\tif (chars.trim().length > 0) {\n\t\t\t\t\t\tswitch (code) {\n\t\t\t\t\t\t\tcase SPACE:\n\t\t\t\t\t\t\tcase TAB:\n\t\t\t\t\t\t\tcase SEMICOLON:\n\t\t\t\t\t\t\tcase CARRIAGE:\n\t\t\t\t\t\t\tcase NEWLINE: {\n\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tdefault: {\n\t\t\t\t\t\t\t\tchars += body.charAt(caret)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tcode = SEMICOLON\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// auto semicolon insertion\n\t\t\t\tif (insert === 1) {\n\t\t\t\t\tswitch (code) {\n\t\t\t\t\t\t// false flags\n\t\t\t\t\t\tcase OPENBRACES:\n\t\t\t\t\t\tcase CLOSEBRACES:\n\t\t\t\t\t\tcase SEMICOLON:\n\t\t\t\t\t\tcase DOUBLEQUOTE:\n\t\t\t\t\t\tcase SINGLEQUOTE:\n\t\t\t\t\t\tcase OPENPARENTHESES:\n\t\t\t\t\t\tcase CLOSEPARENTHESES:\n\t\t\t\t\t\tcase COMMA: {\n\t\t\t\t\t\t\tinsert = 0\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// ignore\n\t\t\t\t\t\tcase TAB:\n\t\t\t\t\t\tcase CARRIAGE:\n\t\t\t\t\t\tcase NEWLINE:\n\t\t\t\t\t\tcase SPACE: {\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// valid\n\t\t\t\t\t\tdefault: {\n\t\t\t\t\t\t\tinsert = 0\n\t\t\t\t\t\t\tlength = caret\n\t\t\t\t\t\t\tfirst = code\n\t\t\t\t\t\t\tcaret--\n\t\t\t\t\t\t\tcode = SEMICOLON\n\n\t\t\t\t\t\t\twhile (length < eof) {\n\t\t\t\t\t\t\t\tswitch (body.charCodeAt(length++)) {\n\t\t\t\t\t\t\t\t\tcase NEWLINE:\n\t\t\t\t\t\t\t\t\tcase CARRIAGE:\n\t\t\t\t\t\t\t\t\tcase SEMICOLON: {\n\t\t\t\t\t\t\t\t\t\t++caret\n\t\t\t\t\t\t\t\t\t\tcode = first\n\t\t\t\t\t\t\t\t\t\tlength = eof\n\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tcase COLON: {\n\t\t\t\t\t\t\t\t\t\tif (format > 0) {\n\t\t\t\t\t\t\t\t\t\t\t++caret\n\t\t\t\t\t\t\t\t\t\t\tcode = first\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tcase OPENBRACES: {\n\t\t\t\t\t\t\t\t\t\tlength = eof\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// token varient\n\t\t\t\tswitch (code) {\n\t\t\t\t\tcase OPENBRACES: {\n\t\t\t\t\t\tchars = chars.trim()\n\t\t\t\t\t\tfirst = chars.charCodeAt(0)\n\t\t\t\t\t\tcounter = 1\n\t\t\t\t\t\tlength = ++caret\n\n\t\t\t\t\t\twhile (caret < eof) {\n\t\t\t\t\t\t\tswitch (code = body.charCodeAt(caret)) {\n\t\t\t\t\t\t\t\tcase OPENBRACES: {\n\t\t\t\t\t\t\t\t\tcounter++\n\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tcase CLOSEBRACES: {\n\t\t\t\t\t\t\t\t\tcounter--\n\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tcase FOWARDSLASH: {\n\t\t\t\t\t\t\t\t\tswitch (second = body.charCodeAt(caret + 1)) {\n\t\t\t\t\t\t\t\t\t\t// /*, //\n\t\t\t\t\t\t\t\t\t\tcase STAR:\n\t\t\t\t\t\t\t\t\t\tcase FOWARDSLASH: {\n\t\t\t\t\t\t\t\t\t\t\tcaret = delimited(second, caret, eol, body)\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t// given \"[\" === 91 & \"]\" === 93 hence forth 91 + 1 + 1 === 93\n\t\t\t\t\t\t\t\tcase OPENBRACKET: {\n\t\t\t\t\t\t\t\t\tcode++\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t// given \"(\" === 40 & \")\" === 41 hence forth 40 + 1 === 41\n\t\t\t\t\t\t\t\tcase OPENPARENTHESES: {\n\t\t\t\t\t\t\t\t\tcode++\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t// quote tail delimiter is identical to the head delimiter hence noop,\n\t\t\t\t\t\t\t\t// fallthrough clauses have been shifted to the correct tail delimiter\n\t\t\t\t\t\t\t\tcase DOUBLEQUOTE:\n\t\t\t\t\t\t\t\tcase SINGLEQUOTE: {\n\t\t\t\t\t\t\t\t\twhile (caret++ < eol) {\n\t\t\t\t\t\t\t\t\t\tif (body.charCodeAt(caret) === code) {\n\t\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (counter === 0) {\n\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tcaret++\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tchild = body.substring(length, caret)\n\n\t\t\t\t\t\tif (first === NULL) {\n\t\t\t\t\t\t\tfirst = (chars = chars.replace(nullptn, '').trim()).charCodeAt(0)\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tswitch (first) {\n\t\t\t\t\t\t\t// @at-rule\n\t\t\t\t\t\t\tcase AT: {\n\t\t\t\t\t\t\t\tif (format > 0) {\n\t\t\t\t\t\t\t\t\tchars = chars.replace(formatptn, '')\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tsecond = chars.charCodeAt(1)\n\n\t\t\t\t\t\t\t\tswitch (second) {\n\t\t\t\t\t\t\t\t\tcase DOCUMENT:\n\t\t\t\t\t\t\t\t\tcase MEDIA:\n\t\t\t\t\t\t\t\t\tcase SUPPORTS:\n\t\t\t\t\t\t\t\t\tcase DASH: {\n\t\t\t\t\t\t\t\t\t\tselector = current\n\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tdefault: {\n\t\t\t\t\t\t\t\t\t\tselector = array\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tchild = compile(current, selector, child, second, depth+1)\n\t\t\t\t\t\t\t\tlength = child.length\n\n\t\t\t\t\t\t\t\t// preserve empty @at-rule\n\t\t\t\t\t\t\t\tif (preserve > 0 && length === 0) {\n\t\t\t\t\t\t\t\t\tlength = chars.length\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t// execute plugins, @at-rule context\n\t\t\t\t\t\t\t\tif (plugged > 0) {\n\t\t\t\t\t\t\t\t\tselector = select(array, chars, invert)\n\t\t\t\t\t\t\t\t\tresult = proxy(ATRUL, child, selector, current, line, column, length, second, depth, id)\n\t\t\t\t\t\t\t\t\tchars = selector.join('')\n\n\t\t\t\t\t\t\t\t\tif (result !== void 0) {\n\t\t\t\t\t\t\t\t\t\tif ((length = (child = result.trim()).length) === 0) {\n\t\t\t\t\t\t\t\t\t\t\tsecond = 0\n\t\t\t\t\t\t\t\t\t\t\tchild = ''\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tif (length > 0) {\n\t\t\t\t\t\t\t\t\tswitch (second) {\n\t\t\t\t\t\t\t\t\t\tcase SUPPORTS: {\n\t\t\t\t\t\t\t\t\t\t\tchars = chars.replace(supportsptn, supports)\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tcase DOCUMENT:\n\t\t\t\t\t\t\t\t\t\tcase MEDIA:\n\t\t\t\t\t\t\t\t\t\tcase DASH: {\n\t\t\t\t\t\t\t\t\t\t\tchild = chars + '{' + child + '}'\n\t\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tcase KEYFRAME: {\n\t\t\t\t\t\t\t\t\t\t\tchars = chars.replace(keyframeptn, '$1 $2' + (keyed > 0 ? key : ''))\n\t\t\t\t\t\t\t\t\t\t\tchild = chars + '{' + child + '}'\n\n\t\t\t\t\t\t\t\t\t\t\tif (prefix === 1 || (prefix === 2 && vendor('@'+child, 3))) {\n\t\t\t\t\t\t\t\t\t\t\t\tchild = '@' + webkit + child + '@' + child\n\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\tchild = '@' + child\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tdefault: {\n\t\t\t\t\t\t\t\t\t\t\tchild = chars + child\n\n\t\t\t\t\t\t\t\t\t\t\tif (id === PAGE) {\n\t\t\t\t\t\t\t\t\t\t\t\tchild = (out += child, '')\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tchild = ''\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t// selector\n\t\t\t\t\t\t\tdefault: {\n\t\t\t\t\t\t\t\tchild = compile(current, select(current, chars, invert), child, id, depth+1)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tchildren += child\n\n\t\t\t\t\t\t// reset\n\t\t\t\t\t\tcontext = 0\n\t\t\t\t\t\tinsert = 0\n\t\t\t\t\t\tpseudo = 0\n\t\t\t\t\t\tformat = 0\n\t\t\t\t\t\tinvert = 0\n\t\t\t\t\t\tatrule = 0\n\t\t\t\t\t\tchars = ''\n\t\t\t\t\t\tchild = ''\n\t\t\t\t\t\tcode = body.charCodeAt(++caret)\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t\tcase CLOSEBRACES:\n\t\t\t\t\tcase SEMICOLON: {\n\t\t\t\t\t\tchars = (format > 0 ? chars.replace(formatptn, '') : chars).trim()\n\n\t\t\t\t\t\tif ((length = chars.length) > 1) {\n\t\t\t\t\t\t\t// monkey-patch missing colon\n\t\t\t\t\t\t\tif (pseudo === 0) {\n\t\t\t\t\t\t\t\tfirst = chars.charCodeAt(0)\n\n\t\t\t\t\t\t\t\t// first character is a letter or dash, buffer has a space character\n\t\t\t\t\t\t\t\tif ((first === DASH || first > 96 && first < 123)) {\n\t\t\t\t\t\t\t\t\tlength = (chars = chars.replace(' ', ':')).length\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// execute plugins, property context\n\t\t\t\t\t\t\tif (plugged > 0) {\n\t\t\t\t\t\t\t\tif ((result = proxy(PROPS, chars, current, parent, line, column, out.length, id, depth, id)) !== void 0) {\n\t\t\t\t\t\t\t\t\tif ((length = (chars = result.trim()).length) === 0) {\n\t\t\t\t\t\t\t\t\t\tchars = '\\0\\0'\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tfirst = chars.charCodeAt(0)\n\t\t\t\t\t\t\tsecond = chars.charCodeAt(1)\n\n\t\t\t\t\t\t\tswitch (first) {\n\t\t\t\t\t\t\t\tcase NULL: {\n\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tcase AT: {\n\t\t\t\t\t\t\t\t\tif (second === IMPORT || second === CHARSET) {\n\t\t\t\t\t\t\t\t\t\tflat += chars + body.charAt(caret)\n\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tdefault: {\n\t\t\t\t\t\t\t\t\tif (chars.charCodeAt(length-1) === COLON) {\n\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\tout += property(chars, first, second, chars.charCodeAt(2))\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// reset\n\t\t\t\t\t\tcontext = 0\n\t\t\t\t\t\tinsert = 0\n\t\t\t\t\t\tpseudo = 0\n\t\t\t\t\t\tformat = 0\n\t\t\t\t\t\tinvert = 0\n\t\t\t\t\t\tchars = ''\n\t\t\t\t\t\tcode = body.charCodeAt(++caret)\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// parse characters\n\t\t\tswitch (code) {\n\t\t\t\tcase CARRIAGE:\n\t\t\t\tcase NEWLINE: {\n\t\t\t\t\t// auto insert semicolon\n\t\t\t\t\tif (comment + quote + parentheses + bracket + semicolon === 0) {\n\t\t\t\t\t\t// valid non-whitespace characters that\n\t\t\t\t\t\t// may precede a newline\n\t\t\t\t\t\tswitch (peak) {\n\t\t\t\t\t\t\tcase CLOSEPARENTHESES:\n\t\t\t\t\t\t\tcase SINGLEQUOTE:\n\t\t\t\t\t\t\tcase DOUBLEQUOTE:\n\t\t\t\t\t\t\tcase AT:\n\t\t\t\t\t\t\tcase TILDE:\n\t\t\t\t\t\t\tcase GREATERTHAN:\n\t\t\t\t\t\t\tcase STAR:\n\t\t\t\t\t\t\tcase PLUS:\n\t\t\t\t\t\t\tcase FOWARDSLASH:\n\t\t\t\t\t\t\tcase DASH:\n\t\t\t\t\t\t\tcase COLON:\n\t\t\t\t\t\t\tcase COMMA:\n\t\t\t\t\t\t\tcase SEMICOLON:\n\t\t\t\t\t\t\tcase OPENBRACES:\n\t\t\t\t\t\t\tcase CLOSEBRACES: {\n\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tdefault: {\n\t\t\t\t\t\t\t\t// current buffer has a colon\n\t\t\t\t\t\t\t\tif (pseudo > 0) {\n\t\t\t\t\t\t\t\t\tinsert = 1\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// terminate line comment\n\t\t\t\t\tif (comment === FOWARDSLASH) {\n\t\t\t\t\t\tcomment = 0\n\t\t\t\t\t} else if (cascade + context === 0 && id !== KEYFRAME && chars.length > 0) {\n\t\t\t\t\t\tformat = 1\n\t\t\t\t\t\tchars += '\\0'\n\t\t\t\t\t}\n\n\t\t\t\t\t// execute plugins, newline context\n\t\t\t\t\tif (plugged * unkwn > 0) {\n\t\t\t\t\t\tproxy(UNKWN, chars, current, parent, line, column, out.length, id, depth, id)\n\t\t\t\t\t}\n\n\t\t\t\t\t// next line, reset column position\n\t\t\t\t\tcolumn = 1\n\t\t\t\t\tline++\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\tcase SEMICOLON:\n\t\t\t\tcase CLOSEBRACES: {\n\t\t\t\t\tif (comment + quote + parentheses + bracket === 0) {\n\t\t\t\t\t\tcolumn++\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tdefault: {\n\t\t\t\t\t// increment column position\n\t\t\t\t\tcolumn++\n\n\t\t\t\t\t// current character\n\t\t\t\t\tchar = body.charAt(caret)\n\n\t\t\t\t\t// remove comments, escape functions, strings, attributes and prepare selectors\n\t\t\t\t\tswitch (code) {\n\t\t\t\t\t\tcase TAB:\n\t\t\t\t\t\tcase SPACE: {\n\t\t\t\t\t\t\tif (quote + bracket + comment === 0) {\n\t\t\t\t\t\t\t\tswitch (tail) {\n\t\t\t\t\t\t\t\t\tcase COMMA:\n\t\t\t\t\t\t\t\t\tcase COLON:\n\t\t\t\t\t\t\t\t\tcase TAB:\n\t\t\t\t\t\t\t\t\tcase SPACE: {\n\t\t\t\t\t\t\t\t\t\tchar = ''\n\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tdefault: {\n\t\t\t\t\t\t\t\t\t\tif (code !== SPACE) {\n\t\t\t\t\t\t\t\t\t\t\tchar = ' '\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// escape breaking control characters\n\t\t\t\t\t\tcase NULL: {\n\t\t\t\t\t\t\tchar = '\\\\0'\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcase FORMFEED: {\n\t\t\t\t\t\t\tchar = '\\\\f'\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcase VERTICALTAB: {\n\t\t\t\t\t\t\tchar = '\\\\v'\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// &\n\t\t\t\t\t\tcase AND: {\n\t\t\t\t\t\t\t// inverted selector pattern i.e html &\n\t\t\t\t\t\t\tif (quote + comment + bracket === 0 && cascade > 0) {\n\t\t\t\t\t\t\t\tinvert = 1\n\t\t\t\t\t\t\t\tformat = 1\n\t\t\t\t\t\t\t\tchar = '\\f' + char\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// ::paceholder, l\n\t\t\t\t\t\t// :read-ony, l\n\t\t\t\t\t\tcase 108: {\n\t\t\t\t\t\t\tif (quote + comment + bracket + pattern === 0 && pseudo > 0) {\n\t\t\t\t\t\t\t\tswitch (caret - pseudo) {\n\t\t\t\t\t\t\t\t\t// ::placeholder\n\t\t\t\t\t\t\t\t\tcase 2: {\n\t\t\t\t\t\t\t\t\t\tif (tail === PLACEHOLDER && body.charCodeAt(caret-3) === COLON) {\n\t\t\t\t\t\t\t\t\t\t\tpattern = tail\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t// :read-only\n\t\t\t\t\t\t\t\t\tcase 8: {\n\t\t\t\t\t\t\t\t\t\tif (trail === READONLY) {\n\t\t\t\t\t\t\t\t\t\t\tpattern = trail\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// :\n\t\t\t\t\t\tcase COLON: {\n\t\t\t\t\t\t\tif (quote + comment + bracket === 0) {\n\t\t\t\t\t\t\t\tpseudo = caret\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// selectors\n\t\t\t\t\t\tcase COMMA: {\n\t\t\t\t\t\t\tif (comment + parentheses + quote + bracket === 0) {\n\t\t\t\t\t\t\t\tformat = 1\n\t\t\t\t\t\t\t\tchar += '\\r'\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// quotes\n\t\t\t\t\t\tcase DOUBLEQUOTE:\n\t\t\t\t\t\tcase SINGLEQUOTE: {\n\t\t\t\t\t\t\tif (comment === 0) {\n\t\t\t\t\t\t\t\tquote = quote === code ? 0 : (quote === 0 ? code : quote)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// attributes\n\t\t\t\t\t\tcase OPENBRACKET: {\n\t\t\t\t\t\t\tif (quote + comment + parentheses === 0) {\n\t\t\t\t\t\t\t\tbracket++\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcase CLOSEBRACKET: {\n\t\t\t\t\t\t\tif (quote + comment + parentheses === 0) {\n\t\t\t\t\t\t\t\tbracket--\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// functions\n\t\t\t\t\t\tcase CLOSEPARENTHESES: {\n\t\t\t\t\t\t\tif (quote + comment + bracket === 0) {\n\t\t\t\t\t\t\t\tparentheses--\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcase OPENPARENTHESES: {\n\t\t\t\t\t\t\tif (quote + comment + bracket === 0) {\n\t\t\t\t\t\t\t\tif (context === 0) {\n\t\t\t\t\t\t\t\t\tswitch (tail*2 + trail*3) {\n\t\t\t\t\t\t\t\t\t\t// :matches\n\t\t\t\t\t\t\t\t\t\tcase 533: {\n\t\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t// :global, :not, :nth-child etc...\n\t\t\t\t\t\t\t\t\t\tdefault: {\n\t\t\t\t\t\t\t\t\t\t\tcounter = 0\n\t\t\t\t\t\t\t\t\t\t\tcontext = 1\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tparentheses++\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcase AT: {\n\t\t\t\t\t\t\tif (comment + parentheses + quote + bracket + pseudo + atrule === 0) {\n\t\t\t\t\t\t\t\tatrule = 1\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// block/line comments\n\t\t\t\t\t\tcase STAR:\n\t\t\t\t\t\tcase FOWARDSLASH: {\n\t\t\t\t\t\t\tif (quote + bracket + parentheses > 0) {\n\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tswitch (comment) {\n\t\t\t\t\t\t\t\t// initialize line/block comment context\n\t\t\t\t\t\t\t\tcase 0: {\n\t\t\t\t\t\t\t\t\tswitch (code*2 + body.charCodeAt(caret+1)*3) {\n\t\t\t\t\t\t\t\t\t\t// //\n\t\t\t\t\t\t\t\t\t\tcase 235: {\n\t\t\t\t\t\t\t\t\t\t\tcomment = FOWARDSLASH\n\t\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t// /*\n\t\t\t\t\t\t\t\t\t\tcase 220: {\n\t\t\t\t\t\t\t\t\t\t\tlength = caret\n\t\t\t\t\t\t\t\t\t\t\tcomment = STAR\n\t\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t// end block comment context\n\t\t\t\t\t\t\t\tcase STAR: {\n\t\t\t\t\t\t\t\t\tif (code === FOWARDSLASH && tail === STAR && length + 2 !== caret) {\n\t\t\t\t\t\t\t\t\t\t// /* ... */, !\n\t\t\t\t\t\t\t\t\t\tif (body.charCodeAt(length+2) === 33) {\n\t\t\t\t\t\t\t\t\t\t\tout += body.substring(length, caret+1)\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tchar = ''\n\t\t\t\t\t\t\t\t\t\tcomment = 0\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// ignore comment blocks\n\t\t\t\t\tif (comment === 0) {\n\t\t\t\t\t\t// aggressive isolation mode, divide each individual selector\n\t\t\t\t\t\t// including selectors in :not function but excluding selectors in :global function\n\t\t\t\t\t\tif (cascade + quote + bracket + atrule === 0 && id !== KEYFRAME && code !== SEMICOLON) {\n\t\t\t\t\t\t\tswitch (code) {\n\t\t\t\t\t\t\t\tcase COMMA:\n\t\t\t\t\t\t\t\tcase TILDE:\n\t\t\t\t\t\t\t\tcase GREATERTHAN:\n\t\t\t\t\t\t\t\tcase PLUS:\n\t\t\t\t\t\t\t\tcase CLOSEPARENTHESES:\n\t\t\t\t\t\t\t\tcase OPENPARENTHESES: {\n\t\t\t\t\t\t\t\t\tif (context === 0) {\n\t\t\t\t\t\t\t\t\t\t// outside of an isolated context i.e nth-child(<...>)\n\t\t\t\t\t\t\t\t\t\tswitch (tail) {\n\t\t\t\t\t\t\t\t\t\t\tcase TAB:\n\t\t\t\t\t\t\t\t\t\t\tcase SPACE:\n\t\t\t\t\t\t\t\t\t\t\tcase NEWLINE:\n\t\t\t\t\t\t\t\t\t\t\tcase CARRIAGE: {\n\t\t\t\t\t\t\t\t\t\t\t\tchar = char + '\\0'\n\t\t\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\tdefault: {\n\t\t\t\t\t\t\t\t\t\t\t\tchar = '\\0' + char + (code === COMMA ? '' : '\\0')\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tformat = 1\n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t// within an isolated context, sleep untill it's terminated\n\t\t\t\t\t\t\t\t\t\tswitch (code) {\n\t\t\t\t\t\t\t\t\t\t\tcase OPENPARENTHESES: {\n\t\t\t\t\t\t\t\t\t\t\t\t// :globa(\n\t\t\t\t\t\t\t\t\t\t\t\tif (pseudo + 7 === caret && tail === 108) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tpseudo = 0\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\tcontext = ++counter\n\t\t\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\tcase CLOSEPARENTHESES: {\n\t\t\t\t\t\t\t\t\t\t\t\tif ((context = --counter) === 0) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tformat = 1\n\t\t\t\t\t\t\t\t\t\t\t\t\tchar += '\\0'\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tcase TAB:\n\t\t\t\t\t\t\t\tcase SPACE: {\n\t\t\t\t\t\t\t\t\tswitch (tail) {\n\t\t\t\t\t\t\t\t\t\tcase NULL:\n\t\t\t\t\t\t\t\t\t\tcase OPENBRACES:\n\t\t\t\t\t\t\t\t\t\tcase CLOSEBRACES:\n\t\t\t\t\t\t\t\t\t\tcase SEMICOLON:\n\t\t\t\t\t\t\t\t\t\tcase COMMA:\n\t\t\t\t\t\t\t\t\t\tcase FORMFEED:\n\t\t\t\t\t\t\t\t\t\tcase TAB:\n\t\t\t\t\t\t\t\t\t\tcase SPACE:\n\t\t\t\t\t\t\t\t\t\tcase NEWLINE:\n\t\t\t\t\t\t\t\t\t\tcase CARRIAGE: {\n\t\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tdefault: {\n\t\t\t\t\t\t\t\t\t\t\t// ignore in isolated contexts\n\t\t\t\t\t\t\t\t\t\t\tif (context === 0) {\n\t\t\t\t\t\t\t\t\t\t\t\tformat = 1\n\t\t\t\t\t\t\t\t\t\t\t\tchar += '\\0'\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// concat buffer of characters\n\t\t\t\t\t\tchars += char\n\n\t\t\t\t\t\t// previous non-whitespace character code\n\t\t\t\t\t\tif (code !== SPACE && code !== TAB) {\n\t\t\t\t\t\t\tpeak = code\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// tail character codes\n\t\t\ttrail = tail\n\t\t\ttail = code\n\n\t\t\t// visit every character\n\t\t\tcaret++\n\t\t}\n\n\t\tlength = out.length\n\n\t\t// preserve empty selector\n \t\tif (preserve > 0) {\n \t\t\tif (length === 0 && children.length === 0 && (current[0].length === 0) === false) {\n \t\t\t\tif (id !== MEDIA || (current.length === 1 && (cascade > 0 ? nscopealt : nscope) === current[0])) {\n\t\t\t\t\tlength = current.join(',').length + 2\n \t\t\t\t}\n \t\t\t}\n\t\t}\n\n\t\tif (length > 0) {\n\t\t\t// cascade isolation mode?\n\t\t\tselector = cascade === 0 && id !== KEYFRAME ? isolate(current) : current\n\n\t\t\t// execute plugins, block context\n\t\t\tif (plugged > 0) {\n\t\t\t\tresult = proxy(BLCKS, out, selector, parent, line, column, length, id, depth, id)\n\n\t\t\t\tif (result !== void 0 && (out = result).length === 0) {\n\t\t\t\t\treturn flat + out + children\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tout = selector.join(',') + '{' + out + '}'\n\n\t\t\tif (prefix*pattern !== 0) {\n\t\t\t\tif (prefix === 2 && !vendor(out, 2))\n\t\t\t\t\tpattern = 0\n\n\t\t\t\tswitch (pattern) {\n\t\t\t\t\t// ::read-only\n\t\t\t\t\tcase READONLY: {\n\t\t\t\t\t\tout = out.replace(readonlyptn, ':'+moz+'$1')+out\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t\t// ::placeholder\n\t\t\t\t\tcase PLACEHOLDER: {\n\t\t\t\t\t\tout = (\n\t\t\t\t\t\t\tout.replace(plcholdrptn, '::' + webkit + 'input-$1') +\n\t\t\t\t\t\t\tout.replace(plcholdrptn, '::' + moz + '$1') +\n\t\t\t\t\t\t\tout.replace(plcholdrptn, ':' + ms + 'input-$1') + out\n\t\t\t\t\t\t)\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tpattern = 0\n\t\t\t}\n\t\t}\n\n\t\treturn flat + out + children\n\t}\n\n\t/**\n\t * Select\n\t *\n\t * @param {Array} parent\n\t * @param {string} current\n\t * @param {number} invert\n\t * @return {Array}\n\t */\n\tfunction select (parent, current, invert) {\n\t\tvar selectors = current.trim().split(selectorptn)\n\t\tvar out = selectors\n\n\t\tvar length = selectors.length\n\t\tvar l = parent.length\n\n\t\tswitch (l) {\n\t\t\t// 0-1 parent selectors\n\t\t\tcase 0:\n\t\t\tcase 1: {\n\t\t\t\tfor (var i = 0, selector = l === 0 ? '' : parent[0] + ' '; i < length; ++i) {\n\t\t\t\t\tout[i] = scope(selector, out[i], invert, l).trim()\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\t}\n\t\t\t// >2 parent selectors, nested\n\t\t\tdefault: {\n\t\t\t\tfor (var i = 0, j = 0, out = []; i < length; ++i) {\n\t\t\t\t\tfor (var k = 0; k < l; ++k) {\n\t\t\t\t\t\tout[j++] = scope(parent[k] + ' ', selectors[i], invert, l).trim()\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn out\n\t}\n\n\t/**\n\t * Scope\n\t *\n\t * @param {string} parent\n\t * @param {string} current\n\t * @param {number} invert\n\t * @param {number} level\n\t * @return {string}\n\t */\n\tfunction scope (parent, current, invert, level) {\n\t\tvar selector = current\n\t\tvar code = selector.charCodeAt(0)\n\n\t\t// trim leading whitespace\n\t\tif (code < 33) {\n\t\t\tcode = (selector = selector.trim()).charCodeAt(0)\n\t\t}\n\n\t\tswitch (code) {\n\t\t\t// &\n\t\t\tcase AND: {\n\t\t\t\tswitch (cascade + level) {\n\t\t\t\t\tcase 0:\n\t\t\t\t\tcase 1: {\n\t\t\t\t\t\tif (parent.trim().length === 0) {\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tdefault: {\n\t\t\t\t\t\treturn selector.replace(andptn, '$1'+parent.trim())\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\t}\n\t\t\t// :\n\t\t\tcase COLON: {\n\t\t\t\tswitch (selector.charCodeAt(1)) {\n\t\t\t\t\t// g in :global\n\t\t\t\t\tcase 103: {\n\t\t\t\t\t\tif (escape > 0 && cascade > 0) {\n\t\t\t\t\t\t\treturn selector.replace(escapeptn, '$1').replace(andptn, '$1'+nscope)\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t\tdefault: {\n\t\t\t\t\t\t// :hover\n\t\t\t\t\t\treturn parent.trim() + selector.replace(andptn, '$1'+parent.trim())\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tdefault: {\n\t\t\t\t// html &\n\t\t\t\tif (invert*cascade > 0 && selector.indexOf('\\f') > 0) {\n\t\t\t\t\treturn selector.replace(andptn, (parent.charCodeAt(0) === COLON ? '' : '$1')+parent.trim())\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn parent + selector\n\t}\n\n\t/**\n\t * Property\n\t *\n\t * @param {string} input\n\t * @param {number} first\n\t * @param {number} second\n\t * @param {number} third\n\t * @return {string}\n\t */\n\tfunction property (input, first, second, third) {\n\t\tvar index = 0\n\t\tvar out = input + ';'\n\t\tvar hash = (first*2) + (second*3) + (third*4)\n\t\tvar cache\n\n\t\t// animation: a, n, i characters\n\t\tif (hash === 944) {\n\t\t\treturn animation(out)\n\t\t} else if (prefix === 0 || (prefix === 2 && !vendor(out, 1))) {\n\t\t\treturn out\n\t\t}\n\n\t\t// vendor prefix\n\t\tswitch (hash) {\n\t\t\t// text-decoration/text-size-adjust/text-shadow/text-align/text-transform: t, e, x\n\t\t\tcase 1015: {\n\t\t\t\t// text-shadow/text-align/text-transform, a\n\t\t\t\treturn out.charCodeAt(10) === 97 ? webkit + out + out : out\n\t\t\t}\n\t\t\t// filter/fill f, i, l\n\t\t\tcase 951: {\n\t\t\t\t// filter, t\n\t\t\t\treturn out.charCodeAt(3) === 116 ? webkit + out + out : out\n\t\t\t}\n\t\t\t// color/column, c, o, l\n\t\t\tcase 963: {\n\t\t\t\t// column, n\n\t\t\t\treturn out.charCodeAt(5) === 110 ? webkit + out + out : out\n\t\t\t}\n\t\t\t// box-decoration-break, b, o, x\n\t\t\tcase 1009: {\n\t\t\t\tif (out.charCodeAt(4) !== 100) {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\t// mask, m, a, s\n\t\t\t// clip-path, c, l, i\n\t\t\tcase 969:\n\t\t\tcase 942: {\n\t\t\t\treturn webkit + out + out\n\t\t\t}\n\t\t\t// appearance: a, p, p\n\t\t\tcase 978: {\n\t\t\t\treturn webkit + out + moz + out + out\n\t\t\t}\n\t\t\t// hyphens: h, y, p\n\t\t\t// user-select: u, s, e\n\t\t\tcase 1019:\n\t\t\tcase 983: {\n\t\t\t\treturn webkit + out + moz + out + ms + out + out\n\t\t\t}\n\t\t\t// background/backface-visibility, b, a, c\n\t\t\tcase 883: {\n\t\t\t\t// backface-visibility, -\n\t\t\t\tif (out.charCodeAt(8) === DASH) {\n\t\t\t\t\treturn webkit + out + out\n\t\t\t\t}\n\n\t\t\t\t// image-set(...)\n\t\t\t\tif (out.indexOf('image-set(', 11) > 0) {\n\t\t\t\t\treturn out.replace(imgsrcptn, '$1'+webkit+'$2') + out\n\t\t\t\t}\n\n\t\t\t\treturn out\n\t\t\t}\n\t\t\t// flex: f, l, e\n\t\t\tcase 932: {\n\t\t\t\tif (out.charCodeAt(4) === DASH) {\n\t\t\t\t\tswitch (out.charCodeAt(5)) {\n\t\t\t\t\t\t// flex-grow, g\n\t\t\t\t\t\tcase 103: {\n\t\t\t\t\t\t\treturn webkit + 'box-' + out.replace('-grow', '') + webkit + out + ms + out.replace('grow', 'positive') + out\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// flex-shrink, s\n\t\t\t\t\t\tcase 115: {\n\t\t\t\t\t\t\treturn webkit + out + ms + out.replace('shrink', 'negative') + out\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// flex-basis, b\n\t\t\t\t\t\tcase 98: {\n\t\t\t\t\t\t\treturn webkit + out + ms + out.replace('basis', 'preferred-size') + out\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn webkit + out + ms + out + out\n\t\t\t}\n\t\t\t// order: o, r, d\n\t\t\tcase 964: {\n\t\t\t\treturn webkit + out + ms + 'flex' + '-' + out + out\n\t\t\t}\n\t\t\t// justify-items/justify-content, j, u, s\n\t\t\tcase 1023: {\n\t\t\t\t// justify-content, c\n\t\t\t\tif (out.charCodeAt(8) !== 99) {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\n\t\t\t\tcache = out.substring(out.indexOf(':', 15)).replace('flex-', '').replace('space-between', 'justify')\n\t\t\t\treturn webkit + 'box-pack' + cache + webkit + out + ms + 'flex-pack' + cache + out\n\t\t\t}\n\t\t\t// cursor, c, u, r\n\t\t\tcase 1005: {\n\t\t\t\treturn cursorptn.test(out) ? out.replace(colonptn, ':' + webkit) + out.replace(colonptn, ':' + moz) + out : out\n\t\t\t}\n\t\t\t// writing-mode, w, r, i\n\t\t\tcase 1000: {\n\t\t\t\tcache = out.substring(13).trim()\n\t\t\t\tindex = cache.indexOf('-') + 1\n\n\t\t\t\tswitch (cache.charCodeAt(0)+cache.charCodeAt(index)) {\n\t\t\t\t\t// vertical-lr\n\t\t\t\t\tcase 226: {\n\t\t\t\t\t\tcache = out.replace(writingptn, 'tb')\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t\t// vertical-rl\n\t\t\t\t\tcase 232: {\n\t\t\t\t\t\tcache = out.replace(writingptn, 'tb-rl')\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t\t// horizontal-tb\n\t\t\t\t\tcase 220: {\n\t\t\t\t\t\tcache = out.replace(writingptn, 'lr')\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t\tdefault: {\n\t\t\t\t\t\treturn out\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn webkit + out + ms + cache + out\n\t\t\t}\n\t\t\t// position: sticky\n\t\t\tcase 1017: {\n\t\t\t\tif (out.indexOf('sticky', 9) === -1) {\n\t\t\t\t\treturn out\n\t\t\t\t}\n\t\t\t}\n\t\t\t// display(flex/inline-flex/inline-box): d, i, s\n\t\t\tcase 975: {\n\t\t\t\tindex = (out = input).length - 10\n\t\t\t\tcache = (out.charCodeAt(index) === 33 ? out.substring(0, index) : out).substring(input.indexOf(':', 7) + 1).trim()\n\n\t\t\t\tswitch (hash = cache.charCodeAt(0) + (cache.charCodeAt(7)|0)) {\n\t\t\t\t\t// inline-\n\t\t\t\t\tcase 203: {\n\t\t\t\t\t\t// inline-box\n\t\t\t\t\t\tif (cache.charCodeAt(8) < 111) {\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t// inline-box/sticky\n\t\t\t\t\tcase 115: {\n\t\t\t\t\t\tout = out.replace(cache, webkit+cache)+';'+out\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t\t// inline-flex\n\t\t\t\t\t// flex\n\t\t\t\t\tcase 207:\n\t\t\t\t\tcase 102: {\n\t\t\t\t\t\tout = (\n\t\t\t\t\t\t\tout.replace(cache, webkit+(hash > 102 ? 'inline-' : '')+'box')+';'+\n\t\t\t\t\t\t\tout.replace(cache, webkit+cache)+';'+\n\t\t\t\t\t\t\tout.replace(cache, ms+cache+'box')+';'+\n\t\t\t\t\t\t\tout\n\t\t\t\t\t\t)\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn out + ';'\n\t\t\t}\n\t\t\t// align-items, align-center, align-self: a, l, i, -\n\t\t\tcase 938: {\n\t\t\t\tif (out.charCodeAt(5) === DASH) {\n\t\t\t\t\tswitch (out.charCodeAt(6)) {\n\t\t\t\t\t\t// align-items, i\n\t\t\t\t\t\tcase 105: {\n\t\t\t\t\t\t\tcache = out.replace('-items', '')\n\t\t\t\t\t\t\treturn webkit + out + webkit + 'box-' + cache + ms + 'flex-' + cache + out\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// align-self, s\n\t\t\t\t\t\tcase 115: {\n\t\t\t\t\t\t\treturn webkit + out + ms + 'flex-item-' + out.replace(selfptn, '') + out\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// align-content\n\t\t\t\t\t\tdefault: {\n\t\t\t\t\t\t\treturn webkit + out + ms + 'flex-line-pack' + out.replace('align-content', '').replace(selfptn, '') + out\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\t}\n\t\t\t// min/max\n\t\t\tcase 973:\n\t\t\tcase 989: {\n\t\t\t\t// min-/max- height/width/block-size/inline-size\n\t\t\t\tif (out.charCodeAt(3) !== DASH || out.charCodeAt(4) === 122) {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\t// height/width: min-content / width: max-content\n\t\t\tcase 931:\n\t\t\tcase 953: {\n\t\t\t\tif (dimensionptn.test(input) === true) {\n\t\t\t\t\t// stretch\n\t\t\t\t\tif ((cache = input.substring(input.indexOf(':') + 1)).charCodeAt(0) === 115)\n\t\t\t\t\t\treturn property(input.replace('stretch', 'fill-available'), first, second, third).replace(':fill-available', ':stretch')\n\t\t\t\t\telse\n\t\t\t\t\t\treturn out.replace(cache, webkit + cache) + out.replace(cache, moz + cache.replace('fill-', '')) + out\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\t}\n\t\t\t// transform, transition: t, r, a\n\t\t\tcase 962: {\n\t\t\t\tout = webkit + out + (out.charCodeAt(5) === 102 ? ms + out : '') + out\n\n\t\t\t\t// transitions\n\t\t\t\tif (second + third === 211 && out.charCodeAt(13) === 105 && out.indexOf('transform', 10) > 0) {\n\t\t\t\t\treturn out.substring(0, out.indexOf(';', 27) + 1).replace(transformptn, '$1' + webkit + '$2') + out\n\t\t\t\t}\n\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\n\t\treturn out\n\t}\n\n\t/**\n\t * Vendor\n\t *\n\t * @param {string} content\n\t * @param {number} context\n\t * @return {boolean}\n\t */\n\tfunction vendor (content, context) {\n\t\tvar index = content.indexOf(context === 1 ? ':' : '{')\n\t\tvar key = content.substring(0, context !== 3 ? index : 10)\n\t\tvar value = content.substring(index + 1, content.length - 1)\n\n\t\treturn should(context !== 2 ? key : key.replace(pseudofmt, '$1'), value, context)\n\t}\n\n\t/**\n\t * Supports\n\t *\n\t * @param {string} match\n\t * @param {string} group\n\t * @return {string}\n\t */\n\tfunction supports (match, group) {\n\t\tvar out = property(group, group.charCodeAt(0), group.charCodeAt(1), group.charCodeAt(2))\n\n\t\treturn out !== group+';' ? out.replace(propertyptn, ' or ($1)').substring(4) : '('+group+')'\n\t}\n\n\t/**\n\t * Animation\n\t *\n\t * @param {string} input\n\t * @return {string}\n\t */\n\tfunction animation (input) {\n\t\tvar length = input.length\n\t\tvar index = input.indexOf(':', 9) + 1\n\t\tvar declare = input.substring(0, index).trim()\n\t\tvar out = input.substring(index, length-1).trim()\n\n\t\tswitch (input.charCodeAt(9)*keyed) {\n\t\t\tcase 0: {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\t// animation-*, -\n\t\t\tcase DASH: {\n\t\t\t\t// animation-name, n\n\t\t\t\tif (input.charCodeAt(10) !== 110) {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\t// animation/animation-name\n\t\t\tdefault: {\n\t\t\t\t// split in case of multiple animations\n\t\t\t\tvar list = out.split((out = '', animationptn))\n\n\t\t\t\tfor (var i = 0, index = 0, length = list.length; i < length; index = 0, ++i) {\n\t\t\t\t\tvar value = list[i]\n\t\t\t\t\tvar items = value.split(propertiesptn)\n\n\t\t\t\t\twhile (value = items[index]) {\n\t\t\t\t\t\tvar peak = value.charCodeAt(0)\n\n\t\t\t\t\t\tif (keyed === 1 && (\n\t\t\t\t\t\t\t// letters\n\t\t\t\t\t\t\t(peak > AT && peak < 90) || (peak > 96 && peak < 123) || peak === UNDERSCORE ||\n\t\t\t\t\t\t\t// dash but not in sequence i.e --\n\t\t\t\t\t\t\t(peak === DASH && value.charCodeAt(1) !== DASH)\n\t\t\t\t\t\t)) {\n\t\t\t\t\t\t\t// not a number/function\n\t\t\t\t\t\t\tswitch (isNaN(parseFloat(value)) + (value.indexOf('(') !== -1)) {\n\t\t\t\t\t\t\t\tcase 1: {\n\t\t\t\t\t\t\t\t\tswitch (value) {\n\t\t\t\t\t\t\t\t\t\t// not a valid reserved keyword\n\t\t\t\t\t\t\t\t\t\tcase 'infinite': case 'alternate': case 'backwards': case 'running':\n\t\t\t\t\t\t\t\t\t\tcase 'normal': case 'forwards': case 'both': case 'none': case 'linear':\n\t\t\t\t\t\t\t\t\t\tcase 'ease': case 'ease-in': case 'ease-out': case 'ease-in-out':\n\t\t\t\t\t\t\t\t\t\tcase 'paused': case 'reverse': case 'alternate-reverse': case 'inherit':\n\t\t\t\t\t\t\t\t\t\tcase 'initial': case 'unset': case 'step-start': case 'step-end': {\n\t\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tdefault: {\n\t\t\t\t\t\t\t\t\t\t\tvalue += key\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\titems[index++] = value\n\t\t\t\t\t}\n\n\t\t\t\t\tout += (i === 0 ? '' : ',') + items.join(' ')\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tout = declare + out + ';'\n\n\t\tif (prefix === 1 || (prefix === 2 && vendor(out, 1)))\n\t\t\treturn webkit + out + out\n\n\t\treturn out\n\t}\n\n\t/**\n\t * Isolate\n\t *\n\t * @param {Array} current\n\t */\n\tfunction isolate (current) {\n\t\tfor (var i = 0, length = current.length, selector = Array(length), padding, element; i < length; ++i) {\n\t\t\t// split individual elements in a selector i.e h1 h2 === [h1, h2]\n\t\t\tvar elements = current[i].split(elementptn)\n\t\t\tvar out = ''\n\n\t\t\tfor (var j = 0, size = 0, tail = 0, code = 0, l = elements.length; j < l; ++j) {\n\t\t\t\t// empty element\n\t\t\t\tif ((size = (element = elements[j]).length) === 0 && l > 1) {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\n\t\t\t\ttail = out.charCodeAt(out.length-1)\n\t\t\t\tcode = element.charCodeAt(0)\n\t\t\t\tpadding = ''\n\n\t\t\t\tif (j !== 0) {\n\t\t\t\t\t// determine if we need padding\n\t\t\t\t\tswitch (tail) {\n\t\t\t\t\t\tcase STAR:\n\t\t\t\t\t\tcase TILDE:\n\t\t\t\t\t\tcase GREATERTHAN:\n\t\t\t\t\t\tcase PLUS:\n\t\t\t\t\t\tcase SPACE:\n\t\t\t\t\t\tcase OPENPARENTHESES: {\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t\tdefault: {\n\t\t\t\t\t\t\tpadding = ' '\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tswitch (code) {\n\t\t\t\t\tcase AND: {\n\t\t\t\t\t\telement = padding + nscopealt\n\t\t\t\t\t}\n\t\t\t\t\tcase TILDE:\n\t\t\t\t\tcase GREATERTHAN:\n\t\t\t\t\tcase PLUS:\n\t\t\t\t\tcase SPACE:\n\t\t\t\t\tcase CLOSEPARENTHESES:\n\t\t\t\t\tcase OPENPARENTHESES: {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t\tcase OPENBRACKET: {\n\t\t\t\t\t\telement = padding + element + nscopealt\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t\tcase COLON: {\n\t\t\t\t\t\tswitch (element.charCodeAt(1)*2 + element.charCodeAt(2)*3) {\n\t\t\t\t\t\t\t// :global\n\t\t\t\t\t\t\tcase 530: {\n\t\t\t\t\t\t\t\tif (escape > 0) {\n\t\t\t\t\t\t\t\t\telement = padding + element.substring(8, size - 1)\n\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t// :hover, :nth-child(), ...\n\t\t\t\t\t\t\tdefault: {\n\t\t\t\t\t\t\t\tif (j < 1 || elements[j-1].length < 1) {\n\t\t\t\t\t\t\t\t\telement = padding + nscopealt + element\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t\tcase COMMA: {\n\t\t\t\t\t\tpadding = ''\n\t\t\t\t\t}\n\t\t\t\t\tdefault: {\n\t\t\t\t\t\tif (size > 1 && element.indexOf(':') > 0) {\n\t\t\t\t\t\t\telement = padding + element.replace(pseudoptn, '$1' + nscopealt + '$2')\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\telement = padding + element + nscopealt\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tout += element\n\t\t\t}\n\n\t\t\tselector[i] = out.replace(formatptn, '').trim()\n\t\t}\n\n\t\treturn selector\n\t}\n\n\t/**\n\t * Proxy\n\t *\n\t * @param {number} context\n\t * @param {string} content\n\t * @param {Array} selectors\n\t * @param {Array} parents\n\t * @param {number} line\n\t * @param {number} column\n\t * @param {number} length\n\t * @param {number} id\n\t * @param {number} depth\n\t * @param {number} at\n\t * @return {(string|void|*)}\n\t */\n\tfunction proxy (context, content, selectors, parents, line, column, length, id, depth, at) {\n\t\tfor (var i = 0, out = content, next; i < plugged; ++i) {\n\t\t\tswitch (next = plugins[i].call(stylis, context, out, selectors, parents, line, column, length, id, depth, at)) {\n\t\t\t\tcase void 0:\n\t\t\t\tcase false:\n\t\t\t\tcase true:\n\t\t\t\tcase null: {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\tdefault: {\n\t\t\t\t\tout = next\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (out !== content) {\n\t\t return out\n\t\t}\n\t}\n\n\t/**\n\t * @param {number} code\n\t * @param {number} index\n\t * @param {number} length\n\t * @param {string} body\n\t * @return {number}\n\t */\n\tfunction delimited (code, index, length, body) {\n\t\tfor (var i = index + 1; i < length; ++i) {\n\t\t\tswitch (body.charCodeAt(i)) {\n\t\t\t\t// /*\n\t\t\t\tcase FOWARDSLASH: {\n\t\t\t\t\tif (code === STAR) {\n\t\t\t\t\t\tif (body.charCodeAt(i - 1) === STAR && index + 2 !== i) {\n\t\t\t\t\t\t\treturn i + 1\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\t// //\n\t\t\t\tcase NEWLINE: {\n\t\t\t\t\tif (code === FOWARDSLASH) {\n\t\t\t\t\t\treturn i + 1\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn i\n\t}\n\n\t/**\n\t * @param {number} type\n\t * @param {number} index\n\t * @param {number} length\n\t * @param {number} find\n\t * @param {string} body\n\t * @return {number}\n\t */\n\tfunction match (type, index, length, body) {\n\t\tfor (var i = index + 1; i < length; ++i) {\n\t\t\tswitch (body.charCodeAt(i)) {\n\t\t\t\tcase type: {\n\t\t\t\t\treturn i\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn i\n\t}\n\n\t/**\n\t * Minify\n\t *\n\t * @param {(string|*)} output\n\t * @return {string}\n\t */\n\tfunction minify (output) {\n\t\treturn output\n\t\t\t.replace(formatptn, '')\n\t\t\t.replace(beforeptn, '')\n\t\t\t.replace(afterptn, '$1')\n\t\t\t.replace(tailptn, '$1')\n\t\t\t.replace(whiteptn, ' ')\n\t}\n\n\t/**\n\t * Use\n\t *\n\t * @param {(Array|function(...?)|number|void)?} plugin\n\t */\n\tfunction use (plugin) {\n\t\tswitch (plugin) {\n\t\t\tcase void 0:\n\t\t\tcase null: {\n\t\t\t\tplugged = plugins.length = 0\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tdefault: {\n\t\t\t\tif (typeof plugin === 'function') {\n\t\t\t\t\tplugins[plugged++] = plugin\n\t\t\t\t}\telse if (typeof plugin === 'object') {\n\t\t\t\t\tfor (var i = 0, length = plugin.length; i < length; ++i) {\n\t\t\t\t\t\tuse(plugin[i])\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tunkwn = !!plugin|0\n\t\t\t\t}\n\t\t\t}\n \t\t}\n\n \t\treturn use\n\t}\n\n\t/**\n\t * Set\n\t *\n\t * @param {*} options\n\t */\n\tfunction set (options) {\n\t\tfor (var name in options) {\n\t\t\tvar value = options[name]\n\t\t\tswitch (name) {\n\t\t\t\tcase 'keyframe': keyed = value|0; break\n\t\t\t\tcase 'global': escape = value|0; break\n\t\t\t\tcase 'cascade': cascade = value|0; break\n\t\t\t\tcase 'compress': compress = value|0; break\n\t\t\t\tcase 'semicolon': semicolon = value|0; break\n\t\t\t\tcase 'preserve': preserve = value|0; break\n\t\t\t\tcase 'prefix':\n\t\t\t\t\tshould = null\n\n\t\t\t\t\tif (!value) {\n\t\t\t\t\t\tprefix = 0\n\t\t\t\t\t} else if (typeof value !== 'function') {\n\t\t\t\t\t\tprefix = 1\n\t\t\t\t\t} else {\n\t\t\t\t\t\tprefix = 2\n\t\t\t\t\t\tshould = value\n\t\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn set\n\t}\n\n\t/**\n\t * Stylis\n\t *\n\t * @param {string} selector\n\t * @param {string} input\n\t * @return {*}\n\t */\n\tfunction stylis (selector, input) {\n\t\tif (this !== void 0 && this.constructor === stylis) {\n\t\t\treturn factory(selector)\n\t\t}\n\n\t\t// setup\n\t\tvar ns = selector\n\t\tvar code = ns.charCodeAt(0)\n\n\t\t// trim leading whitespace\n\t\tif (code < 33) {\n\t\t\tcode = (ns = ns.trim()).charCodeAt(0)\n\t\t}\n\n\t\t// keyframe/animation namespace\n\t\tif (keyed > 0) {\n\t\t\tkey = ns.replace(invalidptn, code === OPENBRACKET ? '' : '-')\n\t\t}\n\n\t\t// reset, used to assert if a plugin is moneky-patching the return value\n\t\tcode = 1\n\n\t\t// cascade/isolate\n\t\tif (cascade === 1) {\n\t\t\tnscope = ns\n\t\t} else {\n\t\t\tnscopealt = ns\n\t\t}\n\n\t\tvar selectors = [nscope]\n\t\tvar result\n\n\t\t// execute plugins, pre-process context\n\t\tif (plugged > 0) {\n\t\t\tresult = proxy(PREPS, input, selectors, selectors, line, column, 0, 0, 0, 0)\n\n\t\t\tif (result !== void 0 && typeof result === 'string') {\n\t\t\t\tinput = result\n\t\t\t}\n\t\t}\n\n\t\t// build\n\t\tvar output = compile(array, selectors, input, 0, 0)\n\n\t\t// execute plugins, post-process context\n\t\tif (plugged > 0) {\n\t\t\tresult = proxy(POSTS, output, selectors, selectors, line, column, output.length, 0, 0, 0)\n\n\t\t\t// bypass minification\n\t\t\tif (result !== void 0 && typeof(output = result) !== 'string') {\n\t\t\t\tcode = 0\n\t\t\t}\n\t\t}\n\n\t\t// reset\n\t\tkey = ''\n\t\tnscope = ''\n\t\tnscopealt = ''\n\t\tpattern = 0\n\t\tline = 1\n\t\tcolumn = 1\n\n\t\treturn compress*code === 0 ? output : minify(output)\n\t}\n\n\tstylis['use'] = use\n\tstylis['set'] = set\n\n\tif (options !== void 0) {\n\t\tset(options)\n\t}\n\n\treturn stylis\n}));\n","module.exports = __WEBPACK_EXTERNAL_MODULE__8__;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","// external dependencies\nimport React from 'react';\nimport { findDOMNode } from 'react-dom';\n\n/**\n * @function bindSetState\n *\n * @description\n * bind the setState method to the component instance to ensure it can be used in a functional way\n *\n * @param {ReactComponent} instance the instance to bind setState to\n * @returns {void}\n */\nexport var bindSetState = function bindSetState(instance) {\n return instance.setState = instance.setState.bind(instance);\n};\n\n/**\n * @function isClassComponent\n *\n * @description\n * is the value passed a valid react component class instance\n *\n * @param {any} value the value to test\n * @returns {boolean} is the value a react component instance\n */\nexport var isClassComponent = function isClassComponent(value) {\n return !!value && value instanceof React.Component;\n};\n\n/**\n * @function logInvalidInstanceError\n *\n * @description\n * notify the user that the instance passed is invalid\n *\n * @param {string} type the type of creator being called\n * @returns {void}\n */\nexport var logInvalidInstanceError = function logInvalidInstanceError(type) {\n return console.error('The instance provided for use with the ' + type + ' is not a valid React component instance.');\n}; // eslint-disable-line no-console\n\n/**\n * @function createRefCreator\n *\n * @description\n * create a method that will assign a ref value to the instance passed\n *\n * @param {function} getter the function that gets the component value for the ref\n * @returns {function(ReactComponent, string): function((HTMLElement|Component)): void} the ref create\n */\nexport var createRefCreator = function createRefCreator(getter) {\n return function (instance, ref) {\n return isClassComponent(instance) ? function (component) {\n return instance[ref] = getter(component);\n } : logInvalidInstanceError('ref');\n };\n};\n\n/**\n * @function getNamespacedRef\n *\n * @description\n * get the ref that is a combination of the raw component and the component's underlying HTML element\n *\n * @param {ReactComponent} component the component to assin\n * @returns {{component: ReactComponent, element: HTMLElement}} the namespaced ref\n */\nexport var getNamespacedRef = function getNamespacedRef(component) {\n return { component: component, element: findDOMNode(component) };\n};\n\n/**\n * @function identity\n *\n * @description\n * return the first parameter passed\n *\n * @param {any} value the value to pass through\n * @returns {any} the first parameter passed\n */\nexport var identity = function identity(value) {\n return value;\n};","function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\n// external dependencies\nimport React from 'react';\nimport { findDOMNode } from 'react-dom';\n\n// utils\nimport { bindSetState, createRefCreator, getNamespacedRef, identity, isClassComponent, logInvalidInstanceError } from './utils';\n\n/**\n * @function createCombinedRef\n *\n * @description\n * create a ref that assigns both the raw component and the underlying HTML element to the instance on a namespace\n *\n * @param {ReactComponent} instance the instance to assign to\n * @param {string} ref the instance value name\n * @returns {{component: ReactComponent, element: HTMLElement}} the combined ref\n */\nexport var createCombinedRef = createRefCreator(getNamespacedRef);\n\n/**\n * @function createComponentRef\n *\n * @description\n * create a ref that assigns the component itself to the instance\n *\n * @param {ReactComponent} instance the instance to assign to\n * @param {string} ref the instance value name\n * @returns {ReactComponent} the component ref\n */\nexport var createComponentRef = createRefCreator(identity);\n\n/**\n * @function createElementRef\n *\n * @description\n * create a ref that assigns the component's underlying HTML element to the instance\n *\n * @param {ReactComponent} instance the instance to assign to\n * @param {string} ref the instance value name\n * @returns {HTMLElement} the element ref\n */\nexport var createElementRef = createRefCreator(findDOMNode);\n\n/**\n * @function createMethod\n *\n * @description\n * create a method that is a pure version of the lifecycle / instance method passed to it\n *\n * the conditional function return is to ensure the method is called with as performant a way as possible\n *\n * @param {ReactComponent} instance the instance the method is assigned to\n * @param {function} method the instance method\n * @param {Array} extraArgs additional args to pass to the method\n * @returns {function(...Array): any} the method with the instance passed as value\n */\nexport var createMethod = function createMethod(instance, method) {\n for (var _len = arguments.length, extraArgs = Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n extraArgs[_key - 2] = arguments[_key];\n }\n\n return isClassComponent(instance) ? bindSetState(instance) && function () {\n for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n return method.call(instance, instance, args, extraArgs);\n } : logInvalidInstanceError('method');\n}; // eslint-disable-line no-console\n\n/**\n * @function createComponent\n *\n * @description\n * create a component from the render method and any options passed\n *\n * @param {function} render the function to render the component\n * @param {Object} [options={}] the options to render the component with\n * @param {function} [getInitialState] the method to get the initial state with\n * @param {boolean} [isPure] is PureComponent used\n * @param {Object} [state] the initial state\n * @returns {ReactComponent} the component class\n */\nvar createComponent = function createComponent(render) {\n var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n var getInitialState = _ref.getInitialState,\n isPure = _ref.isPure,\n state = _ref.state,\n options = _objectWithoutProperties(_ref, ['getInitialState', 'isPure', 'state']);\n\n var Constructor = isPure ? React.PureComponent : React.Component;\n\n function ParmComponent(initialProps) {\n var _this = this;\n\n Constructor.call(this, initialProps);\n\n this.state = typeof getInitialState === 'function' ? createMethod(this, getInitialState)() : state || null;\n\n Object.keys(options).forEach(function (key) {\n _this[key] = typeof options[key] === 'function' ? createMethod(_this, options[key]) : options[key];\n });\n\n this.render = createMethod(this, render);\n\n return this;\n }\n\n ParmComponent.prototype = Object.create(Constructor.prototype);\n\n ParmComponent.displayName = render.displayName || render.name || 'ParmComponent';\n ParmComponent.propTypes = render.propTypes;\n ParmComponent.contextTypes = render.contextTypes;\n ParmComponent.childContextTypes = render.childContextTypes;\n ParmComponent.defaultProps = render.defaultProps;\n\n return ParmComponent;\n};\nexport { createComponent };","/**\n * @function getUrl\n *\n * @description\n * get the URL used to generate blobs\n *\n * @returns {Object} the URL object to generate blobs with\n */\nexport var getUrl = function () {\n var defaultObject = {};\n\n var URL = defaultObject;\n\n var getUrl = function getUrl() {\n return URL !== defaultObject ? URL : URL = typeof window !== 'undefined' ? window.URL || window.webkitURL : defaultObject;\n };\n\n getUrl.reset = function () {\n return URL = defaultObject;\n };\n\n return getUrl;\n}();\n\n/**\n * @function getHasBlobSupport\n *\n * @description\n * get whether Blobs are supported in the runtime\n *\n * @returns {boolean} are Blobs supported\n */\nexport var getHasBlobSupport = function getHasBlobSupport() {\n return typeof window !== 'undefined' && typeof window.Blob === 'function' && typeof getUrl().createObjectURL === 'function' && function () {\n try {\n new window.Blob();\n\n return true;\n } catch (error) {\n return false;\n }\n }();\n};\n\n/**\n * @function hasBlobSupport\n *\n * @description\n * a cached reference to determine Blob support in the runtime\n *\n * @returns {boolean} are Blobs supported\n */\nexport var hasBlobSupport = function () {\n var support = false;\n\n var hasBlobSupport = function hasBlobSupport() {\n return support || (support = getHasBlobSupport());\n };\n\n hasBlobSupport.reset = function () {\n return support = false;\n };\n\n return hasBlobSupport;\n}();\n\n/**\n * @function getLinkHref\n *\n * @description\n * get the href of the link based on the style string Blob\n *\n * @param {string} style the style to create the Blob from\n * @returns {string} the data URI built from the Blob\n */\nexport var getLinkHref = function getLinkHref(style) {\n return hasBlobSupport() ? getUrl().createObjectURL(new window.Blob([style], { type: 'text/css' })) : null;\n};\n\n/**\n * @function createGetCachedLinkHref\n *\n * @description\n * create a cached version of the getLinkHref\n *\n * @returns {function(string): string} the cached version of getLinkHref\n */\nexport var createGetCachedLinkHref = function createGetCachedLinkHref() {\n return function () {\n var href = null,\n currentStyle = null;\n\n return function (style) {\n return style === currentStyle ? href : (currentStyle = style) ? href = getLinkHref(style) : href = null;\n };\n }();\n};","// constants\nimport { IS_PRODUCTION } from './constants';\n\n/**\n * @constant {Object} GLOBAL_OPTIONS the global options to apply as fallback to local props\n */\nexport var GLOBAL_OPTIONS = {\n hasSourceMap: !IS_PRODUCTION,\n isCompressed: true,\n isMinified: IS_PRODUCTION,\n isPrefixed: true\n};\n\n/**\n * @function getCoalescedOption\n *\n * @description\n * get the option either from props if it exists, or globally\n *\n * @param {Object} props the props to the specific instance\n * @param {string} option the option to coalesce\n * @returns {boolean} the coalesced option\n */\nexport var getCoalescedOption = function getCoalescedOption(props, option) {\n return typeof props[option] === 'boolean' ? props[option] : GLOBAL_OPTIONS[option];\n};\n\n/**\n * @function setGlobalOptions\n *\n * @description\n * set the options passed to be global\n *\n * @param {Object} options the objects to apply globally\n * @returns {void}\n */\nexport var setGlobalOptions = function setGlobalOptions(options) {\n return Object.keys(options).forEach(function (option) {\n return GLOBAL_OPTIONS.hasOwnProperty(option) && typeof options[option] === 'boolean' && (GLOBAL_OPTIONS[option] = options[option]);\n });\n};","// external dependencies\nimport beautify from 'cssbeautify';\nimport Stylis from 'stylis';\n\n// constants\nimport { BEAUTIFY_OPTIONS } from './constants';\n\n/**\n * @function getProcessedStyles\n *\n * @description\n * get the styles processed by stylis\n *\n * @param {string} rawStyle the style to process\n * @param {Object} props the props passed to the component\n * @param {boolean} props.isCompressed is compressed CSS output requested\n * @param {boolean} props.isPrefixed is vendor-prefixed CSS requested\n * @returns {string} the processed styles\n */\nexport var getProcessedStyles = function getProcessedStyles(rawStyle, _ref) {\n var isCompressed = _ref.isCompressed,\n isPrefixed = _ref.isPrefixed;\n return new Stylis({\n compress: isCompressed,\n global: false,\n keyframe: false,\n prefix: isPrefixed\n })('', rawStyle);\n};\n\n/**\n * @function getRenderedStyles\n *\n * @description\n * get the styles rendered in the HTML tag\n *\n * @param {string} rawStyle the style to process\n * @param {Object} props the props passed to the component\n * @param {boolean} props.isMinified is minified CSS output requested\n * @returns {string} the styles to use in the rendered tag\n */\nexport var getRenderedStyles = function getRenderedStyles(rawStyle, props) {\n return props.isMinified ? getProcessedStyles(rawStyle, props) : beautify(getProcessedStyles(rawStyle, props), BEAUTIFY_OPTIONS);\n};","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n// external dependencies\nimport PropTypes from 'prop-types';\nimport React, { PureComponent } from 'react';\nimport { createElementRef, createMethod } from 'react-parm';\n\n// blob\nimport { createGetCachedLinkHref, hasBlobSupport } from './blob';\n\n// constants\nimport { HAS_UNSAFE_METHODS } from './constants';\n\n// options\nimport { getCoalescedOption, setGlobalOptions } from './options';\n\n// styles\nimport { getRenderedStyles } from './styles';\n\n/**\n * @function componentDidMount\n *\n * @description\n * on mount, relocate the node\n *\n * @param {ReactComponent} instance the component instance\n * @param {HTMLElement} instance.node the node to render the styles into\n * @param {function} instance.relocateNote the method to relocate the node to the head\n * @returns {void}\n */\nexport var componentDidMount = function componentDidMount(_ref) {\n var node = _ref.node,\n relocateNode = _ref.relocateNode;\n return relocateNode(node);\n};\n\n/**\n * @function componentWillUpdate\n *\n * @description\n * before the update occurs, if the sourceMap requirements have changed, return the node to its original position\n *\n * @param {ReactComponent} instance the component instance\n * @param {HTMLElement} instance.node the node to render the styles into\n * @param {function} instance.returnNode the method to return the node to its original parent\n */\nexport var componentWillUpdate = function componentWillUpdate(_ref2) {\n var node = _ref2.node,\n returnNode = _ref2.returnNode;\n\n returnNode(node);\n};\n\n/**\n * @function componentDidUpdate\n *\n * @description\n * on update, if the sourceMap requirements have changed then relocate the new node to the head,\n * and if the styles have changed then set them in staet\n *\n * @param {ReactComponent} instance the component instance\n * @param {function} instance.getStyleForState the method to get the new rendered style\n * @param {HTMLElement} instance.node the node to render the styles into\n * @param {function} instance.relocateNote the method to relocate the node to the head\n * @param {Object} instance.props the new props of the component\n * @param {function} instance.setState the method to set the state of the component\n * @param {Array} args the arguments passed to the function\n * @param {Object} previousProps the previous props of the component\n */\nexport var componentDidUpdate = function componentDidUpdate(_ref3, _ref4) {\n var getStyleForState = _ref3.getStyleForState,\n node = _ref3.node,\n relocateNode = _ref3.relocateNode,\n props = _ref3.props,\n setState = _ref3.setState;\n var previousProps = _ref4[0];\n\n relocateNode(node);\n\n if (props.children !== previousProps.children) {\n setState(getStyleForState);\n }\n};\n\n/**\n * @function componentWillUnmount\n *\n * @description\n * prior to unmount, return the node to its original parent\n *\n * @param {ReactComponent} instance the component instance\n * @param {HTMLElement} instance.node the node to render the styles into\n * @param {function} instance.returnNode the method to return the node to its original parent\n * @returns {void}\n */\nexport var componentWillUnmount = function componentWillUnmount(_ref5) {\n var node = _ref5.node,\n returnNode = _ref5.returnNode;\n return returnNode(node);\n};\n\n/**\n * @function getStyleForState\n *\n * @description\n * get the styles to be used for the rendered tag\n *\n * @param {ReactComponent} instance the component instance\n * @param {Object} instance.props the new props of the component\n * @returns {{style: string}} the style strng to use in the rendered tag\n */\nexport var getStyleForState = function getStyleForState(_ref6) {\n var props = _ref6.props;\n return {\n style: getRenderedStyles(props.children || '', {\n isCompressed: getCoalescedOption(props, 'isCompressed'),\n isMinified: getCoalescedOption(props, 'isMinified'),\n isPrefixed: getCoalescedOption(props, 'isPrefixed')\n })\n };\n};\n\n/**\n * @function relocateNode\n *\n * @description\n * relocate the node to the bottom of the head\n *\n * @param {ReactComponent} instance the component instance\n * @param {Array} args the arguments passed to the function\n * @param {HTMLElement} node the node to render the styles into\n */\nexport var relocateNode = function relocateNode(instance, _ref7) {\n var node = _ref7[0];\n\n if (typeof document !== 'undefined' && node) {\n instance.originalParent = node.parentNode;\n\n instance.originalParent.removeChild(node);\n document.head.appendChild(node);\n }\n};\n\n/**\n * @function returnNode\n *\n * @description\n * return the node to the original parent\n *\n * @param {ReactComponent} instance the component instance\n * @param {Array} args the arguments passed to the function\n * @param {HTMLElement} node the node to render the styles into\n */\nexport var returnNode = function returnNode(instance, _ref8) {\n var node = _ref8[0];\n\n if (typeof document !== 'undefined' && node) {\n try {\n document.head.removeChild(node);\n instance.originalParent.appendChild(node);\n } catch (error) {\n // ignore the error\n } finally {\n instance.node = null;\n instance.originalParent = null;\n }\n }\n};\n\nvar willUpdateMethod = HAS_UNSAFE_METHODS ? 'UNSAFE_componentWillUpdate' : 'componentWillUpdate';\n\nvar Style = function (_PureComponent) {\n _inherits(Style, _PureComponent);\n\n function Style(props) {\n _classCallCheck(this, Style);\n\n var _this = _possibleConstructorReturn(this, _PureComponent.call(this, props));\n\n _this.componentDidMount = createMethod(_this, componentDidMount);\n _this.componentDidUpdate = createMethod(_this, componentDidUpdate);\n _this[willUpdateMethod] = createMethod(_this, componentWillUpdate);\n _this.componentWillUnmount = createMethod(_this, componentWillUnmount);\n _this.linkHref = null;\n _this.node = null;\n _this.originalParent = null;\n _this.getCachedLinkHref = createGetCachedLinkHref();\n _this.getStyleForState = createMethod(_this, getStyleForState);\n _this.relocateNode = createMethod(_this, relocateNode);\n _this.returnNode = createMethod(_this, returnNode);\n\n\n _this.state = getStyleForState({ props: props });\n return _this;\n }\n\n // lifecycle methods\n\n // eslint-disable-next-line react/sort-comp\n\n\n // instance values\n\n\n // static methods\n\n\n // instance methods\n\n\n Style.prototype.render = function render() {\n var _props = this.props,\n childrenIgnored = _props.children,\n hasSourceMapIgnored = _props.hasSourceMap,\n isMinifiedIgnored = _props.isCompressed,\n isPrefixedIgnored = _props.isPrefixed,\n props = _objectWithoutProperties(_props, ['children', 'hasSourceMap', 'isCompressed', 'isPrefixed']);\n\n var style = this.state.style;\n\n\n if (getCoalescedOption(this.props, 'hasSourceMap')) {\n if (hasBlobSupport()) {\n return (\n /* eslint-disable prettier */\n React.createElement('link', _extends({}, props, {\n href: this.getCachedLinkHref(style),\n ref: createElementRef(this, 'node'),\n rel: 'stylesheet'\n }))\n /* eslint-enable */\n\n );\n }\n\n /* eslint-disable no-console */\n console.error('To support sourcemaps for react-style-tag you need Blob support, and the browser you are using does not currently support it. You should include a polyfill prior to the rendering of this component.');\n /* eslint-enable */\n }\n\n return React.createElement(\n 'style',\n _extends({\n ref: createElementRef(this, 'node')\n }, props),\n style\n );\n };\n\n return Style;\n}(PureComponent);\n\nStyle.propTypes = {\n children: PropTypes.string.isRequired,\n hasSourceMap: PropTypes.bool,\n id: PropTypes.string,\n isCompressed: PropTypes.bool,\n isMinified: PropTypes.bool,\n isPrefixed: PropTypes.bool\n};\nStyle.setGlobalOptions = setGlobalOptions;\n\n\nexport default Style;","import { CONFIG } from './config';\nexport enum BoomThemeStyleProps {\n BaseTheme = 'theme',\n BackgroundImage = 'bgimage',\n CustomStyle = 'style',\n ExternalURL = 'url',\n PanelBackground = 'panel-container-bg-color',\n None = 'none',\n}\ninterface BoomThemeStyleInterface {\n type: BoomThemeStyleProps;\n}\ninterface BoomThemeStyleBaseThemeInterface extends BoomThemeStyleInterface {\n type: BoomThemeStyleProps.BaseTheme;\n props: {\n theme: 'default' | 'dark' | 'light';\n };\n}\ninterface BoomThemeStyleBgImageInterface extends BoomThemeStyleInterface {\n type: BoomThemeStyleProps.BackgroundImage;\n props: {\n url: string;\n };\n}\ninterface BoomThemeStyleStyleInterface extends BoomThemeStyleInterface {\n type: BoomThemeStyleProps.CustomStyle;\n props: {\n text: string;\n };\n}\ninterface BoomThemeStyleURLInterface extends BoomThemeStyleInterface {\n type: BoomThemeStyleProps.ExternalURL;\n props: {\n url: string;\n };\n}\ninterface BoomThemePanelContainerBGColorInterface extends BoomThemeStyleInterface {\n type: BoomThemeStyleProps.PanelBackground;\n props: {\n color: string;\n };\n}\nexport type BoomThemeStyleType =\n | BoomThemeStyleBaseThemeInterface\n | BoomThemeStyleBgImageInterface\n | BoomThemeStyleStyleInterface\n | BoomThemeStyleURLInterface\n | BoomThemePanelContainerBGColorInterface;\n\nexport class BoomThemeStyle implements BoomThemeStyleInterface {\n type: BoomThemeStyleProps;\n props: any;\n constructor(type: BoomThemeStyleProps, props: any) {\n this.type = type;\n switch (type.toLowerCase()) {\n case BoomThemeStyleProps.BaseTheme:\n this.props = {\n theme: props && props.theme ? props.theme : '',\n };\n break;\n case BoomThemeStyleProps.CustomStyle:\n this.props = {\n text: props && props.text ? props.text : '',\n };\n break;\n case BoomThemeStyleProps.ExternalURL:\n this.props = {\n url: props && props.url ? props.url : '',\n };\n break;\n case BoomThemeStyleProps.BackgroundImage:\n this.props = {\n url: props && props.url ? props.url : '',\n };\n break;\n case CONFIG.THEME_STYLES.PANEL_CONTAINER_BG_COLOR:\n this.props = {\n color: props && props.color ? props.color : '',\n };\n break;\n default:\n this.props = {};\n break;\n }\n }\n}\n","export const CONFIG = {\n BASE_THEMES: {\n DARK: {\n id: 'dark',\n index_id: -2000,\n name: 'Dark Theme',\n },\n DEFAULT: {\n id: 'default',\n index_id: -1000,\n name: 'Default Theme',\n },\n LIGHT: {\n id: 'light',\n index_id: -3000,\n name: 'Light Theme',\n },\n },\n DEFAULT_THEME_BG_IMAGE: `https://images.unsplash.com/photo-1524334228333-0f6db392f8a1`, // Image Credits : https://unsplash.com/photos/fX-qWsXl5x8\n DEFAULT_THEME_NAME: 'New Theme',\n DEFAULT_THEME_STYLE: `.panel-container {\n background-color: rgba(0,0,0,0.3);\n}`,\n FIRST_THEME_NAME: 'Night Theme',\n THEME_STYLES: {\n BASE_THEME: 'basetheme',\n BG_IMAGE: 'bgimage',\n NONE: 'none',\n STYLE: 'style',\n PANEL_CONTAINER_BG_COLOR: 'panel-container-bg-color',\n URL: 'url',\n },\n};\n","import { BoomTheme } from 'BoomTheme';\n\nexport const getThemeCSSFile = function (mode: 'dark' | 'light'): string {\n let fileName = '';\n if (['dark', 'light'].indexOf(mode.toLowerCase()) > -1 && window.performance) {\n let appFiles = window.performance\n .getEntries()\n .map((e) => e.name)\n .filter((e) => e.endsWith('.js'))\n .filter((e) => e.indexOf('/public/build/app.') > -1);\n if (appFiles && appFiles.length > 0) {\n fileName =\n appFiles[0].replace(`/public/build/app.`, `/public/build/grafana.${mode.toLowerCase()}.`).slice(0, -3) + '.css';\n }\n }\n return fileName;\n};\nexport const getActiveThemeName = function (themes: BoomTheme[], index: number): string {\n switch (index) {\n case -1000:\n return 'Grafana Default';\n case -2000:\n return 'Grafana Dark';\n case -3000:\n return 'Grafana Light';\n default:\n return themes[index] && themes[index].name ? themes[index].name : 'Grafana Default';\n }\n};\n","import _ from 'lodash';\nimport { BoomThemeStyle, BoomThemeStyleProps } from './BoomThemeStyle';\nimport { getThemeCSSFile } from './utils';\nimport { CONFIG } from './config';\n\ninterface BoomThemeInterface {\n name: string;\n styles: BoomThemeStyle[];\n}\n\nexport class BoomTheme {\n name: string;\n styles: BoomThemeStyle[];\n constructor(options: BoomThemeInterface) {\n this.name = options.name || CONFIG.DEFAULT_THEME_NAME;\n this.styles =\n options.styles.length === 0\n ? [\n new BoomThemeStyle(BoomThemeStyleProps.BaseTheme, { theme: CONFIG.BASE_THEMES.DEFAULT.id }),\n new BoomThemeStyle(BoomThemeStyleProps.BackgroundImage, { url: '' }),\n new BoomThemeStyle(BoomThemeStyleProps.ExternalURL, { url: '' }),\n new BoomThemeStyle(BoomThemeStyleProps.CustomStyle, { text: `` }),\n ]\n : options.styles;\n }\n addStyle(type: BoomThemeStyleProps): void {\n this.styles.push(new BoomThemeStyle(type, {}));\n }\n deleteStyle(index: number): void {\n this.styles.splice(index, 1);\n }\n private constructTheme(styles: any[]): string {\n let output = ``;\n _.each(styles, (style) => {\n if (style.type === CONFIG.THEME_STYLES.URL) {\n if (style.props && style.props.url !== '') {\n output += `@import url('${style.props.url}');\n `;\n }\n } else if (style.type === CONFIG.THEME_STYLES.BASE_THEME) {\n if (style.props && style.props.theme !== '') {\n if (style.props.theme.toLowerCase() === CONFIG.BASE_THEMES.DARK.id) {\n output += `@import url('${getThemeCSSFile('dark')}');\n `;\n } else if (style.props.theme.toLowerCase() === CONFIG.BASE_THEMES.LIGHT.id) {\n output += `@import url('${getThemeCSSFile('light')}');\n `;\n }\n }\n } else if (style.type === CONFIG.THEME_STYLES.STYLE) {\n if (style.props && style.props.text !== '') {\n output += `${style.props.text || ''}\n `;\n }\n } else if (style.type === CONFIG.THEME_STYLES.BG_IMAGE) {\n if (style.props && style.props.url !== '') {\n output += `\n.main-view, .sidemenu, .sidemenu-open .sidemenu, .navbar, .dashboard-container,.dashboard-container > div {\n background: url(\"${style.props.url}\") no-repeat center center fixed;\n -webkit-background-size: cover;\n -moz-background-size: cover;\n -o-background-size: cover;\n background-size: cover;\n}\n `;\n }\n } else if (style.type === CONFIG.THEME_STYLES.PANEL_CONTAINER_BG_COLOR) {\n if (style.props && style.props.color !== '') {\n output += `\n.panel-container {\n background-color: ${style.props.color}\n}\n`;\n }\n }\n });\n return output;\n }\n getThemeContent(): string {\n let output = '';\n if (this.styles && this.styles.length > 0) {\n output += this.constructTheme(this.styles.filter((style) => style.type === CONFIG.THEME_STYLES.URL));\n output += this.constructTheme(this.styles.filter((style) => style.type === CONFIG.THEME_STYLES.STYLE));\n output += this.constructTheme(\n this.styles.filter(\n (style) => style.type !== CONFIG.THEME_STYLES.URL && style.type !== CONFIG.THEME_STYLES.STYLE\n )\n );\n }\n return output;\n }\n}\n","import React from 'react';\nimport { BoomTheme } from 'BoomTheme';\n\ninterface ThemePickerProps {\n themes: BoomTheme[];\n onChange: (activeTheme: string) => void;\n}\n\nexport const ThemePicker = (props: ThemePickerProps) => {\n const onViewChange = (themeName: string) => {\n props.onChange(themeName);\n };\n const style: React.CSSProperties = { textAlign: 'center' };\n return (\n

\n
\n {props.themes\n .map((theme) => theme.name)\n .concat(['Grafana Dark', 'Grafana Light'])\n .map((themeName, index: number) => {\n return (\n onViewChange(themeName)}\n key={index}\n >\n {themeName}\n \n );\n })}\n
\n );\n};\n","import React, { useState } from 'react';\nimport { SelectableValue } from '@grafana/data';\nimport { Modal, Label, Input, TextArea, RadioButtonGroup, ColorPicker } from '@grafana/ui';\nimport { BoomTheme } from '../BoomTheme';\nimport { BoomThemeStyle, BoomThemeStyleProps } from 'BoomThemeStyle';\n\ninterface EditorProps {\n value: BoomTheme;\n onChange: (value: BoomTheme) => void;\n}\n\nexport const ThemeEditor = ({ value, onChange }: EditorProps) => {\n const [editorVisibility, setEditorVisibility] = useState(false);\n\n const addStyle = (styleType: BoomThemeStyleProps) => {\n let theme = value;\n theme.styles = theme.styles || [];\n theme.styles.push(new BoomThemeStyle(styleType, null));\n onChange(theme);\n };\n\n const onTitleChange = (title: string) => {\n let theme = value;\n theme.name = title;\n onChange(theme);\n };\n\n const onStylePropertyChange = (index: number, propertyName: string, replaceValue: unknown) => {\n let theme = value;\n theme.styles[index].props = theme.styles[index].props || {};\n theme.styles[index].props[propertyName] = replaceValue;\n onChange(theme);\n };\n const defaultThemes: SelectableValue[] = [\n { value: 'default', label: 'Default' },\n { value: 'dark', label: 'Dark' },\n { value: 'light', label: 'light' },\n ];\n return (\n <>\n \n {value.name}\n \n\n setEditorVisibility(true)}>\n\n setEditorVisibility(false)} title={`Edit ${value.name}`}>\n \n onTitleChange(e.currentTarget.value)}>\n
\n {value.styles.map((style, index: number) => {\n switch (style.type) {\n case BoomThemeStyleProps.BaseTheme:\n const baseTheme: SelectableValue = defaultThemes.find((t) => t.value === style.props.theme) || {\n label: 'Default',\n value: 'default',\n };\n return (\n <>\n \n {\n onStylePropertyChange(index, 'theme', e);\n }}\n >\n
\n \n );\n case BoomThemeStyleProps.BackgroundImage:\n return (\n <>\n \n {\n onStylePropertyChange(index, 'url', e.currentTarget.value);\n }}\n >\n
\n \n );\n case BoomThemeStyleProps.ExternalURL:\n return (\n <>\n \n {\n onStylePropertyChange(index, 'url', e.currentTarget.value);\n }}\n >\n
\n \n );\n case BoomThemeStyleProps.CustomStyle:\n return (\n <>\n \n {\n onStylePropertyChange(index, 'text', e.currentTarget.value);\n }}\n >\n
\n \n );\n case BoomThemeStyleProps.PanelBackground:\n return (\n <>\n \n {\n onStylePropertyChange(index, 'color', e.currentTarget.value);\n }}\n prefix={\n
\n {\n onStylePropertyChange(index, 'color', e);\n }}\n />\n
\n }\n >\n
\n \n );\n case 'url':\n return (\n <>\n \n {\n onStylePropertyChange(index, 'url', e.currentTarget.value);\n }}\n >\n
\n \n );\n case 'none':\n default:\n return <>;\n }\n })}\n
\n
\n {value.styles.filter((s) => s.type === BoomThemeStyleProps.ExternalURL).length < 1 && (\n <>\n \n   \n \n )}\n {value.styles.filter((s) => s.type === BoomThemeStyleProps.CustomStyle).length < 1 && (\n <>\n \n   \n \n )}\n {value.styles.filter((s) => s.type === BoomThemeStyleProps.BackgroundImage).length < 1 && (\n <>\n \n   \n \n )}\n {value.styles.filter((s) => s.type === BoomThemeStyleProps.PanelBackground).length < 1 && (\n <>\n \n   \n \n )}\n
\n
\n \n
\n
\n \n );\n};\n","import React from 'react';\nimport { PanelOptionsEditorItem } from '@grafana/data';\nimport { BoomTheme } from './../BoomTheme';\nimport { ThemeEditor } from './ThemeEditor';\n\ninterface EditorProps {\n value: BoomTheme[];\n onChange: (value: BoomTheme[]) => void;\n}\n\nconst Editor = ({ value, onChange }: EditorProps) => {\n const addTheme = () => {\n let themes: BoomTheme[] = value || [];\n let newTheme: BoomTheme = new BoomTheme({\n name: `New Theme ${themes.length + 1}`,\n styles: [],\n });\n themes.push(newTheme);\n onChange(themes);\n };\n const deleteTheme = (index: number) => {\n let themes: BoomTheme[] = value || [];\n themes.splice(index, 1);\n onChange(themes);\n };\n const onThemeChange = (theme: BoomTheme, index: number) => {\n let themes = value || [];\n themes[index] = theme;\n onChange(themes);\n };\n return (\n <>\n {value.map((theme, index) => (\n
\n
\n {\n onThemeChange(updatedTheme, index);\n }}\n />\n deleteTheme(index)}\n >\n
\n ))}\n
\n
\n \n
\n \n );\n};\n\nexport const ThemesEditorOptions: PanelOptionsEditorItem = {\n id: 'themes',\n name: 'Themes',\n path: 'themes',\n category: ['Themes'],\n editor: Editor,\n};\n","import { PanelPlugin, PanelModel } from '@grafana/data';\nimport { Panel, PanelOptions } from './Panel';\nimport { ThemesEditorOptions } from './editors/ThemesEditor';\nimport { getActiveThemeName } from './utils';\n\nexport const plugin = new PanelPlugin(Panel)\n .setPanelOptions((builder) => {\n builder.addCustomEditor(ThemesEditorOptions);\n builder.addBooleanSwitch({\n name: 'Hide Theme Picker',\n path: 'disableThemePicker',\n category: ['Themes Options'],\n });\n builder.addTextInput({\n name: 'Default Theme',\n path: 'activeTheme',\n category: ['Themes Options'],\n });\n return builder;\n })\n .setMigrationHandler((panel: PanelModel & Record) => {\n const newOptions = {\n disableThemePicker: panel.options.disableThemePicker ?? panel.disableThemePicker,\n activeTheme: panel.options.activeTheme ?? getActiveThemeName(panel.themes, panel.activeThemeId),\n themes: panel.options.themes ?? panel.themes,\n };\n delete panel.themes;\n delete panel.activeThemeId;\n delete panel.disableThemePicker;\n return newOptions;\n });\n","import React, { useState } from 'react';\nimport { PanelData, PanelProps } from '@grafana/data';\nimport { Style } from 'react-style-tag';\nimport { BoomTheme } from './BoomTheme';\nimport { ThemePicker } from './editors/ThemePicker';\nimport { getThemeCSSFile } from './utils';\n\nexport interface PanelOptions {\n disableThemePicker: boolean;\n activeTheme: string;\n themes: BoomTheme[];\n}\n\ninterface Props extends PanelProps {\n options: PanelOptions;\n data: PanelData;\n width: number;\n height: number;\n onOptionsChange: (options: PanelOptions) => void;\n}\n\nexport const Panel = ({ options }: Props) => {\n const [runTimeThemeState, setRunTimeThemeState] = useState(false);\n const [runTimeTheme, setRunTimeTheme] = useState('');\n\n const onRuntimeThemeChange = (themeName: string) => {\n setRunTimeThemeState(true);\n setRunTimeTheme(themeName);\n };\n\n let output = '';\n\n options.themes.forEach((themeOptions: BoomTheme, index) => {\n const theme = new BoomTheme(themeOptions);\n if (runTimeThemeState) {\n if (runTimeTheme === theme.name) {\n output += theme.getThemeContent();\n } else if (runTimeTheme === 'Grafana Dark') {\n output = `@import url('${getThemeCSSFile('dark')}');\n `;\n } else if (runTimeTheme === 'Grafana Light') {\n output = `@import url('${getThemeCSSFile('light')}');\n `;\n }\n } else {\n if (options.activeTheme === 'Grafana Dark') {\n output = `@import url('${getThemeCSSFile('dark')}');\n `;\n } else if (options.activeTheme === 'Grafana Light') {\n output = `@import url('${getThemeCSSFile('light')}');\n `;\n } else if (options.activeTheme === theme.name) {\n output += theme.getThemeContent();\n }\n }\n });\n\n return (\n <>\n \n {options.disableThemePicker ? <> : }\n \n );\n};\n"],"sourceRoot":""} \ No newline at end of file diff --git a/dist/plugin.json b/dist/plugin.json new file mode 100644 index 0000000..3fa059c --- /dev/null +++ b/dist/plugin.json @@ -0,0 +1,32 @@ +{ + "$schema": "https://raw.githubusercontent.com/grafana/grafana/v7.5.1/docs/sources/developers/plugins/plugin.schema.json", + "type": "panel", + "name": "Boom Theme", + "id": "yesoreyeram-boomtheme-panel", + "skipDataQuery": true, + "info": { + "version": "0.2.0-alpha.6", + "updated": "2021-11-29", + "description": "Themes for Grafana", + "author": { + "name": "Sriramajeyam Sugumaran", + "url": "https://www.google.com/search?q=Sriramajeyam+Sugumaran" + }, + "keywords": ["grafana", "plugin", "panel", "themes"], + "logos": { + "small": "img/logo.png", + "large": "img/logo.png" + }, + "links": [ + { + "name": "Github", + "url": "https://github.com/yesoreyeram/yesoreyeram-boomtheme-panel" + } + ] + }, + "dependencies": { + "grafanaDependency": ">7.5.0", + "grafanaVersion": "7.5.x", + "plugins": [] + } +}