@j2inn/resolvable-ui-elements 2.0.0 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (107) hide show
  1. package/dist/index.d.ts +12 -12
  2. package/dist/index.js +39 -39
  3. package/dist/resolvableElements/Resolver.d.ts +47 -47
  4. package/dist/resolvableElements/Resolver.js +57 -57
  5. package/dist/resolvableElements/elements/ResolvableElement.d.ts +14 -14
  6. package/dist/resolvableElements/elements/ResolvableElement.js +29 -29
  7. package/dist/resolvableElements/elements/ResolvableValueElement.d.ts +16 -16
  8. package/dist/resolvableElements/elements/ResolvableValueElement.js +38 -38
  9. package/dist/resolvableElements/elements/UiElement.d.ts +31 -31
  10. package/dist/resolvableElements/elements/UiElement.js +56 -56
  11. package/dist/resolvableElements/elements/expr/ResolvableExprElement.d.ts +26 -26
  12. package/dist/resolvableElements/elements/expr/ResolvableExprElement.js +105 -105
  13. package/dist/resolvableElements/elements/expr/ResolvableExprElementMeta.d.ts +10 -10
  14. package/dist/resolvableElements/elements/expr/ResolvableExprElementMeta.js +14 -14
  15. package/dist/resolvableElements/elements/function/FunctionElement.d.ts +12 -12
  16. package/dist/resolvableElements/elements/function/FunctionElement.js +41 -41
  17. package/dist/resolvableElements/elements/function/FunctionElementMeta.d.ts +9 -9
  18. package/dist/resolvableElements/elements/function/FunctionElementMeta.js +14 -14
  19. package/dist/resolvableElements/elements/list/ListElementMeta.d.ts +12 -12
  20. package/dist/resolvableElements/elements/list/ListElementMeta.js +14 -14
  21. package/dist/resolvableElements/elements/list/ResolvableListElement.d.ts +16 -16
  22. package/dist/resolvableElements/elements/list/ResolvableListElement.js +102 -102
  23. package/dist/resolvableElements/elements/makeElement.d.ts +7 -7
  24. package/dist/resolvableElements/elements/makeElement.js +40 -40
  25. package/dist/resolvableElements/elements/section/ResolvableSectionElement.d.ts +24 -24
  26. package/dist/resolvableElements/elements/section/ResolvableSectionElement.js +133 -122
  27. package/dist/resolvableElements/elements/section/ResolvableSectionElement.js.map +1 -1
  28. package/dist/resolvableElements/elements/section/SectionElementMeta.d.ts +16 -16
  29. package/dist/resolvableElements/elements/section/SectionElementMeta.js +11 -11
  30. package/dist/resolvableElements/elements/section/resolveSection.d.ts +12 -12
  31. package/dist/resolvableElements/elements/section/resolveSection.js +41 -41
  32. package/dist/resolvableElements/elements/tag/ResolvableTagElement.d.ts +18 -16
  33. package/dist/resolvableElements/elements/tag/ResolvableTagElement.js +113 -105
  34. package/dist/resolvableElements/elements/tag/ResolvableTagElement.js.map +1 -1
  35. package/dist/resolvableElements/elements/tag/ResolvableTagElementBatchProcessor.d.ts +25 -0
  36. package/dist/resolvableElements/elements/tag/ResolvableTagElementBatchProcessor.js +68 -0
  37. package/dist/resolvableElements/elements/tag/ResolvableTagElementBatchProcessor.js.map +1 -0
  38. package/dist/resolvableElements/elements/tag/TagElementMeta.d.ts +12 -12
  39. package/dist/resolvableElements/elements/tag/TagElementMeta.js +14 -14
  40. package/dist/resolvableElements/interfacesGeneration/generateInterfaces.d.ts +17 -17
  41. package/dist/resolvableElements/interfacesGeneration/generateInterfaces.js +134 -134
  42. package/dist/resolvableElements/interfacesGeneration/generateTypescriptInterfacesFile.d.ts +4 -4
  43. package/dist/resolvableElements/interfacesGeneration/generateTypescriptInterfacesFile.js +41 -41
  44. package/dist/resolvableElements/react/SectionChecker.d.ts +24 -24
  45. package/dist/resolvableElements/react/SectionChecker.jsx +27 -27
  46. package/dist/resolvableElements/react/useResolveSection.d.ts +21 -21
  47. package/dist/resolvableElements/react/useResolveSection.js +65 -65
  48. package/dist/resolvableElements/react/useResolverContext.d.ts +9 -9
  49. package/dist/resolvableElements/react/useResolverContext.jsx +64 -64
  50. package/dist/resolvableElements/resolveTemplatedExpression.d.ts +22 -22
  51. package/dist/resolvableElements/resolveTemplatedExpression.js +43 -43
  52. package/dist/useCurrentUser.d.ts +10 -10
  53. package/dist/useCurrentUser.jsx +48 -48
  54. package/dist_es/index.d.ts +12 -12
  55. package/dist_es/index.js +20 -20
  56. package/dist_es/resolvableElements/Resolver.d.ts +47 -47
  57. package/dist_es/resolvableElements/Resolver.js +53 -53
  58. package/dist_es/resolvableElements/elements/ResolvableElement.d.ts +14 -14
  59. package/dist_es/resolvableElements/elements/ResolvableElement.js +25 -25
  60. package/dist_es/resolvableElements/elements/ResolvableValueElement.d.ts +16 -16
  61. package/dist_es/resolvableElements/elements/ResolvableValueElement.js +32 -32
  62. package/dist_es/resolvableElements/elements/UiElement.d.ts +31 -31
  63. package/dist_es/resolvableElements/elements/UiElement.js +52 -52
  64. package/dist_es/resolvableElements/elements/expr/ResolvableExprElement.d.ts +26 -26
  65. package/dist_es/resolvableElements/elements/expr/ResolvableExprElement.js +101 -101
  66. package/dist_es/resolvableElements/elements/expr/ResolvableExprElementMeta.d.ts +10 -10
  67. package/dist_es/resolvableElements/elements/expr/ResolvableExprElementMeta.js +9 -9
  68. package/dist_es/resolvableElements/elements/function/FunctionElement.d.ts +12 -12
  69. package/dist_es/resolvableElements/elements/function/FunctionElement.js +36 -36
  70. package/dist_es/resolvableElements/elements/function/FunctionElementMeta.d.ts +9 -9
  71. package/dist_es/resolvableElements/elements/function/FunctionElementMeta.js +9 -9
  72. package/dist_es/resolvableElements/elements/list/ListElementMeta.d.ts +12 -12
  73. package/dist_es/resolvableElements/elements/list/ListElementMeta.js +9 -9
  74. package/dist_es/resolvableElements/elements/list/ResolvableListElement.d.ts +16 -16
  75. package/dist_es/resolvableElements/elements/list/ResolvableListElement.js +98 -98
  76. package/dist_es/resolvableElements/elements/makeElement.d.ts +7 -7
  77. package/dist_es/resolvableElements/elements/makeElement.js +36 -36
  78. package/dist_es/resolvableElements/elements/section/ResolvableSectionElement.d.ts +24 -24
  79. package/dist_es/resolvableElements/elements/section/ResolvableSectionElement.js +128 -117
  80. package/dist_es/resolvableElements/elements/section/ResolvableSectionElement.js.map +1 -1
  81. package/dist_es/resolvableElements/elements/section/SectionElementMeta.d.ts +16 -16
  82. package/dist_es/resolvableElements/elements/section/SectionElementMeta.js +6 -6
  83. package/dist_es/resolvableElements/elements/section/resolveSection.d.ts +12 -12
  84. package/dist_es/resolvableElements/elements/section/resolveSection.js +36 -36
  85. package/dist_es/resolvableElements/elements/tag/ResolvableTagElement.d.ts +18 -16
  86. package/dist_es/resolvableElements/elements/tag/ResolvableTagElement.js +109 -101
  87. package/dist_es/resolvableElements/elements/tag/ResolvableTagElement.js.map +1 -1
  88. package/dist_es/resolvableElements/elements/tag/ResolvableTagElementBatchProcessor.d.ts +25 -0
  89. package/dist_es/resolvableElements/elements/tag/ResolvableTagElementBatchProcessor.js +64 -0
  90. package/dist_es/resolvableElements/elements/tag/ResolvableTagElementBatchProcessor.js.map +1 -0
  91. package/dist_es/resolvableElements/elements/tag/TagElementMeta.d.ts +12 -12
  92. package/dist_es/resolvableElements/elements/tag/TagElementMeta.js +9 -9
  93. package/dist_es/resolvableElements/interfacesGeneration/generateInterfaces.d.ts +17 -17
  94. package/dist_es/resolvableElements/interfacesGeneration/generateInterfaces.js +128 -128
  95. package/dist_es/resolvableElements/interfacesGeneration/generateTypescriptInterfacesFile.d.ts +4 -4
  96. package/dist_es/resolvableElements/interfacesGeneration/generateTypescriptInterfacesFile.js +15 -15
  97. package/dist_es/resolvableElements/react/SectionChecker.d.ts +24 -24
  98. package/dist_es/resolvableElements/react/SectionChecker.jsx +20 -20
  99. package/dist_es/resolvableElements/react/useResolveSection.d.ts +21 -21
  100. package/dist_es/resolvableElements/react/useResolveSection.js +61 -61
  101. package/dist_es/resolvableElements/react/useResolverContext.d.ts +9 -9
  102. package/dist_es/resolvableElements/react/useResolverContext.jsx +36 -36
  103. package/dist_es/resolvableElements/resolveTemplatedExpression.d.ts +22 -22
  104. package/dist_es/resolvableElements/resolveTemplatedExpression.js +38 -38
  105. package/dist_es/useCurrentUser.d.ts +10 -10
  106. package/dist_es/useCurrentUser.jsx +20 -20
  107. 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 SectionElementMeta_1 = require("./SectionElementMeta");
