@j2inn/resolvable-ui-elements 0.0.1-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.
Files changed (134) hide show
  1. package/README.md +2 -0
  2. package/dist/index.d.ts +5 -0
  3. package/dist/index.js +31 -0
  4. package/dist/index.js.map +1 -0
  5. package/dist/resolvableElements/Resolver.d.ts +20 -0
  6. package/dist/resolvableElements/Resolver.jsx +28 -0
  7. package/dist/resolvableElements/Resolver.jsx.map +1 -0
  8. package/dist/resolvableElements/elements/ResolvableElement.d.ts +11 -0
  9. package/dist/resolvableElements/elements/ResolvableElement.js +24 -0
  10. package/dist/resolvableElements/elements/ResolvableElement.js.map +1 -0
  11. package/dist/resolvableElements/elements/ResolvableValueElement.d.ts +11 -0
  12. package/dist/resolvableElements/elements/ResolvableValueElement.js +20 -0
  13. package/dist/resolvableElements/elements/ResolvableValueElement.js.map +1 -0
  14. package/dist/resolvableElements/elements/UiElement.d.ts +37 -0
  15. package/dist/resolvableElements/elements/UiElement.js +48 -0
  16. package/dist/resolvableElements/elements/UiElement.js.map +1 -0
  17. package/dist/resolvableElements/elements/expr/ResolvableExprElement.d.ts +11 -0
  18. package/dist/resolvableElements/elements/expr/ResolvableExprElement.js +57 -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 +12 -0
  22. package/dist/resolvableElements/elements/expr/ResolvableExprElementMeta.js.map +1 -0
  23. package/dist/resolvableElements/elements/function/FunctionElement.d.ts +9 -0
  24. package/dist/resolvableElements/elements/function/FunctionElement.js +31 -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 +12 -0
  28. package/dist/resolvableElements/elements/function/FunctionElementMeta.js.map +1 -0
  29. package/dist/resolvableElements/elements/list/ListElementMeta.d.ts +11 -0
  30. package/dist/resolvableElements/elements/list/ListElementMeta.js +12 -0
  31. package/dist/resolvableElements/elements/list/ListElementMeta.js.map +1 -0
  32. package/dist/resolvableElements/elements/list/ResolvableListElement.d.ts +13 -0
  33. package/dist/resolvableElements/elements/list/ResolvableListElement.js +93 -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 +39 -0
  37. package/dist/resolvableElements/elements/makeElement.js.map +1 -0
  38. package/dist/resolvableElements/elements/section/ResolvableSectionElement.d.ts +18 -0
  39. package/dist/resolvableElements/elements/section/ResolvableSectionElement.js +100 -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 +9 -0
  43. package/dist/resolvableElements/elements/section/SectionElementMeta.js.map +1 -0
  44. package/dist/resolvableElements/elements/tag/ResolvableTagElement.d.ts +13 -0
  45. package/dist/resolvableElements/elements/tag/ResolvableTagElement.js +101 -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 +12 -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 +131 -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 +39 -0
  55. package/dist/resolvableElements/interfacesGeneration/generateTypescriptInterfacesFile.js.map +1 -0
  56. package/dist/resolvableElements/react/useResolveSection.d.ts +18 -0
  57. package/dist/resolvableElements/react/useResolveSection.js +59 -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 +54 -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 +33 -0
  64. package/dist/resolvableElements/resolveTemplatedExpression.js.map +1 -0
  65. package/dist/useCurrentUser.d.ts +4 -0
  66. package/dist/useCurrentUser.jsx +42 -0
  67. package/dist/useCurrentUser.jsx.map +1 -0
  68. package/dist_es/index.d.ts +5 -0
  69. package/dist_es/index.js +15 -0
  70. package/dist_es/index.js.map +1 -0
  71. package/dist_es/resolvableElements/Resolver.d.ts +20 -0
  72. package/dist_es/resolvableElements/Resolver.jsx +24 -0
  73. package/dist_es/resolvableElements/Resolver.jsx.map +1 -0
  74. package/dist_es/resolvableElements/elements/ResolvableElement.d.ts +11 -0
  75. package/dist_es/resolvableElements/elements/ResolvableElement.js +20 -0
  76. package/dist_es/resolvableElements/elements/ResolvableElement.js.map +1 -0
  77. package/dist_es/resolvableElements/elements/ResolvableValueElement.d.ts +11 -0
  78. package/dist_es/resolvableElements/elements/ResolvableValueElement.js +14 -0
  79. package/dist_es/resolvableElements/elements/ResolvableValueElement.js.map +1 -0
  80. package/dist_es/resolvableElements/elements/UiElement.d.ts +37 -0
  81. package/dist_es/resolvableElements/elements/UiElement.js +43 -0
  82. package/dist_es/resolvableElements/elements/UiElement.js.map +1 -0
  83. package/dist_es/resolvableElements/elements/expr/ResolvableExprElement.d.ts +11 -0
  84. package/dist_es/resolvableElements/elements/expr/ResolvableExprElement.js +53 -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 +7 -0
  88. package/dist_es/resolvableElements/elements/expr/ResolvableExprElementMeta.js.map +1 -0
  89. package/dist_es/resolvableElements/elements/function/FunctionElement.d.ts +9 -0
  90. package/dist_es/resolvableElements/elements/function/FunctionElement.js +26 -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 +7 -0
  94. package/dist_es/resolvableElements/elements/function/FunctionElementMeta.js.map +1 -0
  95. package/dist_es/resolvableElements/elements/list/ListElementMeta.d.ts +11 -0
  96. package/dist_es/resolvableElements/elements/list/ListElementMeta.js +7 -0
  97. package/dist_es/resolvableElements/elements/list/ListElementMeta.js.map +1 -0
  98. package/dist_es/resolvableElements/elements/list/ResolvableListElement.d.ts +13 -0
  99. package/dist_es/resolvableElements/elements/list/ResolvableListElement.js +89 -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 +35 -0
  103. package/dist_es/resolvableElements/elements/makeElement.js.map +1 -0
  104. package/dist_es/resolvableElements/elements/section/ResolvableSectionElement.d.ts +18 -0
  105. package/dist_es/resolvableElements/elements/section/ResolvableSectionElement.js +95 -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 +4 -0
  109. package/dist_es/resolvableElements/elements/section/SectionElementMeta.js.map +1 -0
  110. package/dist_es/resolvableElements/elements/tag/ResolvableTagElement.d.ts +13 -0
  111. package/dist_es/resolvableElements/elements/tag/ResolvableTagElement.js +97 -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 +7 -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 +127 -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 +13 -0
  121. package/dist_es/resolvableElements/interfacesGeneration/generateTypescriptInterfacesFile.js.map +1 -0
  122. package/dist_es/resolvableElements/react/useResolveSection.d.ts +18 -0
  123. package/dist_es/resolvableElements/react/useResolveSection.js +55 -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 +26 -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 +28 -0
  130. package/dist_es/resolvableElements/resolveTemplatedExpression.js.map +1 -0
  131. package/dist_es/useCurrentUser.d.ts +4 -0
  132. package/dist_es/useCurrentUser.jsx +14 -0
  133. package/dist_es/useCurrentUser.jsx.map +1 -0
  134. package/package.json +52 -0
