@j2inn/resolvable-ui-elements 0.0.1-alpha.11

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 (134) hide show
  1. package/README.md +22 -0
  2. package/dist/index.d.ts +6 -0
  3. package/dist/index.js +32 -0
  4. package/dist/index.js.map +1 -0
  5. package/dist/resolvableElements/Resolver.d.ts +18 -0
  6. package/dist/resolvableElements/Resolver.js +29 -0
  7. package/dist/resolvableElements/Resolver.js.map +1 -0
  8. package/dist/resolvableElements/elements/ResolvableElement.d.ts +14 -0
  9. package/dist/resolvableElements/elements/ResolvableElement.js +30 -0
  10. package/dist/resolvableElements/elements/ResolvableElement.js.map +1 -0
  11. package/dist/resolvableElements/elements/ResolvableValueElement.d.ts +16 -0
  12. package/dist/resolvableElements/elements/ResolvableValueElement.js +39 -0
  13. package/dist/resolvableElements/elements/ResolvableValueElement.js.map +1 -0
  14. package/dist/resolvableElements/elements/UiElement.d.ts +40 -0
  15. package/dist/resolvableElements/elements/UiElement.js +54 -0
  16. package/dist/resolvableElements/elements/UiElement.js.map +1 -0
  17. package/dist/resolvableElements/elements/expr/ResolvableExprElement.d.ts +14 -0
  18. package/dist/resolvableElements/elements/expr/ResolvableExprElement.js +63 -0
  19. package/dist/resolvableElements/elements/expr/ResolvableExprElement.js.map +1 -0
  20. package/dist/resolvableElements/elements/expr/ResolvableExprElementMeta.d.ts +9 -0
  21. package/dist/resolvableElements/elements/expr/ResolvableExprElementMeta.js +15 -0
  22. package/dist/resolvableElements/elements/expr/ResolvableExprElementMeta.js.map +1 -0
  23. package/dist/resolvableElements/elements/function/FunctionElement.d.ts +12 -0
  24. package/dist/resolvableElements/elements/function/FunctionElement.js +37 -0
  25. package/dist/resolvableElements/elements/function/FunctionElement.js.map +1 -0
  26. package/dist/resolvableElements/elements/function/FunctionElementMeta.d.ts +8 -0
  27. package/dist/resolvableElements/elements/function/FunctionElementMeta.js +15 -0
  28. package/dist/resolvableElements/elements/function/FunctionElementMeta.js.map +1 -0
  29. package/dist/resolvableElements/elements/list/ListElementMeta.d.ts +12 -0
  30. package/dist/resolvableElements/elements/list/ListElementMeta.js +15 -0
  31. package/dist/resolvableElements/elements/list/ListElementMeta.js.map +1 -0
  32. package/dist/resolvableElements/elements/list/ResolvableListElement.d.ts +16 -0
  33. package/dist/resolvableElements/elements/list/ResolvableListElement.js +103 -0
  34. package/dist/resolvableElements/elements/list/ResolvableListElement.js.map +1 -0
  35. package/dist/resolvableElements/elements/makeElement.d.ts +7 -0
  36. package/dist/resolvableElements/elements/makeElement.js +41 -0
  37. package/dist/resolvableElements/elements/makeElement.js.map +1 -0
  38. package/dist/resolvableElements/elements/section/ResolvableSectionElement.d.ts +21 -0
  39. package/dist/resolvableElements/elements/section/ResolvableSectionElement.js +113 -0
  40. package/dist/resolvableElements/elements/section/ResolvableSectionElement.js.map +1 -0
  41. package/dist/resolvableElements/elements/section/SectionElementMeta.d.ts +9 -0
  42. package/dist/resolvableElements/elements/section/SectionElementMeta.js +12 -0
  43. package/dist/resolvableElements/elements/section/SectionElementMeta.js.map +1 -0
  44. package/dist/resolvableElements/elements/tag/ResolvableTagElement.d.ts +16 -0
  45. package/dist/resolvableElements/elements/tag/ResolvableTagElement.js +106 -0
  46. package/dist/resolvableElements/elements/tag/ResolvableTagElement.js.map +1 -0
  47. package/dist/resolvableElements/elements/tag/TagElementMeta.d.ts +12 -0
  48. package/dist/resolvableElements/elements/tag/TagElementMeta.js +15 -0
  49. package/dist/resolvableElements/elements/tag/TagElementMeta.js.map +1 -0
  50. package/dist/resolvableElements/interfacesGeneration/generateInterfaces.d.ts +3 -0
  51. package/dist/resolvableElements/interfacesGeneration/generateInterfaces.js +136 -0
  52. package/dist/resolvableElements/interfacesGeneration/generateInterfaces.js.map +1 -0
  53. package/dist/resolvableElements/interfacesGeneration/generateTypescriptInterfacesFile.d.ts +4 -0
  54. package/dist/resolvableElements/interfacesGeneration/generateTypescriptInterfacesFile.js +42 -0
  55. package/dist/resolvableElements/interfacesGeneration/generateTypescriptInterfacesFile.js.map +1 -0
  56. package/dist/resolvableElements/react/useResolveSection.d.ts +21 -0
  57. package/dist/resolvableElements/react/useResolveSection.js +71 -0
  58. package/dist/resolvableElements/react/useResolveSection.js.map +1 -0
  59. package/dist/resolvableElements/react/useResolverContext.d.ts +4 -0
  60. package/dist/resolvableElements/react/useResolverContext.jsx +57 -0
  61. package/dist/resolvableElements/react/useResolverContext.jsx.map +1 -0
  62. package/dist/resolvableElements/resolveTemplatedExpression.d.ts +19 -0
  63. package/dist/resolvableElements/resolveTemplatedExpression.js +36 -0
  64. package/dist/resolvableElements/resolveTemplatedExpression.js.map +1 -0
  65. package/dist/useCurrentUser.d.ts +10 -0
  66. package/dist/useCurrentUser.jsx +51 -0
  67. package/dist/useCurrentUser.jsx.map +1 -0
  68. package/dist_es/index.d.ts +6 -0
  69. package/dist_es/index.js +14 -0
  70. package/dist_es/index.js.map +1 -0
  71. package/dist_es/resolvableElements/Resolver.d.ts +18 -0
  72. package/dist_es/resolvableElements/Resolver.js +25 -0
  73. package/dist_es/resolvableElements/Resolver.js.map +1 -0
  74. package/dist_es/resolvableElements/elements/ResolvableElement.d.ts +14 -0
  75. package/dist_es/resolvableElements/elements/ResolvableElement.js +26 -0
  76. package/dist_es/resolvableElements/elements/ResolvableElement.js.map +1 -0
  77. package/dist_es/resolvableElements/elements/ResolvableValueElement.d.ts +16 -0
  78. package/dist_es/resolvableElements/elements/ResolvableValueElement.js +33 -0
  79. package/dist_es/resolvableElements/elements/ResolvableValueElement.js.map +1 -0
  80. package/dist_es/resolvableElements/elements/UiElement.d.ts +40 -0
  81. package/dist_es/resolvableElements/elements/UiElement.js +49 -0
  82. package/dist_es/resolvableElements/elements/UiElement.js.map +1 -0
  83. package/dist_es/resolvableElements/elements/expr/ResolvableExprElement.d.ts +14 -0
  84. package/dist_es/resolvableElements/elements/expr/ResolvableExprElement.js +59 -0
  85. package/dist_es/resolvableElements/elements/expr/ResolvableExprElement.js.map +1 -0
  86. package/dist_es/resolvableElements/elements/expr/ResolvableExprElementMeta.d.ts +9 -0
  87. package/dist_es/resolvableElements/elements/expr/ResolvableExprElementMeta.js +10 -0
  88. package/dist_es/resolvableElements/elements/expr/ResolvableExprElementMeta.js.map +1 -0
  89. package/dist_es/resolvableElements/elements/function/FunctionElement.d.ts +12 -0
  90. package/dist_es/resolvableElements/elements/function/FunctionElement.js +32 -0
  91. package/dist_es/resolvableElements/elements/function/FunctionElement.js.map +1 -0
  92. package/dist_es/resolvableElements/elements/function/FunctionElementMeta.d.ts +8 -0
  93. package/dist_es/resolvableElements/elements/function/FunctionElementMeta.js +10 -0
  94. package/dist_es/resolvableElements/elements/function/FunctionElementMeta.js.map +1 -0
  95. package/dist_es/resolvableElements/elements/list/ListElementMeta.d.ts +12 -0
  96. package/dist_es/resolvableElements/elements/list/ListElementMeta.js +10 -0
  97. package/dist_es/resolvableElements/elements/list/ListElementMeta.js.map +1 -0
  98. package/dist_es/resolvableElements/elements/list/ResolvableListElement.d.ts +16 -0
  99. package/dist_es/resolvableElements/elements/list/ResolvableListElement.js +99 -0
  100. package/dist_es/resolvableElements/elements/list/ResolvableListElement.js.map +1 -0
  101. package/dist_es/resolvableElements/elements/makeElement.d.ts +7 -0
  102. package/dist_es/resolvableElements/elements/makeElement.js +37 -0
  103. package/dist_es/resolvableElements/elements/makeElement.js.map +1 -0
  104. package/dist_es/resolvableElements/elements/section/ResolvableSectionElement.d.ts +21 -0
  105. package/dist_es/resolvableElements/elements/section/ResolvableSectionElement.js +108 -0
  106. package/dist_es/resolvableElements/elements/section/ResolvableSectionElement.js.map +1 -0
  107. package/dist_es/resolvableElements/elements/section/SectionElementMeta.d.ts +9 -0
  108. package/dist_es/resolvableElements/elements/section/SectionElementMeta.js +7 -0
  109. package/dist_es/resolvableElements/elements/section/SectionElementMeta.js.map +1 -0
  110. package/dist_es/resolvableElements/elements/tag/ResolvableTagElement.d.ts +16 -0
  111. package/dist_es/resolvableElements/elements/tag/ResolvableTagElement.js +102 -0
  112. package/dist_es/resolvableElements/elements/tag/ResolvableTagElement.js.map +1 -0
  113. package/dist_es/resolvableElements/elements/tag/TagElementMeta.d.ts +12 -0
  114. package/dist_es/resolvableElements/elements/tag/TagElementMeta.js +10 -0
  115. package/dist_es/resolvableElements/elements/tag/TagElementMeta.js.map +1 -0
  116. package/dist_es/resolvableElements/interfacesGeneration/generateInterfaces.d.ts +3 -0
  117. package/dist_es/resolvableElements/interfacesGeneration/generateInterfaces.js +132 -0
  118. package/dist_es/resolvableElements/interfacesGeneration/generateInterfaces.js.map +1 -0
  119. package/dist_es/resolvableElements/interfacesGeneration/generateTypescriptInterfacesFile.d.ts +4 -0
  120. package/dist_es/resolvableElements/interfacesGeneration/generateTypescriptInterfacesFile.js +16 -0
  121. package/dist_es/resolvableElements/interfacesGeneration/generateTypescriptInterfacesFile.js.map +1 -0
  122. package/dist_es/resolvableElements/react/useResolveSection.d.ts +21 -0
  123. package/dist_es/resolvableElements/react/useResolveSection.js +67 -0
  124. package/dist_es/resolvableElements/react/useResolveSection.js.map +1 -0
  125. package/dist_es/resolvableElements/react/useResolverContext.d.ts +4 -0
  126. package/dist_es/resolvableElements/react/useResolverContext.jsx +29 -0
  127. package/dist_es/resolvableElements/react/useResolverContext.jsx.map +1 -0
  128. package/dist_es/resolvableElements/resolveTemplatedExpression.d.ts +19 -0
  129. package/dist_es/resolvableElements/resolveTemplatedExpression.js +31 -0
  130. package/dist_es/resolvableElements/resolveTemplatedExpression.js.map +1 -0
  131. package/dist_es/useCurrentUser.d.ts +10 -0
  132. package/dist_es/useCurrentUser.jsx +23 -0
  133. package/dist_es/useCurrentUser.jsx.map +1 -0
  134. package/package.json +51 -0
