site/node_modules/preact-render-to-string/dist/jsx.mjs.map
2024-10-14 08:09:33 +02:00

1 line
49 KiB
Plaintext

{"version":3,"file":"jsx.mjs","sources":["../src/polyfills.js","../src/util.js","../src/pretty.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","export const VOID_ELEMENTS = /^(?:area|base|br|col|embed|hr|img|input|link|meta|param|source|track|wbr)$/;\nexport const UNSAFE_NAME = /[\\s\\n\\\\/='\"\\0<>]/;\nexport const NAMESPACE_REPLACE_REGEX = /^(xlink|xmlns|xml)([A-Z])/;\nexport const HTML_LOWER_CASE = /^accessK|^auto[A-Z]|^ch|^col|cont|cross|dateT|encT|form[A-Z]|frame|hrefL|inputM|maxL|minL|noV|playsI|readO|rowS|spellC|src[A-Z]|tabI|item[A-Z]/;\nexport const SVG_CAMEL_CASE = /^ac|^ali|arabic|basel|cap|clipPath$|clipRule$|color|dominant|enable|fill|flood|font|glyph[^R]|horiz|image|letter|lighting|marker[^WUH]|overline|panose|pointe|paint|rendering|shape|stop|strikethrough|stroke|text[^L]|transform|underline|unicode|units|^v[^i]|^w|^xH/;\n\n// DOM properties that should NOT have \"px\" added when numeric\nconst ENCODED_ENTITIES = /[\"&<]/;\n\n/** @param {string} str */\nexport function encodeEntities(str) {\n\t// Skip all work for strings with no entities needing encoding:\n\tif (str.length === 0 || ENCODED_ENTITIES.test(str) === false) return str;\n\n\tlet last = 0,\n\t\ti = 0,\n\t\tout = '',\n\t\tch = '';\n\n\t// Seek forward in str until the next entity char:\n\tfor (; i < str.length; i++) {\n\t\tswitch (str.charCodeAt(i)) {\n\t\t\tcase 34:\n\t\t\t\tch = '&quot;';\n\t\t\t\tbreak;\n\t\t\tcase 38:\n\t\t\t\tch = '&amp;';\n\t\t\t\tbreak;\n\t\t\tcase 60:\n\t\t\t\tch = '&lt;';\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tcontinue;\n\t\t}\n\t\t// Append skipped/buffered characters and the encoded entity:\n\t\tif (i !== last) out += str.slice(last, i);\n\t\tout += ch;\n\t\t// Start the next seek/buffer after the entity's offset:\n\t\tlast = i + 1;\n\t}\n\tif (i !== last) out += str.slice(last, i);\n\treturn out;\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\nconst IS_NON_DIMENSIONAL = new Set([\n\t'animation-iteration-count',\n\t'border-image-outset',\n\t'border-image-slice',\n\t'border-image-width',\n\t'box-flex',\n\t'box-flex-group',\n\t'box-ordinal-group',\n\t'column-count',\n\t'fill-opacity',\n\t'flex',\n\t'flex-grow',\n\t'flex-negative',\n\t'flex-order',\n\t'flex-positive',\n\t'flex-shrink',\n\t'flood-opacity',\n\t'font-weight',\n\t'grid-column',\n\t'grid-row',\n\t'line-clamp',\n\t'line-height',\n\t'opacity',\n\t'order',\n\t'orphans',\n\t'stop-opacity',\n\t'stroke-dasharray',\n\t'stroke-dashoffset',\n\t'stroke-miterlimit',\n\t'stroke-opacity',\n\t'stroke-width',\n\t'tab-size',\n\t'widows',\n\t'z-index',\n\t'zoom'\n]);\n\nconst CSS_REGEX = /[A-Z]/g;\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\tconst name =\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(CSS_REGEX, '-$&').toLowerCase());\n\n\t\t\tlet suffix = ';';\n\t\t\tif (\n\t\t\t\ttypeof val === 'number' &&\n\t\t\t\t// Exclude custom-attributes\n\t\t\t\t!name.startsWith('--') &&\n\t\t\t\t!IS_NON_DIMENSIONAL.has(name)\n\t\t\t) {\n\t\t\t\tsuffix = 'px;';\n\t\t\t}\n\t\t\tstr = str + name + ':' + val + suffix;\n\t\t}\n\t}\n\treturn str || undefined;\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\nfunction markAsDirty() {\n\tthis.__d = true;\n}\n\nexport function createComponent(vnode, context) {\n\treturn {\n\t\t__v: vnode,\n\t\tcontext,\n\t\tprops: vnode.props,\n\t\t// silently drop state updates\n\t\tsetState: markAsDirty,\n\t\tforceUpdate: markAsDirty,\n\t\t__d: true,\n\t\t// hooks\n\t\t__h: []\n\t};\n}\n\n/**\n * @template T\n */\nexport class Deferred {\n\tconstructor() {\n\t\t// eslint-disable-next-line lines-around-comment\n\t\t/** @type {Promise<T>} */\n\t\tthis.promise = new Promise((resolve, reject) => {\n\t\t\tthis.resolve = resolve;\n\t\t\tthis.reject = reject;\n\t\t});\n\t}\n}\n","import {\n\tencodeEntities,\n\tindent,\n\tisLargeString,\n\tstyleObjToCss,\n\tgetChildren,\n\tcreateComponent,\n\tUNSAFE_NAME,\n\tVOID_ELEMENTS,\n\tNAMESPACE_REPLACE_REGEX,\n\tHTML_LOWER_CASE,\n\tSVG_CAMEL_CASE\n} from './util.js';\nimport { COMMIT, DIFF, DIFFED, RENDER, SKIP_EFFECTS } from './constants.js';\nimport { options, Fragment } from 'preact';\n\n/** @typedef {import('preact').VNode} VNode */\n\n// components without names, kept as a hash for later comparison to return consistent UnnamedComponentXX names.\nconst UNNAMED = [];\n\nconst EMPTY_ARR = [];\n\n/**\n * Render Preact JSX + Components to a pretty-printed HTML-like string.\n * @param {VNode} vnode\tJSX Element / VNode to render\n * @param {Object} [context={}] Initial root context object\n * @param {Object} [opts={}] Rendering options\n * @param {Boolean} [opts.shallow=false] Serialize nested Components (`<Foo a=\"b\" />`) instead of rendering\n * @param {Boolean} [opts.xml=false] Use self-closing tags for elements without children\n * @param {Boolean} [opts.pretty=false] Add whitespace for readability\n * @param {RegExp|undefined} [opts.voidElements] RegeEx to define which element types are self-closing\n * @param {boolean} [_inner]\n * @returns {String} a pretty-printed HTML-like string\n */\nexport default function renderToStringPretty(vnode, context, opts, _inner) {\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[SKIP_EFFECTS];\n\toptions[SKIP_EFFECTS] = true;\n\n\ttry {\n\t\treturn _renderToStringPretty(vnode, context || {}, opts, _inner);\n\t} finally {\n\t\t// options._commit, we don't schedule any effects in this library right now,\n\t\t// so we can pass an empty queue to this hook.\n\t\tif (options[COMMIT]) options[COMMIT](vnode, EMPTY_ARR);\n\t\toptions[SKIP_EFFECTS] = previousSkipEffects;\n\t\tEMPTY_ARR.length = 0;\n\t}\n}\n\nfunction _renderToStringPretty(\n\tvnode,\n\tcontext,\n\topts,\n\tinner,\n\tisSvgMode,\n\tselectValue\n) {\n\tif (vnode == null || typeof vnode === 'boolean') {\n\t\treturn '';\n\t}\n\n\t// #text nodes\n\tif (typeof vnode !== 'object') {\n\t\tif (typeof vnode === 'function') return '';\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 = rendered + '\\n';\n\t\t\trendered =\n\t\t\t\trendered +\n\t\t\t\t_renderToStringPretty(\n\t\t\t\t\tvnode[i],\n\t\t\t\t\tcontext,\n\t\t\t\t\topts,\n\t\t\t\t\tinner,\n\t\t\t\t\tisSvgMode,\n\t\t\t\t\tselectValue\n\t\t\t\t);\n\t\t}\n\t\treturn rendered;\n\t}\n\n\t// VNodes have {constructor:undefined} to prevent JSON injection:\n\tif (vnode.constructor !== undefined) return '';\n\n\tif (options[DIFF]) options[DIFF](vnode);\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 _renderToStringPretty(\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 = createComponent(vnode, context));\n\n\t\t\tlet renderHook = options[RENDER];\n\n\t\t\tlet cctx = context;\n\t\t\tlet cxType = nodeName.contextType;\n\t\t\tif (cxType != null) {\n\t\t\t\tlet provider = context[cxType.__c];\n\t\t\t\tcctx = provider ? provider.props.value : cxType.__;\n\t\t\t}\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// If a hook invokes setState() to invalidate the component during rendering,\n\t\t\t\t// re-render it up to 25 times to allow \"settling\" of memoized states.\n\t\t\t\t// Note:\n\t\t\t\t// This will need to be updated for Preact 11 to use internal.flags rather than component._dirty:\n\t\t\t\t// https://github.com/preactjs/preact/blob/d4ca6fdb19bc715e49fd144e69f7296b2f4daa40/src/diff/component.js#L35-L44\n\t\t\t\tlet count = 0;\n\t\t\t\twhile (c.__d && count++ < 25) {\n\t\t\t\t\tc.__d = false;\n\n\t\t\t\t\tif (renderHook) renderHook(vnode);\n\n\t\t\t\t\t// stateless functional components\n\t\t\t\t\trendered = nodeName.call(vnode.__c, props, cctx);\n\t\t\t\t}\n\t\t\t} else {\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 = Object.assign(\n\t\t\t\t\t\t{},\n\t\t\t\t\t\tc.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\tif (renderHook) renderHook(vnode);\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 = Object.assign({}, context, c.getChildContext());\n\t\t\t}\n\n\t\t\tconst res = _renderToStringPretty(\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\n\t\t\tif (options[DIFFED]) options[DIFFED](vnode);\n\n\t\t\treturn res;\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 === 'defaultChecked') {\n\t\t\t\tname = 'checked';\n\t\t\t} else if (name === 'defaultSelected') {\n\t\t\t\tname = 'selected';\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 (name === 'acceptCharset') {\n\t\t\t\tname = 'accept-charset';\n\t\t\t} else if (name === 'httpEquiv') {\n\t\t\t\tname = 'http-equiv';\n\t\t\t} else if (NAMESPACE_REPLACE_REGEX.test(name)) {\n\t\t\t\tname = name.replace(NAMESPACE_REPLACE_REGEX, '$1:$2').toLowerCase();\n\t\t\t} else if (isSvgMode) {\n\t\t\t\tif (SVG_CAMEL_CASE.test(name)) {\n\t\t\t\t\tname =\n\t\t\t\t\t\tname === 'panose1'\n\t\t\t\t\t\t\t? 'panose-1'\n\t\t\t\t\t\t\t: name.replace(/([A-Z])/g, '-$1').toLowerCase();\n\t\t\t\t}\n\t\t\t} else if (HTML_LOWER_CASE.test(name)) {\n\t\t\t\tname = name.toLowerCase();\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 = s + 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// <textarea value=\"a&b\"> --> <textarea>a&amp;b</textarea>\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 = s + ' ' + 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 (\n\t\t\t\t\t\t// If we're looking at an <option> and it's the currently selected one\n\t\t\t\t\t\tnodeName === 'option' &&\n\t\t\t\t\t\tselectValue == v &&\n\t\t\t\t\t\t// and the <option> doesn't already have a selected attribute on it\n\t\t\t\t\t\ttypeof props.selected === 'undefined'\n\t\t\t\t\t) {\n\t\t\t\t\t\ts = s + ` selected`;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\ts = s + ` ${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 = s + '\\n';\n\t}\n\n\ts = s + '>';\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 = s + 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 = _renderToStringPretty(\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 (options[DIFFED]) options[DIFFED](vnode);\n\n\tif (pieces.length || html) {\n\t\ts = s + 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 = s + '\\n';\n\t\ts = s + `</${nodeName}>`;\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}\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.js';\nimport renderToString from './pretty.js';\nimport { indent, encodeEntities } from './util.js';\nimport prettyFormat from 'pretty-format';\n\n/** @typedef {import('preact').VNode} VNode */\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\n/**\n * Render Preact JSX + Components to a pretty-printed HTML-like string.\n * @param {VNode} vnode\tJSX Element / VNode to render\n * @param {Object} [context={}] Initial root context object\n * @param {Object} [options={}] Rendering options\n * @param {Boolean} [options.jsx=true] Generate JSX/XML output instead of HTML\n * @param {Boolean} [options.xml=false] Use self-closing tags for elements without children\n * @param {Boolean} [options.shallow=false] Serialize nested Components (`<Foo a=\"b\" />`) instead of rendering\n * @param {Boolean} [options.pretty=false] Add whitespace for readability\n * @param {RegExp|undefined} [options.voidElements] RegeEx to define which element types are self-closing\n * @returns {String} a pretty-printed HTML-like string\n */\nexport default function renderToStringPretty(vnode, context, options) {\n\tconst opts = Object.assign({}, defaultOpts, options || {});\n\tif (!opts.jsx) opts.attributeHook = null;\n\treturn renderToString(vnode, context, opts);\n}\nexport { renderToStringPretty as render };\n\nconst SHALLOW = { shallow: true };\n\n/** Only render elements, leaving Components inline as `<ComponentName ... />`.\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 *\t@param {Parameters<typeof renderToStringPretty>[2]} [options]\tOptionally pass an initial context object through the render path.\n */\nexport function shallowRender(vnode, context, options) {\n\tconst opts = Object.assign({}, SHALLOW, options || {});\n\treturn renderToStringPretty(vnode, context, opts);\n}\n"],"names":["Symbol","c","s","for","VOID_ELEMENTS","UNSAFE_NAME","NAMESPACE_REPLACE_REGEX","HTML_LOWER_CASE","SVG_CAMEL_CASE","ENCODED_ENTITIES","encodeEntities","str","length","test","last","i","out","ch","charCodeAt","slice","indent","char","String","replace","isLargeString","ignoreLines","indexOf","JS_TO_CSS","IS_NON_DIMENSIONAL","Set","CSS_REGEX","styleObjToCss","prop","val","name","toLowerCase","suffix","startsWith","has","undefined","getChildren","accumulator","children","Array","isArray","reduce","push","markAsDirty","this","__d","createComponent","vnode","context","__v","props","setState","forceUpdate","__h","UNNAMED","EMPTY_ARR","renderToStringPretty","opts","_inner","previousSkipEffects","options","_renderToStringPretty","inner","isSvgMode","selectValue","pretty","indentChar","rendered","constructor","nodeName","type","isComponent","shallow","renderRootComponent","Fragment","shallowHighOrder","__c","renderHook","cctx","cxType","contextType","provider","value","__","prototype","render","_dirty","state","_nextState","__s","getDerivedStateFromProps","Object","assign","componentWillMount","count","call","getChildContext","res","component","displayName","Function","getFallbackComponentName","propChildren","html","attrs","keys","sortAttributes","sort","v","allAttributes","class","hooked","attributeHook","__html","xml","selected","sub","Error","isVoid","voidElements","pieces","hasLarge","lastWasText","child","ret","isText","join","substring","toString","match","index","ESCAPED_CHARACTERS","toISOString","Date","errorToString","regExpToString","RegExp","symbolToString","SYMBOL_REGEXP","NEWLINE_REGEXP","getSymbols","getOwnPropertySymbols","obj","isToStringedArrayType","toStringed","printNumber","printFunction","printSymbol","printError","printBasicValue","typeOf","printString","min","printList","list","prevIndent","spacing","edgeSpacing","refs","maxDepth","currentDepth","plugins","body","innerIndent","print","printArguments","printArray","printMap","result","iterator","entries","current","next","done","printObject","symbols","filter","key","concat","printSet","printComplexValue","hitMaxDepth","toJSON","printPlugin","plugin","p","indentation","DEFAULTS","Infinity","validateOptions","forEach","hasOwnProperty","normalizeOptions","createIndent","pluginsResult","preactPlugin","object","renderToString","prettyFormatOpts","defaultOpts","functions","skipFalseAttributes","functionNames","prettyFormat","jsx","SHALLOW","shallowRender"],"mappings":"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"}