oxiui-lib 0.2.20 → 0.2.21
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/core/elements/OxiComponent.js +1 -8
- package/dist/core/elements/OxiStateFull.d.ts +7 -20
- package/dist/core/elements/OxiStateFull.js +31 -4
- package/dist/core/scheduler.d.ts +1 -2
- package/dist/core/scheduler.js +13 -12
- package/package.json +1 -1
- package/src/core/elements/OxiComponent.ts +1 -8
- package/src/core/elements/OxiStateFull.ts +17 -2
- package/src/core/scheduler.ts +14 -15
|
@@ -24,17 +24,10 @@ class OxiComponent {
|
|
|
24
24
|
const position = parent ? parent.down.length : 0;
|
|
25
25
|
this.index = parent ? `${parent.index}.${position}` : "0";
|
|
26
26
|
parent === null || parent === void 0 ? void 0 : parent.down.push(this);
|
|
27
|
-
if (this.view)
|
|
28
|
-
this.body();
|
|
29
27
|
}
|
|
30
28
|
body(fn) {
|
|
31
29
|
(0, tree_js_1.open)(this);
|
|
32
|
-
|
|
33
|
-
this.view();
|
|
34
|
-
}
|
|
35
|
-
else {
|
|
36
|
-
fn === null || fn === void 0 ? void 0 : fn(this);
|
|
37
|
-
}
|
|
30
|
+
fn === null || fn === void 0 ? void 0 : fn(this);
|
|
38
31
|
(0, tree_js_1.close)();
|
|
39
32
|
return this;
|
|
40
33
|
}
|
|
@@ -1,21 +1,8 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
cursors: Set<string>;
|
|
9
|
-
index: string;
|
|
10
|
-
view?: (() => void) | undefined;
|
|
11
|
-
body(fn?: ((component: /*elided*/ any) => void) | undefined): /*elided*/ any;
|
|
12
|
-
onAppear(fn: (component: /*elided*/ any) => void): /*elided*/ any;
|
|
13
|
-
withProps<T extends Partial<import("../types/html.js").CommonProps>>(newProps: T): /*elided*/ any;
|
|
14
|
-
withStyle(style: Partial<CSSStyleDeclaration>): /*elided*/ any;
|
|
15
|
-
withExtension(extension: (component: /*elided*/ any) => void): /*elided*/ any;
|
|
16
|
-
withState(): /*elided*/ any;
|
|
17
|
-
};
|
|
18
|
-
};
|
|
19
|
-
export declare class ContainerState extends ContainerState_base {
|
|
1
|
+
import { VRow } from "./VRow.js";
|
|
2
|
+
export declare class OxiView extends VRow {
|
|
3
|
+
#private;
|
|
4
|
+
onInit?: boolean | undefined;
|
|
5
|
+
constructor(onInit?: boolean | undefined);
|
|
6
|
+
View(): void;
|
|
7
|
+
body(): this;
|
|
20
8
|
}
|
|
21
|
-
export {};
|
|
@@ -1,7 +1,34 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
|
3
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
|
4
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
5
|
+
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
6
|
+
};
|
|
7
|
+
var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
|
|
8
|
+
if (kind === "m") throw new TypeError("Private method is not writable");
|
|
9
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
|
|
10
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
|
|
11
|
+
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
|
|
12
|
+
};
|
|
13
|
+
var _OxiView_$rendered;
|
|
2
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
4
|
-
const
|
|
5
|
-
class
|
|
15
|
+
exports.OxiView = void 0;
|
|
16
|
+
const VRow_js_1 = require("./VRow.js");
|
|
17
|
+
class OxiView extends VRow_js_1.VRow {
|
|
18
|
+
constructor(onInit) {
|
|
19
|
+
super();
|
|
20
|
+
this.onInit = onInit;
|
|
21
|
+
_OxiView_$rendered.set(this, false);
|
|
22
|
+
this.body();
|
|
23
|
+
}
|
|
24
|
+
View() { }
|
|
25
|
+
body() {
|
|
26
|
+
if (!__classPrivateFieldGet(this, _OxiView_$rendered, "f")) {
|
|
27
|
+
__classPrivateFieldSet(this, _OxiView_$rendered, true, "f");
|
|
28
|
+
return super.body(() => this.View());
|
|
29
|
+
}
|
|
30
|
+
return this;
|
|
31
|
+
}
|
|
6
32
|
}
|
|
7
|
-
exports.
|
|
33
|
+
exports.OxiView = OxiView;
|
|
34
|
+
_OxiView_$rendered = new WeakMap();
|
package/dist/core/scheduler.d.ts
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
import type { ContainerState } from "./elements";
|
|
2
1
|
import type { IComponent } from "./types/component";
|
|
3
2
|
import type { IntrinsicElements } from "./types/html";
|
|
4
3
|
type RenderCallback = (stateId: string, readers: Set<string>, root: IComponent<keyof IntrinsicElements>) => void;
|
|
5
|
-
export declare function initScheduler(App:
|
|
4
|
+
export declare function initScheduler(App: () => IComponent<keyof IntrinsicElements>, renderer: RenderCallback): void;
|
|
6
5
|
export declare function scheduleEffect(fn: () => void): void;
|
|
7
6
|
export declare function rerender(stateId: string, readers: Set<string>): void;
|
|
8
7
|
export declare function startImmediateMode(): void;
|
package/dist/core/scheduler.js
CHANGED
|
@@ -8,15 +8,16 @@ exports.stopImmediateMode = stopImmediateMode;
|
|
|
8
8
|
const renderer_1 = require("./renderer");
|
|
9
9
|
let running = false;
|
|
10
10
|
let app = null;
|
|
11
|
+
let root = null;
|
|
11
12
|
let renderCallback = null;
|
|
12
13
|
const postRenderQueue = [];
|
|
13
14
|
const resetTree = () => {
|
|
14
|
-
if (
|
|
15
|
-
|
|
16
|
-
|
|
15
|
+
if (!root)
|
|
16
|
+
return;
|
|
17
|
+
root.down = [];
|
|
17
18
|
};
|
|
18
19
|
function initScheduler(App, renderer) {
|
|
19
|
-
app =
|
|
20
|
+
app = App;
|
|
20
21
|
renderCallback = renderer;
|
|
21
22
|
performRender("", new Set());
|
|
22
23
|
}
|
|
@@ -46,22 +47,22 @@ function performRender(stateId, readers) {
|
|
|
46
47
|
if (!app || !renderCallback)
|
|
47
48
|
return;
|
|
48
49
|
console.clear();
|
|
49
|
-
app
|
|
50
|
-
renderCallback(stateId, readers,
|
|
50
|
+
root = app();
|
|
51
|
+
renderCallback(stateId, readers, root);
|
|
51
52
|
postRenderQueue.forEach((fn) => {
|
|
52
53
|
fn();
|
|
53
54
|
});
|
|
54
55
|
postRenderQueue.length = 0;
|
|
55
|
-
clearCursors(
|
|
56
|
+
clearCursors(root);
|
|
56
57
|
}
|
|
57
58
|
function rerender(stateId, readers) {
|
|
58
|
-
if (!renderCallback || !app)
|
|
59
|
+
if (!renderCallback || !app || !root)
|
|
59
60
|
return;
|
|
60
61
|
if (running)
|
|
61
62
|
return;
|
|
62
63
|
const validComponents = new Set();
|
|
63
64
|
readers.forEach((id) => {
|
|
64
|
-
if (findByIndex(
|
|
65
|
+
if (findByIndex(root, id)) {
|
|
65
66
|
validComponents.add(id);
|
|
66
67
|
}
|
|
67
68
|
});
|
|
@@ -86,13 +87,13 @@ function startImmediateMode() {
|
|
|
86
87
|
return;
|
|
87
88
|
resetTree();
|
|
88
89
|
(0, renderer_1.resetCursor)();
|
|
89
|
-
app
|
|
90
|
-
renderCallback === null || renderCallback === void 0 ? void 0 : renderCallback("", new Set(),
|
|
90
|
+
root = app();
|
|
91
|
+
renderCallback === null || renderCallback === void 0 ? void 0 : renderCallback("", new Set(), root);
|
|
91
92
|
postRenderQueue.forEach((fn) => {
|
|
92
93
|
fn();
|
|
93
94
|
});
|
|
94
95
|
postRenderQueue.length = 0;
|
|
95
|
-
clearCursors(
|
|
96
|
+
clearCursors(root);
|
|
96
97
|
frameId = requestAnimationFrame(loop);
|
|
97
98
|
};
|
|
98
99
|
frameId = requestAnimationFrame(loop);
|
package/package.json
CHANGED
|
@@ -27,18 +27,11 @@ export class OxiComponent<K extends keyof IntrinsicElements>
|
|
|
27
27
|
this.index = parent ? `${parent.index}.${position}` : "0";
|
|
28
28
|
|
|
29
29
|
parent?.down.push(this as IComponent<K>);
|
|
30
|
-
if (this.view) this.body();
|
|
31
30
|
}
|
|
32
31
|
|
|
33
32
|
body(fn?: (component: this) => void) {
|
|
34
33
|
open(this);
|
|
35
|
-
|
|
36
|
-
if (this.view) {
|
|
37
|
-
this.view();
|
|
38
|
-
} else {
|
|
39
|
-
fn?.(this);
|
|
40
|
-
}
|
|
41
|
-
|
|
34
|
+
fn?.(this);
|
|
42
35
|
close();
|
|
43
36
|
return this;
|
|
44
37
|
}
|
|
@@ -1,3 +1,18 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { VRow } from "./VRow.js";
|
|
2
2
|
|
|
3
|
-
export class
|
|
3
|
+
export class OxiView extends VRow {
|
|
4
|
+
#$rendered = false;
|
|
5
|
+
constructor(public onInit?: boolean) {
|
|
6
|
+
super();
|
|
7
|
+
this.body();
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
View() {}
|
|
11
|
+
override body() {
|
|
12
|
+
if (!this.#$rendered) {
|
|
13
|
+
this.#$rendered = true;
|
|
14
|
+
return super.body(() => this.View());
|
|
15
|
+
}
|
|
16
|
+
return this;
|
|
17
|
+
}
|
|
18
|
+
}
|
package/src/core/scheduler.ts
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import type { ContainerState } from "./elements";
|
|
2
1
|
import { resetCursor } from "./renderer";
|
|
3
2
|
import type { IComponent } from "./types/component";
|
|
4
3
|
import type { IntrinsicElements } from "./types/html";
|
|
@@ -10,20 +9,20 @@ type RenderCallback = (
|
|
|
10
9
|
) => void;
|
|
11
10
|
|
|
12
11
|
let running = false;
|
|
13
|
-
let app:
|
|
12
|
+
let app: (() => IComponent<keyof IntrinsicElements>) | null = null;
|
|
13
|
+
let root: IComponent<keyof IntrinsicElements> | null = null;
|
|
14
14
|
let renderCallback: RenderCallback | null = null;
|
|
15
15
|
const postRenderQueue: (() => void)[] = [];
|
|
16
16
|
const resetTree = () => {
|
|
17
|
-
if (
|
|
18
|
-
|
|
19
|
-
}
|
|
17
|
+
if (!root) return;
|
|
18
|
+
root.down = [];
|
|
20
19
|
};
|
|
21
20
|
|
|
22
21
|
export function initScheduler(
|
|
23
|
-
App:
|
|
22
|
+
App: () => IComponent<keyof IntrinsicElements>,
|
|
24
23
|
renderer: RenderCallback,
|
|
25
24
|
) {
|
|
26
|
-
app =
|
|
25
|
+
app = App;
|
|
27
26
|
renderCallback = renderer;
|
|
28
27
|
performRender("", new Set());
|
|
29
28
|
}
|
|
@@ -59,23 +58,23 @@ function clearCursors(node?: IComponent<keyof IntrinsicElements>) {
|
|
|
59
58
|
function performRender(stateId: string, readers: Set<string>) {
|
|
60
59
|
if (!app || !renderCallback) return;
|
|
61
60
|
console.clear();
|
|
62
|
-
app
|
|
63
|
-
renderCallback(stateId, readers,
|
|
61
|
+
root = app();
|
|
62
|
+
renderCallback(stateId, readers, root);
|
|
64
63
|
postRenderQueue.forEach((fn) => {
|
|
65
64
|
fn();
|
|
66
65
|
});
|
|
67
66
|
postRenderQueue.length = 0;
|
|
68
|
-
clearCursors(
|
|
67
|
+
clearCursors(root);
|
|
69
68
|
}
|
|
70
69
|
|
|
71
70
|
export function rerender(stateId: string, readers: Set<string>) {
|
|
72
|
-
if (!renderCallback || !app) return;
|
|
71
|
+
if (!renderCallback || !app || !root) return;
|
|
73
72
|
if (running) return;
|
|
74
73
|
|
|
75
74
|
const validComponents: Set<string> = new Set();
|
|
76
75
|
|
|
77
76
|
readers.forEach((id) => {
|
|
78
|
-
if (findByIndex(
|
|
77
|
+
if (findByIndex(root as IComponent<keyof IntrinsicElements>, id)) {
|
|
79
78
|
validComponents.add(id);
|
|
80
79
|
}
|
|
81
80
|
});
|
|
@@ -104,13 +103,13 @@ export function startImmediateMode() {
|
|
|
104
103
|
|
|
105
104
|
resetTree();
|
|
106
105
|
resetCursor();
|
|
107
|
-
app
|
|
108
|
-
renderCallback?.("", new Set(),
|
|
106
|
+
root = app();
|
|
107
|
+
renderCallback?.("", new Set(), root);
|
|
109
108
|
postRenderQueue.forEach((fn) => {
|
|
110
109
|
fn();
|
|
111
110
|
});
|
|
112
111
|
postRenderQueue.length = 0;
|
|
113
|
-
clearCursors(
|
|
112
|
+
clearCursors(root);
|
|
114
113
|
frameId = requestAnimationFrame(loop);
|
|
115
114
|
};
|
|
116
115
|
|