@j2inn/resolvable-ui-elements 2.0.0 → 2.1.0-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +12 -12
- package/dist/index.js +39 -39
- package/dist/resolvableElements/Resolver.d.ts +47 -47
- package/dist/resolvableElements/Resolver.js +57 -57
- package/dist/resolvableElements/elements/ResolvableElement.d.ts +14 -14
- package/dist/resolvableElements/elements/ResolvableElement.js +29 -29
- package/dist/resolvableElements/elements/ResolvableValueElement.d.ts +16 -16
- package/dist/resolvableElements/elements/ResolvableValueElement.js +38 -38
- package/dist/resolvableElements/elements/UiElement.d.ts +31 -31
- package/dist/resolvableElements/elements/UiElement.js +56 -56
- package/dist/resolvableElements/elements/expr/ResolvableExprElement.d.ts +26 -26
- package/dist/resolvableElements/elements/expr/ResolvableExprElement.js +105 -105
- package/dist/resolvableElements/elements/expr/ResolvableExprElementMeta.d.ts +10 -10
- package/dist/resolvableElements/elements/expr/ResolvableExprElementMeta.js +14 -14
- package/dist/resolvableElements/elements/function/FunctionElement.d.ts +12 -12
- package/dist/resolvableElements/elements/function/FunctionElement.js +41 -41
- package/dist/resolvableElements/elements/function/FunctionElementMeta.d.ts +9 -9
- package/dist/resolvableElements/elements/function/FunctionElementMeta.js +14 -14
- package/dist/resolvableElements/elements/list/ListElementMeta.d.ts +12 -12
- package/dist/resolvableElements/elements/list/ListElementMeta.js +14 -14
- package/dist/resolvableElements/elements/list/ResolvableListElement.d.ts +16 -16
- package/dist/resolvableElements/elements/list/ResolvableListElement.js +102 -102
- package/dist/resolvableElements/elements/makeElement.d.ts +7 -7
- package/dist/resolvableElements/elements/makeElement.js +40 -40
- package/dist/resolvableElements/elements/section/ResolvableSectionElement.d.ts +24 -24
- package/dist/resolvableElements/elements/section/ResolvableSectionElement.js +133 -122
- package/dist/resolvableElements/elements/section/ResolvableSectionElement.js.map +1 -1
- package/dist/resolvableElements/elements/section/SectionElementMeta.d.ts +16 -16
- package/dist/resolvableElements/elements/section/SectionElementMeta.js +11 -11
- package/dist/resolvableElements/elements/section/resolveSection.d.ts +12 -12
- package/dist/resolvableElements/elements/section/resolveSection.js +41 -41
- package/dist/resolvableElements/elements/tag/ResolvableTagElement.d.ts +18 -16
- package/dist/resolvableElements/elements/tag/ResolvableTagElement.js +113 -105
- package/dist/resolvableElements/elements/tag/ResolvableTagElement.js.map +1 -1
- package/dist/resolvableElements/elements/tag/ResolvableTagElementBatchProcessor.d.ts +25 -0
- package/dist/resolvableElements/elements/tag/ResolvableTagElementBatchProcessor.js +68 -0
- package/dist/resolvableElements/elements/tag/ResolvableTagElementBatchProcessor.js.map +1 -0
- package/dist/resolvableElements/elements/tag/TagElementMeta.d.ts +12 -12
- package/dist/resolvableElements/elements/tag/TagElementMeta.js +14 -14
- package/dist/resolvableElements/interfacesGeneration/generateInterfaces.d.ts +17 -17
- package/dist/resolvableElements/interfacesGeneration/generateInterfaces.js +134 -134
- package/dist/resolvableElements/interfacesGeneration/generateTypescriptInterfacesFile.d.ts +4 -4
- package/dist/resolvableElements/interfacesGeneration/generateTypescriptInterfacesFile.js +41 -41
- package/dist/resolvableElements/react/SectionChecker.d.ts +24 -24
- package/dist/resolvableElements/react/SectionChecker.jsx +27 -27
- package/dist/resolvableElements/react/useResolveSection.d.ts +21 -21
- package/dist/resolvableElements/react/useResolveSection.js +65 -65
- package/dist/resolvableElements/react/useResolverContext.d.ts +9 -9
- package/dist/resolvableElements/react/useResolverContext.jsx +64 -64
- package/dist/resolvableElements/resolveTemplatedExpression.d.ts +22 -22
- package/dist/resolvableElements/resolveTemplatedExpression.js +43 -43
- package/dist/useCurrentUser.d.ts +10 -10
- package/dist/useCurrentUser.jsx +48 -48
- package/dist_es/index.d.ts +12 -12
- package/dist_es/index.js +20 -20
- package/dist_es/resolvableElements/Resolver.d.ts +47 -47
- package/dist_es/resolvableElements/Resolver.js +53 -53
- package/dist_es/resolvableElements/elements/ResolvableElement.d.ts +14 -14
- package/dist_es/resolvableElements/elements/ResolvableElement.js +25 -25
- package/dist_es/resolvableElements/elements/ResolvableValueElement.d.ts +16 -16
- package/dist_es/resolvableElements/elements/ResolvableValueElement.js +32 -32
- package/dist_es/resolvableElements/elements/UiElement.d.ts +31 -31
- package/dist_es/resolvableElements/elements/UiElement.js +52 -52
- package/dist_es/resolvableElements/elements/expr/ResolvableExprElement.d.ts +26 -26
- package/dist_es/resolvableElements/elements/expr/ResolvableExprElement.js +101 -101
- package/dist_es/resolvableElements/elements/expr/ResolvableExprElementMeta.d.ts +10 -10
- package/dist_es/resolvableElements/elements/expr/ResolvableExprElementMeta.js +9 -9
- package/dist_es/resolvableElements/elements/function/FunctionElement.d.ts +12 -12
- package/dist_es/resolvableElements/elements/function/FunctionElement.js +36 -36
- package/dist_es/resolvableElements/elements/function/FunctionElementMeta.d.ts +9 -9
- package/dist_es/resolvableElements/elements/function/FunctionElementMeta.js +9 -9
- package/dist_es/resolvableElements/elements/list/ListElementMeta.d.ts +12 -12
- package/dist_es/resolvableElements/elements/list/ListElementMeta.js +9 -9
- package/dist_es/resolvableElements/elements/list/ResolvableListElement.d.ts +16 -16
- package/dist_es/resolvableElements/elements/list/ResolvableListElement.js +98 -98
- package/dist_es/resolvableElements/elements/makeElement.d.ts +7 -7
- package/dist_es/resolvableElements/elements/makeElement.js +36 -36
- package/dist_es/resolvableElements/elements/section/ResolvableSectionElement.d.ts +24 -24
- package/dist_es/resolvableElements/elements/section/ResolvableSectionElement.js +128 -117
- package/dist_es/resolvableElements/elements/section/ResolvableSectionElement.js.map +1 -1
- package/dist_es/resolvableElements/elements/section/SectionElementMeta.d.ts +16 -16
- package/dist_es/resolvableElements/elements/section/SectionElementMeta.js +6 -6
- package/dist_es/resolvableElements/elements/section/resolveSection.d.ts +12 -12
- package/dist_es/resolvableElements/elements/section/resolveSection.js +36 -36
- package/dist_es/resolvableElements/elements/tag/ResolvableTagElement.d.ts +18 -16
- package/dist_es/resolvableElements/elements/tag/ResolvableTagElement.js +109 -101
- package/dist_es/resolvableElements/elements/tag/ResolvableTagElement.js.map +1 -1
- package/dist_es/resolvableElements/elements/tag/ResolvableTagElementBatchProcessor.d.ts +25 -0
- package/dist_es/resolvableElements/elements/tag/ResolvableTagElementBatchProcessor.js +64 -0
- package/dist_es/resolvableElements/elements/tag/ResolvableTagElementBatchProcessor.js.map +1 -0
- package/dist_es/resolvableElements/elements/tag/TagElementMeta.d.ts +12 -12
- package/dist_es/resolvableElements/elements/tag/TagElementMeta.js +9 -9
- package/dist_es/resolvableElements/interfacesGeneration/generateInterfaces.d.ts +17 -17
- package/dist_es/resolvableElements/interfacesGeneration/generateInterfaces.js +128 -128
- package/dist_es/resolvableElements/interfacesGeneration/generateTypescriptInterfacesFile.d.ts +4 -4
- package/dist_es/resolvableElements/interfacesGeneration/generateTypescriptInterfacesFile.js +15 -15
- package/dist_es/resolvableElements/react/SectionChecker.d.ts +24 -24
- package/dist_es/resolvableElements/react/SectionChecker.jsx +20 -20
- package/dist_es/resolvableElements/react/useResolveSection.d.ts +21 -21
- package/dist_es/resolvableElements/react/useResolveSection.js +61 -61
- package/dist_es/resolvableElements/react/useResolverContext.d.ts +9 -9
- package/dist_es/resolvableElements/react/useResolverContext.jsx +36 -36
- package/dist_es/resolvableElements/resolveTemplatedExpression.d.ts +22 -22
- package/dist_es/resolvableElements/resolveTemplatedExpression.js +38 -38
- package/dist_es/useCurrentUser.d.ts +10 -10
- package/dist_es/useCurrentUser.jsx +20 -20
- package/package.json +2 -2
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
import { HDict } from 'haystack-core';
|
|
2
|
-
import { Watch } from 'haystack-nclient';
|
|
3
|
-
import { ResolvableValueElement } from '../ResolvableValueElement';
|
|
4
|
-
import { UiElementConstructorData, UiElementData } from '../UiElement';
|
|
5
|
-
/**
|
|
6
|
-
* Resolves to a list of records and keeps them updated using a watch.
|
|
7
|
-
*/
|
|
8
|
-
export declare class ResolvableListElement<T extends UiElementData> extends ResolvableValueElement<T> {
|
|
9
|
-
#private;
|
|
10
|
-
constructor(data: UiElementConstructorData<T>);
|
|
11
|
-
filter?: string;
|
|
12
|
-
watch?: Watch;
|
|
13
|
-
protected doInitialize: (parameters: HDict) => Promise<void>;
|
|
14
|
-
protected doClose: () => Promise<void>;
|
|
15
|
-
getParameterList: () => string[];
|
|
16
|
-
}
|
|
1
|
+
import { HDict } from 'haystack-core';
|
|
2
|
+
import { Watch } from 'haystack-nclient';
|
|
3
|
+
import { ResolvableValueElement } from '../ResolvableValueElement';
|
|
4
|
+
import { UiElementConstructorData, UiElementData } from '../UiElement';
|
|
5
|
+
/**
|
|
6
|
+
* Resolves to a list of records and keeps them updated using a watch.
|
|
7
|
+
*/
|
|
8
|
+
export declare class ResolvableListElement<T extends UiElementData> extends ResolvableValueElement<T> {
|
|
9
|
+
#private;
|
|
10
|
+
constructor(data: UiElementConstructorData<T>);
|
|
11
|
+
filter?: string;
|
|
12
|
+
watch?: Watch;
|
|
13
|
+
protected doInitialize: (parameters: HDict) => Promise<void>;
|
|
14
|
+
protected doClose: () => Promise<void>;
|
|
15
|
+
getParameterList: () => string[];
|
|
16
|
+
}
|
|
@@ -1,103 +1,103 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/*
|
|
3
|
-
* Copyright (c) 2022, J2 Innovations. All Rights Reserved
|
|
4
|
-
*/
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.ResolvableListElement = void 0;
|
|
7
|
-
const haystack_core_1 = require("haystack-core");
|
|
8
|
-
const haystack_nclient_1 = require("haystack-nclient");
|
|
9
|
-
const resolveTemplatedExpression_1 = require("../../resolveTemplatedExpression");
|
|
10
|
-
const ResolvableValueElement_1 = require("../ResolvableValueElement");
|
|
11
|
-
const UiElement_1 = require("../UiElement");
|
|
12
|
-
/**
|
|
13
|
-
* Resolves to a list of records and keeps them updated using a watch.
|
|
14
|
-
*/
|
|
15
|
-
class ResolvableListElement extends ResolvableValueElement_1.ResolvableValueElement {
|
|
16
|
-
constructor(data) {
|
|
17
|
-
super(data);
|
|
18
|
-
}
|
|
19
|
-
filter;
|
|
20
|
-
watch;
|
|
21
|
-
doInitialize = async (parameters) => {
|
|
22
|
-
const { subscribe, entityBinding, parentBinding } = this
|
|
23
|
-
._meta;
|
|
24
|
-
this.filter = (0, resolveTemplatedExpression_1.resolveTemplateExpression)(UiElement_1.UiElement.joinFilters(entityBinding, parentBinding), parameters);
|
|
25
|
-
if (!this.#isValidFilter(this.filter)) {
|
|
26
|
-
throw Error('Invalid filter');
|
|
27
|
-
}
|
|
28
|
-
const grid = await this.resolver.read(this.filter);
|
|
29
|
-
if (!this.#isValidReadGrid(grid)) {
|
|
30
|
-
return;
|
|
31
|
-
}
|
|
32
|
-
this.#updateValue(grid);
|
|
33
|
-
if (subscribe) {
|
|
34
|
-
await this.#setupWatch(grid);
|
|
35
|
-
}
|
|
36
|
-
};
|
|
37
|
-
doClose = async () => {
|
|
38
|
-
return this.watch?.close();
|
|
39
|
-
};
|
|
40
|
-
getParameterList = () => {
|
|
41
|
-
const { entityBinding, parentBinding } = this
|
|
42
|
-
._meta;
|
|
43
|
-
const parameters = [];
|
|
44
|
-
if (entityBinding) {
|
|
45
|
-
(0, resolveTemplatedExpression_1.replaceTemplateVariables)(entityBinding, (_, match) => {
|
|
46
|
-
parameters.push(match);
|
|
47
|
-
return '';
|
|
48
|
-
});
|
|
49
|
-
}
|
|
50
|
-
if (parentBinding) {
|
|
51
|
-
(0, resolveTemplatedExpression_1.replaceTemplateVariables)(parentBinding, (_, match) => {
|
|
52
|
-
parameters.push(match);
|
|
53
|
-
return '';
|
|
54
|
-
});
|
|
55
|
-
}
|
|
56
|
-
return parameters;
|
|
57
|
-
};
|
|
58
|
-
#isValidFilter = (filter) => {
|
|
59
|
-
try {
|
|
60
|
-
haystack_core_1.HFilter.parse(filter);
|
|
61
|
-
}
|
|
62
|
-
catch (e) {
|
|
63
|
-
console.error('Invalid filter: \n', this.filter, e);
|
|
64
|
-
return false;
|
|
65
|
-
}
|
|
66
|
-
return true;
|
|
67
|
-
};
|
|
68
|
-
#isValidReadGrid = (grid) => {
|
|
69
|
-
if (grid.isError()) {
|
|
70
|
-
console.error('Error grid result for query: \n', this.filter, grid.getError());
|
|
71
|
-
}
|
|
72
|
-
return true;
|
|
73
|
-
};
|
|
74
|
-
#setupWatch = async (grid) => {
|
|
75
|
-
const { subscribePollRate, subscribe } = this
|
|
76
|
-
._meta;
|
|
77
|
-
if (subscribe) {
|
|
78
|
-
this.watch = await this.resolver.makeWatch(this.#getWatchDisplayName(), grid);
|
|
79
|
-
const updateValue = () => this.#updateValue(this.watch?.grid);
|
|
80
|
-
// Update with the value received when opening the watch
|
|
81
|
-
updateValue();
|
|
82
|
-
// Configure polling options
|
|
83
|
-
this.watch.pollRate = subscribePollRate ?? haystack_nclient_1.DEFAULT_POLL_RATE_SECS;
|
|
84
|
-
this.watch.changed({
|
|
85
|
-
callback: updateValue,
|
|
86
|
-
});
|
|
87
|
-
}
|
|
88
|
-
};
|
|
89
|
-
#updateValue = (grid) => {
|
|
90
|
-
const { orderBy } = this._meta;
|
|
91
|
-
if (grid) {
|
|
92
|
-
if (orderBy) {
|
|
93
|
-
grid.sortBy(orderBy);
|
|
94
|
-
}
|
|
95
|
-
this.value = grid;
|
|
96
|
-
}
|
|
97
|
-
};
|
|
98
|
-
#getWatchDisplayName = () => {
|
|
99
|
-
return `ResolvableElement Watch for ${this.name ?? this.filter}`;
|
|
100
|
-
};
|
|
101
|
-
}
|
|
102
|
-
exports.ResolvableListElement = ResolvableListElement;
|
|
1
|
+
"use strict";
|
|
2
|
+
/*
|
|
3
|
+
* Copyright (c) 2022, J2 Innovations. All Rights Reserved
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.ResolvableListElement = void 0;
|
|
7
|
+
const haystack_core_1 = require("haystack-core");
|
|
8
|
+
const haystack_nclient_1 = require("haystack-nclient");
|
|
9
|
+
const resolveTemplatedExpression_1 = require("../../resolveTemplatedExpression");
|
|
10
|
+
const ResolvableValueElement_1 = require("../ResolvableValueElement");
|
|
11
|
+
const UiElement_1 = require("../UiElement");
|
|
12
|
+
/**
|
|
13
|
+
* Resolves to a list of records and keeps them updated using a watch.
|
|
14
|
+
*/
|
|
15
|
+
class ResolvableListElement extends ResolvableValueElement_1.ResolvableValueElement {
|
|
16
|
+
constructor(data) {
|
|
17
|
+
super(data);
|
|
18
|
+
}
|
|
19
|
+
filter;
|
|
20
|
+
watch;
|
|
21
|
+
doInitialize = async (parameters) => {
|
|
22
|
+
const { subscribe, entityBinding, parentBinding } = this
|
|
23
|
+
._meta;
|
|
24
|
+
this.filter = (0, resolveTemplatedExpression_1.resolveTemplateExpression)(UiElement_1.UiElement.joinFilters(entityBinding, parentBinding), parameters);
|
|
25
|
+
if (!this.#isValidFilter(this.filter)) {
|
|
26
|
+
throw Error('Invalid filter');
|
|
27
|
+
}
|
|
28
|
+
const grid = await this.resolver.read(this.filter);
|
|
29
|
+
if (!this.#isValidReadGrid(grid)) {
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
this.#updateValue(grid);
|
|
33
|
+
if (subscribe) {
|
|
34
|
+
await this.#setupWatch(grid);
|
|
35
|
+
}
|
|
36
|
+
};
|
|
37
|
+
doClose = async () => {
|
|
38
|
+
return this.watch?.close();
|
|
39
|
+
};
|
|
40
|
+
getParameterList = () => {
|
|
41
|
+
const { entityBinding, parentBinding } = this
|
|
42
|
+
._meta;
|
|
43
|
+
const parameters = [];
|
|
44
|
+
if (entityBinding) {
|
|
45
|
+
(0, resolveTemplatedExpression_1.replaceTemplateVariables)(entityBinding, (_, match) => {
|
|
46
|
+
parameters.push(match);
|
|
47
|
+
return '';
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
if (parentBinding) {
|
|
51
|
+
(0, resolveTemplatedExpression_1.replaceTemplateVariables)(parentBinding, (_, match) => {
|
|
52
|
+
parameters.push(match);
|
|
53
|
+
return '';
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
return parameters;
|
|
57
|
+
};
|
|
58
|
+
#isValidFilter = (filter) => {
|
|
59
|
+
try {
|
|
60
|
+
haystack_core_1.HFilter.parse(filter);
|
|
61
|
+
}
|
|
62
|
+
catch (e) {
|
|
63
|
+
console.error('Invalid filter: \n', this.filter, e);
|
|
64
|
+
return false;
|
|
65
|
+
}
|
|
66
|
+
return true;
|
|
67
|
+
};
|
|
68
|
+
#isValidReadGrid = (grid) => {
|
|
69
|
+
if (grid.isError()) {
|
|
70
|
+
console.error('Error grid result for query: \n', this.filter, grid.getError());
|
|
71
|
+
}
|
|
72
|
+
return true;
|
|
73
|
+
};
|
|
74
|
+
#setupWatch = async (grid) => {
|
|
75
|
+
const { subscribePollRate, subscribe } = this
|
|
76
|
+
._meta;
|
|
77
|
+
if (subscribe) {
|
|
78
|
+
this.watch = await this.resolver.makeWatch(this.#getWatchDisplayName(), grid);
|
|
79
|
+
const updateValue = () => this.#updateValue(this.watch?.grid);
|
|
80
|
+
// Update with the value received when opening the watch
|
|
81
|
+
updateValue();
|
|
82
|
+
// Configure polling options
|
|
83
|
+
this.watch.pollRate = subscribePollRate ?? haystack_nclient_1.DEFAULT_POLL_RATE_SECS;
|
|
84
|
+
this.watch.changed({
|
|
85
|
+
callback: updateValue,
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
};
|
|
89
|
+
#updateValue = (grid) => {
|
|
90
|
+
const { orderBy } = this._meta;
|
|
91
|
+
if (grid) {
|
|
92
|
+
if (orderBy) {
|
|
93
|
+
grid.sortBy(orderBy);
|
|
94
|
+
}
|
|
95
|
+
this.value = grid;
|
|
96
|
+
}
|
|
97
|
+
};
|
|
98
|
+
#getWatchDisplayName = () => {
|
|
99
|
+
return `ResolvableElement Watch for ${this.name ?? this.filter}`;
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
exports.ResolvableListElement = ResolvableListElement;
|
|
103
103
|
//# sourceMappingURL=ResolvableListElement.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { UiElement, UiElementConstructorData, UiElementData } from './UiElement';
|
|
2
|
-
/**
|
|
3
|
-
* Factory function used to build an element.
|
|
4
|
-
* @param data
|
|
5
|
-
* @returns
|
|
6
|
-
*/
|
|
7
|
-
export declare const makeElement: <T extends UiElementData<import("./UiElement").UiElementMeta>>(data: UiElementConstructorData<T>) => UiElement<T>;
|
|
1
|
+
import { UiElement, UiElementConstructorData, UiElementData } from './UiElement';
|
|
2
|
+
/**
|
|
3
|
+
* Factory function used to build an element.
|
|
4
|
+
* @param data
|
|
5
|
+
* @returns
|
|
6
|
+
*/
|
|
7
|
+
export declare const makeElement: <T extends UiElementData<import("./UiElement").UiElementMeta>>(data: UiElementConstructorData<T>) => UiElement<T>;
|
|
@@ -1,41 +1,41 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/*
|
|
3
|
-
* Copyright (c) 2022, J2 Innovations. All Rights Reserved
|
|
4
|
-
*/
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.makeElement = void 0;
|
|
7
|
-
const ResolvableExprElement_1 = require("./expr/ResolvableExprElement");
|
|
8
|
-
const ResolvableExprElementMeta_1 = require("./expr/ResolvableExprElementMeta");
|
|
9
|
-
const FunctionElement_1 = require("./function/FunctionElement");
|
|
10
|
-
const FunctionElementMeta_1 = require("./function/FunctionElementMeta");
|
|
11
|
-
const ListElementMeta_1 = require("./list/ListElementMeta");
|
|
12
|
-
const ResolvableListElement_1 = require("./list/ResolvableListElement");
|
|
13
|
-
const ResolvableSectionElement_1 = require("./section/ResolvableSectionElement");
|
|
14
|
-
const SectionElementMeta_1 = require("./section/SectionElementMeta");
|
|
15
|
-
const ResolvableTagElement_1 = require("./tag/ResolvableTagElement");
|
|
16
|
-
const TagElementMeta_1 = require("./tag/TagElementMeta");
|
|
17
|
-
/**
|
|
18
|
-
* Factory function used to build an element.
|
|
19
|
-
* @param data
|
|
20
|
-
* @returns
|
|
21
|
-
*/
|
|
22
|
-
const makeElement = (data) => {
|
|
23
|
-
if ((0, SectionElementMeta_1.isSectionData)(data.element)) {
|
|
24
|
-
return new ResolvableSectionElement_1.ResolvableSectionElement(data);
|
|
25
|
-
}
|
|
26
|
-
if ((0, TagElementMeta_1.isResolvableTagElementData)(data.element)) {
|
|
27
|
-
return new ResolvableTagElement_1.ResolvableTagElement(data);
|
|
28
|
-
}
|
|
29
|
-
if ((0, ListElementMeta_1.isResolvableListElementData)(data.element)) {
|
|
30
|
-
return new ResolvableListElement_1.ResolvableListElement(data);
|
|
31
|
-
}
|
|
32
|
-
if ((0, ResolvableExprElementMeta_1.isResolvableExprElementData)(data.element)) {
|
|
33
|
-
return new ResolvableExprElement_1.ResolvableExprElement(data);
|
|
34
|
-
}
|
|
35
|
-
if ((0, FunctionElementMeta_1.isFunctionElementData)(data.element)) {
|
|
36
|
-
return new FunctionElement_1.FunctionElement(data);
|
|
37
|
-
}
|
|
38
|
-
throw new Error(`Element cannot be deserialized: \n${JSON.stringify(data.element)}`);
|
|
39
|
-
};
|
|
40
|
-
exports.makeElement = makeElement;
|
|
1
|
+
"use strict";
|
|
2
|
+
/*
|
|
3
|
+
* Copyright (c) 2022, J2 Innovations. All Rights Reserved
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.makeElement = void 0;
|
|
7
|
+
const ResolvableExprElement_1 = require("./expr/ResolvableExprElement");
|
|
8
|
+
const ResolvableExprElementMeta_1 = require("./expr/ResolvableExprElementMeta");
|
|
9
|
+
const FunctionElement_1 = require("./function/FunctionElement");
|
|
10
|
+
const FunctionElementMeta_1 = require("./function/FunctionElementMeta");
|
|
11
|
+
const ListElementMeta_1 = require("./list/ListElementMeta");
|
|
12
|
+
const ResolvableListElement_1 = require("./list/ResolvableListElement");
|
|
13
|
+
const ResolvableSectionElement_1 = require("./section/ResolvableSectionElement");
|
|
14
|
+
const SectionElementMeta_1 = require("./section/SectionElementMeta");
|
|
15
|
+
const ResolvableTagElement_1 = require("./tag/ResolvableTagElement");
|
|
16
|
+
const TagElementMeta_1 = require("./tag/TagElementMeta");
|
|
17
|
+
/**
|
|
18
|
+
* Factory function used to build an element.
|
|
19
|
+
* @param data
|
|
20
|
+
* @returns
|
|
21
|
+
*/
|
|
22
|
+
const makeElement = (data) => {
|
|
23
|
+
if ((0, SectionElementMeta_1.isSectionData)(data.element)) {
|
|
24
|
+
return new ResolvableSectionElement_1.ResolvableSectionElement(data);
|
|
25
|
+
}
|
|
26
|
+
if ((0, TagElementMeta_1.isResolvableTagElementData)(data.element)) {
|
|
27
|
+
return new ResolvableTagElement_1.ResolvableTagElement(data);
|
|
28
|
+
}
|
|
29
|
+
if ((0, ListElementMeta_1.isResolvableListElementData)(data.element)) {
|
|
30
|
+
return new ResolvableListElement_1.ResolvableListElement(data);
|
|
31
|
+
}
|
|
32
|
+
if ((0, ResolvableExprElementMeta_1.isResolvableExprElementData)(data.element)) {
|
|
33
|
+
return new ResolvableExprElement_1.ResolvableExprElement(data);
|
|
34
|
+
}
|
|
35
|
+
if ((0, FunctionElementMeta_1.isFunctionElementData)(data.element)) {
|
|
36
|
+
return new FunctionElement_1.FunctionElement(data);
|
|
37
|
+
}
|
|
38
|
+
throw new Error(`Element cannot be deserialized: \n${JSON.stringify(data.element)}`);
|
|
39
|
+
};
|
|
40
|
+
exports.makeElement = makeElement;
|
|
41
41
|
//# sourceMappingURL=makeElement.js.map
|
|
@@ -1,24 +1,24 @@
|
|
|
1
|
-
import { HDict } from 'haystack-core';
|
|
2
|
-
import { ResolvableElement } from '../ResolvableElement';
|
|
3
|
-
import { UiElement, UiElementConstructorData, UiElementData } from '../UiElement';
|
|
4
|
-
import { ResolvedSection, UiElementSectionMeta } from './SectionElementMeta';
|
|
5
|
-
/**
|
|
6
|
-
* A container of elements that can be resolve them by propagation of the lifecycle functions.
|
|
7
|
-
*/
|
|
8
|
-
export declare class ResolvableSectionElement<T extends UiElementData<UiElementSectionMeta> = UiElementData<UiElementSectionMeta>> extends ResolvableElement<T> {
|
|
9
|
-
#private;
|
|
10
|
-
constructor(data: UiElementConstructorData<T>);
|
|
11
|
-
protected _value: Record<string, unknown>;
|
|
12
|
-
get value(): ResolvedSection<T>;
|
|
13
|
-
set value(value: ResolvedSection<T>);
|
|
14
|
-
children: (UiElement<UiElementData> | ChildUnresolvedSection)[];
|
|
15
|
-
toJSON(): Record<string, unknown>;
|
|
16
|
-
protected doInitialize: (parameters: HDict) => Promise<void>;
|
|
17
|
-
protected doClose: () => Promise<void>;
|
|
18
|
-
getParameterList: () => string[];
|
|
19
|
-
}
|
|
20
|
-
export declare const isChildUnresolvedSection: (value: unknown) => value is ChildUnresolvedSection;
|
|
21
|
-
export type ChildUnresolvedSection = [
|
|
22
|
-
string | undefined,
|
|
23
|
-
UiElementData<UiElementSectionMeta>
|
|
24
|
-
];
|
|
1
|
+
import { HDict } from 'haystack-core';
|
|
2
|
+
import { ResolvableElement } from '../ResolvableElement';
|
|
3
|
+
import { UiElement, UiElementConstructorData, UiElementData } from '../UiElement';
|
|
4
|
+
import { ResolvedSection, UiElementSectionMeta } from './SectionElementMeta';
|
|
5
|
+
/**
|
|
6
|
+
* A container of elements that can be resolve them by propagation of the lifecycle functions.
|
|
7
|
+
*/
|
|
8
|
+
export declare class ResolvableSectionElement<T extends UiElementData<UiElementSectionMeta> = UiElementData<UiElementSectionMeta>> extends ResolvableElement<T> {
|
|
9
|
+
#private;
|
|
10
|
+
constructor(data: UiElementConstructorData<T>);
|
|
11
|
+
protected _value: Record<string, unknown>;
|
|
12
|
+
get value(): ResolvedSection<T>;
|
|
13
|
+
set value(value: ResolvedSection<T>);
|
|
14
|
+
children: (UiElement<UiElementData> | ChildUnresolvedSection)[];
|
|
15
|
+
toJSON(): Record<string, unknown>;
|
|
16
|
+
protected doInitialize: (parameters: HDict) => Promise<void>;
|
|
17
|
+
protected doClose: () => Promise<void>;
|
|
18
|
+
getParameterList: () => string[];
|
|
19
|
+
}
|
|
20
|
+
export declare const isChildUnresolvedSection: (value: unknown) => value is ChildUnresolvedSection;
|
|
21
|
+
export type ChildUnresolvedSection = [
|
|
22
|
+
string | undefined,
|
|
23
|
+
UiElementData<UiElementSectionMeta>
|
|
24
|
+
];
|
|
@@ -1,123 +1,134 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/*
|
|
3
|
-
* Copyright (c) 2022, J2 Innovations. All Rights Reserved
|
|
4
|
-
*/
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.isChildUnresolvedSection = exports.ResolvableSectionElement = void 0;
|
|
7
|
-
const makeElement_1 = require("../makeElement");
|
|
8
|
-
const ResolvableElement_1 = require("../ResolvableElement");
|
|
9
|
-
const ResolvableValueElement_1 = require("../ResolvableValueElement");
|
|
10
|
-
const
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
}
|
|
120
|
-
|
|
121
|
-
const
|
|
122
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
/*
|
|
3
|
+
* Copyright (c) 2022, J2 Innovations. All Rights Reserved
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.isChildUnresolvedSection = exports.ResolvableSectionElement = void 0;
|
|
7
|
+
const makeElement_1 = require("../makeElement");
|
|
8
|
+
const ResolvableElement_1 = require("../ResolvableElement");
|
|
9
|
+
const ResolvableValueElement_1 = require("../ResolvableValueElement");
|
|
10
|
+
const ResolvableTagElement_1 = require("../tag/ResolvableTagElement");
|
|
11
|
+
const ResolvableTagElementBatchProcessor_1 = require("../tag/ResolvableTagElementBatchProcessor");
|
|
12
|
+
const SectionElementMeta_1 = require("./SectionElementMeta");
|
|
13
|
+
/**
|
|
14
|
+
* A container of elements that can be resolve them by propagation of the lifecycle functions.
|
|
15
|
+
*/
|
|
16
|
+
class ResolvableSectionElement extends ResolvableElement_1.ResolvableElement {
|
|
17
|
+
constructor(data) {
|
|
18
|
+
super(data);
|
|
19
|
+
this.children = this.#deserializeChildren(data);
|
|
20
|
+
}
|
|
21
|
+
_value = {};
|
|
22
|
+
get value() {
|
|
23
|
+
return this._value;
|
|
24
|
+
}
|
|
25
|
+
set value(value) {
|
|
26
|
+
this._value = value;
|
|
27
|
+
this.onUpdate(value);
|
|
28
|
+
}
|
|
29
|
+
#deserializeChildren = (data) => {
|
|
30
|
+
return Object.entries(data.element)
|
|
31
|
+
.filter(([name, element]) => {
|
|
32
|
+
// Filter out non-valid children
|
|
33
|
+
if (name.startsWith('_')) {
|
|
34
|
+
return false;
|
|
35
|
+
}
|
|
36
|
+
// Filter out non-accessible subsections
|
|
37
|
+
if ((0, SectionElementMeta_1.isSectionData)(element)) {
|
|
38
|
+
return this.isAccessAllowed(element._meta);
|
|
39
|
+
}
|
|
40
|
+
return true;
|
|
41
|
+
})
|
|
42
|
+
.map(([name, element]) => {
|
|
43
|
+
return this.#deserializeChild({
|
|
44
|
+
...data,
|
|
45
|
+
element,
|
|
46
|
+
name,
|
|
47
|
+
onUpdate: (childVal) => {
|
|
48
|
+
this._value[name] = childVal;
|
|
49
|
+
this.onUpdate(this.value);
|
|
50
|
+
},
|
|
51
|
+
});
|
|
52
|
+
})
|
|
53
|
+
.filter((element) => !!element);
|
|
54
|
+
};
|
|
55
|
+
#deserializeChild = (data, deepDeserialize = false) => {
|
|
56
|
+
if (!deepDeserialize && (0, SectionElementMeta_1.isSectionData)(data.element)) {
|
|
57
|
+
return [data.name, data.element];
|
|
58
|
+
}
|
|
59
|
+
else {
|
|
60
|
+
try {
|
|
61
|
+
// Make a resolvable element
|
|
62
|
+
return (0, makeElement_1.makeElement)(data);
|
|
63
|
+
}
|
|
64
|
+
catch (e) {
|
|
65
|
+
// return children section name and data
|
|
66
|
+
return [data.name, data.element];
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
};
|
|
70
|
+
children = [];
|
|
71
|
+
toJSON() {
|
|
72
|
+
const props = { _meta: this._meta };
|
|
73
|
+
this.children?.forEach((child) => {
|
|
74
|
+
let name, val;
|
|
75
|
+
if ((0, exports.isChildUnresolvedSection)(child)) {
|
|
76
|
+
name = child[0];
|
|
77
|
+
val = child[1];
|
|
78
|
+
}
|
|
79
|
+
else {
|
|
80
|
+
name = child.name;
|
|
81
|
+
val = child.toJSON();
|
|
82
|
+
}
|
|
83
|
+
if (name) {
|
|
84
|
+
props[name] = val;
|
|
85
|
+
}
|
|
86
|
+
});
|
|
87
|
+
return props;
|
|
88
|
+
}
|
|
89
|
+
doInitialize = async (parameters) => {
|
|
90
|
+
const promises = [];
|
|
91
|
+
const batchProcessor = new ResolvableTagElementBatchProcessor_1.ResolvableTagElementBatchProcessor();
|
|
92
|
+
for (const child of this.children) {
|
|
93
|
+
if ((0, exports.isChildUnresolvedSection)(child) && child[0]) {
|
|
94
|
+
this._value[child[0]] = child[1];
|
|
95
|
+
}
|
|
96
|
+
else if (child instanceof ResolvableElement_1.ResolvableElement) {
|
|
97
|
+
if (child instanceof ResolvableTagElement_1.ResolvableTagElement) {
|
|
98
|
+
batchProcessor.addElement(child);
|
|
99
|
+
}
|
|
100
|
+
else {
|
|
101
|
+
promises.push(child.initialize(parameters));
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
if (!batchProcessor.isEmpty()) {
|
|
106
|
+
promises.push(batchProcessor.initialize(parameters));
|
|
107
|
+
}
|
|
108
|
+
this.onUpdate(this.value);
|
|
109
|
+
await Promise.all(promises);
|
|
110
|
+
};
|
|
111
|
+
doClose = async () => {
|
|
112
|
+
const promises = [];
|
|
113
|
+
for (const child of this.children) {
|
|
114
|
+
if (child instanceof ResolvableElement_1.ResolvableElement) {
|
|
115
|
+
promises.push(child.close());
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
await Promise.all(promises);
|
|
119
|
+
};
|
|
120
|
+
getParameterList = () => {
|
|
121
|
+
const parameters = [];
|
|
122
|
+
this.children.forEach((element) => {
|
|
123
|
+
if (!(0, exports.isChildUnresolvedSection)(element) &&
|
|
124
|
+
element instanceof ResolvableValueElement_1.ResolvableValueElement) {
|
|
125
|
+
parameters.push(...element.getParameterList());
|
|
126
|
+
}
|
|
127
|
+
});
|
|
128
|
+
return [...new Set(parameters)]; // Retrieve unique values
|
|
129
|
+
};
|
|
130
|
+
}
|
|
131
|
+
exports.ResolvableSectionElement = ResolvableSectionElement;
|
|
132
|
+
const isChildUnresolvedSection = (value) => value instanceof Array && value.length === 2 && (0, SectionElementMeta_1.isSectionData)(value[1]);
|
|
133
|
+
exports.isChildUnresolvedSection = isChildUnresolvedSection;
|
|
123
134
|
//# sourceMappingURL=ResolvableSectionElement.js.map
|