{"version":3,"file":"jsx.module.js","sources":["../src/polyfills.js","../src/util.js","../src/index.js","../node_modules/pretty-format/printString.js","../node_modules/pretty-format/index.js","../src/jsx.js"],"sourcesContent":["if (typeof Symbol !== 'function') {\n\tlet c = 0;\n\t// eslint-disable-next-line\n\tSymbol = function (s) {\n\t\treturn `@@${s}${++c}`;\n\t};\n\tSymbol.for = (s) => `@@${s}`;\n}\n","// DOM properties that should NOT have \"px\" added when numeric\nexport const IS_NON_DIMENSIONAL = /acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|^--/i;\n\nconst ENCODED_ENTITIES = /[&<>\"]/;\n\nexport function encodeEntities(input) {\n\tconst s = String(input);\n\tif (!ENCODED_ENTITIES.test(s)) {\n\t\treturn s;\n\t}\n\treturn s\n\t\t.replace(/&/g, '&')\n\t\t.replace(//g, '>')\n\t\t.replace(/\"/g, '"');\n}\n\nexport let indent = (s, char) =>\n\tString(s).replace(/(\\n+)/g, '$1' + (char || '\\t'));\n\nexport let isLargeString = (s, length, ignoreLines) =>\n\tString(s).length > (length || 40) ||\n\t(!ignoreLines && String(s).indexOf('\\n') !== -1) ||\n\tString(s).indexOf('<') !== -1;\n\nconst JS_TO_CSS = {};\n\n// Convert an Object style to a CSSText string\nexport function styleObjToCss(s) {\n\tlet str = '';\n\tfor (let prop in s) {\n\t\tlet val = s[prop];\n\t\tif (val != null && val !== '') {\n\t\t\tif (str) str += ' ';\n\t\t\t// str += jsToCss(prop);\n\t\t\tstr +=\n\t\t\t\tprop[0] == '-'\n\t\t\t\t\t? prop\n\t\t\t\t\t: JS_TO_CSS[prop] ||\n\t\t\t\t\t (JS_TO_CSS[prop] = prop.replace(/([A-Z])/g, '-$1').toLowerCase());\n\t\t\tstr += ': ';\n\t\t\tstr += val;\n\t\t\tif (typeof val === 'number' && IS_NON_DIMENSIONAL.test(prop) === false) {\n\t\t\t\tstr += 'px';\n\t\t\t}\n\t\t\tstr += ';';\n\t\t}\n\t}\n\treturn str || undefined;\n}\n\n/**\n * Copy all properties from `props` onto `obj`.\n * @param {object} obj Object onto which properties should be copied.\n * @param {object} props Object from which to copy properties.\n * @returns {object}\n * @private\n */\nexport function assign(obj, props) {\n\tfor (let i in props) obj[i] = props[i];\n\treturn obj;\n}\n\n/**\n * Get flattened children from the children prop\n * @param {Array} accumulator\n * @param {any} children A `props.children` opaque object.\n * @returns {Array} accumulator\n * @private\n */\nexport function getChildren(accumulator, children) {\n\tif (Array.isArray(children)) {\n\t\tchildren.reduce(getChildren, accumulator);\n\t} else if (children != null && children !== false) {\n\t\taccumulator.push(children);\n\t}\n\treturn accumulator;\n}\n","import {\n\tencodeEntities,\n\tindent,\n\tisLargeString,\n\tstyleObjToCss,\n\tassign,\n\tgetChildren\n} from './util';\nimport { options, Fragment } from 'preact';\n\n/** @typedef {import('preact').VNode} VNode */\n\nconst SHALLOW = { shallow: true };\n\n// components without names, kept as a hash for later comparison to return consistent UnnamedComponentXX names.\nconst UNNAMED = [];\n\nconst VOID_ELEMENTS =\n\t/^(area|base|br|col|embed|hr|img|input|link|meta|param|source|track|wbr)$/;\n\nconst UNSAFE_NAME = /[\\s\\n\\\\/='\"\\0<>]/;\n\nconst noop = () => {};\n\n/** Render Preact JSX + Components to an HTML string.\n *\t@name render\n *\t@function\n *\t@param {VNode} vnode\tJSX VNode to render.\n *\t@param {Object} [context={}]\tOptionally pass an initial context object through the render path.\n *\t@param {Object} [options={}]\tRendering options\n *\t@param {Boolean} [options.shallow=false]\tIf `true`, renders nested Components as HTML elements (``).\n *\t@param {Boolean} [options.xml=false]\t\tIf `true`, uses self-closing tags for elements without children.\n *\t@param {Boolean} [options.pretty=false]\t\tIf `true`, adds whitespace for readability\n *\t@param {RegExp|undefined} [options.voidElements] RegeEx that matches elements that are considered void (self-closing)\n */\nrenderToString.render = renderToString;\n\n/** Only render elements, leaving Components inline as ``.\n *\tThis method is just a convenience alias for `render(vnode, context, { shallow:true })`\n *\t@name shallow\n *\t@function\n *\t@param {VNode} vnode\tJSX VNode to render.\n *\t@param {Object} [context={}]\tOptionally pass an initial context object through the render path.\n */\nlet shallowRender = (vnode, context) => renderToString(vnode, context, SHALLOW);\n\nconst EMPTY_ARR = [];\nfunction renderToString(vnode, context, opts) {\n\tcontext = context || {};\n\topts = opts || {};\n\n\t// Performance optimization: `renderToString` is synchronous and we\n\t// therefore don't execute any effects. To do that we pass an empty\n\t// array to `options._commit` (`__c`). But we can go one step further\n\t// and avoid a lot of dirty checks and allocations by setting\n\t// `options._skipEffects` (`__s`) too.\n\tconst previousSkipEffects = options.__s;\n\toptions.__s = true;\n\n\tconst res = _renderToString(vnode, context, opts);\n\n\t// options._commit, we don't schedule any effects in this library right now,\n\t// so we can pass an empty queue to this hook.\n\tif (options.__c) options.__c(vnode, EMPTY_ARR);\n\tEMPTY_ARR.length = 0;\n\toptions.__s = previousSkipEffects;\n\treturn res;\n}\n\n/** The default export is an alias of `render()`. */\nfunction _renderToString(vnode, context, opts, inner, isSvgMode, selectValue) {\n\tif (vnode == null || typeof vnode === 'boolean') {\n\t\treturn '';\n\t}\n\n\t// #text nodes\n\tif (typeof vnode !== 'object') {\n\t\treturn encodeEntities(vnode);\n\t}\n\n\tlet pretty = opts.pretty,\n\t\tindentChar = pretty && typeof pretty === 'string' ? pretty : '\\t';\n\n\tif (Array.isArray(vnode)) {\n\t\tlet rendered = '';\n\t\tfor (let i = 0; i < vnode.length; i++) {\n\t\t\tif (pretty && i > 0) rendered += '\\n';\n\t\t\trendered += _renderToString(\n\t\t\t\tvnode[i],\n\t\t\t\tcontext,\n\t\t\t\topts,\n\t\t\t\tinner,\n\t\t\t\tisSvgMode,\n\t\t\t\tselectValue\n\t\t\t);\n\t\t}\n\t\treturn rendered;\n\t}\n\n\tlet nodeName = vnode.type,\n\t\tprops = vnode.props,\n\t\tisComponent = false;\n\n\t// components\n\tif (typeof nodeName === 'function') {\n\t\tisComponent = true;\n\t\tif (opts.shallow && (inner || opts.renderRootComponent === false)) {\n\t\t\tnodeName = getComponentName(nodeName);\n\t\t} else if (nodeName === Fragment) {\n\t\t\tconst children = [];\n\t\t\tgetChildren(children, vnode.props.children);\n\t\t\treturn _renderToString(\n\t\t\t\tchildren,\n\t\t\t\tcontext,\n\t\t\t\topts,\n\t\t\t\topts.shallowHighOrder !== false,\n\t\t\t\tisSvgMode,\n\t\t\t\tselectValue\n\t\t\t);\n\t\t} else {\n\t\t\tlet rendered;\n\n\t\t\tlet c = (vnode.__c = {\n\t\t\t\t__v: vnode,\n\t\t\t\tcontext,\n\t\t\t\tprops: vnode.props,\n\t\t\t\t// silently drop state updates\n\t\t\t\tsetState: noop,\n\t\t\t\tforceUpdate: noop,\n\t\t\t\t// hooks\n\t\t\t\t__h: []\n\t\t\t});\n\n\t\t\t// options._diff\n\t\t\tif (options.__b) options.__b(vnode);\n\n\t\t\t// options._render\n\t\t\tif (options.__r) options.__r(vnode);\n\n\t\t\tif (\n\t\t\t\t!nodeName.prototype ||\n\t\t\t\ttypeof nodeName.prototype.render !== 'function'\n\t\t\t) {\n\t\t\t\t// Necessary for createContext api. Setting this property will pass\n\t\t\t\t// the context value as `this.context` just for this component.\n\t\t\t\tlet cxType = nodeName.contextType;\n\t\t\t\tlet provider = cxType && context[cxType.__c];\n\t\t\t\tlet cctx =\n\t\t\t\t\tcxType != null\n\t\t\t\t\t\t? provider\n\t\t\t\t\t\t\t? provider.props.value\n\t\t\t\t\t\t\t: cxType.__\n\t\t\t\t\t\t: context;\n\n\t\t\t\t// stateless functional components\n\t\t\t\trendered = nodeName.call(vnode.__c, props, cctx);\n\t\t\t} else {\n\t\t\t\t// class-based components\n\t\t\t\tlet cxType = nodeName.contextType;\n\t\t\t\tlet provider = cxType && context[cxType.__c];\n\t\t\t\tlet cctx =\n\t\t\t\t\tcxType != null\n\t\t\t\t\t\t? provider\n\t\t\t\t\t\t\t? provider.props.value\n\t\t\t\t\t\t\t: cxType.__\n\t\t\t\t\t\t: context;\n\n\t\t\t\t// c = new nodeName(props, context);\n\t\t\t\tc = vnode.__c = new nodeName(props, cctx);\n\t\t\t\tc.__v = vnode;\n\t\t\t\t// turn off stateful re-rendering:\n\t\t\t\tc._dirty = c.__d = true;\n\t\t\t\tc.props = props;\n\t\t\t\tif (c.state == null) c.state = {};\n\n\t\t\t\tif (c._nextState == null && c.__s == null) {\n\t\t\t\t\tc._nextState = c.__s = c.state;\n\t\t\t\t}\n\n\t\t\t\tc.context = cctx;\n\t\t\t\tif (nodeName.getDerivedStateFromProps)\n\t\t\t\t\tc.state = assign(\n\t\t\t\t\t\tassign({}, c.state),\n\t\t\t\t\t\tnodeName.getDerivedStateFromProps(c.props, c.state)\n\t\t\t\t\t);\n\t\t\t\telse if (c.componentWillMount) {\n\t\t\t\t\tc.componentWillMount();\n\n\t\t\t\t\t// If the user called setState in cWM we need to flush pending,\n\t\t\t\t\t// state updates. This is the same behaviour in React.\n\t\t\t\t\tc.state =\n\t\t\t\t\t\tc._nextState !== c.state\n\t\t\t\t\t\t\t? c._nextState\n\t\t\t\t\t\t\t: c.__s !== c.state\n\t\t\t\t\t\t\t? c.__s\n\t\t\t\t\t\t\t: c.state;\n\t\t\t\t}\n\n\t\t\t\trendered = c.render(c.props, c.state, c.context);\n\t\t\t}\n\n\t\t\tif (c.getChildContext) {\n\t\t\t\tcontext = assign(assign({}, context), c.getChildContext());\n\t\t\t}\n\n\t\t\tif (options.diffed) options.diffed(vnode);\n\t\t\treturn _renderToString(\n\t\t\t\trendered,\n\t\t\t\tcontext,\n\t\t\t\topts,\n\t\t\t\topts.shallowHighOrder !== false,\n\t\t\t\tisSvgMode,\n\t\t\t\tselectValue\n\t\t\t);\n\t\t}\n\t}\n\n\t// render JSX to HTML\n\tlet s = '<' + nodeName,\n\t\tpropChildren,\n\t\thtml;\n\n\tif (props) {\n\t\tlet attrs = Object.keys(props);\n\n\t\t// allow sorting lexicographically for more determinism (useful for tests, such as via preact-jsx-chai)\n\t\tif (opts && opts.sortAttributes === true) attrs.sort();\n\n\t\tfor (let i = 0; i < attrs.length; i++) {\n\t\t\tlet name = attrs[i],\n\t\t\t\tv = props[name];\n\t\t\tif (name === 'children') {\n\t\t\t\tpropChildren = v;\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (UNSAFE_NAME.test(name)) continue;\n\n\t\t\tif (\n\t\t\t\t!(opts && opts.allAttributes) &&\n\t\t\t\t(name === 'key' ||\n\t\t\t\t\tname === 'ref' ||\n\t\t\t\t\tname === '__self' ||\n\t\t\t\t\tname === '__source')\n\t\t\t)\n\t\t\t\tcontinue;\n\n\t\t\tif (name === 'defaultValue') {\n\t\t\t\tname = 'value';\n\t\t\t} else if (name === 'className') {\n\t\t\t\tif (typeof props.class !== 'undefined') continue;\n\t\t\t\tname = 'class';\n\t\t\t} else if (isSvgMode && name.match(/^xlink:?./)) {\n\t\t\t\tname = name.toLowerCase().replace(/^xlink:?/, 'xlink:');\n\t\t\t}\n\n\t\t\tif (name === 'htmlFor') {\n\t\t\t\tif (props.for) continue;\n\t\t\t\tname = 'for';\n\t\t\t}\n\n\t\t\tif (name === 'style' && v && typeof v === 'object') {\n\t\t\t\tv = styleObjToCss(v);\n\t\t\t}\n\n\t\t\t// always use string values instead of booleans for aria attributes\n\t\t\t// also see https://github.com/preactjs/preact/pull/2347/files\n\t\t\tif (name[0] === 'a' && name['1'] === 'r' && typeof v === 'boolean') {\n\t\t\t\tv = String(v);\n\t\t\t}\n\n\t\t\tlet hooked =\n\t\t\t\topts.attributeHook &&\n\t\t\t\topts.attributeHook(name, v, context, opts, isComponent);\n\t\t\tif (hooked || hooked === '') {\n\t\t\t\ts += hooked;\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (name === 'dangerouslySetInnerHTML') {\n\t\t\t\thtml = v && v.__html;\n\t\t\t} else if (nodeName === 'textarea' && name === 'value') {\n\t\t\t\t// \n\t\t\t\tpropChildren = v;\n\t\t\t} else if ((v || v === 0 || v === '') && typeof v !== 'function') {\n\t\t\t\tif (v === true || v === '') {\n\t\t\t\t\tv = name;\n\t\t\t\t\t// in non-xml mode, allow boolean attributes\n\t\t\t\t\tif (!opts || !opts.xml) {\n\t\t\t\t\t\ts += ' ' + name;\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (name === 'value') {\n\t\t\t\t\tif (nodeName === 'select') {\n\t\t\t\t\t\tselectValue = v;\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t} else if (nodeName === 'option' && selectValue == v) {\n\t\t\t\t\t\ts += ` selected`;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\ts += ` ${name}=\"${encodeEntities(v)}\"`;\n\t\t\t}\n\t\t}\n\t}\n\n\t// account for >1 multiline attribute\n\tif (pretty) {\n\t\tlet sub = s.replace(/\\n\\s*/, ' ');\n\t\tif (sub !== s && !~sub.indexOf('\\n')) s = sub;\n\t\telse if (pretty && ~s.indexOf('\\n')) s += '\\n';\n\t}\n\n\ts += '>';\n\n\tif (UNSAFE_NAME.test(nodeName))\n\t\tthrow new Error(`${nodeName} is not a valid HTML tag name in ${s}`);\n\n\tlet isVoid =\n\t\tVOID_ELEMENTS.test(nodeName) ||\n\t\t(opts.voidElements && opts.voidElements.test(nodeName));\n\tlet pieces = [];\n\n\tlet children;\n\tif (html) {\n\t\t// if multiline, indent.\n\t\tif (pretty && isLargeString(html)) {\n\t\t\thtml = '\\n' + indentChar + indent(html, indentChar);\n\t\t}\n\t\ts += html;\n\t} else if (\n\t\tpropChildren != null &&\n\t\tgetChildren((children = []), propChildren).length\n\t) {\n\t\tlet hasLarge = pretty && ~s.indexOf('\\n');\n\t\tlet lastWasText = false;\n\n\t\tfor (let i = 0; i < children.length; i++) {\n\t\t\tlet child = children[i];\n\n\t\t\tif (child != null && child !== false) {\n\t\t\t\tlet childSvgMode =\n\t\t\t\t\t\tnodeName === 'svg'\n\t\t\t\t\t\t\t? true\n\t\t\t\t\t\t\t: nodeName === 'foreignObject'\n\t\t\t\t\t\t\t? false\n\t\t\t\t\t\t\t: isSvgMode,\n\t\t\t\t\tret = _renderToString(\n\t\t\t\t\t\tchild,\n\t\t\t\t\t\tcontext,\n\t\t\t\t\t\topts,\n\t\t\t\t\t\ttrue,\n\t\t\t\t\t\tchildSvgMode,\n\t\t\t\t\t\tselectValue\n\t\t\t\t\t);\n\n\t\t\t\tif (pretty && !hasLarge && isLargeString(ret)) hasLarge = true;\n\n\t\t\t\t// Skip if we received an empty string\n\t\t\t\tif (ret) {\n\t\t\t\t\tif (pretty) {\n\t\t\t\t\t\tlet isText = ret.length > 0 && ret[0] != '<';\n\n\t\t\t\t\t\t// We merge adjacent text nodes, otherwise each piece would be printed\n\t\t\t\t\t\t// on a new line.\n\t\t\t\t\t\tif (lastWasText && isText) {\n\t\t\t\t\t\t\tpieces[pieces.length - 1] += ret;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tpieces.push(ret);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tlastWasText = isText;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tpieces.push(ret);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (pretty && hasLarge) {\n\t\t\tfor (let i = pieces.length; i--; ) {\n\t\t\t\tpieces[i] = '\\n' + indentChar + indent(pieces[i], indentChar);\n\t\t\t}\n\t\t}\n\t}\n\n\tif (pieces.length || html) {\n\t\ts += pieces.join('');\n\t} else if (opts && opts.xml) {\n\t\treturn s.substring(0, s.length - 1) + ' />';\n\t}\n\n\tif (isVoid && !children && !html) {\n\t\ts = s.replace(/>$/, ' />');\n\t} else {\n\t\tif (pretty && ~s.indexOf('\\n')) s += '\\n';\n\t\ts += ``;\n\t}\n\n\treturn s;\n}\n\nfunction getComponentName(component) {\n\treturn (\n\t\tcomponent.displayName ||\n\t\t(component !== Function && component.name) ||\n\t\tgetFallbackComponentName(component)\n\t);\n}\n\nfunction getFallbackComponentName(component) {\n\tlet str = Function.prototype.toString.call(component),\n\t\tname = (str.match(/^\\s*function\\s+([^( ]+)/) || '')[1];\n\tif (!name) {\n\t\t// search for an existing indexed name for the given component:\n\t\tlet index = -1;\n\t\tfor (let i = UNNAMED.length; i--; ) {\n\t\t\tif (UNNAMED[i] === component) {\n\t\t\t\tindex = i;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\t// not found, create a new indexed name:\n\t\tif (index < 0) {\n\t\t\tindex = UNNAMED.push(component) - 1;\n\t\t}\n\t\tname = `UnnamedComponent${index}`;\n\t}\n\treturn name;\n}\nrenderToString.shallowRender = shallowRender;\n\nexport default renderToString;\n\nexport {\n\trenderToString as render,\n\trenderToString as renderToStaticMarkup,\n\trenderToString,\n\tshallowRender\n};\n","'use strict';\n\nconst ESCAPED_CHARACTERS = /(\\\\|\\\"|\\')/g;\n\nmodule.exports = function printString(val) {\n return val.replace(ESCAPED_CHARACTERS, '\\\\$1');\n}\n","'use strict';\n\nconst printString = require('./printString');\n\nconst toString = Object.prototype.toString;\nconst toISOString = Date.prototype.toISOString;\nconst errorToString = Error.prototype.toString;\nconst regExpToString = RegExp.prototype.toString;\nconst symbolToString = Symbol.prototype.toString;\n\nconst SYMBOL_REGEXP = /^Symbol\\((.*)\\)(.*)$/;\nconst NEWLINE_REGEXP = /\\n/ig;\n\nconst getSymbols = Object.getOwnPropertySymbols || (obj => []);\n\nfunction isToStringedArrayType(toStringed) {\n return (\n toStringed === '[object Array]' ||\n toStringed === '[object ArrayBuffer]' ||\n toStringed === '[object DataView]' ||\n toStringed === '[object Float32Array]' ||\n toStringed === '[object Float64Array]' ||\n toStringed === '[object Int8Array]' ||\n toStringed === '[object Int16Array]' ||\n toStringed === '[object Int32Array]' ||\n toStringed === '[object Uint8Array]' ||\n toStringed === '[object Uint8ClampedArray]' ||\n toStringed === '[object Uint16Array]' ||\n toStringed === '[object Uint32Array]'\n );\n}\n\nfunction printNumber(val) {\n if (val != +val) return 'NaN';\n const isNegativeZero = val === 0 && (1 / val) < 0;\n return isNegativeZero ? '-0' : '' + val;\n}\n\nfunction printFunction(val) {\n if (val.name === '') {\n return '[Function anonymous]'\n } else {\n return '[Function ' + val.name + ']';\n }\n}\n\nfunction printSymbol(val) {\n return symbolToString.call(val).replace(SYMBOL_REGEXP, 'Symbol($1)');\n}\n\nfunction printError(val) {\n return '[' + errorToString.call(val) + ']';\n}\n\nfunction printBasicValue(val) {\n if (val === true || val === false) return '' + val;\n if (val === undefined) return 'undefined';\n if (val === null) return 'null';\n\n const typeOf = typeof val;\n\n if (typeOf === 'number') return printNumber(val);\n if (typeOf === 'string') return '\"' + printString(val) + '\"';\n if (typeOf === 'function') return printFunction(val);\n if (typeOf === 'symbol') return printSymbol(val);\n\n const toStringed = toString.call(val);\n\n if (toStringed === '[object WeakMap]') return 'WeakMap {}';\n if (toStringed === '[object WeakSet]') return 'WeakSet {}';\n if (toStringed === '[object Function]' || toStringed === '[object GeneratorFunction]') return printFunction(val, min);\n if (toStringed === '[object Symbol]') return printSymbol(val);\n if (toStringed === '[object Date]') return toISOString.call(val);\n if (toStringed === '[object Error]') return printError(val);\n if (toStringed === '[object RegExp]') return regExpToString.call(val);\n if (toStringed === '[object Arguments]' && val.length === 0) return 'Arguments []';\n if (isToStringedArrayType(toStringed) && val.length === 0) return val.constructor.name + ' []';\n\n if (val instanceof Error) return printError(val);\n\n return false;\n}\n\nfunction printList(list, indent, prevIndent, spacing, edgeSpacing, refs, maxDepth, currentDepth, plugins, min) {\n let body = '';\n\n if (list.length) {\n body += edgeSpacing;\n\n const innerIndent = prevIndent + indent;\n\n for (let i = 0; i < list.length; i++) {\n body += innerIndent + print(list[i], indent, innerIndent, spacing, edgeSpacing, refs, maxDepth, currentDepth, plugins, min);\n\n if (i < list.length - 1) {\n body += ',' + spacing;\n }\n }\n\n body += edgeSpacing + prevIndent;\n }\n\n return '[' + body + ']';\n}\n\nfunction printArguments(val, indent, prevIndent, spacing, edgeSpacing, refs, maxDepth, currentDepth, plugins, min) {\n return (min ? '' : 'Arguments ') + printList(val, indent, prevIndent, spacing, edgeSpacing, refs, maxDepth, currentDepth, plugins, min);\n}\n\nfunction printArray(val, indent, prevIndent, spacing, edgeSpacing, refs, maxDepth, currentDepth, plugins, min) {\n return (min ? '' : val.constructor.name + ' ') + printList(val, indent, prevIndent, spacing, edgeSpacing, refs, maxDepth, currentDepth, plugins, min);\n}\n\nfunction printMap(val, indent, prevIndent, spacing, edgeSpacing, refs, maxDepth, currentDepth, plugins, min) {\n let result = 'Map {';\n const iterator = val.entries();\n let current = iterator.next();\n\n if (!current.done) {\n result += edgeSpacing;\n\n const innerIndent = prevIndent + indent;\n\n while (!current.done) {\n const key = print(current.value[0], indent, innerIndent, spacing, edgeSpacing, refs, maxDepth, currentDepth, plugins, min);\n const value = print(current.value[1], indent, innerIndent, spacing, edgeSpacing, refs, maxDepth, currentDepth, plugins, min);\n\n result += innerIndent + key + ' => ' + value;\n\n current = iterator.next();\n\n if (!current.done) {\n result += ',' + spacing;\n }\n }\n\n result += edgeSpacing + prevIndent;\n }\n\n return result + '}';\n}\n\nfunction printObject(val, indent, prevIndent, spacing, edgeSpacing, refs, maxDepth, currentDepth, plugins, min) {\n const constructor = min ? '' : (val.constructor ? val.constructor.name + ' ' : 'Object ');\n let result = constructor + '{';\n let keys = Object.keys(val).sort();\n const symbols = getSymbols(val);\n\n if (symbols.length) {\n keys = keys\n .filter(key => !(typeof key === 'symbol' || toString.call(key) === '[object Symbol]'))\n .concat(symbols);\n }\n\n if (keys.length) {\n result += edgeSpacing;\n\n const innerIndent = prevIndent + indent;\n\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n const name = print(key, indent, innerIndent, spacing, edgeSpacing, refs, maxDepth, currentDepth, plugins, min);\n const value = print(val[key], indent, innerIndent, spacing, edgeSpacing, refs, maxDepth, currentDepth, plugins, min);\n\n result += innerIndent + name + ': ' + value;\n\n if (i < keys.length - 1) {\n result += ',' + spacing;\n }\n }\n\n result += edgeSpacing + prevIndent;\n }\n\n return result + '}';\n}\n\nfunction printSet(val, indent, prevIndent, spacing, edgeSpacing, refs, maxDepth, currentDepth, plugins, min) {\n let result = 'Set {';\n const iterator = val.entries();\n let current = iterator.next();\n\n if (!current.done) {\n result += edgeSpacing;\n\n const innerIndent = prevIndent + indent;\n\n while (!current.done) {\n result += innerIndent + print(current.value[1], indent, innerIndent, spacing, edgeSpacing, refs, maxDepth, currentDepth, plugins, min);\n\n current = iterator.next();\n\n if (!current.done) {\n result += ',' + spacing;\n }\n }\n\n result += edgeSpacing + prevIndent;\n }\n\n return result + '}';\n}\n\nfunction printComplexValue(val, indent, prevIndent, spacing, edgeSpacing, refs, maxDepth, currentDepth, plugins, min) {\n refs = refs.slice();\n if (refs.indexOf(val) > -1) {\n return '[Circular]';\n } else {\n refs.push(val);\n }\n\n currentDepth++;\n\n const hitMaxDepth = currentDepth > maxDepth;\n\n if (!hitMaxDepth && val.toJSON && typeof val.toJSON === 'function') {\n return print(val.toJSON(), indent, prevIndent, spacing, edgeSpacing, refs, maxDepth, currentDepth, plugins, min);\n }\n\n const toStringed = toString.call(val);\n if (toStringed === '[object Arguments]') {\n return hitMaxDepth ? '[Arguments]' : printArguments(val, indent, prevIndent, spacing, edgeSpacing, refs, maxDepth, currentDepth, plugins, min);\n } else if (isToStringedArrayType(toStringed)) {\n return hitMaxDepth ? '[Array]' : printArray(val, indent, prevIndent, spacing, edgeSpacing, refs, maxDepth, currentDepth, plugins, min);\n } else if (toStringed === '[object Map]') {\n return hitMaxDepth ? '[Map]' : printMap(val, indent, prevIndent, spacing, edgeSpacing, refs, maxDepth, currentDepth, plugins, min);\n } else if (toStringed === '[object Set]') {\n return hitMaxDepth ? '[Set]' : printSet(val, indent, prevIndent, spacing, edgeSpacing, refs, maxDepth, currentDepth, plugins, min);\n } else if (typeof val === 'object') {\n return hitMaxDepth ? '[Object]' : printObject(val, indent, prevIndent, spacing, edgeSpacing, refs, maxDepth, currentDepth, plugins, min);\n }\n}\n\nfunction printPlugin(val, indent, prevIndent, spacing, edgeSpacing, refs, maxDepth, currentDepth, plugins, min) {\n let match = false;\n let plugin;\n\n for (let p = 0; p < plugins.length; p++) {\n plugin = plugins[p];\n\n if (plugin.test(val)) {\n match = true;\n break;\n }\n }\n\n if (!match) {\n return false;\n }\n\n function boundPrint(val) {\n return print(val, indent, prevIndent, spacing, edgeSpacing, refs, maxDepth, currentDepth, plugins, min);\n }\n\n function boundIndent(str) {\n const indentation = prevIndent + indent;\n return indentation + str.replace(NEWLINE_REGEXP, '\\n' + indentation);\n }\n\n return plugin.print(val, boundPrint, boundIndent, {\n edgeSpacing: edgeSpacing,\n spacing: spacing\n });\n}\n\nfunction print(val, indent, prevIndent, spacing, edgeSpacing, refs, maxDepth, currentDepth, plugins, min) {\n const basic = printBasicValue(val);\n if (basic) return basic;\n\n const plugin = printPlugin(val, indent, prevIndent, spacing, edgeSpacing, refs, maxDepth, currentDepth, plugins, min);\n if (plugin) return plugin;\n\n return printComplexValue(val, indent, prevIndent, spacing, edgeSpacing, refs, maxDepth, currentDepth, plugins, min);\n}\n\nconst DEFAULTS = {\n indent: 2,\n min: false,\n maxDepth: Infinity,\n plugins: []\n};\n\nfunction validateOptions(opts) {\n Object.keys(opts).forEach(key => {\n if (!DEFAULTS.hasOwnProperty(key)) {\n throw new Error('prettyFormat: Invalid option: ' + key);\n }\n });\n\n if (opts.min && opts.indent !== undefined && opts.indent !== 0) {\n throw new Error('prettyFormat: Cannot run with min option and indent');\n }\n}\n\nfunction normalizeOptions(opts) {\n const result = {};\n\n Object.keys(DEFAULTS).forEach(key =>\n result[key] = opts.hasOwnProperty(key) ? opts[key] : DEFAULTS[key]\n );\n\n if (result.min) {\n result.indent = 0;\n }\n\n return result;\n}\n\nfunction createIndent(indent) {\n return new Array(indent + 1).join(' ');\n}\n\nfunction prettyFormat(val, opts) {\n if (!opts) {\n opts = DEFAULTS;\n } else {\n validateOptions(opts)\n opts = normalizeOptions(opts);\n }\n\n let indent;\n let refs;\n const prevIndent = '';\n const currentDepth = 0;\n const spacing = opts.min ? ' ' : '\\n';\n const edgeSpacing = opts.min ? '' : '\\n';\n\n if (opts && opts.plugins.length) {\n indent = createIndent(opts.indent);\n refs = [];\n var pluginsResult = printPlugin(val, indent, prevIndent, spacing, edgeSpacing, refs, opts.maxDepth, currentDepth, opts.plugins, opts.min);\n if (pluginsResult) return pluginsResult;\n }\n\n var basicResult = printBasicValue(val);\n if (basicResult) return basicResult;\n\n if (!indent) indent = createIndent(opts.indent);\n if (!refs) refs = [];\n return printComplexValue(val, indent, prevIndent, spacing, edgeSpacing, refs, opts.maxDepth, currentDepth, opts.plugins, opts.min);\n}\n\nmodule.exports = prettyFormat;\n","import './polyfills';\nimport renderToString from './index';\nimport { indent, encodeEntities, assign } from './util';\nimport prettyFormat from 'pretty-format';\n\n// we have to patch in Array support, Possible issue in npm.im/pretty-format\nlet preactPlugin = {\n\ttest(object) {\n\t\treturn (\n\t\t\tobject &&\n\t\t\ttypeof object === 'object' &&\n\t\t\t'type' in object &&\n\t\t\t'props' in object &&\n\t\t\t'key' in object\n\t\t);\n\t},\n\tprint(val, print, indent) {\n\t\treturn renderToString(val, preactPlugin.context, preactPlugin.opts, true);\n\t}\n};\n\nlet prettyFormatOpts = {\n\tplugins: [preactPlugin]\n};\n\nfunction attributeHook(name, value, context, opts, isComponent) {\n\tlet type = typeof value;\n\n\t// Use render-to-string's built-in handling for these properties\n\tif (name === 'dangerouslySetInnerHTML') return false;\n\n\t// always skip null & undefined values, skip false DOM attributes, skip functions if told to\n\tif (value == null || (type === 'function' && !opts.functions)) return '';\n\n\tif (\n\t\topts.skipFalseAttributes &&\n\t\t!isComponent &&\n\t\t(value === false ||\n\t\t\t((name === 'class' || name === 'style') && value === ''))\n\t)\n\t\treturn '';\n\n\tlet indentChar = typeof opts.pretty === 'string' ? opts.pretty : '\\t';\n\tif (type !== 'string') {\n\t\tif (type === 'function' && !opts.functionNames) {\n\t\t\tvalue = 'Function';\n\t\t} else {\n\t\t\tpreactPlugin.context = context;\n\t\t\tpreactPlugin.opts = opts;\n\t\t\tvalue = prettyFormat(value, prettyFormatOpts);\n\t\t\tif (~value.indexOf('\\n')) {\n\t\t\t\tvalue = `${indent('\\n' + value, indentChar)}\\n`;\n\t\t\t}\n\t\t}\n\t\treturn indent(`\\n${name}={${value}}`, indentChar);\n\t}\n\treturn `\\n${indentChar}${name}=\"${encodeEntities(value)}\"`;\n}\n\nlet defaultOpts = {\n\tattributeHook,\n\tjsx: true,\n\txml: false,\n\tfunctions: true,\n\tfunctionNames: true,\n\tskipFalseAttributes: true,\n\tpretty: ' '\n};\n\nfunction renderToJsxString(vnode, context, opts, inner) {\n\topts = assign(assign({}, defaultOpts), opts || {});\n\treturn renderToString(vnode, context, opts, inner);\n}\n\nexport default renderToJsxString;\nexport { renderToJsxString as render };\n"],"names":["Symbol","c","s","IS_NON_DIMENSIONAL","ENCODED_ENTITIES","encodeEntities","input","String","test","replace","indent","char","isLargeString","length","ignoreLines","indexOf","JS_TO_CSS","styleObjToCss","str","prop","val","toLowerCase","undefined","assign","obj","props","i","getChildren","accumulator","children","Array","isArray","reduce","push","SHALLOW","shallow","UNNAMED","VOID_ELEMENTS","UNSAFE_NAME","noop","renderToString","render","EMPTY_ARR","vnode","context","opts","previousSkipEffects","options","__s","res","_renderToString","__c","inner","isSvgMode","selectValue","pretty","indentChar","rendered","component","nodeName","type","isComponent","renderRootComponent","Fragment","shallowHighOrder","__v","setState","forceUpdate","__h","__b","__r","prototype","cxType","contextType","provider","cctx","value","__","_dirty","__d","state","_nextState","getDerivedStateFromProps","componentWillMount","call","getChildContext","diffed","displayName","Function","name","toString","match","index","getFallbackComponentName","propChildren","html","attrs","Object","keys","sortAttributes","sort","v","allAttributes","hooked","attributeHook","__html","xml","sub","Error","isVoid","voidElements","pieces","hasLarge","lastWasText","child","ret","isText","join","substring","shallowRender","ESCAPED_CHARACTERS","toISOString","Date","errorToString","regExpToString","RegExp","symbolToString","SYMBOL_REGEXP","NEWLINE_REGEXP","getSymbols","getOwnPropertySymbols","isToStringedArrayType","toStringed","printFunction","printSymbol","printError","printBasicValue","typeOf","printNumber","printString","min","constructor","printList","list","prevIndent","spacing","edgeSpacing","refs","maxDepth","currentDepth","plugins","body","innerIndent","print","printComplexValue","slice","hitMaxDepth","toJSON","printArguments","printArray","result","iterator","entries","current","next","done","printMap","printSet","symbols","filter","key","concat","printObject","printPlugin","plugin","p","indentation","DEFAULTS","Infinity","createIndent","preactPlugin","object","prettyFormatOpts","defaultOpts","functions","skipFalseAttributes","functionNames","forEach","hasOwnProperty","validateOptions","normalizeOptions","pluginsResult","prettyFormat","jsx","renderToJsxString"],"mappings":"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"}