11
- /**
12
- * A container of elements that can be resolve them by propagation of the lifecycle functions.
13
- */
14
- class ResolvableSectionElement extends ResolvableElement_1.ResolvableElement {
15
- constructor(data) {
16
- super(data);
17
- this.children = this.#deserializeChildren(data);
18
- }
19
- _value = {};
20
- get value() {
21
- return this._value;
22
- }
23
- set value(value) {
24
- this._value = value;
25
- this.onUpdate(value);
26
- }
27
- #deserializeChildren = (data) => {
28
- return Object.entries(data.element)
29
- .filter(([name, element]) => {
30
- // Filter out non-valid children
31
- if (name.startsWith('_')) {
32
- return false;
33
- }
34
- // Filter out non-accessible subsections
35
- if ((0, SectionElementMeta_1.isSectionData)(element)) {
36
- return this.isAccessAllowed(element._meta);
37
- }
38
- return true;
39
- })
40
- .map(([name, element]) => {
41
- return this.#deserializeChild({
42
- ...data,
43
- element,
44
- name,
45
- onUpdate: (childVal) => {
46
- this._value[name] = childVal;
47
- this.onUpdate(this.value);
48
- },
49
- });
50
- })
51
- .filter((element) => !!element);
52
- };
53
- #deserializeChild = (data, deepDeserialize = false) => {
54
- if (!deepDeserialize && (0, SectionElementMeta_1.isSectionData)(data.element)) {
55
- return [data.name, data.element];
56
- }
57
- else {
58
- try {
59
- // Make a resolvable element
60
- return (0, makeElement_1.makeElement)(data);
61
- }
62
- catch (e) {
63
- // return children section name and data
64
- return [data.name, data.element];
65
- }
66
- }
67
- };
68
- children = [];
69
- toJSON() {
70
- const props = { _meta: this._meta };
71
- this.children?.forEach((child) => {
72
- let name, val;
73
- if ((0, exports.isChildUnresolvedSection)(child)) {
74
- name = child[0];
75
- val = child[1];
76
- }
77
- else {
78
- name = child.name;
79
- val = child.toJSON();
80
- }
81
- if (name) {
82
- props[name] = val;
83
- }
84
- });
85
- return props;
86
- }
87
- doInitialize = async (parameters) => {
88
- const promises = [];
89
- for (const child of this.children) {
90
- if ((0, exports.isChildUnresolvedSection)(child) && child[0]) {
91
- this._value[child[0]] = child[1];
92
- }
93
- else if (child instanceof ResolvableElement_1.ResolvableElement) {
94
- promises.push(child.initialize(parameters));
95
- }
96
- }
97
- this.onUpdate(this.value);
98
- await Promise.all(promises);
99
- };
100
- doClose = async () => {
101
- const promises = [];
102
- for (const child of this.children) {
103
- if (child instanceof ResolvableElement_1.ResolvableElement) {
104
- promises.push(child.close());
105
- }
106
- }
107
- await Promise.all(promises);
108
- };
109
- getParameterList = () => {
110
- const parameters = [];
111
- this.children.forEach((element) => {
112
- if (!(0, exports.isChildUnresolvedSection)(element) &&
113
- element instanceof ResolvableValueElement_1.ResolvableValueElement) {
114
- parameters.push(...element.getParameterList());
115
- }
116
- });
117
- return [...new Set(parameters)]; // Retrieve unique values
118
- };
119
- }
120
- exports.ResolvableSectionElement = ResolvableSectionElement;
121
- const isChildUnresolvedSection = (value) => value instanceof Array && value.length === 2 && (0, SectionElementMeta_1.isSectionData)(value[1]);
122
- exports.isChildUnresolvedSection = isChildUnresolvedSection;
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