preact-render-to-string 6.5.7 → 6.5.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -36,13 +36,13 @@ function encodeEntities(str) {
36
36
  } // Append skipped/buffered characters and the encoded entity:
37
37
 
38
38
 
39
- if (i !== last) out += str.slice(last, i);
40
- out += ch; // Start the next seek/buffer after the entity's offset:
39
+ if (i !== last) out = out + str.slice(last, i);
40
+ out = out + ch; // Start the next seek/buffer after the entity's offset:
41
41
 
42
42
  last = i + 1;
43
43
  }
44
44
 
45
- if (i !== last) out += str.slice(last, i);
45
+ if (i !== last) out = out + str.slice(last, i);
46
46
  return out;
47
47
  }
48
48
  const JS_TO_CSS = {};
@@ -70,6 +70,24 @@ function styleObjToCss(s) {
70
70
 
71
71
  return str || undefined;
72
72
  }
73
+
74
+ function markAsDirty() {
75
+ this.__d = true;
76
+ }
77
+
78
+ function createComponent(vnode, context) {
79
+ return {
80
+ __v: vnode,
81
+ context,
82
+ props: vnode.props,
83
+ // silently drop state updates
84
+ setState: markAsDirty,
85
+ forceUpdate: markAsDirty,
86
+ __d: true,
87
+ // hooks
88
+ __h: new Array(0)
89
+ };
90
+ } // Necessary for createContext api. Setting this property will pass
73
91
  /**
74
92
  * @template T
75
93
  */
@@ -104,9 +122,11 @@ const DIRTY = '__d';
104
122
  const NEXT_STATE = '__s';
105
123
  const CHILD_DID_SUSPEND = '__c';
106
124
 
125
+ const EMPTY_OBJ = {};
107
126
  const EMPTY_ARR = [];
108
127
  const isArray = Array.isArray;
109
- const assign = Object.assign; // Global state for the current render pass
128
+ const assign = Object.assign;
129
+ const EMPTY_STR = ''; // Global state for the current render pass
110
130
 
111
131
  let beforeDiff, afterDiff, renderHook, ummountHook;
112
132
  /**
@@ -136,8 +156,8 @@ function renderToString(vnode, context, _rendererState) {
136
156
  try {
137
157
  const rendered = _renderToString(vnode, context || EMPTY_OBJ, false, undefined, parent, false, _rendererState);
138
158
 
139
- if (Array.isArray(rendered)) {
140
- return rendered.join('');
159
+ if (isArray(rendered)) {
160
+ return rendered.join(EMPTY_STR);
141
161
  }
142
162
 
143
163
  return rendered;
@@ -155,12 +175,6 @@ function renderToString(vnode, context, _rendererState) {
155
175
  EMPTY_ARR.length = 0;
156
176
  }
157
177
  }
158
-
159
- function markAsDirty() {
160
- this.__d = true;
161
- }
162
-
163
- const EMPTY_OBJ = {};
164
178
  /**
165
179
  * @param {VNode} vnode
166
180
  * @param {Record<string, unknown>} context
@@ -222,36 +236,40 @@ function renderClassComponent(vnode, context) {
222
236
 
223
237
  function _renderToString(vnode, context, isSvgMode, selectValue, parent, asyncMode, renderer) {
224
238
  // Ignore non-rendered VNodes/values
225
- if (vnode == null || vnode === true || vnode === false || vnode === '') {
226
- return '';
227
- } // Text VNodes: escape as HTML
239
+ if (vnode == null || vnode === true || vnode === false || vnode === EMPTY_STR) {
240
+ return EMPTY_STR;
241
+ }
228
242
 
243
+ let vnodeType = typeof vnode; // Text VNodes: escape as HTML
229
244
 
230
- if (typeof vnode !== 'object') {
231
- if (typeof vnode === 'function') return '';
232
- return encodeEntities(vnode + '');
245
+ if (vnodeType != 'object') {
246
+ if (vnodeType == 'function') return EMPTY_STR;
247
+ return vnodeType == 'string' ? encodeEntities(vnode) : vnode + EMPTY_STR;
233
248
  } // Recurse into children / Arrays
234
249
 
235
250
 
236
251
  if (isArray(vnode)) {
237
- let rendered = '',
252
+ let rendered = EMPTY_STR,
238
253
  renderArray;
239
254
  parent[CHILDREN] = vnode;
240
255
 
241
256
  for (let i = 0; i < vnode.length; i++) {
242
257
  let child = vnode[i];
243
- if (child == null || typeof child === 'boolean') continue;
258
+ if (child == null || typeof child == 'boolean') continue;
244
259
 
245
260
  const childRender = _renderToString(child, context, isSvgMode, selectValue, parent, asyncMode, renderer);
246
261
 
247
- if (typeof childRender === 'string') {
248
- rendered += childRender;
262
+ if (typeof childRender == 'string') {
263
+ rendered = rendered + childRender;
249
264
  } else {
250
- renderArray = renderArray || [];
265
+ if (!renderArray) {
266
+ renderArray = [];
267
+ }
268
+
251
269
  if (rendered) renderArray.push(rendered);
252
- rendered = '';
270
+ rendered = EMPTY_STR;
253
271
 
254
- if (Array.isArray(childRender)) {
272
+ if (isArray(childRender)) {
255
273
  renderArray.push(...childRender);
256
274
  } else {
257
275
  renderArray.push(childRender);
@@ -268,43 +286,44 @@ function _renderToString(vnode, context, isSvgMode, selectValue, parent, asyncMo
268
286
  } // VNodes have {constructor:undefined} to prevent JSON injection:
269
287
 
270
288
 
271
- if (vnode.constructor !== undefined) return '';
289
+ if (vnode.constructor !== undefined) return EMPTY_STR;
272
290
  vnode[PARENT] = parent;
273
291
  if (beforeDiff) beforeDiff(vnode);
274
292
  let type = vnode.type,
275
- props = vnode.props,
276
- cctx = context,
277
- contextType,
278
- rendered,
279
- component; // Invoke rendering on Components
293
+ props = vnode.props; // Invoke rendering on Components
294
+
295
+ if (typeof type == 'function') {
296
+ let cctx = context,
297
+ contextType,
298
+ rendered,
299
+ component;
280
300
 
281
- if (typeof type === 'function') {
282
301
  if (type === Fragment) {
283
302
  // Serialized precompiled JSX.
284
- if (props.tpl) {
285
- let out = '';
303
+ if ('tpl' in props) {
304
+ let out = EMPTY_STR;
286
305
 
287
306
  for (let i = 0; i < props.tpl.length; i++) {
288
- out += props.tpl[i];
307
+ out = out + props.tpl[i];
289
308
 
290
309
  if (props.exprs && i < props.exprs.length) {
291
310
  const value = props.exprs[i];
292
311
  if (value == null) continue; // Check if we're dealing with a vnode or an array of nodes
293
312
 
294
- if (typeof value === 'object' && (value.constructor === undefined || isArray(value))) {
295
- out += _renderToString(value, context, isSvgMode, selectValue, vnode, asyncMode, renderer);
313
+ if (typeof value == 'object' && (value.constructor === undefined || isArray(value))) {
314
+ out = out + _renderToString(value, context, isSvgMode, selectValue, vnode, asyncMode, renderer);
296
315
  } else {
297
316
  // Values are pre-escaped by the JSX transform
298
- out += value;
317
+ out = out + value;
299
318
  }
300
319
  }
301
320
  }
302
321
 
303
322
  return out;
304
- } else if (props.UNSTABLE_comment) {
323
+ } else if ('UNSTABLE_comment' in props) {
305
324
  // Fragments are the least used components of core that's why
306
325
  // branching here for comments has the least effect on perf.
307
- return '<!--' + encodeEntities(props.UNSTABLE_comment || '') + '-->';
326
+ return '<!--' + encodeEntities(props.UNSTABLE_comment) + '-->';
308
327
  }
309
328
 
310
329
  rendered = props.children;
@@ -316,24 +335,17 @@ function _renderToString(vnode, context, isSvgMode, selectValue, parent, asyncMo
316
335
  cctx = provider ? provider.props.value : contextType.__;
317
336
  }
318
337
 
319
- if (type.prototype && typeof type.prototype.render === 'function') {
338
+ let isClassComponent = type.prototype && typeof type.prototype.render == 'function';
339
+
340
+ if (isClassComponent) {
320
341
  rendered =
321
342
  /**#__NOINLINE__**/
322
343
  renderClassComponent(vnode, cctx);
323
344
  component = vnode[COMPONENT];