package/README.md ADDED
@@ -0,0 +1,2 @@
1
+ ### How do I get set up? ###
2
+ To install this package run `npm i @j2inn/resolvable-ui-elements`
@@ -0,0 +1,5 @@
1
+ export * from './resolvableElements/elements/section/ResolvableSectionElement';
2
+ export * from './resolvableElements/elements/section/SectionElementMeta';
3
+ export * from './resolvableElements/react/useResolverContext';
4
+ export * from './resolvableElements/react/useResolveSection';
5
+ export * from './useCurrentUser';
package/dist/index.js ADDED
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ //////////////////////////////////////////////////////////////////////////
18
+ // Elements
19
+ //////////////////////////////////////////////////////////////////////////
20
+ __exportStar(require("./resolvableElements/elements/section/ResolvableSectionElement"), exports);
21
+ __exportStar(require("./resolvableElements/elements/section/SectionElementMeta"), exports);
22
+ //////////////////////////////////////////////////////////////////////////
23
+ // React
24
+ //////////////////////////////////////////////////////////////////////////
25
+ __exportStar(require("./resolvableElements/react/useResolverContext"), exports);
26
+ __exportStar(require("./resolvableElements/react/useResolveSection"), exports);
27
+ //////////////////////////////////////////////////////////////////////////
28
+ // Other
29
+ //////////////////////////////////////////////////////////////////////////
30
+ __exportStar(require("./useCurrentUser"), exports);
31
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,0EAA0E;AAC1E,WAAW;AACX,0EAA0E;AAC1E,iGAA8E;AAC9E,2FAAwE;AACxE,0EAA0E;AAC1E,QAAQ;AACR,0EAA0E;AAC1E,gFAA6D;AAC7D,+EAA4D;AAC5D,0EAA0E;AAC1E,QAAQ;AACR,0EAA0E;AAC1E,mDAAgC"}
@@ -0,0 +1,20 @@
1
+ import { HDict, HGrid } from 'haystack-core';
2
+ import { Client, Watch } from 'haystack-nclient';
3
+ export interface ResolverData {
4
+ client: Client;
5
+ user?: HDict;
6
+ }
7
+ /**
8
+ * Resolver is a mediator for the network interactions during the resolution process,
9
+ * in order to add an optimization layer.
10
+ *
11
+ * TODO: implement caching system
12
+ */
13
+ export declare class Resolver {
14
+ constructor({ client, user }: ResolverData);
15
+ client: Client;
16
+ user?: HDict;
17
+ read(filter: string): Promise<HGrid<HDict>>;
18
+ makeWatch(dis: string, grid: HGrid<HDict>): Promise<Watch>;
19
+ eval(expr: string): Promise<HGrid<HDict>>;
20
+ }
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Resolver = void 0;
4
+ /**
5
+ * Resolver is a mediator for the network interactions during the resolution process,
6
+ * in order to add an optimization layer.
7
+ *
8
+ * TODO: implement caching system
9
+ */
10
+ class Resolver {
11
+ constructor({ client, user }) {
12
+ this.client = client;
13
+ this.user = user;
14
+ }
15
+ client;
16
+ user;
17
+ async read(filter) {
18
+ return this.client.ext.read(filter);
19
+ }
20
+ async makeWatch(dis, grid) {
21
+ return this.client.ops.watch.make(dis, grid);
22
+ }
23
+ async eval(expr) {
24
+ return this.client.ext.eval(expr);
25
+ }
26
+ }
27
+ exports.Resolver = Resolver;
28
+ //# sourceMappingURL=Resolver.jsx.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Resolver.jsx","sourceRoot":"","sources":["../../src/resolvableElements/Resolver.tsx"],"names":[],"mappings":";;;AAQA;;;;;GAKG;AACH,MAAa,QAAQ;IACpB,YAAY,EAAE,MAAM,EAAE,IAAI,EAAgB;QACzC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QACpB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;IACjB,CAAC;IAED,MAAM,CAAQ;IACd,IAAI,CAAQ;IAEZ,KAAK,CAAC,IAAI,CAAC,MAAc;QACxB,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IACpC,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,GAAW,EAAE,IAAkB;QAC9C,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;IAC7C,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,IAAY;QACtB,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAClC,CAAC;CACD;AApBD,4BAoBC"}
@@ -0,0 +1,11 @@
1
+ import { HDict } from 'haystack-core';
2
+ import { UiElement, UiElementConstructorData, UiElementData } from './UiElement';
3
+ export declare abstract class ResolvableElement<T extends UiElementData> extends UiElement<T> {
4
+ #private;
5
+ constructor(data: UiElementConstructorData<T>);
6
+ initialize: (parameters: HDict) => Promise<void>;
7
+ protected abstract doInitialize: (parameters: HDict) => Promise<void>;
8
+ close: () => Promise<void>;
9
+ protected abstract doClose: () => Promise<void>;
10
+ abstract getParameterList: () => string[];
11
+ }
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ResolvableElement = void 0;
4
+ const UiElement_1 = require("./UiElement");
5
+ class ResolvableElement extends UiElement_1.UiElement {
6
+ constructor(data) {
7
+ super(data);
8
+ }
9
+ #initialized = false;
10
+ initialize = async (parameters) => {
11
+ if (this.isAccessAllowed() && !this.#initialized) {
12
+ this.#initialized = true;
13
+ return await this.doInitialize(parameters);
14
+ }
15
+ };
16
+ close = async () => {
17
+ if (this.#initialized) {
18
+ await this.doClose();
19
+ this.#initialized = false;
20
+ }
21
+ };
22
+ }
23
+ exports.ResolvableElement = ResolvableElement;
24
+ //# sourceMappingURL=ResolvableElement.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ResolvableElement.js","sourceRoot":"","sources":["../../../src/resolvableElements/elements/ResolvableElement.ts"],"names":[],"mappings":";;;AACA,2CAAgF;AAEhF,MAAsB,iBAEpB,SAAQ,qBAAY;IACrB,YAAY,IAAiC;QAC5C,KAAK,CAAC,IAAI,CAAC,CAAA;IACZ,CAAC;IAED,YAAY,GAAG,KAAK,CAAA;IACpB,UAAU,GAAyC,KAAK,EAAE,UAAU,EAAE,EAAE;QACvE,IAAI,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;YACjD,IAAI,CAAC,YAAY,GAAG,IAAI,CAAA;YACxB,OAAO,MAAM,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAA;SAC1C;IACF,CAAC,CAAA;IAGD,KAAK,GAAwB,KAAK,IAAI,EAAE;QACvC,IAAI,IAAI,CAAC,YAAY,EAAE;YACtB,MAAM,IAAI,CAAC,OAAO,EAAE,CAAA;YACpB,IAAI,CAAC,YAAY,GAAG,KAAK,CAAA;SACzB;IACF,CAAC,CAAA;CAID;AAzBD,8CAyBC"}
@@ -0,0 +1,11 @@
1
+ import { ResolvableElement } from './ResolvableElement';
2
+ import { UiElementConstructorData, UiElementData, UiElementMeta } from './UiElement';
3
+ export interface ResolvableValueElementMeta extends UiElementMeta {
4
+ resolutionType: string;
5
+ resolvedType: string;
6
+ }
7
+ export declare const isResolvableValueElement: (element: UiElementData) => element is UiElementData<ResolvableValueElementMeta>;
8
+ export declare const isResolvableValueElementMeta: (meta: UiElementMeta) => meta is ResolvableValueElementMeta;
9
+ export declare abstract class ResolvableValueElement<T extends UiElementData = UiElementData> extends ResolvableElement<T> {
10
+ constructor(data: UiElementConstructorData<T>);
11
+ }
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ResolvableValueElement = exports.isResolvableValueElementMeta = exports.isResolvableValueElement = void 0;
4
+ const ResolvableElement_1 = require("./ResolvableElement");
5
+ const isResolvableValueElement = (element) => {
6
+ return !!element?._meta && (0, exports.isResolvableValueElementMeta)(element._meta);
7
+ };
8
+ exports.isResolvableValueElement = isResolvableValueElement;
9
+ const isResolvableValueElementMeta = (meta) => {
10
+ return (!!meta.resolutionType &&
11
+ !!meta.resolvedType);
12
+ };
13
+ exports.isResolvableValueElementMeta = isResolvableValueElementMeta;
14
+ class ResolvableValueElement extends ResolvableElement_1.ResolvableElement {
15
+ constructor(data) {
16
+ super(data);
17
+ }
18
+ }
19
+ exports.ResolvableValueElement = ResolvableValueElement;
20
+ //# sourceMappingURL=ResolvableValueElement.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ResolvableValueElement.js","sourceRoot":"","sources":["../../../src/resolvableElements/elements/ResolvableValueElement.ts"],"names":[],"mappings":";;;AAAA,2DAAuD;AAYhD,MAAM,wBAAwB,GAAG,CACvC,OAAsB,EACiC,EAAE;IACzD,OAAO,CAAC,CAAC,OAAO,EAAE,KAAK,IAAI,IAAA,oCAA4B,EAAC,OAAO,CAAC,KAAK,CAAC,CAAA;AACvE,CAAC,CAAA;AAJY,QAAA,wBAAwB,4BAIpC;AAEM,MAAM,4BAA4B,GAAG,CAC3C,IAAmB,EACkB,EAAE;IACvC,OAAO,CACN,CAAC,CAA8B,IAAK,CAAC,cAAc;QACnD,CAAC,CAA8B,IAAK,CAAC,YAAY,CACjD,CAAA;AACF,CAAC,CAAA;AAPY,QAAA,4BAA4B,gCAOxC;AAED,MAAsB,sBAEpB,SAAQ,qCAAoB;IAC7B,YAAY,IAAiC;QAC5C,KAAK,CAAC,IAAI,CAAC,CAAA;IACZ,CAAC;CACD;AAND,wDAMC"}
@@ -0,0 +1,37 @@
1
+ import { HVal } from 'haystack-core';
2
+ import { Resolver } from '../Resolver';
3
+ export interface UiElementData<Meta extends UiElementMeta = UiElementMeta> {
4
+ _meta?: Meta;
5
+ }
6
+ export interface UiElementMeta {
7
+ access?: string[];
8
+ }
9
+ export declare type ResolvedElementValue<T extends UiElementData> = T extends {
10
+ _resolved?: unknown;
11
+ } ? Required<T>['_resolved'] : unknown;
12
+ export declare type ParametersOfSection<T extends UiElementData> = T extends {
13
+ _parameters?: Record<string, HVal>;
14
+ } ? PartialExplicitUndefined<T['_parameters']> : undefined;
15
+ export declare type PartialExplicitUndefined<T> = {
16
+ [P in keyof T]: T[P] | null | undefined;
17
+ };
18
+ export interface UiElementConstructorData<T extends UiElementData> {
19
+ resolver: Resolver;
20
+ onUpdate: (value: ResolvedElementValue<T> | undefined) => void;
21
+ element: T;
22
+ name?: string;
23
+ }
24
+ export declare class UiElement<T extends UiElementData = UiElementData> {
25
+ #private;
26
+ constructor({ name, element, resolver, onUpdate, }: UiElementConstructorData<T>);
27
+ resolver: Resolver;
28
+ _meta?: UiElementMeta;
29
+ name?: string;
30
+ toJSON(): Record<string, unknown>;
31
+ inspect(): void;
32
+ isAccessAllowed(): boolean;
33
+ get value(): ResolvedElementValue<T> | undefined;
34
+ set value(value: ResolvedElementValue<T> | undefined);
35
+ onUpdate: (value: ResolvedElementValue<T> | undefined) => void;
36
+ }
37
+ export declare function joinFilters(...filter: (string | undefined)[]): string;
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.joinFilters = exports.UiElement = void 0;
4
+ const USER_ROLE_TAG_NAME = 'uiElementPermissions';
5
+ class UiElement {
6
+ constructor({ name, element, resolver, onUpdate, }) {
7
+ this._meta = element._meta;
8
+ this.name = name;
9
+ this.resolver = resolver;
10
+ this.onUpdate = onUpdate;
11
+ }
12
+ resolver;
13
+ _meta;
14
+ name;
15
+ toJSON() {
16
+ return { _meta: this._meta };
17
+ }
18
+ inspect() {
19
+ console.log(this);
20
+ }
21
+ isAccessAllowed() {
22
+ if (!this._meta?.access || isSuperuser(this.resolver.user)) {
23
+ return true;
24
+ }
25
+ const userRole = this.resolver.user?.get(USER_ROLE_TAG_NAME);
26
+ if (userRole) {
27
+ return this._meta.access.includes(userRole.value);
28
+ }
29
+ // If userRole is not defined return false.
30
+ return false;
31
+ }
32
+ #value;
33
+ get value() {
34
+ return this.#value;
35
+ }
36
+ set value(value) {
37
+ this.#value = value;
38
+ this.onUpdate(value);
39
+ }
40
+ onUpdate;
41
+ }
42
+ exports.UiElement = UiElement;
43
+ function joinFilters(...filter) {
44
+ return filter.filter((filter) => filter).join(' and ');
45
+ }
46
+ exports.joinFilters = joinFilters;
47
+ const isSuperuser = (user) => user?.get('userRole')?.value === 'su';
48
+ //# sourceMappingURL=UiElement.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UiElement.js","sourceRoot":"","sources":["../../../src/resolvableElements/elements/UiElement.ts"],"names":[],"mappings":";;;AAGA,MAAM,kBAAkB,GAAG,sBAAsB,CAAA;AAiCjD,MAAa,SAAS;IACrB,YAAY,EACX,IAAI,EACJ,OAAO,EACP,QAAQ,EACR,QAAQ,GACqB;QAC7B,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAA;QAC1B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;QAChB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAA;QACxB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAA;IACzB,CAAC;IACD,QAAQ,CAAU;IAElB,KAAK,CAAgB;IAErB,IAAI,CAAS;IAEb,MAAM;QACL,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAA;IAC7B,CAAC;IACD,OAAO;QACN,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;IAClB,CAAC;IAED,eAAe;QACd,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,IAAI,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;YAC3D,OAAO,IAAI,CAAA;SACX;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAO,kBAAkB,CAAC,CAAA;QAClE,IAAI,QAAQ,EAAE;YACb,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;SACjD;QAED,2CAA2C;QAC3C,OAAO,KAAK,CAAA;IACb,CAAC;IAED,MAAM,CAA0B;IAEhC,IAAI,KAAK;QACR,OAAO,IAAI,CAAC,MAAM,CAAA;IACnB,CAAC;IAED,IAAI,KAAK,CAAC,KAA0C;QACnD,IAAI,CAAC,MAAM,GAAG,KAAK,CAAA;QACnB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;IACrB,CAAC;IACD,QAAQ,CAAsD;CAC9D;AAlDD,8BAkDC;AACD,SAAgB,WAAW,CAAC,GAAG,MAA8B;IAC5D,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;AACvD,CAAC;AAFD,kCAEC;AAED,MAAM,WAAW,GAAG,CAAC,IAAY,EAAE,EAAE,CACpC,IAAI,EAAE,GAAG,CAAO,UAAU,CAAC,EAAE,KAAK,KAAK,IAAI,CAAA"}
@@ -0,0 +1,11 @@
1
+ import { HDict } from 'haystack-core';
2
+ import { ResolvableValueElement } from '../ResolvableValueElement';
3
+ import { UiElementConstructorData, UiElementData } from '../UiElement';
4
+ export declare class ResolvableExprElement<T extends UiElementData> extends ResolvableValueElement<T> {
5
+ #private;
6
+ constructor(data: UiElementConstructorData<T>);
7
+ refreshes: number;
8
+ protected doInitialize: (parameters: HDict) => Promise<void>;
9
+ protected doClose: () => Promise<void>;
10
+ getParameterList: () => string[];
11
+ }
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ResolvableExprElement = void 0;
4
+ const haystack_core_1 = require("haystack-core");
5
+ const haystack_units_1 = require("haystack-units");
6
+ const resolveTemplatedExpression_1 = require("../../resolveTemplatedExpression");
7
+ const ResolvableValueElement_1 = require("../ResolvableValueElement");
8
+ class ResolvableExprElement extends ResolvableValueElement_1.ResolvableValueElement {
9
+ constructor(data) {
10
+ super(data);
11
+ }
12
+ refreshes = 0;
13
+ #timeout;
14
+ doInitialize = async (parameters) => {
15
+ this.#updateValue(parameters);
16
+ };
17
+ #updateValue = async (parameters) => {
18
+ const { expr, refreshAfter } = this._meta;
19
+ const resolvedExpression = (0, resolveTemplatedExpression_1.resolveTemplateExpression)(expr, parameters);
20
+ const grid = await this.resolver.eval(resolvedExpression);
21
+ if (grid.isError()) {
22
+ console.error('Empty grid result for expression: \n', resolvedExpression, grid.getError());
23
+ return;
24
+ }
25
+ const val = grid[0]?.get('val');
26
+ if (val) {
27
+ this.value = val;
28
+ }
29
+ else {
30
+ this.value = grid;
31
+ }
32
+ if (refreshAfter) {
33
+ this.#timeout = setTimeout(() => {
34
+ this.refreshes++;
35
+ this.#updateValue(parameters);
36
+ }, haystack_core_1.HNum.make(refreshAfter, haystack_units_1.second).convertTo(haystack_units_1.millisecond).value);
37
+ }
38
+ };
39
+ doClose = async () => {
40
+ if (this.#timeout) {
41
+ clearTimeout(this.#timeout);
42
+ }
43
+ };
44
+ getParameterList = () => {
45
+ const { expr } = this._meta;
46
+ const parameters = [];
47
+ if (expr) {
48
+ (0, resolveTemplatedExpression_1.replaceTemplateVariables)(expr, (_, match) => {
49
+ parameters.push(match);
50
+ return '';
51
+ });
52
+ }
53
+ return parameters;
54
+ };
55
+ }
56
+ exports.ResolvableExprElement = ResolvableExprElement;
57
+ //# sourceMappingURL=ResolvableExprElement.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ResolvableExprElement.js","sourceRoot":"","sources":["../../../../src/resolvableElements/elements/expr/ResolvableExprElement.ts"],"names":[],"mappings":";;;AAAA,iDAA2C;AAC3C,mDAAoD;AACpD,iFAGyC;AAEzC,sEAAkE;AAQlE,MAAa,qBAEX,SAAQ,+CAAyB;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,IAAA,sDAAyB,EAAC,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,oBAAI,CAAC,IAAI,CAAC,YAAY,EAAE,uBAAM,CAAC,CAAC,SAAS,CAAC,4BAAW,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,IAAA,qDAAwB,EAAC,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;AAlED,sDAkEC"}
@@ -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,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isResolvableExprElementMeta = exports.isResolvableExprElementData = void 0;
4
+ const isResolvableExprElementData = (element) => {
5
+ return !!element?._meta && (0, exports.isResolvableExprElementMeta)(element?._meta);
6
+ };
7
+ exports.isResolvableExprElementData = isResolvableExprElementData;
8
+ const isResolvableExprElementMeta = (meta) => {
9
+ return meta.resolutionType === 'expr';
10
+ };
11
+ exports.isResolvableExprElementMeta = isResolvableExprElementMeta;
12
+ //# sourceMappingURL=ResolvableExprElementMeta.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ResolvableExprElementMeta.js","sourceRoot":"","sources":["../../../../src/resolvableElements/elements/expr/ResolvableExprElementMeta.ts"],"names":[],"mappings":";;;AASO,MAAM,2BAA2B,GAAG,CAC1C,OAAsB,EACgC,EAAE;IACxD,OAAO,CAAC,CAAC,OAAO,EAAE,KAAK,IAAI,IAAA,mCAA2B,EAAC,OAAO,EAAE,KAAK,CAAC,CAAA;AACvE,CAAC,CAAA;AAJY,QAAA,2BAA2B,+BAIvC;AAEM,MAAM,2BAA2B,GAAG,CAC1C,IAAmB,EACiB,EAAE;IACtC,OAAQ,IAAkC,CAAC,cAAc,KAAK,MAAM,CAAA;AACrE,CAAC,CAAA;AAJY,QAAA,2BAA2B,+BAIvC"}
@@ -0,0 +1,9 @@
1
+ import { DictStore, HaysonVal, HDict, HGrid, OptionalHVal } from 'haystack-core';
2
+ import { UiElement, UiElementConstructorData, UiElementData } from '../UiElement';
3
+ export declare class FunctionElement<T extends UiElementData> extends UiElement<T> {
4
+ #private;
5
+ constructor(data: UiElementConstructorData<T>);
6
+ }
7
+ export declare type FunctionResult = (parameters: Parameters) => Promise<HGrid>;
8
+ export declare type Parameters = Record<string, OptionalHVal | HaysonVal | undefined> | OptionalHVal | DictStore | undefined;
9
+ export declare const makeParametersDict: (parameters: Record<string, OptionalHVal | HaysonVal | undefined> | OptionalHVal | DictStore | undefined) => HDict;
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.makeParametersDict = exports.FunctionElement = void 0;
4
+ const haystack_core_1 = require("haystack-core");
5
+ const resolveTemplatedExpression_1 = require("../../resolveTemplatedExpression");
6
+ const UiElement_1 = require("../UiElement");
7
+ class FunctionElement extends UiElement_1.UiElement {
8
+ constructor(data) {
9
+ super(data);
10
+ this.value = this.#buildFunction();
11
+ }
12
+ #buildFunction = () => {
13
+ const { expr } = this._meta;
14
+ return async (parameters) => {
15
+ const resolvedExpression = (0, resolveTemplatedExpression_1.resolveTemplateExpression)(expr, (0, exports.makeParametersDict)(parameters));
16
+ return await this.resolver.eval(resolvedExpression);
17
+ };
18
+ };
19
+ }
20
+ exports.FunctionElement = FunctionElement;
21
+ const makeParametersDict = (parameters) => {
22
+ if (!parameters) {
23
+ return haystack_core_1.HDict.make();
24
+ }
25
+ if (parameters instanceof haystack_core_1.HDict) {
26
+ return parameters;
27
+ }
28
+ return haystack_core_1.HDict.make(Object.fromEntries(Object.entries(parameters).filter(([, v]) => v != null)));
29
+ };
30
+ exports.makeParametersDict = makeParametersDict;
31
+ //# sourceMappingURL=FunctionElement.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FunctionElement.js","sourceRoot":"","sources":["../../../../src/resolvableElements/elements/function/FunctionElement.ts"],"names":[],"mappings":";;;AAAA,iDAAgF;AAChF,iFAA4E;AAE5E,4CAKqB;AAGrB,MAAa,eAAyC,SAAQ,qBAAY;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,IAAA,sDAAyB,EACnD,IAAI,EACJ,IAAA,0BAAkB,EAAC,UAAU,CAAC,CAC9B,CAAA;YAED,OAAO,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAA;QACpD,CAAC,CAAA;IACF,CAAC,CAAA;CACD;AAlBD,0CAkBC;AAUM,MAAM,kBAAkB,GAAG,CACjC,UAIY,EACJ,EAAE;IACV,IAAI,CAAC,UAAU,EAAE;QAChB,OAAO,qBAAK,CAAC,IAAI,EAAE,CAAA;KACnB;IACD,IAAI,UAAU,YAAY,qBAAK,EAAE;QAChC,OAAO,UAAU,CAAA;KACjB;IAED,OAAO,qBAAK,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;AAnBY,QAAA,kBAAkB,sBAmB9B"}
@@ -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,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isFunctionElementMeta = exports.isFunctionElementData = void 0;
4
+ const isFunctionElementData = (element) => {
5
+ return !!element?._meta && (0, exports.isFunctionElementMeta)(element._meta);
6
+ };
7
+ exports.isFunctionElementData = isFunctionElementData;
8
+ const isFunctionElementMeta = (meta) => {
9
+ return meta.resolutionType === 'function';
10
+ };
11
+ exports.isFunctionElementMeta = isFunctionElementMeta;
12
+ //# sourceMappingURL=FunctionElementMeta.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FunctionElementMeta.js","sourceRoot":"","sources":["../../../../src/resolvableElements/elements/function/FunctionElementMeta.ts"],"names":[],"mappings":";;;AAOO,MAAM,qBAAqB,GAAG,CACpC,OAAsB,EAC0B,EAAE;IAClD,OAAO,CAAC,CAAC,OAAO,EAAE,KAAK,IAAI,IAAA,6BAAqB,EAAC,OAAO,CAAC,KAAK,CAAC,CAAA;AAChE,CAAC,CAAA;AAJY,QAAA,qBAAqB,yBAIjC;AAEM,MAAM,qBAAqB,GAAG,CACpC,IAAmB,EACW,EAAE;IAChC,OAAQ,IAA4B,CAAC,cAAc,KAAK,UAAU,CAAA;AACnE,CAAC,CAAA;AAJY,QAAA,qBAAqB,yBAIjC"}
@@ -0,0 +1,11 @@
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
+ }
10
+ export declare const isResolvableListElementData: (element: UiElementData) => element is UiElementData<ResolvableListElementMeta>;
11
+ export declare const isResolvableListElementMeta: (meta: UiElementMeta) => meta is ResolvableListElementMeta;
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isResolvableListElementMeta = exports.isResolvableListElementData = void 0;
4
+ const isResolvableListElementData = (element) => {
5
+ return !!element?._meta && (0, exports.isResolvableListElementMeta)(element._meta);
6
+ };
7
+ exports.isResolvableListElementData = isResolvableListElementData;
8
+ const isResolvableListElementMeta = (meta) => {
9
+ return meta.resolutionType === 'list';
10
+ };
11
+ exports.isResolvableListElementMeta = isResolvableListElementMeta;
12
+ //# sourceMappingURL=ListElementMeta.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ListElementMeta.js","sourceRoot":"","sources":["../../../../src/resolvableElements/elements/list/ListElementMeta.ts"],"names":[],"mappings":";;;AAWO,MAAM,2BAA2B,GAAG,CAC1C,OAAsB,EACgC,EAAE;IACxD,OAAO,CAAC,CAAC,OAAO,EAAE,KAAK,IAAI,IAAA,mCAA2B,EAAC,OAAO,CAAC,KAAK,CAAC,CAAA;AACtE,CAAC,CAAA;AAJY,QAAA,2BAA2B,+BAIvC;AAEM,MAAM,2BAA2B,GAAG,CAC1C,IAAmB,EACiB,EAAE;IACtC,OAAQ,IAAkC,CAAC,cAAc,KAAK,MAAM,CAAA;AACrE,CAAC,CAAA;AAJY,QAAA,2BAA2B,+BAIvC"}
@@ -0,0 +1,13 @@
1
+ import { HDict } from 'haystack-core';
2
+ import { Watch } from 'haystack-nclient';
3
+ import { ResolvableValueElement } from '../ResolvableValueElement';
4
+ import { UiElementConstructorData, UiElementData } from '../UiElement';
5
+ export declare class ResolvableListElement<T extends UiElementData> extends ResolvableValueElement<T> {
6
+ #private;
7
+ constructor(data: UiElementConstructorData<T>);
8
+ filter?: string;
9
+ watch?: Watch;
10
+ protected doInitialize: (parameters: HDict) => Promise<void>;
11
+ protected doClose: () => Promise<void>;
12
+ getParameterList: () => string[];
13
+ }
@@ -0,0 +1,93 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ResolvableListElement = void 0;
4
+ const haystack_core_1 = require("haystack-core");
5
+ const haystack_nclient_1 = require("haystack-nclient");
6
+ const resolveTemplatedExpression_1 = require("../../resolveTemplatedExpression");
7
+ const ResolvableValueElement_1 = require("../ResolvableValueElement");
8
+ const UiElement_1 = require("../UiElement");
9
+ class ResolvableListElement extends ResolvableValueElement_1.ResolvableValueElement {
10
+ constructor(data) {
11
+ super(data);
12
+ }
13
+ filter;
14
+ watch;
15
+ doInitialize = async (parameters) => {
16
+ const { subscribe, entityBinding, parentBinding } = this
17
+ ._meta;
18
+ this.filter = (0, resolveTemplatedExpression_1.resolveTemplateExpression)((0, UiElement_1.joinFilters)(entityBinding, parentBinding), parameters);
19
+ if (!this.#isValidFilter(this.filter)) {
20
+ throw Error('Invalid filter');
21
+ }
22
+ const grid = await this.resolver.read(this.filter);
23
+ if (!this.#isValidReadGrid(grid)) {
24
+ return;
25
+ }
26
+ this.#updateValue(grid);
27
+ if (subscribe) {
28
+ await this.#setupWatch(grid);
29
+ }
30
+ };
31
+ doClose = async () => {
32
+ return this.watch?.close();
33
+ };
34
+ getParameterList = () => {
35
+ const { entityBinding, parentBinding } = this
36
+ ._meta;
37
+ const parameters = [];
38
+ if (entityBinding) {
39
+ (0, resolveTemplatedExpression_1.replaceTemplateVariables)(entityBinding, (_, match) => {
40
+ parameters.push(match);
41
+ return '';
42
+ });
43
+ }
44
+ if (parentBinding) {
45
+ (0, resolveTemplatedExpression_1.replaceTemplateVariables)(parentBinding, (_, match) => {
46
+ parameters.push(match);
47
+ return '';
48
+ });
49
+ }
50
+ return parameters;
51
+ };
52
+ #isValidFilter = (filter) => {
53
+ try {
54
+ haystack_core_1.HFilter.parse(filter);
55
+ }
56
+ catch (e) {
57
+ console.error('Invalid filter: \n', this.filter, e);
58
+ return false;
59
+ }
60
+ return true;
61
+ };
62
+ #isValidReadGrid = (grid) => {
63
+ if (grid.isError()) {
64
+ console.error('Error grid result for query: \n', this.filter, grid.getError());
65
+ }
66
+ return true;
67
+ };
68
+ #setupWatch = async (grid) => {
69
+ const { subscribePollRate, subscribe } = this
70
+ ._meta;
71
+ if (subscribe) {
72
+ this.watch = await this.resolver.makeWatch(this.#getWatchDisplayName(), grid);
73
+ const updateValue = () => this.#updateValue(this.watch?.grid);
74
+ // Update with the value received when opening the watch
75
+ updateValue();
76
+ // Configure polling options
77
+ this.watch.pollRate = subscribePollRate ?? haystack_nclient_1.DEFAULT_POLL_RATE_SECS;
78
+ this.watch.changed({
79
+ callback: updateValue,
80
+ });
81
+ }
82
+ };
83
+ #updateValue = (grid) => {
84
+ if (grid) {
85
+ this.value = grid;
86
+ }
87
+ };
88
+ #getWatchDisplayName = () => {
89
+ return `ResolvableElement Watch for ${this.name ?? this.filter}`;
90
+ };
91
+ }
92
+ exports.ResolvableListElement = ResolvableListElement;
93
+ //# 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>;