@actdim/dynstruct 1.0.7 → 1.1.1
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/componentModel/DynamicContent.d.ts +2 -5
- package/dist/componentModel/DynamicContent.d.ts.map +1 -1
- package/dist/componentModel/DynamicContent.es.js +7 -6
- package/dist/componentModel/DynamicContent.es.js.map +1 -1
- package/dist/componentModel/componentModel.d.ts +35 -24
- package/dist/componentModel/componentModel.d.ts.map +1 -1
- package/dist/componentModel/componentModel.es.js +221 -189
- package/dist/componentModel/componentModel.es.js.map +1 -1
- package/dist/net/request.d.ts +2 -2
- package/dist/net/request.d.ts.map +1 -1
- package/dist/net/request.es.js.map +1 -1
- package/package.json +3 -3
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ComponentParams, ComponentStruct } from './componentModel';
|
|
1
|
+
import { Component, ComponentParams, ComponentStruct } from './componentModel';
|
|
2
2
|
import { default as React } from 'react';
|
|
3
3
|
import { MsgStruct } from '@actdim/msgmesh/msgBusCore';
|
|
4
4
|
export type DynamicContentStruct<TData = any, TMsgStruct extends MsgStruct = MsgStruct> = ComponentStruct<TMsgStruct, {
|
|
@@ -6,9 +6,6 @@ export type DynamicContentStruct<TData = any, TMsgStruct extends MsgStruct = Msg
|
|
|
6
6
|
data: TData;
|
|
7
7
|
render: () => React.ReactNode;
|
|
8
8
|
};
|
|
9
|
-
actions: {};
|
|
10
|
-
children: {};
|
|
11
|
-
msgScope: {};
|
|
12
9
|
}>;
|
|
13
|
-
export declare function useDynamicContent<TData = any>(params: ComponentParams<DynamicContentStruct<TData>>):
|
|
10
|
+
export declare function useDynamicContent<TData = any>(params: ComponentParams<DynamicContentStruct<TData>>): Component<DynamicContentStruct<TData, MsgStruct>>;
|
|
14
11
|
//# sourceMappingURL=DynamicContent.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DynamicContent.d.ts","sourceRoot":"","sources":["../../src/componentModel/DynamicContent.tsx"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"DynamicContent.d.ts","sourceRoot":"","sources":["../../src/componentModel/DynamicContent.tsx"],"names":[],"mappings":"AAAA,OAAO,EACH,SAAS,EAGT,eAAe,EACf,eAAe,EAElB,MAAM,iCAAiC,CAAC;AACzC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAEvD,MAAM,MAAM,oBAAoB,CAC5B,KAAK,GAAG,GAAG,EACX,UAAU,SAAS,SAAS,GAAG,SAAS,IACxC,eAAe,CACf,UAAU,EACV;IACI,KAAK,EAAE;QACH,IAAI,EAAE,KAAK,CAAC;QACZ,MAAM,EAAE,MAAM,KAAK,CAAC,SAAS,CAAC;KACjC,CAAC;CACL,CACJ,CAAC;AAEF,wBAAgB,iBAAiB,CAAC,KAAK,GAAG,GAAG,EACzC,MAAM,EAAE,eAAe,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC,qDAiBvD"}
|
|
@@ -1,14 +1,15 @@
|
|
|
1
|
-
import { useComponent as
|
|
2
|
-
function
|
|
3
|
-
|
|
1
|
+
import { useComponent as t } from "./componentModel.es.js";
|
|
2
|
+
function d(o) {
|
|
3
|
+
let e, n;
|
|
4
|
+
return e = t({
|
|
4
5
|
props: {
|
|
5
6
|
render: void 0,
|
|
6
7
|
data: void 0
|
|
7
8
|
},
|
|
8
|
-
view: (m,
|
|
9
|
-
}, n
|
|
9
|
+
view: (m, c) => n.render()
|
|
10
|
+
}, o), n = e.model, e;
|
|
10
11
|
}
|
|
11
12
|
export {
|
|
12
|
-
|
|
13
|
+
d as useDynamicContent
|
|
13
14
|
};
|
|
14
15
|
//# sourceMappingURL=DynamicContent.es.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DynamicContent.es.js","sources":["../../src/componentModel/DynamicContent.tsx"],"sourcesContent":["import {\n ComponentDef,\n ComponentParams,\n ComponentStruct,\n useComponent,\n} from '@/componentModel/componentModel';\nimport React from 'react';\nimport { MsgStruct } from '@actdim/msgmesh/msgBusCore';\n\nexport type DynamicContentStruct<\n TData = any,\n TMsgStruct extends MsgStruct = MsgStruct,\n> = ComponentStruct<\n TMsgStruct,\n {\n props: {\n data: TData;\n render: () => React.ReactNode;\n };\n
|
|
1
|
+
{"version":3,"file":"DynamicContent.es.js","sources":["../../src/componentModel/DynamicContent.tsx"],"sourcesContent":["import {\n Component,\n ComponentDef,\n ComponentModel,\n ComponentParams,\n ComponentStruct,\n useComponent,\n} from '@/componentModel/componentModel';\nimport React from 'react';\nimport { MsgStruct } from '@actdim/msgmesh/msgBusCore';\n\nexport type DynamicContentStruct<\n TData = any,\n TMsgStruct extends MsgStruct = MsgStruct,\n> = ComponentStruct<\n TMsgStruct,\n {\n props: {\n data: TData;\n render: () => React.ReactNode;\n };\n }\n>;\n\nexport function useDynamicContent<TData = any>(\n params: ComponentParams<DynamicContentStruct<TData>>,\n) {\n let c: Component<DynamicContentStruct<TData>>;\n let m: ComponentModel<DynamicContentStruct<TData>>;\n const componentDef: ComponentDef<DynamicContentStruct<TData>> = {\n props: {\n render: undefined,\n data: undefined,\n },\n view: (_, c) => {\n return m.render();\n },\n };\n\n c = useComponent(componentDef, params);\n m = c.model;\n return c;\n}\n"],"names":["useDynamicContent","params","c","m","useComponent","_"],"mappings":";AAwBO,SAASA,EACZC,GACF;AACE,MAAIC,GACAC;AAWJ,SAAAD,IAAIE,EAV4D;AAAA,IAC5D,OAAO;AAAA,MACH,QAAQ;AAAA,MACR,MAAM;AAAA,IAAA;AAAA,IAEV,MAAM,CAACC,GAAGH,MACCC,EAAE,OAAA;AAAA,EACb,GAG2BF,CAAM,GACrCE,IAAID,EAAE,OACCA;AACX;"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { PropsWithChildren, FC, ReactNode } from 'react';
|
|
2
2
|
import { $CG_IN, $CG_OUT, Msg, MsgBus, MsgProviderParams, MsgStruct, MsgSubscriberParams, OutStruct } from '@actdim/msgmesh/msgBusCore';
|
|
3
|
-
import { MaybePromise,
|
|
3
|
+
import { HasKeys, MaybeKeyOf, MaybePromise, Require, Skip } from '@actdim/utico/typeCore';
|
|
4
4
|
import { ComponentMsgHeaders, TreeNode } from './contracts';
|
|
5
5
|
export declare enum ComponentMsgFilter {
|
|
6
6
|
None = 0,
|
|
@@ -30,25 +30,26 @@ export type ComponentRefStruct = {
|
|
|
30
30
|
export type ComponentStructBase<TMsgStruct extends MsgStruct = MsgStruct, TPropStruct extends ComponentPropStruct = ComponentPropStruct, TMsgScope extends MsgBrokerScope<TMsgStruct> = MsgBrokerScope<TMsgStruct>> = {
|
|
31
31
|
props?: TPropStruct;
|
|
32
32
|
actions?: ComponentMethodStruct;
|
|
33
|
+
effects?: string[] | string | undefined;
|
|
33
34
|
children?: ComponentRefStruct;
|
|
34
35
|
msgScope?: TMsgScope;
|
|
35
36
|
};
|
|
36
37
|
export type ComponentStruct<TMsgStruct extends MsgStruct = MsgStruct, T extends ComponentStructBase<TMsgStruct> = ComponentStructBase<TMsgStruct>> = T & {
|
|
37
38
|
msg: TMsgStruct;
|
|
38
39
|
};
|
|
39
|
-
export type MsgBroker<TStructToProvide extends MsgStruct = MsgStruct, TStructToSubscribe extends MsgStruct = MsgStruct, TMsgHeaders extends ComponentMsgHeaders = ComponentMsgHeaders, TScope = any> = {
|
|
40
|
-
provide?: {
|
|
40
|
+
export type MsgBroker<TStructToProvide extends MsgStruct = MsgStruct, TStructToSubscribe extends MsgStruct = MsgStruct, TMsgHeaders extends ComponentMsgHeaders = ComponentMsgHeaders, TScope = any> = Require<{
|
|
41
|
+
provide?: Require<{
|
|
41
42
|
[TChannel in keyof TStructToProvide]: {
|
|
42
43
|
[TGroup in keyof Skip<TStructToProvide[TChannel], typeof $CG_OUT>]?: MsgChannelGroupProviderParams<TStructToProvide, TChannel, TGroup, TMsgHeaders, TScope>;
|
|
43
44
|
};
|
|
44
|
-
}
|
|
45
|
-
subscribe?: {
|
|
45
|
+
}, HasKeys<TStructToProvide>>;
|
|
46
|
+
subscribe?: Require<{
|
|
46
47
|
[TChannel in keyof TStructToSubscribe]: {
|
|
47
48
|
[TGroup in keyof TStructToSubscribe[TChannel]]?: MsgChannelGroupSubscriberParams<TStructToSubscribe, TChannel, TGroup, TMsgHeaders, TScope>;
|
|
48
49
|
};
|
|
49
|
-
}
|
|
50
|
+
}, HasKeys<TStructToSubscribe>>;
|
|
50
51
|
abortController?: AbortController;
|
|
51
|
-
}
|
|
52
|
+
}, HasKeys<TStructToProvide & TStructToSubscribe>>;
|
|
52
53
|
type ValueConverter<TTo, TFrom> = {
|
|
53
54
|
convert(value: TFrom): TTo;
|
|
54
55
|
convertBack(value: TTo): TFrom;
|
|
@@ -83,19 +84,19 @@ export type ComponentPropParams<TPropStruct extends ComponentPropStruct> = {
|
|
|
83
84
|
declare const $ON_GET = "onGet";
|
|
84
85
|
declare const $ON_CHANGING = "onChanging";
|
|
85
86
|
declare const $ON_CHANGE = "onChange";
|
|
86
|
-
type PropValueChangingHandler<TProp =
|
|
87
|
-
type PropValueChangeHandler<TProp =
|
|
87
|
+
type PropValueChangingHandler<TProp = PropertyKey> = (prop: TProp, oldValue: any, newValue: any) => boolean;
|
|
88
|
+
type PropValueChangeHandler<TProp = PropertyKey> = (prop: TProp, value: any) => void;
|
|
88
89
|
type ValueChangingHandler<T = any> = (oldValue: T, newValue: T) => boolean;
|
|
89
90
|
type ValueChangeHandler<T = any> = (value: T) => void;
|
|
90
91
|
type ComponentEvents<TStruct extends ComponentStruct = ComponentStruct> = {
|
|
91
92
|
onPropChanging?: PropValueChangingHandler<keyof TStruct['props']>;
|
|
92
93
|
onPropChange?: PropValueChangeHandler<keyof TStruct['props']>;
|
|
93
|
-
onInit?: (
|
|
94
|
-
onLayout?: (
|
|
95
|
-
onReady?: (
|
|
96
|
-
onLayoutDestroy?: (
|
|
97
|
-
onDestroy?: (
|
|
98
|
-
onError?: (
|
|
94
|
+
onInit?: (component: Component<TStruct>) => void;
|
|
95
|
+
onLayout?: (component: Component<TStruct>) => void;
|
|
96
|
+
onReady?: (component: Component<TStruct>) => void;
|
|
97
|
+
onLayoutDestroy?: (component: Component<TStruct>) => void;
|
|
98
|
+
onDestroy?: (component: Component<TStruct>) => void;
|
|
99
|
+
onError?: (component: Component<TStruct>, error: any) => void;
|
|
99
100
|
} & {
|
|
100
101
|
[P in keyof TStruct['props'] as `${typeof $ON_GET}${Capitalize<P & string>}`]?: () => TStruct['props'][P];
|
|
101
102
|
} & {
|
|
@@ -106,26 +107,28 @@ type ComponentEvents<TStruct extends ComponentStruct = ComponentStruct> = {
|
|
|
106
107
|
type ComponentViewProps = {
|
|
107
108
|
render?: boolean;
|
|
108
109
|
} & PropsWithChildren;
|
|
109
|
-
type ComponentViewImplFn<TStruct extends ComponentStruct, TMsgHeaders extends ComponentMsgHeaders = ComponentMsgHeaders> = (props: ComponentViewProps,
|
|
110
|
+
type ComponentViewImplFn<TStruct extends ComponentStruct, TMsgHeaders extends ComponentMsgHeaders = ComponentMsgHeaders> = (props: ComponentViewProps, component?: Component<TStruct, TMsgHeaders>) => ReactNode;
|
|
110
111
|
type ComponentViewFn = (props: ComponentViewProps) => ReactNode;
|
|
111
|
-
export type ComponentMsgBroker<TStruct extends ComponentStruct, TMsgHeaders extends ComponentMsgHeaders = ComponentMsgHeaders> = MsgBroker<Pick<TStruct['msg'],
|
|
112
|
+
export type ComponentMsgBroker<TStruct extends ComponentStruct, TMsgHeaders extends ComponentMsgHeaders = ComponentMsgHeaders> = MsgBroker<Pick<TStruct['msg'], MaybeKeyOf<TStruct['msg'], TStruct['msgScope']['provide']>>, Pick<TStruct['msg'], MaybeKeyOf<TStruct['msg'], TStruct['msgScope']['subscribe']>>, TMsgHeaders, Component<TStruct, TMsgHeaders>>;
|
|
113
|
+
export type EffectFn<TStruct extends ComponentStruct, TMsgHeaders extends ComponentMsgHeaders = ComponentMsgHeaders> = (component: Component<TStruct, TMsgHeaders>) => void | (() => void);
|
|
112
114
|
export type ComponentDef<TStruct extends ComponentStruct, TMsgHeaders extends ComponentMsgHeaders = ComponentMsgHeaders> = {
|
|
113
115
|
name?: string;
|
|
114
|
-
props?: TStruct['props']
|
|
115
|
-
actions?: TStruct['actions']
|
|
116
|
+
props?: Require<TStruct['props'], HasKeys<TStruct['props']>>;
|
|
117
|
+
actions?: Require<TStruct['actions'], HasKeys<TStruct['actions']>>;
|
|
118
|
+
effects?: keyof TStruct['effects'] extends never ? never : Record<TStruct['effects'] extends string ? TStruct['effects'] : TStruct['effects'][number], EffectFn<TStruct, TMsgHeaders>>;
|
|
116
119
|
children?: ComponentDefChildren<TStruct['children']>;
|
|
117
120
|
events?: ComponentEvents<TStruct>;
|
|
118
121
|
msgBroker?: ComponentMsgBroker<TStruct, TMsgHeaders>;
|
|
119
122
|
msgBus?: MsgBus<TStruct['msg'], TMsgHeaders>;
|
|
120
123
|
view?: ComponentViewImplFn<TStruct, TMsgHeaders>;
|
|
121
124
|
};
|
|
122
|
-
type ComponentDefChildren<TRefStruct extends ComponentRefStruct> = {
|
|
125
|
+
type ComponentDefChildren<TRefStruct extends ComponentRefStruct> = Require<{
|
|
123
126
|
[P in keyof TRefStruct]: TRefStruct[P] extends (params: infer TParams) => infer T ? T extends ComponentStruct ? (params: TParams) => Component<T> : never : TRefStruct[P] extends ComponentStruct ? Component<TRefStruct[P]> : never;
|
|
124
|
-
}
|
|
127
|
+
}, HasKeys<TRefStruct>>;
|
|
125
128
|
type ComponentChildren<TRefStruct extends ComponentRefStruct> = {
|
|
126
129
|
[P in keyof TRefStruct as TRefStruct[P] extends Function ? `${Capitalize<P & string>}` : P]: TRefStruct[P] extends (params: infer TParams) => infer T ? T extends ComponentStruct ? FC<ComponentParams<T> & TParams> : never : TRefStruct[P] extends ComponentStruct ? Component<TRefStruct[P]> : never;
|
|
127
130
|
};
|
|
128
|
-
export type ComponentMsgStruct<TStruct extends ComponentStruct = ComponentStruct> = Pick<TStruct['msg'],
|
|
131
|
+
export type ComponentMsgStruct<TStruct extends ComponentStruct = ComponentStruct> = Pick<TStruct['msg'], MaybeKeyOf<TStruct['msg'], TStruct['msgScope']['provide']> | MaybeKeyOf<TStruct['msg'], TStruct['msgScope']['subscribe']> | MaybeKeyOf<TStruct['msg'], TStruct['msgScope']['publish']>>;
|
|
129
132
|
export type ComponentBase<TStruct extends ComponentStruct = ComponentStruct, TMsgHeaders extends ComponentMsgHeaders = ComponentMsgHeaders> = {
|
|
130
133
|
id: string;
|
|
131
134
|
parentId: string;
|
|
@@ -135,9 +138,10 @@ export type ComponentBase<TStruct extends ComponentStruct = ComponentStruct, TMs
|
|
|
135
138
|
getChainUp(): string[];
|
|
136
139
|
getChainDown(): string[];
|
|
137
140
|
getNodeMap(): Map<string, TreeNode>;
|
|
138
|
-
bindings: Map<
|
|
141
|
+
bindings: Map<PropertyKey, Binding>;
|
|
139
142
|
msgBus: MsgBus<ComponentMsgStruct<TStruct>, TMsgHeaders>;
|
|
140
143
|
msgBroker: ComponentMsgBroker<TStruct>;
|
|
144
|
+
effects: Record<string, EffectController>;
|
|
141
145
|
View: ComponentViewFn;
|
|
142
146
|
};
|
|
143
147
|
export type ComponentModel<TStruct extends ComponentStruct = ComponentStruct> = TStruct['props'] & Readonly<TStruct['actions']>;
|
|
@@ -145,9 +149,16 @@ export type Component<TStruct extends ComponentStruct = ComponentStruct, TMsgHea
|
|
|
145
149
|
readonly model: ComponentModel<TStruct>;
|
|
146
150
|
readonly children: Readonly<ComponentChildren<TStruct['children']>>;
|
|
147
151
|
} & Readonly<ComponentBase<TStruct, TMsgHeaders>>;
|
|
148
|
-
type PropKey = string | symbol;
|
|
149
152
|
export type ComponentParams<TStruct extends ComponentStruct = ComponentStruct> = ComponentPropParams<TStruct['props']> & ComponentEvents<TStruct>;
|
|
150
153
|
export declare function toHtmlId(url: string, segmentsCount?: number): string;
|
|
154
|
+
export type EffectController = {
|
|
155
|
+
start: () => void;
|
|
156
|
+
pause: () => void;
|
|
157
|
+
resume: () => void;
|
|
158
|
+
stop: () => void;
|
|
159
|
+
restart: () => void;
|
|
160
|
+
};
|
|
161
|
+
export declare function createEffect<TStruct extends ComponentStruct, TMsgHeaders extends ComponentMsgHeaders = ComponentMsgHeaders>(component: Component<TStruct, TMsgHeaders>, name: string, fn: EffectFn<TStruct, TMsgHeaders>): EffectController;
|
|
151
162
|
export declare function useComponent<TStruct extends ComponentStruct = ComponentStruct, TMsgHeaders extends ComponentMsgHeaders = ComponentMsgHeaders>(componentDef: ComponentDef<TStruct, TMsgHeaders>, params: ComponentParams<TStruct>): any;
|
|
152
163
|
export declare function getFC<TStruct extends ComponentStruct>(factory: (params: ComponentParams<TStruct>) => Component<TStruct>): FC<ComponentParams<TStruct>>;
|
|
153
164
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"componentModel.d.ts","sourceRoot":"","sources":["../../src/componentModel/componentModel.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"componentModel.d.ts","sourceRoot":"","sources":["../../src/componentModel/componentModel.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import O, { useLayoutEffect as
|
|
2
|
-
import { observer as
|
|
3
|
-
import { observable as
|
|
4
|
-
import { useLazyRef as
|
|
5
|
-
import { getGlobalFlags as
|
|
6
|
-
import { useComponentContext as
|
|
7
|
-
import { lazy as
|
|
8
|
-
var
|
|
9
|
-
const
|
|
10
|
-
class
|
|
1
|
+
import O, { useLayoutEffect as S, useMemo as p, useEffect as J } from "react";
|
|
2
|
+
import { observer as V } from "mobx-react-lite";
|
|
3
|
+
import { autorun as Z, observable as G, isObservable as R, runInAction as K, toJS as T } from "mobx";
|
|
4
|
+
import { useLazyRef as W } from "../reactHooks.es.js";
|
|
5
|
+
import { getGlobalFlags as P } from "../globals.es.js";
|
|
6
|
+
import { useComponentContext as q, ReactComponentContext as Q } from "./componentContext.es.js";
|
|
7
|
+
import { lazy as X } from "@actdim/utico/utils";
|
|
8
|
+
var Y = /* @__PURE__ */ ((e) => (e[e.None = 0] = "None", e[e.FromAncestors = 1] = "FromAncestors", e[e.FromDescendants = 2] = "FromDescendants", e))(Y || {});
|
|
9
|
+
const x = Symbol("$isBinding");
|
|
10
|
+
class U {
|
|
11
11
|
// getter
|
|
12
12
|
get;
|
|
13
13
|
// setter
|
|
@@ -15,83 +15,83 @@ class j {
|
|
|
15
15
|
converter;
|
|
16
16
|
validator;
|
|
17
17
|
readOnly;
|
|
18
|
-
constructor(
|
|
19
|
-
this.get =
|
|
18
|
+
constructor(n, t, r, a) {
|
|
19
|
+
this.get = n, this.set = t, this.converter = r, this.validator = a, this.readOnly = !!t, this[x] = !0;
|
|
20
20
|
}
|
|
21
|
-
[
|
|
21
|
+
[x];
|
|
22
22
|
}
|
|
23
|
-
function
|
|
24
|
-
return e[
|
|
23
|
+
function D(e) {
|
|
24
|
+
return e[x] === !0;
|
|
25
25
|
}
|
|
26
|
-
function
|
|
27
|
-
return new
|
|
26
|
+
function ye(e, n, t, r) {
|
|
27
|
+
return new U(e, n, t, r);
|
|
28
28
|
}
|
|
29
|
-
function
|
|
30
|
-
return new
|
|
31
|
-
() => e()[
|
|
29
|
+
function be(e, n) {
|
|
30
|
+
return new U(
|
|
31
|
+
() => e()[n],
|
|
32
32
|
(t) => {
|
|
33
|
-
e()[
|
|
33
|
+
e()[n] = t;
|
|
34
34
|
}
|
|
35
35
|
);
|
|
36
36
|
}
|
|
37
|
-
const
|
|
38
|
-
function
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
const
|
|
46
|
-
if (
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
37
|
+
const m = "onGet", ee = "onChanging", te = "onChange", H = /* @__PURE__ */ new WeakMap();
|
|
38
|
+
function z(e, n, t) {
|
|
39
|
+
if (typeof e != "object" || e === null || !R(e))
|
|
40
|
+
return e;
|
|
41
|
+
if (H.has(e))
|
|
42
|
+
return H.get(e);
|
|
43
|
+
const r = new Proxy(e, {
|
|
44
|
+
get(a, s, u) {
|
|
45
|
+
const l = t[s]?.onGet;
|
|
46
|
+
if (l) return l();
|
|
47
|
+
const d = n.get(s);
|
|
48
|
+
if (d?.get)
|
|
49
|
+
return d.get();
|
|
50
|
+
const f = Reflect.get(a, s, u);
|
|
51
|
+
return typeof f == "object" && f !== null && R(f) ? z(f, n, t) : f;
|
|
51
52
|
},
|
|
52
|
-
set(
|
|
53
|
-
const
|
|
54
|
-
if (
|
|
53
|
+
set(a, s, u, l) {
|
|
54
|
+
const d = a[s], f = t[s]?.onChanging;
|
|
55
|
+
if (f && f(d, u) === !1 || t.onPropChanging && t.onPropChanging(s, d, u) === !1)
|
|
55
56
|
return !0;
|
|
56
|
-
const
|
|
57
|
-
|
|
58
|
-
const l = t[u]?.onChange;
|
|
59
|
-
return l && l(c), b && b(u, c), k;
|
|
57
|
+
const h = K(() => Reflect.set(a, s, u, l));
|
|
58
|
+
return n.get(s)?.set?.(u), t[s]?.onChange?.(u), t.onPropChange?.(s, u), h;
|
|
60
59
|
}
|
|
61
60
|
});
|
|
61
|
+
return H.set(e, r), r;
|
|
62
62
|
}
|
|
63
63
|
function $(e) {
|
|
64
64
|
return e.replace(/^./, e[0].toUpperCase());
|
|
65
65
|
}
|
|
66
|
-
const
|
|
66
|
+
const j = {
|
|
67
67
|
sources: /* @__PURE__ */ new Map(),
|
|
68
68
|
count: 0
|
|
69
69
|
};
|
|
70
|
-
function
|
|
71
|
-
return e.split(/[?#]/)[0].split("/").filter(Boolean).map((
|
|
70
|
+
function re(e, n = 1) {
|
|
71
|
+
return e.split(/[?#]/)[0].split("/").filter(Boolean).map((l) => decodeURIComponent(l)).slice(-n).join("-").normalize("NFKD").replace(/[^a-zA-Z0-9\-_:.+#]/g, "-").replace(/-+/g, "-").replace(/^[^a-zA-Z]+/, "-").replace(/[+#]$/, "-");
|
|
72
72
|
}
|
|
73
|
-
function
|
|
73
|
+
function ne(e = 2) {
|
|
74
74
|
const t = new Error().stack?.split(`
|
|
75
75
|
`);
|
|
76
76
|
if (!t || t.length <= e) return null;
|
|
77
|
-
const
|
|
78
|
-
return
|
|
77
|
+
const r = t[e].match(/\((.*):\d+:\d+\)/);
|
|
78
|
+
return r ? r[1] : null;
|
|
79
79
|
}
|
|
80
|
-
function
|
|
81
|
-
const
|
|
82
|
-
if (
|
|
83
|
-
for (const [
|
|
84
|
-
for (const [
|
|
85
|
-
const
|
|
86
|
-
|
|
87
|
-
const
|
|
88
|
-
let
|
|
89
|
-
return
|
|
80
|
+
function oe(e) {
|
|
81
|
+
const n = e?.msgBroker.provide;
|
|
82
|
+
if (n)
|
|
83
|
+
for (const [r, a] of Object.entries(n))
|
|
84
|
+
for (const [s, u] of Object.entries(a)) {
|
|
85
|
+
const l = u, d = l.callback;
|
|
86
|
+
d && (l.callback = (y, g) => d(y, g, e));
|
|
87
|
+
const f = l.filter, h = l.componentFilter || 0, v = (y) => {
|
|
88
|
+
let g = !0;
|
|
89
|
+
return h & 1 && (g = e.getChainUp().indexOf(y.headers?.sourceId) >= 0), g && h & 2 && (g = e.getChainDown().indexOf(y.headers?.sourceId) >= 0), g && f && (g = f(y, e)), g;
|
|
90
90
|
};
|
|
91
|
-
|
|
91
|
+
l.filter = v, e.msgBus.provide({
|
|
92
92
|
...u,
|
|
93
|
-
channel:
|
|
94
|
-
group:
|
|
93
|
+
channel: r,
|
|
94
|
+
group: s,
|
|
95
95
|
config: {
|
|
96
96
|
abortSignal: e.msgBroker.abortController.signal
|
|
97
97
|
}
|
|
@@ -99,170 +99,193 @@ function D(e) {
|
|
|
99
99
|
}
|
|
100
100
|
const t = e?.msgBroker?.subscribe;
|
|
101
101
|
if (t)
|
|
102
|
-
for (const [
|
|
103
|
-
for (const [
|
|
104
|
-
const
|
|
105
|
-
|
|
106
|
-
const
|
|
107
|
-
let
|
|
108
|
-
return
|
|
102
|
+
for (const [r, a] of Object.entries(t))
|
|
103
|
+
for (const [s, u] of Object.entries(a)) {
|
|
104
|
+
const l = u, d = l.callback;
|
|
105
|
+
d && (l.callback = (y) => d(y, e));
|
|
106
|
+
const f = l.filter, h = l.componentFilter || 0, v = (y) => {
|
|
107
|
+
let g = !0;
|
|
108
|
+
return h & 1 && (g = e.getChainUp().indexOf(y.headers?.sourceId) >= 0), g && h & 2 && (g = e.getChainDown().indexOf(y.headers?.sourceId) >= 0), g && f && (g = f(y, e)), g;
|
|
109
109
|
};
|
|
110
|
-
|
|
110
|
+
l.filter = v, e.msgBus.on({
|
|
111
111
|
...u,
|
|
112
|
-
channel:
|
|
113
|
-
group:
|
|
112
|
+
channel: r,
|
|
113
|
+
group: s,
|
|
114
114
|
config: {
|
|
115
115
|
abortSignal: e.msgBroker.abortController.signal
|
|
116
116
|
}
|
|
117
117
|
});
|
|
118
118
|
}
|
|
119
119
|
}
|
|
120
|
-
function
|
|
121
|
-
const t = (
|
|
122
|
-
|
|
120
|
+
function ie(e, n) {
|
|
121
|
+
const t = (r) => {
|
|
122
|
+
r.payload != null && (r.payload = structuredClone(T(r.payload))), r.headers || (r.headers = {}), n?.(r.headers);
|
|
123
123
|
};
|
|
124
124
|
return {
|
|
125
125
|
config: e.config,
|
|
126
|
-
on: (
|
|
127
|
-
onceAsync: (
|
|
128
|
-
stream: (
|
|
129
|
-
provide: (
|
|
130
|
-
dispatch: (
|
|
131
|
-
dispatchAsync: (
|
|
126
|
+
on: (r) => e.on(r),
|
|
127
|
+
onceAsync: (r) => e.onceAsync(r),
|
|
128
|
+
stream: (r) => e.stream(r),
|
|
129
|
+
provide: (r) => (t(r), e.provide(r)),
|
|
130
|
+
dispatch: (r) => (t(r), e.dispatch(r)),
|
|
131
|
+
dispatchAsync: (r) => (t(r), e.dispatchAsync(r))
|
|
132
|
+
};
|
|
133
|
+
}
|
|
134
|
+
function se(e, n, t) {
|
|
135
|
+
let r = null, a = !1, s;
|
|
136
|
+
const u = () => {
|
|
137
|
+
r || (r = Z(
|
|
138
|
+
() => {
|
|
139
|
+
if (!a) {
|
|
140
|
+
const v = t(e);
|
|
141
|
+
typeof v == "function" && (v(), s = v);
|
|
142
|
+
}
|
|
143
|
+
},
|
|
144
|
+
{ name: `effect:${n}` }
|
|
145
|
+
));
|
|
146
|
+
}, l = () => {
|
|
147
|
+
r?.(), r = null, s && (s(), s = void 0);
|
|
148
|
+
}, d = () => {
|
|
149
|
+
a = !0;
|
|
150
|
+
}, f = () => {
|
|
151
|
+
a = !1;
|
|
152
|
+
}, h = () => {
|
|
153
|
+
l(), u();
|
|
132
154
|
};
|
|
155
|
+
return u(), { start: u, pause: d, resume: f, stop: l, restart: h };
|
|
133
156
|
}
|
|
134
|
-
function
|
|
135
|
-
let t,
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
157
|
+
function ce(e, n) {
|
|
158
|
+
let t, r;
|
|
159
|
+
e || (e = {}), n || (n = {});
|
|
160
|
+
const a = e.view;
|
|
161
|
+
let s = e.msgBus;
|
|
162
|
+
const u = /* @__PURE__ */ new Map(), l = X(() => ie(s, (o) => {
|
|
139
163
|
o?.sourceId == null && (o.sourceId = t.id);
|
|
140
164
|
}));
|
|
141
|
-
let
|
|
165
|
+
let d = {
|
|
142
166
|
...e.msgBroker
|
|
143
167
|
};
|
|
144
|
-
|
|
145
|
-
const
|
|
146
|
-
const i = t.id,
|
|
147
|
-
t.parentId =
|
|
148
|
-
const
|
|
149
|
-
() => ({ ...
|
|
150
|
-
[e,
|
|
168
|
+
d.abortController || (d.abortController = new AbortController());
|
|
169
|
+
const f = V((o) => {
|
|
170
|
+
const i = t.id, c = q(), I = c.currentId;
|
|
171
|
+
t.parentId = I, s || (s = c.msgBus);
|
|
172
|
+
const C = p(
|
|
173
|
+
() => ({ ...c, currentId: i }),
|
|
174
|
+
[e, n, c]
|
|
151
175
|
);
|
|
152
|
-
|
|
176
|
+
S(() => {
|
|
153
177
|
try {
|
|
154
|
-
if (
|
|
155
|
-
const
|
|
156
|
-
console.debug(`${
|
|
178
|
+
if (P().debug) {
|
|
179
|
+
const b = t.getHierarchyId();
|
|
180
|
+
console.debug(`${b}>layout`);
|
|
157
181
|
}
|
|
158
|
-
|
|
159
|
-
} catch (
|
|
160
|
-
e.events?.onError?.(t,
|
|
182
|
+
c.register(i, I), t.getHierarchyId = () => c.getHierarchyPath(i), t.getChainDown = () => c.getChainDown(i), t.getChainUp = () => c.getChainUp(i), t.getChildren = () => c.getChildren(i), t.getParent = () => c.getParent(i), t.getNodeMap = () => c.getNodeMap(), oe(t), e.events?.onLayout?.(t), n.onLayout?.(t);
|
|
183
|
+
} catch (b) {
|
|
184
|
+
e.events?.onError?.(t, b), n.onError?.(t, b);
|
|
161
185
|
}
|
|
162
186
|
return () => {
|
|
163
|
-
if (
|
|
164
|
-
const
|
|
165
|
-
console.debug(`${
|
|
187
|
+
if (P().debug) {
|
|
188
|
+
const b = t.getHierarchyId();
|
|
189
|
+
console.debug(`${b}>layout-destroy`);
|
|
166
190
|
}
|
|
167
|
-
|
|
191
|
+
c.unregister(i), d.abortController?.abort(), e.events?.onLayoutDestroy?.(t), n.onLayoutDestroy?.(t);
|
|
168
192
|
};
|
|
169
|
-
}, [e,
|
|
193
|
+
}, [e, n, c]), J(() => {
|
|
170
194
|
try {
|
|
171
|
-
if (
|
|
172
|
-
const
|
|
173
|
-
console.debug(`${
|
|
195
|
+
if (P().debug) {
|
|
196
|
+
const b = t.getHierarchyId();
|
|
197
|
+
console.debug(`${b}>ready`);
|
|
174
198
|
}
|
|
175
|
-
e.events?.onReady?.(t),
|
|
176
|
-
} catch (
|
|
177
|
-
if (
|
|
178
|
-
const
|
|
179
|
-
console.debug(`${
|
|
199
|
+
e.events?.onReady?.(t), n.onReady?.(t);
|
|
200
|
+
} catch (b) {
|
|
201
|
+
if (P().debug) {
|
|
202
|
+
const N = t.getHierarchyId();
|
|
203
|
+
console.debug(`${N}>destroy`);
|
|
180
204
|
}
|
|
181
|
-
e.events?.onError?.(t,
|
|
205
|
+
e.events?.onError?.(t, b), n.onError?.(t, b);
|
|
182
206
|
}
|
|
183
207
|
return () => {
|
|
184
|
-
e.events?.onDestroy?.(t),
|
|
208
|
+
e.events?.onDestroy?.(t), n.onDestroy?.(t);
|
|
185
209
|
};
|
|
186
|
-
}, [e,
|
|
187
|
-
let
|
|
210
|
+
}, [e, n, c]);
|
|
211
|
+
let k;
|
|
188
212
|
try {
|
|
189
|
-
if (
|
|
190
|
-
const
|
|
191
|
-
console.debug(`${
|
|
213
|
+
if (P().debug) {
|
|
214
|
+
const b = t.getHierarchyId();
|
|
215
|
+
console.debug(`${b}>view`);
|
|
192
216
|
}
|
|
193
|
-
typeof
|
|
194
|
-
} catch (
|
|
195
|
-
const
|
|
196
|
-
|
|
217
|
+
typeof a == "function" ? k = a(o, t) : k = /* @__PURE__ */ O.createElement(O.Fragment, null, o.children);
|
|
218
|
+
} catch (b) {
|
|
219
|
+
const N = JSON.stringify(b);
|
|
220
|
+
k = /* @__PURE__ */ O.createElement(O.Fragment, null, N);
|
|
197
221
|
}
|
|
198
|
-
return /* @__PURE__ */ O.createElement(
|
|
222
|
+
return /* @__PURE__ */ O.createElement(Q.Provider, { value: C }, k);
|
|
199
223
|
});
|
|
200
|
-
let
|
|
201
|
-
const
|
|
202
|
-
|
|
203
|
-
structId: e.name ||
|
|
224
|
+
let h;
|
|
225
|
+
const v = j.sources, y = ne(6), g = re(y, 2);
|
|
226
|
+
v.has(y) ? (h = v.get(y), h.count++) : (h = {
|
|
227
|
+
structId: e.name || g || `Component_${j.count}`,
|
|
204
228
|
count: 0
|
|
205
|
-
},
|
|
206
|
-
const
|
|
207
|
-
if (
|
|
208
|
-
...e.props,
|
|
209
|
-
...e.actions
|
|
210
|
-
}, e.children)
|
|
229
|
+
}, v.set(y, h), j.count++);
|
|
230
|
+
const w = `${h.structId}#${h.count}`, E = {};
|
|
231
|
+
if (r = {}, e.props && Object.assign(r, e.props), e.actions && Object.assign(r, e.actions), e.children)
|
|
211
232
|
for (const [o, i] of Object.entries(e.children))
|
|
212
233
|
if (typeof i == "function") {
|
|
213
|
-
const
|
|
214
|
-
const
|
|
215
|
-
return /* @__PURE__ */ O.createElement(
|
|
234
|
+
const c = i, I = (C) => {
|
|
235
|
+
const k = c(C);
|
|
236
|
+
return /* @__PURE__ */ O.createElement(k.View, null);
|
|
216
237
|
};
|
|
217
|
-
Reflect.set(
|
|
238
|
+
Reflect.set(E, $(o), I);
|
|
218
239
|
} else
|
|
219
|
-
Reflect.set(
|
|
220
|
-
for (const [o, i] of Object.entries(
|
|
221
|
-
o in
|
|
222
|
-
const
|
|
223
|
-
onPropChanging:
|
|
224
|
-
let
|
|
225
|
-
return
|
|
240
|
+
Reflect.set(E, o, i);
|
|
241
|
+
for (const [o, i] of Object.entries(n))
|
|
242
|
+
o in r && (D(i) ? u.set(o, i) : Reflect.set(r, o, i));
|
|
243
|
+
const B = {
|
|
244
|
+
onPropChanging: n.onPropChanging || e.events?.onPropChanging ? (o, i, c) => {
|
|
245
|
+
let I = !0, C = n.onPropChanging;
|
|
246
|
+
return C && (I = C(String(o), i, c)), I && (C = e.events?.onPropChanging, C && (I = C(String(o), i, c))), I;
|
|
226
247
|
} : void 0,
|
|
227
|
-
onPropChange:
|
|
228
|
-
|
|
248
|
+
onPropChange: n.onPropChange || e.events?.onPropChange ? (o, i) => {
|
|
249
|
+
n.onPropChange?.(String(o), i), e.events?.onPropChange?.(String(o), i);
|
|
229
250
|
} : void 0
|
|
230
251
|
};
|
|
231
|
-
function
|
|
232
|
-
const i = `${
|
|
233
|
-
return
|
|
252
|
+
function L(o) {
|
|
253
|
+
const i = `${m}${$(o)}`;
|
|
254
|
+
return n[i] || e.events?.[i];
|
|
234
255
|
}
|
|
235
|
-
function
|
|
236
|
-
const i = `${
|
|
237
|
-
return ((
|
|
238
|
-
let
|
|
239
|
-
return
|
|
256
|
+
function M(o) {
|
|
257
|
+
const i = `${ee}${$(o)}`;
|
|
258
|
+
return ((c, I) => {
|
|
259
|
+
let C = !0, k = n[i];
|
|
260
|
+
return k && (C = k(c, I)), C && (k = e.events?.[i], k && (C = k(c, I))), C;
|
|
240
261
|
});
|
|
241
262
|
}
|
|
242
|
-
function
|
|
243
|
-
const i = `${
|
|
244
|
-
return ((
|
|
245
|
-
|
|
263
|
+
function _(o) {
|
|
264
|
+
const i = `${te}${$(o)}`;
|
|
265
|
+
return ((c) => {
|
|
266
|
+
n[i]?.(c), e.events?.[i]?.(c);
|
|
246
267
|
});
|
|
247
268
|
}
|
|
248
|
-
let
|
|
269
|
+
let F = {};
|
|
249
270
|
if (e.props) {
|
|
250
271
|
for (const o of Object.keys(e.props))
|
|
251
|
-
|
|
252
|
-
onGet:
|
|
253
|
-
onChanging:
|
|
254
|
-
onChange:
|
|
272
|
+
B[o] = {
|
|
273
|
+
onGet: L(o),
|
|
274
|
+
onChanging: M(o),
|
|
275
|
+
onChange: _(o)
|
|
255
276
|
};
|
|
256
277
|
for (const o of Object.keys(e.props))
|
|
257
|
-
|
|
278
|
+
F[o] = G.deep;
|
|
258
279
|
}
|
|
259
280
|
if (e.actions)
|
|
260
281
|
for (const o of Object.keys(e.actions))
|
|
261
282
|
;
|
|
262
|
-
|
|
283
|
+
r = G(r, F, {
|
|
263
284
|
deep: !0
|
|
264
|
-
}),
|
|
265
|
-
|
|
285
|
+
}), r = z(r, u, B);
|
|
286
|
+
let A = {};
|
|
287
|
+
if (t = {
|
|
288
|
+
id: w,
|
|
266
289
|
parentId: void 0,
|
|
267
290
|
getHierarchyId: () => {
|
|
268
291
|
},
|
|
@@ -278,34 +301,43 @@ function te(e, r) {
|
|
|
278
301
|
},
|
|
279
302
|
bindings: u,
|
|
280
303
|
get msgBus() {
|
|
281
|
-
return
|
|
304
|
+
return l();
|
|
282
305
|
},
|
|
283
|
-
msgBroker:
|
|
306
|
+
msgBroker: d,
|
|
307
|
+
effects: A,
|
|
284
308
|
// view: componentDef.view,
|
|
285
|
-
View:
|
|
286
|
-
children:
|
|
287
|
-
model:
|
|
288
|
-
}, e.
|
|
309
|
+
View: f,
|
|
310
|
+
children: E,
|
|
311
|
+
model: r
|
|
312
|
+
}, e.effects)
|
|
313
|
+
for (const [o, i] of Object.entries(e.effects))
|
|
314
|
+
A[o] = se(
|
|
315
|
+
t,
|
|
316
|
+
o,
|
|
317
|
+
i
|
|
318
|
+
);
|
|
319
|
+
return e.events?.onInit && e.events.onInit(t), n.onInit && n.onInit(t), t;
|
|
289
320
|
}
|
|
290
|
-
function
|
|
291
|
-
const t =
|
|
292
|
-
return
|
|
321
|
+
function Ce(e, n) {
|
|
322
|
+
const t = W(() => ce(e, n));
|
|
323
|
+
return S(() => () => {
|
|
293
324
|
t.current = null;
|
|
294
|
-
}, [e,
|
|
325
|
+
}, [e, n]), t.current;
|
|
295
326
|
}
|
|
296
|
-
function
|
|
327
|
+
function ve(e) {
|
|
297
328
|
return (t) => {
|
|
298
|
-
const
|
|
299
|
-
return /* @__PURE__ */ O.createElement(
|
|
329
|
+
const r = e(t);
|
|
330
|
+
return /* @__PURE__ */ O.createElement(r.View, { ...t });
|
|
300
331
|
};
|
|
301
332
|
}
|
|
302
333
|
export {
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
334
|
+
Y as ComponentMsgFilter,
|
|
335
|
+
ye as bind,
|
|
336
|
+
be as bindProp,
|
|
337
|
+
se as createEffect,
|
|
338
|
+
ve as getFC,
|
|
339
|
+
D as isBinding,
|
|
340
|
+
re as toHtmlId,
|
|
341
|
+
Ce as useComponent
|
|
310
342
|
};
|
|
311
343
|
//# sourceMappingURL=componentModel.es.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"componentModel.es.js","sources":["../../src/componentModel/componentModel.tsx"],"sourcesContent":["import React, { useMemo } from 'react';\r\nimport { PropsWithChildren, useEffect, useLayoutEffect, FC, ReactNode } from 'react';\r\nimport {\r\n $CG_IN,\r\n $CG_OUT,\r\n $TypeArgHeaders,\r\n $TypeArgStruct,\r\n Msg,\r\n MsgBus,\r\n MsgProviderParams,\r\n MsgStruct,\r\n MsgSubscriberParams,\r\n OutStruct,\r\n} from '@actdim/msgmesh/msgBusCore';\r\nimport { MaybePromise, Mutable, SafeKey, Skip } from '@actdim/utico/typeCore';\r\nimport { observer } from 'mobx-react-lite';\r\nimport { action, observable, runInAction } from 'mobx';\r\nimport { useLazyRef } from '@/reactHooks';\r\nimport { getGlobalFlags } from '@/globals';\r\nimport { ReactComponentContext, useComponentContext } from './componentContext';\r\nimport { ComponentMsgHeaders, TreeNode } from './contracts';\r\nimport { lazy } from '@actdim/utico/utils';\r\n\r\nexport enum ComponentMsgFilter {\r\n None = 0,\r\n // AcceptFrom...\r\n FromAncestors = 1 << 0,\r\n FromDescendants = 1 << 1,\r\n}\r\n\r\nexport type MsgChannelGroupProviderParams<\r\n TStruct extends MsgStruct = MsgStruct,\r\n TChannel extends keyof TStruct = keyof TStruct,\r\n TGroup extends keyof TStruct[TChannel] = typeof $CG_IN, // keyof TStruct[TChannel]\r\n TMsgHeaders extends ComponentMsgHeaders = ComponentMsgHeaders,\r\n TScope = any,\r\n> = Skip<\r\n MsgProviderParams<TStruct, TChannel, TGroup>,\r\n 'channel' | 'group' | 'callback' | 'filter'\r\n> & {\r\n // resolve\r\n callback?: (\r\n msgIn: Msg<TStruct, TChannel, TGroup, TMsgHeaders>,\r\n headers: TMsgHeaders,\r\n scope: TScope,\r\n ) => MaybePromise<OutStruct<TStruct, TChannel>>;\r\n filter?: (msg: Msg<TStruct, TChannel, TGroup, TMsgHeaders>, scope: TScope) => boolean;\r\n componentFilter?: ComponentMsgFilter;\r\n};\r\n\r\nexport type MsgChannelGroupSubscriberParams<\r\n TStruct extends MsgStruct = MsgStruct,\r\n TChannel extends keyof TStruct = keyof TStruct,\r\n TGroup extends keyof TStruct[TChannel] = typeof $CG_IN, // keyof TStruct[TChannel]\r\n TMsgHeaders extends ComponentMsgHeaders = ComponentMsgHeaders,\r\n TScope = any,\r\n> = Skip<\r\n MsgSubscriberParams<TStruct, TChannel, TGroup>,\r\n 'channel' | 'group' | 'callback' | 'filter'\r\n> & {\r\n callback?: (msg: Msg<TStruct, TChannel, TGroup, TMsgHeaders>, scope: TScope) => void;\r\n filter?: (msg: Msg<TStruct, TChannel, TGroup, TMsgHeaders>, scope: TScope) => boolean;\r\n componentFilter?: ComponentMsgFilter;\r\n};\r\n\r\n// MsgScope\r\nexport type MsgBrokerScope<\r\n TStruct extends MsgStruct /*= MsgStruct*/,\r\n TKeysToProvide extends keyof TStruct = keyof TStruct,\r\n TKeysToSubscribe extends keyof TStruct = keyof TStruct,\r\n TKeysToPublish extends keyof TStruct = keyof TStruct,\r\n> = {\r\n provide?: TKeysToProvide;\r\n // consume\r\n subscribe?: TKeysToSubscribe;\r\n // produce\r\n publish?: TKeysToPublish;\r\n};\r\n\r\nexport type ComponentPropStruct = Record<string, any>;\r\n// export type ComponentPropStruct = {\r\n// [prop: string]: any;\r\n// };\r\n\r\nexport type ComponentMethodStruct = Record<string, Function>;\r\n// export type ComponentMethodStruct = {\r\n// [action: string]: Function;\r\n// };\r\n\r\n// export type ComponentRefStruct = Record<string, ComponentStruct<TMsgStruct, T>>;\r\nexport type ComponentRefStruct = {\r\n [name: string]: ComponentStruct | ((params: any) => ComponentStruct);\r\n};\r\n\r\nexport type ComponentStructBase<\r\n TMsgStruct extends MsgStruct = MsgStruct,\r\n TPropStruct extends ComponentPropStruct = ComponentPropStruct,\r\n TMsgScope extends MsgBrokerScope<TMsgStruct> = MsgBrokerScope<TMsgStruct>,\r\n> = {\r\n props?: TPropStruct;\r\n actions?: ComponentMethodStruct;\r\n children?: ComponentRefStruct;\r\n // msgs?\r\n msgScope?: TMsgScope;\r\n};\r\n\r\n// ComponentShape\r\nexport type ComponentStruct<\r\n TMsgStruct extends MsgStruct = MsgStruct,\r\n T extends ComponentStructBase<TMsgStruct> = ComponentStructBase<TMsgStruct>,\r\n // TMsgBus extends MsgBus<MsgStruct> = MsgBus<MsgStruct>,\r\n // T extends ComponentStructBase<TMsgBus[typeof $TypeArgStruct]> = ComponentStructBase<\r\n // TMsgBus[typeof $TypeArgStruct]\r\n // >,\r\n> = T & {\r\n msg: TMsgStruct;\r\n};\r\n\r\nexport type MsgBroker<\r\n TStructToProvide extends MsgStruct = MsgStruct,\r\n TStructToSubscribe extends MsgStruct = MsgStruct,\r\n TMsgHeaders extends ComponentMsgHeaders = ComponentMsgHeaders,\r\n TScope = any,\r\n> = {\r\n // providers\r\n provide?: {\r\n [TChannel in keyof TStructToProvide]: {\r\n [TGroup in keyof Skip<\r\n TStructToProvide[TChannel],\r\n typeof $CG_OUT\r\n >]?: MsgChannelGroupProviderParams<\r\n TStructToProvide,\r\n TChannel,\r\n TGroup,\r\n TMsgHeaders,\r\n TScope\r\n >;\r\n };\r\n };\r\n // subscribers\r\n subscribe?: {\r\n [TChannel in keyof TStructToSubscribe]: {\r\n [TGroup in keyof TStructToSubscribe[TChannel]]?: MsgChannelGroupSubscriberParams<\r\n TStructToSubscribe,\r\n TChannel,\r\n TGroup,\r\n TMsgHeaders,\r\n TScope\r\n >;\r\n };\r\n };\r\n abortController?: AbortController;\r\n};\r\n\r\ntype ValueConverter<TTo, TFrom> = {\r\n // ConvertFrom\r\n convert(value: TFrom): TTo;\r\n // ConvertTo\r\n convertBack(value: TTo): TFrom;\r\n};\r\n\r\ntype ValidationResult = {\r\n valid: boolean;\r\n message: string;\r\n};\r\n\r\ntype Validator<T> = {\r\n options: {\r\n blur: boolean;\r\n };\r\n validate: (value: T) => MaybePromise<ValidationResult>;\r\n};\r\n\r\nconst $isBinding = Symbol('$isBinding'); // brand\r\n\r\nclass Binding<T = any, TFrom = any> {\r\n // getter\r\n readonly get: () => T;\r\n // setter\r\n readonly set: (value: T) => void;\r\n readonly converter: ValueConverter<T, TFrom>;\r\n readonly validator: Validator<T>;\r\n readonly readOnly: boolean;\r\n constructor(\r\n get: () => T,\r\n set?: (value: T) => void,\r\n converter?: ValueConverter<T, TFrom>,\r\n validator?: Validator<T>,\r\n ) {\r\n this.get = get;\r\n this.set = set;\r\n this.converter = converter;\r\n this.validator = validator;\r\n this.readOnly = !!set;\r\n this[$isBinding] = true;\r\n }\r\n [$isBinding]: boolean;\r\n}\r\n\r\nexport function isBinding(obj: any): obj is Binding {\r\n return obj[$isBinding] === true;\r\n}\r\n\r\nexport function bind<T, TFrom = any>(\r\n get: () => T,\r\n set?: (value: T) => void,\r\n converter?: ValueConverter<T, TFrom>,\r\n validator?: Validator<T>,\r\n) {\r\n return new Binding(get, set, converter, validator);\r\n}\r\n\r\nexport function bindProp<T extends object, P extends keyof T>(target: () => T, prop: P) {\r\n return new Binding(\r\n () => target()[prop],\r\n (value: T[P]) => {\r\n target()[prop] = value;\r\n },\r\n );\r\n}\r\n\r\nexport type ComponentPropSource<T> = T | Binding<T>;\r\n\r\nexport type ComponentPropParams<TPropStruct extends ComponentPropStruct> = {\r\n [P in keyof TPropStruct]?: ComponentPropSource<TPropStruct[P]>;\r\n};\r\n\r\n// const $ON_PROP_CHANGING = \"onPropChanging\";\r\n// const $ON_PROP_CHANGE = \"onPropChange\";\r\n\r\nconst $ON_GET = 'onGet';\r\n// const $ON_BEFORE_SET = \"onBeforeSet\";\r\nconst $ON_CHANGING = 'onChanging';\r\nconst $ON_CHANGE = 'onChange';\r\n// const $ON_SET = \"onSet\";\r\n\r\ntype PropValueChangingHandler<TProp = PropKey> = (\r\n prop: TProp,\r\n oldValue: any,\r\n newValue: any,\r\n) => boolean;\r\ntype PropValueChangeHandler<TProp = PropKey> = (prop: TProp, value: any) => void;\r\n\r\n// BeforeValueSetHandler\r\ntype ValueChangingHandler<T = any> = (oldValue: T, newValue: T) => boolean;\r\n// ValueSetHandler\r\ntype ValueChangeHandler<T = any> = (value: T) => void;\r\n\r\ntype ComponentEvents<TStruct extends ComponentStruct = ComponentStruct> = {\r\n onPropChanging?: PropValueChangingHandler<keyof TStruct['props']>;\r\n onPropChange?: PropValueChangeHandler<keyof TStruct['props']>;\r\n onInit?: (model: Component<TStruct>) => void;\r\n onLayout?: (model: Component<TStruct>) => void;\r\n onReady?: (model: Component<TStruct>) => void;\r\n onLayoutDestroy?: (model: Component<TStruct>) => void; // onLayoutCleanup\r\n onDestroy?: (model: Component<TStruct>) => void; // onDispose/onCleanup\r\n onError?: (model: Component<TStruct>, error: any) => void;\r\n} & {\r\n [P in keyof TStruct['props'] as `${typeof $ON_GET}${Capitalize<P & string>}`]?: () => TStruct['props'][P];\r\n} & {\r\n [P in keyof TStruct['props'] as `${typeof $ON_CHANGING}${Capitalize<P & string>}`]?: ValueChangingHandler<\r\n TStruct['props']\r\n >;\r\n} & {\r\n [P in keyof TStruct['props'] as `${typeof $ON_CHANGE}${Capitalize<P & string>}`]?: ValueChangeHandler<\r\n TStruct['props']\r\n >;\r\n};\r\n\r\n// AllHTMLAttributes<JSX.Element>\r\n\r\ntype ComponentViewProps = {\r\n render?: boolean;\r\n} & PropsWithChildren;\r\n\r\n// ComponentRenderImplFn\r\ntype ComponentViewImplFn<\r\n TStruct extends ComponentStruct,\r\n TMsgHeaders extends ComponentMsgHeaders = ComponentMsgHeaders,\r\n> = (props: ComponentViewProps, model?: Component<TStruct, TMsgHeaders>) => ReactNode; // JSX.Element\r\n\r\n// ComponentRenderFn\r\ntype ComponentViewFn = (props: ComponentViewProps) => ReactNode; // JSX.Element\r\n\r\ntype PublicKeys<T> = {\r\n [K in keyof T]: K extends `_${string}` ? never : K;\r\n}[keyof T];\r\n\r\nexport type ComponentMsgBroker<\r\n TStruct extends ComponentStruct,\r\n TMsgHeaders extends ComponentMsgHeaders = ComponentMsgHeaders,\r\n> = MsgBroker<\r\n Pick<TStruct['msg'], SafeKey<TStruct['msg'], TStruct['msgScope']['provide']>>,\r\n Pick<TStruct['msg'], SafeKey<TStruct['msg'], TStruct['msgScope']['subscribe']>>,\r\n TMsgHeaders,\r\n Component<TStruct, TMsgHeaders>\r\n>;\r\n\r\nexport type ComponentDef<\r\n TStruct extends ComponentStruct,\r\n TMsgHeaders extends ComponentMsgHeaders = ComponentMsgHeaders,\r\n> = {\r\n name?: string;\r\n props?: TStruct['props'];\r\n actions?: TStruct['actions'];\r\n children?: ComponentDefChildren<TStruct['children']>;\r\n events?: ComponentEvents<TStruct>;\r\n // msgs?\r\n msgBroker?: ComponentMsgBroker<TStruct, TMsgHeaders>;\r\n msgBus?: MsgBus<TStruct['msg'], TMsgHeaders>;\r\n view?: ComponentViewImplFn<TStruct, TMsgHeaders>;\r\n};\r\n\r\ntype ComponentDefChildren<TRefStruct extends ComponentRefStruct> = {\r\n [P in keyof TRefStruct]: TRefStruct[P] extends (params: infer TParams) => infer T\r\n ? T extends ComponentStruct\r\n ? (params: TParams) => Component<T>\r\n : never\r\n : TRefStruct[P] extends ComponentStruct\r\n ? Component<TRefStruct[P]>\r\n : never;\r\n};\r\n\r\ntype ComponentChildren<TRefStruct extends ComponentRefStruct> = {\r\n [P in keyof TRefStruct as TRefStruct[P] extends Function\r\n ? `${Capitalize<P & string>}`\r\n : P]: TRefStruct[P] extends (params: infer TParams) => infer T\r\n ? T extends ComponentStruct\r\n ? FC<ComponentParams<T> & TParams>\r\n : never\r\n : TRefStruct[P] extends ComponentStruct\r\n ? Component<TRefStruct[P]>\r\n : never;\r\n};\r\n\r\nexport type ComponentMsgStruct<TStruct extends ComponentStruct = ComponentStruct> = Pick<\r\n TStruct['msg'],\r\n | SafeKey<TStruct['msg'], TStruct['msgScope']['provide']>\r\n | SafeKey<TStruct['msg'], TStruct['msgScope']['subscribe']>\r\n | SafeKey<TStruct['msg'], TStruct['msgScope']['publish']>\r\n>;\r\n\r\nexport type ComponentBase<\r\n TStruct extends ComponentStruct = ComponentStruct,\r\n TMsgHeaders extends ComponentMsgHeaders = ComponentMsgHeaders,\r\n> = {\r\n id: string;\r\n parentId: string;\r\n // getHierarchyPath?\r\n getHierarchyId(): string;\r\n getParent(): string | undefined;\r\n getChildren(): string[];\r\n getChainUp(): string[];\r\n getChainDown(): string[];\r\n getNodeMap(): Map<string, TreeNode>;\r\n bindings: Map<PropKey, Binding>;\r\n msgBus: MsgBus<ComponentMsgStruct<TStruct>, TMsgHeaders>;\r\n msgBroker: ComponentMsgBroker<TStruct>;\r\n View: ComponentViewFn;\r\n};\r\n\r\nexport type ComponentModel<TStruct extends ComponentStruct = ComponentStruct> = TStruct['props'] &\r\n Readonly<TStruct['actions']>;\r\n\r\nexport type Component<\r\n TStruct extends ComponentStruct = ComponentStruct,\r\n TMsgHeaders extends ComponentMsgHeaders = ComponentMsgHeaders,\r\n> = {\r\n readonly model: ComponentModel<TStruct>;\r\n readonly children: Readonly<ComponentChildren<TStruct['children']>>;\r\n} & Readonly<ComponentBase<TStruct, TMsgHeaders>>;\r\n\r\n// style: CSSProperties;\r\n\r\ntype PropEventHandlers = {\r\n onGet?: () => any;\r\n onChanging?: (oldValue: any, newValue: any) => boolean;\r\n onChange?: (value: any) => void;\r\n};\r\n\r\ntype PropKey = string | symbol;\r\ntype ProxyEventHandlers = {\r\n onPropChanging?: PropValueChangingHandler<PropKey>;\r\n onPropChange?: PropValueChangeHandler<PropKey>;\r\n} & Record<PropKey, PropEventHandlers>;\r\n\r\n// ComponentConfig\r\nexport type ComponentParams<TStruct extends ComponentStruct = ComponentStruct> =\r\n ComponentPropParams<TStruct['props']> & ComponentEvents<TStruct>; // & PropsWithChildren\r\n\r\nconst blankView = () => null;\r\n\r\nfunction createProxy(\r\n state: any,\r\n bindings: Map<PropKey, Binding>,\r\n proxyEventHandlers: ProxyEventHandlers,\r\n) {\r\n const onPropChanging = proxyEventHandlers.onPropChanging;\r\n const onPropChange = proxyEventHandlers.onPropChange;\r\n return new Proxy(state, {\r\n get(obj, prop, receiver) {\r\n const onGet = proxyEventHandlers[prop]?.onGet;\r\n if (onGet) {\r\n return onGet();\r\n }\r\n const binding = bindings.get(String(prop));\r\n if (binding) {\r\n let value: any = undefined;\r\n value = binding.get();\r\n return value;\r\n }\r\n return Reflect.get(obj, prop, receiver);\r\n },\r\n set(obj, prop, value, receiver) {\r\n const oldValue = obj[prop];\r\n\r\n const onChanging = proxyEventHandlers[prop]?.onChanging;\r\n if (onChanging) {\r\n const shouldChange = onChanging(oldValue, value);\r\n if (!shouldChange) {\r\n return true;\r\n }\r\n }\r\n\r\n if (onPropChanging) {\r\n const shouldChange = onPropChanging(prop, oldValue, value);\r\n if (!shouldChange) {\r\n return true;\r\n }\r\n }\r\n\r\n const result = runInAction(() => {\r\n return Reflect.set(obj, prop, value, receiver);\r\n });\r\n\r\n const binding = bindings.get(prop);\r\n if (binding?.set) {\r\n binding.set(value);\r\n }\r\n\r\n const onChange = proxyEventHandlers[prop]?.onChange;\r\n if (onChange) {\r\n onChange(value);\r\n }\r\n\r\n if (onPropChange) {\r\n onPropChange(prop, value);\r\n }\r\n\r\n return result;\r\n },\r\n });\r\n}\r\n\r\nfunction capitalize(name: string) {\r\n return name.replace(/^./, name[0].toUpperCase());\r\n}\r\n\r\nfunction asyncToGeneratorFlow(asyncFn: (...args: any[]) => Promise<any>) {\r\n return function* (...args: any[]) {\r\n const result = yield asyncFn(...args);\r\n return result;\r\n };\r\n}\r\n\r\ntype ComponentSourceInfo = {\r\n // classId\r\n structId: string;\r\n count: 0;\r\n};\r\n\r\nconst componentData = {\r\n sources: new Map<string, ComponentSourceInfo>(),\r\n count: 0,\r\n};\r\n\r\nexport function toHtmlId(url: string, segmentsCount: number = 1): string {\r\n const clean = url.split(/[?#]/)[0];\r\n const parts = clean\r\n .split('/')\r\n .filter(Boolean)\r\n .map((segment) => decodeURIComponent(segment));\r\n\r\n const last = parts.slice(-segmentsCount);\r\n const raw = last.join('-');\r\n let id = raw\r\n .normalize('NFKD')\r\n .replace(/[^a-zA-Z0-9\\-_:.+#]/g, '-')\r\n .replace(/-+/g, '-')\r\n .replace(/^[^a-zA-Z]+/, '-')\r\n .replace(/[+#]$/, '-');\r\n return id;\r\n}\r\n\r\nfunction getCallerFileName(depth = 2): string | null {\r\n const err = new Error();\r\n const stack = err.stack?.split('\\n');\r\n if (!stack || stack.length <= depth) return null;\r\n\r\n const match = stack[depth].match(/\\((.*):\\d+:\\d+\\)/);\r\n if (match) {\r\n return match[1];\r\n }\r\n return null;\r\n}\r\n\r\nfunction registerMsgBroker<TStruct extends ComponentStruct = ComponentStruct>(\r\n component: Component<TStruct>,\r\n) {\r\n const providers = component?.msgBroker.provide;\r\n if (providers) {\r\n for (const [channel, providerGroups] of Object.entries(providers)) {\r\n for (const [g, p] of Object.entries(providerGroups)) {\r\n const provider = p as MsgChannelGroupProviderParams;\r\n const callback = provider.callback;\r\n if (callback) {\r\n provider.callback = (msg, headers) => {\r\n return callback(msg, headers, component);\r\n };\r\n }\r\n const filter = provider.filter;\r\n const componentFilter = provider.componentFilter || ComponentMsgFilter.None;\r\n const msgFilter = (msg) => {\r\n let result = true;\r\n if (componentFilter & ComponentMsgFilter.FromAncestors) {\r\n const ancestorIds = component.getChainUp();\r\n result = ancestorIds.indexOf(msg.headers?.sourceId) >= 0;\r\n }\r\n if (result && componentFilter & ComponentMsgFilter.FromDescendants) {\r\n const ancestorIds = component.getChainDown();\r\n result = ancestorIds.indexOf(msg.headers?.sourceId) >= 0;\r\n }\r\n if (result && filter) {\r\n result = filter(msg, component);\r\n }\r\n return result;\r\n };\r\n provider.filter = msgFilter;\r\n\r\n component.msgBus.provide({\r\n ...p,\r\n channel: channel,\r\n group: g,\r\n config: {\r\n abortSignal: component.msgBroker.abortController.signal,\r\n },\r\n });\r\n }\r\n }\r\n }\r\n const subscribers = component?.msgBroker?.subscribe;\r\n if (subscribers) {\r\n for (const [channel, subscriberGroups] of Object.entries(subscribers)) {\r\n for (const [g, s] of Object.entries(subscriberGroups)) {\r\n const subscriber = s as MsgChannelGroupSubscriberParams;\r\n const callback = subscriber.callback;\r\n if (callback) {\r\n subscriber.callback = (msg) => {\r\n return callback(msg, component);\r\n };\r\n }\r\n const filter = subscriber.filter;\r\n const componentFilter = subscriber.componentFilter || ComponentMsgFilter.None;\r\n const msgFilter = (msg) => {\r\n let result = true;\r\n if (componentFilter & ComponentMsgFilter.FromAncestors) {\r\n const ancestorIds = component.getChainUp();\r\n result = ancestorIds.indexOf(msg.headers?.sourceId) >= 0;\r\n }\r\n if (result && componentFilter & ComponentMsgFilter.FromDescendants) {\r\n const ancestorIds = component.getChainDown();\r\n result = ancestorIds.indexOf(msg.headers?.sourceId) >= 0;\r\n }\r\n if (result && filter) {\r\n result = filter(msg, component);\r\n }\r\n return result;\r\n };\r\n subscriber.filter = msgFilter;\r\n\r\n component.msgBus.on({\r\n ...s,\r\n channel: channel,\r\n group: g,\r\n config: {\r\n abortSignal: component.msgBroker.abortController.signal,\r\n },\r\n });\r\n }\r\n }\r\n }\r\n}\r\n\r\nfunction getComponentMsgBus<TStruct extends ComponentStruct = ComponentStruct>(\r\n msgBus: MsgBus<TStruct['msg']>,\r\n headerSetter: (headers?: ComponentMsgHeaders) => void,\r\n) {\r\n const updateParams = (params: { headers?: ComponentMsgHeaders }) => {\r\n if (!params.headers) {\r\n params.headers = {};\r\n }\r\n headerSetter?.(params.headers);\r\n };\r\n return {\r\n config: msgBus.config,\r\n on: (params) => {\r\n return msgBus.on(params);\r\n },\r\n onceAsync: (params) => {\r\n return msgBus.onceAsync(params);\r\n },\r\n stream: (params) => {\r\n return msgBus.stream(params);\r\n },\r\n provide: (params) => {\r\n updateParams(params);\r\n return msgBus.provide(params);\r\n },\r\n dispatch: (params) => {\r\n updateParams(params);\r\n return msgBus.dispatch(params);\r\n },\r\n dispatchAsync: (params) => {\r\n updateParams(params);\r\n return msgBus.dispatchAsync(params);\r\n },\r\n } as MsgBus<TStruct['msg']>;\r\n}\r\n\r\nfunction createComponent<TStruct extends ComponentStruct = ComponentStruct>(\r\n componentDef: ComponentDef<TStruct>,\r\n params: ComponentParams<TStruct>,\r\n): Component<TStruct> {\r\n // result\r\n let component: Mutable<Component<TStruct>>;\r\n let model: Mutable<ComponentModel<TStruct>>;\r\n\r\n const view = componentDef.view;\r\n let msgBus = componentDef.msgBus;\r\n\r\n const bindings = new Map<PropKey, Binding>();\r\n\r\n const componentMsgBus = lazy(() => {\r\n return getComponentMsgBus(msgBus, (headers) => {\r\n if (headers?.sourceId == undefined) {\r\n headers.sourceId = component.id;\r\n }\r\n }); // as ComponentModel<TStruct>['msgBus']\r\n });\r\n\r\n let msgBroker = {\r\n ...componentDef.msgBroker,\r\n };\r\n\r\n if (!msgBroker.abortController) {\r\n msgBroker.abortController = new AbortController();\r\n }\r\n\r\n const ViewFC = observer((props: ComponentViewProps) => {\r\n const id = component.id;\r\n const context = useComponentContext();\r\n const parentId = context.currentId;\r\n\r\n component.parentId = parentId;\r\n\r\n if (!msgBus) {\r\n msgBus = context.msgBus;\r\n }\r\n\r\n const scopeContext = useMemo(\r\n () => ({ ...context, currentId: id }),\r\n [componentDef, params, context],\r\n );\r\n\r\n useLayoutEffect(() => {\r\n try {\r\n if (getGlobalFlags().debug) {\r\n const hierarchyId = component.getHierarchyId();\r\n console.debug(`${hierarchyId}>layout`);\r\n }\r\n\r\n context.register(id, parentId);\r\n\r\n component.getHierarchyId = () => context.getHierarchyPath(id);\r\n component.getChainDown = () => context.getChainDown(id);\r\n component.getChainUp = () => context.getChainUp(id);\r\n component.getChildren = () => context.getChildren(id);\r\n component.getParent = () => context.getParent(id);\r\n component.getNodeMap = () => context.getNodeMap();\r\n\r\n registerMsgBroker(component);\r\n\r\n componentDef.events?.onLayout?.(component);\r\n params?.onLayout?.(component);\r\n } catch (err) {\r\n componentDef.events?.onError?.(component, err);\r\n params?.onError?.(component, err);\r\n }\r\n\r\n return () => {\r\n if (getGlobalFlags().debug) {\r\n const hierarchyId = component.getHierarchyId();\r\n console.debug(`${hierarchyId}>layout-destroy`);\r\n }\r\n context.unregister(id);\r\n\r\n msgBroker.abortController?.abort();\r\n\r\n componentDef.events?.onLayoutDestroy?.(component);\r\n params?.onLayoutDestroy?.(component);\r\n };\r\n }, [componentDef, params, context]);\r\n\r\n useEffect(() => {\r\n try {\r\n if (getGlobalFlags().debug) {\r\n // mount\r\n const hierarchyId = component.getHierarchyId();\r\n console.debug(`${hierarchyId}>ready`);\r\n }\r\n componentDef.events?.onReady?.(component);\r\n params?.onReady?.(component);\r\n } catch (err) {\r\n if (getGlobalFlags().debug) {\r\n // unmount\r\n const hierarchyId = component.getHierarchyId();\r\n console.debug(`${hierarchyId}>destroy`);\r\n }\r\n componentDef.events?.onError?.(component, err);\r\n params?.onError?.(component, err);\r\n }\r\n return () => {\r\n componentDef.events?.onDestroy?.(component);\r\n params?.onDestroy?.(component);\r\n };\r\n }, [componentDef, params, context]);\r\n\r\n let content: React.ReactNode;\r\n // let content: any;\r\n try {\r\n if (getGlobalFlags().debug) {\r\n // render\r\n const hierarchyId = component.getHierarchyId();\r\n console.debug(`${hierarchyId}>view`);\r\n }\r\n if (typeof view === 'function') {\r\n content = view(props, component);\r\n } else {\r\n // content = props.children;\r\n content = <>{props.children}</>;\r\n }\r\n } catch (err) {\r\n // throw err;\r\n const errDetails = JSON.stringify(err);\r\n // msgBus.dispatch\r\n content = <>{errDetails}</>;\r\n }\r\n return (\r\n <ReactComponentContext.Provider value={scopeContext}>\r\n {content}\r\n </ReactComponentContext.Provider>\r\n );\r\n });\r\n\r\n let srcInfo: ComponentSourceInfo;\r\n const sources = componentData.sources;\r\n\r\n const fileName = getCallerFileName(6);\r\n const srcName = toHtmlId(fileName, 2);\r\n\r\n if (sources.has(fileName)) {\r\n srcInfo = sources.get(fileName);\r\n srcInfo.count++;\r\n } else {\r\n const structId = componentDef.name || srcName || `Component_${componentData.count}`;\r\n srcInfo = {\r\n structId: structId,\r\n count: 0,\r\n };\r\n sources.set(fileName, srcInfo);\r\n componentData.count++;\r\n }\r\n\r\n const id = `${srcInfo.structId}#${srcInfo.count}`;\r\n\r\n const children = {} as ComponentChildren<TStruct['children']>;\r\n\r\n model = {\r\n ...componentDef.props,\r\n ...componentDef.actions,\r\n };\r\n\r\n if (componentDef.children) {\r\n for (const [key, value] of Object.entries(componentDef.children)) {\r\n if (typeof value == 'function') {\r\n const view = value as (params: any) => Component;\r\n // observer\r\n const ChildViewFC: ComponentViewImplFn<TStruct> = (props) => {\r\n const c = view(props);\r\n return <c.View />;\r\n // if (typeof c.view === \"function\") {\r\n // return c.view(props);\r\n // }\r\n // return <>{props.children}</>;\r\n };\r\n Reflect.set(children, capitalize(key), ChildViewFC);\r\n } else {\r\n Reflect.set(children, key, value);\r\n }\r\n }\r\n }\r\n\r\n // Reflect.ownKeys/Object.keys\r\n for (const [key, value] of Object.entries(params)) {\r\n // model.hasOwnProperty(key)\r\n if (key in model) {\r\n if (isBinding(value)) {\r\n bindings.set(key, value);\r\n } else {\r\n Reflect.set(model, key, value);\r\n }\r\n }\r\n }\r\n\r\n const proxyEventHandlers: Pick<ProxyEventHandlers, 'onPropChanging' | 'onPropChange'> = {\r\n onPropChanging:\r\n params?.onPropChanging || componentDef.events?.onPropChanging\r\n ? (prop, oldValue, newValue) => {\r\n let result = true;\r\n let handler = params.onPropChanging;\r\n if (handler) {\r\n result = handler(String(prop), oldValue, newValue);\r\n }\r\n if (result) {\r\n handler = componentDef.events?.onPropChanging;\r\n if (handler) {\r\n result = handler(String(prop), oldValue, newValue);\r\n }\r\n }\r\n return result;\r\n }\r\n : undefined,\r\n onPropChange:\r\n params?.onPropChange || componentDef.events?.onPropChange\r\n ? (prop, value) => {\r\n params.onPropChange?.(String(prop), value);\r\n componentDef.events.onPropChange?.(String(prop), value);\r\n }\r\n : undefined,\r\n };\r\n\r\n function resolveOnGetEventHandler(prop: string) {\r\n const key = `${$ON_GET}${capitalize(prop)}`;\r\n return params?.[key] || componentDef.events?.[key];\r\n }\r\n\r\n function resolveOnChangingEventHandler(prop: string) {\r\n const key = `${$ON_CHANGING}${capitalize(prop)}`;\r\n return ((oldValue: any, newValue: any) => {\r\n let result = true;\r\n let handler = params?.[key] as ValueChangingHandler<any>;\r\n if (handler) {\r\n result = handler(oldValue, newValue);\r\n }\r\n if (result) {\r\n handler = componentDef.events[key] as ValueChangingHandler<any>;\r\n if (handler) {\r\n result = handler(oldValue, newValue);\r\n }\r\n }\r\n return result;\r\n }) as ValueChangingHandler;\r\n }\r\n\r\n function resolveOnChangeEventHandler(prop: string) {\r\n const key = `${$ON_CHANGE}${capitalize(prop)}`;\r\n return ((value: any) => {\r\n (params[key] as ValueChangeHandler<any>)?.(value);\r\n (componentDef.events[key] as ValueChangeHandler<any>)?.(value);\r\n }) as ValueChangeHandler;\r\n }\r\n\r\n let annotationMap: Record<string, any> = {};\r\n\r\n if (componentDef.props) {\r\n for (const prop of Object.keys(componentDef.props)) {\r\n proxyEventHandlers[prop] = {\r\n onGet: resolveOnGetEventHandler(prop),\r\n onChanging: resolveOnChangingEventHandler(prop),\r\n onChange: resolveOnChangeEventHandler(prop),\r\n };\r\n }\r\n\r\n for (const key of Object.keys(componentDef.props)) {\r\n annotationMap[key] = observable.ref;\r\n }\r\n }\r\n\r\n if (componentDef.actions) {\r\n const annotationMap: Record<string, any> = {};\r\n for (const key of Object.keys(componentDef.actions)) {\r\n annotationMap[key] = action;\r\n }\r\n }\r\n\r\n model = observable(model, annotationMap, {\r\n deep: true,\r\n });\r\n\r\n model = createProxy(model, bindings, proxyEventHandlers);\r\n\r\n component = {\r\n id: id,\r\n parentId: undefined,\r\n getHierarchyId: () => undefined,\r\n getChainDown: () => undefined,\r\n getChainUp: () => undefined,\r\n getChildren: () => undefined,\r\n getParent: () => undefined,\r\n getNodeMap: () => undefined,\r\n bindings: bindings,\r\n get msgBus() {\r\n return componentMsgBus();\r\n },\r\n msgBroker: msgBroker,\r\n // view: componentDef.view,\r\n View: ViewFC,\r\n children: children,\r\n model: model,\r\n };\r\n\r\n if (componentDef.events?.onInit) {\r\n componentDef.events.onInit(component);\r\n }\r\n\r\n if (params?.onInit) {\r\n params.onInit(component);\r\n }\r\n\r\n return component;\r\n}\r\n\r\nexport function useComponent<\r\n TStruct extends ComponentStruct = ComponentStruct,\r\n TMsgHeaders extends ComponentMsgHeaders = ComponentMsgHeaders,\r\n>(componentDef: ComponentDef<TStruct, TMsgHeaders>, params: ComponentParams<TStruct>) {\r\n const ref = useLazyRef(() => createComponent(componentDef, params));\r\n useLayoutEffect(() => {\r\n return () => {\r\n ref.current = null;\r\n };\r\n }, [componentDef, params]);\r\n return ref.current;\r\n}\r\n\r\n// asFC/toFC\r\nexport function getFC<TStruct extends ComponentStruct>(\r\n factory: (params: ComponentParams<TStruct>) => Component<TStruct>,\r\n): FC<ComponentParams<TStruct>> {\r\n // observer\r\n const fc = (params: ComponentParams<TStruct> & PropsWithChildren) => {\r\n // componentHook\r\n const c = factory(params); // without useRef!\r\n // return c.view();\r\n return <c.View {...params} />;\r\n };\r\n return fc;\r\n}\r\n"],"names":["ComponentMsgFilter","$isBinding","Binding","get","set","converter","validator","isBinding","obj","bind","bindProp","target","prop","value","$ON_GET","$ON_CHANGING","$ON_CHANGE","createProxy","state","bindings","proxyEventHandlers","onPropChanging","onPropChange","receiver","onGet","binding","oldValue","onChanging","result","runInAction","onChange","capitalize","name","componentData","toHtmlId","url","segmentsCount","segment","getCallerFileName","depth","stack","match","registerMsgBroker","component","providers","channel","providerGroups","g","p","provider","callback","msg","headers","filter","componentFilter","msgFilter","subscribers","subscriberGroups","s","subscriber","getComponentMsgBus","msgBus","headerSetter","updateParams","params","createComponent","componentDef","model","view","componentMsgBus","lazy","msgBroker","ViewFC","observer","props","id","context","useComponentContext","parentId","scopeContext","useMemo","useLayoutEffect","getGlobalFlags","hierarchyId","err","useEffect","content","React","errDetails","ReactComponentContext","srcInfo","sources","fileName","srcName","children","key","ChildViewFC","c","newValue","handler","resolveOnGetEventHandler","resolveOnChangingEventHandler","resolveOnChangeEventHandler","annotationMap","observable","useComponent","ref","useLazyRef","getFC","factory"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"componentModel.es.js","sources":["../../src/componentModel/componentModel.tsx"],"sourcesContent":["import React, { useMemo } from 'react';\r\nimport { PropsWithChildren, useEffect, useLayoutEffect, FC, ReactNode } from 'react';\r\nimport {\r\n $CG_IN,\r\n $CG_OUT,\r\n $TypeArgHeaders,\r\n $TypeArgStruct,\r\n Msg,\r\n MsgBus,\r\n MsgProviderParams,\r\n MsgStruct,\r\n MsgSubscriberParams,\r\n OutStruct,\r\n} from '@actdim/msgmesh/msgBusCore';\r\nimport {\r\n Extends,\r\n HasKeys,\r\n IF,\r\n IsEmpty,\r\n KeyOf,\r\n MaybeKeyOf,\r\n MaybePromise,\r\n Mutable,\r\n Require,\r\n Skip,\r\n} from '@actdim/utico/typeCore';\r\nimport { observer } from 'mobx-react-lite';\r\nimport {\r\n action,\r\n isObservable,\r\n observable,\r\n runInAction,\r\n toJS,\r\n autorun,\r\n IReactionDisposer,\r\n} from 'mobx';\r\nimport { useLazyRef } from '@/reactHooks';\r\nimport { getGlobalFlags } from '@/globals';\r\nimport { ReactComponentContext, useComponentContext } from './componentContext';\r\nimport { ComponentMsgHeaders, TreeNode } from './contracts';\r\nimport { lazy } from '@actdim/utico/utils';\r\nimport { isPlainObject } from 'mobx/dist/internal';\r\n\r\nexport enum ComponentMsgFilter {\r\n None = 0,\r\n // AcceptFrom...\r\n FromAncestors = 1 << 0,\r\n FromDescendants = 1 << 1,\r\n}\r\n\r\nexport type MsgChannelGroupProviderParams<\r\n TStruct extends MsgStruct = MsgStruct,\r\n TChannel extends keyof TStruct = keyof TStruct,\r\n TGroup extends keyof TStruct[TChannel] = typeof $CG_IN, // keyof TStruct[TChannel]\r\n TMsgHeaders extends ComponentMsgHeaders = ComponentMsgHeaders,\r\n TScope = any,\r\n> = Skip<\r\n MsgProviderParams<TStruct, TChannel, TGroup>,\r\n 'channel' | 'group' | 'callback' | 'filter'\r\n> & {\r\n // resolve\r\n callback?: (\r\n msgIn: Msg<TStruct, TChannel, TGroup, TMsgHeaders>,\r\n headers: TMsgHeaders,\r\n scope: TScope,\r\n ) => MaybePromise<OutStruct<TStruct, TChannel>>;\r\n filter?: (msg: Msg<TStruct, TChannel, TGroup, TMsgHeaders>, scope: TScope) => boolean;\r\n componentFilter?: ComponentMsgFilter;\r\n};\r\n\r\nexport type MsgChannelGroupSubscriberParams<\r\n TStruct extends MsgStruct = MsgStruct,\r\n TChannel extends keyof TStruct = keyof TStruct,\r\n TGroup extends keyof TStruct[TChannel] = typeof $CG_IN, // keyof TStruct[TChannel]\r\n TMsgHeaders extends ComponentMsgHeaders = ComponentMsgHeaders,\r\n TScope = any,\r\n> = Skip<\r\n MsgSubscriberParams<TStruct, TChannel, TGroup>,\r\n 'channel' | 'group' | 'callback' | 'filter'\r\n> & {\r\n callback?: (msg: Msg<TStruct, TChannel, TGroup, TMsgHeaders>, scope: TScope) => void;\r\n filter?: (msg: Msg<TStruct, TChannel, TGroup, TMsgHeaders>, scope: TScope) => boolean;\r\n componentFilter?: ComponentMsgFilter;\r\n};\r\n\r\n// MsgScope\r\nexport type MsgBrokerScope<\r\n TStruct extends MsgStruct /*= MsgStruct*/,\r\n TKeysToProvide extends keyof TStruct = keyof TStruct,\r\n TKeysToSubscribe extends keyof TStruct = keyof TStruct,\r\n TKeysToPublish extends keyof TStruct = keyof TStruct,\r\n> = {\r\n provide?: TKeysToProvide;\r\n // consume\r\n subscribe?: TKeysToSubscribe;\r\n // produce\r\n publish?: TKeysToPublish;\r\n};\r\n\r\nexport type ComponentPropStruct = Record<string, any>;\r\n// export type ComponentPropStruct = {\r\n// [prop: string]: any;\r\n// };\r\n\r\nexport type ComponentMethodStruct = Record<string, Function>;\r\n// export type ComponentMethodStruct = {\r\n// [action: string]: Function;\r\n// };\r\n\r\n// export type ComponentRefStruct = Record<string, ComponentStruct<TMsgStruct, T>>;\r\nexport type ComponentRefStruct = {\r\n [name: string]: ComponentStruct | ((params: any) => ComponentStruct);\r\n};\r\n\r\nexport type ComponentStructBase<\r\n TMsgStruct extends MsgStruct = MsgStruct,\r\n TPropStruct extends ComponentPropStruct = ComponentPropStruct,\r\n TMsgScope extends MsgBrokerScope<TMsgStruct> = MsgBrokerScope<TMsgStruct>,\r\n> = {\r\n props?: TPropStruct;\r\n actions?: ComponentMethodStruct;\r\n effects?: string[] | string | undefined;\r\n children?: ComponentRefStruct;\r\n // msgs?\r\n msgScope?: TMsgScope;\r\n};\r\n\r\n// ComponentShape\r\nexport type ComponentStruct<\r\n TMsgStruct extends MsgStruct = MsgStruct,\r\n T extends ComponentStructBase<TMsgStruct> = ComponentStructBase<TMsgStruct>,\r\n> = T & {\r\n msg: TMsgStruct;\r\n};\r\n\r\nexport type MsgBroker<\r\n TStructToProvide extends MsgStruct = MsgStruct,\r\n TStructToSubscribe extends MsgStruct = MsgStruct,\r\n TMsgHeaders extends ComponentMsgHeaders = ComponentMsgHeaders,\r\n TScope = any,\r\n> = Require<\r\n {\r\n // providers\r\n provide?: Require<\r\n {\r\n [TChannel in keyof TStructToProvide]: {\r\n [TGroup in keyof Skip<\r\n TStructToProvide[TChannel],\r\n typeof $CG_OUT\r\n >]?: MsgChannelGroupProviderParams<\r\n TStructToProvide,\r\n TChannel,\r\n TGroup,\r\n TMsgHeaders,\r\n TScope\r\n >;\r\n };\r\n },\r\n HasKeys<TStructToProvide>\r\n >;\r\n // subscribers\r\n subscribe?: Require<\r\n {\r\n [TChannel in keyof TStructToSubscribe]: {\r\n [TGroup in keyof TStructToSubscribe[TChannel]]?: MsgChannelGroupSubscriberParams<\r\n TStructToSubscribe,\r\n TChannel,\r\n TGroup,\r\n TMsgHeaders,\r\n TScope\r\n >;\r\n };\r\n },\r\n HasKeys<TStructToSubscribe>\r\n >;\r\n abortController?: AbortController;\r\n },\r\n HasKeys<TStructToProvide & TStructToSubscribe>\r\n>;\r\n\r\ntype ValueConverter<TTo, TFrom> = {\r\n // ConvertFrom\r\n convert(value: TFrom): TTo;\r\n // ConvertTo\r\n convertBack(value: TTo): TFrom;\r\n};\r\n\r\ntype ValidationResult = {\r\n valid: boolean;\r\n message: string;\r\n};\r\n\r\ntype Validator<T> = {\r\n options: {\r\n blur: boolean;\r\n };\r\n validate: (value: T) => MaybePromise<ValidationResult>;\r\n};\r\n\r\nconst $isBinding = Symbol('$isBinding'); // brand\r\n\r\nclass Binding<T = any, TFrom = any> {\r\n // getter\r\n readonly get: () => T;\r\n // setter\r\n readonly set: (value: T) => void;\r\n readonly converter: ValueConverter<T, TFrom>;\r\n readonly validator: Validator<T>;\r\n readonly readOnly: boolean;\r\n constructor(\r\n get: () => T,\r\n set?: (value: T) => void,\r\n converter?: ValueConverter<T, TFrom>,\r\n validator?: Validator<T>,\r\n ) {\r\n this.get = get;\r\n this.set = set;\r\n this.converter = converter;\r\n this.validator = validator;\r\n this.readOnly = !!set;\r\n this[$isBinding] = true;\r\n }\r\n [$isBinding]: boolean;\r\n}\r\n\r\nexport function isBinding(obj: any): obj is Binding {\r\n return obj[$isBinding] === true;\r\n}\r\n\r\nexport function bind<T, TFrom = any>(\r\n get: () => T,\r\n set?: (value: T) => void,\r\n converter?: ValueConverter<T, TFrom>,\r\n validator?: Validator<T>,\r\n) {\r\n return new Binding(get, set, converter, validator);\r\n}\r\n\r\nexport function bindProp<T extends object, P extends keyof T>(target: () => T, prop: P) {\r\n return new Binding(\r\n () => target()[prop],\r\n (value: T[P]) => {\r\n target()[prop] = value;\r\n },\r\n );\r\n}\r\n\r\nexport type ComponentPropSource<T> = T | Binding<T>;\r\n\r\nexport type ComponentPropParams<TPropStruct extends ComponentPropStruct> = {\r\n [P in keyof TPropStruct]?: ComponentPropSource<TPropStruct[P]>;\r\n};\r\n\r\n// const $ON_PROP_CHANGING = \"onPropChanging\";\r\n// const $ON_PROP_CHANGE = \"onPropChange\";\r\n\r\nconst $ON_GET = 'onGet';\r\n// const $ON_BEFORE_SET = \"onBeforeSet\";\r\nconst $ON_CHANGING = 'onChanging';\r\nconst $ON_CHANGE = 'onChange';\r\n// const $ON_SET = \"onSet\";\r\n\r\ntype PropValueChangingHandler<TProp = PropertyKey> = (\r\n prop: TProp,\r\n oldValue: any,\r\n newValue: any,\r\n) => boolean;\r\ntype PropValueChangeHandler<TProp = PropertyKey> = (prop: TProp, value: any) => void;\r\n\r\n// BeforeValueSetHandler\r\ntype ValueChangingHandler<T = any> = (oldValue: T, newValue: T) => boolean;\r\n// ValueSetHandler\r\ntype ValueChangeHandler<T = any> = (value: T) => void;\r\n\r\ntype ComponentEvents<TStruct extends ComponentStruct = ComponentStruct> = {\r\n onPropChanging?: PropValueChangingHandler<keyof TStruct['props']>;\r\n onPropChange?: PropValueChangeHandler<keyof TStruct['props']>;\r\n onInit?: (component: Component<TStruct>) => void;\r\n onLayout?: (component: Component<TStruct>) => void;\r\n onReady?: (component: Component<TStruct>) => void;\r\n onLayoutDestroy?: (component: Component<TStruct>) => void; // onLayoutCleanup\r\n onDestroy?: (component: Component<TStruct>) => void; // onDispose/onCleanup\r\n onError?: (component: Component<TStruct>, error: any) => void;\r\n} & {\r\n [P in keyof TStruct['props'] as `${typeof $ON_GET}${Capitalize<P & string>}`]?: () => TStruct['props'][P];\r\n} & {\r\n [P in keyof TStruct['props'] as `${typeof $ON_CHANGING}${Capitalize<P & string>}`]?: ValueChangingHandler<\r\n TStruct['props']\r\n >;\r\n} & {\r\n [P in keyof TStruct['props'] as `${typeof $ON_CHANGE}${Capitalize<P & string>}`]?: ValueChangeHandler<\r\n TStruct['props']\r\n >;\r\n};\r\n\r\n// AllHTMLAttributes<JSX.Element>\r\n\r\ntype ComponentViewProps = {\r\n render?: boolean;\r\n} & PropsWithChildren;\r\n\r\n// ComponentRenderImplFn\r\ntype ComponentViewImplFn<\r\n TStruct extends ComponentStruct,\r\n TMsgHeaders extends ComponentMsgHeaders = ComponentMsgHeaders,\r\n> = (props: ComponentViewProps, component?: Component<TStruct, TMsgHeaders>) => ReactNode; // JSX.Element\r\n\r\n// ComponentRenderFn\r\ntype ComponentViewFn = (props: ComponentViewProps) => ReactNode; // JSX.Element\r\n\r\ntype PublicKeys<T> = {\r\n [K in keyof T]: K extends `_${string}` ? never : K;\r\n}[keyof T];\r\n\r\nexport type ComponentMsgBroker<\r\n TStruct extends ComponentStruct,\r\n TMsgHeaders extends ComponentMsgHeaders = ComponentMsgHeaders,\r\n> = MsgBroker<\r\n Pick<TStruct['msg'], MaybeKeyOf<TStruct['msg'], TStruct['msgScope']['provide']>>,\r\n Pick<TStruct['msg'], MaybeKeyOf<TStruct['msg'], TStruct['msgScope']['subscribe']>>,\r\n TMsgHeaders,\r\n Component<TStruct, TMsgHeaders>\r\n>;\r\n\r\nexport type EffectFn<\r\n TStruct extends ComponentStruct,\r\n TMsgHeaders extends ComponentMsgHeaders = ComponentMsgHeaders,\r\n> = (component: Component<TStruct, TMsgHeaders>) => void | (() => void);\r\n\r\nexport type ComponentDef<\r\n TStruct extends ComponentStruct,\r\n TMsgHeaders extends ComponentMsgHeaders = ComponentMsgHeaders,\r\n> = {\r\n name?: string;\r\n props?: Require<TStruct['props'], HasKeys<TStruct['props']>>;\r\n actions?: Require<TStruct['actions'], HasKeys<TStruct['actions']>>;\r\n effects?: keyof TStruct['effects'] extends never\r\n ? never\r\n : Record<\r\n TStruct['effects'] extends string ? TStruct['effects'] : TStruct['effects'][number],\r\n EffectFn<TStruct, TMsgHeaders>\r\n >;\r\n children?: ComponentDefChildren<TStruct['children']>;\r\n events?: ComponentEvents<TStruct>;\r\n // msgs?\r\n msgBroker?: ComponentMsgBroker<TStruct, TMsgHeaders>;\r\n msgBus?: MsgBus<TStruct['msg'], TMsgHeaders>;\r\n view?: ComponentViewImplFn<TStruct, TMsgHeaders>;\r\n};\r\n\r\ntype ComponentDefChildren<TRefStruct extends ComponentRefStruct> = Require<\r\n {\r\n [P in keyof TRefStruct]: TRefStruct[P] extends (params: infer TParams) => infer T\r\n ? T extends ComponentStruct\r\n ? (params: TParams) => Component<T>\r\n : never\r\n : TRefStruct[P] extends ComponentStruct\r\n ? Component<TRefStruct[P]>\r\n : never;\r\n },\r\n HasKeys<TRefStruct>\r\n>;\r\n\r\ntype ComponentChildren<TRefStruct extends ComponentRefStruct> = {\r\n [P in keyof TRefStruct as TRefStruct[P] extends Function\r\n ? `${Capitalize<P & string>}`\r\n : P]: TRefStruct[P] extends (params: infer TParams) => infer T\r\n ? T extends ComponentStruct\r\n ? FC<ComponentParams<T> & TParams>\r\n : never\r\n : TRefStruct[P] extends ComponentStruct\r\n ? Component<TRefStruct[P]>\r\n : never;\r\n};\r\n\r\nexport type ComponentMsgStruct<TStruct extends ComponentStruct = ComponentStruct> = Pick<\r\n TStruct['msg'],\r\n | MaybeKeyOf<TStruct['msg'], TStruct['msgScope']['provide']>\r\n | MaybeKeyOf<TStruct['msg'], TStruct['msgScope']['subscribe']>\r\n | MaybeKeyOf<TStruct['msg'], TStruct['msgScope']['publish']>\r\n>;\r\n\r\nexport type ComponentBase<\r\n TStruct extends ComponentStruct = ComponentStruct,\r\n TMsgHeaders extends ComponentMsgHeaders = ComponentMsgHeaders,\r\n> = {\r\n id: string;\r\n parentId: string;\r\n // getHierarchyPath?\r\n getHierarchyId(): string;\r\n getParent(): string | undefined;\r\n getChildren(): string[];\r\n getChainUp(): string[];\r\n getChainDown(): string[];\r\n getNodeMap(): Map<string, TreeNode>;\r\n bindings: Map<PropertyKey, Binding>;\r\n msgBus: MsgBus<ComponentMsgStruct<TStruct>, TMsgHeaders>;\r\n msgBroker: ComponentMsgBroker<TStruct>;\r\n effects: Record<string, EffectController>;\r\n View: ComponentViewFn;\r\n};\r\n\r\nexport type ComponentModel<TStruct extends ComponentStruct = ComponentStruct> = TStruct['props'] &\r\n Readonly<TStruct['actions']>;\r\n\r\nexport type Component<\r\n TStruct extends ComponentStruct = ComponentStruct,\r\n TMsgHeaders extends ComponentMsgHeaders = ComponentMsgHeaders,\r\n> = {\r\n readonly model: ComponentModel<TStruct>;\r\n readonly children: Readonly<ComponentChildren<TStruct['children']>>;\r\n} & Readonly<ComponentBase<TStruct, TMsgHeaders>>;\r\n\r\n// style: CSSProperties;\r\n\r\ntype PropEventHandlers = {\r\n onGet?: () => any;\r\n onChanging?: (oldValue: any, newValue: any) => boolean;\r\n onChange?: (value: any) => void;\r\n};\r\n\r\ntype ProxyEventHandlers = {\r\n onPropChanging?: PropValueChangingHandler<PropertyKey>;\r\n onPropChange?: PropValueChangeHandler<PropertyKey>;\r\n} & Record<PropertyKey, PropEventHandlers>;\r\n\r\n// ComponentConfig\r\nexport type ComponentParams<TStruct extends ComponentStruct = ComponentStruct> =\r\n ComponentPropParams<TStruct['props']> & ComponentEvents<TStruct>; // & PropsWithChildren\r\n\r\nconst blankView = () => null;\r\n\r\nconst proxyCache = new WeakMap<object, any>();\r\nfunction createRecursiveProxy(\r\n target: any,\r\n bindings: Map<PropertyKey, Binding>,\r\n handlers: ProxyEventHandlers,\r\n) {\r\n if (typeof target !== 'object' || target === null) {\r\n return target;\r\n }\r\n\r\n // isPlainObject\r\n if (!isObservable(target)) {\r\n return target;\r\n }\r\n\r\n if (proxyCache.has(target)) {\r\n return proxyCache.get(target);\r\n }\r\n\r\n const proxy = new Proxy(target, {\r\n get(obj, prop, receiver) {\r\n // 1. custom handlers\r\n const onGet = handlers[prop]?.onGet;\r\n if (onGet) return onGet();\r\n\r\n // 2. bindings\r\n const binding = bindings.get(prop);\r\n if (binding?.get) {\r\n return binding.get();\r\n }\r\n\r\n const value = Reflect.get(obj, prop, receiver);\r\n\r\n if (typeof value === 'object' && value !== null && isObservable(value)) {\r\n return createRecursiveProxy(value, bindings, handlers);\r\n }\r\n\r\n return value;\r\n },\r\n\r\n set(obj, prop, value, receiver) {\r\n const oldValue = obj[prop];\r\n\r\n // before-change hooks\r\n const onChanging = handlers[prop]?.onChanging;\r\n if (onChanging && onChanging(oldValue, value) === false) {\r\n return true;\r\n }\r\n\r\n if (\r\n handlers.onPropChanging &&\r\n handlers.onPropChanging(prop, oldValue, value) === false\r\n ) {\r\n return true;\r\n }\r\n\r\n const result = runInAction(() => {\r\n return Reflect.set(obj, prop, value, receiver);\r\n });\r\n\r\n // bindings\r\n const binding = bindings.get(prop);\r\n binding?.set?.(value);\r\n\r\n // after-change hooks\r\n handlers[prop]?.onChange?.(value);\r\n handlers.onPropChange?.(prop, value);\r\n\r\n return result;\r\n },\r\n });\r\n\r\n proxyCache.set(target, proxy);\r\n return proxy;\r\n}\r\n\r\nfunction capitalize(name: string) {\r\n return name.replace(/^./, name[0].toUpperCase());\r\n}\r\n\r\nfunction asyncToGeneratorFlow(asyncFn: (...args: any[]) => Promise<any>) {\r\n return function* (...args: any[]) {\r\n const result = yield asyncFn(...args);\r\n return result;\r\n };\r\n}\r\n\r\ntype ComponentSourceInfo = {\r\n // classId\r\n structId: string;\r\n count: 0;\r\n};\r\n\r\nconst componentData = {\r\n sources: new Map<string, ComponentSourceInfo>(),\r\n count: 0,\r\n};\r\n\r\nexport function toHtmlId(url: string, segmentsCount: number = 1): string {\r\n const clean = url.split(/[?#]/)[0];\r\n const parts = clean\r\n .split('/')\r\n .filter(Boolean)\r\n .map((segment) => decodeURIComponent(segment));\r\n\r\n const last = parts.slice(-segmentsCount);\r\n const raw = last.join('-');\r\n let id = raw\r\n .normalize('NFKD')\r\n .replace(/[^a-zA-Z0-9\\-_:.+#]/g, '-')\r\n .replace(/-+/g, '-')\r\n .replace(/^[^a-zA-Z]+/, '-')\r\n .replace(/[+#]$/, '-');\r\n return id;\r\n}\r\n\r\nfunction getCallerFileName(depth = 2): string | null {\r\n const err = new Error();\r\n const stack = err.stack?.split('\\n');\r\n if (!stack || stack.length <= depth) return null;\r\n\r\n const match = stack[depth].match(/\\((.*):\\d+:\\d+\\)/);\r\n if (match) {\r\n return match[1];\r\n }\r\n return null;\r\n}\r\n\r\nfunction registerMsgBroker<TStruct extends ComponentStruct = ComponentStruct>(\r\n component: Component<TStruct>,\r\n) {\r\n const providers = component?.msgBroker.provide;\r\n if (providers) {\r\n for (const [channel, providerGroups] of Object.entries(providers)) {\r\n for (const [g, p] of Object.entries(providerGroups)) {\r\n const provider = p as MsgChannelGroupProviderParams;\r\n const callback = provider.callback;\r\n if (callback) {\r\n provider.callback = (msg, headers) => {\r\n return callback(msg, headers, component);\r\n };\r\n }\r\n const filter = provider.filter;\r\n const componentFilter = provider.componentFilter || ComponentMsgFilter.None;\r\n const msgFilter = (msg) => {\r\n let result = true;\r\n if (componentFilter & ComponentMsgFilter.FromAncestors) {\r\n const ancestorIds = component.getChainUp();\r\n result = ancestorIds.indexOf(msg.headers?.sourceId) >= 0;\r\n }\r\n if (result && componentFilter & ComponentMsgFilter.FromDescendants) {\r\n const ancestorIds = component.getChainDown();\r\n result = ancestorIds.indexOf(msg.headers?.sourceId) >= 0;\r\n }\r\n if (result && filter) {\r\n result = filter(msg, component);\r\n }\r\n return result;\r\n };\r\n provider.filter = msgFilter;\r\n\r\n component.msgBus.provide({\r\n ...p,\r\n channel: channel,\r\n group: g,\r\n config: {\r\n abortSignal: component.msgBroker.abortController.signal,\r\n },\r\n });\r\n }\r\n }\r\n }\r\n const subscribers = component?.msgBroker?.subscribe;\r\n if (subscribers) {\r\n for (const [channel, subscriberGroups] of Object.entries(subscribers)) {\r\n for (const [g, s] of Object.entries(subscriberGroups)) {\r\n const subscriber = s as MsgChannelGroupSubscriberParams;\r\n const callback = subscriber.callback;\r\n if (callback) {\r\n subscriber.callback = (msg) => {\r\n return callback(msg, component);\r\n };\r\n }\r\n const filter = subscriber.filter;\r\n const componentFilter = subscriber.componentFilter || ComponentMsgFilter.None;\r\n const msgFilter = (msg) => {\r\n let result = true;\r\n if (componentFilter & ComponentMsgFilter.FromAncestors) {\r\n const ancestorIds = component.getChainUp();\r\n result = ancestorIds.indexOf(msg.headers?.sourceId) >= 0;\r\n }\r\n if (result && componentFilter & ComponentMsgFilter.FromDescendants) {\r\n const ancestorIds = component.getChainDown();\r\n result = ancestorIds.indexOf(msg.headers?.sourceId) >= 0;\r\n }\r\n if (result && filter) {\r\n result = filter(msg, component);\r\n }\r\n return result;\r\n };\r\n subscriber.filter = msgFilter;\r\n\r\n component.msgBus.on({\r\n ...s,\r\n channel: channel,\r\n group: g,\r\n config: {\r\n abortSignal: component.msgBroker.abortController.signal,\r\n },\r\n });\r\n }\r\n }\r\n }\r\n}\r\n\r\nfunction getComponentMsgBus<TStruct extends ComponentStruct = ComponentStruct>(\r\n msgBus: MsgBus<TStruct['msg']>,\r\n headerSetter: (headers?: ComponentMsgHeaders) => void,\r\n) {\r\n const updateParams = (params: { payload?: any; headers?: ComponentMsgHeaders }) => {\r\n if (params.payload != undefined) {\r\n params.payload = structuredClone(toJS(params.payload)); // always?\r\n }\r\n if (!params.headers) {\r\n params.headers = {};\r\n }\r\n headerSetter?.(params.headers);\r\n };\r\n return {\r\n config: msgBus.config,\r\n on: (params) => {\r\n return msgBus.on(params);\r\n },\r\n onceAsync: (params) => {\r\n return msgBus.onceAsync(params);\r\n },\r\n stream: (params) => {\r\n return msgBus.stream(params);\r\n },\r\n provide: (params) => {\r\n updateParams(params);\r\n return msgBus.provide(params);\r\n },\r\n dispatch: (params) => {\r\n updateParams(params);\r\n return msgBus.dispatch(params);\r\n },\r\n dispatchAsync: (params) => {\r\n updateParams(params);\r\n return msgBus.dispatchAsync(params);\r\n },\r\n } as MsgBus<TStruct['msg']>;\r\n}\r\n\r\nexport type EffectController = {\r\n start: () => void;\r\n pause: () => void;\r\n resume: () => void;\r\n stop: () => void;\r\n restart: () => void;\r\n};\r\n\r\nexport function createEffect<\r\n TStruct extends ComponentStruct,\r\n TMsgHeaders extends ComponentMsgHeaders = ComponentMsgHeaders,\r\n>(\r\n component: Component<TStruct, TMsgHeaders>,\r\n name: string,\r\n fn: EffectFn<TStruct, TMsgHeaders>,\r\n): EffectController {\r\n let disposer: IReactionDisposer | null = null;\r\n let paused = false;\r\n let effectCleanup: () => void = undefined;\r\n\r\n const start = () => {\r\n if (disposer) {\r\n return;\r\n }\r\n\r\n disposer = autorun(\r\n () => {\r\n if (!paused) {\r\n const cleanup = fn(component);\r\n if (typeof cleanup === 'function') {\r\n cleanup();\r\n effectCleanup = cleanup;\r\n }\r\n }\r\n },\r\n { name: `effect:${name}` },\r\n );\r\n };\r\n\r\n const stop = () => {\r\n disposer?.();\r\n disposer = null;\r\n if (effectCleanup) {\r\n effectCleanup();\r\n effectCleanup = undefined;\r\n }\r\n };\r\n\r\n const pause = () => {\r\n paused = true;\r\n };\r\n\r\n const resume = () => {\r\n paused = false;\r\n };\r\n\r\n const restart = () => {\r\n stop();\r\n start();\r\n };\r\n\r\n start();\r\n\r\n return { start, pause, resume, stop, restart };\r\n}\r\n\r\nfunction createComponent<TStruct extends ComponentStruct = ComponentStruct>(\r\n componentDef: ComponentDef<TStruct>,\r\n params?: ComponentParams<TStruct>,\r\n): Component<TStruct> {\r\n // result\r\n let component: Mutable<Component<TStruct>>;\r\n let model: Mutable<ComponentModel<TStruct>>;\r\n\r\n if (!componentDef) {\r\n componentDef = {};\r\n }\r\n\r\n if (!params) {\r\n params = {};\r\n }\r\n\r\n const view = componentDef.view;\r\n let msgBus = componentDef.msgBus;\r\n\r\n const bindings = new Map<PropertyKey, Binding>();\r\n\r\n const componentMsgBus = lazy(() => {\r\n return getComponentMsgBus(msgBus, (headers) => {\r\n if (headers?.sourceId == undefined) {\r\n headers.sourceId = component.id;\r\n }\r\n }); // as ComponentModel<TStruct>['msgBus']\r\n });\r\n\r\n let msgBroker = {\r\n ...componentDef.msgBroker,\r\n };\r\n\r\n if (!msgBroker.abortController) {\r\n msgBroker.abortController = new AbortController();\r\n }\r\n\r\n const ViewFC = observer((props: ComponentViewProps) => {\r\n const id = component.id;\r\n const context = useComponentContext();\r\n const parentId = context.currentId;\r\n\r\n component.parentId = parentId;\r\n\r\n if (!msgBus) {\r\n msgBus = context.msgBus;\r\n }\r\n\r\n const scopeContext = useMemo(\r\n () => ({ ...context, currentId: id }),\r\n [componentDef, params, context],\r\n );\r\n\r\n useLayoutEffect(() => {\r\n try {\r\n if (getGlobalFlags().debug) {\r\n const hierarchyId = component.getHierarchyId();\r\n console.debug(`${hierarchyId}>layout`);\r\n }\r\n\r\n context.register(id, parentId);\r\n\r\n component.getHierarchyId = () => context.getHierarchyPath(id);\r\n component.getChainDown = () => context.getChainDown(id);\r\n component.getChainUp = () => context.getChainUp(id);\r\n component.getChildren = () => context.getChildren(id);\r\n component.getParent = () => context.getParent(id);\r\n component.getNodeMap = () => context.getNodeMap();\r\n\r\n registerMsgBroker(component);\r\n\r\n componentDef.events?.onLayout?.(component);\r\n params.onLayout?.(component);\r\n } catch (err) {\r\n componentDef.events?.onError?.(component, err);\r\n params.onError?.(component, err);\r\n }\r\n\r\n return () => {\r\n if (getGlobalFlags().debug) {\r\n const hierarchyId = component.getHierarchyId();\r\n console.debug(`${hierarchyId}>layout-destroy`);\r\n }\r\n context.unregister(id);\r\n\r\n msgBroker.abortController?.abort();\r\n\r\n componentDef.events?.onLayoutDestroy?.(component);\r\n params.onLayoutDestroy?.(component);\r\n };\r\n }, [componentDef, params, context]);\r\n\r\n useEffect(() => {\r\n try {\r\n if (getGlobalFlags().debug) {\r\n // mount\r\n const hierarchyId = component.getHierarchyId();\r\n console.debug(`${hierarchyId}>ready`);\r\n }\r\n componentDef.events?.onReady?.(component);\r\n params.onReady?.(component);\r\n } catch (err) {\r\n if (getGlobalFlags().debug) {\r\n // unmount\r\n const hierarchyId = component.getHierarchyId();\r\n console.debug(`${hierarchyId}>destroy`);\r\n }\r\n componentDef.events?.onError?.(component, err);\r\n params.onError?.(component, err);\r\n }\r\n return () => {\r\n componentDef.events?.onDestroy?.(component);\r\n params.onDestroy?.(component);\r\n };\r\n }, [componentDef, params, context]);\r\n\r\n let content: React.ReactNode;\r\n // let content: any;\r\n try {\r\n if (getGlobalFlags().debug) {\r\n // render\r\n const hierarchyId = component.getHierarchyId();\r\n console.debug(`${hierarchyId}>view`);\r\n }\r\n if (typeof view === 'function') {\r\n content = view(props, component);\r\n } else {\r\n // content = props.children;\r\n content = <>{props.children}</>;\r\n }\r\n } catch (err) {\r\n // throw err;\r\n const errDetails = JSON.stringify(err);\r\n // msgBus.dispatch\r\n content = <>{errDetails}</>;\r\n }\r\n return (\r\n <ReactComponentContext.Provider value={scopeContext}>\r\n {content}\r\n </ReactComponentContext.Provider>\r\n );\r\n });\r\n\r\n let srcInfo: ComponentSourceInfo;\r\n const sources = componentData.sources;\r\n\r\n const fileName = getCallerFileName(6);\r\n const srcName = toHtmlId(fileName, 2);\r\n\r\n if (sources.has(fileName)) {\r\n srcInfo = sources.get(fileName);\r\n srcInfo.count++;\r\n } else {\r\n const structId = componentDef.name || srcName || `Component_${componentData.count}`;\r\n srcInfo = {\r\n structId: structId,\r\n count: 0,\r\n };\r\n sources.set(fileName, srcInfo);\r\n componentData.count++;\r\n }\r\n\r\n const id = `${srcInfo.structId}#${srcInfo.count}`;\r\n\r\n const children = {} as ComponentChildren<TStruct['children']>;\r\n\r\n model = {} as Mutable<ComponentModel<TStruct>>;\r\n\r\n if (componentDef.props) {\r\n Object.assign(model, componentDef.props);\r\n }\r\n\r\n if (componentDef.actions) {\r\n Object.assign(model, componentDef.actions);\r\n }\r\n\r\n if (componentDef.children) {\r\n for (const [key, value] of Object.entries(componentDef.children)) {\r\n if (typeof value == 'function') {\r\n const view = value as (params: any) => Component;\r\n // observer\r\n const ChildViewFC: ComponentViewImplFn<TStruct> = (props) => {\r\n const c = view(props);\r\n return <c.View />;\r\n // if (typeof c.view === \"function\") {\r\n // return c.view(props);\r\n // }\r\n // return <>{props.children}</>;\r\n };\r\n Reflect.set(children, capitalize(key), ChildViewFC);\r\n } else {\r\n Reflect.set(children, key, value);\r\n }\r\n }\r\n }\r\n\r\n // Reflect.ownKeys/Object.keys\r\n for (const [key, value] of Object.entries(params)) {\r\n // model.hasOwnProperty(key)\r\n if (key in model) {\r\n if (isBinding(value)) {\r\n bindings.set(key, value);\r\n } else {\r\n Reflect.set(model, key, value);\r\n }\r\n }\r\n }\r\n\r\n const proxyEventHandlers: Pick<ProxyEventHandlers, 'onPropChanging' | 'onPropChange'> = {\r\n onPropChanging:\r\n params.onPropChanging || componentDef.events?.onPropChanging\r\n ? (prop, oldValue, newValue) => {\r\n let result = true;\r\n let handler = params.onPropChanging;\r\n if (handler) {\r\n result = handler(String(prop), oldValue, newValue);\r\n }\r\n if (result) {\r\n handler = componentDef.events?.onPropChanging;\r\n if (handler) {\r\n result = handler(String(prop), oldValue, newValue);\r\n }\r\n }\r\n return result;\r\n }\r\n : undefined,\r\n onPropChange:\r\n params.onPropChange || componentDef.events?.onPropChange\r\n ? (prop, value) => {\r\n params.onPropChange?.(String(prop), value);\r\n componentDef.events?.onPropChange?.(String(prop), value);\r\n }\r\n : undefined,\r\n };\r\n\r\n function resolveOnGetEventHandler(prop: string) {\r\n const key = `${$ON_GET}${capitalize(prop)}`;\r\n return params[key] || componentDef.events?.[key];\r\n }\r\n\r\n function resolveOnChangingEventHandler(prop: string) {\r\n const key = `${$ON_CHANGING}${capitalize(prop)}`;\r\n return ((oldValue: any, newValue: any) => {\r\n let result = true;\r\n let handler = params[key] as ValueChangingHandler<any>;\r\n if (handler) {\r\n result = handler(oldValue, newValue);\r\n }\r\n if (result) {\r\n handler = componentDef.events?.[key] as ValueChangingHandler<any>;\r\n if (handler) {\r\n result = handler(oldValue, newValue);\r\n }\r\n }\r\n return result;\r\n }) as ValueChangingHandler;\r\n }\r\n\r\n function resolveOnChangeEventHandler(prop: string) {\r\n const key = `${$ON_CHANGE}${capitalize(prop)}`;\r\n return ((value: any) => {\r\n (params[key] as ValueChangeHandler<any>)?.(value);\r\n (componentDef.events?.[key] as ValueChangeHandler<any>)?.(value);\r\n }) as ValueChangeHandler;\r\n }\r\n\r\n let annotationMap: Record<string, any> = {};\r\n\r\n if (componentDef.props) {\r\n for (const prop of Object.keys(componentDef.props)) {\r\n proxyEventHandlers[prop] = {\r\n onGet: resolveOnGetEventHandler(prop),\r\n onChanging: resolveOnChangingEventHandler(prop),\r\n onChange: resolveOnChangeEventHandler(prop),\r\n };\r\n }\r\n\r\n for (const key of Object.keys(componentDef.props)) {\r\n annotationMap[key] = observable.deep;\r\n }\r\n }\r\n\r\n if (componentDef.actions) {\r\n const annotationMap: Record<string, any> = {};\r\n for (const key of Object.keys(componentDef.actions)) {\r\n annotationMap[key] = action;\r\n }\r\n }\r\n\r\n model = observable(model, annotationMap, {\r\n deep: true,\r\n });\r\n\r\n model = createRecursiveProxy(model, bindings, proxyEventHandlers);\r\n\r\n let effects: Record<string, EffectController> = {};\r\n component = {\r\n id: id,\r\n parentId: undefined,\r\n getHierarchyId: () => undefined,\r\n getChainDown: () => undefined,\r\n getChainUp: () => undefined,\r\n getChildren: () => undefined,\r\n getParent: () => undefined,\r\n getNodeMap: () => undefined,\r\n bindings: bindings,\r\n get msgBus() {\r\n return componentMsgBus();\r\n },\r\n msgBroker: msgBroker,\r\n effects: effects,\r\n // view: componentDef.view,\r\n View: ViewFC,\r\n children: children,\r\n model: model,\r\n };\r\n\r\n if (componentDef.effects) {\r\n for (const [name, fn] of Object.entries(componentDef.effects)) {\r\n effects[name] = createEffect(\r\n component,\r\n name,\r\n fn as EffectFn<TStruct, ComponentMsgHeaders>,\r\n );\r\n }\r\n }\r\n\r\n if (componentDef.events?.onInit) {\r\n componentDef.events.onInit(component);\r\n }\r\n\r\n if (params.onInit) {\r\n params.onInit(component);\r\n }\r\n\r\n return component;\r\n}\r\n\r\nexport function useComponent<\r\n TStruct extends ComponentStruct = ComponentStruct,\r\n TMsgHeaders extends ComponentMsgHeaders = ComponentMsgHeaders,\r\n>(componentDef: ComponentDef<TStruct, TMsgHeaders>, params: ComponentParams<TStruct>) {\r\n const ref = useLazyRef(() => createComponent(componentDef, params));\r\n useLayoutEffect(() => {\r\n return () => {\r\n ref.current = null;\r\n };\r\n }, [componentDef, params]);\r\n return ref.current;\r\n}\r\n\r\n// asFC/toFC\r\nexport function getFC<TStruct extends ComponentStruct>(\r\n factory: (params: ComponentParams<TStruct>) => Component<TStruct>,\r\n): FC<ComponentParams<TStruct>> {\r\n // observer\r\n const fc = (params: ComponentParams<TStruct> & PropsWithChildren) => {\r\n // componentHook\r\n const c = factory(params); // without useRef!\r\n // return c.view();\r\n return <c.View {...params} />;\r\n };\r\n return fc;\r\n}\r\n"],"names":["ComponentMsgFilter","$isBinding","Binding","get","set","converter","validator","isBinding","obj","bind","bindProp","target","prop","value","$ON_GET","$ON_CHANGING","$ON_CHANGE","proxyCache","createRecursiveProxy","bindings","handlers","isObservable","proxy","receiver","onGet","binding","oldValue","onChanging","result","runInAction","capitalize","name","componentData","toHtmlId","url","segmentsCount","segment","getCallerFileName","depth","stack","match","registerMsgBroker","component","providers","channel","providerGroups","g","p","provider","callback","msg","headers","filter","componentFilter","msgFilter","subscribers","subscriberGroups","s","subscriber","getComponentMsgBus","msgBus","headerSetter","updateParams","params","toJS","createEffect","fn","disposer","paused","effectCleanup","start","autorun","cleanup","stop","pause","resume","restart","createComponent","componentDef","model","view","componentMsgBus","lazy","msgBroker","ViewFC","observer","props","id","context","useComponentContext","parentId","scopeContext","useMemo","useLayoutEffect","getGlobalFlags","hierarchyId","err","useEffect","content","React","errDetails","ReactComponentContext","srcInfo","sources","fileName","srcName","children","key","ChildViewFC","c","proxyEventHandlers","newValue","handler","resolveOnGetEventHandler","resolveOnChangingEventHandler","resolveOnChangeEventHandler","annotationMap","observable","effects","useComponent","ref","useLazyRef","getFC","factory"],"mappings":"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"}
|
package/dist/net/request.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { AwaitedReturnType, Func } from '@actdim/utico/typeCore';
|
|
2
2
|
export type IFetcher = {
|
|
3
3
|
fetch(url: RequestInfo | URL, init?: RequestInit): Promise<Response>;
|
|
4
4
|
};
|
|
5
5
|
export type IResolvedBody = {
|
|
6
|
-
[K in keyof Body
|
|
6
|
+
[K in keyof Body]?: Body[K] extends Func ? AwaitedReturnType<Body[K]> : Body[K];
|
|
7
7
|
};
|
|
8
8
|
export type MimeType = "application/atom+xml" | "application/json" | "application/javascript" | "application/octet-stream" | "application/pdf" | "application/postscript" | "application/soap+xml" | "application/font-woff" | "application/xhtml+xml" | "application/zip" | "application/gzip" | "application/x-tex" | "application/xml" | "application/msword" | "text/cmd" | "text/css" | "text/csv" | "text/html" | "text/plain" | "text/xml" | "text/markdown" | "image/png" | "image/jpeg" | "image/tiff";
|
|
9
9
|
export type RequestStatus = "" | "queued" | "executing" | "succeeded" | "failed" | "canceled";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"request.d.ts","sourceRoot":"","sources":["../../src/net/request.ts"],"names":[],"mappings":"AAGA,OAAO,
|
|
1
|
+
{"version":3,"file":"request.d.ts","sourceRoot":"","sources":["../../src/net/request.ts"],"names":[],"mappings":"AAGA,OAAO,EAAa,iBAAiB,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAG5E,MAAM,MAAM,QAAQ,GAAG;IACnB,KAAK,CAAC,GAAG,EAAE,WAAW,GAAG,GAAG,EAAE,IAAI,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;CACxE,CAAC;AAGF,MAAM,MAAM,aAAa,GAAG;KACvB,CAAC,IAAI,MAAM,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,SAAS,IAAI,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;CAClF,CAAC;AAGF,MAAM,MAAM,QAAQ,GAEd,sBAAsB,GACtB,kBAAkB,GAClB,wBAAwB,GACxB,0BAA0B,GAC1B,iBAAiB,GACjB,wBAAwB,GACxB,sBAAsB,GACtB,uBAAuB,GACvB,uBAAuB,GACvB,iBAAiB,GACjB,kBAAkB,GAClB,mBAAmB,GACnB,iBAAiB,GACjB,oBAAoB,GAEpB,UAAU,GACV,UAAU,GACV,UAAU,GACV,WAAW,GAEX,YAAY,GACZ,UAAU,GACV,eAAe,GAEf,WAAW,GACX,YAAY,GACZ,YAAY,CAAC;AAGnB,MAAM,MAAM,aAAa,GAEnB,EAAE,GAEF,QAAQ,GAER,WAAW,GAGX,WAAW,GAEX,QAAQ,GAER,UAAU,CAAC;AAEjB,MAAM,MAAM,cAAc,GAAG,QAAQ,GAAG;IAEpC,QAAQ,CAAC,EAAE,aAAa,CAAC;CAC5B,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG,cAAc,GAAG;IACzC,MAAM,EAAE,aAAa,CAAC;IACtB,MAAM,CAAC,EAAE,GAAG,CAAC;CAChB,CAAC;AAEF,eAAO,MAAM,eAAe,GAAI,UAAU,QAAQ,kBAAoB,CAAC;AAEvE,eAAO,MAAM,eAAe,GAAI,UAAU,QAAQ,iBAAoB,CAAC;AAEvE,eAAO,MAAM,eAAe,GAAI,UAAU,QAAQ,oBAAoB,CAAC;AAEvE,eAAO,MAAM,sBAAsB,GAAI,UAAU,QAAQ,yBAA2B,CAAC;AAGrF,wBAAsB,iBAAiB,CAAC,QAAQ,EAAE,cAAc,EAAE,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,CAmDtG;AAED,MAAM,WAAW,iBAAiB,CAAC,OAAO,GAAG,GAAG;IAE5C,mBAAmB,CAAC,EAAE,CAAC,KAAK,EAAE;QAC1B,OAAO,EAAE,cAAc,CAAC;QAExB,MAAM,EAAE,OAAO,CAAC;QAChB,OAAO,EAAE,OAAO,CAAC;QACjB,MAAM,CAAC,EAAE,OAAO,CAAC;KACpB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACpB,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,QAAQ,EAAE,QAAQ,CAAC;QAAC,MAAM,EAAE,OAAO,CAAA;KAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACtF;AAGD,MAAM,WAAW,cAAc,CAAC,OAAO,GAAG,GAAG,CAAE,SAAQ,WAAW;IAE9D,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IAEZ,OAAO,CAAC,EAAE,OAAO,CAAC;IAKlB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,WAAW,CAAC,EAAE,QAAQ,CAAC;IACvB,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB,SAAS,CAAC,EAAE,iBAAiB,CAAC,OAAO,CAAC,CAAC;CAC1C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"request.es.js","sources":["../../src/net/request.ts"],"sourcesContent":["// Transport\r\n\r\nimport httpStatus from \"http-status\";\r\nimport { AsyncFunc, AwaitedReturnType, Func
|
|
1
|
+
{"version":3,"file":"request.es.js","sources":["../../src/net/request.ts"],"sourcesContent":["// Transport\r\n\r\nimport httpStatus from \"http-status\";\r\nimport { AsyncFunc, AwaitedReturnType, Func } from \"@actdim/utico/typeCore\";\r\nimport { ApiError } from \"./apiError\";\r\n\r\nexport type IFetcher = {\r\n fetch(url: RequestInfo | URL, init?: RequestInit): Promise<Response>;\r\n};\r\n\r\n// IParsedBody\r\nexport type IResolvedBody = {\r\n [K in keyof Body]?: Body[K] extends Func ? AwaitedReturnType<Body[K]> : Body[K];\r\n};\r\n\r\n// https://www.iana.org/assignments/media-types/media-types.xhtml\r\nexport type MimeType =\r\n // application\r\n | \"application/atom+xml\"\r\n | \"application/json\"\r\n | \"application/javascript\"\r\n | \"application/octet-stream\"\r\n | \"application/pdf\"\r\n | \"application/postscript\"\r\n | \"application/soap+xml\"\r\n | \"application/font-woff\"\r\n | \"application/xhtml+xml\"\r\n | \"application/zip\"\r\n | \"application/gzip\"\r\n | \"application/x-tex\"\r\n | \"application/xml\"\r\n | \"application/msword\"\r\n // text\r\n | \"text/cmd\"\r\n | \"text/css\"\r\n | \"text/csv\"\r\n | \"text/html\"\r\n // \"text/javascript\" |\r\n | \"text/plain\"\r\n | \"text/xml\"\r\n | \"text/markdown\"\r\n // image\r\n | \"image/png\"\r\n | \"image/jpeg\"\r\n | \"image/tiff\";\r\n\r\n// RequestExecutionStatus\r\nexport type RequestStatus =\r\n // Created\r\n | \"\" // none/created/new/unsent\r\n // Queued\r\n | \"queued\" // scheduled\r\n // Executing\r\n | \"executing\" // sent/pending/processing/in-progress\r\n // \"suspended\" | // on-hold\r\n // Successful\r\n | \"succeeded\" // successful/resolved/done/completed/finished/fulfilled/complete\r\n // Unsuccessful\r\n | \"failed\" // unsuccessful/rejected\r\n // Aborted\r\n | \"canceled\"; // aborted/terminated\r\n\r\nexport type IResponseState = Response & {\r\n // parsed?\r\n resolved?: IResolvedBody;\r\n};\r\n\r\nexport type IRequestState = IRequestParams & {\r\n status: RequestStatus;\r\n result?: any;\r\n};\r\n\r\nexport const getResponseBlob = (response: Response) => response.blob();\r\n\r\nexport const getResponseJson = (response: Response) => response.json();\r\n\r\nexport const getResponseText = (response: Response) => response.text();\r\n\r\nexport const getResponseArrayBuffer = (response: Response) => response.arrayBuffer();\r\n\r\n// https://stackoverflow.com/questions/64781995/how-to-get-mime-type-of-an-array-buffer-object\r\nexport async function getResponseResult(response: IResponseState, request: IRequestState): Promise<any> {\r\n // const headers: { [key: string]: string } = {};\r\n let contentType =\r\n request.contentType ||\r\n (request.headers && request.headers instanceof Headers ? request.headers.get(\"content-type\") : request.headers[\"Content-Type\"]);\r\n if (response.headers) {\r\n // for (const k in response.headers.keys()) {\r\n // headers[k] = response.headers.get[k];\r\n // }\r\n // if (response.headers.forEach) {\r\n // response.headers.forEach((v, k) => headers[k] = v);\r\n // }\r\n contentType = response.headers instanceof Headers ? response.headers.get(\"content-type\") : response.headers[\"content-type\"];\r\n }\r\n let result: any = undefined;\r\n if (!response.resolved) {\r\n response.resolved = {};\r\n }\r\n const resolved = response.resolved;\r\n contentType = (contentType || \"\").toLowerCase();\r\n if (contentType.startsWith(\"text/\")) {\r\n result = await response.text();\r\n } else if (contentType.startsWith(\"image/\")) {\r\n result = await response.blob();\r\n } else {\r\n if (contentType.startsWith(\"application/json\")) {\r\n result = await response.json();\r\n resolved.json = result;\r\n } else if (contentType.startsWith(\"octet-stream\")) {\r\n result = await response.blob();\r\n resolved.blob = result;\r\n } else {\r\n try {\r\n resolved.json = await response.clone().json();\r\n } catch {\r\n try {\r\n resolved.text = await response.text();\r\n } catch {\r\n }\r\n }\r\n // unexpected response\r\n // throw new Error(`Unsupported content type: ${contentType}`);\r\n }\r\n }\r\n if (!(response.status === httpStatus.OK || response.status === httpStatus.NO_CONTENT)) {\r\n // JSON.stringify(resolved)\r\n throw ApiError.create(response, request);\r\n }\r\n\r\n request.result = result;\r\n return result;\r\n}\r\n\r\nexport interface IRequestCallbacks<TResult = any> {\r\n // onBeforeExecuteRequest\r\n onBeforeSendRequest?: (event: {\r\n request: IRequestParams;\r\n // interrupt\r\n cancel: boolean;\r\n handled: boolean;\r\n result?: TResult;\r\n }) => Promise<void>;\r\n onResponseRead?: (event: { response: Response; result: TResult }) => Promise<void>;\r\n}\r\n\r\n// IRequestOptions\r\nexport interface IRequestParams<TResult = any> extends RequestInit {\r\n // TODO: support WebSocket transport\r\n id?: string;\r\n tag?: string;\r\n url: string;\r\n // authType?: ...;\r\n useAuth?: boolean;\r\n // authToken?: string; // bearerToken\r\n // TODO: support\r\n // accepts: string[]; // https://developer.mozilla.org/ru/docs/Web/HTTP/Headers/Accept\r\n // TODO: support\r\n crossDomain?: boolean;\r\n contentType?: MimeType; // dataType\r\n httpOnly?: boolean;\r\n // transportType: ...;\r\n callbacks?: IRequestCallbacks<TResult>;\r\n}\r\n"],"names":["getResponseBlob","response","getResponseJson","getResponseText","getResponseArrayBuffer","getResponseResult","request","contentType","result","resolved","httpStatus","ApiError"],"mappings":";;AAwEO,MAAMA,IAAkB,CAACC,MAAuBA,EAAS,KAAA,GAEnDC,IAAkB,CAACD,MAAuBA,EAAS,KAAA,GAEnDE,IAAkB,CAACF,MAAuBA,EAAS,KAAA,GAEnDG,IAAyB,CAACH,MAAuBA,EAAS,YAAA;AAGvE,eAAsBI,EAAkBJ,GAA0BK,GAAsC;AAEpG,MAAIC,IACAD,EAAQ,gBACPA,EAAQ,WAAWA,EAAQ,mBAAmB,UAAUA,EAAQ,QAAQ,IAAI,cAAc,IAAIA,EAAQ,QAAQ,cAAc;AACjI,EAAIL,EAAS,YAOTM,IAAcN,EAAS,mBAAmB,UAAUA,EAAS,QAAQ,IAAI,cAAc,IAAIA,EAAS,QAAQ,cAAc;AAE9H,MAAIO;AACJ,EAAKP,EAAS,aACVA,EAAS,WAAW,CAAA;AAExB,QAAMQ,IAAWR,EAAS;AAE1B,MADAM,KAAeA,KAAe,IAAI,YAAA,GAC9BA,EAAY,WAAW,OAAO;AAC9B,IAAAC,IAAS,MAAMP,EAAS,KAAA;AAAA,WACjBM,EAAY,WAAW,QAAQ;AACtC,IAAAC,IAAS,MAAMP,EAAS,KAAA;AAAA,WAEpBM,EAAY,WAAW,kBAAkB;AACzC,IAAAC,IAAS,MAAMP,EAAS,KAAA,GACxBQ,EAAS,OAAOD;AAAA,WACTD,EAAY,WAAW,cAAc;AAC5C,IAAAC,IAAS,MAAMP,EAAS,KAAA,GACxBQ,EAAS,OAAOD;AAAA;AAEhB,QAAI;AACA,MAAAC,EAAS,OAAO,MAAMR,EAAS,MAAA,EAAQ,KAAA;AAAA,IAC3C,QAAQ;AACJ,UAAI;AACA,QAAAQ,EAAS,OAAO,MAAMR,EAAS,KAAA;AAAA,MACnC,QAAQ;AAAA,MACR;AAAA,IACJ;AAKR,MAAI,EAAEA,EAAS,WAAWS,EAAW,MAAMT,EAAS,WAAWS,EAAW;AAEtE,UAAMC,EAAS,OAAOV,GAAUK,CAAO;AAG3C,SAAAA,EAAQ,SAASE,GACVA;AACX;"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@actdim/dynstruct",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.1.1",
|
|
4
4
|
"description": "A type-safe component system for large-scale apps: explicit dependencies, message bus communication, and structure-first, declarative design",
|
|
5
5
|
"author": "Pavel Borodaev",
|
|
6
6
|
"license": "Proprietary",
|
|
@@ -70,8 +70,8 @@
|
|
|
70
70
|
"build-storybook": "storybook build"
|
|
71
71
|
},
|
|
72
72
|
"peerDependencies": {
|
|
73
|
-
"@actdim/msgmesh": "^1.1
|
|
74
|
-
"@actdim/utico": "^1.0
|
|
73
|
+
"@actdim/msgmesh": "^1.2.1",
|
|
74
|
+
"@actdim/utico": "^1.1.0",
|
|
75
75
|
"http-status": "^2.1.0",
|
|
76
76
|
"jwt-decode": "^4.0.0",
|
|
77
77
|
"mobx": "^6.15.0",
|