324
345
  } else {
325
- component = {
326
- __v: vnode,
327
- props,
328
- context: cctx,
329
- // silently drop state updates
330
- setState: markAsDirty,
331
- forceUpdate: markAsDirty,
332
- __d: true,
333
- // hooks
334
- __h: []
335
- };
336
- vnode[COMPONENT] = component; // If a hook invokes setState() to invalidate the component during rendering,
346
+ vnode[COMPONENT] = component =
347
+ /**#__NOINLINE__**/
348
+ createComponent(vnode, cctx); // If a hook invokes setState() to invalidate the component during rendering,
337
349
  // re-render it up to 25 times to allow "settling" of memoized states.
338
350
  // Note:
339
351
  // This will need to be updated for Preact 11 to use internal.flags rather than component._dirty:
@@ -354,23 +366,21 @@ function _renderToString(vnode, context, isSvgMode, selectValue, parent, asyncMo
354
366
  context = assign({}, context, component.getChildContext());
355
367
  }
356
368
 
357
- if ((type.getDerivedStateFromError || component.componentDidCatch) && options.errorBoundaries) {
358
- let str = ''; // When a component returns a Fragment node we flatten it in core, so we
369
+ if (isClassComponent && options.errorBoundaries && (type.getDerivedStateFromError || component.componentDidCatch)) {
370
+ // When a component returns a Fragment node we flatten it in core, so we
359
371
  // need to mirror that logic here too
360
-
361
- let isTopLevelFragment = rendered != null && rendered.type === Fragment && rendered.key == null;
372
+ let isTopLevelFragment = rendered != null && rendered.type === Fragment && rendered.key == null && rendered.props.tpl == null;
362
373
  rendered = isTopLevelFragment ? rendered.props.children : rendered;
363
374
 
364
375
  try {
365
- str = _renderToString(rendered, context, isSvgMode, selectValue, vnode, asyncMode, renderer);
366
- return str;
376
+ return _renderToString(rendered, context, isSvgMode, selectValue, vnode, asyncMode, renderer);
367
377
  } catch (err) {
368
378
  if (type.getDerivedStateFromError) {
369
379
  component[NEXT_STATE] = type.getDerivedStateFromError(err);
370
380
  }
371
381
 
372
382
  if (component.componentDidCatch) {
373
- component.componentDidCatch(err, {});
383
+ component.componentDidCatch(err, EMPTY_OBJ);
374
384
  }
375
385
 
376
386
  if (component[DIRTY]) {
@@ -381,12 +391,12 @@ function _renderToString(vnode, context, isSvgMode, selectValue, parent, asyncMo
381
391
  context = assign({}, context, component.getChildContext());
382
392
  }
383
393
 
384
- let isTopLevelFragment = rendered != null && rendered.type === Fragment && rendered.key == null;
394
+ let isTopLevelFragment = rendered != null && rendered.type === Fragment && rendered.key == null && rendered.props.tpl == null;
385
395
  rendered = isTopLevelFragment ? rendered.props.children : rendered;
386
- str = _renderToString(rendered, context, isSvgMode, selectValue, vnode, asyncMode, renderer);
396
+ return _renderToString(rendered, context, isSvgMode, selectValue, vnode, asyncMode, renderer);
387
397
  }
388
398
 
389
- return str;
399
+ return EMPTY_STR;
390
400
  } finally {
391
401
  if (afterDiff) afterDiff(vnode);
392
402
  vnode[PARENT] = null;
@@ -415,32 +425,33 @@ function _renderToString(vnode, context, isSvgMode, selectValue, parent, asyncMo
415
425
  if (res !== undefined) return res;
416
426
  let errorHook = options[CATCH_ERROR];
417
427
  if (errorHook) errorHook(error, vnode);
418
- return '';
428
+ return EMPTY_STR;
419
429
  }
420
430
 
421
431
  if (!asyncMode) throw error;
422
- if (!error || typeof error.then !== 'function') throw error;
432
+ if (!error || typeof error.then != 'function') throw error;
423
433
 
424
434
  const renderNestedChildren = () => {
425
435
  try {
426
436
  return _renderToString(rendered, context, isSvgMode, selectValue, vnode, asyncMode, renderer);
427
437
  } catch (e) {
428
- if (!e || typeof e.then !== 'function') throw e;
429
- return e.then(() => _renderToString(rendered, context, isSvgMode, selectValue, vnode, asyncMode, renderer), () => renderNestedChildren());
438
+ if (!e || typeof e.then != 'function') throw e;
439
+ return e.then(() => _renderToString(rendered, context, isSvgMode, selectValue, vnode, asyncMode, renderer), renderNestedChildren);
430
440
  }
431
441
  };
432
442
 
433
- return error.then(() => renderNestedChildren());
443
+ return error.then(renderNestedChildren);
434
444
  }
435
445
  } // Serialize Element VNodes to HTML
436
446
 
437
447
 
438
448
  let s = '<' + type,
439
- html = '',
449
+ html = EMPTY_STR,
440
450
  children;
441
451
 
442
452
  for (let name in props) {
443
453
  let v = props[name];
454
+ if (typeof v == 'function') continue;
444
455
 
445
456
  switch (name) {
446
457
  case 'children':
@@ -531,7 +542,7 @@ function _renderToString(vnode, context, isSvgMode, selectValue, parent, asyncMo
531
542
  // serialize boolean aria-xyz or draggable attribute values as strings
532
543
  // `draggable` is an enumerated attribute and not Boolean. A value of `true` or `false` is mandatory
533
544
  // https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/draggable
534
- v += '';
545
+ v = v + EMPTY_STR;
535
546
  } else if (isSvgMode) {
536
547
  if (SVG_CAMEL_CASE.test(name)) {
537
548
  name = name === 'panose1' ? 'panose-1' : name.replace(/([A-Z])/g, '-$1').toLowerCase();
@@ -543,11 +554,11 @@ function _renderToString(vnode, context, isSvgMode, selectValue, parent, asyncMo
543
554
  } // write this attribute to the buffer
544
555
 
545
556
 
546
- if (v != null && v !== false && typeof v !== 'function') {
547
- if (v === true || v === '') {
557
+ if (v != null && v !== false) {
558
+ if (v === true || v === EMPTY_STR) {
548
559
  s = s + ' ' + name;
549
560
  } else {
550
- s = s + ' ' + name + '="' + encodeEntities(v + '') + '"';
561
+ s = s + ' ' + name + '="' + (typeof v == 'string' ? encodeEntities(v) : v + EMPTY_STR) + '"';
551
562
  }
552
563
  }
553
564
  }
@@ -578,7 +589,7 @@ function _renderToString(vnode, context, isSvgMode, selectValue, parent, asyncMo
578
589
 
579
590
  const endTag = '</' + type + '>';
580
591
  const startTag = s + '>';
581
- if (Array.isArray(html)) return [startTag, ...html, endTag];else if (typeof html !== 'string') return [startTag, html, endTag];
592
+ if (isArray(html)) return [startTag, ...html, endTag];else if (typeof html != 'string') return [startTag, html, endTag];
582
593
  return startTag + html + endTag;
583
594
  }
584
595
 
@@ -1 +1 @@
1
- {"version":3,"file":"index.module.js","sources":["../../../src/lib/util.js","../../../src/lib/constants.js","../../../src/index.js","../../../src/lib/client.js","../../../src/lib/chunked.js","../../../src/stream-node.js"],"sourcesContent":["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]|^cell|^ch|^col|cont|cross|dateT|encT|form[A-Z]|frame|hrefL|inputM|maxL|minL|noV|playsI|popoverT|readO|rowS|spellC|src[A-Z]|tabI|useM|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// Necessary for createContext api. Setting this property will pass\n// the context value as `this.context` just for this component.\nexport function getContext(nodeName, context) {\n\tlet cxType = nodeName.contextType;\n\tlet provider = cxType && context[cxType.__c];\n\treturn cxType != null\n\t\t? provider\n\t\t\t? provider.props.value\n\t\t\t: cxType.__\n\t\t: context;\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","// Options hooks\nexport const DIFF = '__b';\nexport const RENDER = '__r';\nexport const DIFFED = 'diffed';\nexport const COMMIT = '__c';\nexport const SKIP_EFFECTS = '__s';\nexport const CATCH_ERROR = '__e';\n\n// VNode properties\nexport const COMPONENT = '__c';\nexport const CHILDREN = '__k';\nexport const PARENT = '__';\nexport const MASK = '__m';\n\n// Component properties\nexport const VNODE = '__v';\nexport const DIRTY = '__d';\nexport const NEXT_STATE = '__s';\nexport const CHILD_DID_SUSPEND = '__c';\n","import {\n\tencodeEntities,\n\tstyleObjToCss,\n\tUNSAFE_NAME,\n\tNAMESPACE_REPLACE_REGEX,\n\tHTML_LOWER_CASE,\n\tSVG_CAMEL_CASE\n} from './lib/util.js';\nimport { options, h, Fragment } from 'preact';\nimport {\n\tCHILDREN,\n\tCOMMIT,\n\tCOMPONENT,\n\tDIFF,\n\tDIFFED,\n\tDIRTY,\n\tNEXT_STATE,\n\tPARENT,\n\tRENDER,\n\tSKIP_EFFECTS,\n\tVNODE,\n\tCATCH_ERROR\n} from './lib/constants.js';\n\nconst EMPTY_ARR = [];\nconst isArray = Array.isArray;\nconst assign = Object.assign;\n\n// Global state for the current render pass\nlet beforeDiff, afterDiff, renderHook, ummountHook;\n\n/**\n * Render Preact JSX + Components to an HTML string.\n * @param {VNode} vnode\tJSX Element / VNode to render\n * @param {Object} [context={}] Initial root context object\n * @param {RendererState} [_rendererState] for internal use\n * @returns {string} serialized HTML\n */\nexport function renderToString(vnode, context, _rendererState) {\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\t// store options hooks once before each synchronous render call\n\tbeforeDiff = options[DIFF];\n\tafterDiff = options[DIFFED];\n\trenderHook = options[RENDER];\n\tummountHook = options.unmount;\n\n\tconst parent = h(Fragment, null);\n\tparent[CHILDREN] = [vnode];\n\n\ttry {\n\t\tconst rendered = _renderToString(\n\t\t\tvnode,\n\t\t\tcontext || EMPTY_OBJ,\n\t\t\tfalse,\n\t\t\tundefined,\n\t\t\tparent,\n\t\t\tfalse,\n\t\t\t_rendererState\n\t\t);\n\n\t\tif (Array.isArray(rendered)) {\n\t\t\treturn rendered.join('');\n\t\t}\n\t\treturn rendered;\n\t} catch (e) {\n\t\tif (e.then) {\n\t\t\tthrow new Error('Use \"renderToStringAsync\" for suspenseful rendering.');\n\t\t}\n\n\t\tthrow e;\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\n/**\n * Render Preact JSX + Components to an HTML string.\n * @param {VNode} vnode\tJSX Element / VNode to render\n * @param {Object} [context={}] Initial root context object\n * @returns {string} serialized HTML\n */\nexport async function renderToStringAsync(vnode, context) {\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\t// store options hooks once before each synchronous render call\n\tbeforeDiff = options[DIFF];\n\tafterDiff = options[DIFFED];\n\trenderHook = options[RENDER];\n\tummountHook = options.unmount;\n\n\tconst parent = h(Fragment, null);\n\tparent[CHILDREN] = [vnode];\n\n\ttry {\n\t\tconst rendered = await _renderToString(\n\t\t\tvnode,\n\t\t\tcontext || EMPTY_OBJ,\n\t\t\tfalse,\n\t\t\tundefined,\n\t\t\tparent,\n\t\t\ttrue,\n\t\t\tundefined\n\t\t);\n\n\t\tif (Array.isArray(rendered)) {\n\t\t\tlet count = 0;\n\t\t\tlet resolved = rendered;\n\n\t\t\t// Resolving nested Promises with a maximum depth of 25\n\t\t\twhile (\n\t\t\t\tresolved.some(\n\t\t\t\t\t(element) => element && typeof element.then === 'function'\n\t\t\t\t) &&\n\t\t\t\tcount++ < 25\n\t\t\t) {\n\t\t\t\tresolved = (await Promise.all(resolved)).flat();\n\t\t\t}\n\n\t\t\treturn resolved.join('');\n\t\t}\n\n\t\treturn rendered;\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\n// Installed as setState/forceUpdate for function components\nfunction markAsDirty() {\n\tthis.__d = true;\n}\n\nconst EMPTY_OBJ = {};\n\n/**\n * @param {VNode} vnode\n * @param {Record<string, unknown>} context\n */\nfunction renderClassComponent(vnode, context) {\n\tlet type = /** @type {import(\"preact\").ComponentClass<typeof vnode.props>} */ (vnode.type);\n\n\tlet isMounting = true;\n\tlet c;\n\tif (vnode[COMPONENT]) {\n\t\tisMounting = false;\n\t\tc = vnode[COMPONENT];\n\t\tc.state = c[NEXT_STATE];\n\t} else {\n\t\tc = new type(vnode.props, context);\n\t}\n\n\tvnode[COMPONENT] = c;\n\tc[VNODE] = vnode;\n\n\tc.props = vnode.props;\n\tc.context = context;\n\t// turn off stateful re-rendering:\n\tc[DIRTY] = true;\n\n\tif (c.state == null) c.state = EMPTY_OBJ;\n\n\tif (c[NEXT_STATE] == null) {\n\t\tc[NEXT_STATE] = c.state;\n\t}\n\n\tif (type.getDerivedStateFromProps) {\n\t\tc.state = assign(\n\t\t\t{},\n\t\t\tc.state,\n\t\t\ttype.getDerivedStateFromProps(c.props, c.state)\n\t\t);\n\t} else if (isMounting && c.componentWillMount) {\n\t\tc.componentWillMount();\n\n\t\t// If the user called setState in cWM we need to flush pending,\n\t\t// state updates. This is the same behaviour in React.\n\t\tc.state = c[NEXT_STATE] !== c.state ? c[NEXT_STATE] : c.state;\n\t} else if (!isMounting && c.componentWillUpdate) {\n\t\tc.componentWillUpdate();\n\t}\n\n\tif (renderHook) renderHook(vnode);\n\n\treturn c.render(c.props, c.state, context);\n}\n\n/**\n * Recursively render VNodes to HTML.\n * @param {VNode|any} vnode\n * @param {any} context\n * @param {boolean} isSvgMode\n * @param {any} selectValue\n * @param {VNode} parent\n * @param {boolean} asyncMode\n * @param {RendererState | undefined} [renderer]\n * @returns {string | Promise<string> | (string | Promise<string>)[]}\n */\nfunction _renderToString(\n\tvnode,\n\tcontext,\n\tisSvgMode,\n\tselectValue,\n\tparent,\n\tasyncMode,\n\trenderer\n) {\n\t// Ignore non-rendered VNodes/values\n\tif (vnode == null || vnode === true || vnode === false || vnode === '') {\n\t\treturn '';\n\t}\n\n\t// Text VNodes: escape as HTML\n\tif (typeof vnode !== 'object') {\n\t\tif (typeof vnode === 'function') return '';\n\t\treturn encodeEntities(vnode + '');\n\t}\n\n\t// Recurse into children / Arrays\n\tif (isArray(vnode)) {\n\t\tlet rendered = '',\n\t\t\trenderArray;\n\t\tparent[CHILDREN] = vnode;\n\t\tfor (let i = 0; i < vnode.length; i++) {\n\t\t\tlet child = vnode[i];\n\t\t\tif (child == null || typeof child === 'boolean') continue;\n\n\t\t\tconst childRender = _renderToString(\n\t\t\t\tchild,\n\t\t\t\tcontext,\n\t\t\t\tisSvgMode,\n\t\t\t\tselectValue,\n\t\t\t\tparent,\n\t\t\t\tasyncMode,\n\t\t\t\trenderer\n\t\t\t);\n\n\t\t\tif (typeof childRender === 'string') {\n\t\t\t\trendered += childRender;\n\t\t\t} else {\n\t\t\t\trenderArray = renderArray || [];\n\n\t\t\t\tif (rendered) renderArray.push(rendered);\n\n\t\t\t\trendered = '';\n\n\t\t\t\tif (Array.isArray(childRender)) {\n\t\t\t\t\trenderArray.push(...childRender);\n\t\t\t\t} else {\n\t\t\t\t\trenderArray.push(childRender);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (renderArray) {\n\t\t\tif (rendered) renderArray.push(rendered);\n\t\t\treturn renderArray;\n\t\t}\n\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\tvnode[PARENT] = parent;\n\tif (beforeDiff) beforeDiff(vnode);\n\n\tlet type = vnode.type,\n\t\tprops = vnode.props,\n\t\tcctx = context,\n\t\tcontextType,\n\t\trendered,\n\t\tcomponent;\n\n\t// Invoke rendering on Components\n\tif (typeof type === 'function') {\n\t\tif (type === Fragment) {\n\t\t\t// Serialized precompiled JSX.\n\t\t\tif (props.tpl) {\n\t\t\t\tlet out = '';\n\t\t\t\tfor (let i = 0; i < props.tpl.length; i++) {\n\t\t\t\t\tout += props.tpl[i];\n\n\t\t\t\t\tif (props.exprs && i < props.exprs.length) {\n\t\t\t\t\t\tconst value = props.exprs[i];\n\t\t\t\t\t\tif (value == null) continue;\n\n\t\t\t\t\t\t// Check if we're dealing with a vnode or an array of nodes\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\ttypeof value === 'object' &&\n\t\t\t\t\t\t\t(value.constructor === undefined || isArray(value))\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tout += _renderToString(\n\t\t\t\t\t\t\t\tvalue,\n\t\t\t\t\t\t\t\tcontext,\n\t\t\t\t\t\t\t\tisSvgMode,\n\t\t\t\t\t\t\t\tselectValue,\n\t\t\t\t\t\t\t\tvnode,\n\t\t\t\t\t\t\t\tasyncMode,\n\t\t\t\t\t\t\t\trenderer\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// Values are pre-escaped by the JSX transform\n\t\t\t\t\t\t\tout += value;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn out;\n\t\t\t} else if (props.UNSTABLE_comment) {\n\t\t\t\t// Fragments are the least used components of core that's why\n\t\t\t\t// branching here for comments has the least effect on perf.\n\t\t\t\treturn '<!--' + encodeEntities(props.UNSTABLE_comment || '') + '-->';\n\t\t\t}\n\n\t\t\trendered = props.children;\n\t\t} else {\n\t\t\tcontextType = type.contextType;\n\t\t\tif (contextType != null) {\n\t\t\t\tlet provider = context[contextType.__c];\n\t\t\t\tcctx = provider ? provider.props.value : contextType.__;\n\t\t\t}\n\n\t\t\tif (type.prototype && typeof type.prototype.render === 'function') {\n\t\t\t\trendered = /**#__NOINLINE__**/ renderClassComponent(vnode, cctx);\n\t\t\t\tcomponent = vnode[COMPONENT];\n\t\t\t} else {\n\t\t\t\tcomponent = {\n\t\t\t\t\t__v: vnode,\n\t\t\t\t\tprops,\n\t\t\t\t\tcontext: cctx,\n\t\t\t\t\t// silently drop state updates\n\t\t\t\t\tsetState: markAsDirty,\n\t\t\t\t\tforceUpdate: markAsDirty,\n\t\t\t\t\t__d: true,\n\t\t\t\t\t// hooks\n\t\t\t\t\t__h: []\n\t\t\t\t};\n\t\t\t\tvnode[COMPONENT] = component;\n\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 (component[DIRTY] && count++ < 25) {\n\t\t\t\t\tcomponent[DIRTY] = false;\n\n\t\t\t\t\tif (renderHook) renderHook(vnode);\n\n\t\t\t\t\trendered = type.call(component, props, cctx);\n\t\t\t\t}\n\t\t\t\tcomponent[DIRTY] = true;\n\t\t\t}\n\n\t\t\tif (component.getChildContext != null) {\n\t\t\t\tcontext = assign({}, context, component.getChildContext());\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\t(type.getDerivedStateFromError || component.componentDidCatch) &&\n\t\t\t\toptions.errorBoundaries\n\t\t\t) {\n\t\t\t\tlet str = '';\n\t\t\t\t// When a component returns a Fragment node we flatten it in core, so we\n\t\t\t\t// need to mirror that logic here too\n\t\t\t\tlet isTopLevelFragment =\n\t\t\t\t\trendered != null &&\n\t\t\t\t\trendered.type === Fragment &&\n\t\t\t\t\trendered.key == null;\n\t\t\t\trendered = isTopLevelFragment ? rendered.props.children : rendered;\n\n\t\t\t\ttry {\n\t\t\t\t\tstr = _renderToString(\n\t\t\t\t\t\trendered,\n\t\t\t\t\t\tcontext,\n\t\t\t\t\t\tisSvgMode,\n\t\t\t\t\t\tselectValue,\n\t\t\t\t\t\tvnode,\n\t\t\t\t\t\tasyncMode,\n\t\t\t\t\t\trenderer\n\t\t\t\t\t);\n\t\t\t\t\treturn str;\n\t\t\t\t} catch (err) {\n\t\t\t\t\tif (type.getDerivedStateFromError) {\n\t\t\t\t\t\tcomponent[NEXT_STATE] = type.getDerivedStateFromError(err);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (component.componentDidCatch) {\n\t\t\t\t\t\tcomponent.componentDidCatch(err, {});\n\t\t\t\t\t}\n\n\t\t\t\t\tif (component[DIRTY]) {\n\t\t\t\t\t\trendered = renderClassComponent(vnode, context);\n\t\t\t\t\t\tcomponent = vnode[COMPONENT];\n\n\t\t\t\t\t\tif (component.getChildContext != null) {\n\t\t\t\t\t\t\tcontext = assign({}, context, component.getChildContext());\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tlet isTopLevelFragment =\n\t\t\t\t\t\t\trendered != null &&\n\t\t\t\t\t\t\trendered.type === Fragment &&\n\t\t\t\t\t\t\trendered.key == null;\n\t\t\t\t\t\trendered = isTopLevelFragment ? rendered.props.children : rendered;\n\n\t\t\t\t\t\tstr = _renderToString(\n\t\t\t\t\t\t\trendered,\n\t\t\t\t\t\t\tcontext,\n\t\t\t\t\t\t\tisSvgMode,\n\t\t\t\t\t\t\tselectValue,\n\t\t\t\t\t\t\tvnode,\n\t\t\t\t\t\t\tasyncMode,\n\t\t\t\t\t\t\trenderer\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\n\t\t\t\t\treturn str;\n\t\t\t\t} finally {\n\t\t\t\t\tif (afterDiff) afterDiff(vnode);\n\t\t\t\t\tvnode[PARENT] = null;\n\n\t\t\t\t\tif (ummountHook) ummountHook(vnode);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// When a component returns a Fragment node we flatten it in core, so we\n\t\t// need to mirror that logic here too\n\t\tlet isTopLevelFragment =\n\t\t\trendered != null &&\n\t\t\trendered.type === Fragment &&\n\t\t\trendered.key == null &&\n\t\t\trendered.props.tpl == null;\n\t\trendered = isTopLevelFragment ? rendered.props.children : rendered;\n\n\t\ttry {\n\t\t\t// Recurse into children before invoking the after-diff hook\n\t\t\tconst str = _renderToString(\n\t\t\t\trendered,\n\t\t\t\tcontext,\n\t\t\t\tisSvgMode,\n\t\t\t\tselectValue,\n\t\t\t\tvnode,\n\t\t\t\tasyncMode,\n\t\t\t\trenderer\n\t\t\t);\n\n\t\t\tif (afterDiff) afterDiff(vnode);\n\t\t\t// when we are dealing with suspense we can't do this...\n\t\t\tvnode[PARENT] = null;\n\n\t\t\tif (options.unmount) options.unmount(vnode);\n\n\t\t\treturn str;\n\t\t} catch (error) {\n\t\t\tif (!asyncMode && renderer && renderer.onError) {\n\t\t\t\tlet res = renderer.onError(error, vnode, (child) =>\n\t\t\t\t\t_renderToString(\n\t\t\t\t\t\tchild,\n\t\t\t\t\t\tcontext,\n\t\t\t\t\t\tisSvgMode,\n\t\t\t\t\t\tselectValue,\n\t\t\t\t\t\tvnode,\n\t\t\t\t\t\tasyncMode,\n\t\t\t\t\t\trenderer\n\t\t\t\t\t)\n\t\t\t\t);\n\n\t\t\t\tif (res !== undefined) return res;\n\n\t\t\t\tlet errorHook = options[CATCH_ERROR];\n\t\t\t\tif (errorHook) errorHook(error, vnode);\n\t\t\t\treturn '';\n\t\t\t}\n\n\t\t\tif (!asyncMode) throw error;\n\n\t\t\tif (!error || typeof error.then !== 'function') throw error;\n\n\t\t\tconst renderNestedChildren = () => {\n\t\t\t\ttry {\n\t\t\t\t\treturn _renderToString(\n\t\t\t\t\t\trendered,\n\t\t\t\t\t\tcontext,\n\t\t\t\t\t\tisSvgMode,\n\t\t\t\t\t\tselectValue,\n\t\t\t\t\t\tvnode,\n\t\t\t\t\t\tasyncMode,\n\t\t\t\t\t\trenderer\n\t\t\t\t\t);\n\t\t\t\t} catch (e) {\n\t\t\t\t\tif (!e || typeof e.then !== 'function') throw e;\n\n\t\t\t\t\treturn e.then(\n\t\t\t\t\t\t() =>\n\t\t\t\t\t\t\t_renderToString(\n\t\t\t\t\t\t\t\trendered,\n\t\t\t\t\t\t\t\tcontext,\n\t\t\t\t\t\t\t\tisSvgMode,\n\t\t\t\t\t\t\t\tselectValue,\n\t\t\t\t\t\t\t\tvnode,\n\t\t\t\t\t\t\t\tasyncMode,\n\t\t\t\t\t\t\t\trenderer\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t() => renderNestedChildren()\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t};\n\n\t\t\treturn error.then(() => renderNestedChildren());\n\t\t}\n\t}\n\n\t// Serialize Element VNodes to HTML\n\tlet s = '<' + type,\n\t\thtml = '',\n\t\tchildren;\n\n\tfor (let name in props) {\n\t\tlet v = props[name];\n\n\t\tswitch (name) {\n\t\t\tcase 'children':\n\t\t\t\tchildren = v;\n\t\t\t\tcontinue;\n\n\t\t\t// VDOM-specific props\n\t\t\tcase 'key':\n\t\t\tcase 'ref':\n\t\t\tcase '__self':\n\t\t\tcase '__source':\n\t\t\t\tcontinue;\n\n\t\t\t// prefer for/class over htmlFor/className\n\t\t\tcase 'htmlFor':\n\t\t\t\tif ('for' in props) continue;\n\t\t\t\tname = 'for';\n\t\t\t\tbreak;\n\t\t\tcase 'className':\n\t\t\t\tif ('class' in props) continue;\n\t\t\t\tname = 'class';\n\t\t\t\tbreak;\n\n\t\t\t// Form element reflected properties\n\t\t\tcase 'defaultChecked':\n\t\t\t\tname = 'checked';\n\t\t\t\tbreak;\n\t\t\tcase 'defaultSelected':\n\t\t\t\tname = 'selected';\n\t\t\t\tbreak;\n\n\t\t\t// Special value attribute handling\n\t\t\tcase 'defaultValue':\n\t\t\tcase 'value':\n\t\t\t\tname = 'value';\n\t\t\t\tswitch (type) {\n\t\t\t\t\t// <textarea value=\"a&b\"> --> <textarea>a&amp;b</textarea>\n\t\t\t\t\tcase 'textarea':\n\t\t\t\t\t\tchildren = v;\n\t\t\t\t\t\tcontinue;\n\n\t\t\t\t\t// <select value> is serialized as a selected attribute on the matching option child\n\t\t\t\t\tcase 'select':\n\t\t\t\t\t\tselectValue = v;\n\t\t\t\t\t\tcontinue;\n\n\t\t\t\t\t// Add a selected attribute to <option> if its value matches the parent <select> value\n\t\t\t\t\tcase 'option':\n\t\t\t\t\t\tif (selectValue == v && !('selected' in props)) {\n\t\t\t\t\t\t\ts = s + ' selected';\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 'dangerouslySetInnerHTML':\n\t\t\t\thtml = v && v.__html;\n\t\t\t\tcontinue;\n\n\t\t\t// serialize object styles to a CSS string\n\t\t\tcase 'style':\n\t\t\t\tif (typeof v === 'object') {\n\t\t\t\t\tv = styleObjToCss(v);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 'acceptCharset':\n\t\t\t\tname = 'accept-charset';\n\t\t\t\tbreak;\n\t\t\tcase 'httpEquiv':\n\t\t\t\tname = 'http-equiv';\n\t\t\t\tbreak;\n\n\t\t\tdefault: {\n\t\t\t\tif (NAMESPACE_REPLACE_REGEX.test(name)) {\n\t\t\t\t\tname = name.replace(NAMESPACE_REPLACE_REGEX, '$1:$2').toLowerCase();\n\t\t\t\t} else if (UNSAFE_NAME.test(name)) {\n\t\t\t\t\tcontinue;\n\t\t\t\t} else if ((name[4] === '-' || name === 'draggable') && v != null) {\n\t\t\t\t\t// serialize boolean aria-xyz or draggable attribute values as strings\n\t\t\t\t\t// `draggable` is an enumerated attribute and not Boolean. A value of `true` or `false` is mandatory\n\t\t\t\t\t// https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/draggable\n\t\t\t\t\tv += '';\n\t\t\t\t} else if (isSvgMode) {\n\t\t\t\t\tif (SVG_CAMEL_CASE.test(name)) {\n\t\t\t\t\t\tname =\n\t\t\t\t\t\t\tname === 'panose1'\n\t\t\t\t\t\t\t\t? 'panose-1'\n\t\t\t\t\t\t\t\t: name.replace(/([A-Z])/g, '-$1').toLowerCase();\n\t\t\t\t\t}\n\t\t\t\t} else if (HTML_LOWER_CASE.test(name)) {\n\t\t\t\t\tname = name.toLowerCase();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// write this attribute to the buffer\n\t\tif (v != null && v !== false && typeof v !== 'function') {\n\t\t\tif (v === true || v === '') {\n\t\t\t\ts = s + ' ' + name;\n\t\t\t} else {\n\t\t\t\ts = s + ' ' + name + '=\"' + encodeEntities(v + '') + '\"';\n\t\t\t}\n\t\t}\n\t}\n\n\tif (UNSAFE_NAME.test(type)) {\n\t\t// this seems to performs a lot better than throwing\n\t\t// return '<!-- -->';\n\t\tthrow new Error(`${type} is not a valid HTML tag name in ${s}>`);\n\t}\n\n\tif (html) {\n\t\t// dangerouslySetInnerHTML defined this node's contents\n\t} else if (typeof children === 'string') {\n\t\t// single text child\n\t\thtml = encodeEntities(children);\n\t} else if (children != null && children !== false && children !== true) {\n\t\t// recurse into this element VNode's children\n\t\tlet childSvgMode =\n\t\t\ttype === 'svg' || (type !== 'foreignObject' && isSvgMode);\n\t\thtml = _renderToString(\n\t\t\tchildren,\n\t\t\tcontext,\n\t\t\tchildSvgMode,\n\t\t\tselectValue,\n\t\t\tvnode,\n\t\t\tasyncMode,\n\t\t\trenderer\n\t\t);\n\t}\n\n\tif (afterDiff) afterDiff(vnode);\n\n\t// TODO: this was commented before\n\tvnode[PARENT] = null;\n\n\tif (ummountHook) ummountHook(vnode);\n\n\t// Emit self-closing tag for empty void elements:\n\tif (!html && SELF_CLOSING.has(type)) {\n\t\treturn s + '/>';\n\t}\n\n\tconst endTag = '</' + type + '>';\n\tconst startTag = s + '>';\n\n\tif (Array.isArray(html)) return [startTag, ...html, endTag];\n\telse if (typeof html !== 'string') return [startTag, html, endTag];\n\treturn startTag + html + endTag;\n}\n\nconst SELF_CLOSING = new Set([\n\t'area',\n\t'base',\n\t'br',\n\t'col',\n\t'command',\n\t'embed',\n\t'hr',\n\t'img',\n\t'input',\n\t'keygen',\n\t'link',\n\t'meta',\n\t'param',\n\t'source',\n\t'track',\n\t'wbr'\n]);\n\nexport default renderToString;\nexport const render = renderToString;\nexport const renderToStaticMarkup = renderToString;\n","/* eslint-disable no-var, key-spacing, object-curly-spacing, prefer-arrow-callback, semi, keyword-spacing */\n\n// function initPreactIslandElement() {\n// \tclass PreactIslandElement extends HTMLElement {\n// \t\tconnectedCallback() {\n// \t\t\tvar d = this;\n// \t\t\tif (!d.isConnected) return;\n\n// \t\t\tlet i = this.getAttribute('data-target');\n// \t\t\tif (!i) return;\n\n// \t\t\tvar s,\n// \t\t\t\te,\n// \t\t\t\tc = document.createNodeIterator(document, 128);\n// \t\t\twhile (c.nextNode()) {\n// \t\t\t\tlet n = c.referenceNode;\n\n// \t\t\t\tif (n.data == 'preact-island:' + i) s = n;\n// \t\t\t\telse if (n.data == '/preact-island:' + i) e = n;\n// \t\t\t\tif (s && e) break;\n// \t\t\t}\n// \t\t\tif (s && e) {\n// \t\t\t\trequestAnimationFrame(() => {\n// \t\t\t\t\tvar p = e.previousSibling;\n// \t\t\t\t\twhile (p != s) {\n// \t\t\t\t\t\tif (!p || p == s) break;\n// \t\t\t\t\t\te.parentNode.removeChild(p);\n// \t\t\t\t\t\tp = e.previousSibling;\n// \t\t\t\t\t}\n\n// \t\t\t\t\tc = s;\n// \t\t\t\t\twhile (d.firstChild) {\n// \t\t\t\t\t\ts = d.firstChild;\n// \t\t\t\t\t\td.removeChild(s);\n// \t\t\t\t\t\tc.after(s);\n// \t\t\t\t\t\tc = s;\n// \t\t\t\t\t}\n\n// \t\t\t\t\td.parentNode.removeChild(d);\n// \t\t\t\t});\n// \t\t\t}\n// \t\t}\n// \t}\n\n// \tcustomElements.define('preact-island', PreactIslandElement);\n// }\n\n// To modify the INIT_SCRIPT, uncomment the above code, modify it, and paste it into https://try.terser.org/.\nconst INIT_SCRIPT = `class e extends HTMLElement{connectedCallback(){var e=this;if(!e.isConnected)return;let t=this.getAttribute(\"data-target\");if(t){for(var r,a,i=document.createNodeIterator(document,128);i.nextNode();){let e=i.referenceNode;if(e.data==\"preact-island:\"+t?r=e:e.data==\"/preact-island:\"+t&&(a=e),r&&a)break}r&&a&&requestAnimationFrame((()=>{for(var t=a.previousSibling;t!=r&&t&&t!=r;)a.parentNode.removeChild(t),t=a.previousSibling;for(i=r;e.firstChild;)r=e.firstChild,e.removeChild(r),i.after(r),i=r;e.parentNode.removeChild(e)}))}}}customElements.define(\"preact-island\",e);`;\n\nexport function createInitScript() {\n\treturn `<script>(function(){${INIT_SCRIPT}}())</script>`;\n}\n\n/**\n * @param {string} id\n * @param {string} content\n * @returns {string}\n */\nexport function createSubtree(id, content) {\n\treturn `<preact-island hidden data-target=\"${id}\">${content}</preact-island>`;\n}\n","import { renderToString } from '../index.js';\nimport { CHILD_DID_SUSPEND, COMPONENT, PARENT } from './constants.js';\nimport { Deferred } from './util.js';\nimport { createInitScript, createSubtree } from './client.js';\n\n/**\n * @param {VNode} vnode\n * @param {RenderToChunksOptions} options\n * @returns {Promise<void>}\n */\nexport async function renderToChunks(vnode, { context, onWrite, abortSignal }) {\n\tcontext = context || {};\n\n\t/** @type {RendererState} */\n\tconst renderer = {\n\t\tstart: Date.now(),\n\t\tabortSignal,\n\t\tonWrite,\n\t\tonError: handleError,\n\t\tsuspended: []\n\t};\n\n\t// Synchronously render the shell\n\t// @ts-ignore - using third internal RendererState argument\n\tconst shell = renderToString(vnode, context, renderer);\n\tonWrite(shell);\n\n\t// Wait for any suspended sub-trees if there are any\n\tconst len = renderer.suspended.length;\n\tif (len > 0) {\n\t\tonWrite('<div hidden>');\n\t\tonWrite(createInitScript(len));\n\t\t// We should keep checking all promises\n\t\tawait forkPromises(renderer);\n\t\tonWrite('</div>');\n\t}\n}\n\nasync function forkPromises(renderer) {\n\tif (renderer.suspended.length > 0) {\n\t\tconst suspensions = [...renderer.suspended];\n\t\tawait Promise.all(renderer.suspended.map((s) => s.promise));\n\t\trenderer.suspended = renderer.suspended.filter(\n\t\t\t(s) => !suspensions.includes(s)\n\t\t);\n\t\tawait forkPromises(renderer);\n\t}\n}\n\n/** @type {RendererErrorHandler} */\nfunction handleError(error, vnode, renderChild) {\n\tif (!error || !error.then) return;\n\n\t// walk up to the Suspense boundary\n\twhile ((vnode = vnode[PARENT])) {\n\t\tlet component = vnode[COMPONENT];\n\t\tif (component && component[CHILD_DID_SUSPEND]) {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\tif (!vnode) return;\n\n\tconst id = vnode.__v;\n\tconst found = this.suspended.find((x) => x.id === id);\n\tconst race = new Deferred();\n\n\tconst abortSignal = this.abortSignal;\n\tif (abortSignal) {\n\t\t// @ts-ignore 2554 - implicit undefined arg\n\t\tif (abortSignal.aborted) race.resolve();\n\t\telse abortSignal.addEventListener('abort', race.resolve);\n\t}\n\n\tconst promise = error.then(\n\t\t() => {\n\t\t\tif (abortSignal && abortSignal.aborted) return;\n\t\t\tconst child = renderChild(vnode.props.children);\n\t\t\tif (child) this.onWrite(createSubtree(id, child));\n\t\t},\n\t\t// TODO: Abort and send hydration code snippet to client\n\t\t// to attempt to recover during hydration\n\t\tthis.onError\n\t);\n\n\tthis.suspended.push({\n\t\tid,\n\t\tvnode,\n\t\tpromise: Promise.race([promise, race.promise])\n\t});\n\n\tconst fallback = renderChild(vnode.props.fallback);\n\n\treturn found\n\t\t? ''\n\t\t: `<!--preact-island:${id}-->${fallback}<!--/preact-island:${id}-->`;\n}\n","import { PassThrough } from 'node:stream';\nimport { renderToChunks } from './lib/chunked.js';\n\n/**\n * @typedef {object} RenderToPipeableStreamOptions\n * @property {() => void} [onShellReady]\n * @property {() => void} [onAllReady]\n * @property {(error) => void} [onError]\n */\n\n/**\n * @typedef {object} PipeableStream\n * @property {() => void} abort\n * @property {(writable: import('stream').Writable) => void} pipe\n */\n\n/**\n * @param {import('preact').VNode} vnode\n * @param {RenderToPipeableStreamOptions} options\n * @param {any} [context]\n * @returns {PipeableStream}\n */\nexport function renderToPipeableStream(vnode, options, context) {\n\tconst encoder = new TextEncoder('utf-8');\n\n\tconst controller = new AbortController();\n\tconst stream = new PassThrough();\n\n\trenderToChunks(vnode, {\n\t\tcontext,\n\t\tabortSignal: controller.signal,\n\t\tonError: (error) => {\n\t\t\tif (options.onError) {\n\t\t\t\toptions.onError(error);\n\t\t\t}\n\t\t\tcontroller.abort(error);\n\t\t},\n\t\tonWrite(s) {\n\t\t\tstream.write(encoder.encode(s));\n\t\t}\n\t})\n\t\t.then(() => {\n\t\t\toptions.onAllReady && options.onAllReady();\n\t\t\tstream.end();\n\t\t})\n\t\t.catch((error) => {\n\t\t\tstream.destroy(error);\n\t\t});\n\n\tPromise.resolve().then(() => {\n\t\toptions.onShellReady && options.onShellReady();\n\t});\n\n\treturn {\n\t\tabort() {\n\t\t\tcontroller.abort();\n\t\t\tstream.destroy(new Error('aborted'));\n\t\t},\n\t\t/**\n\t\t * @param {import(\"stream\").Writable} writable\n\t\t */\n\t\tpipe(writable) {\n\t\t\tstream.pipe(writable, { end: true });\n\t\t}\n\t};\n}\n"],"names":["UNSAFE_NAME","NAMESPACE_REPLACE_REGEX","HTML_LOWER_CASE","SVG_CAMEL_CASE","ENCODED_ENTITIES","encodeEntities","str","length","test","last","i","out","ch","charCodeAt","slice","JS_TO_CSS","IS_NON_DIMENSIONAL","Set","CSS_REGEX","styleObjToCss","s","prop","val","name","replace","toLowerCase","suffix","startsWith","has","undefined","Deferred","constructor","promise","Promise","resolve","reject","DIFF","RENDER","DIFFED","COMMIT","SKIP_EFFECTS","CATCH_ERROR","COMPONENT","CHILDREN","PARENT","VNODE","DIRTY","NEXT_STATE","CHILD_DID_SUSPEND","EMPTY_ARR","isArray","Array","assign","Object","beforeDiff","afterDiff","renderHook","ummountHook","renderToString","vnode","context","_rendererState","previousSkipEffects","options","unmount","parent","h","Fragment","rendered","_renderToString","EMPTY_OBJ","join","e","then","Error","markAsDirty","__d","renderClassComponent","type","isMounting","c","state","props","getDerivedStateFromProps","componentWillMount","componentWillUpdate","render","isSvgMode","selectValue","asyncMode","renderer","renderArray","child","childRender","push","cctx","contextType","component","tpl","exprs","value","UNSTABLE_comment","children","provider","__c","__","prototype","__v","setState","forceUpdate","__h","count","call","getChildContext","getDerivedStateFromError","componentDidCatch","errorBoundaries","isTopLevelFragment","key","err","error","onError","res","errorHook","renderNestedChildren","html","v","__html","childSvgMode","SELF_CLOSING","endTag","startTag","INIT_SCRIPT","createInitScript","createSubtree","id","content","renderToChunks","onWrite","abortSignal","start","Date","now","handleError","suspended","shell","len","forkPromises","suspensions","all","map","filter","includes","renderChild","found","find","x","race","aborted","addEventListener","fallback","renderToPipeableStream","encoder","TextEncoder","controller","AbortController","stream","PassThrough","signal","abort","write","encode","onAllReady","end","catch","destroy","onShellReady","pipe","writable"],"mappings":"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"}
1
+ {"version":3,"file":"index.module.js","sources":["../../../src/lib/util.js","../../../src/lib/constants.js","../../../src/index.js","../../../src/lib/client.js","../../../src/lib/chunked.js","../../../src/stream-node.js"],"sourcesContent":["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]|^cell|^ch|^col|cont|cross|dateT|encT|form[A-Z]|frame|hrefL|inputM|maxL|minL|noV|playsI|popoverT|readO|rowS|spellC|src[A-Z]|tabI|useM|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 = out + str.slice(last, i);\n\t\tout = out + 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 = 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: new Array(0)\n\t};\n}\n\n// Necessary for createContext api. Setting this property will pass\n// the context value as `this.context` just for this component.\nexport function getContext(nodeName, context) {\n\tlet cxType = nodeName.contextType;\n\tlet provider = cxType && context[cxType.__c];\n\treturn cxType != null\n\t\t? provider\n\t\t\t? provider.props.value\n\t\t\t: cxType.__\n\t\t: context;\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","// Options hooks\nexport const DIFF = '__b';\nexport const RENDER = '__r';\nexport const DIFFED = 'diffed';\nexport const COMMIT = '__c';\nexport const SKIP_EFFECTS = '__s';\nexport const CATCH_ERROR = '__e';\n\n// VNode properties\nexport const COMPONENT = '__c';\nexport const CHILDREN = '__k';\nexport const PARENT = '__';\nexport const MASK = '__m';\n\n// Component properties\nexport const VNODE = '__v';\nexport const DIRTY = '__d';\nexport const NEXT_STATE = '__s';\nexport const CHILD_DID_SUSPEND = '__c';\n","import {\n\tencodeEntities,\n\tstyleObjToCss,\n\tUNSAFE_NAME,\n\tNAMESPACE_REPLACE_REGEX,\n\tHTML_LOWER_CASE,\n\tSVG_CAMEL_CASE,\n\tcreateComponent\n} from './lib/util.js';\nimport { options, h, Fragment } from 'preact';\nimport {\n\tCHILDREN,\n\tCOMMIT,\n\tCOMPONENT,\n\tDIFF,\n\tDIFFED,\n\tDIRTY,\n\tNEXT_STATE,\n\tPARENT,\n\tRENDER,\n\tSKIP_EFFECTS,\n\tVNODE,\n\tCATCH_ERROR\n} from './lib/constants.js';\n\nconst EMPTY_OBJ = {};\nconst EMPTY_ARR = [];\nconst isArray = Array.isArray;\nconst assign = Object.assign;\nconst EMPTY_STR = '';\n\n// Global state for the current render pass\nlet beforeDiff, afterDiff, renderHook, ummountHook;\n\n/**\n * Render Preact JSX + Components to an HTML string.\n * @param {VNode} vnode\tJSX Element / VNode to render\n * @param {Object} [context={}] Initial root context object\n * @param {RendererState} [_rendererState] for internal use\n * @returns {string} serialized HTML\n */\nexport function renderToString(vnode, context, _rendererState) {\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\t// store options hooks once before each synchronous render call\n\tbeforeDiff = options[DIFF];\n\tafterDiff = options[DIFFED];\n\trenderHook = options[RENDER];\n\tummountHook = options.unmount;\n\n\tconst parent = h(Fragment, null);\n\tparent[CHILDREN] = [vnode];\n\n\ttry {\n\t\tconst rendered = _renderToString(\n\t\t\tvnode,\n\t\t\tcontext || EMPTY_OBJ,\n\t\t\tfalse,\n\t\t\tundefined,\n\t\t\tparent,\n\t\t\tfalse,\n\t\t\t_rendererState\n\t\t);\n\n\t\tif (isArray(rendered)) {\n\t\t\treturn rendered.join(EMPTY_STR);\n\t\t}\n\t\treturn rendered;\n\t} catch (e) {\n\t\tif (e.then) {\n\t\t\tthrow new Error('Use \"renderToStringAsync\" for suspenseful rendering.');\n\t\t}\n\n\t\tthrow e;\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\n/**\n * Render Preact JSX + Components to an HTML string.\n * @param {VNode} vnode\tJSX Element / VNode to render\n * @param {Object} [context={}] Initial root context object\n * @returns {string} serialized HTML\n */\nexport async function renderToStringAsync(vnode, context) {\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\t// store options hooks once before each synchronous render call\n\tbeforeDiff = options[DIFF];\n\tafterDiff = options[DIFFED];\n\trenderHook = options[RENDER];\n\tummountHook = options.unmount;\n\n\tconst parent = h(Fragment, null);\n\tparent[CHILDREN] = [vnode];\n\n\ttry {\n\t\tconst rendered = await _renderToString(\n\t\t\tvnode,\n\t\t\tcontext || EMPTY_OBJ,\n\t\t\tfalse,\n\t\t\tundefined,\n\t\t\tparent,\n\t\t\ttrue,\n\t\t\tundefined\n\t\t);\n\n\t\tif (isArray(rendered)) {\n\t\t\tlet count = 0;\n\t\t\tlet resolved = rendered;\n\n\t\t\t// Resolving nested Promises with a maximum depth of 25\n\t\t\twhile (\n\t\t\t\tresolved.some(\n\t\t\t\t\t(element) => element && typeof element.then === 'function'\n\t\t\t\t) &&\n\t\t\t\tcount++ < 25\n\t\t\t) {\n\t\t\t\tresolved = (await Promise.all(resolved)).flat();\n\t\t\t}\n\n\t\t\treturn resolved.join(EMPTY_STR);\n\t\t}\n\n\t\treturn rendered;\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\n/**\n * @param {VNode} vnode\n * @param {Record<string, unknown>} context\n */\nfunction renderClassComponent(vnode, context) {\n\tlet type = /** @type {import(\"preact\").ComponentClass<typeof vnode.props>} */ (vnode.type);\n\n\tlet isMounting = true;\n\tlet c;\n\tif (vnode[COMPONENT]) {\n\t\tisMounting = false;\n\t\tc = vnode[COMPONENT];\n\t\tc.state = c[NEXT_STATE];\n\t} else {\n\t\tc = new type(vnode.props, context);\n\t}\n\n\tvnode[COMPONENT] = c;\n\tc[VNODE] = vnode;\n\n\tc.props = vnode.props;\n\tc.context = context;\n\t// turn off stateful re-rendering:\n\tc[DIRTY] = true;\n\n\tif (c.state == null) c.state = EMPTY_OBJ;\n\n\tif (c[NEXT_STATE] == null) {\n\t\tc[NEXT_STATE] = c.state;\n\t}\n\n\tif (type.getDerivedStateFromProps) {\n\t\tc.state = assign(\n\t\t\t{},\n\t\t\tc.state,\n\t\t\ttype.getDerivedStateFromProps(c.props, c.state)\n\t\t);\n\t} else if (isMounting && c.componentWillMount) {\n\t\tc.componentWillMount();\n\n\t\t// If the user called setState in cWM we need to flush pending,\n\t\t// state updates. This is the same behaviour in React.\n\t\tc.state = c[NEXT_STATE] !== c.state ? c[NEXT_STATE] : c.state;\n\t} else if (!isMounting && c.componentWillUpdate) {\n\t\tc.componentWillUpdate();\n\t}\n\n\tif (renderHook) renderHook(vnode);\n\n\treturn c.render(c.props, c.state, context);\n}\n\n/**\n * Recursively render VNodes to HTML.\n * @param {VNode|any} vnode\n * @param {any} context\n * @param {boolean} isSvgMode\n * @param {any} selectValue\n * @param {VNode} parent\n * @param {boolean} asyncMode\n * @param {RendererState | undefined} [renderer]\n * @returns {string | Promise<string> | (string | Promise<string>)[]}\n */\nfunction _renderToString(\n\tvnode,\n\tcontext,\n\tisSvgMode,\n\tselectValue,\n\tparent,\n\tasyncMode,\n\trenderer\n) {\n\t// Ignore non-rendered VNodes/values\n\tif (\n\t\tvnode == null ||\n\t\tvnode === true ||\n\t\tvnode === false ||\n\t\tvnode === EMPTY_STR\n\t) {\n\t\treturn EMPTY_STR;\n\t}\n\n\tlet vnodeType = typeof vnode;\n\t// Text VNodes: escape as HTML\n\tif (vnodeType != 'object') {\n\t\tif (vnodeType == 'function') return EMPTY_STR;\n\t\treturn vnodeType == 'string' ? encodeEntities(vnode) : vnode + EMPTY_STR;\n\t}\n\n\t// Recurse into children / Arrays\n\tif (isArray(vnode)) {\n\t\tlet rendered = EMPTY_STR,\n\t\t\trenderArray;\n\t\tparent[CHILDREN] = vnode;\n\t\tfor (let i = 0; i < vnode.length; i++) {\n\t\t\tlet child = vnode[i];\n\t\t\tif (child == null || typeof child == 'boolean') continue;\n\n\t\t\tconst childRender = _renderToString(\n\t\t\t\tchild,\n\t\t\t\tcontext,\n\t\t\t\tisSvgMode,\n\t\t\t\tselectValue,\n\t\t\t\tparent,\n\t\t\t\tasyncMode,\n\t\t\t\trenderer\n\t\t\t);\n\n\t\t\tif (typeof childRender == 'string') {\n\t\t\t\trendered = rendered + childRender;\n\t\t\t} else {\n\t\t\t\tif (!renderArray) {\n\t\t\t\t\trenderArray = [];\n\t\t\t\t}\n\n\t\t\t\tif (rendered) renderArray.push(rendered);\n\n\t\t\t\trendered = EMPTY_STR;\n\n\t\t\t\tif (isArray(childRender)) {\n\t\t\t\t\trenderArray.push(...childRender);\n\t\t\t\t} else {\n\t\t\t\t\trenderArray.push(childRender);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (renderArray) {\n\t\t\tif (rendered) renderArray.push(rendered);\n\t\t\treturn renderArray;\n\t\t}\n\n\t\treturn rendered;\n\t}\n\n\t// VNodes have {constructor:undefined} to prevent JSON injection:\n\tif (vnode.constructor !== undefined) return EMPTY_STR;\n\n\tvnode[PARENT] = parent;\n\tif (beforeDiff) beforeDiff(vnode);\n\n\tlet type = vnode.type,\n\t\tprops = vnode.props;\n\n\t// Invoke rendering on Components\n\tif (typeof type == 'function') {\n\t\tlet cctx = context,\n\t\t\tcontextType,\n\t\t\trendered,\n\t\t\tcomponent;\n\t\tif (type === Fragment) {\n\t\t\t// Serialized precompiled JSX.\n\t\t\tif ('tpl' in props) {\n\t\t\t\tlet out = EMPTY_STR;\n\t\t\t\tfor (let i = 0; i < props.tpl.length; i++) {\n\t\t\t\t\tout = out + props.tpl[i];\n\n\t\t\t\t\tif (props.exprs && i < props.exprs.length) {\n\t\t\t\t\t\tconst value = props.exprs[i];\n\t\t\t\t\t\tif (value == null) continue;\n\n\t\t\t\t\t\t// Check if we're dealing with a vnode or an array of nodes\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\ttypeof value == 'object' &&\n\t\t\t\t\t\t\t(value.constructor === undefined || isArray(value))\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tout =\n\t\t\t\t\t\t\t\tout +\n\t\t\t\t\t\t\t\t_renderToString(\n\t\t\t\t\t\t\t\t\tvalue,\n\t\t\t\t\t\t\t\t\tcontext,\n\t\t\t\t\t\t\t\t\tisSvgMode,\n\t\t\t\t\t\t\t\t\tselectValue,\n\t\t\t\t\t\t\t\t\tvnode,\n\t\t\t\t\t\t\t\t\tasyncMode,\n\t\t\t\t\t\t\t\t\trenderer\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// Values are pre-escaped by the JSX transform\n\t\t\t\t\t\t\tout = out + value;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn out;\n\t\t\t} else if ('UNSTABLE_comment' in props) {\n\t\t\t\t// Fragments are the least used components of core that's why\n\t\t\t\t// branching here for comments has the least effect on perf.\n\t\t\t\treturn '<!--' + encodeEntities(props.UNSTABLE_comment) + '-->';\n\t\t\t}\n\n\t\t\trendered = props.children;\n\t\t} else {\n\t\t\tcontextType = type.contextType;\n\t\t\tif (contextType != null) {\n\t\t\t\tlet provider = context[contextType.__c];\n\t\t\t\tcctx = provider ? provider.props.value : contextType.__;\n\t\t\t}\n\n\t\t\tlet isClassComponent =\n\t\t\t\ttype.prototype && typeof type.prototype.render == 'function';\n\t\t\tif (isClassComponent) {\n\t\t\t\trendered = /**#__NOINLINE__**/ renderClassComponent(vnode, cctx);\n\t\t\t\tcomponent = vnode[COMPONENT];\n\t\t\t} else {\n\t\t\t\tvnode[COMPONENT] = component = /**#__NOINLINE__**/ createComponent(\n\t\t\t\t\tvnode,\n\t\t\t\t\tcctx\n\t\t\t\t);\n\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 (component[DIRTY] && count++ < 25) {\n\t\t\t\t\tcomponent[DIRTY] = false;\n\n\t\t\t\t\tif (renderHook) renderHook(vnode);\n\n\t\t\t\t\trendered = type.call(component, props, cctx);\n\t\t\t\t}\n\t\t\t\tcomponent[DIRTY] = true;\n\t\t\t}\n\n\t\t\tif (component.getChildContext != null) {\n\t\t\t\tcontext = assign({}, context, component.getChildContext());\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\tisClassComponent &&\n\t\t\t\toptions.errorBoundaries &&\n\t\t\t\t(type.getDerivedStateFromError || component.componentDidCatch)\n\t\t\t) {\n\t\t\t\t// When a component returns a Fragment node we flatten it in core, so we\n\t\t\t\t// need to mirror that logic here too\n\t\t\t\tlet isTopLevelFragment =\n\t\t\t\t\trendered != null &&\n\t\t\t\t\trendered.type === Fragment &&\n\t\t\t\t\trendered.key == null &&\n\t\t\t\t\trendered.props.tpl == null;\n\t\t\t\trendered = isTopLevelFragment ? rendered.props.children : rendered;\n\n\t\t\t\ttry {\n\t\t\t\t\treturn _renderToString(\n\t\t\t\t\t\trendered,\n\t\t\t\t\t\tcontext,\n\t\t\t\t\t\tisSvgMode,\n\t\t\t\t\t\tselectValue,\n\t\t\t\t\t\tvnode,\n\t\t\t\t\t\tasyncMode,\n\t\t\t\t\t\trenderer\n\t\t\t\t\t);\n\t\t\t\t} catch (err) {\n\t\t\t\t\tif (type.getDerivedStateFromError) {\n\t\t\t\t\t\tcomponent[NEXT_STATE] = type.getDerivedStateFromError(err);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (component.componentDidCatch) {\n\t\t\t\t\t\tcomponent.componentDidCatch(err, EMPTY_OBJ);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (component[DIRTY]) {\n\t\t\t\t\t\trendered = renderClassComponent(vnode, context);\n\t\t\t\t\t\tcomponent = vnode[COMPONENT];\n\n\t\t\t\t\t\tif (component.getChildContext != null) {\n\t\t\t\t\t\t\tcontext = assign({}, context, component.getChildContext());\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tlet isTopLevelFragment =\n\t\t\t\t\t\t\trendered != null &&\n\t\t\t\t\t\t\trendered.type === Fragment &&\n\t\t\t\t\t\t\trendered.key == null &&\n\t\t\t\t\t\t\trendered.props.tpl == null;\n\t\t\t\t\t\trendered = isTopLevelFragment ? rendered.props.children : rendered;\n\n\t\t\t\t\t\treturn _renderToString(\n\t\t\t\t\t\t\trendered,\n\t\t\t\t\t\t\tcontext,\n\t\t\t\t\t\t\tisSvgMode,\n\t\t\t\t\t\t\tselectValue,\n\t\t\t\t\t\t\tvnode,\n\t\t\t\t\t\t\tasyncMode,\n\t\t\t\t\t\t\trenderer\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\n\t\t\t\t\treturn EMPTY_STR;\n\t\t\t\t} finally {\n\t\t\t\t\tif (afterDiff) afterDiff(vnode);\n\t\t\t\t\tvnode[PARENT] = null;\n\n\t\t\t\t\tif (ummountHook) ummountHook(vnode);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// When a component returns a Fragment node we flatten it in core, so we\n\t\t// need to mirror that logic here too\n\t\tlet isTopLevelFragment =\n\t\t\trendered != null &&\n\t\t\trendered.type === Fragment &&\n\t\t\trendered.key == null &&\n\t\t\trendered.props.tpl == null;\n\t\trendered = isTopLevelFragment ? rendered.props.children : rendered;\n\n\t\ttry {\n\t\t\t// Recurse into children before invoking the after-diff hook\n\t\t\tconst str = _renderToString(\n\t\t\t\trendered,\n\t\t\t\tcontext,\n\t\t\t\tisSvgMode,\n\t\t\t\tselectValue,\n\t\t\t\tvnode,\n\t\t\t\tasyncMode,\n\t\t\t\trenderer\n\t\t\t);\n\n\t\t\tif (afterDiff) afterDiff(vnode);\n\t\t\t// when we are dealing with suspense we can't do this...\n\t\t\tvnode[PARENT] = null;\n\n\t\t\tif (options.unmount) options.unmount(vnode);\n\n\t\t\treturn str;\n\t\t} catch (error) {\n\t\t\tif (!asyncMode && renderer && renderer.onError) {\n\t\t\t\tlet res = renderer.onError(error, vnode, (child) =>\n\t\t\t\t\t_renderToString(\n\t\t\t\t\t\tchild,\n\t\t\t\t\t\tcontext,\n\t\t\t\t\t\tisSvgMode,\n\t\t\t\t\t\tselectValue,\n\t\t\t\t\t\tvnode,\n\t\t\t\t\t\tasyncMode,\n\t\t\t\t\t\trenderer\n\t\t\t\t\t)\n\t\t\t\t);\n\n\t\t\t\tif (res !== undefined) return res;\n\n\t\t\t\tlet errorHook = options[CATCH_ERROR];\n\t\t\t\tif (errorHook) errorHook(error, vnode);\n\t\t\t\treturn EMPTY_STR;\n\t\t\t}\n\n\t\t\tif (!asyncMode) throw error;\n\n\t\t\tif (!error || typeof error.then != 'function') throw error;\n\n\t\t\tconst renderNestedChildren = () => {\n\t\t\t\ttry {\n\t\t\t\t\treturn _renderToString(\n\t\t\t\t\t\trendered,\n\t\t\t\t\t\tcontext,\n\t\t\t\t\t\tisSvgMode,\n\t\t\t\t\t\tselectValue,\n\t\t\t\t\t\tvnode,\n\t\t\t\t\t\tasyncMode,\n\t\t\t\t\t\trenderer\n\t\t\t\t\t);\n\t\t\t\t} catch (e) {\n\t\t\t\t\tif (!e || typeof e.then != 'function') throw e;\n\n\t\t\t\t\treturn e.then(\n\t\t\t\t\t\t() =>\n\t\t\t\t\t\t\t_renderToString(\n\t\t\t\t\t\t\t\trendered,\n\t\t\t\t\t\t\t\tcontext,\n\t\t\t\t\t\t\t\tisSvgMode,\n\t\t\t\t\t\t\t\tselectValue,\n\t\t\t\t\t\t\t\tvnode,\n\t\t\t\t\t\t\t\tasyncMode,\n\t\t\t\t\t\t\t\trenderer\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\trenderNestedChildren\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t};\n\n\t\t\treturn error.then(renderNestedChildren);\n\t\t}\n\t}\n\n\t// Serialize Element VNodes to HTML\n\tlet s = '<' + type,\n\t\thtml = EMPTY_STR,\n\t\tchildren;\n\n\tfor (let name in props) {\n\t\tlet v = props[name];\n\n\t\tif (typeof v == 'function') continue;\n\n\t\tswitch (name) {\n\t\t\tcase 'children':\n\t\t\t\tchildren = v;\n\t\t\t\tcontinue;\n\n\t\t\t// VDOM-specific props\n\t\t\tcase 'key':\n\t\t\tcase 'ref':\n\t\t\tcase '__self':\n\t\t\tcase '__source':\n\t\t\t\tcontinue;\n\n\t\t\t// prefer for/class over htmlFor/className\n\t\t\tcase 'htmlFor':\n\t\t\t\tif ('for' in props) continue;\n\t\t\t\tname = 'for';\n\t\t\t\tbreak;\n\t\t\tcase 'className':\n\t\t\t\tif ('class' in props) continue;\n\t\t\t\tname = 'class';\n\t\t\t\tbreak;\n\n\t\t\t// Form element reflected properties\n\t\t\tcase 'defaultChecked':\n\t\t\t\tname = 'checked';\n\t\t\t\tbreak;\n\t\t\tcase 'defaultSelected':\n\t\t\t\tname = 'selected';\n\t\t\t\tbreak;\n\n\t\t\t// Special value attribute handling\n\t\t\tcase 'defaultValue':\n\t\t\tcase 'value':\n\t\t\t\tname = 'value';\n\t\t\t\tswitch (type) {\n\t\t\t\t\t// <textarea value=\"a&b\"> --> <textarea>a&amp;b</textarea>\n\t\t\t\t\tcase 'textarea':\n\t\t\t\t\t\tchildren = v;\n\t\t\t\t\t\tcontinue;\n\n\t\t\t\t\t// <select value> is serialized as a selected attribute on the matching option child\n\t\t\t\t\tcase 'select':\n\t\t\t\t\t\tselectValue = v;\n\t\t\t\t\t\tcontinue;\n\n\t\t\t\t\t// Add a selected attribute to <option> if its value matches the parent <select> value\n\t\t\t\t\tcase 'option':\n\t\t\t\t\t\tif (selectValue == v && !('selected' in props)) {\n\t\t\t\t\t\t\ts = s + ' selected';\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 'dangerouslySetInnerHTML':\n\t\t\t\thtml = v && v.__html;\n\t\t\t\tcontinue;\n\n\t\t\t// serialize object styles to a CSS string\n\t\t\tcase 'style':\n\t\t\t\tif (typeof v === 'object') {\n\t\t\t\t\tv = styleObjToCss(v);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 'acceptCharset':\n\t\t\t\tname = 'accept-charset';\n\t\t\t\tbreak;\n\t\t\tcase 'httpEquiv':\n\t\t\t\tname = 'http-equiv';\n\t\t\t\tbreak;\n\n\t\t\tdefault: {\n\t\t\t\tif (NAMESPACE_REPLACE_REGEX.test(name)) {\n\t\t\t\t\tname = name.replace(NAMESPACE_REPLACE_REGEX, '$1:$2').toLowerCase();\n\t\t\t\t} else if (UNSAFE_NAME.test(name)) {\n\t\t\t\t\tcontinue;\n\t\t\t\t} else if ((name[4] === '-' || name === 'draggable') && v != null) {\n\t\t\t\t\t// serialize boolean aria-xyz or draggable attribute values as strings\n\t\t\t\t\t// `draggable` is an enumerated attribute and not Boolean. A value of `true` or `false` is mandatory\n\t\t\t\t\t// https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/draggable\n\t\t\t\t\tv = v + EMPTY_STR;\n\t\t\t\t} else if (isSvgMode) {\n\t\t\t\t\tif (SVG_CAMEL_CASE.test(name)) {\n\t\t\t\t\t\tname =\n\t\t\t\t\t\t\tname === 'panose1'\n\t\t\t\t\t\t\t\t? 'panose-1'\n\t\t\t\t\t\t\t\t: name.replace(/([A-Z])/g, '-$1').toLowerCase();\n\t\t\t\t\t}\n\t\t\t\t} else if (HTML_LOWER_CASE.test(name)) {\n\t\t\t\t\tname = name.toLowerCase();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// write this attribute to the buffer\n\t\tif (v != null && v !== false) {\n\t\t\tif (v === true || v === EMPTY_STR) {\n\t\t\t\ts = s + ' ' + name;\n\t\t\t} else {\n\t\t\t\ts =\n\t\t\t\t\ts +\n\t\t\t\t\t' ' +\n\t\t\t\t\tname +\n\t\t\t\t\t'=\"' +\n\t\t\t\t\t(typeof v == 'string' ? encodeEntities(v) : v + EMPTY_STR) +\n\t\t\t\t\t'\"';\n\t\t\t}\n\t\t}\n\t}\n\n\tif (UNSAFE_NAME.test(type)) {\n\t\t// this seems to performs a lot better than throwing\n\t\t// return '<!-- -->';\n\t\tthrow new Error(`${type} is not a valid HTML tag name in ${s}>`);\n\t}\n\n\tif (html) {\n\t\t// dangerouslySetInnerHTML defined this node's contents\n\t} else if (typeof children === 'string') {\n\t\t// single text child\n\t\thtml = encodeEntities(children);\n\t} else if (children != null && children !== false && children !== true) {\n\t\t// recurse into this element VNode's children\n\t\tlet childSvgMode =\n\t\t\ttype === 'svg' || (type !== 'foreignObject' && isSvgMode);\n\t\thtml = _renderToString(\n\t\t\tchildren,\n\t\t\tcontext,\n\t\t\tchildSvgMode,\n\t\t\tselectValue,\n\t\t\tvnode,\n\t\t\tasyncMode,\n\t\t\trenderer\n\t\t);\n\t}\n\n\tif (afterDiff) afterDiff(vnode);\n\n\t// TODO: this was commented before\n\tvnode[PARENT] = null;\n\n\tif (ummountHook) ummountHook(vnode);\n\n\t// Emit self-closing tag for empty void elements:\n\tif (!html && SELF_CLOSING.has(type)) {\n\t\treturn s + '/>';\n\t}\n\n\tconst endTag = '</' + type + '>';\n\tconst startTag = s + '>';\n\n\tif (isArray(html)) return [startTag, ...html, endTag];\n\telse if (typeof html != 'string') return [startTag, html, endTag];\n\treturn startTag + html + endTag;\n}\n\nconst SELF_CLOSING = new Set([\n\t'area',\n\t'base',\n\t'br',\n\t'col',\n\t'command',\n\t'embed',\n\t'hr',\n\t'img',\n\t'input',\n\t'keygen',\n\t'link',\n\t'meta',\n\t'param',\n\t'source',\n\t'track',\n\t'wbr'\n]);\n\nexport default renderToString;\nexport const render = renderToString;\nexport const renderToStaticMarkup = renderToString;\n","/* eslint-disable no-var, key-spacing, object-curly-spacing, prefer-arrow-callback, semi, keyword-spacing */\n\n// function initPreactIslandElement() {\n// \tclass PreactIslandElement extends HTMLElement {\n// \t\tconnectedCallback() {\n// \t\t\tvar d = this;\n// \t\t\tif (!d.isConnected) return;\n\n// \t\t\tlet i = this.getAttribute('data-target');\n// \t\t\tif (!i) return;\n\n// \t\t\tvar s,\n// \t\t\t\te,\n// \t\t\t\tc = document.createNodeIterator(document, 128);\n// \t\t\twhile (c.nextNode()) {\n// \t\t\t\tlet n = c.referenceNode;\n\n// \t\t\t\tif (n.data == 'preact-island:' + i) s = n;\n// \t\t\t\telse if (n.data == '/preact-island:' + i) e = n;\n// \t\t\t\tif (s && e) break;\n// \t\t\t}\n// \t\t\tif (s && e) {\n// \t\t\t\trequestAnimationFrame(() => {\n// \t\t\t\t\tvar p = e.previousSibling;\n// \t\t\t\t\twhile (p != s) {\n// \t\t\t\t\t\tif (!p || p == s) break;\n// \t\t\t\t\t\te.parentNode.removeChild(p);\n// \t\t\t\t\t\tp = e.previousSibling;\n// \t\t\t\t\t}\n\n// \t\t\t\t\tc = s;\n// \t\t\t\t\twhile (d.firstChild) {\n// \t\t\t\t\t\ts = d.firstChild;\n// \t\t\t\t\t\td.removeChild(s);\n// \t\t\t\t\t\tc.after(s);\n// \t\t\t\t\t\tc = s;\n// \t\t\t\t\t}\n\n// \t\t\t\t\td.parentNode.removeChild(d);\n// \t\t\t\t});\n// \t\t\t}\n// \t\t}\n// \t}\n\n// \tcustomElements.define('preact-island', PreactIslandElement);\n// }\n\n// To modify the INIT_SCRIPT, uncomment the above code, modify it, and paste it into https://try.terser.org/.\nconst INIT_SCRIPT = `class e extends HTMLElement{connectedCallback(){var e=this;if(!e.isConnected)return;let t=this.getAttribute(\"data-target\");if(t){for(var r,a,i=document.createNodeIterator(document,128);i.nextNode();){let e=i.referenceNode;if(e.data==\"preact-island:\"+t?r=e:e.data==\"/preact-island:\"+t&&(a=e),r&&a)break}r&&a&&requestAnimationFrame((()=>{for(var t=a.previousSibling;t!=r&&t&&t!=r;)a.parentNode.removeChild(t),t=a.previousSibling;for(i=r;e.firstChild;)r=e.firstChild,e.removeChild(r),i.after(r),i=r;e.parentNode.removeChild(e)}))}}}customElements.define(\"preact-island\",e);`;\n\nexport function createInitScript() {\n\treturn `<script>(function(){${INIT_SCRIPT}}())</script>`;\n}\n\n/**\n * @param {string} id\n * @param {string} content\n * @returns {string}\n */\nexport function createSubtree(id, content) {\n\treturn `<preact-island hidden data-target=\"${id}\">${content}</preact-island>`;\n}\n","import { renderToString } from '../index.js';\nimport { CHILD_DID_SUSPEND, COMPONENT, PARENT } from './constants.js';\nimport { Deferred } from './util.js';\nimport { createInitScript, createSubtree } from './client.js';\n\n/**\n * @param {VNode} vnode\n * @param {RenderToChunksOptions} options\n * @returns {Promise<void>}\n */\nexport async function renderToChunks(vnode, { context, onWrite, abortSignal }) {\n\tcontext = context || {};\n\n\t/** @type {RendererState} */\n\tconst renderer = {\n\t\tstart: Date.now(),\n\t\tabortSignal,\n\t\tonWrite,\n\t\tonError: handleError,\n\t\tsuspended: []\n\t};\n\n\t// Synchronously render the shell\n\t// @ts-ignore - using third internal RendererState argument\n\tconst shell = renderToString(vnode, context, renderer);\n\tonWrite(shell);\n\n\t// Wait for any suspended sub-trees if there are any\n\tconst len = renderer.suspended.length;\n\tif (len > 0) {\n\t\tonWrite('<div hidden>');\n\t\tonWrite(createInitScript(len));\n\t\t// We should keep checking all promises\n\t\tawait forkPromises(renderer);\n\t\tonWrite('</div>');\n\t}\n}\n\nasync function forkPromises(renderer) {\n\tif (renderer.suspended.length > 0) {\n\t\tconst suspensions = [...renderer.suspended];\n\t\tawait Promise.all(renderer.suspended.map((s) => s.promise));\n\t\trenderer.suspended = renderer.suspended.filter(\n\t\t\t(s) => !suspensions.includes(s)\n\t\t);\n\t\tawait forkPromises(renderer);\n\t}\n}\n\n/** @type {RendererErrorHandler} */\nfunction handleError(error, vnode, renderChild) {\n\tif (!error || !error.then) return;\n\n\t// walk up to the Suspense boundary\n\twhile ((vnode = vnode[PARENT])) {\n\t\tlet component = vnode[COMPONENT];\n\t\tif (component && component[CHILD_DID_SUSPEND]) {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\tif (!vnode) return;\n\n\tconst id = vnode.__v;\n\tconst found = this.suspended.find((x) => x.id === id);\n\tconst race = new Deferred();\n\n\tconst abortSignal = this.abortSignal;\n\tif (abortSignal) {\n\t\t// @ts-ignore 2554 - implicit undefined arg\n\t\tif (abortSignal.aborted) race.resolve();\n\t\telse abortSignal.addEventListener('abort', race.resolve);\n\t}\n\n\tconst promise = error.then(\n\t\t() => {\n\t\t\tif (abortSignal && abortSignal.aborted) return;\n\t\t\tconst child = renderChild(vnode.props.children);\n\t\t\tif (child) this.onWrite(createSubtree(id, child));\n\t\t},\n\t\t// TODO: Abort and send hydration code snippet to client\n\t\t// to attempt to recover during hydration\n\t\tthis.onError\n\t);\n\n\tthis.suspended.push({\n\t\tid,\n\t\tvnode,\n\t\tpromise: Promise.race([promise, race.promise])\n\t});\n\n\tconst fallback = renderChild(vnode.props.fallback);\n\n\treturn found\n\t\t? ''\n\t\t: `<!--preact-island:${id}-->${fallback}<!--/preact-island:${id}-->`;\n}\n","import { PassThrough } from 'node:stream';\nimport { renderToChunks } from './lib/chunked.js';\n\n/**\n * @typedef {object} RenderToPipeableStreamOptions\n * @property {() => void} [onShellReady]\n * @property {() => void} [onAllReady]\n * @property {(error) => void} [onError]\n */\n\n/**\n * @typedef {object} PipeableStream\n * @property {() => void} abort\n * @property {(writable: import('stream').Writable) => void} pipe\n */\n\n/**\n * @param {import('preact').VNode} vnode\n * @param {RenderToPipeableStreamOptions} options\n * @param {any} [context]\n * @returns {PipeableStream}\n */\nexport function renderToPipeableStream(vnode, options, context) {\n\tconst encoder = new TextEncoder('utf-8');\n\n\tconst controller = new AbortController();\n\tconst stream = new PassThrough();\n\n\trenderToChunks(vnode, {\n\t\tcontext,\n\t\tabortSignal: controller.signal,\n\t\tonError: (error) => {\n\t\t\tif (options.onError) {\n\t\t\t\toptions.onError(error);\n\t\t\t}\n\t\t\tcontroller.abort(error);\n\t\t},\n\t\tonWrite(s) {\n\t\t\tstream.write(encoder.encode(s));\n\t\t}\n\t})\n\t\t.then(() => {\n\t\t\toptions.onAllReady && options.onAllReady();\n\t\t\tstream.end();\n\t\t})\n\t\t.catch((error) => {\n\t\t\tstream.destroy(error);\n\t\t});\n\n\tPromise.resolve().then(() => {\n\t\toptions.onShellReady && options.onShellReady();\n\t});\n\n\treturn {\n\t\tabort() {\n\t\t\tcontroller.abort();\n\t\t\tstream.destroy(new Error('aborted'));\n\t\t},\n\t\t/**\n\t\t * @param {import(\"stream\").Writable} writable\n\t\t */\n\t\tpipe(writable) {\n\t\t\tstream.pipe(writable, { end: true });\n\t\t}\n\t};\n}\n"],"names":["UNSAFE_NAME","NAMESPACE_REPLACE_REGEX","HTML_LOWER_CASE","SVG_CAMEL_CASE","ENCODED_ENTITIES","encodeEntities","str","length","test","last","i","out","ch","charCodeAt","slice","JS_TO_CSS","IS_NON_DIMENSIONAL","Set","CSS_REGEX","styleObjToCss","s","prop","val","name","replace","toLowerCase","suffix","startsWith","has","undefined","markAsDirty","__d","createComponent","vnode","context","__v","props","setState","forceUpdate","__h","Array","Deferred","constructor","promise","Promise","resolve","reject","DIFF","RENDER","DIFFED","COMMIT","SKIP_EFFECTS","CATCH_ERROR","COMPONENT","CHILDREN","PARENT","VNODE","DIRTY","NEXT_STATE","CHILD_DID_SUSPEND","EMPTY_OBJ","EMPTY_ARR","isArray","assign","Object","EMPTY_STR","beforeDiff","afterDiff","renderHook","ummountHook","renderToString","_rendererState","previousSkipEffects","options","unmount","parent","h","Fragment","rendered","_renderToString","join","e","then","Error","renderClassComponent","type","isMounting","c","state","getDerivedStateFromProps","componentWillMount","componentWillUpdate","render","isSvgMode","selectValue","asyncMode","renderer","vnodeType","renderArray","child","childRender","push","cctx","contextType","component","tpl","exprs","value","UNSTABLE_comment","children","provider","__c","__","isClassComponent","prototype","count","call","getChildContext","errorBoundaries","getDerivedStateFromError","componentDidCatch","isTopLevelFragment","key","err","error","onError","res","errorHook","renderNestedChildren","html","v","__html","childSvgMode","SELF_CLOSING","endTag","startTag","INIT_SCRIPT","createInitScript","createSubtree","id","content","renderToChunks","onWrite","abortSignal","start","Date","now","handleError","suspended","shell","len","forkPromises","suspensions","all","map","filter","includes","renderChild","found","find","x","race","aborted","addEventListener","fallback","renderToPipeableStream","encoder","TextEncoder","controller","AbortController","stream","PassThrough","signal","abort","write","encode","onAllReady","end","catch","destroy","onShellReady","pipe","writable"],"mappings":"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"}