// Path: src/main/java/org/primefaces/material/MaterialWidgetBuilder.java
// public class MaterialWidgetBuilder extends WidgetBuilder {
// 
// 	private static final String KEY = MaterialWidgetBuilder.class.getName();
// 
// 	public static MaterialWidgetBuilder getInstance(final FacesContext context) {
// 
// 		MaterialWidgetBuilder wb = (MaterialWidgetBuilder) context.getExternalContext().getRequestMap().get(KEY);
// 
// 		if (wb == null) {
// 			wb = new MaterialWidgetBuilder(context);
// 
// 			context.getExternalContext().getRequestMap().put(KEY, wb);
// 		}
// 
// 		return wb;
// 	}
//     
//     public MaterialWidgetBuilder(FacesContext context) {
//         super(context);
//     }
// 
//     protected WidgetBuilder init(String widgetClass, String widgetVar, String id, boolean endFunction) throws IOException {
//     	this.endFunction = endFunction;
// 
//         context.getResponseWriter().write("MaterialPrime.cw(\"");
//         context.getResponseWriter().write(widgetClass);
//         context.getResponseWriter().write("\",\"");
//         context.getResponseWriter().write(widgetVar);
//         context.getResponseWriter().write("\",{");
//         context.getResponseWriter().write("id:\"");
//         context.getResponseWriter().write(id);
//         if (widgetVar == null) {
//         	context.getResponseWriter().write("\"");
//         } else {
// 	        context.getResponseWriter().write("\",widgetVar:\"");
// 	        context.getResponseWriter().write(widgetVar);
// 	        context.getResponseWriter().write("\"");
//         }
// 
//         return this;
//     }
// }


import java.io.IOException;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.context.ResponseWriter;
import javax.faces.convert.ConverterException;
import org.primefaces.material.MaterialWidgetBuilder;
import org.primefaces.renderkit.CoreRenderer;
import org.primefaces.util.ComponentUtils;
import org.primefaces.util.WidgetBuilder;
		writer.startElement("div", toggle);
			writer.writeAttribute("id", toggle.getClientId(), null);
			writer.writeAttribute("class", "switch", null);
			writer.startElement("label", null);
				writer.startElement("input", null);
					writer.writeAttribute("id", inputId, null);
					writer.writeAttribute("name", inputId, null);
					if(toggle.getTabindex() != null){
			        	writer.writeAttribute("tabindex", toggle.getTabindex(), null);
			        }
					if(toggle.isDisabled()){
						writer.writeAttribute("disabled", toggle.isDisabled(), null);
					}
					writer.writeAttribute("type", "checkbox", null);
					writer.writeAttribute("checked",  checked, null);
				writer.endElement("input");
				writer.startElement("span", null);
					writer.writeAttribute("class", "lever", null);
				writer.endElement("span");
				if(toggle.getItemLabel() != null){
					writer.write(toggle.getItemLabel());
				}
			writer.endElement("label");	
		writer.endElement("div");
	}
	
	private void encodeScript(FacesContext context, Toggle toggle) throws IOException {
		String clientId = toggle.getClientId();
		String widgetVar = toggle.resolveWidgetVar();
		 
// Path: src/main/java/org/primefaces/material/MaterialWidgetBuilder.java
// public class MaterialWidgetBuilder extends WidgetBuilder {
// 
// 	private static final String KEY = MaterialWidgetBuilder.class.getName();
// 
// 	public static MaterialWidgetBuilder getInstance(final FacesContext context) {
// 
// 		MaterialWidgetBuilder wb = (MaterialWidgetBuilder) context.getExternalContext().getRequestMap().get(KEY);
// 
// 		if (wb == null) {
// 			wb = new MaterialWidgetBuilder(context);
// 
// 			context.getExternalContext().getRequestMap().put(KEY, wb);
// 		}
// 
// 		return wb;
// 	}
//     
//     public MaterialWidgetBuilder(FacesContext context) {
//         super(context);
//     }
// 
//     protected WidgetBuilder init(String widgetClass, String widgetVar, String id, boolean endFunction) throws IOException {
//     	this.endFunction = endFunction;
// 
//         context.getResponseWriter().write("MaterialPrime.cw(\"");
//         context.getResponseWriter().write(widgetClass);
//         context.getResponseWriter().write("\",\"");
//         context.getResponseWriter().write(widgetVar);
//         context.getResponseWriter().write("\",{");
//         context.getResponseWriter().write("id:\"");
//         context.getResponseWriter().write(id);
//         if (widgetVar == null) {
//         	context.getResponseWriter().write("\"");
//         } else {
// 	        context.getResponseWriter().write("\",widgetVar:\"");
// 	        context.getResponseWriter().write(widgetVar);
// 	        context.getResponseWriter().write("\"");
//         }
// 
//         return this;
//     }
// }


// Path: src/main/java/org/primefaces/material/component/toggle/ToggleRenderer.java
import java.io.IOException;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.context.ResponseWriter;
import javax.faces.convert.ConverterException;
import org.primefaces.material.MaterialWidgetBuilder;
import org.primefaces.renderkit.CoreRenderer;
import org.primefaces.util.ComponentUtils;
import org.primefaces.util.WidgetBuilder;

		writer.startElement("div", toggle);
			writer.writeAttribute("id", toggle.getClientId(), null);
			writer.writeAttribute("class", "switch", null);
			writer.startElement("label", null);
				writer.startElement("input", null);
					writer.writeAttribute("id", inputId, null);
					writer.writeAttribute("name", inputId, null);
					if(toggle.getTabindex() != null){
			        	writer.writeAttribute("tabindex", toggle.getTabindex(), null);
			        }
					if(toggle.isDisabled()){
						writer.writeAttribute("disabled", toggle.isDisabled(), null);
					}
					writer.writeAttribute("type", "checkbox", null);
					writer.writeAttribute("checked",  checked, null);
				writer.endElement("input");
				writer.startElement("span", null);
					writer.writeAttribute("class", "lever", null);
				writer.endElement("span");
				if(toggle.getItemLabel() != null){
					writer.write(toggle.getItemLabel());
				}
			writer.endElement("label");	
		writer.endElement("div");
	}
	
	private void encodeScript(FacesContext context, Toggle toggle) throws IOException {
		String clientId = toggle.getClientId();
		String widgetVar = toggle.resolveWidgetVar();
		 
		WidgetBuilder wb = MaterialWidgetBuilder.getInstance(context);