@@ -0,0 +1,14 @@
1
+ import { HDict } from 'haystack-core';
2
+ import { ResolvableValueElement } from '../ResolvableValueElement';
3
+ import { UiElementConstructorData, UiElementData } from '../UiElement';
4
+ /**
5
+ * Resolves to the result of an expression.
6
+ */
7
+ export declare class ResolvableExprElement<T extends UiElementData> extends ResolvableValueElement<T> {
8
+ #private;
9
+ constructor(data: UiElementConstructorData<T>);
10
+ refreshes: number;
11
+ protected doInitialize: (parameters: HDict) => Promise<void>;
12
+ protected doClose: () => Promise<void>;
13
+ getParameterList: () => string[];
14
+ }
@@ -0,0 +1,59 @@
1
+ /*
2
+ * Copyright (c) 2022, J2 Innovations. All Rights Reserved
3
+ */
4
+ import { HNum } from 'haystack-core';
5
+ import { millisecond, second } from 'haystack-units';
6
+ import { replaceTemplateVariables, resolveTemplateExpression, } from '../../resolveTemplatedExpression';
7
+ import { ResolvableValueElement } from '../ResolvableValueElement';
8
+ /**
9
+ * Resolves to the result of an expression.
10
+ */
11
+ export class ResolvableExprElement extends ResolvableValueElement {
12
+ constructor(data) {
13
+ super(data);
14
+ }
15
+ refreshes = 0;
16
+ #timeout;
17
+ doInitialize = async (parameters) => {
18
+ this.#updateValue(parameters);
19
+ };
20
+ #updateValue = async (parameters) => {
21
+ const { expr, refreshAfter } = this._meta;
22
+ const resolvedExpression = resolveTemplateExpression(expr, parameters);
23
+ const grid = await this.resolver.eval(resolvedExpression);
24
+ if (grid.isError()) {
25
+ console.error('Empty grid result for expression: \n', resolvedExpression, grid.getError());
26
+ return;
27
+ }
28
+ const val = grid[0]?.get('val');
29
+ if (val) {
30
+ this.value = val;
31
+ }
32
+ else {
33
+ this.value = grid;
34
+ }
35
+ if (refreshAfter) {
36
+ this.#timeout = setTimeout(() => {
37
+ this.refreshes++;
38
+ this.#updateValue(parameters);
39
+ }, HNum.make(refreshAfter, second).convertTo(millisecond).value);
40
+ }
41
+ };
42
+ doClose = async () => {
43
+ if (this.#timeout) {
44
+ clearTimeout(this.#timeout);
45
+ }
46
+ };
47
+ getParameterList = () => {
48
+ const { expr } = this._meta;
49
+ const parameters = [];
50
+ if (expr) {
51
+ replaceTemplateVariables(expr, (_, match) => {
52
+ parameters.push(match);
53
+ return '';
54
+ });
55
+ }
56
+ return parameters;
57
+ };
58
+ }
59
+ //# sourceMappingURL=ResolvableExprElement.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ResolvableExprElement.js","sourceRoot":"","sources":["../../../../src/resolvableElements/elements/expr/ResolvableExprElement.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAS,IAAI,EAAE,MAAM,eAAe,CAAA;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AACpD,OAAO,EACN,wBAAwB,EACxB,yBAAyB,GACzB,MAAM,kCAAkC,CAAA;AAEzC,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAA;AAQlE;;GAEG;AACH,MAAM,OAAO,qBAEX,SAAQ,sBAAyB;IAClC,YAAY,IAAiC;QAC5C,KAAK,CAAC,IAAI,CAAC,CAAA;IACZ,CAAC;IAED,SAAS,GAAG,CAAC,CAAA;IACb,QAAQ,CAAS;IAEP,YAAY,GAAG,KAAK,EAAE,UAAiB,EAAiB,EAAE;QACnE,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAA;IAC9B,CAAC,CAAA;IAED,YAAY,GAAG,KAAK,EAAE,UAAiB,EAAiB,EAAE;QACzD,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC,KAAkC,CAAA;QAEtE,MAAM,kBAAkB,GAAG,yBAAyB,CAAC,IAAI,EAAE,UAAU,CAAC,CAAA;QAEtE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAA;QAEzD,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE;YACnB,OAAO,CAAC,KAAK,CACZ,sCAAsC,EACtC,kBAAkB,EAClB,IAAI,CAAC,QAAQ,EAAE,CACf,CAAA;YACD,OAAM;SACN;QAED,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,CAAA;QAE/B,IAAI,GAAG,EAAE;YACR,IAAI,CAAC,KAAK,GAAG,GAAyC,CAAA;SACtD;aAAM;YACN,IAAI,CAAC,KAAK,GAAG,IAA0C,CAAA;SACvD;QAED,IAAI,YAAY,EAAE;YACjB,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC,GAAG,EAAE;gBAC/B,IAAI,CAAC,SAAS,EAAE,CAAA;gBAChB,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAA;YAC9B,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,KAAK,CAAsB,CAAA;SACrF;IACF,CAAC,CAAA;IAES,OAAO,GAAG,KAAK,IAAmB,EAAE;QAC7C,IAAI,IAAI,CAAC,QAAQ,EAAE;YAClB,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;SAC3B;IACF,CAAC,CAAA;IAED,gBAAgB,GAAmB,GAAG,EAAE;QACvC,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,KAAkC,CAAA;QAExD,MAAM,UAAU,GAAa,EAAE,CAAA;QAE/B,IAAI,IAAI,EAAE;YACT,wBAAwB,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE;gBAC3C,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;gBACtB,OAAO,EAAE,CAAA;YACV,CAAC,CAAC,CAAA;SACF;QAED,OAAO,UAAU,CAAA;IAClB,CAAC,CAAA;CACD"}
@@ -0,0 +1,9 @@
1
+ import { ResolvableValueElementMeta } from '../ResolvableValueElement';
2
+ import { UiElementData, UiElementMeta } from '../UiElement';
3
+ export interface ResolvableExprElementMeta extends ResolvableValueElementMeta {
4
+ resolutionType: 'expr';
5
+ expr: string;
6
+ refreshAfter: number;
7
+ }
8
+ export declare const isResolvableExprElementData: (element: UiElementData) => element is UiElementData<ResolvableExprElementMeta>;
9
+ export declare const isResolvableExprElementMeta: (meta: UiElementMeta) => meta is ResolvableExprElementMeta;
@@ -0,0 +1,10 @@
1
+ /*
2
+ * Copyright (c) 2022, J2 Innovations. All Rights Reserved
3
+ */
4
+ export const isResolvableExprElementData = (element) => {
5
+ return !!element?._meta && isResolvableExprElementMeta(element?._meta);
6
+ };
7
+ export const isResolvableExprElementMeta = (meta) => {
8
+ return meta.resolutionType === 'expr';
9
+ };
10
+ //# sourceMappingURL=ResolvableExprElementMeta.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ResolvableExprElementMeta.js","sourceRoot":"","sources":["../../../../src/resolvableElements/elements/expr/ResolvableExprElementMeta.ts"],"names":[],"mappings":"AAAA;;GAEG;AAWH,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAC1C,OAAsB,EACgC,EAAE;IACxD,OAAO,CAAC,CAAC,OAAO,EAAE,KAAK,IAAI,2BAA2B,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;AACvE,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAC1C,IAAmB,EACiB,EAAE;IACtC,OAAQ,IAAkC,CAAC,cAAc,KAAK,MAAM,CAAA;AACrE,CAAC,CAAA"}
@@ -0,0 +1,12 @@
1
+ import { DictStore, HaysonVal, HDict, HGrid, OptionalHVal } from 'haystack-core';
2
+ import { UiElement, UiElementConstructorData, UiElementData } from '../UiElement';
3
+ /**
4
+ * Resolves to a function that can be called to achieve side effects.
5
+ */
6
+ export declare class FunctionElement<T extends UiElementData> extends UiElement<T> {
7
+ #private;
8
+ constructor(data: UiElementConstructorData<T>);
9
+ }
10
+ export declare type FunctionResult = (parameters: Parameters) => Promise<HGrid>;
11
+ export declare type Parameters = Record<string, OptionalHVal | HaysonVal | undefined> | OptionalHVal | DictStore | undefined;
12
+ export declare const makeParametersDict: (parameters: Record<string, OptionalHVal | HaysonVal | undefined> | OptionalHVal | DictStore | undefined) => HDict;
@@ -0,0 +1,32 @@
1
+ /*
2
+ * Copyright (c) 2022, J2 Innovations. All Rights Reserved
3
+ */
4
+ import { HDict } from 'haystack-core';
5
+ import { resolveTemplateExpression } from '../../resolveTemplatedExpression';
6
+ import { UiElement, } from '../UiElement';
7
+ /**
8
+ * Resolves to a function that can be called to achieve side effects.
9
+ */
10
+ export class FunctionElement extends UiElement {
11
+ constructor(data) {
12
+ super(data);
13
+ this.value = this.#buildFunction();
14
+ }
15
+ #buildFunction = () => {
16
+ const { expr } = this._meta;
17
+ return async (parameters) => {
18
+ const resolvedExpression = resolveTemplateExpression(expr, makeParametersDict(parameters));
19
+ return await this.resolver.eval(resolvedExpression);
20
+ };
21
+ };
22
+ }
23
+ export const makeParametersDict = (parameters) => {
24
+ if (!parameters) {
25
+ return HDict.make();
26
+ }
27
+ if (parameters instanceof HDict) {
28
+ return parameters;
29
+ }
30
+ return HDict.make(Object.fromEntries(Object.entries(parameters).filter(([, v]) => v != null)));
31
+ };
32
+ //# sourceMappingURL=FunctionElement.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FunctionElement.js","sourceRoot":"","sources":["../../../../src/resolvableElements/elements/function/FunctionElement.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAwB,KAAK,EAAuB,MAAM,eAAe,CAAA;AAChF,OAAO,EAAE,yBAAyB,EAAE,MAAM,kCAAkC,CAAA;AAE5E,OAAO,EAEN,SAAS,GAGT,MAAM,cAAc,CAAA;AAGrB;;GAEG;AACH,MAAM,OAAO,eAAyC,SAAQ,SAAY;IACzE,YAAY,IAAiC;QAC5C,KAAK,CAAC,IAAI,CAAC,CAAA;QACX,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,cAAc,EAAwC,CAAA;IACzE,CAAC;IAED,cAAc,GAAG,GAAmB,EAAE;QACrC,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,KAA4B,CAAA;QAElD,OAAO,KAAK,EAAE,UAAU,EAAE,EAAE;YAC3B,MAAM,kBAAkB,GAAG,yBAAyB,CACnD,IAAI,EACJ,kBAAkB,CAAC,UAAU,CAAC,CAC9B,CAAA;YAED,OAAO,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAA;QACpD,CAAC,CAAA;IACF,CAAC,CAAA;CACD;AAUD,MAAM,CAAC,MAAM,kBAAkB,GAAG,CACjC,UAIY,EACJ,EAAE;IACV,IAAI,CAAC,UAAU,EAAE;QAChB,OAAO,KAAK,CAAC,IAAI,EAAE,CAAA;KACnB;IACD,IAAI,UAAU,YAAY,KAAK,EAAE;QAChC,OAAO,UAAU,CAAA;KACjB;IAED,OAAO,KAAK,CAAC,IAAI,CAChB,MAAM,CAAC,WAAW,CACjB,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,CACvD,CACD,CAAA;AACF,CAAC,CAAA"}
@@ -0,0 +1,8 @@
1
+ import { ResolvableValueElementMeta } from '../ResolvableValueElement';
2
+ import { UiElementData, UiElementMeta } from '../UiElement';
3
+ export interface FunctionElementMeta extends ResolvableValueElementMeta {
4
+ resolutionType: 'function';
5
+ expr: string;
6
+ }
7
+ export declare const isFunctionElementData: (element: UiElementData) => element is UiElementData<FunctionElementMeta>;
8
+ export declare const isFunctionElementMeta: (meta: UiElementMeta) => meta is FunctionElementMeta;
@@ -0,0 +1,10 @@
1
+ /*
2
+ * Copyright (c) 2022, J2 Innovations. All Rights Reserved
3
+ */
4
+ export const isFunctionElementData = (element) => {
5
+ return !!element?._meta && isFunctionElementMeta(element._meta);
6
+ };
7
+ export const isFunctionElementMeta = (meta) => {
8
+ return meta.resolutionType === 'function';
9
+ };
10
+ //# sourceMappingURL=FunctionElementMeta.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FunctionElementMeta.js","sourceRoot":"","sources":["../../../../src/resolvableElements/elements/function/FunctionElementMeta.ts"],"names":[],"mappings":"AAAA;;GAEG;AASH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CACpC,OAAsB,EAC0B,EAAE;IAClD,OAAO,CAAC,CAAC,OAAO,EAAE,KAAK,IAAI,qBAAqB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;AAChE,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,qBAAqB,GAAG,CACpC,IAAmB,EACW,EAAE;IAChC,OAAQ,IAA4B,CAAC,cAAc,KAAK,UAAU,CAAA;AACnE,CAAC,CAAA"}
@@ -0,0 +1,12 @@
1
+ import { ResolvableValueElementMeta } from '../ResolvableValueElement';
2
+ import { UiElementData, UiElementMeta } from '../UiElement';
3
+ export interface ResolvableListElementMeta extends ResolvableValueElementMeta {
4
+ resolutionType: 'list';
5
+ parentBinding?: string;
6
+ entityBinding?: string;
7
+ subscribe?: boolean;
8
+ subscribePollRate?: number;
9
+ orderBy: string | string[];
10
+ }
11
+ export declare const isResolvableListElementData: (element: UiElementData) => element is UiElementData<ResolvableListElementMeta>;
12
+ export declare const isResolvableListElementMeta: (meta: UiElementMeta) => meta is ResolvableListElementMeta;
@@ -0,0 +1,10 @@
1
+ /*
2
+ * Copyright (c) 2022, J2 Innovations. All Rights Reserved
3
+ */
4
+ export const isResolvableListElementData = (element) => {
5
+ return !!element?._meta && isResolvableListElementMeta(element._meta);
6
+ };
7
+ export const isResolvableListElementMeta = (meta) => {
8
+ return meta.resolutionType === 'list';
9
+ };
10
+ //# sourceMappingURL=ListElementMeta.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ListElementMeta.js","sourceRoot":"","sources":["../../../../src/resolvableElements/elements/list/ListElementMeta.ts"],"names":[],"mappings":"AAAA;;GAEG;AAcH,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAC1C,OAAsB,EACgC,EAAE;IACxD,OAAO,CAAC,CAAC,OAAO,EAAE,KAAK,IAAI,2BAA2B,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;AACtE,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAC1C,IAAmB,EACiB,EAAE;IACtC,OAAQ,IAAkC,CAAC,cAAc,KAAK,MAAM,CAAA;AACrE,CAAC,CAAA"}
@@ -0,0 +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
+ }
@@ -0,0 +1,99 @@
1
+ /*
2
+ * Copyright (c) 2022, J2 Innovations. All Rights Reserved
3
+ */
4
+ import { HFilter } from 'haystack-core';
5
+ import { DEFAULT_POLL_RATE_SECS } from 'haystack-nclient';
6
+ import { replaceTemplateVariables, resolveTemplateExpression, } from '../../resolveTemplatedExpression';
7
+ import { ResolvableValueElement } from '../ResolvableValueElement';
8
+ import { joinFilters, } from '../UiElement';
9
+ /**
10
+ * Resolves to a list of records and keeps them updated using a watch.
11
+ */
12
+ export class ResolvableListElement extends ResolvableValueElement {
13
+ constructor(data) {
14
+ super(data);
15
+ }
16
+ filter;
17
+ watch;
18
+ doInitialize = async (parameters) => {
19
+ const { subscribe, entityBinding, parentBinding } = this
20
+ ._meta;
21
+ this.filter = resolveTemplateExpression(joinFilters(entityBinding, parentBinding), parameters);
22
+ if (!this.#isValidFilter(this.filter)) {
23
+ throw Error('Invalid filter');
24
+ }
25
+ const grid = await this.resolver.read(this.filter);
26
+ if (!this.#isValidReadGrid(grid)) {
27
+ return;
28
+ }
29
+ this.#updateValue(grid);
30
+ if (subscribe) {
31
+ await this.#setupWatch(grid);
32
+ }
33
+ };
34
+ doClose = async () => {
35
+ return this.watch?.close();
36
+ };
37
+ getParameterList = () => {
38
+ const { entityBinding, parentBinding } = this
39
+ ._meta;
40
+ const parameters = [];
41
+ if (entityBinding) {
42
+ replaceTemplateVariables(entityBinding, (_, match) => {
43
+ parameters.push(match);
44
+ return '';
45
+ });
46
+ }
47
+ if (parentBinding) {
48
+ replaceTemplateVariables(parentBinding, (_, match) => {
49
+ parameters.push(match);
50
+ return '';
51
+ });
52
+ }
53
+ return parameters;
54
+ };
55
+ #isValidFilter = (filter) => {
56
+ try {
57
+ HFilter.parse(filter);
58
+ }
59
+ catch (e) {
60
+ console.error('Invalid filter: \n', this.filter, e);
61
+ return false;
62
+ }
63
+ return true;
64
+ };
65
+ #isValidReadGrid = (grid) => {
66
+ if (grid.isError()) {
67
+ console.error('Error grid result for query: \n', this.filter, grid.getError());
68
+ }
69
+ return true;
70
+ };
71
+ #setupWatch = async (grid) => {
72
+ const { subscribePollRate, subscribe } = this
73
+ ._meta;
74
+ if (subscribe) {
75
+ this.watch = await this.resolver.makeWatch(this.#getWatchDisplayName(), grid);
76
+ const updateValue = () => this.#updateValue(this.watch?.grid);
77
+ // Update with the value received when opening the watch
78
+ updateValue();
79
+ // Configure polling options
80
+ this.watch.pollRate = subscribePollRate ?? DEFAULT_POLL_RATE_SECS;
81
+ this.watch.changed({
82
+ callback: updateValue,
83
+ });
84
+ }
85
+ };
86
+ #updateValue = (grid) => {
87
+ const { orderBy } = this._meta;
88
+ if (grid) {
89
+ if (orderBy) {
90
+ grid.sortBy(orderBy);
91
+ }
92
+ this.value = grid;
93
+ }
94
+ };
95
+ #getWatchDisplayName = () => {
96
+ return `ResolvableElement Watch for ${this.name ?? this.filter}`;
97
+ };
98
+ }
99
+ //# sourceMappingURL=ResolvableListElement.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ResolvableListElement.js","sourceRoot":"","sources":["../../../../src/resolvableElements/elements/list/ResolvableListElement.ts"],"names":[],"mappings":"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"}
@@ -0,0 +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>;
@@ -0,0 +1,37 @@
1
+ /*
2
+ * Copyright (c) 2022, J2 Innovations. All Rights Reserved
3
+ */
4
+ import { ResolvableExprElement } from './expr/ResolvableExprElement';
5
+ import { isResolvableExprElementData } from './expr/ResolvableExprElementMeta';
6
+ import { FunctionElement } from './function/FunctionElement';
7
+ import { isFunctionElementData } from './function/FunctionElementMeta';
8
+ import { isResolvableListElementData } from './list/ListElementMeta';
9
+ import { ResolvableListElement } from './list/ResolvableListElement';
10
+ import { ResolvableSectionElement } from './section/ResolvableSectionElement';
11
+ import { isSectionData } from './section/SectionElementMeta';
12
+ import { ResolvableTagElement } from './tag/ResolvableTagElement';
13
+ import { isResolvableTagElementData } from './tag/TagElementMeta';
14
+ /**
15
+ * Factory function used to build an element.
16
+ * @param data
17
+ * @returns
18
+ */
19
+ export const makeElement = (data) => {
20
+ if (isSectionData(data.element)) {
21
+ return new ResolvableSectionElement(data);
22
+ }
23
+ if (isResolvableTagElementData(data.element)) {
24
+ return new ResolvableTagElement(data);
25
+ }
26
+ if (isResolvableListElementData(data.element)) {
27
+ return new ResolvableListElement(data);
28
+ }
29
+ if (isResolvableExprElementData(data.element)) {
30
+ return new ResolvableExprElement(data);
31
+ }
32
+ if (isFunctionElementData(data.element)) {
33
+ return new FunctionElement(data);
34
+ }
35
+ throw new Error(`Element cannot be deserialized: \n${JSON.stringify(data.element)}`);
36
+ };
37
+ //# sourceMappingURL=makeElement.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"makeElement.js","sourceRoot":"","sources":["../../../src/resolvableElements/elements/makeElement.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAA;AACpE,OAAO,EAAE,2BAA2B,EAAE,MAAM,kCAAkC,CAAA;AAC9E,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AAC5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAA;AACtE,OAAO,EAAE,2BAA2B,EAAE,MAAM,wBAAwB,CAAA;AACpE,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAA;AACpE,OAAO,EAAE,wBAAwB,EAAE,MAAM,oCAAoC,CAAA;AAC7E,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAA;AAC5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAA;AACjE,OAAO,EAAE,0BAA0B,EAAE,MAAM,sBAAsB,CAAA;AAGjE;;;;GAIG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,CAC1B,IAAiC,EAClB,EAAE;IACjB,IAAI,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;QAChC,OAAO,IAAI,wBAAwB,CAAC,IAAI,CAAC,CAAA;KACzC;IACD,IAAI,0BAA0B,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;QAC7C,OAAO,IAAI,oBAAoB,CAAC,IAAI,CAAC,CAAA;KACrC;IACD,IAAI,2BAA2B,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;QAC9C,OAAO,IAAI,qBAAqB,CAAC,IAAI,CAAC,CAAA;KACtC;IACD,IAAI,2BAA2B,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;QAC9C,OAAO,IAAI,qBAAqB,CAAC,IAAI,CAAC,CAAA;KACtC;IACD,IAAI,qBAAqB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;QACxC,OAAO,IAAI,eAAe,CAAC,IAAI,CAAC,CAAA;KAChC;IAED,MAAM,IAAI,KAAK,CACd,qCAAqC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CACnE,CAAA;AACF,CAAC,CAAA"}
@@ -0,0 +1,21 @@
1
+ import { HDict } from 'haystack-core';
2
+ import { ResolvableElement } from '../ResolvableElement';
3
+ import { UiElement, UiElementConstructorData, UiElementData } from '../UiElement';
4
+ import { 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> extends ResolvableElement<T> {
9
+ #private;
10
+ constructor(data: UiElementConstructorData<T>);
11
+ children: (UiElement<UiElementData> | ChildUnresolvedSection)[];
12
+ toJSON(): Record<string, unknown>;
13
+ protected doInitialize: (parameters: HDict) => Promise<void>;
14
+ protected doClose: () => Promise<void>;
15
+ getParameterList: () => string[];
16
+ }
17
+ export declare const isChildUnresolvedSection: (value: unknown) => value is ChildUnresolvedSection;
18
+ export declare type ChildUnresolvedSection = [
19
+ string | undefined,
20
+ UiElementData<UiElementSectionMeta>
21
+ ];
@@ -0,0 +1,108 @@
1
+ /*
2
+ * Copyright (c) 2022, J2 Innovations. All Rights Reserved
3
+ */
4
+ import { makeElement } from '../makeElement';
5
+ import { ResolvableElement } from '../ResolvableElement';
6
+ import { ResolvableValueElement } from '../ResolvableValueElement';
7
+ import { isSectionData } from './SectionElementMeta';
8
+ /**
9
+ * A container of elements that can be resolve them by propagation of the lifecycle functions.
10
+ */
11
+ export class ResolvableSectionElement extends ResolvableElement {
12
+ constructor(data) {
13
+ super(data);
14
+ this.value = this.#getInitialValue(data);
15
+ this.children = this.#deserializeChildren(data);
16
+ }
17
+ #getInitialValue = (data) => {
18
+ if (!this.isAccessAllowed()) {
19
+ return {};
20
+ }
21
+ const result = {};
22
+ for (const [name, child] of Object.entries(data.element)) {
23
+ if (!name.startsWith('_') && isSectionData(child)) {
24
+ result[name] = child;
25
+ }
26
+ }
27
+ return result;
28
+ };
29
+ #deserializeChildren = (data) => {
30
+ return Object.entries(data.element)
31
+ .filter(([name]) => !name.startsWith('_'))
32
+ .map(([name, element]) => {
33
+ return this.#deserializeChild({
34
+ ...data,
35
+ element,
36
+ name,
37
+ onUpdate: (childVal) => {
38
+ ;
39
+ this.value[name] = childVal;
40
+ this.onUpdate(this.value);
41
+ },
42
+ });
43
+ })
44
+ .filter((element) => !!element);
45
+ };
46
+ #deserializeChild = (data, deepDeserialize = false) => {
47
+ if (!deepDeserialize && isSectionData(data.element)) {
48
+ return [data.name, data.element];
49
+ }
50
+ else {
51
+ try {
52
+ return makeElement(data);
53
+ }
54
+ catch (e) {
55
+ return [data.name, data.element];
56
+ }
57
+ }
58
+ };
59
+ children = [];
60
+ toJSON() {
61
+ const props = { _meta: this._meta };
62
+ this.children?.forEach((child) => {
63
+ let name, val;
64
+ if (isChildUnresolvedSection(child)) {
65
+ name = child[0];
66
+ val = child[1];
67
+ }
68
+ else {
69
+ name = child.name;
70
+ val = child.toJSON();
71
+ }
72
+ if (name) {
73
+ props[name] = val;
74
+ }
75
+ });
76
+ return props;
77
+ }
78
+ doInitialize = async (parameters) => {
79
+ const promises = [];
80
+ for (const child of this.children) {
81
+ if (child instanceof ResolvableElement) {
82
+ promises.push(child.initialize(parameters));
83
+ }
84
+ }
85
+ await Promise.all(promises);
86
+ };
87
+ doClose = async () => {
88
+ const promises = [];
89
+ for (const child of this.children) {
90
+ if (child instanceof ResolvableElement) {
91
+ promises.push(child.close());
92
+ }
93
+ }
94
+ await Promise.all(promises);
95
+ };
96
+ getParameterList = () => {
97
+ const parameters = [];
98
+ this.children.forEach((element) => {
99
+ if (!isChildUnresolvedSection(element) &&
100
+ element instanceof ResolvableValueElement) {
101
+ parameters.push(...element.getParameterList());
102
+ }
103
+ });
104
+ return [...new Set(parameters)]; // Retrieve unique values
105
+ };
106
+ }
107
+ export const isChildUnresolvedSection = (value) => value instanceof Array && value.length === 2 && isSectionData(value[1]);
108
+ //# sourceMappingURL=ResolvableSectionElement.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ResolvableSectionElement.js","sourceRoot":"","sources":["../../../../src/resolvableElements/elements/section/ResolvableSectionElement.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import { UiElementData, UiElementMeta } from '../UiElement';
2
+ export interface UiElementSectionMeta extends UiElementMeta {
3
+ resolutionType?: never;
4
+ }
5
+ export declare type ResolvedSectionResult<T extends UiElementData<UiElementSectionMeta>> = T extends {
6
+ _resolved?: Record<string, unknown>;
7
+ } ? Required<T>['_resolved'] : Record<string, unknown>;
8
+ export declare const isSectionData: (element: UiElementData) => element is UiElementData<UiElementSectionMeta>;
9
+ export declare const isSectionMeta: (meta: UiElementMeta | undefined) => meta is UiElementSectionMeta;
@@ -0,0 +1,7 @@
1
+ /*
2
+ * Copyright (c) 2022, J2 Innovations. All Rights Reserved
3
+ */
4
+ import { isResolvableValueElementMeta } from '../ResolvableValueElement';
5
+ export const isSectionData = (element) => isSectionMeta(element._meta);
6
+ export const isSectionMeta = (meta) => meta == null || !isResolvableValueElementMeta(meta);
7
+ //# sourceMappingURL=SectionElementMeta.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SectionElementMeta.js","sourceRoot":"","sources":["../../../../src/resolvableElements/elements/section/SectionElementMeta.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,4BAA4B,EAAE,MAAM,2BAA2B,CAAA;AAexE,MAAM,CAAC,MAAM,aAAa,GAAG,CAC5B,OAAsB,EAC2B,EAAE,CACnD,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;AAE7B,MAAM,CAAC,MAAM,aAAa,GAAG,CAC5B,IAA+B,EACA,EAAE,CACjC,IAAI,IAAI,IAAI,IAAI,CAAC,4BAA4B,CAAC,IAAI,CAAC,CAAA"}
@@ -0,0 +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 the value of a tag on a record and keeps it updated using a watch.
7
+ */
8
+ export declare class ResolvableTagElement<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
+ }