@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
@@ -0,0 +1,54 @@
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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.ResolverProvider = exports.useResolverContext = void 0;
27
+ const haystack_nclient_1 = require("haystack-nclient");
28
+ const haystack_react_1 = require("haystack-react");
29
+ const react_1 = __importStar(require("react"));
30
+ const useCurrentUser_1 = require("../../useCurrentUser");
31
+ const Resolver_1 = require("../Resolver");
32
+ const ResolverContext = react_1.default.createContext(new Resolver_1.Resolver({
33
+ client: new haystack_nclient_1.Client({
34
+ base: new URL(window.location.href),
35
+ }),
36
+ }));
37
+ ResolverContext.displayName = 'ResolverContext';
38
+ function useResolverContext() {
39
+ return (0, react_1.useContext)(ResolverContext);
40
+ }
41
+ exports.useResolverContext = useResolverContext;
42
+ const ResolverProvider = ({ children }) => {
43
+ const client = (0, haystack_react_1.useClient)();
44
+ const user = (0, useCurrentUser_1.useCurrentUser)();
45
+ const [resolver, setResolver] = (0, react_1.useState)(() => new Resolver_1.Resolver({ client, user }));
46
+ (0, react_1.useEffect)(() => {
47
+ setResolver(new Resolver_1.Resolver({ client, user }));
48
+ }, [client, user]);
49
+ return (<ResolverContext.Provider value={resolver}>
50
+ {children}
51
+ </ResolverContext.Provider>);
52
+ };
53
+ exports.ResolverProvider = ResolverProvider;
54
+ //# sourceMappingURL=useResolverContext.jsx.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useResolverContext.jsx","sourceRoot":"","sources":["../../../src/resolvableElements/react/useResolverContext.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,uDAAyC;AACzC,mDAA0C;AAC1C,+CAA8D;AAC9D,yDAAqD;AACrD,0CAAsC;AAEtC,MAAM,eAAe,GAAG,eAAK,CAAC,aAAa,CAC1C,IAAI,mBAAQ,CAAC;IACZ,MAAM,EAAE,IAAI,yBAAM,CAAC;QAClB,IAAI,EAAE,IAAI,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;KACnC,CAAC;CACF,CAAC,CACF,CAAA;AAED,eAAe,CAAC,WAAW,GAAG,iBAAiB,CAAA;AAE/C,SAAgB,kBAAkB;IACjC,OAAO,IAAA,kBAAU,EAAC,eAAe,CAAC,CAAA;AACnC,CAAC;AAFD,gDAEC;AAEM,MAAM,gBAAgB,GAAa,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE;IAC1D,MAAM,MAAM,GAAG,IAAA,0BAAS,GAAE,CAAA;IAC1B,MAAM,IAAI,GAAG,IAAA,+BAAc,GAAE,CAAA;IAE7B,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,IAAA,gBAAQ,EACvC,GAAG,EAAE,CAAC,IAAI,mBAAQ,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CACpC,CAAA;IAED,IAAA,iBAAS,EAAC,GAAG,EAAE;QACd,WAAW,CAAC,IAAI,mBAAQ,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;IAC5C,CAAC,EAAE,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAA;IAElB,OAAO,CACN,CAAC,eAAe,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CACzC;GAAA,CAAC,QAAQ,CACV;EAAA,EAAE,eAAe,CAAC,QAAQ,CAAC,CAC3B,CAAA;AACF,CAAC,CAAA;AAjBY,QAAA,gBAAgB,oBAiB5B"}
@@ -0,0 +1,19 @@
1
+ import { HDict } from 'haystack-core';
2
+ export declare const REG_EXPR_MATCHING_TEMPLATE: RegExp;
3
+ /**
4
+ * Replaces variables (defined as <$parameterName>) in an expression with the values given in the parameters dict.
5
+ * The HVal.toAxon function is used for conversion to a string.
6
+ * @example
7
+ * resolveTemplatedExpression("func({{num}})", HDict.make({num: HNum.make("22")})) => "func(22)"
8
+ * @param expr the axon expression
9
+ * @param params the parameters expressed as dict
10
+ * @returns the axon expression resolved with the specified params
11
+ */
12
+ export declare const resolveTemplateExpression: (expr: string, parameters?: HDict) => string;
13
+ /**
14
+ * Replaces template variable found in the given string using a given replacer function
15
+ * @param templateString
16
+ * @param replacer
17
+ * @returns a new string containing the compiled template string
18
+ */
19
+ export declare const replaceTemplateVariables: (templateString: string, replacer: (substring: string, match: string) => string) => string;
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.replaceTemplateVariables = exports.resolveTemplateExpression = exports.REG_EXPR_MATCHING_TEMPLATE = void 0;
4
+ exports.REG_EXPR_MATCHING_TEMPLATE = new RegExp('{{([^{}]*)}}', 'g');
5
+ /**
6
+ * Replaces variables (defined as <$parameterName>) in an expression with the values given in the parameters dict.
7
+ * The HVal.toAxon function is used for conversion to a string.
8
+ * @example
9
+ * resolveTemplatedExpression("func({{num}})", HDict.make({num: HNum.make("22")})) => "func(22)"
10
+ * @param expr the axon expression
11
+ * @param params the parameters expressed as dict
12
+ * @returns the axon expression resolved with the specified params
13
+ */
14
+ const resolveTemplateExpression = (expr, parameters) => {
15
+ const paramDict = parameters;
16
+ return (0, exports.replaceTemplateVariables)(expr, (_substring, match) => {
17
+ const parameter = paramDict?.get(match)?.toAxon();
18
+ if (parameter != null) {
19
+ return parameter;
20
+ }
21
+ throw new Error(`ERROR: Missing parameter: ${match} in ${paramDict?.toAxon()}`);
22
+ });
23
+ };
24
+ exports.resolveTemplateExpression = resolveTemplateExpression;
25
+ /**
26
+ * Replaces template variable found in the given string using a given replacer function
27
+ * @param templateString
28
+ * @param replacer
29
+ * @returns a new string containing the compiled template string
30
+ */
31
+ const replaceTemplateVariables = (templateString, replacer) => templateString.replace(exports.REG_EXPR_MATCHING_TEMPLATE, replacer);
32
+ exports.replaceTemplateVariables = replaceTemplateVariables;
33
+ //# sourceMappingURL=resolveTemplatedExpression.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolveTemplatedExpression.js","sourceRoot":"","sources":["../../src/resolvableElements/resolveTemplatedExpression.ts"],"names":[],"mappings":";;;AAEa,QAAA,0BAA0B,GAAG,IAAI,MAAM,CAAC,cAAc,EAAE,GAAG,CAAC,CAAA;AAEzE;;;;;;;;GAQG;AACI,MAAM,yBAAyB,GAAG,CACxC,IAAY,EACZ,UAAkB,EACT,EAAE;IACX,MAAM,SAAS,GAAG,UAAU,CAAA;IAE5B,OAAO,IAAA,gCAAwB,EAC9B,IAAI,EACJ,CAAC,UAAkB,EAAE,KAAa,EAAE,EAAE;QACrC,MAAM,SAAS,GAAG,SAAS,EAAE,GAAG,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,CAAA;QACjD,IAAI,SAAS,IAAI,IAAI,EAAE;YACtB,OAAO,SAAS,CAAA;SAChB;QACD,MAAM,IAAI,KAAK,CACd,6BAA6B,KAAK,OAAO,SAAS,EAAE,MAAM,EAAE,EAAE,CAC9D,CAAA;IACF,CAAC,CACD,CAAA;AACF,CAAC,CAAA;AAlBY,QAAA,yBAAyB,6BAkBrC;AAED;;;;;GAKG;AACI,MAAM,wBAAwB,GAAG,CACvC,cAAsB,EACtB,QAAsD,EAC7C,EAAE,CAAC,cAAc,CAAC,OAAO,CAAC,kCAA0B,EAAE,QAAQ,CAAC,CAAA;AAH5D,QAAA,wBAAwB,4BAGoC"}
@@ -0,0 +1,4 @@
1
+ import { HDict } from 'haystack-core';
2
+ import React from 'react';
3
+ export declare function useCurrentUser(): HDict | undefined;
4
+ export declare const UserContextProvider: React.FC;
@@ -0,0 +1,42 @@
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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.UserContextProvider = exports.useCurrentUser = void 0;
27
+ const haystack_react_1 = require("haystack-react");
28
+ const react_1 = __importStar(require("react"));
29
+ const UserContext = react_1.default.createContext(undefined);
30
+ UserContext.displayName = 'CurrentUser';
31
+ function useCurrentUser() {
32
+ return (0, react_1.useContext)(UserContext);
33
+ }
34
+ exports.useCurrentUser = useCurrentUser;
35
+ const UserContextProvider = ({ children }) => {
36
+ const { grid, isLoading } = (0, haystack_react_1.useEval)('finGetCurrentUser()');
37
+ return (<UserContext.Provider value={isLoading ? undefined : grid[0]}>
38
+ {children}
39
+ </UserContext.Provider>);
40
+ };
41
+ exports.UserContextProvider = UserContextProvider;
42
+ //# sourceMappingURL=useCurrentUser.jsx.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useCurrentUser.jsx","sourceRoot":"","sources":["../src/useCurrentUser.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AACA,mDAAwC;AACxC,+CAAyC;AAEzC,MAAM,WAAW,GAAG,eAAK,CAAC,aAAa,CAAoB,SAAS,CAAC,CAAA;AAErE,WAAW,CAAC,WAAW,GAAG,aAAa,CAAA;AAEvC,SAAgB,cAAc;IAC7B,OAAO,IAAA,kBAAU,EAAC,WAAW,CAAC,CAAA;AAC/B,CAAC;AAFD,wCAEC;AAEM,MAAM,mBAAmB,GAAa,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE;IAC7D,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,IAAA,wBAAO,EAAC,qBAAqB,CAAC,CAAA;IAE1D,OAAO,CACN,CAAC,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAC5D;GAAA,CAAC,QAAQ,CACV;EAAA,EAAE,WAAW,CAAC,QAAQ,CAAC,CACvB,CAAA;AACF,CAAC,CAAA;AARY,QAAA,mBAAmB,uBAQ/B"}
@@ -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';
@@ -0,0 +1,15 @@
1
+ //////////////////////////////////////////////////////////////////////////
2
+ // Elements
3
+ //////////////////////////////////////////////////////////////////////////
4
+ export * from './resolvableElements/elements/section/ResolvableSectionElement';
5
+ export * from './resolvableElements/elements/section/SectionElementMeta';
6
+ //////////////////////////////////////////////////////////////////////////
7
+ // React
8
+ //////////////////////////////////////////////////////////////////////////
9
+ export * from './resolvableElements/react/useResolverContext';
10
+ export * from './resolvableElements/react/useResolveSection';
11
+ //////////////////////////////////////////////////////////////////////////
12
+ // Other
13
+ //////////////////////////////////////////////////////////////////////////
14
+ export * from './useCurrentUser';
15
+ //# 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,cAAc,gEAAgE,CAAA;AAC9E,cAAc,0DAA0D,CAAA;AACxE,0EAA0E;AAC1E,QAAQ;AACR,0EAA0E;AAC1E,cAAc,+CAA+C,CAAA;AAC7D,cAAc,8CAA8C,CAAA;AAC5D,0EAA0E;AAC1E,QAAQ;AACR,0EAA0E;AAC1E,cAAc,kBAAkB,CAAA"}
@@ -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,24 @@
1
+ /**
2
+ * Resolver is a mediator for the network interactions during the resolution process,
3
+ * in order to add an optimization layer.
4
+ *
5
+ * TODO: implement caching system
6
+ */
7
+ export class Resolver {
8
+ constructor({ client, user }) {
9
+ this.client = client;
10
+ this.user = user;
11
+ }
12
+ client;
13
+ user;
14
+ async read(filter) {
15
+ return this.client.ext.read(filter);
16
+ }
17
+ async makeWatch(dis, grid) {
18
+ return this.client.ops.watch.make(dis, grid);
19
+ }
20
+ async eval(expr) {
21
+ return this.client.ext.eval(expr);
22
+ }
23
+ }
24
+ //# sourceMappingURL=Resolver.jsx.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Resolver.jsx","sourceRoot":"","sources":["../../src/resolvableElements/Resolver.tsx"],"names":[],"mappings":"AAQA;;;;;GAKG;AACH,MAAM,OAAO,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"}
@@ -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,20 @@
1
+ import { UiElement } from './UiElement';
2
+ export class ResolvableElement extends UiElement {
3
+ constructor(data) {
4
+ super(data);
5
+ }
6
+ #initialized = false;
7
+ initialize = async (parameters) => {
8
+ if (this.isAccessAllowed() && !this.#initialized) {
9
+ this.#initialized = true;
10
+ return await this.doInitialize(parameters);
11
+ }
12
+ };
13
+ close = async () => {
14
+ if (this.#initialized) {
15
+ await this.doClose();
16
+ this.#initialized = false;
17
+ }
18
+ };
19
+ }
20
+ //# sourceMappingURL=ResolvableElement.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ResolvableElement.js","sourceRoot":"","sources":["../../../src/resolvableElements/elements/ResolvableElement.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAA2C,MAAM,aAAa,CAAA;AAEhF,MAAM,OAAgB,iBAEpB,SAAQ,SAAY;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"}
@@ -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,14 @@
1
+ import { ResolvableElement } from './ResolvableElement';
2
+ export const isResolvableValueElement = (element) => {
3
+ return !!element?._meta && isResolvableValueElementMeta(element._meta);
4
+ };
5
+ export const isResolvableValueElementMeta = (meta) => {
6
+ return (!!meta.resolutionType &&
7
+ !!meta.resolvedType);
8
+ };
9
+ export class ResolvableValueElement extends ResolvableElement {
10
+ constructor(data) {
11
+ super(data);
12
+ }
13
+ }
14
+ //# sourceMappingURL=ResolvableValueElement.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ResolvableValueElement.js","sourceRoot":"","sources":["../../../src/resolvableElements/elements/ResolvableValueElement.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAYvD,MAAM,CAAC,MAAM,wBAAwB,GAAG,CACvC,OAAsB,EACiC,EAAE;IACzD,OAAO,CAAC,CAAC,OAAO,EAAE,KAAK,IAAI,4BAA4B,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;AACvE,CAAC,CAAA;AAED,MAAM,CAAC,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;AAED,MAAM,OAAgB,sBAEpB,SAAQ,iBAAoB;IAC7B,YAAY,IAAiC;QAC5C,KAAK,CAAC,IAAI,CAAC,CAAA;IACZ,CAAC;CACD"}
@@ -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,43 @@
1
+ const USER_ROLE_TAG_NAME = 'uiElementPermissions';
2
+ export class UiElement {
3
+ constructor({ name, element, resolver, onUpdate, }) {
4
+ this._meta = element._meta;
5
+ this.name = name;
6
+ this.resolver = resolver;
7
+ this.onUpdate = onUpdate;
8
+ }
9
+ resolver;
10
+ _meta;
11
+ name;
12
+ toJSON() {
13
+ return { _meta: this._meta };
14
+ }
15
+ inspect() {
16
+ console.log(this);
17
+ }
18
+ isAccessAllowed() {
19
+ if (!this._meta?.access || isSuperuser(this.resolver.user)) {
20
+ return true;
21
+ }
22
+ const userRole = this.resolver.user?.get(USER_ROLE_TAG_NAME);
23
+ if (userRole) {
24
+ return this._meta.access.includes(userRole.value);
25
+ }
26
+ // If userRole is not defined return false.
27
+ return false;
28
+ }
29
+ #value;
30
+ get value() {
31
+ return this.#value;
32
+ }
33
+ set value(value) {
34
+ this.#value = value;
35
+ this.onUpdate(value);
36
+ }
37
+ onUpdate;
38
+ }
39
+ export function joinFilters(...filter) {
40
+ return filter.filter((filter) => filter).join(' and ');
41
+ }
42
+ const isSuperuser = (user) => user?.get('userRole')?.value === 'su';
43
+ //# 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,MAAM,OAAO,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;AACD,MAAM,UAAU,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;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,53 @@
1
+ import { HNum } from 'haystack-core';
2
+ import { millisecond, second } from 'haystack-units';
3
+ import { replaceTemplateVariables, resolveTemplateExpression, } from '../../resolveTemplatedExpression';
4
+ import { ResolvableValueElement } from '../ResolvableValueElement';
5
+ export class ResolvableExprElement extends ResolvableValueElement {
6
+ constructor(data) {
7
+ super(data);
8
+ }
9
+ refreshes = 0;
10
+ #timeout;
11
+ doInitialize = async (parameters) => {
12
+ this.#updateValue(parameters);
13
+ };
14
+ #updateValue = async (parameters) => {
15
+ const { expr, refreshAfter } = this._meta;
16
+ const resolvedExpression = resolveTemplateExpression(expr, parameters);
17
+ const grid = await this.resolver.eval(resolvedExpression);
18
+ if (grid.isError()) {
19
+ console.error('Empty grid result for expression: \n', resolvedExpression, grid.getError());
20
+ return;
21
+ }
22
+ const val = grid[0]?.get('val');
23
+ if (val) {
24
+ this.value = val;
25
+ }
26
+ else {
27
+ this.value = grid;
28
+ }
29
+ if (refreshAfter) {
30
+ this.#timeout = setTimeout(() => {
31
+ this.refreshes++;
32
+ this.#updateValue(parameters);
33
+ }, HNum.make(refreshAfter, second).convertTo(millisecond).value);
34
+ }
35
+ };
36
+ doClose = async () => {
37
+ if (this.#timeout) {
38
+ clearTimeout(this.#timeout);
39
+ }
40
+ };
41
+ getParameterList = () => {
42
+ const { expr } = this._meta;
43
+ const parameters = [];
44
+ if (expr) {
45
+ replaceTemplateVariables(expr, (_, match) => {
46
+ parameters.push(match);
47
+ return '';
48
+ });
49
+ }
50
+ return parameters;
51
+ };
52
+ }
53
+ //# sourceMappingURL=ResolvableExprElement.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ResolvableExprElement.js","sourceRoot":"","sources":["../../../../src/resolvableElements/elements/expr/ResolvableExprElement.ts"],"names":[],"mappings":"AAAA,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,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,7 @@
1
+ export const isResolvableExprElementData = (element) => {
2
+ return !!element?._meta && isResolvableExprElementMeta(element?._meta);
3
+ };
4
+ export const isResolvableExprElementMeta = (meta) => {
5
+ return meta.resolutionType === 'expr';
6
+ };
7
+ //# sourceMappingURL=ResolvableExprElementMeta.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ResolvableExprElementMeta.js","sourceRoot":"","sources":["../../../../src/resolvableElements/elements/expr/ResolvableExprElementMeta.ts"],"names":[],"mappings":"AASA,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,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,26 @@
1
+ import { HDict } from 'haystack-core';
2
+ import { resolveTemplateExpression } from '../../resolveTemplatedExpression';
3
+ import { UiElement, } from '../UiElement';
4
+ export class FunctionElement extends UiElement {
5
+ constructor(data) {
6
+ super(data);
7
+ this.value = this.#buildFunction();
8
+ }
9
+ #buildFunction = () => {
10
+ const { expr } = this._meta;
11
+ return async (parameters) => {
12
+ const resolvedExpression = resolveTemplateExpression(expr, makeParametersDict(parameters));
13
+ return await this.resolver.eval(resolvedExpression);
14
+ };
15
+ };
16
+ }
17
+ export const makeParametersDict = (parameters) => {
18
+ if (!parameters) {
19
+ return HDict.make();
20
+ }
21
+ if (parameters instanceof HDict) {
22
+ return parameters;
23
+ }
24
+ return HDict.make(Object.fromEntries(Object.entries(parameters).filter(([, v]) => v != null)));
25
+ };
26
+ //# sourceMappingURL=FunctionElement.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FunctionElement.js","sourceRoot":"","sources":["../../../../src/resolvableElements/elements/function/FunctionElement.ts"],"names":[],"mappings":"AAAA,OAAO,EAAwB,KAAK,EAAuB,MAAM,eAAe,CAAA;AAChF,OAAO,EAAE,yBAAyB,EAAE,MAAM,kCAAkC,CAAA;AAE5E,OAAO,EAEN,SAAS,GAGT,MAAM,cAAc,CAAA;AAGrB,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,7 @@
1
+ export const isFunctionElementData = (element) => {
2
+ return !!element?._meta && isFunctionElementMeta(element._meta);
3
+ };
4
+ export const isFunctionElementMeta = (meta) => {
5
+ return meta.resolutionType === 'function';
6
+ };
7
+ //# sourceMappingURL=FunctionElementMeta.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FunctionElementMeta.js","sourceRoot":"","sources":["../../../../src/resolvableElements/elements/function/FunctionElementMeta.ts"],"names":[],"mappings":"AAOA,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,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,7 @@
1
+ export const isResolvableListElementData = (element) => {
2
+ return !!element?._meta && isResolvableListElementMeta(element._meta);
3
+ };
4
+ export const isResolvableListElementMeta = (meta) => {
5
+ return meta.resolutionType === 'list';
6
+ };
7
+ //# sourceMappingURL=ListElementMeta.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ListElementMeta.js","sourceRoot":"","sources":["../../../../src/resolvableElements/elements/list/ListElementMeta.ts"],"names":[],"mappings":"AAWA,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,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
+ }