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
|
@@ -656,31 +656,14 @@ function parseBool(s, px) {
|
|
|
656
656
|
const val = parseToken(tokens[0], px);
|
|
657
657
|
return val !== null && kindOf(val) & G_BOOL ? val : null;
|
|
658
658
|
}
|
|
659
|
-
|
|
660
|
-
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
}
|
|
668
|
-
function parseField(s, px) {
|
|
669
|
-
return _parseSingle(s, px, G_FIELD);
|
|
670
|
-
}
|
|
671
|
-
function parseProvide(s, px) {
|
|
672
|
-
return _parseSingle(s, px, G_PROVIDE);
|
|
673
|
-
}
|
|
674
|
-
function parseMacroAttr(s, px) {
|
|
675
|
-
return _parseSingle(s, px, G_ALL);
|
|
676
|
-
}
|
|
677
|
-
function parseReceiveHandler(s, px) {
|
|
678
|
-
return _parseHandler(s, px, "receive", true, true, false);
|
|
679
|
-
}
|
|
680
|
-
function parseAlterHandler(s, px) {
|
|
681
|
-
const r = _parseHandler(s, px, "alter", false, false, true);
|
|
682
|
-
return r === null ? null : r.handlerVal;
|
|
683
|
-
}
|
|
659
|
+
var parseText = (s, px) => _parseSingle(s, px, G_TEXT);
|
|
660
|
+
var parseComponent = (s, px) => _parseSingle(s, px, G_COMPONENT);
|
|
661
|
+
var parseSequence = (s, px) => _parseSingle(s, px, G_SEQUENCE);
|
|
662
|
+
var parseField = (s, px) => _parseSingle(s, px, G_FIELD);
|
|
663
|
+
var parseProvide = (s, px) => _parseSingle(s, px, G_PROVIDE);
|
|
664
|
+
var parseMacroAttr = (s, px) => _parseSingle(s, px, G_ALL);
|
|
665
|
+
var parseReceiveHandler = (s, px) => _parseHandler(s, px, "receive", true, true, false);
|
|
666
|
+
var parseAlterHandler = (s, px) => _parseHandler(s, px, "alter", false, false, true)?.handlerVal ?? null;
|
|
684
667
|
function _parseHandler(s, px, namespace, allowArgs, report, allowMethod) {
|
|
685
668
|
const tokens = tokenizeValue(s.trim());
|
|
686
669
|
const headTok = tokens[0] ?? "";
|
|
@@ -1369,19 +1352,9 @@ function childOpts(vnode, ns, opts) {
|
|
|
1369
1352
|
const target = ns === SVG_NS && isForeignObject(vnode.tag) ? null : ns;
|
|
1370
1353
|
return target === (opts.namespace ?? null) ? opts : { ...opts, namespace: target };
|
|
1371
1354
|
}
|
|
1372
|
-
var NEVER_ASSIGN =
|
|
1373
|
-
"width"
|
|
1374
|
-
|
|
1375
|
-
"href",
|
|
1376
|
-
"list",
|
|
1377
|
-
"form",
|
|
1378
|
-
"tabIndex",
|
|
1379
|
-
"download",
|
|
1380
|
-
"rowSpan",
|
|
1381
|
-
"colSpan",
|
|
1382
|
-
"role",
|
|
1383
|
-
"popover"
|
|
1384
|
-
]);
|
|
1355
|
+
var NEVER_ASSIGN = new Set(
|
|
1356
|
+
"width height href list form tabIndex download rowSpan colSpan role popover".split(" ")
|
|
1357
|
+
);
|
|
1385
1358
|
var PROP_ATTR_NAME = { className: "class", htmlFor: "for" };
|
|
1386
1359
|
function applyProperties(node, props) {
|
|
1387
1360
|
const namespaced = isNamespaced(node);
|
|
@@ -1660,6 +1633,10 @@ function morphChildren(parentDom, oldChilds, newChilds, opts) {
|
|
|
1660
1633
|
if (!used[i] && domNodes[i].parentNode === parentDom) parentDom.removeChild(domNodes[i]);
|
|
1661
1634
|
}
|
|
1662
1635
|
function render(vnode, container, options, prev) {
|
|
1636
|
+
if (vnode == null) {
|
|
1637
|
+
container.replaceChildren();
|
|
1638
|
+
return { vnode: null, dom: null };
|
|
1639
|
+
}
|
|
1663
1640
|
const isFragment = vnode instanceof VFragment;
|
|
1664
1641
|
if (prev && prev.vnode instanceof VFragment === isFragment) {
|
|
1665
1642
|
const oldDom = isFragment ? container : prev.dom;
|
|
@@ -2797,9 +2774,22 @@ var CHECK_TYPE_LIST = Array.isArray;
|
|
|
2797
2774
|
var CHECK_TYPE_OBJECT = isPlainObject;
|
|
2798
2775
|
var CHECK_TYPE_MAP = (v) => v instanceof Map;
|
|
2799
2776
|
var CHECK_TYPE_SET = (v) => v instanceof Set;
|
|
2777
|
+
var COERCE_NONE = (_v) => null;
|
|
2778
|
+
var COERCE_BOOL = (v) => !!v;
|
|
2779
|
+
var COERCE_STRING = (v) => v?.toString?.() ?? "";
|
|
2780
|
+
var COERCE_INT = (v) => Number.isFinite(v) ? Math.trunc(v) : null;
|
|
2781
|
+
var COERCE_LIST = (v) => Array.isArray(v) ? [...v] : null;
|
|
2782
|
+
var COERCE_OBJECT = (v) => isPlainObject(v) ? { ...v } : null;
|
|
2783
|
+
var COERCE_MAP = (v) => {
|
|
2784
|
+
if (v instanceof Map) return new Map(v);
|
|
2785
|
+
if (Array.isArray(v) || isPlainObject(v))
|
|
2786
|
+
return new Map(Array.isArray(v) ? v : Object.entries(v));
|
|
2787
|
+
return null;
|
|
2788
|
+
};
|
|
2789
|
+
var COERCE_SET = (v) => v instanceof Set || Array.isArray(v) ? new Set(v) : null;
|
|
2800
2790
|
var FieldBool = class extends Field {
|
|
2801
2791
|
constructor(name, defaultValue = false) {
|
|
2802
|
-
super("bool", name, CHECK_TYPE_BOOL,
|
|
2792
|
+
super("bool", name, CHECK_TYPE_BOOL, COERCE_BOOL, defaultValue);
|
|
2803
2793
|
}
|
|
2804
2794
|
};
|
|
2805
2795
|
var FieldAny = class extends Field {
|
|
@@ -2809,23 +2799,17 @@ var FieldAny = class extends Field {
|
|
|
2809
2799
|
};
|
|
2810
2800
|
var FieldString = class extends Field {
|
|
2811
2801
|
constructor(name, defaultValue = "") {
|
|
2812
|
-
super("text", name, CHECK_TYPE_STRING,
|
|
2802
|
+
super("text", name, CHECK_TYPE_STRING, COERCE_STRING, defaultValue);
|
|
2813
2803
|
}
|
|
2814
2804
|
};
|
|
2815
2805
|
var FieldInt = class extends Field {
|
|
2816
2806
|
constructor(name, defaultValue = 0) {
|
|
2817
|
-
super(
|
|
2818
|
-
"int",
|
|
2819
|
-
name,
|
|
2820
|
-
CHECK_TYPE_INT,
|
|
2821
|
-
(v) => Number.isFinite(v) ? Math.trunc(v) : null,
|
|
2822
|
-
defaultValue
|
|
2823
|
-
);
|
|
2807
|
+
super("int", name, CHECK_TYPE_INT, COERCE_INT, defaultValue);
|
|
2824
2808
|
}
|
|
2825
2809
|
};
|
|
2826
2810
|
var FieldFloat = class extends Field {
|
|
2827
2811
|
constructor(name, defaultValue = 0) {
|
|
2828
|
-
super("float", name, CHECK_TYPE_FLOAT,
|
|
2812
|
+
super("float", name, CHECK_TYPE_FLOAT, COERCE_NONE, defaultValue);
|
|
2829
2813
|
}
|
|
2830
2814
|
};
|
|
2831
2815
|
var metaOf = (v) => v?.constructor?.[COMPONENT] ?? v?.constructor?.getMetaClass?.();
|
|
@@ -2838,45 +2822,22 @@ var FieldComp = class extends Field {
|
|
|
2838
2822
|
};
|
|
2839
2823
|
var FieldList = class extends Field {
|
|
2840
2824
|
constructor(name, defaultValue = []) {
|
|
2841
|
-
super("list", name, CHECK_TYPE_LIST,
|
|
2825
|
+
super("list", name, CHECK_TYPE_LIST, COERCE_LIST, defaultValue);
|
|
2842
2826
|
}
|
|
2843
2827
|
};
|
|
2844
2828
|
var FieldObject = class extends Field {
|
|
2845
2829
|
constructor(name, defaultValue = {}) {
|
|
2846
|
-
super(
|
|
2847
|
-
"object",
|
|
2848
|
-
name,
|
|
2849
|
-
CHECK_TYPE_OBJECT,
|
|
2850
|
-
(v) => isPlainObject(v) ? { ...v } : null,
|
|
2851
|
-
defaultValue
|
|
2852
|
-
);
|
|
2830
|
+
super("object", name, CHECK_TYPE_OBJECT, COERCE_OBJECT, defaultValue);
|
|
2853
2831
|
}
|
|
2854
2832
|
};
|
|
2855
2833
|
var FieldMap = class extends Field {
|
|
2856
2834
|
constructor(name, defaultValue = /* @__PURE__ */ new Map()) {
|
|
2857
|
-
super(
|
|
2858
|
-
"map",
|
|
2859
|
-
name,
|
|
2860
|
-
CHECK_TYPE_MAP,
|
|
2861
|
-
(v) => {
|
|
2862
|
-
if (v instanceof Map) return new Map(v);
|
|
2863
|
-
if (Array.isArray(v) || isPlainObject(v))
|
|
2864
|
-
return new Map(Array.isArray(v) ? v : Object.entries(v));
|
|
2865
|
-
return null;
|
|
2866
|
-
},
|
|
2867
|
-
defaultValue
|
|
2868
|
-
);
|
|
2835
|
+
super("map", name, CHECK_TYPE_MAP, COERCE_MAP, defaultValue);
|
|
2869
2836
|
}
|
|
2870
2837
|
};
|
|
2871
2838
|
var FieldSet = class extends Field {
|
|
2872
2839
|
constructor(name, defaultValue = /* @__PURE__ */ new Set()) {
|
|
2873
|
-
super(
|
|
2874
|
-
"set",
|
|
2875
|
-
name,
|
|
2876
|
-
CHECK_TYPE_SET,
|
|
2877
|
-
(v) => v instanceof Set || Array.isArray(v) ? new Set(v) : null,
|
|
2878
|
-
defaultValue
|
|
2879
|
-
);
|
|
2840
|
+
super("set", name, CHECK_TYPE_SET, COERCE_SET, defaultValue);
|
|
2880
2841
|
}
|
|
2881
2842
|
};
|
|
2882
2843
|
function mkCompField(field, scope, args) {
|
|
@@ -2974,8 +2935,7 @@ function classFromData(name, { fields = {}, methods, statics }) {
|
|
|
2974
2935
|
const value = fields[field];
|
|
2975
2936
|
const type = typeof value;
|
|
2976
2937
|
if (type === "string") b.addField(field, value, FieldString);
|
|
2977
|
-
else if (type === "number")
|
|
2978
|
-
b.addField(field, value, Number.isInteger(value) ? FieldInt : FieldFloat);
|
|
2938
|
+
else if (type === "number") b.addField(field, value, FieldFloat);
|
|
2979
2939
|
else if (type === "boolean") b.addField(field, value, FieldBool);
|
|
2980
2940
|
else if (Array.isArray(value)) b.addField(field, [...value], FieldList);
|
|
2981
2941
|
else if (value instanceof Set) b.addField(field, new Set(value), FieldSet);
|