tutuca 0.13.2 → 0.13.3

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.
@@ -1619,31 +1619,6 @@ function parseBool(s, px) {
1619
1619
  const val = parseToken(tokens[0], px);
1620
1620
  return val !== null && kindOf(val) & G_BOOL ? val : null;
1621
1621
  }
1622
- function parseText(s, px) {
1623
- return _parseSingle(s, px, G_TEXT);
1624
- }
1625
- function parseComponent(s, px) {
1626
- return _parseSingle(s, px, G_COMPONENT);
1627
- }
1628
- function parseSequence(s, px) {
1629
- return _parseSingle(s, px, G_SEQUENCE);
1630
- }
1631
- function parseField(s, px) {
1632
- return _parseSingle(s, px, G_FIELD);
1633
- }
1634
- function parseProvide(s, px) {
1635
- return _parseSingle(s, px, G_PROVIDE);
1636
- }
1637
- function parseMacroAttr(s, px) {
1638
- return _parseSingle(s, px, G_ALL);
1639
- }
1640
- function parseReceiveHandler(s, px) {
1641
- return _parseHandler(s, px, "receive", true, true, false);
1642
- }
1643
- function parseAlterHandler(s, px) {
1644
- const r = _parseHandler(s, px, "alter", false, false, true);
1645
- return r === null ? null : r.handlerVal;
1646
- }
1647
1622
  function _parseHandler(s, px, namespace, allowArgs, report, allowMethod) {
1648
1623
  const tokens = tokenizeValue(s.trim());
1649
1624
  const headTok = tokens[0] ?? "";
@@ -1713,7 +1688,7 @@ function kindOf(val) {
1713
1688
  if (val instanceof EventMemberVal) return K_EVENT;
1714
1689
  return 0;
1715
1690
  }
1716
- var VALID_VAL_ID_RE, isValidValId, VALID_FLOAT_RE, STR_TPL_SPLIT_RE, mkVal, VAL_TOKEN_RE, tokenizeValue, unescapeStr, K_CONST, K_STRTPL, K_FIELD, K_BIND, K_DYN, K_NAME, K_SEQ, K_METHOD, K_EVENT, G_BOOL, G_TEXT, G_COMPONENT, G_SEQUENCE, G_PROVIDE, G_FIELD, G_VALUE, G_HANDLER_ARG, G_ALL, toNullIfNaN, predTruthy, PREDICATES, BaseVal, ConstVal, NULL_CONST_VAL, PredicateVal, VarVal, StrTplVal, NameVal, HandlerNameVal, mk404Handler, keyIs, macCtrl, nullSafe, EVENT_CONVENIENCES, EventMemberVal, RenderVal, RenderNameVal, BindVal, BindMemberVal, DynVal, FieldVal, MethodVal, SeqAccessVal;
1691
+ var VALID_VAL_ID_RE, isValidValId, VALID_FLOAT_RE, STR_TPL_SPLIT_RE, mkVal, VAL_TOKEN_RE, tokenizeValue, unescapeStr, K_CONST, K_STRTPL, K_FIELD, K_BIND, K_DYN, K_NAME, K_SEQ, K_METHOD, K_EVENT, G_BOOL, G_TEXT, G_COMPONENT, G_SEQUENCE, G_PROVIDE, G_FIELD, G_VALUE, G_HANDLER_ARG, G_ALL, toNullIfNaN, predTruthy, PREDICATES, parseText, parseComponent, parseSequence, parseField, parseProvide, parseMacroAttr, parseReceiveHandler, parseAlterHandler, BaseVal, ConstVal, NULL_CONST_VAL, PredicateVal, VarVal, StrTplVal, NameVal, HandlerNameVal, mk404Handler, keyIs, macCtrl, nullSafe, EVENT_CONVENIENCES, EventMemberVal, RenderVal, RenderNameVal, BindVal, BindMemberVal, DynVal, FieldVal, MethodVal, SeqAccessVal;
1717
1692
  var init_value = __esm({
1718
1693
  "src/value.js"() {
1719
1694
  init_collection();
@@ -1757,6 +1732,14 @@ var init_value = __esm({
1757
1732
  "null?": { name: "null?", arity: 1, fn: (v) => v == null },
1758
1733
  "equals?": { name: "equals?", arity: 2, fn: (a, b) => Object.is(a, b) }
1759
1734
  };
1735
+ parseText = (s, px) => _parseSingle(s, px, G_TEXT);
1736
+ parseComponent = (s, px) => _parseSingle(s, px, G_COMPONENT);
1737
+ parseSequence = (s, px) => _parseSingle(s, px, G_SEQUENCE);
1738
+ parseField = (s, px) => _parseSingle(s, px, G_FIELD);
1739
+ parseProvide = (s, px) => _parseSingle(s, px, G_PROVIDE);
1740
+ parseMacroAttr = (s, px) => _parseSingle(s, px, G_ALL);
1741
+ parseReceiveHandler = (s, px) => _parseHandler(s, px, "receive", true, true, false);
1742
+ parseAlterHandler = (s, px) => _parseHandler(s, px, "alter", false, false, true)?.handlerVal ?? null;
1760
1743
  BaseVal = class {
1761
1744
  render(_stack, _rx) {
1762
1745
  }
@@ -2558,6 +2541,10 @@ function morphChildren(parentDom, oldChilds, newChilds, opts) {
2558
2541
  if (!used2[i] && domNodes[i].parentNode === parentDom) parentDom.removeChild(domNodes[i]);
2559
2542
  }
2560
2543
  function render(vnode, container, options, prev) {
2544
+ if (vnode == null) {
2545
+ container.replaceChildren();
2546
+ return { vnode: null, dom: null };
2547
+ }
2561
2548
  const isFragment = vnode instanceof VFragment;
2562
2549
  if (prev && prev.vnode instanceof VFragment === isFragment) {
2563
2550
  const oldDom = isFragment ? container : prev.dom;
@@ -2607,19 +2594,9 @@ var init_vdom = __esm({
2607
2594
  };
2608
2595
  isForeignObject = (tag) => tag.length === 13 && tag.toLowerCase() === "foreignobject";
2609
2596
  effectiveNs = (vnode, opts) => vnode.namespace ?? opts.namespace ?? null;
2610
- NEVER_ASSIGN = /* @__PURE__ */ new Set([
2611
- "width",
2612
- "height",
2613
- "href",
2614
- "list",
2615
- "form",
2616
- "tabIndex",
2617
- "download",
2618
- "rowSpan",
2619
- "colSpan",
2620
- "role",
2621
- "popover"
2622
- ]);
2597
+ NEVER_ASSIGN = new Set(
2598
+ "width height href list form tabIndex download rowSpan colSpan role popover".split(" ")
2599
+ );
2623
2600
  PROP_ATTR_NAME = { className: "class", htmlFor: "for" };
2624
2601
  VBase = class {
2625
2602
  };
@@ -12961,8 +12938,7 @@ function classFromData(name, { fields = {}, methods, statics }) {
12961
12938
  const value = fields[field];
12962
12939
  const type3 = typeof value;
12963
12940
  if (type3 === "string") b.addField(field, value, FieldString);
12964
- else if (type3 === "number")
12965
- b.addField(field, value, Number.isInteger(value) ? FieldInt : FieldFloat);
12941
+ else if (type3 === "number") b.addField(field, value, FieldFloat);
12966
12942
  else if (type3 === "boolean") b.addField(field, value, FieldBool);
12967
12943
  else if (Array.isArray(value)) b.addField(field, [...value], FieldList);
12968
12944
  else if (value instanceof Set) b.addField(field, new Set(value), FieldSet);
@@ -13003,7 +12979,7 @@ function assertNoReservedComponentStatics(statics = {}) {
13003
12979
  }
13004
12980
  }
13005
12981
  }
13006
- var BAD_VALUE2, nullCoercer, Field, CHECK_TYPE_ANY, CHECK_TYPE_INT, CHECK_TYPE_FLOAT, CHECK_TYPE_BOOL, CHECK_TYPE_STRING, CHECK_TYPE_LIST, CHECK_TYPE_OBJECT, CHECK_TYPE_MAP, CHECK_TYPE_SET, FieldBool, FieldAny, FieldString, FieldInt, FieldFloat, metaOf, getTypeName, FieldComp, FieldList, FieldObject, FieldMap, FieldSet, ClassBuilder, FIELD_CLASS, fieldsByTypeName, META_KEYS, RESERVED_COMPONENT_STATICS;
12982
+ var BAD_VALUE2, nullCoercer, Field, CHECK_TYPE_ANY, CHECK_TYPE_INT, CHECK_TYPE_FLOAT, CHECK_TYPE_BOOL, CHECK_TYPE_STRING, CHECK_TYPE_LIST, CHECK_TYPE_OBJECT, CHECK_TYPE_MAP, CHECK_TYPE_SET, COERCE_NONE, COERCE_BOOL, COERCE_STRING, COERCE_INT, COERCE_LIST, COERCE_OBJECT, COERCE_MAP, COERCE_SET, FieldBool, FieldAny, FieldString, FieldInt, FieldFloat, metaOf, getTypeName, FieldComp, FieldList, FieldObject, FieldMap, FieldSet, ClassBuilder, FIELD_CLASS, fieldsByTypeName, META_KEYS, RESERVED_COMPONENT_STATICS;
13007
12983
  var init_oo = __esm({
13008
12984
  "src/oo.js"() {
13009
12985
  init_collection();
@@ -13040,9 +13016,22 @@ var init_oo = __esm({
13040
13016
  CHECK_TYPE_OBJECT = isPlainObject;
13041
13017
  CHECK_TYPE_MAP = (v) => v instanceof Map;
13042
13018
  CHECK_TYPE_SET = (v) => v instanceof Set;
13019
+ COERCE_NONE = (_v) => null;
13020
+ COERCE_BOOL = (v) => !!v;
13021
+ COERCE_STRING = (v) => v?.toString?.() ?? "";
13022
+ COERCE_INT = (v) => Number.isFinite(v) ? Math.trunc(v) : null;
13023
+ COERCE_LIST = (v) => Array.isArray(v) ? [...v] : null;
13024
+ COERCE_OBJECT = (v) => isPlainObject(v) ? { ...v } : null;
13025
+ COERCE_MAP = (v) => {
13026
+ if (v instanceof Map) return new Map(v);
13027
+ if (Array.isArray(v) || isPlainObject(v))
13028
+ return new Map(Array.isArray(v) ? v : Object.entries(v));
13029
+ return null;
13030
+ };
13031
+ COERCE_SET = (v) => v instanceof Set || Array.isArray(v) ? new Set(v) : null;
13043
13032
  FieldBool = class extends Field {
13044
13033
  constructor(name, defaultValue = false) {
13045
- super("bool", name, CHECK_TYPE_BOOL, (v) => !!v, defaultValue);
13034
+ super("bool", name, CHECK_TYPE_BOOL, COERCE_BOOL, defaultValue);
13046
13035
  }
13047
13036
  };
13048
13037
  FieldAny = class extends Field {
@@ -13052,23 +13041,17 @@ var init_oo = __esm({
13052
13041
  };
13053
13042
  FieldString = class extends Field {
13054
13043
  constructor(name, defaultValue = "") {
13055
- super("text", name, CHECK_TYPE_STRING, (v) => v?.toString?.() ?? "", defaultValue);
13044
+ super("text", name, CHECK_TYPE_STRING, COERCE_STRING, defaultValue);
13056
13045
  }
13057
13046
  };
13058
13047
  FieldInt = class extends Field {
13059
13048
  constructor(name, defaultValue = 0) {
13060
- super(
13061
- "int",
13062
- name,
13063
- CHECK_TYPE_INT,
13064
- (v) => Number.isFinite(v) ? Math.trunc(v) : null,
13065
- defaultValue
13066
- );
13049
+ super("int", name, CHECK_TYPE_INT, COERCE_INT, defaultValue);
13067
13050
  }
13068
13051
  };
13069
13052
  FieldFloat = class extends Field {
13070
13053
  constructor(name, defaultValue = 0) {
13071
- super("float", name, CHECK_TYPE_FLOAT, (_) => null, defaultValue);
13054
+ super("float", name, CHECK_TYPE_FLOAT, COERCE_NONE, defaultValue);
13072
13055
  }
13073
13056
  };
13074
13057
  metaOf = (v) => v?.constructor?.[COMPONENT] ?? v?.constructor?.getMetaClass?.();
@@ -13081,45 +13064,22 @@ var init_oo = __esm({
13081
13064
  };
13082
13065
  FieldList = class extends Field {
13083
13066
  constructor(name, defaultValue = []) {
13084
- super("list", name, CHECK_TYPE_LIST, (v) => Array.isArray(v) ? [...v] : null, defaultValue);
13067
+ super("list", name, CHECK_TYPE_LIST, COERCE_LIST, defaultValue);
13085
13068
  }
13086
13069
  };
13087
13070
  FieldObject = class extends Field {
13088
13071
  constructor(name, defaultValue = {}) {
13089
- super(
13090
- "object",
13091
- name,
13092
- CHECK_TYPE_OBJECT,
13093
- (v) => isPlainObject(v) ? { ...v } : null,
13094
- defaultValue
13095
- );
13072
+ super("object", name, CHECK_TYPE_OBJECT, COERCE_OBJECT, defaultValue);
13096
13073
  }
13097
13074
  };
13098
13075
  FieldMap = class extends Field {
13099
13076
  constructor(name, defaultValue = /* @__PURE__ */ new Map()) {
13100
- super(
13101
- "map",
13102
- name,
13103
- CHECK_TYPE_MAP,
13104
- (v) => {
13105
- if (v instanceof Map) return new Map(v);
13106
- if (Array.isArray(v) || isPlainObject(v))
13107
- return new Map(Array.isArray(v) ? v : Object.entries(v));
13108
- return null;
13109
- },
13110
- defaultValue
13111
- );
13077
+ super("map", name, CHECK_TYPE_MAP, COERCE_MAP, defaultValue);
13112
13078
  }
13113
13079
  };
13114
13080
  FieldSet = class extends Field {
13115
13081
  constructor(name, defaultValue = /* @__PURE__ */ new Set()) {
13116
- super(
13117
- "set",
13118
- name,
13119
- CHECK_TYPE_SET,
13120
- (v) => v instanceof Set || Array.isArray(v) ? new Set(v) : null,
13121
- defaultValue
13122
- );
13082
+ super("set", name, CHECK_TYPE_SET, COERCE_SET, defaultValue);
13123
13083
  }
13124
13084
  };
13125
13085
  ClassBuilder = class {
@@ -814,31 +814,14 @@ function parseBool(s, px) {
814
814
  const val = parseToken(tokens[0], px);
815
815
  return val !== null && kindOf(val) & G_BOOL ? val : null;
816
816
  }
817
- function parseText(s, px) {
818
- return _parseSingle(s, px, G_TEXT);
819
- }
820
- function parseComponent(s, px) {
821
- return _parseSingle(s, px, G_COMPONENT);
822
- }
823
- function parseSequence(s, px) {
824
- return _parseSingle(s, px, G_SEQUENCE);
825
- }
826
- function parseField(s, px) {
827
- return _parseSingle(s, px, G_FIELD);
828
- }
829
- function parseProvide(s, px) {
830
- return _parseSingle(s, px, G_PROVIDE);
831
- }
832
- function parseMacroAttr(s, px) {
833
- return _parseSingle(s, px, G_ALL);
834
- }
835
- function parseReceiveHandler(s, px) {
836
- return _parseHandler(s, px, "receive", true, true, false);
837
- }
838
- function parseAlterHandler(s, px) {
839
- const r = _parseHandler(s, px, "alter", false, false, true);
840
- return r === null ? null : r.handlerVal;
841
- }
817
+ var parseText = (s, px) => _parseSingle(s, px, G_TEXT);
818
+ var parseComponent = (s, px) => _parseSingle(s, px, G_COMPONENT);
819
+ var parseSequence = (s, px) => _parseSingle(s, px, G_SEQUENCE);
820
+ var parseField = (s, px) => _parseSingle(s, px, G_FIELD);
821
+ var parseProvide = (s, px) => _parseSingle(s, px, G_PROVIDE);
822
+ var parseMacroAttr = (s, px) => _parseSingle(s, px, G_ALL);
823
+ var parseReceiveHandler = (s, px) => _parseHandler(s, px, "receive", true, true, false);
824
+ var parseAlterHandler = (s, px) => _parseHandler(s, px, "alter", false, false, true)?.handlerVal ?? null;
842
825
  function _parseHandler(s, px, namespace, allowArgs, report, allowMethod) {
843
826
  const tokens = tokenizeValue(s.trim());
844
827
  const headTok = tokens[0] ?? "";
@@ -1527,19 +1510,9 @@ function childOpts(vnode, ns, opts) {
1527
1510
  const target = ns === SVG_NS && isForeignObject(vnode.tag) ? null : ns;
1528
1511
  return target === (opts.namespace ?? null) ? opts : { ...opts, namespace: target };
1529
1512
  }
1530
- var NEVER_ASSIGN = /* @__PURE__ */ new Set([
1531
- "width",
1532
- "height",
1533
- "href",
1534
- "list",
1535
- "form",
1536
- "tabIndex",
1537
- "download",
1538
- "rowSpan",
1539
- "colSpan",
1540
- "role",
1541
- "popover"
1542
- ]);
1513
+ var NEVER_ASSIGN = new Set(
1514
+ "width height href list form tabIndex download rowSpan colSpan role popover".split(" ")
1515
+ );
1543
1516
  var PROP_ATTR_NAME = { className: "class", htmlFor: "for" };
1544
1517
  function applyProperties(node, props) {
1545
1518
  const namespaced = isNamespaced(node);
@@ -1818,6 +1791,10 @@ function morphChildren(parentDom, oldChilds, newChilds, opts) {
1818
1791
  if (!used[i] && domNodes[i].parentNode === parentDom) parentDom.removeChild(domNodes[i]);
1819
1792
  }
1820
1793
  function render(vnode, container, options, prev) {
1794
+ if (vnode == null) {
1795
+ container.replaceChildren();
1796
+ return { vnode: null, dom: null };
1797
+ }
1821
1798
  const isFragment = vnode instanceof VFragment;
1822
1799
  if (prev && prev.vnode instanceof VFragment === isFragment) {
1823
1800
  const oldDom = isFragment ? container : prev.dom;
@@ -6121,9 +6098,22 @@ var CHECK_TYPE_LIST = Array.isArray;
6121
6098
  var CHECK_TYPE_OBJECT = isPlainObject;
6122
6099
  var CHECK_TYPE_MAP = (v) => v instanceof Map;
6123
6100
  var CHECK_TYPE_SET = (v) => v instanceof Set;
6101
+ var COERCE_NONE = (_v) => null;
6102
+ var COERCE_BOOL = (v) => !!v;
6103
+ var COERCE_STRING = (v) => v?.toString?.() ?? "";
6104
+ var COERCE_INT = (v) => Number.isFinite(v) ? Math.trunc(v) : null;
6105
+ var COERCE_LIST = (v) => Array.isArray(v) ? [...v] : null;
6106
+ var COERCE_OBJECT = (v) => isPlainObject(v) ? { ...v } : null;
6107
+ var COERCE_MAP = (v) => {
6108
+ if (v instanceof Map) return new Map(v);
6109
+ if (Array.isArray(v) || isPlainObject(v))
6110
+ return new Map(Array.isArray(v) ? v : Object.entries(v));
6111
+ return null;
6112
+ };
6113
+ var COERCE_SET = (v) => v instanceof Set || Array.isArray(v) ? new Set(v) : null;
6124
6114
  var FieldBool = class extends Field {
6125
6115
  constructor(name, defaultValue = false) {
6126
- super("bool", name, CHECK_TYPE_BOOL, (v) => !!v, defaultValue);
6116
+ super("bool", name, CHECK_TYPE_BOOL, COERCE_BOOL, defaultValue);
6127
6117
  }
6128
6118
  };
6129
6119
  var FieldAny = class extends Field {
@@ -6133,23 +6123,17 @@ var FieldAny = class extends Field {
6133
6123
  };
6134
6124
  var FieldString = class extends Field {
6135
6125
  constructor(name, defaultValue = "") {
6136
- super("text", name, CHECK_TYPE_STRING, (v) => v?.toString?.() ?? "", defaultValue);
6126
+ super("text", name, CHECK_TYPE_STRING, COERCE_STRING, defaultValue);
6137
6127
  }
6138
6128
  };
6139
6129
  var FieldInt = class extends Field {
6140
6130
  constructor(name, defaultValue = 0) {
6141
- super(
6142
- "int",
6143
- name,
6144
- CHECK_TYPE_INT,
6145
- (v) => Number.isFinite(v) ? Math.trunc(v) : null,
6146
- defaultValue
6147
- );
6131
+ super("int", name, CHECK_TYPE_INT, COERCE_INT, defaultValue);
6148
6132
  }
6149
6133
  };
6150
6134
  var FieldFloat = class extends Field {
6151
6135
  constructor(name, defaultValue = 0) {
6152
- super("float", name, CHECK_TYPE_FLOAT, (_) => null, defaultValue);
6136
+ super("float", name, CHECK_TYPE_FLOAT, COERCE_NONE, defaultValue);
6153
6137
  }
6154
6138
  };
6155
6139
  var metaOf = (v) => v?.constructor?.[COMPONENT] ?? v?.constructor?.getMetaClass?.();
@@ -6162,45 +6146,22 @@ var FieldComp = class extends Field {
6162
6146
  };
6163
6147
  var FieldList = class extends Field {
6164
6148
  constructor(name, defaultValue = []) {
6165
- super("list", name, CHECK_TYPE_LIST, (v) => Array.isArray(v) ? [...v] : null, defaultValue);
6149
+ super("list", name, CHECK_TYPE_LIST, COERCE_LIST, defaultValue);
6166
6150
  }
6167
6151
  };
6168
6152
  var FieldObject = class extends Field {
6169
6153
  constructor(name, defaultValue = {}) {
6170
- super(
6171
- "object",
6172
- name,
6173
- CHECK_TYPE_OBJECT,
6174
- (v) => isPlainObject(v) ? { ...v } : null,
6175
- defaultValue
6176
- );
6154
+ super("object", name, CHECK_TYPE_OBJECT, COERCE_OBJECT, defaultValue);
6177
6155
  }
6178
6156
  };
6179
6157
  var FieldMap = class extends Field {
6180
6158
  constructor(name, defaultValue = /* @__PURE__ */ new Map()) {
6181
- super(
6182
- "map",
6183
- name,
6184
- CHECK_TYPE_MAP,
6185
- (v) => {
6186
- if (v instanceof Map) return new Map(v);
6187
- if (Array.isArray(v) || isPlainObject(v))
6188
- return new Map(Array.isArray(v) ? v : Object.entries(v));
6189
- return null;
6190
- },
6191
- defaultValue
6192
- );
6159
+ super("map", name, CHECK_TYPE_MAP, COERCE_MAP, defaultValue);
6193
6160
  }
6194
6161
  };
6195
6162
  var FieldSet = class extends Field {
6196
6163
  constructor(name, defaultValue = /* @__PURE__ */ new Set()) {
6197
- super(
6198
- "set",
6199
- name,
6200
- CHECK_TYPE_SET,
6201
- (v) => v instanceof Set || Array.isArray(v) ? new Set(v) : null,
6202
- defaultValue
6203
- );
6164
+ super("set", name, CHECK_TYPE_SET, COERCE_SET, defaultValue);
6204
6165
  }
6205
6166
  };
6206
6167
  function mkCompField(field, scope, args) {
@@ -6298,8 +6259,7 @@ function classFromData(name, { fields = {}, methods, statics }) {
6298
6259
  const value = fields[field];
6299
6260
  const type = typeof value;
6300
6261
  if (type === "string") b.addField(field, value, FieldString);
6301
- else if (type === "number")
6302
- b.addField(field, value, Number.isInteger(value) ? FieldInt : FieldFloat);
6262
+ else if (type === "number") b.addField(field, value, FieldFloat);
6303
6263
  else if (type === "boolean") b.addField(field, value, FieldBool);
6304
6264
  else if (Array.isArray(value)) b.addField(field, [...value], FieldList);
6305
6265
  else if (value instanceof Set) b.addField(field, new Set(value), FieldSet);
@@ -5559,31 +5559,14 @@ function parseBool(s, px) {
5559
5559
  const val = parseToken(tokens[0], px);
5560
5560
  return val !== null && kindOf(val) & G_BOOL ? val : null;
5561
5561
  }
5562
- function parseText(s, px) {
5563
- return _parseSingle(s, px, G_TEXT);
5564
- }
5565
- function parseComponent(s, px) {
5566
- return _parseSingle(s, px, G_COMPONENT);
5567
- }
5568
- function parseSequence(s, px) {
5569
- return _parseSingle(s, px, G_SEQUENCE);
5570
- }
5571
- function parseField(s, px) {
5572
- return _parseSingle(s, px, G_FIELD);
5573
- }
5574
- function parseProvide(s, px) {
5575
- return _parseSingle(s, px, G_PROVIDE);
5576
- }
5577
- function parseMacroAttr(s, px) {
5578
- return _parseSingle(s, px, G_ALL);
5579
- }
5580
- function parseReceiveHandler(s, px) {
5581
- return _parseHandler(s, px, "receive", true, true, false);
5582
- }
5583
- function parseAlterHandler(s, px) {
5584
- const r = _parseHandler(s, px, "alter", false, false, true);
5585
- return r === null ? null : r.handlerVal;
5586
- }
5562
+ var parseText = (s, px) => _parseSingle(s, px, G_TEXT);
5563
+ var parseComponent = (s, px) => _parseSingle(s, px, G_COMPONENT);
5564
+ var parseSequence = (s, px) => _parseSingle(s, px, G_SEQUENCE);
5565
+ var parseField = (s, px) => _parseSingle(s, px, G_FIELD);
5566
+ var parseProvide = (s, px) => _parseSingle(s, px, G_PROVIDE);
5567
+ var parseMacroAttr = (s, px) => _parseSingle(s, px, G_ALL);
5568
+ var parseReceiveHandler = (s, px) => _parseHandler(s, px, "receive", true, true, false);
5569
+ var parseAlterHandler = (s, px) => _parseHandler(s, px, "alter", false, false, true)?.handlerVal ?? null;
5587
5570
  function _parseHandler(s, px, namespace, allowArgs, report, allowMethod) {
5588
5571
  const tokens = tokenizeValue(s.trim());
5589
5572
  const headTok = tokens[0] ?? "";
@@ -6272,19 +6255,9 @@ function childOpts(vnode, ns, opts) {
6272
6255
  const target = ns === SVG_NS && isForeignObject(vnode.tag) ? null : ns;
6273
6256
  return target === (opts.namespace ?? null) ? opts : { ...opts, namespace: target };
6274
6257
  }
6275
- var NEVER_ASSIGN = /* @__PURE__ */ new Set([
6276
- "width",
6277
- "height",
6278
- "href",
6279
- "list",
6280
- "form",
6281
- "tabIndex",
6282
- "download",
6283
- "rowSpan",
6284
- "colSpan",
6285
- "role",
6286
- "popover"
6287
- ]);
6258
+ var NEVER_ASSIGN = new Set(
6259
+ "width height href list form tabIndex download rowSpan colSpan role popover".split(" ")
6260
+ );
6288
6261
  var PROP_ATTR_NAME = { className: "class", htmlFor: "for" };
6289
6262
  function applyProperties(node, props) {
6290
6263
  const namespaced = isNamespaced(node);
@@ -6563,6 +6536,10 @@ function morphChildren(parentDom, oldChilds, newChilds, opts) {
6563
6536
  if (!used2[i] && domNodes[i].parentNode === parentDom) parentDom.removeChild(domNodes[i]);
6564
6537
  }
6565
6538
  function render(vnode, container, options, prev) {
6539
+ if (vnode == null) {
6540
+ container.replaceChildren();
6541
+ return { vnode: null, dom: null };
6542
+ }
6566
6543
  const isFragment = vnode instanceof VFragment;
6567
6544
  if (prev && prev.vnode instanceof VFragment === isFragment) {
6568
6545
  const oldDom = isFragment ? container : prev.dom;
@@ -10866,9 +10843,22 @@ var CHECK_TYPE_LIST = Array.isArray;
10866
10843
  var CHECK_TYPE_OBJECT = isPlainObject;
10867
10844
  var CHECK_TYPE_MAP = (v) => v instanceof Map;
10868
10845
  var CHECK_TYPE_SET = (v) => v instanceof Set;
10846
+ var COERCE_NONE = (_v) => null;
10847
+ var COERCE_BOOL = (v) => !!v;
10848
+ var COERCE_STRING = (v) => v?.toString?.() ?? "";
10849
+ var COERCE_INT = (v) => Number.isFinite(v) ? Math.trunc(v) : null;
10850
+ var COERCE_LIST = (v) => Array.isArray(v) ? [...v] : null;
10851
+ var COERCE_OBJECT = (v) => isPlainObject(v) ? { ...v } : null;
10852
+ var COERCE_MAP = (v) => {
10853
+ if (v instanceof Map) return new Map(v);
10854
+ if (Array.isArray(v) || isPlainObject(v))
10855
+ return new Map(Array.isArray(v) ? v : Object.entries(v));
10856
+ return null;
10857
+ };
10858
+ var COERCE_SET = (v) => v instanceof Set || Array.isArray(v) ? new Set(v) : null;
10869
10859
  var FieldBool = class extends Field {
10870
10860
  constructor(name, defaultValue = false) {
10871
- super("bool", name, CHECK_TYPE_BOOL, (v) => !!v, defaultValue);
10861
+ super("bool", name, CHECK_TYPE_BOOL, COERCE_BOOL, defaultValue);
10872
10862
  }
10873
10863
  };
10874
10864
  var FieldAny = class extends Field {
@@ -10878,23 +10868,17 @@ var FieldAny = class extends Field {
10878
10868
  };
10879
10869
  var FieldString = class extends Field {
10880
10870
  constructor(name, defaultValue = "") {
10881
- super("text", name, CHECK_TYPE_STRING, (v) => v?.toString?.() ?? "", defaultValue);
10871
+ super("text", name, CHECK_TYPE_STRING, COERCE_STRING, defaultValue);
10882
10872
  }
10883
10873
  };
10884
10874
  var FieldInt = class extends Field {
10885
10875
  constructor(name, defaultValue = 0) {
10886
- super(
10887
- "int",
10888
- name,
10889
- CHECK_TYPE_INT,
10890
- (v) => Number.isFinite(v) ? Math.trunc(v) : null,
10891
- defaultValue
10892
- );
10876
+ super("int", name, CHECK_TYPE_INT, COERCE_INT, defaultValue);
10893
10877
  }
10894
10878
  };
10895
10879
  var FieldFloat = class extends Field {
10896
10880
  constructor(name, defaultValue = 0) {
10897
- super("float", name, CHECK_TYPE_FLOAT, (_) => null, defaultValue);
10881
+ super("float", name, CHECK_TYPE_FLOAT, COERCE_NONE, defaultValue);
10898
10882
  }
10899
10883
  };
10900
10884
  var metaOf = (v) => v?.constructor?.[COMPONENT] ?? v?.constructor?.getMetaClass?.();
@@ -10907,45 +10891,22 @@ var FieldComp = class extends Field {
10907
10891
  };
10908
10892
  var FieldList = class extends Field {
10909
10893
  constructor(name, defaultValue = []) {
10910
- super("list", name, CHECK_TYPE_LIST, (v) => Array.isArray(v) ? [...v] : null, defaultValue);
10894
+ super("list", name, CHECK_TYPE_LIST, COERCE_LIST, defaultValue);
10911
10895
  }
10912
10896
  };
10913
10897
  var FieldObject = class extends Field {
10914
10898
  constructor(name, defaultValue = {}) {
10915
- super(
10916
- "object",
10917
- name,
10918
- CHECK_TYPE_OBJECT,
10919
- (v) => isPlainObject(v) ? { ...v } : null,
10920
- defaultValue
10921
- );
10899
+ super("object", name, CHECK_TYPE_OBJECT, COERCE_OBJECT, defaultValue);
10922
10900
  }
10923
10901
  };
10924
10902
  var FieldMap = class extends Field {
10925
10903
  constructor(name, defaultValue = /* @__PURE__ */ new Map()) {
10926
- super(
10927
- "map",
10928
- name,
10929
- CHECK_TYPE_MAP,
10930
- (v) => {
10931
- if (v instanceof Map) return new Map(v);
10932
- if (Array.isArray(v) || isPlainObject(v))
10933
- return new Map(Array.isArray(v) ? v : Object.entries(v));
10934
- return null;
10935
- },
10936
- defaultValue
10937
- );
10904
+ super("map", name, CHECK_TYPE_MAP, COERCE_MAP, defaultValue);
10938
10905
  }
10939
10906
  };
10940
10907
  var FieldSet = class extends Field {
10941
10908
  constructor(name, defaultValue = /* @__PURE__ */ new Set()) {
10942
- super(
10943
- "set",
10944
- name,
10945
- CHECK_TYPE_SET,
10946
- (v) => v instanceof Set || Array.isArray(v) ? new Set(v) : null,
10947
- defaultValue
10948
- );
10909
+ super("set", name, CHECK_TYPE_SET, COERCE_SET, defaultValue);
10949
10910
  }
10950
10911
  };
10951
10912
  function mkCompField(field, scope, args) {
@@ -11043,8 +11004,7 @@ function classFromData(name, { fields = {}, methods, statics }) {
11043
11004
  const value = fields[field];
11044
11005
  const type3 = typeof value;
11045
11006
  if (type3 === "string") b.addField(field, value, FieldString);
11046
- else if (type3 === "number")
11047
- b.addField(field, value, Number.isInteger(value) ? FieldInt : FieldFloat);
11007
+ else if (type3 === "number") b.addField(field, value, FieldFloat);
11048
11008
  else if (type3 === "boolean") b.addField(field, value, FieldBool);
11049
11009
  else if (Array.isArray(value)) b.addField(field, [...value], FieldList);
11050
11010
  else if (value instanceof Set) b.addField(field, new Set(value), FieldSet);