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.
- package/dist/tutuca-cli.js +39 -79
- package/dist/tutuca-dev.ext.js +37 -77
- package/dist/tutuca-dev.js +37 -77
- package/dist/tutuca-dev.min.js +2 -2
- package/dist/tutuca-extra.ext.js +37 -77
- package/dist/tutuca-extra.js +37 -77
- package/dist/tutuca-extra.min.js +2 -2
- package/dist/tutuca.ext.js +37 -77
- package/dist/tutuca.js +37 -77
- package/dist/tutuca.min.js +2 -2
- package/package.json +1 -1
- package/skill/tutuca/core.md +6 -0
- package/skill/tutuca-source/tutuca.ext.js +37 -77
package/dist/tutuca-cli.js
CHANGED
|
@@ -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 =
|
|
2611
|
-
"width"
|
|
2612
|
-
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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 {
|
package/dist/tutuca-dev.ext.js
CHANGED
|
@@ -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
|
-
|
|
818
|
-
|
|
819
|
-
|
|
820
|
-
|
|
821
|
-
|
|
822
|
-
|
|
823
|
-
|
|
824
|
-
|
|
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 =
|
|
1531
|
-
"width"
|
|
1532
|
-
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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);
|
package/dist/tutuca-dev.js
CHANGED
|
@@ -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
|
-
|
|
5563
|
-
|
|
5564
|
-
|
|
5565
|
-
|
|
5566
|
-
|
|
5567
|
-
|
|
5568
|
-
|
|
5569
|
-
|
|
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 =
|
|
6276
|
-
"width"
|
|
6277
|
-
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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);
|