| function isElement(obj) { | |||||
| try { | |||||
| // Using W3 DOM2 (works for FF, Opera and Chrome) | |||||
| return obj instanceof HTMLElement; | |||||
| } catch(e) { | |||||
| //Browsers not supporting W3 DOM2 don't have HTMLElement and | |||||
| //an exception is thrown and we end up here. Testing some | |||||
| //properties that all elements have (works on IE7) | |||||
| return (typeof obj==="object") && | |||||
| (obj.nodeType===1) && (typeof obj.style === "object") && | |||||
| (typeof obj.ownerDocument ==="object"); | |||||
| } | |||||
| } | |||||
| function appendCTX(el, ctx){ | |||||
| if (isElement(ctx)){ | |||||
| el.appendChild(ctx); | |||||
| } else { | |||||
| var t = document.createTextNode(ctx.toString()); | |||||
| el.appendChild(t); | |||||
| } | |||||
| } | |||||
| export function el(ename, ctx, cls, attr){ | |||||
| var e = document.createElement(ename); | |||||
| if (ctx){ | |||||
| if (ctx instanceof Array){ | |||||
| ctx.forEach(item => appendCTX(el, item)); | |||||
| } else { | |||||
| appendCTX(el, ctx); | |||||
| } | |||||
| } | |||||
| if (cls){ | |||||
| var cl = cls; | |||||
| if (typeof(cl) === "String") | |||||
| cl = cl.split(" "); | |||||
| if (cl instanceof Array){ | |||||
| cl.forEach(c => el.classList.add(c.trim())); | |||||
| } | |||||
| } | |||||
| if (attr){ | |||||
| var keys = Object.keys(attr); | |||||
| keys.forEach(function(key){ | |||||
| if (attr.hasOwnProperty(key)){ | |||||
| var att = document.createAttribute(key.toString()); | |||||
| if (typeof(attr[key]) === "String"){ | |||||
| att.value = attr[key]; | |||||
| el.setAttributeNode(att); | |||||
| } | |||||
| } | |||||
| }); | |||||
| } | |||||
| } | |||||
| export const header = el.bind(null, "header"); | |||||
| export const title = el.bind(null, "title"); | |||||
| export const script = el.bind(null, "script"); | |||||
| export const link = el.bind(null, "link"); | |||||
| export const meta = el.bind(null, "meta"); | |||||
| export const div = el.bind(null, "div"); | |||||
| export const span = el.bind(null, "span"); | |||||
| export const a = el.bind(null, "a"); | |||||
| export const p = el.bind(null, "p"); | |||||
| export const b = el.bind(null, "b"); | |||||
| export const i = el.bind(null, "i"); | |||||
| export const br = el.bind(null, "br"); | |||||
| export const ol = el.bind(null, "ol"); | |||||
| export const ul = el.bind(null, "ul"); | |||||
| export const li = el.bind(null, "li"); | |||||
| export const em = el.bind(null, "em"); | |||||
| export const font = el.bind(null, "font"); | |||||
| export const h1 = el.bind(null, "h1"); | |||||
| export const h2 = el.bind(null, "h2"); | |||||
| export const h3 = el.bind(null, "h3"); | |||||
| export const h4 = el.bind(null, "h4"); | |||||
| export const h5 = el.bind(null, "h5"); | |||||
| export const h6 = el.bind(null, "h6"); | |||||
| export const hr = el.bind(null, "hr"); | |||||
| export const blockquote = el.bind(null, "blockquote"); | |||||
| export const button = el.bind(null, "button"); | |||||
| export const nav = el.bind(null, "nav"); | |||||
| export const canvas = el.bind(null, "canvas"); | |||||
| export const caption = el.bind(null, "caption"); | |||||