/**
*
*/
package xapi.elemental.api;
import elemental.dom.Element;
import elemental.html.StyleElement;
import xapi.source.api.Lexer;
import xapi.ui.api.StyleService;
import xapi.util.api.ConvertsValue;
import com.google.gwt.core.client.MagicMethod;
import com.google.gwt.resources.client.ClientBundle;
import com.google.gwt.resources.client.CssResource;
/**
* @author "James X. Nelson (james@wetheinter.net)"
*
*/
public interface ElementalService extends StyleService<ElementalService> {
String METHOD_ENHANCE_MARKUP = "enhanceMarkup";
String METHOD_TO_ELEMENT = "toElement";
String METHOD_TO_ELEMENT_BUILDER = "toElementBuilder";
<E extends Element> ConvertsValue<E, E> asConverter();
String enhanceMarkup(String markup);
<E extends Element> E initialize(E element);
<E extends Element> PotentialNode<E> newNode();
<E extends Element> PotentialNode<E> newNode(E node);
<E extends Element> PotentialNode<E> newNode(String tagName);
void setLexer(Lexer lexer);
@MagicMethod(doNotVisit=true)
<T, E extends Element> E toElement(Class<? super T> cls, Class<?> template, T obj);
@MagicMethod(doNotVisit=true)
<T, E extends Element> E toElement(Class<? super T> cls, T obj);
@MagicMethod(doNotVisit=true)
<T, E extends Element> ConvertsValue<T, PotentialNode<E>> toElementBuilder(Class<? super T> cls);
@MagicMethod(doNotVisit=true)
<T, E extends Element> ConvertsValue<T, PotentialNode<E>> toElementBuilder(Class<? super T> cls, Class<?> template);
Element getShadowRoot(Element element);
String escapeHTML(String html);
String unescapeHTML(String html);
StyleElement injectStyle(Class<? extends ClientBundle> bundle, Class<? extends CssResource> ... styles);
ElementalService registerStyle(Class<? extends ClientBundle> bundle, String css, Class<? extends CssResource> ... styles);
}