mono-jsx 0.9.8 → 0.9.10

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.
@@ -316,6 +316,7 @@ var render = (scope, child, root, abortSignal) => {
316
316
  switch (typeof child) {
317
317
  case "boolean":
318
318
  case "undefined":
319
+ case "symbol":
319
320
  return;
320
321
  case "object":
321
322
  if (child === null) {
@@ -330,7 +331,7 @@ var render = (scope, child, root, abortSignal) => {
330
331
  list.clear();
331
332
  };
332
333
  reactive.reactive((v) => {
333
- if (!Array.isArray(v)) {
334
+ if (!Array.isArray(v) || isVNode(v)) {
334
335
  v = [v];
335
336
  }
336
337
  let nodes = [];
@@ -360,20 +361,21 @@ var render = (scope, child, root, abortSignal) => {
360
361
  return;
361
362
  }
362
363
  if (child instanceof Reactive) {
363
- let insertMark = new InsertMark(root, abortSignal);
364
364
  let ac;
365
+ let insertMark = new InsertMark(root, abortSignal);
365
366
  child.reactive((value) => {
366
- if (isVNode(value)) {
367
- ac?.abort();
367
+ ac?.abort();
368
+ if (Array.isArray(value) || child instanceof ReactiveList || child instanceof Reactive) {
368
369
  ac = new AbortController();
369
370
  insertMark.insert(...renderToFragment(scope, value, ac.signal).childNodes);
370
371
  } else {
372
+ const vtype = typeof value;
371
373
  insertMark.setText(
372
- value === void 0 || value === null || typeof value === "boolean" ? "" : String(value)
374
+ vtype === "boolean" || vtype === "undefined" || vtype === "symbol" || value === null ? "" : String(value)
373
375
  );
374
376
  }
375
- onAbort(abortSignal, () => ac?.abort());
376
377
  }, abortSignal);
378
+ onAbort(abortSignal, () => ac?.abort());
377
379
  return;
378
380
  }
379
381
  if (isVNode(child)) {
@@ -566,6 +568,10 @@ var render = (scope, child, root, abortSignal) => {
566
568
  }
567
569
  return;
568
570
  }
571
+ if (Array.isArray(child)) {
572
+ renderChildren(scope, child, root, abortSignal);
573
+ return;
574
+ }
569
575
  }
570
576
  const textNode = createTextNode(String(child));
571
577
  root.appendChild(textNode);
package/jsx-runtime.mjs CHANGED
@@ -176,7 +176,7 @@ var $vnode = /* @__PURE__ */ Symbol.for("jsx.vnode");
176
176
  var $setup = /* @__PURE__ */ Symbol.for("mono.setup");
177
177
 
178
178
  // version.ts
179
- var VERSION = "0.9.8";
179
+ var VERSION = "0.9.9";
180
180
 
181
181
  // render.ts
182
182
  var FunctionIdGenerator = class extends Map {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mono-jsx",
3
- "version": "0.9.8",
3
+ "version": "0.9.10",
4
4
  "description": "`<html>` as a `Response`.",
5
5
  "type": "module",
6
6
  "module": "./index.mjs",
@@ -1,9 +1,9 @@
1
- /// <reference types="../jsx.d.ts" />
1
+ import { ChildPrimitiveType } from "../jsx.d.ts";
2
2
 
3
3
  export interface Atom<T> {
4
4
  get(): T;
5
5
  set(value: T | ((prev: T) => T)): void;
6
- map(callback: (value: T extends (infer V)[] ? V : T, index: number) => JSX.Element): JSX.Element[];
6
+ map(callback: (value: T extends (infer V)[] ? V : T, index: number) => ChildPrimitiveType): ChildPrimitiveType[];
7
7
  ref(): T;
8
8
  ref<V>(callback: (value: T) => V): V;
9
9
  }