{"code":"import * as VNode from 'virtual-dom/vnode/vnode';\r\nimport * as VText from 'virtual-dom/vnode/vtext';\r\n// tslint:disable:no-increment-decrement\r\n// CREDIT: adopted from https://raw.githubusercontent.com/marcelklehr/vdom-virtualize/master/index.js\r\nexport function createVNode(domNode, deep) {\r\n    if (deep === void 0) { deep = false; }\r\n    if (domNode.nodeType === 1)\r\n        return createFromElement(domNode, deep);\r\n    if (domNode.nodeType === 3)\r\n        return createFromTextNode(domNode);\r\n    return;\r\n}\r\nfunction createFromTextNode(tNode) {\r\n    return new VText(tNode.nodeValue);\r\n}\r\nfunction createFromElement(el, deep) {\r\n    if (deep === void 0) { deep = false; }\r\n    var tagName = el.tagName;\r\n    var namespace = el.namespaceURI === 'http://www.w3.org/1999/xhtml' ? null : el.namespaceURI;\r\n    var properties = getElementProperties(el);\r\n    var children = [];\r\n    if (deep) {\r\n        for (var i = 0; i < el.childNodes.length; i++) {\r\n            children.push(createVNode(el.childNodes[i]));\r\n        }\r\n    }\r\n    return new VNode(tagName, properties, children, null, namespace);\r\n}\r\nfunction getElementProperties(el) {\r\n    var obj = {};\r\n    for (var i = 0; i < props.length; i++) {\r\n        var propName = props[i];\r\n        if (!el[propName]) {\r\n            continue;\r\n        }\r\n        if (propName === 'style') {\r\n            var css = {};\r\n            if ('undefined' !== typeof el.style.length) {\r\n                for (var j = 0; j < el.style.length; j++) {\r\n                    var styleProp = el.style[j];\r\n                    css[styleProp] = el.style.getPropertyValue(styleProp); // TODO: add support for \"!important\" via getPropertyPriority()!\r\n                }\r\n            }\r\n            if (Object.keys(css).length) {\r\n                obj[propName] = css;\r\n            }\r\n            continue;\r\n        }\r\n        // https://msdn.microsoft.com/en-us/library/cc848861%28v=vs.85%29.aspx\r\n        // The img element does not support the HREF content attribute.\r\n        // In addition, the href property is read-only for the img Document Object Model (DOM) object\r\n        if (el.tagName.toLowerCase() === 'img' && propName === 'href') {\r\n            continue;\r\n        }\r\n        if (propName === 'attributes') {\r\n            var atts = Array.prototype.slice.call(el[propName]);\r\n            var hash = {};\r\n            for (var k = 0; k < atts.length; k++) {\r\n                var name_1 = atts[k].name;\r\n                if (obj[name_1] || obj[attrBlacklist[name_1]]) {\r\n                    continue;\r\n                }\r\n                hash[name_1] = el.getAttribute(name_1);\r\n            }\r\n            obj[propName] = hash;\r\n            continue;\r\n        }\r\n        if (propName === 'tabIndex' && el.tabIndex === -1) {\r\n            continue;\r\n        }\r\n        // Special case: contentEditable\r\n        // browser use 'inherit' by default on all nodes, but does not allow setting it to ''\r\n        // diffing virtualize dom will trigger error\r\n        // ref: https://github.com/Matt-Esch/virtual-dom/issues/176\r\n        if (propName === 'contentEditable' && el[propName] === 'inherit') {\r\n            continue;\r\n        }\r\n        if ('object' === typeof el[propName]) {\r\n            continue;\r\n        }\r\n        // default: just copy the property\r\n        obj[propName] = el[propName];\r\n    }\r\n    return obj;\r\n}\r\n/**\r\n * DOMNode property white list\r\n * Taken from https://github.com/Raynos/react/blob/dom-property-config/src/browser/ui/dom/DefaultDOMPropertyConfig.js\r\n */\r\nexport var props = [\r\n    'accept',\r\n    'accessKey',\r\n    'action',\r\n    'alt',\r\n    'async',\r\n    'autoComplete',\r\n    'autoPlay',\r\n    'cellPadding',\r\n    'cellSpacing',\r\n    'checked',\r\n    'className',\r\n    'colSpan',\r\n    'content',\r\n    'contentEditable',\r\n    'controls',\r\n    'crossOrigin',\r\n    'data',\r\n    'defer',\r\n    'dir',\r\n    'download',\r\n    'draggable',\r\n    'encType',\r\n    'formNoValidate',\r\n    'href',\r\n    'hrefLang',\r\n    'htmlFor',\r\n    'httpEquiv',\r\n    'icon',\r\n    'id',\r\n    'label',\r\n    'lang',\r\n    'list',\r\n    'loop',\r\n    'max',\r\n    'mediaGroup',\r\n    'method',\r\n    'min',\r\n    'multiple',\r\n    'muted',\r\n    'name',\r\n    'noValidate',\r\n    'pattern',\r\n    'placeholder',\r\n    'poster',\r\n    'preload',\r\n    'radioGroup',\r\n    'readOnly',\r\n    'rel',\r\n    'required',\r\n    'rowSpan',\r\n    'sandbox',\r\n    'scope',\r\n    'scrollLeft',\r\n    'scrolling',\r\n    'scrollTop',\r\n    'selected',\r\n    'span',\r\n    'spellCheck',\r\n    'src',\r\n    'srcDoc',\r\n    'srcSet',\r\n    'start',\r\n    'step',\r\n    'style',\r\n    'tabIndex',\r\n    'target',\r\n    'title',\r\n    'type',\r\n    'value',\r\n    // Non-standard Properties\r\n    'autoCapitalize',\r\n    'autoCorrect',\r\n    'property',\r\n    'attributes',\r\n];\r\nexport var attrBlacklist = {\r\n    class: 'className',\r\n};\r\n","dts":{"name":"/Users/steve/Projects/bridge/builder/clients/js/clients/js/src/functions/dom-to-vdom.function.d.ts","text":"/// <reference types=\"virtual-dom\" />\r\nexport declare function createVNode(domNode: Node, deep?: boolean): VirtualDOM.VNode | VirtualDOM.VText | undefined;\r\n/**\r\n * DOMNode property white list\r\n * Taken from https://github.com/Raynos/react/blob/dom-property-config/src/browser/ui/dom/DefaultDOMPropertyConfig.js\r\n */\r\nexport declare const props: string[];\r\nexport declare const attrBlacklist: {\r\n    [key: string]: string;\r\n};\r\n"}}
