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.
@@ -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
- if (this.view) {
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
- declare const ContainerState_base: {
2
- new (props?: import("../types/html.js").CommonProps | undefined): {
3
- "__#private@#__states": Map<string | symbol, import("../signals.js").Signal<unknown>>;
4
- type: "div";
5
- props: import("../types/html.js").CommonProps;
6
- up?: import("../types/component.js").IComponent<keyof import("../types/html.js").IntrinsicElements>;
7
- down: import("../types/component.js").IComponent<keyof import("../types/html.js").IntrinsicElements>[];
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.ContainerState = void 0;
4
- const OxiComponent_js_1 = require("./OxiComponent.js");
5
- class ContainerState extends (0, OxiComponent_js_1.intrinsicState)("div") {
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.ContainerState = ContainerState;
33
+ exports.OxiView = OxiView;
34
+ _OxiView_$rendered = new WeakMap();
@@ -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: new () => ContainerState, renderer: RenderCallback): void;
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;
@@ -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 (app === null || app === void 0 ? void 0 : app.down) {
15
- app.down = [];
16
- }
15
+ if (!root)
16
+ return;
17
+ root.down = [];
17
18
  };
18
19
  function initScheduler(App, renderer) {
19
- app = new 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.body();
50
- renderCallback(stateId, readers, app);
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(app);
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(app, id)) {
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.body();
90
- renderCallback === null || renderCallback === void 0 ? void 0 : renderCallback("", new Set(), app);
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(app);
96
+ clearCursors(root);
96
97
  frameId = requestAnimationFrame(loop);
97
98
  };
98
99
  frameId = requestAnimationFrame(loop);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "oxiui-lib",
3
- "version": "0.2.20",
3
+ "version": "0.2.21",
4
4
  "module": "src/index.ts",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -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 { intrinsicState } from "./OxiComponent.js";
1
+ import { VRow } from "./VRow.js";
2
2
 
3
- export class ContainerState extends intrinsicState("div") {}
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
+ }
@@ -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: ContainerState | null = null;
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 (app?.down) {
18
- app.down = [];
19
- }
17
+ if (!root) return;
18
+ root.down = [];
20
19
  };
21
20
 
22
21
  export function initScheduler(
23
- App: new () => ContainerState,
22
+ App: () => IComponent<keyof IntrinsicElements>,
24
23
  renderer: RenderCallback,
25
24
  ) {
26
- app = new 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.body();
63
- renderCallback(stateId, readers, app as IComponent<keyof IntrinsicElements>);
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(app as IComponent<keyof IntrinsicElements>);
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(app as IComponent<keyof IntrinsicElements>, id)) {
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.body();
108
- renderCallback?.("", new Set(), app as IComponent<keyof IntrinsicElements>);
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(app as IComponent<keyof IntrinsicElements>);
112
+ clearCursors(root);
114
113
  frameId = requestAnimationFrame(loop);
115
114
  };
116
115