subay 0.0.13 → 0.1.1
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/README.md +14 -18
- package/README.zh.md +677 -682
- package/examples/todo-app.html +5 -20
- package/lib/arr.d.ts +2 -0
- package/lib/arr.d.ts.map +1 -0
- package/lib/arr.js +122 -0
- package/lib/arr.js.map +1 -0
- package/lib/h.d.ts.map +1 -1
- package/lib/h.js +136 -318
- package/lib/h.js.map +1 -1
- package/package.json +1 -1
- package/skills/subay-application/SKILL.md +122 -0
- package/skills/subay-component/SKILL.md +53 -0
- package/skills/subay-expert/SKILL.md +37 -0
- package/skills/subay-state/SKILL.md +162 -0
- package/skills/subay-template/SKILL.md +39 -0
- package/src/arr.ts +428 -0
- package/src/h.ts +144 -365
package/examples/todo-app.html
CHANGED
|
@@ -121,7 +121,7 @@
|
|
|
121
121
|
<script type="importmap">
|
|
122
122
|
{
|
|
123
123
|
"imports": {
|
|
124
|
-
"subay": "../lib/
|
|
124
|
+
"subay": "../lib/dev.js"
|
|
125
125
|
}
|
|
126
126
|
}
|
|
127
127
|
</script>
|
|
@@ -177,20 +177,13 @@
|
|
|
177
177
|
* @returns {Array<Node>}
|
|
178
178
|
*/
|
|
179
179
|
const TodoList = (todos, onToggle, onDelete) => {
|
|
180
|
-
if (todos().length === 0) {
|
|
181
|
-
return html` <div class="empty-state">No todos yet. Add your first todo!</div> `;
|
|
182
|
-
}
|
|
183
|
-
|
|
184
180
|
return html`
|
|
181
|
+
${() =>
|
|
182
|
+
todos().length === 0 ? html` <div class="empty-state">No todos yet. Add your first todo!</div> ` : []}
|
|
185
183
|
<ul class="todo-list">
|
|
186
184
|
${map(
|
|
187
185
|
() => todos(),
|
|
188
|
-
(todo) =>
|
|
189
|
-
html`<${TodoItem}
|
|
190
|
-
todo="${todo}"
|
|
191
|
-
onToggle="${onToggle}"
|
|
192
|
-
onDelete="${onDelete}"
|
|
193
|
-
></${TodoItem}> `,
|
|
186
|
+
(todo) => TodoItem(todo, onToggle, onDelete),
|
|
194
187
|
)}
|
|
195
188
|
</ul>
|
|
196
189
|
`;
|
|
@@ -266,15 +259,7 @@
|
|
|
266
259
|
return html`
|
|
267
260
|
<div>
|
|
268
261
|
<h1>Todo App</h1>
|
|
269
|
-
|
|
270
|
-
newTodoText="${newTodoText}"
|
|
271
|
-
onAddTodo="${handleAddTodo}"
|
|
272
|
-
></${TodoForm}>
|
|
273
|
-
<${TodoList}
|
|
274
|
-
todos="${todos}"
|
|
275
|
-
onToggle="${handleToggleTodo}"
|
|
276
|
-
onDelete="${handleDeleteTodo}"
|
|
277
|
-
></${TodoList}>
|
|
262
|
+
${() => TodoForm(newTodoText, handleAddTodo)} ${() => TodoList(todos, handleToggleTodo, handleDeleteTodo)}
|
|
278
263
|
</div>
|
|
279
264
|
`;
|
|
280
265
|
};
|
package/lib/arr.d.ts
ADDED
package/lib/arr.d.ts.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"arr.d.ts","sourceRoot":"","sources":["../src/arr.ts"],"names":[],"mappings":"AAiQA,eAAO,MAAM,GAAG,GAAI,CAAC,EACjB,OAAO,SAAS,CAAC,EAAE,EACnB,OAAO,SAAS,CAAC,EAAE,EACnB,UAAU,CAAC,IAAI,EAAE,CAAC,KAAK,IAAI,EAC3B,UAAU,CAAC,IAAI,EAAE,CAAC,KAAK,IAAI,EAC3B,UAAU,CAAC,IAAI,EAAE,CAAC,KAAK,IAAI,EAC3B,UAAU,CAAC,IAAI,EAAE,CAAC,KAAK,IAAI,KAC5B,IA0FF,CAAC"}
|
package/lib/arr.js
ADDED
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
export const arr = (aKeys, bKeys, onDelete, onCreate, onRemain, onLocate) => {
|
|
2
|
+
const bLength = bKeys.length;
|
|
3
|
+
const aLength = aKeys.length;
|
|
4
|
+
if (bLength === 0) {
|
|
5
|
+
if (aLength > 0) {
|
|
6
|
+
aKeys.forEach(onDelete);
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
else if (aLength === 0) {
|
|
10
|
+
bKeys.forEach(onCreate);
|
|
11
|
+
}
|
|
12
|
+
else {
|
|
13
|
+
let aEnd = aLength - 1;
|
|
14
|
+
let bEnd = bLength - 1;
|
|
15
|
+
let start = 0;
|
|
16
|
+
while (start <= aEnd && start <= bEnd && aKeys[start] === bKeys[start]) {
|
|
17
|
+
onRemain(aKeys[start++]);
|
|
18
|
+
}
|
|
19
|
+
while (start <= aEnd && start <= bEnd && aKeys[aEnd] === bKeys[bEnd]) {
|
|
20
|
+
aEnd--;
|
|
21
|
+
bEnd--;
|
|
22
|
+
}
|
|
23
|
+
if (start > aEnd) {
|
|
24
|
+
while (start <= bEnd) {
|
|
25
|
+
onCreate(bKeys[start++]);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
else if (start > bEnd) {
|
|
29
|
+
while (start <= aEnd) {
|
|
30
|
+
onDelete(aKeys[start++]);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
else {
|
|
34
|
+
const bLength = bEnd - start + 1;
|
|
35
|
+
const sources = new Int32Array(bLength);
|
|
36
|
+
const keyIndex = new Map();
|
|
37
|
+
for (let i = 0, j = start; i < bLength; i++, j++) {
|
|
38
|
+
sources[i] = -1;
|
|
39
|
+
keyIndex.set(bKeys[j], j);
|
|
40
|
+
}
|
|
41
|
+
let nodePosition = 0;
|
|
42
|
+
for (let i = start; i <= aEnd; i++) {
|
|
43
|
+
const nextPosition = keyIndex.get(aKeys[i]);
|
|
44
|
+
if (nextPosition !== void 0) {
|
|
45
|
+
nodePosition = nodePosition < nextPosition ? nextPosition : 1073741823;
|
|
46
|
+
sources[nextPosition - start] = i;
|
|
47
|
+
}
|
|
48
|
+
else {
|
|
49
|
+
onDelete(aKeys[i]);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
if (nodePosition === 1073741823) {
|
|
53
|
+
markLIS(sources);
|
|
54
|
+
}
|
|
55
|
+
for (let i = 0; i < bLength; i++) {
|
|
56
|
+
const bNode = bKeys[start + i];
|
|
57
|
+
const lisValue = sources[i];
|
|
58
|
+
if (lisValue === -1) {
|
|
59
|
+
onCreate(bNode);
|
|
60
|
+
}
|
|
61
|
+
else if (nodePosition === 1073741823 && lisValue !== -2) {
|
|
62
|
+
onLocate(bNode);
|
|
63
|
+
}
|
|
64
|
+
else {
|
|
65
|
+
onRemain(bNode);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
for (let i = 1; i + aEnd < aLength; i++) {
|
|
70
|
+
onRemain(aKeys[i + aEnd]);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
};
|
|
74
|
+
const markLIS = (a) => {
|
|
75
|
+
const length = a.length;
|
|
76
|
+
const parent = new Int32Array(length);
|
|
77
|
+
const index = new Int32Array(length);
|
|
78
|
+
let indexLength = 0;
|
|
79
|
+
let i = 0;
|
|
80
|
+
let j;
|
|
81
|
+
let k;
|
|
82
|
+
let lo;
|
|
83
|
+
let hi;
|
|
84
|
+
while (a[i] === -1)
|
|
85
|
+
i++;
|
|
86
|
+
index[0] = i++;
|
|
87
|
+
for (; i < length; i++) {
|
|
88
|
+
k = a[i];
|
|
89
|
+
if (k !== -1) {
|
|
90
|
+
j = index[indexLength];
|
|
91
|
+
if (a[j] < k) {
|
|
92
|
+
parent[i] = j;
|
|
93
|
+
index[++indexLength] = i;
|
|
94
|
+
}
|
|
95
|
+
else {
|
|
96
|
+
lo = 0;
|
|
97
|
+
hi = indexLength;
|
|
98
|
+
while (lo < hi) {
|
|
99
|
+
j = (lo + hi) >> 1;
|
|
100
|
+
if (a[index[j]] < k) {
|
|
101
|
+
lo = j + 1;
|
|
102
|
+
}
|
|
103
|
+
else {
|
|
104
|
+
hi = j;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
if (k < a[index[lo]]) {
|
|
108
|
+
if (lo > 0) {
|
|
109
|
+
parent[i] = index[lo - 1];
|
|
110
|
+
}
|
|
111
|
+
index[lo] = i;
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
j = index[indexLength];
|
|
117
|
+
while (indexLength-- >= 0) {
|
|
118
|
+
a[j] = -2;
|
|
119
|
+
j = parent[j];
|
|
120
|
+
}
|
|
121
|
+
};
|
|
122
|
+
//# sourceMappingURL=arr.js.map
|
package/lib/arr.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"arr.js","sourceRoot":"","sources":["../src/arr.ts"],"names":[],"mappings":"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"}
|
package/lib/h.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"h.d.ts","sourceRoot":"","sources":["../src/h.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"h.d.ts","sourceRoot":"","sources":["../src/h.ts"],"names":[],"mappings":"AAmNA,eAAO,MAAM,GAAG,GAAI,CAAC,EAAE,OAAO,MAAM,CAAC,EAAE,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,IAAI,EAAE,KAAG,IAAI,EAkDrE,CAAC;AAiGF,eAAO,MAAM,GAAG,aAVD,oBAAoB,aAAa,GAAG,EAAE,KAAG,IAAI,EAa3D,CAAC;AACF,eAAO,MAAM,IAAI,aAdF,oBAAoB,aAAa,GAAG,EAAE,KAAG,IAAI,EAc+C,CAAC"}
|