j-templates 7.0.25 → 7.0.27
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/DOM/elements.d.ts +8 -0
- package/DOM/elements.js +2 -1
- package/Node/vNode.js +5 -2
- package/Store/Tree/observableScope.js +1 -1
- package/Utils/array.d.ts +1 -0
- package/Utils/array.js +23 -0
- package/package.json +1 -1
package/DOM/elements.d.ts
CHANGED
|
@@ -86,4 +86,12 @@ export declare const img: <T>(config: {
|
|
|
86
86
|
on?: import("../Node/vNode.types").FunctionOr<import("../Node/vNode.types").vNodeEvents<HTMLElementEventMap>>;
|
|
87
87
|
data?: () => T | Array<T> | Promise<Array<T>> | Promise<T>;
|
|
88
88
|
}, children?: import("../Node/vNode.types").vNode[] | import("../Node/vNode.types").vNodeChildrenFunction<T>) => import("../Node/vNode.types").vNode;
|
|
89
|
+
export declare const video: <T>(config: {
|
|
90
|
+
props?: import("../Node/vNode.types").FunctionOr<import("../Utils/utils.types").RecursivePartial<HTMLVideoElement>>;
|
|
91
|
+
attrs?: import("../Node/vNode.types").FunctionOr<{
|
|
92
|
+
[name: string]: string;
|
|
93
|
+
}>;
|
|
94
|
+
on?: import("../Node/vNode.types").FunctionOr<import("../Node/vNode.types").vNodeEvents<HTMLElementEventMap>>;
|
|
95
|
+
data?: () => T | Array<T> | Promise<Array<T>> | Promise<T>;
|
|
96
|
+
}, children?: import("../Node/vNode.types").vNode[] | import("../Node/vNode.types").vNodeChildrenFunction<T>) => import("../Node/vNode.types").vNode;
|
|
89
97
|
export declare const text: (callback: () => string) => import("../Node/vNode.types").vNode;
|
package/DOM/elements.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.text = exports.img = exports.td = exports.tr = exports.tbody = exports.table = exports.span = exports.input = exports.h1 = exports.button = exports.a = exports.div = void 0;
|
|
3
|
+
exports.text = exports.video = exports.img = exports.td = exports.tr = exports.tbody = exports.table = exports.span = exports.input = exports.h1 = exports.button = exports.a = exports.div = void 0;
|
|
4
4
|
const vNode_1 = require("../Node/vNode");
|
|
5
5
|
exports.div = vNode_1.vNode.ToFunction("div");
|
|
6
6
|
exports.a = vNode_1.vNode.ToFunction("a");
|
|
@@ -13,6 +13,7 @@ exports.tbody = vNode_1.vNode.ToFunction("tbody");
|
|
|
13
13
|
exports.tr = vNode_1.vNode.ToFunction("tr");
|
|
14
14
|
exports.td = vNode_1.vNode.ToFunction("td");
|
|
15
15
|
exports.img = vNode_1.vNode.ToFunction("img");
|
|
16
|
+
exports.video = vNode_1.vNode.ToFunction("video");
|
|
16
17
|
const textElement = vNode_1.vNode.ToFunction("text");
|
|
17
18
|
const text = function (callback) {
|
|
18
19
|
return textElement({ props: () => ({ nodeValue: callback() }) });
|
package/Node/vNode.js
CHANGED
|
@@ -201,7 +201,7 @@ function DynamicChildren(vnode, children, data) {
|
|
|
201
201
|
vnode.children = Store_1.ObservableScope.Value(childrenScope);
|
|
202
202
|
}
|
|
203
203
|
function WrapDynamicChildren(dataScope, nodeList, injector, children) {
|
|
204
|
-
|
|
204
|
+
const func = function () {
|
|
205
205
|
const nextData = Store_1.ObservableScope.Value(dataScope);
|
|
206
206
|
const nodeMap = list_1.List.ToNodeMap(nodeList, function (data) {
|
|
207
207
|
return data.data;
|
|
@@ -257,6 +257,7 @@ function WrapDynamicChildren(dataScope, nodeList, injector, children) {
|
|
|
257
257
|
list_1.List.Append(nodeList, nextNodeList);
|
|
258
258
|
return nextNodeArray;
|
|
259
259
|
};
|
|
260
|
+
return func;
|
|
260
261
|
}
|
|
261
262
|
function UpdateChildren(vnode, init = false, skipInit = false) {
|
|
262
263
|
if (!vnode.children)
|
|
@@ -289,7 +290,7 @@ function UpdateChildren(vnode, init = false, skipInit = false) {
|
|
|
289
290
|
});
|
|
290
291
|
}
|
|
291
292
|
function ToArray(callback) {
|
|
292
|
-
|
|
293
|
+
const func = function (...args) {
|
|
293
294
|
const result = callback(...args);
|
|
294
295
|
if (Array.isArray(result))
|
|
295
296
|
return result;
|
|
@@ -297,6 +298,8 @@ function ToArray(callback) {
|
|
|
297
298
|
return [];
|
|
298
299
|
return [result];
|
|
299
300
|
};
|
|
301
|
+
func[Symbol.toStringTag] = callback[Symbol.toStringTag];
|
|
302
|
+
return func;
|
|
300
303
|
}
|
|
301
304
|
function ScheduledAssignment(assign) {
|
|
302
305
|
let scheduled = false;
|
|
@@ -222,7 +222,7 @@ function UpdateEmitters(scope, right) {
|
|
|
222
222
|
}
|
|
223
223
|
return;
|
|
224
224
|
}
|
|
225
|
-
(0, array_1.
|
|
225
|
+
(0, array_1.ReconcileSortedEmitters)(scope.emitters, right, function (emitter) {
|
|
226
226
|
emitter_1.Emitter.On(emitter, scope.setCallback);
|
|
227
227
|
}, function (emitter) {
|
|
228
228
|
emitter_1.Emitter.Remove(emitter, scope.setCallback);
|
package/Utils/array.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
1
|
export declare function RemoveNulls(array: (unknown | null)[], startIndex?: number): void;
|
|
2
2
|
export declare function ArrayDiff(source: any[], target: any[]): boolean;
|
|
3
|
+
export declare function ReconcileSortedEmitters<T extends [number]>(left: T[], right: T[], add: (value: T) => void, remove: (value: T) => void): void;
|
|
3
4
|
export declare function ReconcileSortedArrays<T>(left: T[], right: T[], add: (value: T) => void, remove: (value: T) => void): void;
|
package/Utils/array.js
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.RemoveNulls = RemoveNulls;
|
|
4
4
|
exports.ArrayDiff = ArrayDiff;
|
|
5
|
+
exports.ReconcileSortedEmitters = ReconcileSortedEmitters;
|
|
5
6
|
exports.ReconcileSortedArrays = ReconcileSortedArrays;
|
|
6
7
|
function RemoveNulls(array, startIndex = 0) {
|
|
7
8
|
let nullIndex = startIndex;
|
|
@@ -25,6 +26,28 @@ function ArrayDiff(source, target) {
|
|
|
25
26
|
for (; x < source.length && source[x] === target[x]; x++) { }
|
|
26
27
|
return x < source.length;
|
|
27
28
|
}
|
|
29
|
+
function ReconcileSortedEmitters(left, right, add, remove) {
|
|
30
|
+
let leftIndex = 0;
|
|
31
|
+
let rightIndex = 0;
|
|
32
|
+
while (leftIndex < left.length && rightIndex < right.length) {
|
|
33
|
+
let li = leftIndex;
|
|
34
|
+
let ri = rightIndex;
|
|
35
|
+
for (; li < left.length && left[li][0] < right[ri][0]; li++)
|
|
36
|
+
remove(left[li]);
|
|
37
|
+
while (li < left.length && ri < right.length && left[li][0] === right[ri][0]) {
|
|
38
|
+
li++;
|
|
39
|
+
ri++;
|
|
40
|
+
}
|
|
41
|
+
for (; ri < right.length && li < left.length && right[ri][0] < left[li][0]; ri++)
|
|
42
|
+
add(right[ri]);
|
|
43
|
+
leftIndex = li;
|
|
44
|
+
rightIndex = ri;
|
|
45
|
+
}
|
|
46
|
+
for (let li = leftIndex; li < left.length; li++)
|
|
47
|
+
remove(left[li]);
|
|
48
|
+
for (let ri = rightIndex; ri < right.length; ri++)
|
|
49
|
+
add(right[ri]);
|
|
50
|
+
}
|
|
28
51
|
function ReconcileSortedArrays(left, right, add, remove) {
|
|
29
52
|
let leftIndex = 0;
|
|
30
53
|
let rightIndex = 0;
|