oxiui-lib 0.2.20 → 0.2.22
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 +2 -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 +19 -18
|
@@ -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,8 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { OxiView } from "./elements";
|
|
2
2
|
import type { IComponent } from "./types/component";
|
|
3
3
|
import type { IntrinsicElements } from "./types/html";
|
|
4
4
|
type RenderCallback = (stateId: string, readers: Set<string>, root: IComponent<keyof IntrinsicElements>) => void;
|
|
5
|
-
export declare function initScheduler(App:
|
|
5
|
+
export declare function initScheduler(App: () => OxiView, renderer: RenderCallback): void;
|
|
6
6
|
export declare function scheduleEffect(fn: () => void): void;
|
|
7
7
|
export declare function rerender(stateId: string, readers: Set<string>): void;
|
|
8
8
|
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,4 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { OxiView } from "./elements";
|
|
2
2
|
import { resetCursor } from "./renderer";
|
|
3
3
|
import type { IComponent } from "./types/component";
|
|
4
4
|
import type { IntrinsicElements } from "./types/html";
|
|
@@ -10,20 +10,17 @@ type RenderCallback = (
|
|
|
10
10
|
) => void;
|
|
11
11
|
|
|
12
12
|
let running = false;
|
|
13
|
-
let app:
|
|
13
|
+
let app: (() => OxiView) | null = null;
|
|
14
|
+
let root: OxiView | null = null;
|
|
14
15
|
let renderCallback: RenderCallback | null = null;
|
|
15
16
|
const postRenderQueue: (() => void)[] = [];
|
|
16
17
|
const resetTree = () => {
|
|
17
|
-
if (
|
|
18
|
-
|
|
19
|
-
}
|
|
18
|
+
if (!root) return;
|
|
19
|
+
root.down = [];
|
|
20
20
|
};
|
|
21
21
|
|
|
22
|
-
export function initScheduler(
|
|
23
|
-
|
|
24
|
-
renderer: RenderCallback,
|
|
25
|
-
) {
|
|
26
|
-
app = new App();
|
|
22
|
+
export function initScheduler(App: () => OxiView, renderer: RenderCallback) {
|
|
23
|
+
app = App;
|
|
27
24
|
renderCallback = renderer;
|
|
28
25
|
performRender("", new Set());
|
|
29
26
|
}
|
|
@@ -59,23 +56,23 @@ function clearCursors(node?: IComponent<keyof IntrinsicElements>) {
|
|
|
59
56
|
function performRender(stateId: string, readers: Set<string>) {
|
|
60
57
|
if (!app || !renderCallback) return;
|
|
61
58
|
console.clear();
|
|
62
|
-
app
|
|
63
|
-
renderCallback(stateId, readers,
|
|
59
|
+
root = app();
|
|
60
|
+
renderCallback(stateId, readers, root as IComponent<keyof IntrinsicElements>);
|
|
64
61
|
postRenderQueue.forEach((fn) => {
|
|
65
62
|
fn();
|
|
66
63
|
});
|
|
67
64
|
postRenderQueue.length = 0;
|
|
68
|
-
clearCursors(
|
|
65
|
+
clearCursors(root as IComponent<keyof IntrinsicElements>);
|
|
69
66
|
}
|
|
70
67
|
|
|
71
68
|
export function rerender(stateId: string, readers: Set<string>) {
|
|
72
|
-
if (!renderCallback || !app) return;
|
|
69
|
+
if (!renderCallback || !app || !root) return;
|
|
73
70
|
if (running) return;
|
|
74
71
|
|
|
75
72
|
const validComponents: Set<string> = new Set();
|
|
76
73
|
|
|
77
74
|
readers.forEach((id) => {
|
|
78
|
-
if (findByIndex(
|
|
75
|
+
if (findByIndex(root as IComponent<keyof IntrinsicElements>, id)) {
|
|
79
76
|
validComponents.add(id);
|
|
80
77
|
}
|
|
81
78
|
});
|
|
@@ -104,13 +101,17 @@ export function startImmediateMode() {
|
|
|
104
101
|
|
|
105
102
|
resetTree();
|
|
106
103
|
resetCursor();
|
|
107
|
-
app
|
|
108
|
-
renderCallback?.(
|
|
104
|
+
root = app();
|
|
105
|
+
renderCallback?.(
|
|
106
|
+
"",
|
|
107
|
+
new Set(),
|
|
108
|
+
root as IComponent<keyof IntrinsicElements>,
|
|
109
|
+
);
|
|
109
110
|
postRenderQueue.forEach((fn) => {
|
|
110
111
|
fn();
|
|
111
112
|
});
|
|
112
113
|
postRenderQueue.length = 0;
|
|
113
|
-
clearCursors(
|
|
114
|
+
clearCursors(root as IComponent<keyof IntrinsicElements>);
|
|
114
115
|
frameId = requestAnimationFrame(loop);
|
|
115
116
|
};
|
|
116
117
|
|