@siddh-dev/fabric 0.1.0

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.
Files changed (51) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +430 -0
  3. package/dist/core/component/ComponentInstance.d.ts +2 -0
  4. package/dist/core/component/ComponentInstance.js +15 -0
  5. package/dist/core/component/ComponentInstance.js.map +1 -0
  6. package/dist/core/component/ComponentRuntime.d.ts +3 -0
  7. package/dist/core/component/ComponentRuntime.js +19 -0
  8. package/dist/core/component/ComponentRuntime.js.map +1 -0
  9. package/dist/core/hooks/HookRuntime.d.ts +3 -0
  10. package/dist/core/hooks/HookRuntime.js +11 -0
  11. package/dist/core/hooks/HookRuntime.js.map +1 -0
  12. package/dist/core/hooks/useEffect.d.ts +4 -0
  13. package/dist/core/hooks/useEffect.js +68 -0
  14. package/dist/core/hooks/useEffect.js.map +1 -0
  15. package/dist/core/hooks/useState.d.ts +7 -0
  16. package/dist/core/hooks/useState.js +35 -0
  17. package/dist/core/hooks/useState.js.map +1 -0
  18. package/dist/core/jsx/jsx-dev-runtime.d.ts +2 -0
  19. package/dist/core/jsx/jsx-dev-runtime.js +5 -0
  20. package/dist/core/jsx/jsx-dev-runtime.js.map +1 -0
  21. package/dist/core/jsx/jsx-runtime.d.ts +3 -0
  22. package/dist/core/jsx/jsx-runtime.js +8 -0
  23. package/dist/core/jsx/jsx-runtime.js.map +1 -0
  24. package/dist/core/jsx/jsx.d.ts +68 -0
  25. package/dist/core/jsx/jsx.js +46 -0
  26. package/dist/core/jsx/jsx.js.map +1 -0
  27. package/dist/core/scheduler/Scheduler.d.ts +3 -0
  28. package/dist/core/scheduler/Scheduler.js +21 -0
  29. package/dist/core/scheduler/Scheduler.js.map +1 -0
  30. package/dist/core/vnode/VNode.d.ts +34 -0
  31. package/dist/core/vnode/VNode.js +24 -0
  32. package/dist/core/vnode/VNode.js.map +1 -0
  33. package/dist/core/vnode/createElement.d.ts +2 -0
  34. package/dist/core/vnode/createElement.js +5 -0
  35. package/dist/core/vnode/createElement.js.map +1 -0
  36. package/dist/dom/DOMProperties.d.ts +2 -0
  37. package/dist/dom/DOMProperties.js +46 -0
  38. package/dist/dom/DOMProperties.js.map +1 -0
  39. package/dist/dom/EventSystem.d.ts +7 -0
  40. package/dist/dom/EventSystem.js +53 -0
  41. package/dist/dom/EventSystem.js.map +1 -0
  42. package/dist/dom/Reconciler.d.ts +20 -0
  43. package/dist/dom/Reconciler.js +326 -0
  44. package/dist/dom/Reconciler.js.map +1 -0
  45. package/dist/index.d.ts +6 -0
  46. package/dist/index.js +6 -0
  47. package/dist/index.js.map +1 -0
  48. package/dist/runtime/createRoot.d.ts +6 -0
  49. package/dist/runtime/createRoot.js +25 -0
  50. package/dist/runtime/createRoot.js.map +1 -0
  51. package/package.json +56 -0
