@derivesome/tree 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/.package.json.~undo-tree~ +4 -0
- package/.tsconfig.json.~undo-tree~ +4 -0
- package/dist/cjs/brands.d.ts +3 -0
- package/dist/cjs/brands.d.ts.map +1 -0
- package/dist/cjs/brands.js +5 -0
- package/dist/cjs/brands.js.map +1 -0
- package/dist/cjs/context.d.ts +28 -0
- package/dist/cjs/context.d.ts.map +1 -0
- package/dist/cjs/context.js +48 -0
- package/dist/cjs/context.js.map +1 -0
- package/dist/cjs/index.d.ts +6 -0
- package/dist/cjs/index.d.ts.map +1 -0
- package/dist/cjs/index.js +22 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/mount.d.ts +6 -0
- package/dist/cjs/mount.d.ts.map +1 -0
- package/dist/cjs/mount.js +209 -0
- package/dist/cjs/mount.js.map +1 -0
- package/dist/cjs/props.d.ts +12 -0
- package/dist/cjs/props.d.ts.map +1 -0
- package/dist/cjs/props.js +80 -0
- package/dist/cjs/props.js.map +1 -0
- package/dist/cjs/renderer.d.ts +29 -0
- package/dist/cjs/renderer.d.ts.map +1 -0
- package/dist/cjs/renderer.js +3 -0
- package/dist/cjs/renderer.js.map +1 -0
- package/dist/cjs/tree-node-like.d.ts +8 -0
- package/dist/cjs/tree-node-like.d.ts.map +1 -0
- package/dist/cjs/tree-node-like.js +4 -0
- package/dist/cjs/tree-node-like.js.map +1 -0
- package/dist/cjs/tree.d.ts +46 -0
- package/dist/cjs/tree.d.ts.map +1 -0
- package/dist/cjs/tree.js +154 -0
- package/dist/cjs/tree.js.map +1 -0
- package/dist/cjs/velement.d.ts +185 -0
- package/dist/cjs/velement.d.ts.map +1 -0
- package/dist/cjs/velement.js +874 -0
- package/dist/cjs/velement.js.map +1 -0
- package/dist/esm/brands.d.ts +3 -0
- package/dist/esm/brands.d.ts.map +1 -0
- package/dist/esm/brands.js +5 -0
- package/dist/esm/brands.js.map +1 -0
- package/dist/esm/context.d.ts +28 -0
- package/dist/esm/context.d.ts.map +1 -0
- package/dist/esm/context.js +48 -0
- package/dist/esm/context.js.map +1 -0
- package/dist/esm/index.d.ts +6 -0
- package/dist/esm/index.d.ts.map +1 -0
- package/dist/esm/index.js +22 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/mount.d.ts +6 -0
- package/dist/esm/mount.d.ts.map +1 -0
- package/dist/esm/mount.js +209 -0
- package/dist/esm/mount.js.map +1 -0
- package/dist/esm/props.d.ts +12 -0
- package/dist/esm/props.d.ts.map +1 -0
- package/dist/esm/props.js +80 -0
- package/dist/esm/props.js.map +1 -0
- package/dist/esm/renderer.d.ts +29 -0
- package/dist/esm/renderer.d.ts.map +1 -0
- package/dist/esm/renderer.js +3 -0
- package/dist/esm/renderer.js.map +1 -0
- package/dist/esm/tree-node-like.d.ts +8 -0
- package/dist/esm/tree-node-like.d.ts.map +1 -0
- package/dist/esm/tree-node-like.js +4 -0
- package/dist/esm/tree-node-like.js.map +1 -0
- package/dist/esm/tree.d.ts +46 -0
- package/dist/esm/tree.d.ts.map +1 -0
- package/dist/esm/tree.js +154 -0
- package/dist/esm/tree.js.map +1 -0
- package/dist/esm/velement.d.ts +185 -0
- package/dist/esm/velement.d.ts.map +1 -0
- package/dist/esm/velement.js +874 -0
- package/dist/esm/velement.js.map +1 -0
- package/package.json +46 -0
- package/package.json~ +52 -0
- package/src/#mount.test.ts# +372 -0
- package/src/.brands.ts.~undo-tree~ +6 -0
- package/src/.context.ts.~undo-tree~ +6 -0
- package/src/.index.ts.~undo-tree~ +11 -0
- package/src/.mount.test.ts.~undo-tree~ +438 -0
- package/src/.mount.ts.~undo-tree~ +70 -0
- package/src/.node-like.ts.~undo-tree~ +8 -0
- package/src/.props.ts.~undo-tree~ +125 -0
- package/src/.renderer.ts.~undo-tree~ +18 -0
- package/src/.tree-node-like.ts.~undo-tree~ +12 -0
- package/src/.tree.ts.~undo-tree~ +46 -0
- package/src/.velement.ts.~undo-tree~ +1739 -0
- package/src/brands.ts +2 -0
- package/src/brands.ts~ +0 -0
- package/src/context.ts +61 -0
- package/src/context.ts~ +0 -0
- package/src/index.ts +5 -0
- package/src/index.ts~ +4 -0
- package/src/mount.test.ts +405 -0
- package/src/mount.test.ts~ +375 -0
- package/src/mount.ts +332 -0
- package/src/mount.ts~ +306 -0
- package/src/node-like.ts~ +0 -0
- package/src/props.ts +99 -0
- package/src/props.ts~ +86 -0
- package/src/renderer.ts +37 -0
- package/src/renderer.ts~ +37 -0
- package/src/tree-node-like.ts +8 -0
- package/src/tree-node-like.ts~ +6 -0
- package/src/tree.ts +226 -0
- package/src/tree.ts~ +227 -0
- package/src/velement.ts +990 -0
- package/src/velement.ts~ +966 -0
- package/tsconfig.cjs.json +10 -0
- package/tsconfig.esm.json +10 -0
- package/tsconfig.json +23 -0
- package/tsconfig.json~ +23 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"brands.d.ts","sourceRoot":"","sources":["../../src/brands.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,aAAa,EAAG,UAAmB,CAAC;AACjD,MAAM,MAAM,aAAa,GAAG,OAAO,aAAa,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"brands.js","sourceRoot":"","sources":["../../src/brands.ts"],"names":[],"mappings":";;;AAAa,QAAA,aAAa,GAAG,UAAmB,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { Stack } from "@derivesome/core";
|
|
2
|
+
export declare const TreeScope: {
|
|
3
|
+
new (): {
|
|
4
|
+
cleanups: Set<() => void>;
|
|
5
|
+
};
|
|
6
|
+
};
|
|
7
|
+
export type TreeScope = InstanceType<typeof TreeScope>;
|
|
8
|
+
export declare const TreeContext: {
|
|
9
|
+
new (): {};
|
|
10
|
+
scopes: Stack<TreeScope>;
|
|
11
|
+
get scope(): TreeScope;
|
|
12
|
+
push(): TreeScope;
|
|
13
|
+
pop(): void;
|
|
14
|
+
scoped<T>(fn: (scope: TreeScope) => T): T;
|
|
15
|
+
};
|
|
16
|
+
export type TreeContext = InstanceType<typeof TreeContext>;
|
|
17
|
+
/**
|
|
18
|
+
* Register a teardown callback for the currently-mounting component.
|
|
19
|
+
* Must be called synchronously during component setup.
|
|
20
|
+
*/
|
|
21
|
+
export declare function onCleanup(fn: () => void): void;
|
|
22
|
+
/**
|
|
23
|
+
* Run `fn` inside a cleanup-collection scope.
|
|
24
|
+
* Returns `[result, dispose]` where `dispose()` calls every `onCleanup`
|
|
25
|
+
* registered during `fn`'s execution.
|
|
26
|
+
*/
|
|
27
|
+
export declare function withCleanupScope<T>(fn: () => T): [result: T, dispose: () => void];
|
|
28
|
+
//# sourceMappingURL=context.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsB,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAE7D,eAAO,MAAM,SAAS;;kBAER,GAAG,CAAC,MAAM,IAAI,CAAC;;CAG5B,CAAC;AACF,MAAM,MAAM,SAAS,GAAG,YAAY,CAAC,OAAO,SAAS,CAAC,CAAC;AAEvD,eAAO,MAAM,WAAW;;YAEL,KAAK,CAAC,SAAS,CAAC;iBAEX,SAAS;YAId,SAAS;;WAUV,CAAC,MAAM,CAAC,KAAK,EAAE,SAAS,KAAK,CAAC,GAAG,CAAC;CAQnD,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG,YAAY,CAAC,OAAO,WAAW,CAAC,CAAC;AAE3D;;;GAGG;AACH,wBAAgB,SAAS,CAAC,EAAE,EAAE,MAAM,IAAI,GAAG,IAAI,CAE9C;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,EAChC,EAAE,EAAE,MAAM,CAAC,GACV,CAAC,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC,CAKlC"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TreeContext = exports.TreeScope = void 0;
|
|
4
|
+
exports.onCleanup = onCleanup;
|
|
5
|
+
exports.withCleanupScope = withCleanupScope;
|
|
6
|
+
const core_1 = require("@derivesome/core");
|
|
7
|
+
exports.TreeScope = (0, core_1.makeGlobalPrefixed)(class TreeScope {
|
|
8
|
+
cleanups = new Set();
|
|
9
|
+
}, "TreeScope");
|
|
10
|
+
exports.TreeContext = (0, core_1.makeGlobalPrefixed)(class TreeContext {
|
|
11
|
+
static scopes = new core_1.Stack([new exports.TreeScope()]);
|
|
12
|
+
static get scope() {
|
|
13
|
+
return this.scopes.current;
|
|
14
|
+
}
|
|
15
|
+
static push() {
|
|
16
|
+
const scope = new exports.TreeScope();
|
|
17
|
+
this.scopes.push(scope);
|
|
18
|
+
return scope;
|
|
19
|
+
}
|
|
20
|
+
static pop() {
|
|
21
|
+
this.scopes.pop();
|
|
22
|
+
}
|
|
23
|
+
static scoped(fn) {
|
|
24
|
+
const scope = this.push();
|
|
25
|
+
const ret = fn(scope);
|
|
26
|
+
this.pop();
|
|
27
|
+
return ret;
|
|
28
|
+
}
|
|
29
|
+
}, "TreeContext");
|
|
30
|
+
/**
|
|
31
|
+
* Register a teardown callback for the currently-mounting component.
|
|
32
|
+
* Must be called synchronously during component setup.
|
|
33
|
+
*/
|
|
34
|
+
function onCleanup(fn) {
|
|
35
|
+
exports.TreeContext.scope.cleanups.add(fn);
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Run `fn` inside a cleanup-collection scope.
|
|
39
|
+
* Returns `[result, dispose]` where `dispose()` calls every `onCleanup`
|
|
40
|
+
* registered during `fn`'s execution.
|
|
41
|
+
*/
|
|
42
|
+
function withCleanupScope(fn) {
|
|
43
|
+
return exports.TreeContext.scoped((scope) => {
|
|
44
|
+
const result = fn();
|
|
45
|
+
return [result, () => scope.cleanups.forEach((c) => c())];
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/context.ts"],"names":[],"mappings":";;;AA4CA,8BAEC;AAOD,4CAOC;AA5DD,2CAA6D;AAEhD,QAAA,SAAS,GAAG,IAAA,yBAAkB,EACzC,MAAM,SAAS;IACb,QAAQ,GAAoB,IAAI,GAAG,EAAE,CAAC;CACvC,EACD,WAAW,CACZ,CAAC;AAGW,QAAA,WAAW,GAAG,IAAA,yBAAkB,EAC3C,MAAM,WAAW;IACf,MAAM,CAAC,MAAM,GAAqB,IAAI,YAAK,CAAC,CAAC,IAAI,iBAAS,EAAE,CAAC,CAAC,CAAC;IAE/D,MAAM,KAAK,KAAK;QACd,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;IAC7B,CAAC;IAED,MAAM,CAAC,IAAI;QACT,MAAM,KAAK,GAAG,IAAI,iBAAS,EAAE,CAAC;QAC9B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACxB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,CAAC,GAAG;QACR,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;IACpB,CAAC;IAED,MAAM,CAAC,MAAM,CAAI,EAA2B;QAC1C,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAC1B,MAAM,GAAG,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC;QACtB,IAAI,CAAC,GAAG,EAAE,CAAC;QACX,OAAO,GAAG,CAAC;IACb,CAAC;CACF,EACD,aAAa,CACd,CAAC;AAIF;;;GAGG;AACH,SAAgB,SAAS,CAAC,EAAc;IACtC,mBAAW,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AACrC,CAAC;AAED;;;;GAIG;AACH,SAAgB,gBAAgB,CAC9B,EAAW;IAEX,OAAO,mBAAW,CAAC,MAAM,CAAmC,CAAC,KAAK,EAAE,EAAE;QACpE,MAAM,MAAM,GAAG,EAAE,EAAE,CAAC;QACpB,OAAO,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC5D,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./tree"), exports);
|
|
18
|
+
__exportStar(require("./renderer"), exports);
|
|
19
|
+
__exportStar(require("./context"), exports);
|
|
20
|
+
__exportStar(require("./mount"), exports);
|
|
21
|
+
__exportStar(require("./props"), exports);
|
|
22
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,yCAAuB;AACvB,6CAA2B;AAC3B,4CAA0B;AAC1B,0CAAwB;AACxB,0CAAwB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mount.d.ts","sourceRoot":"","sources":["../../src/mount.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAEL,QAAQ,EAMT,MAAM,QAAQ,CAAC;AAGhB,KAAK,OAAO,GAAG,MAAM,IAAI,CAAC;AAqT1B,wBAAgB,KAAK,CAAC,CAAC,EACrB,IAAI,EAAE,QAAQ,EACd,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,EACrB,MAAM,EAAE,CAAC,GACR,OAAO,CAIT"}
|
|
@@ -0,0 +1,209 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.mount = mount;
|
|
4
|
+
const core_1 = require("@derivesome/core");
|
|
5
|
+
const context_1 = require("./context");
|
|
6
|
+
const tree_1 = require("./tree");
|
|
7
|
+
const props_1 = require("./props");
|
|
8
|
+
const noop = () => { };
|
|
9
|
+
const createMountContext = () => ({
|
|
10
|
+
forwardedProps: null,
|
|
11
|
+
});
|
|
12
|
+
function isEventKey(key) {
|
|
13
|
+
return key.length > 2 && key.startsWith("on") && /^[A-Z]/.test(key[2]);
|
|
14
|
+
}
|
|
15
|
+
function applyProp(renderer, el, key, value) {
|
|
16
|
+
if (value === null || value === undefined || value === false) {
|
|
17
|
+
renderer.removeProp(el, key);
|
|
18
|
+
}
|
|
19
|
+
else {
|
|
20
|
+
renderer.setProp(el, key, value);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
function setupProp(renderer, el, key, value) {
|
|
24
|
+
if (key === "children")
|
|
25
|
+
return null;
|
|
26
|
+
if (key === "ref")
|
|
27
|
+
return null;
|
|
28
|
+
if ((0, core_1.isReference)(value)) {
|
|
29
|
+
const r = value;
|
|
30
|
+
applyProp(renderer, el, key, r.peek());
|
|
31
|
+
return r.observe((val) => applyProp(renderer, el, key, val));
|
|
32
|
+
}
|
|
33
|
+
if (Array.isArray(value)) {
|
|
34
|
+
const cleanups = value
|
|
35
|
+
.map((x) => setupProp(renderer, el, key, x))
|
|
36
|
+
.filter((v) => v !== null);
|
|
37
|
+
return () => {
|
|
38
|
+
cleanups.forEach((fn) => fn());
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
if (typeof value === "function" && !isEventKey(key)) {
|
|
42
|
+
// Computed prop — wrap in derived so dependency tracking works
|
|
43
|
+
const d = (0, core_1.derived)(value);
|
|
44
|
+
return d.observe((val) => applyProp(renderer, el, key, val), {
|
|
45
|
+
immediate: true,
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
// Static value or event handler
|
|
49
|
+
applyProp(renderer, el, key, value);
|
|
50
|
+
return null;
|
|
51
|
+
}
|
|
52
|
+
function mountElement(ctx, node, renderer, parent, before) {
|
|
53
|
+
const props = ctx.forwardedProps
|
|
54
|
+
? (0, props_1.forwardProps)(node.props, ctx.forwardedProps)
|
|
55
|
+
: node.props;
|
|
56
|
+
const el = renderer.createElement(node.tag);
|
|
57
|
+
const cleanups = [];
|
|
58
|
+
for (const [key, value] of Object.entries(props)) {
|
|
59
|
+
const cleanup = setupProp(renderer, el, key, value);
|
|
60
|
+
if (cleanup)
|
|
61
|
+
cleanups.push(cleanup);
|
|
62
|
+
}
|
|
63
|
+
cleanups.push(mountChildren({ ...ctx, forwardedProps: null }, node.children, renderer, el, null));
|
|
64
|
+
renderer.insertBefore(parent, el, before);
|
|
65
|
+
if (typeof props["ref"] === "function") {
|
|
66
|
+
props["ref"](el);
|
|
67
|
+
}
|
|
68
|
+
return () => {
|
|
69
|
+
cleanups.forEach((c) => c());
|
|
70
|
+
renderer.removeChild(parent, el);
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
function mountList(ctx, node, renderer, parent, before) {
|
|
74
|
+
const startMarker = renderer.createMarker("each");
|
|
75
|
+
const endMarker = renderer.createMarker("/each");
|
|
76
|
+
renderer.insertBefore(parent, startMarker, before);
|
|
77
|
+
renderer.insertBefore(parent, endMarker, before);
|
|
78
|
+
const itemMap = new Map();
|
|
79
|
+
const update = (list) => {
|
|
80
|
+
const newKeys = list.map((item, i) => {
|
|
81
|
+
const k = item.props.key;
|
|
82
|
+
return typeof k === "string" || typeof k === "number" ? k : i;
|
|
83
|
+
});
|
|
84
|
+
const newKeySet = new Set(newKeys);
|
|
85
|
+
// Remove items that dropped out of the list
|
|
86
|
+
for (const [key, state] of itemMap) {
|
|
87
|
+
if (!newKeySet.has(key)) {
|
|
88
|
+
state.cleanup();
|
|
89
|
+
renderer.removeChild(parent, state.itemStart);
|
|
90
|
+
renderer.removeChild(parent, state.itemEnd);
|
|
91
|
+
itemMap.delete(key);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
// Create newly-appeared items (appended before endMarker for now; reordered below)
|
|
95
|
+
for (let i = 0; i < list.length; i++) {
|
|
96
|
+
const key = newKeys[i];
|
|
97
|
+
const item = list[i];
|
|
98
|
+
if (!itemMap.has(key)) {
|
|
99
|
+
const itemStart = renderer.createMarker(`[${String(key)}]`);
|
|
100
|
+
const itemEnd = renderer.createMarker(`[/${String(key)}]`);
|
|
101
|
+
renderer.insertBefore(parent, itemStart, endMarker);
|
|
102
|
+
renderer.insertBefore(parent, itemEnd, endMarker);
|
|
103
|
+
const cleanup = mountNode(ctx, item, renderer, parent, itemEnd);
|
|
104
|
+
itemMap.set(key, { itemStart, itemEnd, cleanup, node: item });
|
|
105
|
+
}
|
|
106
|
+
else {
|
|
107
|
+
// Index-based keys (no explicit key prop) mean the same position may
|
|
108
|
+
// now hold different content. Remount so the DOM stays in sync.
|
|
109
|
+
const isIndexKey = key === i;
|
|
110
|
+
if (isIndexKey) {
|
|
111
|
+
const state = itemMap.get(key);
|
|
112
|
+
if (state.node !== item) {
|
|
113
|
+
state.cleanup();
|
|
114
|
+
state.cleanup = mountNode(ctx, item, renderer, parent, state.itemEnd);
|
|
115
|
+
state.node = item;
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
// Reorder to match the new key sequence.
|
|
121
|
+
// Process from the end so we can use each item's start marker as the
|
|
122
|
+
// insertion cursor for the preceding item.
|
|
123
|
+
let cursor = endMarker;
|
|
124
|
+
for (let i = newKeys.length - 1; i >= 0; i--) {
|
|
125
|
+
const key = newKeys[i];
|
|
126
|
+
const state = itemMap.get(key);
|
|
127
|
+
renderer.moveRange(parent, state.itemStart, state.itemEnd, cursor);
|
|
128
|
+
cursor = state.itemStart;
|
|
129
|
+
}
|
|
130
|
+
};
|
|
131
|
+
const unsub = node.items.observe(update, { immediate: true });
|
|
132
|
+
return () => {
|
|
133
|
+
unsub();
|
|
134
|
+
for (const [, state] of itemMap) {
|
|
135
|
+
state.cleanup();
|
|
136
|
+
renderer.removeChild(parent, state.itemStart);
|
|
137
|
+
renderer.removeChild(parent, state.itemEnd);
|
|
138
|
+
}
|
|
139
|
+
itemMap.clear();
|
|
140
|
+
renderer.removeChild(parent, startMarker);
|
|
141
|
+
renderer.removeChild(parent, endMarker);
|
|
142
|
+
};
|
|
143
|
+
}
|
|
144
|
+
function resolveText(content) {
|
|
145
|
+
if (typeof content === "boolean")
|
|
146
|
+
return "";
|
|
147
|
+
if ((0, core_1.isReference)(content))
|
|
148
|
+
return String(content.peek());
|
|
149
|
+
if (typeof content === "function")
|
|
150
|
+
return String(content());
|
|
151
|
+
return String(content);
|
|
152
|
+
}
|
|
153
|
+
function mountValue(_ctx, node, renderer, parent, before) {
|
|
154
|
+
const domText = renderer.createText(resolveText(node.value));
|
|
155
|
+
renderer.insertBefore(parent, domText, before);
|
|
156
|
+
let unsub = null;
|
|
157
|
+
const content = node.value;
|
|
158
|
+
if ((0, core_1.isReference)(content)) {
|
|
159
|
+
unsub = content.observe((val) => {
|
|
160
|
+
renderer.setText(domText, typeof val === "boolean" ? "" : String(val));
|
|
161
|
+
});
|
|
162
|
+
}
|
|
163
|
+
else if (typeof content === "function") {
|
|
164
|
+
const d = (0, core_1.derived)(content);
|
|
165
|
+
unsub = d.observe((val) => {
|
|
166
|
+
renderer.setText(domText, typeof val === "boolean" ? "" : String(val));
|
|
167
|
+
});
|
|
168
|
+
}
|
|
169
|
+
return () => {
|
|
170
|
+
unsub?.();
|
|
171
|
+
renderer.removeChild(parent, domText);
|
|
172
|
+
};
|
|
173
|
+
}
|
|
174
|
+
function mountFn(ctx, node, renderer, parent, before) {
|
|
175
|
+
return context_1.TreeContext.scoped(() => {
|
|
176
|
+
const [childNode, scopeCleanup] = (0, context_1.withCleanupScope)(() => tree_1.tnu.normalizeOne(node.fn(node.props)));
|
|
177
|
+
const mountCleanup = mountNode({ ...ctx, forwardedProps: (0, props_1.forwardProps)({}, node.props) }, childNode, renderer, parent, before);
|
|
178
|
+
return () => {
|
|
179
|
+
mountCleanup();
|
|
180
|
+
scopeCleanup();
|
|
181
|
+
};
|
|
182
|
+
});
|
|
183
|
+
}
|
|
184
|
+
function mountVoid(_ctx, _node, _renderer, _parent, _before) {
|
|
185
|
+
return noop;
|
|
186
|
+
}
|
|
187
|
+
function mountChildren(ctx, children, renderer, parent, before) {
|
|
188
|
+
const cleanups = children.map((child) => mountNode(ctx, child, renderer, parent, before));
|
|
189
|
+
return () => cleanups.forEach((c) => c());
|
|
190
|
+
}
|
|
191
|
+
function mountNode(ctx, node, renderer, parent, before) {
|
|
192
|
+
switch (node.type) {
|
|
193
|
+
case "element":
|
|
194
|
+
return mountElement(ctx, node, renderer, parent, before);
|
|
195
|
+
case "list":
|
|
196
|
+
return mountList(ctx, node, renderer, parent, before);
|
|
197
|
+
case "value":
|
|
198
|
+
return mountValue(ctx, node, renderer, parent, before);
|
|
199
|
+
case "function":
|
|
200
|
+
return mountFn(ctx, node, renderer, parent, before);
|
|
201
|
+
case "void":
|
|
202
|
+
return mountVoid(ctx, node, renderer, parent, before);
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
function mount(node, renderer, parent) {
|
|
206
|
+
const ctx = createMountContext();
|
|
207
|
+
return mountNode(ctx, node, renderer, parent, null);
|
|
208
|
+
}
|
|
209
|
+
//# sourceMappingURL=mount.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mount.js","sourceRoot":"","sources":["../../src/mount.ts"],"names":[],"mappings":";;AAmUA,sBAQC;AA3UD,2CAAwD;AACxD,uCAA0D;AAE1D,iCAQgB;AAChB,mCAAsD;AAGtD,MAAM,IAAI,GAAY,GAAG,EAAE,GAAE,CAAC,CAAC;AAM/B,MAAM,kBAAkB,GAAG,GAAiB,EAAE,CAAC,CAAC;IAC9C,cAAc,EAAE,IAAI;CACrB,CAAC,CAAC;AAEH,SAAS,UAAU,CAAC,GAAW;IAC7B,OAAO,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAE,CAAC,CAAC;AAC1E,CAAC;AAED,SAAS,SAAS,CAChB,QAAqB,EACrB,EAAK,EACL,GAAW,EACX,KAAc;IAEd,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,KAAK,EAAE,CAAC;QAC7D,QAAQ,CAAC,UAAU,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;IAC/B,CAAC;SAAM,CAAC;QACN,QAAQ,CAAC,OAAO,CAAC,EAAE,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;IACnC,CAAC;AACH,CAAC;AAED,SAAS,SAAS,CAChB,QAAqB,EACrB,EAAK,EACL,GAAW,EACX,KAAc;IAEd,IAAI,GAAG,KAAK,UAAU;QAAE,OAAO,IAAI,CAAC;IACpC,IAAI,GAAG,KAAK,KAAK;QAAE,OAAO,IAAI,CAAC;IAC/B,IAAI,IAAA,kBAAW,EAAC,KAAK,CAAC,EAAE,CAAC;QACvB,MAAM,CAAC,GAAG,KAAK,CAAC;QAChB,SAAS,CAAC,QAAQ,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QACvC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;IAC/D,CAAC;IAED,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,MAAM,QAAQ,GAAG,KAAK;aACnB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;aAC3C,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;QAC7B,OAAO,GAAG,EAAE;YACV,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QACjC,CAAC,CAAC;IACJ,CAAC;IAED,IAAI,OAAO,KAAK,KAAK,UAAU,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACpD,+DAA+D;QAC/D,MAAM,CAAC,GAAG,IAAA,cAAO,EAAC,KAAsB,CAAC,CAAC;QAC1C,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE;YAC3D,SAAS,EAAE,IAAI;SAChB,CAAC,CAAC;IACL,CAAC;IAED,gCAAgC;IAChC,SAAS,CAAC,QAAQ,EAAE,EAAE,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;IACpC,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,YAAY,CACnB,GAAiB,EACjB,IAAqB,EACrB,QAAqB,EACrB,MAAS,EACT,MAAgB;IAEhB,MAAM,KAAK,GAAG,GAAG,CAAC,cAAc;QAC9B,CAAC,CAAC,IAAA,oBAAY,EAAC,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,cAAc,CAAC;QAC9C,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;IAEf,MAAM,EAAE,GAAG,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC5C,MAAM,QAAQ,GAAc,EAAE,CAAC;IAE/B,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACjD,MAAM,OAAO,GAAG,SAAS,CAAC,QAAQ,EAAE,EAAE,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;QACpD,IAAI,OAAO;YAAE,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACtC,CAAC;IAED,QAAQ,CAAC,IAAI,CACX,aAAa,CACX,EAAE,GAAG,GAAG,EAAE,cAAc,EAAE,IAAI,EAAE,EAChC,IAAI,CAAC,QAAQ,EACb,QAAQ,EACR,EAAE,EACF,IAAI,CACL,CACF,CAAC;IACF,QAAQ,CAAC,YAAY,CAAC,MAAM,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC;IAE1C,IAAI,OAAO,KAAK,CAAC,KAAK,CAAC,KAAK,UAAU,EAAE,CAAC;QACtC,KAAK,CAAC,KAAK,CAAqB,CAAC,EAAE,CAAC,CAAC;IACxC,CAAC;IAED,OAAO,GAAG,EAAE;QACV,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;QAC7B,QAAQ,CAAC,WAAW,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACnC,CAAC,CAAC;AACJ,CAAC;AASD,SAAS,SAAS,CAChB,GAAiB,EACjB,IAAkB,EAClB,QAAqB,EACrB,MAAS,EACT,MAAgB;IAEhB,MAAM,WAAW,GAAG,QAAQ,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;IAClD,MAAM,SAAS,GAAG,QAAQ,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;IACjD,QAAQ,CAAC,YAAY,CAAC,MAAM,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC;IACnD,QAAQ,CAAC,YAAY,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;IAEjD,MAAM,OAAO,GAAG,IAAI,GAAG,EAAiC,CAAC;IAEzD,MAAM,MAAM,GAAG,CAAC,IAAgB,EAAQ,EAAE;QACxC,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE;YACnC,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;YACzB,OAAO,OAAO,CAAC,KAAK,QAAQ,IAAI,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAChE,CAAC,CAAC,CAAC;QACH,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC;QAEnC,4CAA4C;QAC5C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,OAAO,EAAE,CAAC;YACnC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;gBACxB,KAAK,CAAC,OAAO,EAAE,CAAC;gBAChB,QAAQ,CAAC,WAAW,CAAC,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;gBAC9C,QAAQ,CAAC,WAAW,CAAC,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;gBAC5C,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACtB,CAAC;QACH,CAAC;QAED,mFAAmF;QACnF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACrC,MAAM,GAAG,GAAG,OAAO,CAAC,CAAC,CAAE,CAAC;YACxB,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAE,CAAC;YACtB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;gBACtB,MAAM,SAAS,GAAG,QAAQ,CAAC,YAAY,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBAC5D,MAAM,OAAO,GAAG,QAAQ,CAAC,YAAY,CAAC,KAAK,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBAC3D,QAAQ,CAAC,YAAY,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;gBACpD,QAAQ,CAAC,YAAY,CAAC,MAAM,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;gBAClD,MAAM,OAAO,GAAG,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;gBAChE,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;YAChE,CAAC;iBAAM,CAAC;gBACN,qEAAqE;gBACrE,gEAAgE;gBAChE,MAAM,UAAU,GAAG,GAAG,KAAK,CAAC,CAAC;gBAC7B,IAAI,UAAU,EAAE,CAAC;oBACf,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAE,CAAC;oBAChC,IAAI,KAAK,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;wBACxB,KAAK,CAAC,OAAO,EAAE,CAAC;wBAChB,KAAK,CAAC,OAAO,GAAG,SAAS,CACvB,GAAG,EACH,IAAI,EACJ,QAAQ,EACR,MAAM,EACN,KAAK,CAAC,OAAO,CACd,CAAC;wBACF,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC;oBACpB,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAED,yCAAyC;QACzC,qEAAqE;QACrE,2CAA2C;QAC3C,IAAI,MAAM,GAAM,SAAS,CAAC;QAC1B,KAAK,IAAI,CAAC,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAC7C,MAAM,GAAG,GAAG,OAAO,CAAC,CAAC,CAAE,CAAC;YACxB,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAE,CAAC;YAChC,QAAQ,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;YACnE,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC;QAC3B,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAE9D,OAAO,GAAG,EAAE;QACV,KAAK,EAAE,CAAC;QACR,KAAK,MAAM,CAAC,EAAE,KAAK,CAAC,IAAI,OAAO,EAAE,CAAC;YAChC,KAAK,CAAC,OAAO,EAAE,CAAC;YAChB,QAAQ,CAAC,WAAW,CAAC,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;YAC9C,QAAQ,CAAC,WAAW,CAAC,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;QAC9C,CAAC;QACD,OAAO,CAAC,KAAK,EAAE,CAAC;QAChB,QAAQ,CAAC,WAAW,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;QAC1C,QAAQ,CAAC,WAAW,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IAC1C,CAAC,CAAC;AACJ,CAAC;AAED,SAAS,WAAW,CAAC,OAAgB;IACnC,IAAI,OAAO,OAAO,KAAK,SAAS;QAAE,OAAO,EAAE,CAAC;IAC5C,IAAI,IAAA,kBAAW,EAAC,OAAO,CAAC;QAAE,OAAO,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;IACxD,IAAI,OAAO,OAAO,KAAK,UAAU;QAC/B,OAAO,MAAM,CAAE,OAA2C,EAAE,CAAC,CAAC;IAChE,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC;AACzB,CAAC;AAED,SAAS,UAAU,CACjB,IAAkB,EAClB,IAAmB,EACnB,QAAqB,EACrB,MAAS,EACT,MAAgB;IAEhB,MAAM,OAAO,GAAG,QAAQ,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IAC7D,QAAQ,CAAC,YAAY,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;IAE/C,IAAI,KAAK,GAAmB,IAAI,CAAC;IAEjC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC;IAE3B,IAAI,IAAA,kBAAW,EAAC,OAAO,CAAC,EAAE,CAAC;QACzB,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;YAC9B,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;QACzE,CAAC,CAAC,CAAC;IACL,CAAC;SAAM,IAAI,OAAO,OAAO,KAAK,UAAU,EAAE,CAAC;QACzC,MAAM,CAAC,GAAG,IAAA,cAAO,EAAC,OAA0C,CAAC,CAAC;QAC9D,KAAK,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;YACxB,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;QACzE,CAAC,CAAC,CAAC;IACL,CAAC;IAED,OAAO,GAAG,EAAE;QACV,KAAK,EAAE,EAAE,CAAC;QACV,QAAQ,CAAC,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACxC,CAAC,CAAC;AACJ,CAAC;AAED,SAAS,OAAO,CACd,GAAiB,EACjB,IAAsB,EACtB,QAAqB,EACrB,MAAS,EACT,MAAgB;IAEhB,OAAO,qBAAW,CAAC,MAAM,CAAC,GAAG,EAAE;QAC7B,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,IAAA,0BAAgB,EAAC,GAAG,EAAE,CACtD,UAAG,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CACtC,CAAC;QACF,MAAM,YAAY,GAAG,SAAS,CAC5B,EAAE,GAAG,GAAG,EAAE,cAAc,EAAE,IAAA,oBAAY,EAAC,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,EACxD,SAAS,EACT,QAAQ,EACR,MAAM,EACN,MAAM,CACP,CAAC;QACF,OAAO,GAAG,EAAE;YACV,YAAY,EAAE,CAAC;YACf,YAAY,EAAE,CAAC;QACjB,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,SAAS,CAChB,IAAkB,EAClB,KAAmB,EACnB,SAAsB,EACtB,OAAU,EACV,OAAiB;IAEjB,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,aAAa,CACpB,GAAiB,EACjB,QAAoB,EACpB,QAAqB,EACrB,MAAS,EACT,MAAgB;IAEhB,MAAM,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CACtC,SAAS,CAAC,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,CAChD,CAAC;IACF,OAAO,GAAG,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;AAC5C,CAAC;AAED,SAAS,SAAS,CAChB,GAAiB,EACjB,IAAc,EACd,QAAqB,EACrB,MAAS,EACT,MAAgB;IAEhB,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;QAClB,KAAK,SAAS;YACZ,OAAO,YAAY,CAAC,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;QAC3D,KAAK,MAAM;YACT,OAAO,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;QACxD,KAAK,OAAO;YACV,OAAO,UAAU,CAAC,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;QACzD,KAAK,UAAU;YACb,OAAO,OAAO,CAAC,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;QACtD,KAAK,MAAM;YACT,OAAO,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1D,CAAC;AACH,CAAC;AAED,SAAgB,KAAK,CACnB,IAAc,EACd,QAAqB,EACrB,MAAS;IAET,MAAM,GAAG,GAAG,kBAAkB,EAAE,CAAC;IAEjC,OAAO,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;AACtD,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { LooseDict } from "@derivesome/core";
|
|
2
|
+
export type TreeNodeProps = LooseDict & {
|
|
3
|
+
children?: unknown;
|
|
4
|
+
style?: unknown;
|
|
5
|
+
id?: unknown;
|
|
6
|
+
key?: string | number;
|
|
7
|
+
};
|
|
8
|
+
export declare const FORWARDED_PROPS: Set<string>;
|
|
9
|
+
export declare const isForwardedProp: (key: string) => boolean;
|
|
10
|
+
export declare const mergeProps: (a: TreeNodeProps, b: TreeNodeProps) => TreeNodeProps;
|
|
11
|
+
export declare const forwardProps: (a: TreeNodeProps, b: TreeNodeProps) => TreeNodeProps;
|
|
12
|
+
//# sourceMappingURL=props.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"props.d.ts","sourceRoot":"","sources":["../../src/props.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,SAAS,EAGV,MAAM,kBAAkB,CAAC;AAE1B,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG;IACtC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,EAAE,CAAC,EAAE,OAAO,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CACvB,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,GAAG,CAAC,MAAM,CAKtC,CAAC;AAEH,eAAO,MAAM,eAAe,GAAI,KAAK,MAAM,KAAG,OAK7C,CAAC;AAqCF,eAAO,MAAM,UAAU,GACrB,GAAG,aAAa,EAChB,GAAG,aAAa,KACf,aAYF,CAAC;AAEF,eAAO,MAAM,YAAY,GACvB,GAAG,aAAa,EAChB,GAAG,aAAa,KACf,aAcF,CAAC"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.forwardProps = exports.mergeProps = exports.isForwardedProp = exports.FORWARDED_PROPS = void 0;
|
|
4
|
+
const core_1 = require("@derivesome/core");
|
|
5
|
+
exports.FORWARDED_PROPS = new Set([
|
|
6
|
+
"class",
|
|
7
|
+
"style",
|
|
8
|
+
"key",
|
|
9
|
+
"id",
|
|
10
|
+
]);
|
|
11
|
+
const isForwardedProp = (key) => {
|
|
12
|
+
if (exports.FORWARDED_PROPS.has(key))
|
|
13
|
+
return true;
|
|
14
|
+
// event handlers
|
|
15
|
+
if (key.length > 2 && key.startsWith("on"))
|
|
16
|
+
return true;
|
|
17
|
+
return false;
|
|
18
|
+
};
|
|
19
|
+
exports.isForwardedProp = isForwardedProp;
|
|
20
|
+
const mergeProp = (a, b, key) => {
|
|
21
|
+
if (typeof a === "undefined")
|
|
22
|
+
return b;
|
|
23
|
+
if (typeof b === "undefined")
|
|
24
|
+
return a;
|
|
25
|
+
if (a === null && b !== null)
|
|
26
|
+
return b;
|
|
27
|
+
if (b === null && a !== null)
|
|
28
|
+
return a;
|
|
29
|
+
if (key === "children")
|
|
30
|
+
return a;
|
|
31
|
+
if (Array.isArray(a) && Array.isArray(b)) {
|
|
32
|
+
const z = (0, core_1.zipMax)(a, b);
|
|
33
|
+
return (0, core_1.unique)(z.map(([x, y]) => mergeProp(x, y, key)));
|
|
34
|
+
}
|
|
35
|
+
if ((0, core_1.isReference)(a) && (0, core_1.isReference)(b)) {
|
|
36
|
+
return (0, core_1.derived)(() => mergeProp(a.get(), b.get(), key));
|
|
37
|
+
}
|
|
38
|
+
if (typeof a === "function" && typeof b === "function") {
|
|
39
|
+
return (...args) => mergeProp(a(...args), b(...args), key);
|
|
40
|
+
}
|
|
41
|
+
if (key === "class") {
|
|
42
|
+
if (typeof a === "string" && typeof b === "string") {
|
|
43
|
+
return (0, core_1.unique)([a, b]).join(" ").trim();
|
|
44
|
+
}
|
|
45
|
+
else if (Array.isArray(a) && typeof b === "string") {
|
|
46
|
+
if (a.every((v) => typeof v === "string") || a.length <= 0) {
|
|
47
|
+
return (0, core_1.unique)([...a, b]);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
else if (typeof a === "string" && Array.isArray(b)) {
|
|
51
|
+
if (b.every((v) => typeof v === "string") || b.length <= 0) {
|
|
52
|
+
return (0, core_1.unique)([a, ...b]);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
return a ?? b;
|
|
57
|
+
};
|
|
58
|
+
const mergeProps = (a, b) => {
|
|
59
|
+
const merged = { ...a };
|
|
60
|
+
const keys = (0, core_1.unique)([...Object.keys(a), ...Object.keys(b)]);
|
|
61
|
+
for (const k of keys) {
|
|
62
|
+
const valueA = a[k];
|
|
63
|
+
const valueB = b[k];
|
|
64
|
+
merged[k] = mergeProp(valueA, valueB, k);
|
|
65
|
+
}
|
|
66
|
+
return merged;
|
|
67
|
+
};
|
|
68
|
+
exports.mergeProps = mergeProps;
|
|
69
|
+
const forwardProps = (a, b) => {
|
|
70
|
+
const merged = { ...a };
|
|
71
|
+
const keys = (0, core_1.unique)([...Object.keys(a), ...Object.keys(b)]).filter((x) => (0, exports.isForwardedProp)(x));
|
|
72
|
+
for (const k of keys) {
|
|
73
|
+
const valueA = a[k];
|
|
74
|
+
const valueB = b[k];
|
|
75
|
+
merged[k] = mergeProp(valueA, valueB, k);
|
|
76
|
+
}
|
|
77
|
+
return merged;
|
|
78
|
+
};
|
|
79
|
+
exports.forwardProps = forwardProps;
|
|
80
|
+
//# sourceMappingURL=props.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"props.js","sourceRoot":"","sources":["../../src/props.ts"],"names":[],"mappings":";;;AAAA,2CAM0B;AASb,QAAA,eAAe,GAAgB,IAAI,GAAG,CAAC;IAClD,OAAO;IACP,OAAO;IACP,KAAK;IACL,IAAI;CACL,CAAC,CAAC;AAEI,MAAM,eAAe,GAAG,CAAC,GAAW,EAAW,EAAE;IACtD,IAAI,uBAAe,CAAC,GAAG,CAAC,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IAC1C,iBAAiB;IACjB,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IACxD,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AALW,QAAA,eAAe,mBAK1B;AAEF,MAAM,SAAS,GAAG,CAAC,CAAU,EAAE,CAAU,EAAE,GAAW,EAAW,EAAE;IACjE,IAAI,OAAO,CAAC,KAAK,WAAW;QAAE,OAAO,CAAC,CAAC;IACvC,IAAI,OAAO,CAAC,KAAK,WAAW;QAAE,OAAO,CAAC,CAAC;IACvC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,IAAI;QAAE,OAAO,CAAC,CAAC;IACvC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,IAAI;QAAE,OAAO,CAAC,CAAC;IAEvC,IAAI,GAAG,KAAK,UAAU;QAAE,OAAO,CAAC,CAAC;IACjC,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;QACzC,MAAM,CAAC,GAAG,IAAA,aAAM,EAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACvB,OAAO,IAAA,aAAM,EAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;IACzD,CAAC;IACD,IAAI,IAAA,kBAAW,EAAC,CAAC,CAAC,IAAI,IAAA,kBAAW,EAAC,CAAC,CAAC,EAAE,CAAC;QACrC,OAAO,IAAA,cAAO,EAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC;IACzD,CAAC;IACD,IAAI,OAAO,CAAC,KAAK,UAAU,IAAI,OAAO,CAAC,KAAK,UAAU,EAAE,CAAC;QACvD,OAAO,CAAC,GAAG,IAAW,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;IACpE,CAAC;IAED,IAAI,GAAG,KAAK,OAAO,EAAE,CAAC;QACpB,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;YACnD,OAAO,IAAA,aAAM,EAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;QACzC,CAAC;aAAM,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;YACrD,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;gBAC3D,OAAO,IAAA,aAAM,EAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAC3B,CAAC;QACH,CAAC;aAAM,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;YACrD,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;gBAC3D,OAAO,IAAA,aAAM,EAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;YAC3B,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,CAAC,IAAI,CAAC,CAAC;AAChB,CAAC,CAAC;AAEK,MAAM,UAAU,GAAG,CACxB,CAAgB,EAChB,CAAgB,EACD,EAAE;IACjB,MAAM,MAAM,GAAkB,EAAE,GAAG,CAAC,EAAE,CAAC;IAEvC,MAAM,IAAI,GAAG,IAAA,aAAM,EAAC,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAE5D,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;QACrB,MAAM,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACpB,MAAM,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACpB,MAAM,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;IAC3C,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAfW,QAAA,UAAU,cAerB;AAEK,MAAM,YAAY,GAAG,CAC1B,CAAgB,EAChB,CAAgB,EACD,EAAE;IACjB,MAAM,MAAM,GAAkB,EAAE,GAAG,CAAC,EAAE,CAAC;IAEvC,MAAM,IAAI,GAAG,IAAA,aAAM,EAAC,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CACvE,IAAA,uBAAe,EAAC,CAAC,CAAC,CACnB,CAAC;IAEF,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;QACrB,MAAM,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACpB,MAAM,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACpB,MAAM,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;IAC3C,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAjBW,QAAA,YAAY,gBAiBvB"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
export interface Renderer<N> {
|
|
2
|
+
/** Create a native element node for the given tag */
|
|
3
|
+
createElement(tag: string): N;
|
|
4
|
+
/** Create a native text node */
|
|
5
|
+
createText(content: string): N;
|
|
6
|
+
/** Create a native text node */
|
|
7
|
+
createComment(content: string): N;
|
|
8
|
+
/** Create an inert marker node used as anchors for dynamic ranges */
|
|
9
|
+
createMarker(name?: string): N;
|
|
10
|
+
/** Insert `child` before `before` in `parent`, or append if `before` is null */
|
|
11
|
+
insertBefore(parent: N, child: N, before: N | null): void;
|
|
12
|
+
/** Remove `child` from `parent` */
|
|
13
|
+
removeChild(parent: N, child: N): void;
|
|
14
|
+
/** Update a text node's string content */
|
|
15
|
+
setText(node: N, content: string): void;
|
|
16
|
+
/** Set a property or attribute on an element */
|
|
17
|
+
setProp(node: N, key: string, value: unknown): void;
|
|
18
|
+
/** Remove a property or attribute from an element */
|
|
19
|
+
removeProp(node: N, key: string): void;
|
|
20
|
+
/**
|
|
21
|
+
* Move a contiguous range of sibling nodes — from `startMarker` through
|
|
22
|
+
* `endMarker` inclusive, along with everything between them — to immediately
|
|
23
|
+
* before `before` in `parent`. If `before` is null, appends to `parent`.
|
|
24
|
+
*
|
|
25
|
+
* Used by the `list` reconciler to reorder keyed items without unmounting.
|
|
26
|
+
*/
|
|
27
|
+
moveRange(parent: N, startMarker: N, endMarker: N, before: N | null): void;
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=renderer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"renderer.d.ts","sourceRoot":"","sources":["../../src/renderer.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,QAAQ,CAAC,CAAC;IACzB,qDAAqD;IACrD,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,CAAC,CAAC;IAE9B,gCAAgC;IAChC,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,CAAC,CAAC;IAE/B,gCAAgC;IAChC,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,CAAC,CAAC;IAElC,qEAAqE;IACrE,YAAY,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC;IAE/B,gFAAgF;IAChF,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC;IAE1D,mCAAmC;IACnC,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;IAEvC,0CAA0C;IAC1C,OAAO,CAAC,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAExC,gDAAgD;IAChD,OAAO,CAAC,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI,CAAC;IAEpD,qDAAqD;IACrD,UAAU,CAAC,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IAEvC;;;;;;OAMG;IACH,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC;CAC5E"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"renderer.js","sourceRoot":"","sources":["../../src/renderer.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tree-node-like.d.ts","sourceRoot":"","sources":["../../src/tree-node-like.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAExC,MAAM,MAAM,YAAY,GAAG;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,CAAC,aAAa,CAAC,EAAE,IAAI,CAAC;IACtB,KAAK,EAAE,aAAa,CAAC;CACtB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tree-node-like.js","sourceRoot":"","sources":["../../src/tree-node-like.ts"],"names":[],"mappings":";;AAAA,qCAAyC"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { Reference } from "@derivesome/core";
|
|
2
|
+
import { TreeNodeBrand } from "./brands";
|
|
3
|
+
import { TreeNodeProps } from "./props";
|
|
4
|
+
export type TreeNodeFn<T extends TreeNodeProps = TreeNodeProps> = (props: TreeNodeProps & T) => unknown;
|
|
5
|
+
export type Component<T extends TreeNodeProps = TreeNodeProps> = TreeNodeFn<T>;
|
|
6
|
+
export interface TreeNodeBase<Type extends string> {
|
|
7
|
+
type: Type;
|
|
8
|
+
props: TreeNodeProps;
|
|
9
|
+
[TreeNodeBrand]: true;
|
|
10
|
+
}
|
|
11
|
+
export interface TreeNodeElement extends TreeNodeBase<"element"> {
|
|
12
|
+
tag: string;
|
|
13
|
+
children: TreeNode[];
|
|
14
|
+
}
|
|
15
|
+
export interface TreeNodeValue extends TreeNodeBase<"value"> {
|
|
16
|
+
value: unknown;
|
|
17
|
+
}
|
|
18
|
+
export interface TreeNodeVoid extends TreeNodeBase<"void"> {
|
|
19
|
+
}
|
|
20
|
+
export interface TreeNodeFunction<P extends TreeNodeProps = TreeNodeProps> extends TreeNodeBase<"function"> {
|
|
21
|
+
fn: TreeNodeFn<P>;
|
|
22
|
+
}
|
|
23
|
+
export interface TreeNodeList<T = any> extends TreeNodeBase<"list"> {
|
|
24
|
+
props: Omit<TreeNodeProps, "children"> & {
|
|
25
|
+
children: Reference<T[]>;
|
|
26
|
+
};
|
|
27
|
+
items: Reference<TreeNode[]>;
|
|
28
|
+
map: (item: T, idx: number) => TreeNode;
|
|
29
|
+
}
|
|
30
|
+
export type TreeNode = TreeNodeElement | TreeNodeValue | TreeNodeVoid | TreeNodeFunction | TreeNodeList;
|
|
31
|
+
export declare function isTreeNode(x: unknown): x is TreeNode;
|
|
32
|
+
export declare namespace tn {
|
|
33
|
+
function none(): TreeNodeVoid;
|
|
34
|
+
function list<T>(items: Reference<T[]> | T[], map?: (item: T, idx: number) => TreeNode): TreeNodeList;
|
|
35
|
+
function value(v: unknown): TreeNodeValue;
|
|
36
|
+
function element(tag: string, props: TreeNodeProps): TreeNodeElement;
|
|
37
|
+
function fn(fun: TreeNodeFn, props?: TreeNodeProps): TreeNodeFunction;
|
|
38
|
+
}
|
|
39
|
+
export declare namespace tnu {
|
|
40
|
+
const normalizeOne: (x: unknown) => TreeNode;
|
|
41
|
+
const normalizeChildren: (x: unknown) => TreeNode[];
|
|
42
|
+
const assertGetKey: (x: TreeNode) => string | number;
|
|
43
|
+
}
|
|
44
|
+
export declare function createNode(tag: string, props?: TreeNodeProps | null, ...children: unknown[]): TreeNodeElement;
|
|
45
|
+
export declare function createNode<P extends TreeNodeProps>(tag: TreeNodeFn<P>, props?: P | null, ...children: unknown[]): TreeNodeFunction;
|
|
46
|
+
//# sourceMappingURL=tree.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tree.d.ts","sourceRoot":"","sources":["../../src/tree.ts"],"names":[],"mappings":"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"}
|