tutuca 0.9.44 → 0.9.46
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 +3841 -112
- package/dist/tutuca-dev.js +3932 -141
- package/dist/tutuca-dev.min.js +4 -3
- package/dist/tutuca-extra.js +85 -32
- package/dist/tutuca-extra.min.js +2 -2
- package/dist/tutuca.js +83 -30
- package/dist/tutuca.min.js +2 -2
- package/package.json +3 -2
- package/skill/tutuca/advanced.md +18 -4
- package/skill/tutuca/cli.md +78 -7
- package/skill/tutuca/core.md +86 -15
- package/skill/SKILL.md +0 -46
- package/skill/advanced.md +0 -146
- package/skill/cli.md +0 -117
- package/skill/core.md +0 -766
package/dist/tutuca-extra.js
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
// src/path.js
|
|
2
|
+
var NONE = Symbol("NONE");
|
|
3
|
+
|
|
2
4
|
class Step {
|
|
3
5
|
lookup(_v, dval = null) {
|
|
4
6
|
return dval;
|
|
@@ -6,8 +8,9 @@ class Step {
|
|
|
6
8
|
setValue(root, _v) {
|
|
7
9
|
return root;
|
|
8
10
|
}
|
|
9
|
-
|
|
10
|
-
|
|
11
|
+
enterFrame(stack, _prev, next) {
|
|
12
|
+
return stack.enter(next, {}, true);
|
|
13
|
+
}
|
|
11
14
|
}
|
|
12
15
|
|
|
13
16
|
class BindStep extends Step {
|
|
@@ -21,16 +24,15 @@ class BindStep extends Step {
|
|
|
21
24
|
setValue(_root, v) {
|
|
22
25
|
return v;
|
|
23
26
|
}
|
|
27
|
+
enterFrame(stack, _prev, next) {
|
|
28
|
+
return stack.enter(next, { ...this.binds }, false);
|
|
29
|
+
}
|
|
24
30
|
withIndex(i) {
|
|
25
31
|
return new BindStep({ ...this.binds, key: i });
|
|
26
32
|
}
|
|
27
33
|
withKey(key) {
|
|
28
34
|
return new BindStep({ ...this.binds, key });
|
|
29
35
|
}
|
|
30
|
-
updateBinds(_v, o) {
|
|
31
|
-
Object.assign(o, this.binds);
|
|
32
|
-
}
|
|
33
|
-
isFrame = false;
|
|
34
36
|
}
|
|
35
37
|
|
|
36
38
|
class FieldStep extends Step {
|
|
@@ -65,8 +67,8 @@ class FieldSeqStep extends Step {
|
|
|
65
67
|
setValue(root, v) {
|
|
66
68
|
return root.set(this.field, root.get(this.field).set(this.key, v));
|
|
67
69
|
}
|
|
68
|
-
|
|
69
|
-
|
|
70
|
+
enterFrame(stack, _prev, next) {
|
|
71
|
+
return stack.enter(next, { key: this.key }, true);
|
|
70
72
|
}
|
|
71
73
|
}
|
|
72
74
|
|
|
@@ -75,7 +77,6 @@ class SeqKeyStep extends FieldSeqStep {
|
|
|
75
77
|
|
|
76
78
|
class SeqIndexStep extends FieldSeqStep {
|
|
77
79
|
}
|
|
78
|
-
var NONE = Symbol("NONE");
|
|
79
80
|
|
|
80
81
|
class SeqAccessStep extends Step {
|
|
81
82
|
constructor(seqField, keyField) {
|
|
@@ -93,8 +94,42 @@ class SeqAccessStep extends Step {
|
|
|
93
94
|
const key = root?.get(this.keyField, NONE);
|
|
94
95
|
return seq === NONE || key === NONE ? root : root.set(this.seqField, seq.set(key, v));
|
|
95
96
|
}
|
|
96
|
-
|
|
97
|
-
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
class EachBindStep extends Step {
|
|
100
|
+
constructor(seqVal, key) {
|
|
101
|
+
super();
|
|
102
|
+
this.seqVal = seqVal;
|
|
103
|
+
this.key = key;
|
|
104
|
+
}
|
|
105
|
+
lookup(v, _dval) {
|
|
106
|
+
return v;
|
|
107
|
+
}
|
|
108
|
+
setValue(_root, v) {
|
|
109
|
+
return v;
|
|
110
|
+
}
|
|
111
|
+
enterFrame(stack, _prev, next) {
|
|
112
|
+
const item = this.seqVal.eval(stack)?.get(this.key, null);
|
|
113
|
+
return stack.enter(next, { key: this.key, value: item }, false);
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
class EachRenderItStep extends Step {
|
|
118
|
+
constructor(seqField, key) {
|
|
119
|
+
super();
|
|
120
|
+
this.seqField = seqField;
|
|
121
|
+
this.key = key;
|
|
122
|
+
}
|
|
123
|
+
lookup(v, dval = null) {
|
|
124
|
+
const seq = v?.get(this.seqField, null);
|
|
125
|
+
return seq?.get ? seq.get(this.key, dval) : dval;
|
|
126
|
+
}
|
|
127
|
+
setValue(root, v) {
|
|
128
|
+
const seq = root?.get(this.seqField, null);
|
|
129
|
+
return seq ? root.set(this.seqField, seq.set(this.key, v)) : root;
|
|
130
|
+
}
|
|
131
|
+
enterFrame(stack, _prev, next) {
|
|
132
|
+
return stack.enter(next, { key: this.key, value: next }, false).enter(next, {}, true);
|
|
98
133
|
}
|
|
99
134
|
}
|
|
100
135
|
|
|
@@ -134,16 +169,15 @@ class Path {
|
|
|
134
169
|
return newVal;
|
|
135
170
|
}
|
|
136
171
|
buildStack(stack) {
|
|
137
|
-
|
|
138
|
-
let curVal = root;
|
|
172
|
+
let prev = stack.it;
|
|
139
173
|
for (const step of this.steps) {
|
|
140
|
-
|
|
141
|
-
if (
|
|
142
|
-
console.warn(
|
|
174
|
+
const next = step.lookup(prev, NONE);
|
|
175
|
+
if (next === NONE) {
|
|
176
|
+
console.warn("bad PathItem", { root: stack.it, step, path: this });
|
|
143
177
|
return null;
|
|
144
178
|
}
|
|
145
|
-
step.
|
|
146
|
-
|
|
179
|
+
stack = step.enterFrame(stack, prev, next);
|
|
180
|
+
prev = next;
|
|
147
181
|
}
|
|
148
182
|
return stack;
|
|
149
183
|
}
|
|
@@ -211,12 +245,27 @@ function findHandlers(comp, eventIds, vid, eventName) {
|
|
|
211
245
|
}
|
|
212
246
|
function resolvePathStep(comp, nodeIds, vid) {
|
|
213
247
|
for (let i = 0;i < nodeIds.length; i++) {
|
|
214
|
-
const
|
|
215
|
-
const
|
|
216
|
-
const
|
|
217
|
-
|
|
248
|
+
const meta = nodeIds[i];
|
|
249
|
+
const node = comp.getNodeForId(+meta.nid, vid);
|
|
250
|
+
const key = meta.si !== undefined ? +meta.si : meta.sk;
|
|
251
|
+
if (node.pathInNext) {
|
|
252
|
+
const next = nodeIds[i + 1];
|
|
253
|
+
if (!next)
|
|
254
|
+
continue;
|
|
255
|
+
const nextNode = comp.getNodeForId(+next.nid, vid);
|
|
256
|
+
const nKey = next.si !== undefined ? +next.si : next.sk;
|
|
257
|
+
if (nextNode.toPathItemRenderIt && nKey !== undefined)
|
|
258
|
+
return nextNode.toPathItemRenderIt(nKey);
|
|
259
|
+
const pi2 = nextNode.val.toPathItem();
|
|
260
|
+
if (pi2 !== null)
|
|
261
|
+
return next.si !== undefined ? pi2.withIndex(nKey) : next.sk ? pi2.withKey(nKey) : pi2;
|
|
262
|
+
continue;
|
|
263
|
+
}
|
|
264
|
+
if (key !== undefined && node.toPathItemEachBind)
|
|
265
|
+
return node.toPathItemEachBind(key);
|
|
266
|
+
const pi = node.toPathItem();
|
|
218
267
|
if (pi !== null)
|
|
219
|
-
return si !== undefined ? pi.withIndex(+si) : sk ? pi.withKey(sk) : pi;
|
|
268
|
+
return meta.si !== undefined ? pi.withIndex(+meta.si) : meta.sk ? pi.withKey(meta.sk) : pi;
|
|
220
269
|
}
|
|
221
270
|
return null;
|
|
222
271
|
}
|
|
@@ -1352,6 +1401,12 @@ class EachNode extends WrapperNode {
|
|
|
1352
1401
|
toPathItem() {
|
|
1353
1402
|
return new BindStep({});
|
|
1354
1403
|
}
|
|
1404
|
+
toPathItemRenderIt(key) {
|
|
1405
|
+
return new EachRenderItStep(this.val.name, key);
|
|
1406
|
+
}
|
|
1407
|
+
toPathItemEachBind(key) {
|
|
1408
|
+
return new EachBindStep(this.val, key);
|
|
1409
|
+
}
|
|
1355
1410
|
static register = true;
|
|
1356
1411
|
}
|
|
1357
1412
|
|
|
@@ -1837,11 +1892,6 @@ class Stack {
|
|
|
1837
1892
|
_enrichOnEnter() {
|
|
1838
1893
|
return this.withDynamicBinds(this.comps.getOnEnterFor(this.it).call(this.it));
|
|
1839
1894
|
}
|
|
1840
|
-
upToFrameBinds() {
|
|
1841
|
-
const { comps, binds, dynBinds, views, viewsId, ctx } = this;
|
|
1842
|
-
const [head, tail] = binds;
|
|
1843
|
-
return head.isFrame ? this : new Stack(comps, tail[0].it, tail, dynBinds, views, viewsId, ctx);
|
|
1844
|
-
}
|
|
1845
1895
|
static root(comps, it, ctx) {
|
|
1846
1896
|
const binds = [new BindFrame(it, { it }, true), null];
|
|
1847
1897
|
const dynBinds = [new ObjectFrame({}), null];
|
|
@@ -2026,8 +2076,7 @@ class Transaction {
|
|
|
2026
2076
|
return Stack.root(comps, root);
|
|
2027
2077
|
}
|
|
2028
2078
|
buildStack(root, comps) {
|
|
2029
|
-
|
|
2030
|
-
return stack ? stack.upToFrameBinds() : null;
|
|
2079
|
+
return this.path.buildStack(this.buildRootStack(root, comps));
|
|
2031
2080
|
}
|
|
2032
2081
|
callHandler(root, instance, comps) {
|
|
2033
2082
|
const [handler, args] = this.getHandlerAndArgs(root, instance, comps);
|
|
@@ -7975,6 +8024,9 @@ var macro = (defaults, rawView) => new Macro(defaults, rawView);
|
|
|
7975
8024
|
function check(_app) {
|
|
7976
8025
|
return { error: 0, warn: 0, hint: 0, dummyCheck: true };
|
|
7977
8026
|
}
|
|
8027
|
+
async function test(_opts) {
|
|
8028
|
+
return null;
|
|
8029
|
+
}
|
|
7978
8030
|
function tutuca(nodeOrSelector) {
|
|
7979
8031
|
const rootNode = typeof nodeOrSelector === "string" ? document.querySelector(nodeOrSelector) : nodeOrSelector;
|
|
7980
8032
|
const comps = new Components;
|
|
@@ -7990,10 +8042,10 @@ async function compileClassesToStyle(app, compileClasses, styleId = "margaui-css
|
|
|
7990
8042
|
injectCss(styleId, css2);
|
|
7991
8043
|
return t2 - t1;
|
|
7992
8044
|
}
|
|
7993
|
-
async function compileClassesToStyleText(app, compileClasses,
|
|
8045
|
+
async function compileClassesToStyleText(app, compileClasses, Ctx = ParseCtxClassSetCollector) {
|
|
7994
8046
|
app.ParseContext = Ctx;
|
|
7995
8047
|
app.compile();
|
|
7996
|
-
const classes = new Set
|
|
8048
|
+
const classes = new Set;
|
|
7997
8049
|
for (const Comp of app.comps.byId.values()) {
|
|
7998
8050
|
for (const key in Comp.views) {
|
|
7999
8051
|
const view = Comp.views[key];
|
|
@@ -8008,6 +8060,7 @@ export {
|
|
|
8008
8060
|
updateIn$1 as updateIn,
|
|
8009
8061
|
update$1 as update,
|
|
8010
8062
|
tutuca,
|
|
8063
|
+
test,
|
|
8011
8064
|
setIn$1 as setIn,
|
|
8012
8065
|
set,
|
|
8013
8066
|
removeIn,
|