@@ -0,0 +1,68 @@
1
+ import { VNode } from "../vnode/VNode.js";
2
+ import type { IProps, TVNodeChild, TVNodeType } from "../vnode/VNode.js";
3
+ interface IJSXEventProps {
4
+ onClick?: (event: MouseEvent) => void;
5
+ onDblClick?: (event: MouseEvent) => void;
6
+ onMouseDown?: (event: MouseEvent) => void;
7
+ onMouseUp?: (event: MouseEvent) => void;
8
+ onMouseMove?: (event: MouseEvent) => void;
9
+ onMouseEnter?: (event: MouseEvent) => void;
10
+ onMouseLeave?: (event: MouseEvent) => void;
11
+ onInput?: (event: Event) => void;
12
+ onChange?: (event: Event) => void;
13
+ onSubmit?: (event: SubmitEvent) => void;
14
+ onKeyDown?: (event: KeyboardEvent) => void;
15
+ onKeyUp?: (event: KeyboardEvent) => void;
16
+ onFocus?: (event: FocusEvent) => void;
17
+ onBlur?: (event: FocusEvent) => void;
18
+ }
19
+ interface IJSXElementProps extends IJSXEventProps {
20
+ [property: string]: unknown;
21
+ }
22
+ interface IJSXButtonProps extends IJSXElementProps {
23
+ onClick?: (event: MouseEvent) => void;
24
+ }
25
+ interface IJSXInputProps extends IJSXElementProps {
26
+ onInput?: (event: Event) => void;
27
+ onChange?: (event: Event) => void;
28
+ onKeyDown?: (event: KeyboardEvent) => void;
29
+ onKeyUp?: (event: KeyboardEvent) => void;
30
+ }
31
+ interface IJSXFormProps extends IJSXElementProps {
32
+ onSubmit?: (event: SubmitEvent) => void;
33
+ }
34
+ declare global {
35
+ namespace JSX {
36
+ interface Element extends VNode {
37
+ }
38
+ interface IntrinsicElements {
39
+ button: IJSXButtonProps;
40
+ input: IJSXInputProps;
41
+ form: IJSXFormProps;
42
+ div: IJSXElementProps;
43
+ span: IJSXElementProps;
44
+ p: IJSXElementProps;
45
+ strong: IJSXElementProps;
46
+ br: IJSXElementProps;
47
+ hr: IJSXElementProps;
48
+ h1: IJSXElementProps;
49
+ h2: IJSXElementProps;
50
+ h3: IJSXElementProps;
51
+ h4: IJSXElementProps;
52
+ h5: IJSXElementProps;
53
+ h6: IJSXElementProps;
54
+ ul: IJSXElementProps;
55
+ ol: IJSXElementProps;
56
+ li: IJSXElementProps;
57
+ section: IJSXElementProps;
58
+ main: IJSXElementProps;
59
+ label: IJSXElementProps;
60
+ textarea: IJSXInputProps;
61
+ select: IJSXInputProps;
62
+ option: IJSXElementProps;
63
+ }
64
+ }
65
+ }
66
+ export declare function jsx(type: TVNodeType, props: IProps | null, ...children: TVNodeChild[]): VNode;
67
+ export declare function createAutomaticJSXVNode(type: TVNodeType, props: IProps | null): VNode;
68
+ export {};
@@ -0,0 +1,46 @@
1
+ import { createElement } from "../vnode/createElement.js";
2
+ import { VNode } from "../vnode/VNode.js";
3
+ function getChildren(props) {
4
+ if (props === null ||
5
+ !("children" in props)) {
6
+ return [];
7
+ }
8
+ const children = props.children;
9
+ if (Array.isArray(children)) {
10
+ return children.filter((child) => typeof child === "string" ||
11
+ typeof child === "number" ||
12
+ child instanceof VNode);
13
+ }
14
+ if (typeof children === "string" ||
15
+ typeof children === "number" ||
16
+ children instanceof VNode) {
17
+ return [children];
18
+ }
19
+ return [];
20
+ }
21
+ function createJSXVNode(type, props) {
22
+ const children = getChildren(props);
23
+ const nextProps = props === null
24
+ ? null
25
+ : { ...props };
26
+ if (nextProps !== null) {
27
+ delete nextProps.children;
28
+ }
29
+ return createElement(type, nextProps, ...children);
30
+ }
31
+ /*
32
+ * Classic JSX API
33
+ *
34
+ * Used when JSX is transformed through
35
+ * the classic jsxFactory configuration.
36
+ */
37
+ export function jsx(type, props, ...children) {
38
+ return createElement(type, props, ...children);
39
+ }
40
+ /*
41
+ * Automatic JSX runtime implementation.
42
+ */
43
+ export function createAutomaticJSXVNode(type, props) {
44
+ return createJSXVNode(type, props);
45
+ }
46
+ //# sourceMappingURL=jsx.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jsx.js","sourceRoot":"","sources":["../../../src/core/jsx/jsx.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,aAAa,EAChB,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EACH,KAAK,EACR,MAAM,mBAAmB,CAAC;AAgK3B,SAAS,WAAW,CAChB,KAAoB;IAEpB,IACI,KAAK,KAAK,IAAI;QACd,CAAC,CAAC,UAAU,IAAI,KAAK,CAAC,EACxB,CAAC;QACC,OAAO,EAAE,CAAC;IACd,CAAC;IAED,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;IAEhC,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC1B,OAAO,QAAQ,CAAC,MAAM,CAClB,CACI,KAAK,EACe,EAAE,CACtB,OAAO,KAAK,KAAK,QAAQ;YACzB,OAAO,KAAK,KAAK,QAAQ;YACzB,KAAK,YAAY,KAAK,CAC7B,CAAC;IACN,CAAC;IAED,IACI,OAAO,QAAQ,KAAK,QAAQ;QAC5B,OAAO,QAAQ,KAAK,QAAQ;QAC5B,QAAQ,YAAY,KAAK,EAC3B,CAAC;QACC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACtB,CAAC;IAED,OAAO,EAAE,CAAC;AACd,CAAC;AAED,SAAS,cAAc,CACnB,IAAgB,EAChB,KAAoB;IAEpB,MAAM,QAAQ,GACV,WAAW,CAAC,KAAK,CAAC,CAAC;IAEvB,MAAM,SAAS,GACX,KAAK,KAAK,IAAI;QACV,CAAC,CAAC,IAAI;QACN,CAAC,CAAC,EAAC,GAAG,KAAK,EAAC,CAAC;IAErB,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;QACrB,OAAO,SAAS,CAAC,QAAQ,CAAC;IAC9B,CAAC;IAED,OAAO,aAAa,CAChB,IAAI,EACJ,SAAS,EACT,GAAG,QAAQ,CACd,CAAC;AACN,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,GAAG,CACf,IAAgB,EAChB,KAAoB,EACpB,GAAG,QAAuB;IAE1B,OAAO,aAAa,CAChB,IAAI,EACJ,KAAK,EACL,GAAG,QAAQ,CACd,CAAC;AACN,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,uBAAuB,CACnC,IAAgB,EAChB,KAAoB;IAEpB,OAAO,cAAc,CACjB,IAAI,EACJ,KAAK,CACR,CAAC;AACN,CAAC"}
@@ -0,0 +1,3 @@
1
+ type TUpdate = () => void;
2
+ export declare function scheduleUpdate(update: TUpdate): void;
3
+ export {};
@@ -0,0 +1,21 @@
1
+ const updateQueue = new Set();
2
+ let scheduled = false;
3
+ export function scheduleUpdate(update) {
4
+ updateQueue.add(update);
5
+ if (scheduled) {
6
+ return;
7
+ }
8
+ scheduled =
9
+ true;
10
+ queueMicrotask(flushUpdates);
11
+ }
12
+ function flushUpdates() {
13
+ scheduled =
14
+ false;
15
+ const updates = Array.from(updateQueue);
16
+ updateQueue.clear();
17
+ for (const update of updates) {
18
+ update();
19
+ }
20
+ }
21
+ //# sourceMappingURL=Scheduler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Scheduler.js","sourceRoot":"","sources":["../../../src/core/scheduler/Scheduler.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,GACb,IAAI,GAAG,EAAW,CAAC;AAEvB,IAAI,SAAS,GACT,KAAK,CAAC;AAEV,MAAM,UAAU,cAAc,CAC1B,MAAe;IAEf,WAAW,CAAC,GAAG,CACX,MAAM,CACT,CAAC;IAEF,IACI,SAAS,EACX,CAAC;QACC,OAAO;IACX,CAAC;IAED,SAAS;QACL,IAAI,CAAC;IAET,cAAc,CACV,YAAY,CACf,CAAC;AACN,CAAC;AAED,SAAS,YAAY;IACjB,SAAS;QACL,KAAK,CAAC;IAEV,MAAM,OAAO,GACT,KAAK,CAAC,IAAI,CACN,WAAW,CACd,CAAC;IAEN,WAAW,CAAC,KAAK,EAAE,CAAC;IAEpB,KACI,MAAM,MAAM,IACT,OAAO,EACR,CAAC;QACH,MAAM,EAAE,CAAC;IACb,CAAC;AACL,CAAC"}
@@ -0,0 +1,34 @@
1
+ export interface IProps {
2
+ [key: string]: unknown;
3
+ }
4
+ export type TVNodeChild = string | number | VNode;
5
+ export type TComponentFunction = (props: IProps) => VNode;
6
+ export type TVNodeType = string | TComponentFunction;
7
+ export interface IEffectRecord {
8
+ callback: () => void | (() => void);
9
+ dependencies: readonly unknown[] | undefined;
10
+ previousDependencies: readonly unknown[] | undefined;
11
+ cleanup: (() => void) | null;
12
+ }
13
+ export interface IComponentInstance {
14
+ component: TComponentFunction;
15
+ props: IProps;
16
+ states: unknown[];
17
+ stateIndex: number;
18
+ effects: IEffectRecord[];
19
+ effectIndex: number;
20
+ renderedVNode: VNode | null;
21
+ dom: Node | null;
22
+ mounted: boolean;
23
+ update: (() => void) | null;
24
+ }
25
+ export declare class VNode {
26
+ readonly type: TVNodeType;
27
+ readonly props: IProps;
28
+ readonly children: TVNodeChild[];
29
+ readonly key: string | number | null;
30
+ instance: IComponentInstance | null;
31
+ dom: Node | null;
32
+ normalizedChildren: VNode[] | null;
33
+ constructor(type: TVNodeType, props?: IProps, children?: TVNodeChild[]);
34
+ }
@@ -0,0 +1,24 @@
1
+ export class VNode {
2
+ type;
3
+ props;
4
+ children;
5
+ key;
6
+ instance;
7
+ dom;
8
+ normalizedChildren;
9
+ constructor(type, props = {}, children = []) {
10
+ this.type = type;
11
+ this.props = props;
12
+ this.children = children;
13
+ const key = props.key;
14
+ this.key =
15
+ typeof key === "string" ||
16
+ typeof key === "number"
17
+ ? key
18
+ : null;
19
+ this.instance = null;
20
+ this.dom = null;
21
+ this.normalizedChildren = null;
22
+ }
23
+ }
24
+ //# sourceMappingURL=VNode.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VNode.js","sourceRoot":"","sources":["../../../src/core/vnode/VNode.ts"],"names":[],"mappings":"AA6DA,MAAM,OAAO,KAAK;IACE,IAAI,CAAa;IAEjB,KAAK,CAAS;IAEd,QAAQ,CAAgB;IAExB,GAAG,CAGR;IAEJ,QAAQ,CAEJ;IAEJ,GAAG,CAEC;IAEJ,kBAAkB,CAEd;IAEX,YACI,IAAgB,EAChB,KAAK,GAAW,EAAE,EAClB,QAAQ,GAAkB,EAAE;QAE5B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QAEjB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QAEnB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QAEzB,MAAM,GAAG,GACL,KAAK,CAAC,GAAG,CAAC;QAEd,IAAI,CAAC,GAAG;YACJ,OAAO,GAAG,KAAK,QAAQ;gBACvB,OAAO,GAAG,KAAK,QAAQ;gBACnB,CAAC,CAAC,GAAG;gBACL,CAAC,CAAC,IAAI,CAAC;QAEf,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QAErB,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC;QAEhB,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;IACnC,CAAC;CACJ"}
@@ -0,0 +1,2 @@
1
+ import { VNode, type IProps, type TVNodeChild, type TVNodeType } from "./VNode.js";
2
+ export declare function createElement(type: TVNodeType, props?: IProps | null, ...children: TVNodeChild[]): VNode;
@@ -0,0 +1,5 @@
1
+ import { VNode } from "./VNode.js";
2
+ export function createElement(type, props = null, ...children) {
3
+ return new VNode(type, props ?? {}, children);
4
+ }
5
+ //# sourceMappingURL=createElement.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createElement.js","sourceRoot":"","sources":["../../../src/core/vnode/createElement.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,KAAK,EAOR,MAAM,YAAY,CAAC;AAEpB,MAAM,UAAU,aAAa,CACzB,IAAgB,EAEhB,KAAK,GAAkB,IAAI,EAE3B,GAAG,QAAuB;IAE1B,OAAO,IAAI,KAAK,CACZ,IAAI,EAEJ,KAAK,IAAI,EAAE,EAEX,QAAQ,CACX,CAAC;AACN,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function setDOMProperty(element: HTMLElement, key: string, value: unknown): void;
2
+ export declare function removeDOMProperty(element: HTMLElement, key: string): void;
@@ -0,0 +1,46 @@
1
+ export function setDOMProperty(element, key, value) {
2
+ if (value === null ||
3
+ value === undefined ||
4
+ value === false) {
5
+ removeDOMProperty(element, key);
6
+ return;
7
+ }
8
+ if (value === true) {
9
+ element.setAttribute(key, "");
10
+ if (key in element) {
11
+ try {
12
+ element[key] = true;
13
+ }
14
+ catch {
15
+ // Some DOM properties are read-only.
16
+ }
17
+ }
18
+ return;
19
+ }
20
+ if (key in element &&
21
+ !key.includes("-")) {
22
+ try {
23
+ element[key] = value;
24
+ return;
25
+ }
26
+ catch {
27
+ // Fall back to an attribute.
28
+ }
29
+ }
30
+ element.setAttribute(key, String(value));
31
+ }
32
+ export function removeDOMProperty(element, key) {
33
+ element.removeAttribute(key);
34
+ if (key in element) {
35
+ try {
36
+ element[key] =
37
+ key === "value"
38
+ ? ""
39
+ : false;
40
+ }
41
+ catch {
42
+ // Some DOM properties are read-only.
43
+ }
44
+ }
45
+ }
46
+ //# sourceMappingURL=DOMProperties.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DOMProperties.js","sourceRoot":"","sources":["../../src/dom/DOMProperties.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,cAAc,CAC1B,OAAoB,EAEpB,GAAW,EAEX,KAAc;IAEd,IACI,KAAK,KAAK,IAAI;QACd,KAAK,KAAK,SAAS;QACnB,KAAK,KAAK,KAAK,EACjB,CAAC;QACC,iBAAiB,CACb,OAAO,EAEP,GAAG,CACN,CAAC;QAEF,OAAO;IACX,CAAC;IAED,IACI,KAAK,KAAK,IAAI,EAChB,CAAC;QACC,OAAO,CAAC,YAAY,CAChB,GAAG,EAEH,EAAE,CACL,CAAC;QAEF,IACI,GAAG,IAAI,OAAO,EAChB,CAAC;YACC,IAAI,CAAC;gBAEG,OAIH,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;YAClB,CAAC;YAAC,MAAM,CAAC;gBACL,qCAAqC;YACzC,CAAC;QACL,CAAC;QAED,OAAO;IACX,CAAC;IAED,IACI,GAAG,IAAI,OAAO;QACd,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,EACpB,CAAC;QACC,IAAI,CAAC;YAEG,OAIH,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;YAEf,OAAO;QACX,CAAC;QAAC,MAAM,CAAC;YACL,6BAA6B;QACjC,CAAC;IACL,CAAC;IAED,OAAO,CAAC,YAAY,CAChB,GAAG,EAEH,MAAM,CAAC,KAAK,CAAC,CAChB,CAAC;AACN,CAAC;AAED,MAAM,UAAU,iBAAiB,CAC7B,OAAoB,EAEpB,GAAW;IAEX,OAAO,CAAC,eAAe,CACnB,GAAG,CACN,CAAC;IAEF,IACI,GAAG,IAAI,OAAO,EAChB,CAAC;QACC,IAAI,CAAC;YAEG,OAIH,CAAC,GAAG,CAAC;gBACF,GAAG,KAAK,OAAO;oBACX,CAAC,CAAC,EAAE;oBACJ,CAAC,CAAC,KAAK,CAAC;QACpB,CAAC;QAAC,MAAM,CAAC;YACL,qCAAqC;QACzC,CAAC;IACL,CAAC;AACL,CAAC"}
@@ -0,0 +1,7 @@
1
+ export declare class EventSystem {
2
+ private readonly listeners;
3
+ constructor();
4
+ updateEvent(element: HTMLElement, propName: string, value: unknown): void;
5
+ removeAllEvents(element: HTMLElement): void;
6
+ private getEventName;
7
+ }
@@ -0,0 +1,53 @@
1
+ export class EventSystem {
2
+ listeners;
3
+ constructor() {
4
+ this.listeners =
5
+ new WeakMap();
6
+ }
7
+ updateEvent(element, propName, value) {
8
+ const eventName = this.getEventName(propName);
9
+ if (eventName === null) {
10
+ return;
11
+ }
12
+ const records = this.listeners.get(element);
13
+ const existing = records?.get(eventName);
14
+ if (existing !== undefined) {
15
+ element.removeEventListener(eventName, existing.handler);
16
+ records?.delete(eventName);
17
+ }
18
+ if (typeof value !==
19
+ "function") {
20
+ return;
21
+ }
22
+ const handler = value;
23
+ element.addEventListener(eventName, handler);
24
+ const nextRecords = records ??
25
+ new Map();
26
+ nextRecords.set(eventName, {
27
+ eventName,
28
+ handler
29
+ });
30
+ this.listeners.set(element, nextRecords);
31
+ }
32
+ removeAllEvents(element) {
33
+ const records = this.listeners.get(element);
34
+ if (records === undefined) {
35
+ return;
36
+ }
37
+ for (const record of records.values()) {
38
+ element.removeEventListener(record.eventName, record.handler);
39
+ }
40
+ this.listeners.delete(element);
41
+ }
42
+ getEventName(propName) {
43
+ if (!propName.startsWith("on")) {
44
+ return null;
45
+ }
46
+ const name = propName.slice(2);
47
+ if (name.length === 0) {
48
+ return null;
49
+ }
50
+ return name.toLowerCase();
51
+ }
52
+ }
53
+ //# sourceMappingURL=EventSystem.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EventSystem.js","sourceRoot":"","sources":["../../src/dom/EventSystem.ts"],"names":[],"mappings":"AASA,MAAM,OAAO,WAAW;IACH,SAAS,CAOpB;IAEN;QACI,IAAI,CAAC,SAAS;YACV,IAAI,OAAO,EAAE,CAAC;IACtB,CAAC;IAEM,WAAW,CACd,OAAoB,EAEpB,QAAgB,EAEhB,KAAc;QAEd,MAAM,SAAS,GACX,IAAI,CAAC,YAAY,CACb,QAAQ,CACX,CAAC;QAEN,IACI,SAAS,KAAK,IAAI,EACpB,CAAC;YACC,OAAO;QACX,CAAC;QAED,MAAM,OAAO,GACT,IAAI,CAAC,SAAS,CAAC,GAAG,CACd,OAAO,CACV,CAAC;QAEN,MAAM,QAAQ,GACV,OAAO,EAAE,GAAG,CACR,SAAS,CACZ,CAAC;QAEN,IACI,QAAQ,KAAK,SAAS,EACxB,CAAC;YACC,OAAO,CAAC,mBAAmB,CACvB,SAAS,EAET,QAAQ,CAAC,OAAO,CACnB,CAAC;YAEF,OAAO,EAAE,MAAM,CACX,SAAS,CACZ,CAAC;QACN,CAAC;QAED,IACI,OAAO,KAAK;YACZ,UAAU,EACZ,CAAC;YACC,OAAO;QACX,CAAC;QAED,MAAM,OAAO,GACT,KAAsB,CAAC;QAE3B,OAAO,CAAC,gBAAgB,CACpB,SAAS,EAET,OAAO,CACV,CAAC;QAEF,MAAM,WAAW,GACb,OAAO;YACP,IAAI,GAAG,EAGJ,CAAC;QAER,WAAW,CAAC,GAAG,CACX,SAAS,EAET;YACI,SAAS;YAET,OAAO;SACV,CACJ,CAAC;QAEF,IAAI,CAAC,SAAS,CAAC,GAAG,CACd,OAAO,EAEP,WAAW,CACd,CAAC;IACN,CAAC;IAEM,eAAe,CAClB,OAAoB;QAEpB,MAAM,OAAO,GACT,IAAI,CAAC,SAAS,CAAC,GAAG,CACd,OAAO,CACV,CAAC;QAEN,IACI,OAAO,KAAK,SAAS,EACvB,CAAC;YACC,OAAO;QACX,CAAC;QAED,KACI,MAAM,MAAM,IACT,OAAO,CAAC,MAAM,EAAE,EACjB,CAAC;YACH,OAAO,CAAC,mBAAmB,CACvB,MAAM,CAAC,SAAS,EAEhB,MAAM,CAAC,OAAO,CACjB,CAAC;QACN,CAAC;QAED,IAAI,CAAC,SAAS,CAAC,MAAM,CACjB,OAAO,CACV,CAAC;IACN,CAAC;IAEO,YAAY,CAChB,QAAgB;QAEhB,IACI,CAAC,QAAQ,CAAC,UAAU,CAChB,IAAI,CACP,EACH,CAAC;YACC,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,MAAM,IAAI,GACN,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAEtB,IACI,IAAI,CAAC,MAAM,KAAK,CAAC,EACnB,CAAC;YACC,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;IAC9B,CAAC;CACJ"}
@@ -0,0 +1,20 @@
1
+ import { VNode } from "../core/vnode/VNode.js";
2
+ export declare class Reconciler {
3
+ private readonly eventSystem;
4
+ constructor();
5
+ patch(parent: Node, oldVNode: VNode | null, newVNode: VNode | null, dom: Node | null): Node | null;
6
+ private mount;
7
+ private mountComponent;
8
+ private updateComponent;
9
+ private updateElement;
10
+ private updateText;
11
+ private updateChildren;
12
+ private updateProps;
13
+ private unmount;
14
+ private normalizeChildren;
15
+ private insertNode;
16
+ private moveNode;
17
+ private isComponent;
18
+ private isTextVNode;
19
+ private shouldReplace;
20
+ }