valyrian.js 7.2.11 → 7.2.12
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/dataset/index.d.ts +2 -2
- package/dist/dataset/index.d.ts.map +1 -1
- package/dist/dataset/index.js +21 -21
- package/dist/dataset/index.js.map +2 -2
- package/dist/dataset/index.mjs +22 -22
- package/dist/dataset/index.mjs.map +2 -2
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/index.js +17 -32
- package/dist/hooks/index.js.map +3 -3
- package/dist/hooks/index.mjs +17 -32
- package/dist/hooks/index.mjs.map +3 -3
- package/dist/index.d.ts +49 -53
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +378 -326
- package/dist/index.js.map +3 -3
- package/dist/index.min.js +1 -1
- package/dist/index.min.js.map +1 -1
- package/dist/index.mjs +378 -326
- package/dist/index.mjs.map +3 -3
- package/dist/node/index.js +101 -78
- package/dist/node/index.js.map +2 -2
- package/dist/node/index.mjs +101 -78
- package/dist/node/index.mjs.map +2 -2
- package/dist/node/utils/tree-adapter.d.ts +5 -0
- package/dist/node/utils/tree-adapter.d.ts.map +1 -1
- package/dist/proxy-signal/index.js +10 -10
- package/dist/proxy-signal/index.js.map +2 -2
- package/dist/proxy-signal/index.mjs +10 -10
- package/dist/proxy-signal/index.mjs.map +2 -2
- package/dist/request/index.js +16 -16
- package/dist/request/index.js.map +2 -2
- package/dist/request/index.mjs +16 -16
- package/dist/request/index.mjs.map +2 -2
- package/dist/router/index.d.ts.map +1 -1
- package/dist/router/index.js +21 -20
- package/dist/router/index.js.map +2 -2
- package/dist/router/index.mjs +21 -20
- package/dist/router/index.mjs.map +2 -2
- package/dist/signal/index.d.ts +7 -18
- package/dist/signal/index.d.ts.map +1 -1
- package/dist/signal/index.js +29 -48
- package/dist/signal/index.js.map +3 -3
- package/dist/signal/index.mjs +31 -50
- package/dist/signal/index.mjs.map +3 -3
- package/dist/store/index.js +2 -2
- package/dist/store/index.js.map +2 -2
- package/dist/store/index.mjs +2 -2
- package/dist/store/index.mjs.map +2 -2
- package/lib/dataset/index.ts +25 -25
- package/lib/hooks/index.ts +25 -54
- package/lib/index.ts +465 -715
- package/lib/node/index.ts +2 -2
- package/lib/node/utils/icons.ts +5 -5
- package/lib/node/utils/inline.ts +17 -17
- package/lib/node/utils/sw.ts +3 -3
- package/lib/node/utils/tree-adapter.ts +81 -52
- package/lib/proxy-signal/index.ts +10 -10
- package/lib/request/index.ts +16 -16
- package/lib/router/index.ts +21 -20
- package/lib/signal/index.ts +56 -131
- package/lib/store/index.ts +2 -2
- package/package.json +10 -3
- package/lib/index.d.ts +0 -0
- package/lib/interfaces.ts.bak +0 -141
package/dist/dataset/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { VnodeWithDom } from "valyrian.js";
|
|
2
2
|
interface DataSetInterface<T> {
|
|
3
3
|
data: T[];
|
|
4
4
|
reset: (data: T[]) => void;
|
|
@@ -7,7 +7,7 @@ interface DataSetInterface<T> {
|
|
|
7
7
|
delete: (index: number) => void;
|
|
8
8
|
}
|
|
9
9
|
interface DataSetHandler<T> {
|
|
10
|
-
(data: T, index: number):
|
|
10
|
+
(data: T, index: number): VnodeWithDom;
|
|
11
11
|
}
|
|
12
12
|
export declare class DataSet<T> implements DataSetInterface<T> {
|
|
13
13
|
#private;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../lib/dataset/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../lib/dataset/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAqD,MAAM,aAAa,CAAC;AAE9F,UAAU,gBAAgB,CAAC,CAAC;IAC1B,IAAI,EAAE,CAAC,EAAE,CAAC;IAEV,KAAK,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,IAAI,CAAC;IAE3B,GAAG,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,KAAK,IAAI,CAAC;IAE5B,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,KAAK,IAAI,CAAC;IAEzC,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACjC;AACD,UAAU,cAAc,CAAC,CAAC;IAExB,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,GAAG,YAAY,CAAC;CACxC;AAoBD,qBAAa,OAAO,CAAC,CAAC,CAAE,YAAW,gBAAgB,CAAC,CAAC,CAAC;;IAQpD,IAAI,IAAI,IAQO,CAAC,EAAE,CAFjB;IAED,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,EAEjB;gBAqBW,IAAI,GAAE,CAAC,EAAO,EAAE,YAAY,UAAO;IAK/C,kBAAkB,CAAC,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,cAAc,CAAC,CAAC,CAAC;IAMlE,KAAK,CAAC,IAAI,EAAE,CAAC,EAAE;IA2Cf,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE;IA4BhB,MAAM,CAAC,KAAK,EAAE,MAAM;IAcpB,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;CAgBvC"}
|
package/dist/dataset/index.js
CHANGED
|
@@ -31,7 +31,7 @@ function deepFreeze(obj) {
|
|
|
31
31
|
deepFreeze(obj[i]);
|
|
32
32
|
}
|
|
33
33
|
} else {
|
|
34
|
-
|
|
34
|
+
const props = Reflect.ownKeys(obj);
|
|
35
35
|
for (let i = 0, l = props.length; i < l; i++) {
|
|
36
36
|
deepFreeze(obj[props[i]]);
|
|
37
37
|
}
|
|
@@ -88,29 +88,29 @@ var DataSet = class {
|
|
|
88
88
|
if (this.#vnode === null || this.#handler === null) {
|
|
89
89
|
return;
|
|
90
90
|
}
|
|
91
|
-
|
|
92
|
-
|
|
91
|
+
const vnode = this.#vnode;
|
|
92
|
+
const handler = this.#handler;
|
|
93
93
|
if (data.length === 0) {
|
|
94
94
|
vnode.children = [];
|
|
95
95
|
vnode.dom.textContent = "";
|
|
96
96
|
return;
|
|
97
97
|
}
|
|
98
|
-
|
|
98
|
+
const childrenLength = vnode.children.length;
|
|
99
99
|
for (let i = 0, l = data.length; i < l; i++) {
|
|
100
|
-
|
|
100
|
+
const child = handler(this.data[i], i);
|
|
101
101
|
if (i < childrenLength) {
|
|
102
|
-
|
|
102
|
+
const oldChild = vnode.children[i];
|
|
103
103
|
child.isSVG = oldChild.isSVG;
|
|
104
104
|
child.dom = oldChild.dom;
|
|
105
|
-
(0, import_valyrian.updateAttributes)(child,
|
|
105
|
+
(0, import_valyrian.updateAttributes)(child, null);
|
|
106
106
|
vnode.children[i] = child;
|
|
107
|
-
(0, import_valyrian.patch)(child
|
|
107
|
+
(0, import_valyrian.patch)(child);
|
|
108
108
|
continue;
|
|
109
109
|
}
|
|
110
110
|
child.isSVG = vnode.isSVG || child.tag === "svg";
|
|
111
|
-
child.dom = (0, import_valyrian.
|
|
111
|
+
child.dom = (0, import_valyrian.createElement)(child.tag, child.isSVG);
|
|
112
112
|
vnode.dom.appendChild(child.dom);
|
|
113
|
-
(0, import_valyrian.updateAttributes)(child);
|
|
113
|
+
(0, import_valyrian.updateAttributes)(child, null);
|
|
114
114
|
vnode.children.push(child);
|
|
115
115
|
(0, import_valyrian.patch)(child);
|
|
116
116
|
}
|
|
@@ -121,7 +121,7 @@ var DataSet = class {
|
|
|
121
121
|
}
|
|
122
122
|
add(...data) {
|
|
123
123
|
if (this.#data) {
|
|
124
|
-
|
|
124
|
+
const oldLength = this.#data.length;
|
|
125
125
|
if (this.#isFrozen) {
|
|
126
126
|
this.#setData([...this.#data, ...data]);
|
|
127
127
|
} else {
|
|
@@ -130,14 +130,14 @@ var DataSet = class {
|
|
|
130
130
|
if (this.#vnode === null || this.#handler === null) {
|
|
131
131
|
return;
|
|
132
132
|
}
|
|
133
|
-
|
|
134
|
-
|
|
133
|
+
const vnode = this.#vnode;
|
|
134
|
+
const handler = this.#handler;
|
|
135
135
|
for (let i = 0, ii = oldLength, l = data.length; i < l; i++, ii++) {
|
|
136
|
-
|
|
136
|
+
const child = handler(this.#data[i], ii);
|
|
137
137
|
child.isSVG = vnode.isSVG || child.tag === "svg";
|
|
138
|
-
child.dom = (0, import_valyrian.
|
|
138
|
+
child.dom = (0, import_valyrian.createElement)(child.tag, child.isSVG);
|
|
139
139
|
vnode.dom.appendChild(child.dom);
|
|
140
|
-
(0, import_valyrian.updateAttributes)(child);
|
|
140
|
+
(0, import_valyrian.updateAttributes)(child, null);
|
|
141
141
|
vnode.children.push(child);
|
|
142
142
|
(0, import_valyrian.patch)(child);
|
|
143
143
|
}
|
|
@@ -145,7 +145,7 @@ var DataSet = class {
|
|
|
145
145
|
}
|
|
146
146
|
delete(index) {
|
|
147
147
|
if (this.#data && this.#vnode) {
|
|
148
|
-
|
|
148
|
+
const child = this.#vnode.children[index];
|
|
149
149
|
if (this.#isFrozen) {
|
|
150
150
|
this.#setData(this.data.filter((_, i) => i !== index));
|
|
151
151
|
} else {
|
|
@@ -157,18 +157,18 @@ var DataSet = class {
|
|
|
157
157
|
}
|
|
158
158
|
update(index, item) {
|
|
159
159
|
if (this.#data && this.#vnode && this.#handler) {
|
|
160
|
-
|
|
160
|
+
const child = this.#vnode.children[index];
|
|
161
161
|
if (this.#isFrozen) {
|
|
162
162
|
this.#setData(this.#data.map((d, i) => i === index ? { ...d, ...item } : d));
|
|
163
163
|
} else {
|
|
164
164
|
this.#data[index] = { ...this.#data[index], ...item };
|
|
165
165
|
}
|
|
166
|
-
|
|
166
|
+
const newChild = this.#handler(this.#data[index], index);
|
|
167
167
|
newChild.isSVG = this.#vnode.isSVG || newChild.tag === "svg";
|
|
168
168
|
newChild.dom = child.dom;
|
|
169
169
|
this.#vnode.children[index] = newChild;
|
|
170
|
-
(0, import_valyrian.updateAttributes)(newChild,
|
|
171
|
-
(0, import_valyrian.patch)(newChild
|
|
170
|
+
(0, import_valyrian.updateAttributes)(newChild, null);
|
|
171
|
+
(0, import_valyrian.patch)(newChild);
|
|
172
172
|
}
|
|
173
173
|
}
|
|
174
174
|
};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../lib/dataset/index.ts"],
|
|
4
|
-
"sourcesContent": ["import {
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,
|
|
4
|
+
"sourcesContent": ["import { VnodeWithDom, createElement, directive, patch, updateAttributes } from \"valyrian.js\";\n\ninterface DataSetInterface<T> {\n data: T[];\n // eslint-disable-next-line no-unused-vars\n reset: (data: T[]) => void;\n // eslint-disable-next-line no-unused-vars\n add: (...data: T[]) => void;\n // eslint-disable-next-line no-unused-vars\n update: (index: number, data: T) => void;\n // eslint-disable-next-line no-unused-vars\n delete: (index: number) => void;\n}\ninterface DataSetHandler<T> {\n // eslint-disable-next-line no-unused-vars\n (data: T, index: number): VnodeWithDom;\n}\n\nfunction deepFreeze(obj: any) {\n if (typeof obj === \"object\" && obj !== null && !Object.isFrozen(obj)) {\n if (Array.isArray(obj)) {\n for (let i = 0, l = obj.length; i < l; i++) {\n deepFreeze(obj[i]);\n }\n } else {\n const props = Reflect.ownKeys(obj);\n for (let i = 0, l = props.length; i < l; i++) {\n deepFreeze(obj[props[i]]);\n }\n }\n Object.freeze(obj);\n }\n\n return obj;\n}\n\nexport class DataSet<T> implements DataSetInterface<T> {\n #vnode: VnodeWithDom | null = null;\n // eslint-disable-next-line no-unused-vars\n #handler: DataSetHandler<T> | null = null;\n #data: T[] = [];\n #isFrozen = false;\n #dataProxy: T[] | null = null;\n\n get data() {\n if (this.#dataProxy === null) {\n throw new Error(\"DataSet is not initialized\");\n }\n\n return this.#dataProxy;\n }\n\n set data(data: T[]) {\n throw new Error(\"You need to use the reset method to set the data\");\n }\n\n #setData(data: T[]) {\n if (this.#isFrozen) {\n this.#data = deepFreeze([...data]);\n } else {\n this.#data = data;\n }\n this.#dataProxy = new Proxy(this.#data as T[], {\n set: () => {\n throw new Error(\"You need to use the add, update or delete methods to change the data\");\n },\n get(target: any, prop: string) {\n return target[prop];\n },\n deleteProperty: () => {\n throw new Error(\"You need to use the add, update or delete methods to change the data\");\n }\n }) as T[];\n }\n\n constructor(data: T[] = [], shouldFreeze = true) {\n this.#isFrozen = shouldFreeze;\n this.#setData(data);\n }\n\n setVnodeAndHandler(vnode: VnodeWithDom, handler: DataSetHandler<T>) {\n this.#vnode = vnode;\n this.#handler = handler;\n this.reset(this.#data);\n }\n\n reset(data: T[]) {\n this.#setData(data);\n if (this.#vnode === null || this.#handler === null) {\n return;\n }\n\n const vnode = this.#vnode;\n const handler = this.#handler;\n\n if (data.length === 0) {\n vnode.children = [];\n vnode.dom.textContent = \"\";\n return;\n }\n\n const childrenLength = vnode.children.length;\n for (let i = 0, l = data.length; i < l; i++) {\n const child = handler(this.data[i], i);\n\n if (i < childrenLength) {\n const oldChild = vnode.children[i];\n child.isSVG = oldChild.isSVG;\n child.dom = oldChild.dom;\n updateAttributes(child as VnodeWithDom, null);\n vnode.children[i] = child;\n patch(child as VnodeWithDom);\n continue;\n }\n\n child.isSVG = vnode.isSVG || child.tag === \"svg\";\n child.dom = createElement(child.tag as string, child.isSVG);\n vnode.dom.appendChild(child.dom);\n updateAttributes(child as VnodeWithDom, null);\n vnode.children.push(child);\n patch(child as VnodeWithDom);\n }\n\n for (let i = data.length; i < childrenLength; i++) {\n vnode.dom.removeChild(vnode.children[i].dom);\n }\n vnode.children.length = data.length;\n }\n\n add(...data: T[]) {\n if (this.#data) {\n const oldLength = this.#data.length;\n if (this.#isFrozen) {\n this.#setData([...this.#data, ...data]);\n } else {\n this.#data.push(...data);\n }\n\n if (this.#vnode === null || this.#handler === null) {\n return;\n }\n\n const vnode = this.#vnode;\n const handler = this.#handler;\n\n for (let i = 0, ii = oldLength, l = data.length; i < l; i++, ii++) {\n const child = handler(this.#data[i], ii);\n child.isSVG = vnode.isSVG || child.tag === \"svg\";\n child.dom = createElement(child.tag as string, child.isSVG);\n vnode.dom.appendChild(child.dom);\n updateAttributes(child as VnodeWithDom, null);\n vnode.children.push(child);\n patch(child as VnodeWithDom);\n }\n }\n }\n\n delete(index: number) {\n if (this.#data && this.#vnode) {\n const child = this.#vnode.children[index];\n if (this.#isFrozen) {\n this.#setData(this.data.filter((_, i) => i !== index));\n } else {\n this.#data.splice(index, 1);\n }\n\n this.#vnode.dom.removeChild(child.dom);\n this.#vnode.children.splice(index, 1);\n }\n }\n\n update(index: number, item: Partial<T>) {\n if (this.#data && this.#vnode && this.#handler) {\n const child = this.#vnode.children[index];\n if (this.#isFrozen) {\n this.#setData(this.#data.map((d, i) => (i === index ? { ...d, ...item } : d)));\n } else {\n this.#data[index] = { ...this.#data[index], ...item };\n }\n const newChild = this.#handler(this.#data[index], index);\n newChild.isSVG = this.#vnode.isSVG || newChild.tag === \"svg\";\n newChild.dom = child.dom;\n this.#vnode.children[index] = newChild;\n updateAttributes(newChild as VnodeWithDom, null);\n patch(newChild as VnodeWithDom);\n }\n }\n}\n\ndirective(\"with-dataset\", (dataSet: DataSet<any>, vnode: VnodeWithDom) => {\n dataSet.setVnodeAndHandler(vnode, vnode.children[0]);\n return false;\n});\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
package/dist/dataset/index.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// lib/dataset/index.ts
|
|
2
|
-
import {
|
|
2
|
+
import { createElement, directive, patch, updateAttributes } from "valyrian.js";
|
|
3
3
|
function deepFreeze(obj) {
|
|
4
4
|
if (typeof obj === "object" && obj !== null && !Object.isFrozen(obj)) {
|
|
5
5
|
if (Array.isArray(obj)) {
|
|
@@ -7,7 +7,7 @@ function deepFreeze(obj) {
|
|
|
7
7
|
deepFreeze(obj[i]);
|
|
8
8
|
}
|
|
9
9
|
} else {
|
|
10
|
-
|
|
10
|
+
const props = Reflect.ownKeys(obj);
|
|
11
11
|
for (let i = 0, l = props.length; i < l; i++) {
|
|
12
12
|
deepFreeze(obj[props[i]]);
|
|
13
13
|
}
|
|
@@ -64,29 +64,29 @@ var DataSet = class {
|
|
|
64
64
|
if (this.#vnode === null || this.#handler === null) {
|
|
65
65
|
return;
|
|
66
66
|
}
|
|
67
|
-
|
|
68
|
-
|
|
67
|
+
const vnode = this.#vnode;
|
|
68
|
+
const handler = this.#handler;
|
|
69
69
|
if (data.length === 0) {
|
|
70
70
|
vnode.children = [];
|
|
71
71
|
vnode.dom.textContent = "";
|
|
72
72
|
return;
|
|
73
73
|
}
|
|
74
|
-
|
|
74
|
+
const childrenLength = vnode.children.length;
|
|
75
75
|
for (let i = 0, l = data.length; i < l; i++) {
|
|
76
|
-
|
|
76
|
+
const child = handler(this.data[i], i);
|
|
77
77
|
if (i < childrenLength) {
|
|
78
|
-
|
|
78
|
+
const oldChild = vnode.children[i];
|
|
79
79
|
child.isSVG = oldChild.isSVG;
|
|
80
80
|
child.dom = oldChild.dom;
|
|
81
|
-
updateAttributes(child,
|
|
81
|
+
updateAttributes(child, null);
|
|
82
82
|
vnode.children[i] = child;
|
|
83
|
-
patch(child
|
|
83
|
+
patch(child);
|
|
84
84
|
continue;
|
|
85
85
|
}
|
|
86
86
|
child.isSVG = vnode.isSVG || child.tag === "svg";
|
|
87
|
-
child.dom =
|
|
87
|
+
child.dom = createElement(child.tag, child.isSVG);
|
|
88
88
|
vnode.dom.appendChild(child.dom);
|
|
89
|
-
updateAttributes(child);
|
|
89
|
+
updateAttributes(child, null);
|
|
90
90
|
vnode.children.push(child);
|
|
91
91
|
patch(child);
|
|
92
92
|
}
|
|
@@ -97,7 +97,7 @@ var DataSet = class {
|
|
|
97
97
|
}
|
|
98
98
|
add(...data) {
|
|
99
99
|
if (this.#data) {
|
|
100
|
-
|
|
100
|
+
const oldLength = this.#data.length;
|
|
101
101
|
if (this.#isFrozen) {
|
|
102
102
|
this.#setData([...this.#data, ...data]);
|
|
103
103
|
} else {
|
|
@@ -106,14 +106,14 @@ var DataSet = class {
|
|
|
106
106
|
if (this.#vnode === null || this.#handler === null) {
|
|
107
107
|
return;
|
|
108
108
|
}
|
|
109
|
-
|
|
110
|
-
|
|
109
|
+
const vnode = this.#vnode;
|
|
110
|
+
const handler = this.#handler;
|
|
111
111
|
for (let i = 0, ii = oldLength, l = data.length; i < l; i++, ii++) {
|
|
112
|
-
|
|
112
|
+
const child = handler(this.#data[i], ii);
|
|
113
113
|
child.isSVG = vnode.isSVG || child.tag === "svg";
|
|
114
|
-
child.dom =
|
|
114
|
+
child.dom = createElement(child.tag, child.isSVG);
|
|
115
115
|
vnode.dom.appendChild(child.dom);
|
|
116
|
-
updateAttributes(child);
|
|
116
|
+
updateAttributes(child, null);
|
|
117
117
|
vnode.children.push(child);
|
|
118
118
|
patch(child);
|
|
119
119
|
}
|
|
@@ -121,7 +121,7 @@ var DataSet = class {
|
|
|
121
121
|
}
|
|
122
122
|
delete(index) {
|
|
123
123
|
if (this.#data && this.#vnode) {
|
|
124
|
-
|
|
124
|
+
const child = this.#vnode.children[index];
|
|
125
125
|
if (this.#isFrozen) {
|
|
126
126
|
this.#setData(this.data.filter((_, i) => i !== index));
|
|
127
127
|
} else {
|
|
@@ -133,18 +133,18 @@ var DataSet = class {
|
|
|
133
133
|
}
|
|
134
134
|
update(index, item) {
|
|
135
135
|
if (this.#data && this.#vnode && this.#handler) {
|
|
136
|
-
|
|
136
|
+
const child = this.#vnode.children[index];
|
|
137
137
|
if (this.#isFrozen) {
|
|
138
138
|
this.#setData(this.#data.map((d, i) => i === index ? { ...d, ...item } : d));
|
|
139
139
|
} else {
|
|
140
140
|
this.#data[index] = { ...this.#data[index], ...item };
|
|
141
141
|
}
|
|
142
|
-
|
|
142
|
+
const newChild = this.#handler(this.#data[index], index);
|
|
143
143
|
newChild.isSVG = this.#vnode.isSVG || newChild.tag === "svg";
|
|
144
144
|
newChild.dom = child.dom;
|
|
145
145
|
this.#vnode.children[index] = newChild;
|
|
146
|
-
updateAttributes(newChild,
|
|
147
|
-
patch(newChild
|
|
146
|
+
updateAttributes(newChild, null);
|
|
147
|
+
patch(newChild);
|
|
148
148
|
}
|
|
149
149
|
}
|
|
150
150
|
};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../lib/dataset/index.ts"],
|
|
4
|
-
"sourcesContent": ["import {
|
|
5
|
-
"mappings": ";AAAA,
|
|
4
|
+
"sourcesContent": ["import { VnodeWithDom, createElement, directive, patch, updateAttributes } from \"valyrian.js\";\n\ninterface DataSetInterface<T> {\n data: T[];\n // eslint-disable-next-line no-unused-vars\n reset: (data: T[]) => void;\n // eslint-disable-next-line no-unused-vars\n add: (...data: T[]) => void;\n // eslint-disable-next-line no-unused-vars\n update: (index: number, data: T) => void;\n // eslint-disable-next-line no-unused-vars\n delete: (index: number) => void;\n}\ninterface DataSetHandler<T> {\n // eslint-disable-next-line no-unused-vars\n (data: T, index: number): VnodeWithDom;\n}\n\nfunction deepFreeze(obj: any) {\n if (typeof obj === \"object\" && obj !== null && !Object.isFrozen(obj)) {\n if (Array.isArray(obj)) {\n for (let i = 0, l = obj.length; i < l; i++) {\n deepFreeze(obj[i]);\n }\n } else {\n const props = Reflect.ownKeys(obj);\n for (let i = 0, l = props.length; i < l; i++) {\n deepFreeze(obj[props[i]]);\n }\n }\n Object.freeze(obj);\n }\n\n return obj;\n}\n\nexport class DataSet<T> implements DataSetInterface<T> {\n #vnode: VnodeWithDom | null = null;\n // eslint-disable-next-line no-unused-vars\n #handler: DataSetHandler<T> | null = null;\n #data: T[] = [];\n #isFrozen = false;\n #dataProxy: T[] | null = null;\n\n get data() {\n if (this.#dataProxy === null) {\n throw new Error(\"DataSet is not initialized\");\n }\n\n return this.#dataProxy;\n }\n\n set data(data: T[]) {\n throw new Error(\"You need to use the reset method to set the data\");\n }\n\n #setData(data: T[]) {\n if (this.#isFrozen) {\n this.#data = deepFreeze([...data]);\n } else {\n this.#data = data;\n }\n this.#dataProxy = new Proxy(this.#data as T[], {\n set: () => {\n throw new Error(\"You need to use the add, update or delete methods to change the data\");\n },\n get(target: any, prop: string) {\n return target[prop];\n },\n deleteProperty: () => {\n throw new Error(\"You need to use the add, update or delete methods to change the data\");\n }\n }) as T[];\n }\n\n constructor(data: T[] = [], shouldFreeze = true) {\n this.#isFrozen = shouldFreeze;\n this.#setData(data);\n }\n\n setVnodeAndHandler(vnode: VnodeWithDom, handler: DataSetHandler<T>) {\n this.#vnode = vnode;\n this.#handler = handler;\n this.reset(this.#data);\n }\n\n reset(data: T[]) {\n this.#setData(data);\n if (this.#vnode === null || this.#handler === null) {\n return;\n }\n\n const vnode = this.#vnode;\n const handler = this.#handler;\n\n if (data.length === 0) {\n vnode.children = [];\n vnode.dom.textContent = \"\";\n return;\n }\n\n const childrenLength = vnode.children.length;\n for (let i = 0, l = data.length; i < l; i++) {\n const child = handler(this.data[i], i);\n\n if (i < childrenLength) {\n const oldChild = vnode.children[i];\n child.isSVG = oldChild.isSVG;\n child.dom = oldChild.dom;\n updateAttributes(child as VnodeWithDom, null);\n vnode.children[i] = child;\n patch(child as VnodeWithDom);\n continue;\n }\n\n child.isSVG = vnode.isSVG || child.tag === \"svg\";\n child.dom = createElement(child.tag as string, child.isSVG);\n vnode.dom.appendChild(child.dom);\n updateAttributes(child as VnodeWithDom, null);\n vnode.children.push(child);\n patch(child as VnodeWithDom);\n }\n\n for (let i = data.length; i < childrenLength; i++) {\n vnode.dom.removeChild(vnode.children[i].dom);\n }\n vnode.children.length = data.length;\n }\n\n add(...data: T[]) {\n if (this.#data) {\n const oldLength = this.#data.length;\n if (this.#isFrozen) {\n this.#setData([...this.#data, ...data]);\n } else {\n this.#data.push(...data);\n }\n\n if (this.#vnode === null || this.#handler === null) {\n return;\n }\n\n const vnode = this.#vnode;\n const handler = this.#handler;\n\n for (let i = 0, ii = oldLength, l = data.length; i < l; i++, ii++) {\n const child = handler(this.#data[i], ii);\n child.isSVG = vnode.isSVG || child.tag === \"svg\";\n child.dom = createElement(child.tag as string, child.isSVG);\n vnode.dom.appendChild(child.dom);\n updateAttributes(child as VnodeWithDom, null);\n vnode.children.push(child);\n patch(child as VnodeWithDom);\n }\n }\n }\n\n delete(index: number) {\n if (this.#data && this.#vnode) {\n const child = this.#vnode.children[index];\n if (this.#isFrozen) {\n this.#setData(this.data.filter((_, i) => i !== index));\n } else {\n this.#data.splice(index, 1);\n }\n\n this.#vnode.dom.removeChild(child.dom);\n this.#vnode.children.splice(index, 1);\n }\n }\n\n update(index: number, item: Partial<T>) {\n if (this.#data && this.#vnode && this.#handler) {\n const child = this.#vnode.children[index];\n if (this.#isFrozen) {\n this.#setData(this.#data.map((d, i) => (i === index ? { ...d, ...item } : d)));\n } else {\n this.#data[index] = { ...this.#data[index], ...item };\n }\n const newChild = this.#handler(this.#data[index], index);\n newChild.isSVG = this.#vnode.isSVG || newChild.tag === \"svg\";\n newChild.dom = child.dom;\n this.#vnode.children[index] = newChild;\n updateAttributes(newChild as VnodeWithDom, null);\n patch(newChild as VnodeWithDom);\n }\n }\n}\n\ndirective(\"with-dataset\", (dataSet: DataSet<any>, vnode: VnodeWithDom) => {\n dataSet.setVnodeAndHandler(vnode, vnode.children[0]);\n return false;\n});\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../lib/hooks/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../lib/hooks/index.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,IAAI,GAAG,GAAG,CAAC;AAEvB,MAAM,WAAW,cAAc;IAE7B,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,CAAC;IAElC,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,CAAC;IAE/C,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,GAAG,CAAC;IAEhC,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,GAAG,CAAC;IAE/B,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,GAAG,CAAC;CACnC;AAED,MAAM,WAAW,UAAU;IAEzB,CAAC,cAAc,EAAE,cAAc,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,CAAC;CAC3D;AASD,eAAO,MAAM,UAAU,YAoCG,CAAC;AAS3B,eAAO,MAAM,QAAQ,YAvDyB,GAAG,EAAE,KAAK,GA8EtD,CAAC;AAGH,eAAO,MAAM,SAAS,YAjFwB,GAAG,EAAE,KAAK,GAqItD,CAAC;AAEH,eAAO,MAAM,MAAM,YAvI2B,GAAG,EAAE,KAAK,GA8ItD,CAAC;AAEH,eAAO,MAAM,WAAW,YAhJsB,GAAG,EAAE,KAAK,GA8JtD,CAAC;AAEH,eAAO,MAAM,OAAO,YAhK0B,GAAG,EAAE,KAAK,GAgLtD,CAAC"}
|
package/dist/hooks/index.js
CHANGED
|
@@ -29,6 +29,7 @@ __export(hooks_exports, {
|
|
|
29
29
|
});
|
|
30
30
|
module.exports = __toCommonJS(hooks_exports);
|
|
31
31
|
var import_valyrian = require("valyrian.js");
|
|
32
|
+
var componentToHooksWeakMap = /* @__PURE__ */ new WeakMap();
|
|
32
33
|
var createHook = function createHook2({
|
|
33
34
|
onCreate,
|
|
34
35
|
onUpdate: onUpdateHook,
|
|
@@ -37,42 +38,26 @@ var createHook = function createHook2({
|
|
|
37
38
|
returnValue
|
|
38
39
|
}) {
|
|
39
40
|
return (...args) => {
|
|
40
|
-
|
|
41
|
+
const component = import_valyrian.current.component;
|
|
41
42
|
let hook = null;
|
|
42
|
-
if (
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
hook = component.hooks[++vnode.hook_calls];
|
|
43
|
+
if (componentToHooksWeakMap.has(component) === false) {
|
|
44
|
+
const HookCalls2 = { hooks: [], hook_calls: -1 };
|
|
45
|
+
componentToHooksWeakMap.set(component, HookCalls2);
|
|
46
|
+
(0, import_valyrian.onUnmount)(() => componentToHooksWeakMap.delete(component));
|
|
47
|
+
}
|
|
48
|
+
const HookCalls = componentToHooksWeakMap.get(component);
|
|
49
|
+
(0, import_valyrian.onCleanup)(() => HookCalls.hook_calls = -1);
|
|
50
|
+
hook = HookCalls.hooks[++HookCalls.hook_calls];
|
|
51
|
+
if (hook) {
|
|
52
|
+
onUpdateHook && onUpdateHook(hook, ...args);
|
|
55
53
|
}
|
|
56
54
|
if (!hook) {
|
|
57
55
|
hook = onCreate(...args);
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
}
|
|
61
|
-
if (onRemove) {
|
|
62
|
-
(0, import_valyrian.onUnmount)(() => onRemove(hook));
|
|
63
|
-
}
|
|
64
|
-
} else {
|
|
65
|
-
if (onUpdateHook) {
|
|
66
|
-
onUpdateHook(hook, ...args);
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
if (onCleanupHook) {
|
|
70
|
-
(0, import_valyrian.onCleanup)(() => onCleanupHook(hook));
|
|
56
|
+
HookCalls.hooks.push(hook);
|
|
57
|
+
onRemove && (0, import_valyrian.onUnmount)(() => onRemove(hook));
|
|
71
58
|
}
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
}
|
|
75
|
-
return hook;
|
|
59
|
+
onCleanupHook && (0, import_valyrian.onCleanup)(() => onCleanupHook(hook));
|
|
60
|
+
return returnValue ? returnValue(hook) : hook;
|
|
76
61
|
};
|
|
77
62
|
};
|
|
78
63
|
var updateTimeout;
|
|
@@ -103,7 +88,7 @@ var useState = createHook({
|
|
|
103
88
|
});
|
|
104
89
|
var useEffect = createHook({
|
|
105
90
|
onCreate: (effect, changes) => {
|
|
106
|
-
|
|
91
|
+
const hook = { effect, prev: [] };
|
|
107
92
|
if (changes === null) {
|
|
108
93
|
hook.onRemove = effect;
|
|
109
94
|
return hook;
|
package/dist/hooks/index.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../lib/hooks/index.ts"],
|
|
4
|
-
"sourcesContent": ["import { Component, POJOComponent,
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,
|
|
6
|
-
"names": ["createHook"]
|
|
4
|
+
"sourcesContent": ["import { Component, POJOComponent, current, directive, onCleanup, onUnmount, update } from \"valyrian.js\";\n\nexport type Hook = any;\n\nexport interface HookDefinition {\n // eslint-disable-next-line no-unused-vars\n onCreate: (...args: any[]) => any;\n // eslint-disable-next-line no-unused-vars\n onUpdate?: (hook: Hook, ...args: any[]) => any;\n // eslint-disable-next-line no-unused-vars\n onCleanup?: (hook: Hook) => any;\n // eslint-disable-next-line no-unused-vars\n onRemove?: (hook: Hook) => any;\n // eslint-disable-next-line no-unused-vars\n returnValue?: (hook: Hook) => any;\n}\n\nexport interface CreateHook {\n // eslint-disable-next-line no-unused-vars\n (HookDefinition: HookDefinition): (...args: any[]) => any;\n}\n\ntype HookCalls = {\n hooks: Hook[];\n hook_calls: number;\n};\n\nconst componentToHooksWeakMap = new WeakMap<Component | POJOComponent, HookCalls>();\n\nexport const createHook = function createHook({\n onCreate,\n onUpdate: onUpdateHook,\n onCleanup: onCleanupHook,\n onRemove,\n returnValue\n}: HookDefinition): Hook {\n return (...args: any[]) => {\n const component = current.component as Component | POJOComponent;\n let hook: any = null;\n\n if (componentToHooksWeakMap.has(component) === false) {\n const HookCalls = { hooks: [], hook_calls: -1 };\n componentToHooksWeakMap.set(component, HookCalls);\n onUnmount(() => componentToHooksWeakMap.delete(component));\n }\n\n const HookCalls = componentToHooksWeakMap.get(component) as HookCalls;\n onCleanup(() => (HookCalls.hook_calls = -1));\n\n hook = HookCalls.hooks[++HookCalls.hook_calls];\n\n if (hook) {\n onUpdateHook && onUpdateHook(hook, ...args);\n }\n\n // If the hook doesn't exist, create it\n if (!hook) {\n hook = onCreate(...args);\n HookCalls.hooks.push(hook);\n onRemove && onUnmount(() => onRemove(hook));\n }\n\n onCleanupHook && onCleanup(() => onCleanupHook(hook));\n return returnValue ? returnValue(hook) : hook;\n };\n} as unknown as CreateHook;\n\nlet updateTimeout: any;\nfunction delayedUpdate() {\n clearTimeout(updateTimeout);\n updateTimeout = setTimeout(update);\n}\n\n// Use state hook\nexport const useState = createHook({\n onCreate: (value) => {\n function get() {\n return value;\n }\n get.value = value;\n get.toJSON = get.valueOf = get;\n get.toString = () => `${value}`;\n\n function set(newValue: any) {\n if (current.event) {\n current.event.preventDefault();\n }\n\n if (value !== newValue) {\n value = newValue;\n get.value = newValue;\n delayedUpdate();\n }\n }\n\n return [get, set];\n }\n});\n\n// Effect hook\nexport const useEffect = createHook({\n onCreate: (effect: Function, changes: any[]) => {\n const hook: {\n effect: Function;\n prev: any[];\n onRemove?: Function;\n onCleanup?: Function;\n } = { effect, prev: [] };\n // on unmount\n if (changes === null) {\n hook.onRemove = effect;\n return hook;\n }\n\n // on create\n hook.prev = changes;\n hook.onCleanup = hook.effect();\n return hook;\n },\n onUpdate: (hook, effect, changes) => {\n // on update\n if (typeof changes === \"undefined\") {\n hook.prev = changes;\n if (typeof hook.onCleanup === \"function\") {\n hook.onCleanup();\n }\n hook.onCleanup = hook.effect();\n return;\n }\n\n // on update if there are changes\n if (Array.isArray(changes)) {\n for (let i = 0, l = changes.length; i < l; i++) {\n if (changes[i] !== hook.prev[i]) {\n hook.prev = changes;\n if (typeof hook.onCleanup === \"function\") {\n hook.onCleanup();\n }\n hook.onCleanup = hook.effect();\n return;\n }\n }\n }\n },\n onRemove: (hook) => {\n if (typeof hook.onCleanup === \"function\") {\n hook.onCleanup();\n }\n if (typeof hook.onRemove === \"function\") {\n hook.onRemove();\n }\n }\n});\n\nexport const useRef = createHook({\n onCreate: (initialValue) => {\n directive(\"ref\", (ref, vnode) => {\n ref.current = vnode.dom;\n });\n return { current: initialValue };\n }\n});\n\nexport const useCallback = createHook({\n onCreate: (callback, changes) => {\n callback();\n return { callback, changes };\n },\n onUpdate: (hook, callback, changes) => {\n for (let i = 0, l = changes.length; i < l; i++) {\n if (changes[i] !== hook.changes[i]) {\n hook.changes = changes;\n hook.callback();\n return;\n }\n }\n }\n});\n\nexport const useMemo = createHook({\n onCreate: (callback, changes) => {\n return { callback, changes, value: callback() };\n },\n onUpdate: (hook, callback, changes) => {\n for (let i = 0, l = changes.length; i < l; i++) {\n if (changes[i] !== hook.changes[i]) {\n hook.changes = changes;\n hook.value = callback();\n return;\n }\n }\n },\n returnValue: (hook) => {\n return hook.value;\n }\n});\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["createHook", "HookCalls"]
|
|
7
7
|
}
|
package/dist/hooks/index.mjs
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
// lib/hooks/index.ts
|
|
2
2
|
import { current, directive, onCleanup, onUnmount, update } from "valyrian.js";
|
|
3
|
+
var componentToHooksWeakMap = /* @__PURE__ */ new WeakMap();
|
|
3
4
|
var createHook = function createHook2({
|
|
4
5
|
onCreate,
|
|
5
6
|
onUpdate: onUpdateHook,
|
|
@@ -8,42 +9,26 @@ var createHook = function createHook2({
|
|
|
8
9
|
returnValue
|
|
9
10
|
}) {
|
|
10
11
|
return (...args) => {
|
|
11
|
-
|
|
12
|
+
const component = current.component;
|
|
12
13
|
let hook = null;
|
|
13
|
-
if (
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
hook = component.hooks[++vnode.hook_calls];
|
|
14
|
+
if (componentToHooksWeakMap.has(component) === false) {
|
|
15
|
+
const HookCalls2 = { hooks: [], hook_calls: -1 };
|
|
16
|
+
componentToHooksWeakMap.set(component, HookCalls2);
|
|
17
|
+
onUnmount(() => componentToHooksWeakMap.delete(component));
|
|
18
|
+
}
|
|
19
|
+
const HookCalls = componentToHooksWeakMap.get(component);
|
|
20
|
+
onCleanup(() => HookCalls.hook_calls = -1);
|
|
21
|
+
hook = HookCalls.hooks[++HookCalls.hook_calls];
|
|
22
|
+
if (hook) {
|
|
23
|
+
onUpdateHook && onUpdateHook(hook, ...args);
|
|
26
24
|
}
|
|
27
25
|
if (!hook) {
|
|
28
26
|
hook = onCreate(...args);
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
}
|
|
32
|
-
if (onRemove) {
|
|
33
|
-
onUnmount(() => onRemove(hook));
|
|
34
|
-
}
|
|
35
|
-
} else {
|
|
36
|
-
if (onUpdateHook) {
|
|
37
|
-
onUpdateHook(hook, ...args);
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
if (onCleanupHook) {
|
|
41
|
-
onCleanup(() => onCleanupHook(hook));
|
|
27
|
+
HookCalls.hooks.push(hook);
|
|
28
|
+
onRemove && onUnmount(() => onRemove(hook));
|
|
42
29
|
}
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
}
|
|
46
|
-
return hook;
|
|
30
|
+
onCleanupHook && onCleanup(() => onCleanupHook(hook));
|
|
31
|
+
return returnValue ? returnValue(hook) : hook;
|
|
47
32
|
};
|
|
48
33
|
};
|
|
49
34
|
var updateTimeout;
|
|
@@ -74,7 +59,7 @@ var useState = createHook({
|
|
|
74
59
|
});
|
|
75
60
|
var useEffect = createHook({
|
|
76
61
|
onCreate: (effect, changes) => {
|
|
77
|
-
|
|
62
|
+
const hook = { effect, prev: [] };
|
|
78
63
|
if (changes === null) {
|
|
79
64
|
hook.onRemove = effect;
|
|
80
65
|
return hook;
|
package/dist/hooks/index.mjs.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../lib/hooks/index.ts"],
|
|
4
|
-
"sourcesContent": ["import { Component, POJOComponent,
|
|
5
|
-
"mappings": ";AAAA,
|
|
6
|
-
"names": ["createHook"]
|
|
4
|
+
"sourcesContent": ["import { Component, POJOComponent, current, directive, onCleanup, onUnmount, update } from \"valyrian.js\";\n\nexport type Hook = any;\n\nexport interface HookDefinition {\n // eslint-disable-next-line no-unused-vars\n onCreate: (...args: any[]) => any;\n // eslint-disable-next-line no-unused-vars\n onUpdate?: (hook: Hook, ...args: any[]) => any;\n // eslint-disable-next-line no-unused-vars\n onCleanup?: (hook: Hook) => any;\n // eslint-disable-next-line no-unused-vars\n onRemove?: (hook: Hook) => any;\n // eslint-disable-next-line no-unused-vars\n returnValue?: (hook: Hook) => any;\n}\n\nexport interface CreateHook {\n // eslint-disable-next-line no-unused-vars\n (HookDefinition: HookDefinition): (...args: any[]) => any;\n}\n\ntype HookCalls = {\n hooks: Hook[];\n hook_calls: number;\n};\n\nconst componentToHooksWeakMap = new WeakMap<Component | POJOComponent, HookCalls>();\n\nexport const createHook = function createHook({\n onCreate,\n onUpdate: onUpdateHook,\n onCleanup: onCleanupHook,\n onRemove,\n returnValue\n}: HookDefinition): Hook {\n return (...args: any[]) => {\n const component = current.component as Component | POJOComponent;\n let hook: any = null;\n\n if (componentToHooksWeakMap.has(component) === false) {\n const HookCalls = { hooks: [], hook_calls: -1 };\n componentToHooksWeakMap.set(component, HookCalls);\n onUnmount(() => componentToHooksWeakMap.delete(component));\n }\n\n const HookCalls = componentToHooksWeakMap.get(component) as HookCalls;\n onCleanup(() => (HookCalls.hook_calls = -1));\n\n hook = HookCalls.hooks[++HookCalls.hook_calls];\n\n if (hook) {\n onUpdateHook && onUpdateHook(hook, ...args);\n }\n\n // If the hook doesn't exist, create it\n if (!hook) {\n hook = onCreate(...args);\n HookCalls.hooks.push(hook);\n onRemove && onUnmount(() => onRemove(hook));\n }\n\n onCleanupHook && onCleanup(() => onCleanupHook(hook));\n return returnValue ? returnValue(hook) : hook;\n };\n} as unknown as CreateHook;\n\nlet updateTimeout: any;\nfunction delayedUpdate() {\n clearTimeout(updateTimeout);\n updateTimeout = setTimeout(update);\n}\n\n// Use state hook\nexport const useState = createHook({\n onCreate: (value) => {\n function get() {\n return value;\n }\n get.value = value;\n get.toJSON = get.valueOf = get;\n get.toString = () => `${value}`;\n\n function set(newValue: any) {\n if (current.event) {\n current.event.preventDefault();\n }\n\n if (value !== newValue) {\n value = newValue;\n get.value = newValue;\n delayedUpdate();\n }\n }\n\n return [get, set];\n }\n});\n\n// Effect hook\nexport const useEffect = createHook({\n onCreate: (effect: Function, changes: any[]) => {\n const hook: {\n effect: Function;\n prev: any[];\n onRemove?: Function;\n onCleanup?: Function;\n } = { effect, prev: [] };\n // on unmount\n if (changes === null) {\n hook.onRemove = effect;\n return hook;\n }\n\n // on create\n hook.prev = changes;\n hook.onCleanup = hook.effect();\n return hook;\n },\n onUpdate: (hook, effect, changes) => {\n // on update\n if (typeof changes === \"undefined\") {\n hook.prev = changes;\n if (typeof hook.onCleanup === \"function\") {\n hook.onCleanup();\n }\n hook.onCleanup = hook.effect();\n return;\n }\n\n // on update if there are changes\n if (Array.isArray(changes)) {\n for (let i = 0, l = changes.length; i < l; i++) {\n if (changes[i] !== hook.prev[i]) {\n hook.prev = changes;\n if (typeof hook.onCleanup === \"function\") {\n hook.onCleanup();\n }\n hook.onCleanup = hook.effect();\n return;\n }\n }\n }\n },\n onRemove: (hook) => {\n if (typeof hook.onCleanup === \"function\") {\n hook.onCleanup();\n }\n if (typeof hook.onRemove === \"function\") {\n hook.onRemove();\n }\n }\n});\n\nexport const useRef = createHook({\n onCreate: (initialValue) => {\n directive(\"ref\", (ref, vnode) => {\n ref.current = vnode.dom;\n });\n return { current: initialValue };\n }\n});\n\nexport const useCallback = createHook({\n onCreate: (callback, changes) => {\n callback();\n return { callback, changes };\n },\n onUpdate: (hook, callback, changes) => {\n for (let i = 0, l = changes.length; i < l; i++) {\n if (changes[i] !== hook.changes[i]) {\n hook.changes = changes;\n hook.callback();\n return;\n }\n }\n }\n});\n\nexport const useMemo = createHook({\n onCreate: (callback, changes) => {\n return { callback, changes, value: callback() };\n },\n onUpdate: (hook, callback, changes) => {\n for (let i = 0, l = changes.length; i < l; i++) {\n if (changes[i] !== hook.changes[i]) {\n hook.changes = changes;\n hook.value = callback();\n return;\n }\n }\n },\n returnValue: (hook) => {\n return hook.value;\n }\n});\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["createHook", "HookCalls"]
|
|
7
7
|
}
|