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.
@@ -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,8 @@
1
- import type { ContainerState } from "./elements";
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: new () => ContainerState, renderer: RenderCallback): void;
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;
@@ -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.22",
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,4 @@
1
- import type { ContainerState } from "./elements";
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: ContainerState | null = null;
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 (app?.down) {
18
- app.down = [];
19
- }
18
+ if (!root) return;
19
+ root.down = [];
20
20
  };
21
21
 
22
- export function initScheduler(
23
- App: new () => ContainerState,
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.body();
63
- renderCallback(stateId, readers, app as IComponent<keyof IntrinsicElements>);
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(app as IComponent<keyof IntrinsicElements>);
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(app as IComponent<keyof IntrinsicElements>, id)) {
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.body();
108
- renderCallback?.("", new Set(), app as IComponent<keyof IntrinsicElements>);
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(app as IComponent<keyof IntrinsicElements>);
114
+ clearCursors(root as IComponent<keyof IntrinsicElements>);
114
115
  frameId = requestAnimationFrame(loop);
115
116
  };
116
117