{"version":3,"file":"jsx.modern.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","for","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","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","component","displayName","Function","name","toString","match","index","getFallbackComponentName","propChildren","html","attrs","Object","keys","sortAttributes","sort","v","allAttributes","class","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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"}