@finos/legend-application-query 5.2.6 → 5.2.7

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 (231) hide show
  1. package/lib/components/QueryBuilder.d.ts.map +1 -1
  2. package/lib/components/QueryBuilder.js +22 -11
  3. package/lib/components/QueryBuilder.js.map +1 -1
  4. package/lib/components/QueryBuilderResultPanel.d.ts.map +1 -1
  5. package/lib/components/QueryBuilderResultPanel.js +12 -7
  6. package/lib/components/QueryBuilderResultPanel.js.map +1 -1
  7. package/lib/components/QueryBuilderSetupPanel.js +1 -1
  8. package/lib/components/QueryBuilderSetupPanel.js.map +1 -1
  9. package/lib/components/explorer/QueryBuilderExplorerPanel.d.ts +1 -2
  10. package/lib/components/explorer/QueryBuilderExplorerPanel.d.ts.map +1 -1
  11. package/lib/components/explorer/QueryBuilderExplorerPanel.js +14 -16
  12. package/lib/components/explorer/QueryBuilderExplorerPanel.js.map +1 -1
  13. package/lib/components/explorer/QueryBuilderPropertySearchPanel.js +2 -2
  14. package/lib/components/explorer/QueryBuilderPropertySearchPanel.js.map +1 -1
  15. package/lib/components/fetch-structure/QueryBuilderFetchStructurePanel.d.ts.map +1 -1
  16. package/lib/components/fetch-structure/QueryBuilderFetchStructurePanel.js +22 -105
  17. package/lib/components/fetch-structure/QueryBuilderFetchStructurePanel.js.map +1 -1
  18. package/lib/components/fetch-structure/QueryBuilderGraphFetchTreePanel.d.ts +1 -2
  19. package/lib/components/fetch-structure/QueryBuilderGraphFetchTreePanel.d.ts.map +1 -1
  20. package/lib/components/fetch-structure/QueryBuilderGraphFetchTreePanel.js +8 -10
  21. package/lib/components/fetch-structure/QueryBuilderGraphFetchTreePanel.js.map +1 -1
  22. package/lib/components/fetch-structure/QueryBuilderPostFilterPanel.d.ts.map +1 -1
  23. package/lib/components/fetch-structure/QueryBuilderPostFilterPanel.js +23 -17
  24. package/lib/components/fetch-structure/QueryBuilderPostFilterPanel.js.map +1 -1
  25. package/lib/components/fetch-structure/QueryBuilderProjectionPanel.d.ts +2 -2
  26. package/lib/components/fetch-structure/QueryBuilderProjectionPanel.d.ts.map +1 -1
  27. package/lib/components/fetch-structure/QueryBuilderProjectionPanel.js +15 -12
  28. package/lib/components/fetch-structure/QueryBuilderProjectionPanel.js.map +1 -1
  29. package/lib/components/fetch-structure/QueryBuilderResultModifierPanel.d.ts +2 -2
  30. package/lib/components/fetch-structure/QueryBuilderResultModifierPanel.d.ts.map +1 -1
  31. package/lib/components/fetch-structure/QueryBuilderResultModifierPanel.js +23 -28
  32. package/lib/components/fetch-structure/QueryBuilderResultModifierPanel.js.map +1 -1
  33. package/lib/components/filter/QueryBuilderFilterPanel.js +7 -7
  34. package/lib/components/filter/QueryBuilderFilterPanel.js.map +1 -1
  35. package/lib/components/shared/QueryBuilderPanelIssueCountBadge.d.ts.map +1 -1
  36. package/lib/components/shared/QueryBuilderPanelIssueCountBadge.js +1 -1
  37. package/lib/components/shared/QueryBuilderPanelIssueCountBadge.js.map +1 -1
  38. package/lib/graphManager/protocol/pure/QueryBuilder_PureProtocolProcessorPlugin.d.ts.map +1 -1
  39. package/lib/graphManager/protocol/pure/QueryBuilder_PureProtocolProcessorPlugin.js +5 -3
  40. package/lib/graphManager/protocol/pure/QueryBuilder_PureProtocolProcessorPlugin.js.map +1 -1
  41. package/lib/index.css +2 -2
  42. package/lib/index.css.map +1 -1
  43. package/lib/package.json +7 -7
  44. package/lib/stores/QueryBuilderPreviewDataHelper.d.ts.map +1 -1
  45. package/lib/stores/QueryBuilderPreviewDataHelper.js +17 -14
  46. package/lib/stores/QueryBuilderPreviewDataHelper.js.map +1 -1
  47. package/lib/stores/QueryBuilderPropertyEditorState.d.ts.map +1 -1
  48. package/lib/stores/QueryBuilderPropertyEditorState.js +34 -24
  49. package/lib/stores/QueryBuilderPropertyEditorState.js.map +1 -1
  50. package/lib/stores/QueryBuilderState.d.ts +1 -2
  51. package/lib/stores/QueryBuilderState.d.ts.map +1 -1
  52. package/lib/stores/QueryBuilderState.js +17 -26
  53. package/lib/stores/QueryBuilderState.js.map +1 -1
  54. package/lib/stores/QueryBuilderStateBuilder.d.ts +124 -0
  55. package/lib/stores/QueryBuilderStateBuilder.d.ts.map +1 -0
  56. package/lib/stores/QueryBuilderStateBuilder.js +310 -0
  57. package/lib/stores/QueryBuilderStateBuilder.js.map +1 -0
  58. package/lib/stores/{QueryBuilderTestUtils.d.ts → QueryBuilderStateTestUtils.d.ts} +2 -2
  59. package/lib/stores/QueryBuilderStateTestUtils.d.ts.map +1 -0
  60. package/lib/stores/{QueryBuilderTestUtils.js → QueryBuilderStateTestUtils.js} +2 -2
  61. package/lib/stores/QueryBuilderStateTestUtils.js.map +1 -0
  62. package/lib/stores/QueryBuilderTypeaheadHelper.d.ts.map +1 -1
  63. package/lib/stores/QueryBuilderTypeaheadHelper.js +14 -12
  64. package/lib/stores/QueryBuilderTypeaheadHelper.js.map +1 -1
  65. package/lib/stores/QueryBuilderValueSpecificationBuilder.d.ts +3 -11
  66. package/lib/stores/QueryBuilderValueSpecificationBuilder.d.ts.map +1 -1
  67. package/lib/stores/QueryBuilderValueSpecificationBuilder.js +10 -319
  68. package/lib/stores/QueryBuilderValueSpecificationBuilder.js.map +1 -1
  69. package/lib/stores/QueryBuilderValueSpecificationBuilderHelper.d.ts +27 -0
  70. package/lib/stores/QueryBuilderValueSpecificationBuilderHelper.d.ts.map +1 -0
  71. package/lib/stores/QueryBuilderValueSpecificationBuilderHelper.js +153 -0
  72. package/lib/stores/QueryBuilderValueSpecificationBuilderHelper.js.map +1 -0
  73. package/lib/stores/QueryBuilderValueSpecificationHelper.d.ts +37 -1
  74. package/lib/stores/QueryBuilderValueSpecificationHelper.d.ts.map +1 -1
  75. package/lib/stores/QueryBuilderValueSpecificationHelper.js +79 -2
  76. package/lib/stores/QueryBuilderValueSpecificationHelper.js.map +1 -1
  77. package/lib/stores/explorer/QueryBuilderExplorerState.d.ts +12 -11
  78. package/lib/stores/explorer/QueryBuilderExplorerState.d.ts.map +1 -1
  79. package/lib/stores/explorer/QueryBuilderExplorerState.js +53 -20
  80. package/lib/stores/explorer/QueryBuilderExplorerState.js.map +1 -1
  81. package/lib/stores/explorer/QueryBuilderPropertySearchPanelState.d.ts +1 -1
  82. package/lib/stores/explorer/QueryBuilderPropertySearchPanelState.d.ts.map +1 -1
  83. package/lib/stores/explorer/QueryBuilderPropertySearchPanelState.js +3 -1
  84. package/lib/stores/explorer/QueryBuilderPropertySearchPanelState.js.map +1 -1
  85. package/lib/stores/fetch-structure/QueryBuilderFetchStructureImplementationState.d.ts +17 -0
  86. package/lib/stores/fetch-structure/QueryBuilderFetchStructureImplementationState.d.ts.map +1 -1
  87. package/lib/stores/fetch-structure/QueryBuilderFetchStructureImplementationState.js +10 -0
  88. package/lib/stores/fetch-structure/QueryBuilderFetchStructureImplementationState.js.map +1 -1
  89. package/lib/stores/fetch-structure/QueryBuilderFetchStructureState.d.ts +3 -20
  90. package/lib/stores/fetch-structure/QueryBuilderFetchStructureState.d.ts.map +1 -1
  91. package/lib/stores/fetch-structure/QueryBuilderFetchStructureState.js +31 -73
  92. package/lib/stores/fetch-structure/QueryBuilderFetchStructureState.js.map +1 -1
  93. package/lib/stores/fetch-structure/graph-fetch/QueryBuilderGraphFetchTreeState.d.ts +17 -4
  94. package/lib/stores/fetch-structure/graph-fetch/QueryBuilderGraphFetchTreeState.d.ts.map +1 -1
  95. package/lib/stores/fetch-structure/graph-fetch/QueryBuilderGraphFetchTreeState.js +110 -21
  96. package/lib/stores/fetch-structure/graph-fetch/QueryBuilderGraphFetchTreeState.js.map +1 -1
  97. package/lib/stores/fetch-structure/graph-fetch/QueryBuilderGraphFetchTreeStateBuilder.d.ts +20 -0
  98. package/lib/stores/fetch-structure/graph-fetch/QueryBuilderGraphFetchTreeStateBuilder.d.ts.map +1 -0
  99. package/lib/stores/fetch-structure/graph-fetch/QueryBuilderGraphFetchTreeStateBuilder.js +62 -0
  100. package/lib/stores/fetch-structure/graph-fetch/QueryBuilderGraphFetchTreeStateBuilder.js.map +1 -0
  101. package/lib/stores/fetch-structure/graph-fetch/QueryBuilderGraphFetchTreeUtil.d.ts +2 -1
  102. package/lib/stores/fetch-structure/graph-fetch/QueryBuilderGraphFetchTreeUtil.d.ts.map +1 -1
  103. package/lib/stores/fetch-structure/graph-fetch/QueryBuilderGraphFetchTreeUtil.js +3 -8
  104. package/lib/stores/fetch-structure/graph-fetch/QueryBuilderGraphFetchTreeUtil.js.map +1 -1
  105. package/lib/stores/fetch-structure/graph-fetch/QueryBuilderGraphFetchValueSpecificationBuilder.d.ts +9 -2
  106. package/lib/stores/fetch-structure/graph-fetch/QueryBuilderGraphFetchValueSpecificationBuilder.d.ts.map +1 -1
  107. package/lib/stores/fetch-structure/graph-fetch/QueryBuilderGraphFetchValueSpecificationBuilder.js +28 -5
  108. package/lib/stores/fetch-structure/graph-fetch/QueryBuilderGraphFetchValueSpecificationBuilder.js.map +1 -1
  109. package/lib/stores/fetch-structure/projection/QueryBuilderProjectionColumnState.js +2 -2
  110. package/lib/stores/fetch-structure/projection/QueryBuilderProjectionColumnState.js.map +1 -1
  111. package/lib/stores/fetch-structure/projection/QueryBuilderProjectionState.d.ts +10 -2
  112. package/lib/stores/fetch-structure/projection/QueryBuilderProjectionState.d.ts.map +1 -1
  113. package/lib/stores/fetch-structure/projection/QueryBuilderProjectionState.js +102 -39
  114. package/lib/stores/fetch-structure/projection/QueryBuilderProjectionState.js.map +1 -1
  115. package/lib/stores/fetch-structure/projection/QueryBuilderProjectionStateBuilder.d.ts +25 -0
  116. package/lib/stores/fetch-structure/projection/QueryBuilderProjectionStateBuilder.d.ts.map +1 -0
  117. package/lib/stores/fetch-structure/projection/QueryBuilderProjectionStateBuilder.js +186 -0
  118. package/lib/stores/fetch-structure/projection/QueryBuilderProjectionStateBuilder.js.map +1 -0
  119. package/lib/stores/fetch-structure/projection/QueryBuilderProjectionValueSpecificationBuilder.d.ts +9 -4
  120. package/lib/stores/fetch-structure/projection/QueryBuilderProjectionValueSpecificationBuilder.d.ts.map +1 -1
  121. package/lib/stores/fetch-structure/projection/QueryBuilderProjectionValueSpecificationBuilder.js +129 -13
  122. package/lib/stores/fetch-structure/projection/QueryBuilderProjectionValueSpecificationBuilder.js.map +1 -1
  123. package/lib/stores/fetch-structure/projection/aggregation/QueryBuilderAggregationStateBuilder.d.ts +20 -0
  124. package/lib/stores/fetch-structure/projection/aggregation/QueryBuilderAggregationStateBuilder.d.ts.map +1 -0
  125. package/lib/stores/fetch-structure/projection/aggregation/QueryBuilderAggregationStateBuilder.js +96 -0
  126. package/lib/stores/fetch-structure/projection/aggregation/QueryBuilderAggregationStateBuilder.js.map +1 -0
  127. package/lib/stores/fetch-structure/projection/aggregation/operators/QueryBuilderAggregateOperator_DistinctCount.js +1 -1
  128. package/lib/stores/fetch-structure/projection/aggregation/operators/QueryBuilderAggregateOperator_DistinctCount.js.map +1 -1
  129. package/lib/stores/fetch-structure/projection/post-filter/{QueryBuilderPostFilterValueSpecificationProcessor.d.ts → QueryBuilderPostFilterStateBuilder.d.ts} +4 -3
  130. package/lib/stores/fetch-structure/projection/post-filter/QueryBuilderPostFilterStateBuilder.d.ts.map +1 -0
  131. package/lib/stores/fetch-structure/projection/post-filter/{QueryBuilderPostFilterValueSpecificationProcessor.js → QueryBuilderPostFilterStateBuilder.js} +30 -21
  132. package/lib/stores/fetch-structure/projection/post-filter/QueryBuilderPostFilterStateBuilder.js.map +1 -0
  133. package/lib/stores/fetch-structure/projection/post-filter/QueryBuilderPostFilterValueSpecificationBuilder.d.ts.map +1 -1
  134. package/lib/stores/fetch-structure/projection/post-filter/QueryBuilderPostFilterValueSpecificationBuilder.js +1 -4
  135. package/lib/stores/fetch-structure/projection/post-filter/QueryBuilderPostFilterValueSpecificationBuilder.js.map +1 -1
  136. package/lib/stores/fetch-structure/projection/post-filter/operators/QueryBuilderPostFilterOperator_Contain.js +1 -1
  137. package/lib/stores/fetch-structure/projection/post-filter/operators/QueryBuilderPostFilterOperator_Contain.js.map +1 -1
  138. package/lib/stores/fetch-structure/projection/post-filter/operators/QueryBuilderPostFilterOperator_EndWith.js +1 -1
  139. package/lib/stores/fetch-structure/projection/post-filter/operators/QueryBuilderPostFilterOperator_EndWith.js.map +1 -1
  140. package/lib/stores/fetch-structure/projection/post-filter/operators/QueryBuilderPostFilterOperator_Equal.js +1 -1
  141. package/lib/stores/fetch-structure/projection/post-filter/operators/QueryBuilderPostFilterOperator_Equal.js.map +1 -1
  142. package/lib/stores/fetch-structure/projection/post-filter/operators/QueryBuilderPostFilterOperator_GreaterThan.js +1 -1
  143. package/lib/stores/fetch-structure/projection/post-filter/operators/QueryBuilderPostFilterOperator_GreaterThan.js.map +1 -1
  144. package/lib/stores/fetch-structure/projection/post-filter/operators/QueryBuilderPostFilterOperator_GreaterThanEqual.js +1 -1
  145. package/lib/stores/fetch-structure/projection/post-filter/operators/QueryBuilderPostFilterOperator_GreaterThanEqual.js.map +1 -1
  146. package/lib/stores/fetch-structure/projection/post-filter/operators/QueryBuilderPostFilterOperator_In.js +1 -1
  147. package/lib/stores/fetch-structure/projection/post-filter/operators/QueryBuilderPostFilterOperator_In.js.map +1 -1
  148. package/lib/stores/fetch-structure/projection/post-filter/operators/QueryBuilderPostFilterOperator_IsEmpty.js +1 -1
  149. package/lib/stores/fetch-structure/projection/post-filter/operators/QueryBuilderPostFilterOperator_IsEmpty.js.map +1 -1
  150. package/lib/stores/fetch-structure/projection/post-filter/operators/QueryBuilderPostFilterOperator_LessThan.js +1 -1
  151. package/lib/stores/fetch-structure/projection/post-filter/operators/QueryBuilderPostFilterOperator_LessThan.js.map +1 -1
  152. package/lib/stores/fetch-structure/projection/post-filter/operators/QueryBuilderPostFilterOperator_LessThanEqual.js +1 -1
  153. package/lib/stores/fetch-structure/projection/post-filter/operators/QueryBuilderPostFilterOperator_LessThanEqual.js.map +1 -1
  154. package/lib/stores/fetch-structure/projection/post-filter/operators/QueryBuilderPostFilterOperator_StartWith.js +1 -1
  155. package/lib/stores/fetch-structure/projection/post-filter/operators/QueryBuilderPostFilterOperator_StartWith.js.map +1 -1
  156. package/lib/stores/filter/QueryBuilderFilterStateBuilder.d.ts +19 -0
  157. package/lib/stores/filter/QueryBuilderFilterStateBuilder.d.ts.map +1 -0
  158. package/lib/stores/filter/QueryBuilderFilterStateBuilder.js +74 -0
  159. package/lib/stores/filter/QueryBuilderFilterStateBuilder.js.map +1 -0
  160. package/lib/stores/filter/{QueryBuilderValueSpecificationBuilder.d.ts → QueryBuilderFilterValueSpecificationBuilder.d.ts} +1 -1
  161. package/lib/stores/filter/QueryBuilderFilterValueSpecificationBuilder.d.ts.map +1 -0
  162. package/lib/stores/filter/{QueryBuilderValueSpecificationBuilder.js → QueryBuilderFilterValueSpecificationBuilder.js} +1 -1
  163. package/lib/stores/filter/QueryBuilderFilterValueSpecificationBuilder.js.map +1 -0
  164. package/lib/stores/filter/operators/QueryBuilderFilterOperatorHelper.d.ts.map +1 -1
  165. package/lib/stores/filter/operators/QueryBuilderFilterOperatorHelper.js +5 -5
  166. package/lib/stores/filter/operators/QueryBuilderFilterOperatorHelper.js.map +1 -1
  167. package/package.json +14 -14
  168. package/src/components/QueryBuilder.tsx +47 -28
  169. package/src/components/QueryBuilderResultPanel.tsx +21 -14
  170. package/src/components/QueryBuilderSetupPanel.tsx +1 -1
  171. package/src/components/explorer/QueryBuilderExplorerPanel.tsx +23 -38
  172. package/src/components/explorer/QueryBuilderPropertySearchPanel.tsx +2 -2
  173. package/src/components/fetch-structure/QueryBuilderFetchStructurePanel.tsx +41 -175
  174. package/src/components/fetch-structure/QueryBuilderGraphFetchTreePanel.tsx +9 -12
  175. package/src/components/fetch-structure/QueryBuilderPostFilterPanel.tsx +62 -28
  176. package/src/components/fetch-structure/QueryBuilderProjectionPanel.tsx +74 -48
  177. package/src/components/fetch-structure/QueryBuilderResultModifierPanel.tsx +33 -41
  178. package/src/components/filter/QueryBuilderFilterPanel.tsx +7 -7
  179. package/src/components/shared/QueryBuilderPanelIssueCountBadge.tsx +3 -1
  180. package/src/graphManager/protocol/pure/QueryBuilder_PureProtocolProcessorPlugin.ts +5 -8
  181. package/src/stores/QueryBuilderPreviewDataHelper.ts +27 -18
  182. package/src/stores/QueryBuilderPropertyEditorState.ts +40 -31
  183. package/src/stores/QueryBuilderState.ts +26 -32
  184. package/src/stores/QueryBuilderStateBuilder.ts +584 -0
  185. package/src/stores/{QueryBuilderTestUtils.ts → QueryBuilderStateTestUtils.ts} +1 -1
  186. package/src/stores/QueryBuilderTypeaheadHelper.ts +23 -16
  187. package/src/stores/QueryBuilderValueSpecificationBuilder.ts +24 -584
  188. package/src/stores/QueryBuilderValueSpecificationBuilderHelper.ts +248 -0
  189. package/src/stores/QueryBuilderValueSpecificationHelper.ts +114 -0
  190. package/src/stores/explorer/QueryBuilderExplorerState.ts +73 -33
  191. package/src/stores/explorer/QueryBuilderPropertySearchPanelState.ts +3 -1
  192. package/src/stores/fetch-structure/QueryBuilderFetchStructureImplementationState.ts +33 -2
  193. package/src/stores/fetch-structure/QueryBuilderFetchStructureState.ts +53 -118
  194. package/src/stores/fetch-structure/graph-fetch/QueryBuilderGraphFetchTreeState.ts +166 -26
  195. package/src/stores/fetch-structure/graph-fetch/QueryBuilderGraphFetchTreeStateBuilder.ts +131 -0
  196. package/src/stores/fetch-structure/graph-fetch/QueryBuilderGraphFetchTreeUtil.ts +10 -19
  197. package/src/stores/fetch-structure/graph-fetch/QueryBuilderGraphFetchValueSpecificationBuilder.ts +68 -4
  198. package/src/stores/fetch-structure/projection/QueryBuilderProjectionColumnState.ts +2 -2
  199. package/src/stores/fetch-structure/projection/QueryBuilderProjectionState.ts +172 -67
  200. package/src/stores/fetch-structure/projection/QueryBuilderProjectionStateBuilder.ts +426 -0
  201. package/src/stores/fetch-structure/projection/QueryBuilderProjectionValueSpecificationBuilder.ts +266 -21
  202. package/src/stores/fetch-structure/projection/aggregation/QueryBuilderAggregationStateBuilder.ts +228 -0
  203. package/src/stores/fetch-structure/projection/aggregation/operators/QueryBuilderAggregateOperator_DistinctCount.ts +1 -1
  204. package/src/stores/fetch-structure/projection/post-filter/{QueryBuilderPostFilterValueSpecificationProcessor.ts → QueryBuilderPostFilterStateBuilder.ts} +68 -48
  205. package/src/stores/fetch-structure/projection/post-filter/QueryBuilderPostFilterValueSpecificationBuilder.ts +1 -11
  206. package/src/stores/fetch-structure/projection/post-filter/operators/QueryBuilderPostFilterOperator_Contain.ts +1 -1
  207. package/src/stores/fetch-structure/projection/post-filter/operators/QueryBuilderPostFilterOperator_EndWith.ts +1 -1
  208. package/src/stores/fetch-structure/projection/post-filter/operators/QueryBuilderPostFilterOperator_Equal.ts +1 -1
  209. package/src/stores/fetch-structure/projection/post-filter/operators/QueryBuilderPostFilterOperator_GreaterThan.ts +1 -1
  210. package/src/stores/fetch-structure/projection/post-filter/operators/QueryBuilderPostFilterOperator_GreaterThanEqual.ts +1 -1
  211. package/src/stores/fetch-structure/projection/post-filter/operators/QueryBuilderPostFilterOperator_In.ts +1 -1
  212. package/src/stores/fetch-structure/projection/post-filter/operators/QueryBuilderPostFilterOperator_IsEmpty.ts +1 -1
  213. package/src/stores/fetch-structure/projection/post-filter/operators/QueryBuilderPostFilterOperator_LessThan.ts +1 -1
  214. package/src/stores/fetch-structure/projection/post-filter/operators/QueryBuilderPostFilterOperator_LessThanEqual.ts +1 -1
  215. package/src/stores/fetch-structure/projection/post-filter/operators/QueryBuilderPostFilterOperator_StartWith.ts +1 -1
  216. package/src/stores/filter/QueryBuilderFilterStateBuilder.ts +155 -0
  217. package/src/stores/filter/{QueryBuilderValueSpecificationBuilder.ts → QueryBuilderFilterValueSpecificationBuilder.ts} +0 -0
  218. package/src/stores/filter/operators/QueryBuilderFilterOperatorHelper.ts +5 -5
  219. package/tsconfig.json +10 -5
  220. package/tsconfig.package.json +1 -1
  221. package/lib/stores/QueryBuilderTestUtils.d.ts.map +0 -1
  222. package/lib/stores/QueryBuilderTestUtils.js.map +0 -1
  223. package/lib/stores/QueryBuilderValueSpecificationProcessor.d.ts +0 -56
  224. package/lib/stores/QueryBuilderValueSpecificationProcessor.d.ts.map +0 -1
  225. package/lib/stores/QueryBuilderValueSpecificationProcessor.js +0 -548
  226. package/lib/stores/QueryBuilderValueSpecificationProcessor.js.map +0 -1
  227. package/lib/stores/fetch-structure/projection/post-filter/QueryBuilderPostFilterValueSpecificationProcessor.d.ts.map +0 -1
  228. package/lib/stores/fetch-structure/projection/post-filter/QueryBuilderPostFilterValueSpecificationProcessor.js.map +0 -1
  229. package/lib/stores/filter/QueryBuilderValueSpecificationBuilder.d.ts.map +0 -1
  230. package/lib/stores/filter/QueryBuilderValueSpecificationBuilder.js.map +0 -1
  231. package/src/stores/QueryBuilderValueSpecificationProcessor.ts +0 -1254
@@ -15,38 +15,44 @@
15
15
  */
16
16
 
17
17
  import { observer } from 'mobx-react-lite';
18
- import {
19
- clsx,
20
- BlankPanelContent,
21
- PlusIcon,
22
- OptionsIcon,
23
- } from '@finos/legend-art';
18
+ import { clsx, BlankPanelContent } from '@finos/legend-art';
24
19
  import type { QueryBuilderState } from '../../stores/QueryBuilderState.js';
25
20
  import { prettyCONSTName } from '@finos/legend-shared';
26
21
  import { QueryBuilderProjectionPanel } from './QueryBuilderProjectionPanel.js';
27
22
  import { QueryBuilderGraphFetchTreePanel } from './QueryBuilderGraphFetchTreePanel.js';
28
- import { FETCH_STRUCTURE_MODE } from '../../stores/fetch-structure/QueryBuilderFetchStructureState.js';
29
- import { QueryBuilderPostFilterState } from '../../stores/fetch-structure/projection/post-filter/QueryBuilderPostFilterState.js';
30
- import {
31
- ActionAlertActionType,
32
- ActionAlertType,
33
- useApplicationStore,
34
- } from '@finos/legend-application';
35
23
  import { QueryBuilderProjectionState } from '../../stores/fetch-structure/projection/QueryBuilderProjectionState.js';
36
24
  import { QueryBuilderGraphFetchTreeState } from '../../stores/fetch-structure/graph-fetch/QueryBuilderGraphFetchTreeState.js';
37
25
  import { QueryBuilderPanelIssueCountBadge } from '../shared/QueryBuilderPanelIssueCountBadge.js';
26
+ import { FETCH_STRUCTURE_IMPLEMENTATION } from '../../stores/fetch-structure/QueryBuilderFetchStructureImplementationState.js';
38
27
 
39
- const QueryBuilderUnsupportedFetchStructure = observer(
40
- (props: { mode: FETCH_STRUCTURE_MODE }) => {
41
- const { mode } = props;
28
+ const QueryBuilderFetchStructureEditor = observer(
29
+ (props: { queryBuilderState: QueryBuilderState }) => {
30
+ const { queryBuilderState } = props;
31
+ const fetchStructureState = queryBuilderState.fetchStructureState;
32
+ const fetchStructureImplementation = fetchStructureState.implementation;
42
33
 
34
+ if (fetchStructureImplementation instanceof QueryBuilderProjectionState) {
35
+ return (
36
+ <QueryBuilderProjectionPanel
37
+ projectionState={fetchStructureImplementation}
38
+ />
39
+ );
40
+ } else if (
41
+ fetchStructureImplementation instanceof QueryBuilderGraphFetchTreeState
42
+ ) {
43
+ return (
44
+ <QueryBuilderGraphFetchTreePanel
45
+ graphFetchTreeState={fetchStructureImplementation}
46
+ />
47
+ );
48
+ }
43
49
  return (
44
50
  <div className="panel__content">
45
51
  <BlankPanelContent>
46
52
  <div className="query-builder__unsupported-view__main">
47
- <div className="query-builder__unsupported-view__summary">{`Unsupported fetch structure mode ${prettyCONSTName(
48
- mode,
49
- )}`}</div>
53
+ <div className="query-builder__unsupported-view__summary">
54
+ Unsupported fetch structure
55
+ </div>
50
56
  </div>
51
57
  </BlankPanelContent>
52
58
  </div>
@@ -58,138 +64,16 @@ export const QueryBuilderFetchStructurePanel = observer(
58
64
  (props: { queryBuilderState: QueryBuilderState }) => {
59
65
  const { queryBuilderState } = props;
60
66
  const fetchStructureState = queryBuilderState.fetchStructureState;
61
- const fetchStructureStateMode = fetchStructureState.fetchStructureMode;
62
- const applicationStore = useApplicationStore();
63
- const openResultSetModifierEditor = (): void =>
64
- queryBuilderState.fetchStructureState.projectionState.resultSetModifierState.setShowModal(
65
- true,
66
- );
67
- const addNewBlankDerivation = (): void =>
68
- fetchStructureState.projectionState.addNewBlankDerivation();
69
-
70
- const renderFetchMode = (): React.ReactNode => {
71
- switch (fetchStructureStateMode) {
72
- case FETCH_STRUCTURE_MODE.PROJECTION:
73
- return (
74
- <QueryBuilderProjectionPanel
75
- queryBuilderState={queryBuilderState}
76
- />
77
- );
78
- case FETCH_STRUCTURE_MODE.GRAPH_FETCH:
79
- return (
80
- <QueryBuilderGraphFetchTreePanel
81
- queryBuilderState={queryBuilderState}
82
- />
83
- );
84
- default:
85
- return (
86
- <QueryBuilderUnsupportedFetchStructure
87
- mode={fetchStructureStateMode}
88
- />
89
- );
90
- }
91
- };
92
67
 
93
- const onChangeFetchStructureMode =
94
- (fetchMode: FETCH_STRUCTURE_MODE): (() => void) =>
68
+ const onChangeFetchStructureImplementation =
69
+ (implementationType: FETCH_STRUCTURE_IMPLEMENTATION): (() => void) =>
95
70
  (): void => {
96
- const reset = (): void => {
97
- fetchStructureState.setFetchStructureMode(fetchMode);
98
- queryBuilderState.changeFetchStructure();
99
- queryBuilderState.fetchStructureState.projectionState.postFilterState =
100
- new QueryBuilderPostFilterState(
101
- queryBuilderState.fetchStructureState.projectionState,
102
- queryBuilderState.fetchStructureState.projectionState.postFilterOperators,
103
- );
104
- queryBuilderState.fetchStructureState.projectionState.setShowPostFilterPanel(
105
- false,
71
+ if (fetchStructureState.implementation.type !== implementationType) {
72
+ fetchStructureState.implementation.checkBeforeChangingImplementation(
73
+ () => {
74
+ fetchStructureState.changeImplementation(implementationType);
75
+ },
106
76
  );
107
- };
108
- if (fetchStructureState.fetchStructureMode !== fetchMode) {
109
- switch (fetchMode) {
110
- case FETCH_STRUCTURE_MODE.GRAPH_FETCH: {
111
- if (
112
- queryBuilderState.fetchStructureState.projectionState.columns
113
- .length > 0
114
- // NOTE: here we could potentially check for the presence of post-filter as well
115
- // but we make the assumption that if there is no projection column, there should
116
- // not be any post-filter at all
117
- ) {
118
- applicationStore.setActionAlertInfo({
119
- message:
120
- queryBuilderState.fetchStructureState.projectionState
121
- .showPostFilterPanel &&
122
- queryBuilderState.fetchStructureState.projectionState
123
- .postFilterState.nodes.size > 0
124
- ? 'With graph-fetch mode, post filter is not supported. Current projection columns and post filters will be lost when switching to the graph-fetch mode. Do you still want to proceed?'
125
- : 'Current projection columns will be lost when switching to the graph-fetch mode. Do you still want to proceed?',
126
- type: ActionAlertType.CAUTION,
127
- actions: [
128
- {
129
- label: 'Proceed',
130
- type: ActionAlertActionType.PROCEED_WITH_CAUTION,
131
- handler: applicationStore.guardUnhandledError(
132
- async () => {
133
- queryBuilderState.fetchStructureState.projectionState =
134
- new QueryBuilderProjectionState(
135
- queryBuilderState,
136
- queryBuilderState.fetchStructureState,
137
- );
138
- reset();
139
- },
140
- ),
141
- },
142
- {
143
- label: 'Cancel',
144
- type: ActionAlertActionType.PROCEED,
145
- default: true,
146
- },
147
- ],
148
- });
149
- } else {
150
- reset();
151
- }
152
- return;
153
- }
154
- case FETCH_STRUCTURE_MODE.PROJECTION: {
155
- if (
156
- queryBuilderState.fetchStructureState.graphFetchTreeState
157
- .treeData?.rootIds.length
158
- ) {
159
- applicationStore.setActionAlertInfo({
160
- message:
161
- 'Current graph-fetch will be lost when switching to projection mode. Do you still want to proceed?',
162
- type: ActionAlertType.CAUTION,
163
- actions: [
164
- {
165
- label: 'Proceed',
166
- type: ActionAlertActionType.PROCEED_WITH_CAUTION,
167
- handler: applicationStore.guardUnhandledError(
168
- async () => {
169
- queryBuilderState.fetchStructureState.graphFetchTreeState =
170
- new QueryBuilderGraphFetchTreeState(
171
- queryBuilderState,
172
- queryBuilderState.fetchStructureState,
173
- );
174
- reset();
175
- },
176
- ),
177
- },
178
- {
179
- label: 'Cancel',
180
- type: ActionAlertActionType.PROCEED,
181
- default: true,
182
- },
183
- ],
184
- });
185
- } else {
186
- reset();
187
- }
188
- return;
189
- }
190
- default:
191
- return;
192
- }
193
77
  }
194
78
  };
195
79
 
@@ -199,47 +83,29 @@ export const QueryBuilderFetchStructurePanel = observer(
199
83
  <div className="panel__header__title">
200
84
  <div className="panel__header__title__label">fetch structure</div>
201
85
  <QueryBuilderPanelIssueCountBadge
202
- issues={fetchStructureState.validationIssues}
86
+ issues={fetchStructureState.implementation.validationIssues}
203
87
  />
204
88
  </div>
205
89
  <div className="panel__header__actions">
206
- {fetchStructureStateMode === FETCH_STRUCTURE_MODE.PROJECTION && (
207
- <>
208
- <button
209
- className="panel__header__action"
210
- onClick={openResultSetModifierEditor}
211
- tabIndex={-1}
212
- title="Configure result set modifiers..."
213
- >
214
- <OptionsIcon className="query-builder__icon query-builder__icon__query-option" />
215
- </button>
216
- <button
217
- className="panel__header__action"
218
- onClick={addNewBlankDerivation}
219
- tabIndex={-1}
220
- title="Add a new derivation"
221
- >
222
- <PlusIcon />
223
- </button>
224
- </>
225
- )}
226
90
  <div className="query-builder__fetch__structure__modes">
227
- {Object.values(FETCH_STRUCTURE_MODE).map((fetchMode) => (
91
+ {Object.values(FETCH_STRUCTURE_IMPLEMENTATION).map((type) => (
228
92
  <button
229
- onClick={onChangeFetchStructureMode(fetchMode)}
93
+ onClick={onChangeFetchStructureImplementation(type)}
230
94
  className={clsx('query-builder__fetch__structure__mode', {
231
95
  'query-builder__fetch__structure__mode--selected':
232
- fetchMode === fetchStructureState.fetchStructureMode,
96
+ type === fetchStructureState.implementation.type,
233
97
  })}
234
- key={fetchMode}
98
+ key={type}
235
99
  >
236
- {prettyCONSTName(fetchMode)}
100
+ {prettyCONSTName(type)}
237
101
  </button>
238
102
  ))}
239
103
  </div>
240
104
  </div>
241
105
  </div>
242
- {renderFetchMode()}
106
+ <QueryBuilderFetchStructureEditor
107
+ queryBuilderState={queryBuilderState}
108
+ />
243
109
  </div>
244
110
  );
245
111
  },
@@ -30,7 +30,6 @@ import {
30
30
  InfoCircleIcon,
31
31
  PanelDropZone,
32
32
  } from '@finos/legend-art';
33
- import type { QueryBuilderState } from '../../stores/QueryBuilderState.js';
34
33
  import { QUERY_BUILDER_TEST_ID } from '../QueryBuilder_TestID.js';
35
34
  import { isNonNullable } from '@finos/legend-shared';
36
35
  import {
@@ -168,7 +167,7 @@ export const QueryBuilderGraphFetchTreeExplorer = observer(
168
167
 
169
168
  return (
170
169
  <div className="query-builder-graph-fetch-tree">
171
- <div className="query-builder-graph-fetch-tree__settings">
170
+ <div className="query-builder-graph-fetch-tree__toolbar">
172
171
  <div
173
172
  className={clsx('panel__content__form__section__toggler')}
174
173
  onClick={toggleChecked}
@@ -184,7 +183,7 @@ export const QueryBuilderGraphFetchTreeExplorer = observer(
184
183
  <div className="panel__content__form__section__toggler__prompt">
185
184
  Check graph fetch
186
185
  </div>
187
- <div className="query-builder-graph-fetch-tree__settings__hint-icon">
186
+ <div className="query-builder-graph-fetch-tree__toolbar__hint-icon">
188
187
  <InfoCircleIcon title="With this enabled, while executing, violations of constraints will reported as part of the result, rather than causing a failure" />
189
188
  </div>
190
189
  </div>
@@ -209,23 +208,21 @@ export const QueryBuilderGraphFetchTreeExplorer = observer(
209
208
  );
210
209
 
211
210
  export const QueryBuilderGraphFetchTreePanel = observer(
212
- (props: { queryBuilderState: QueryBuilderState }) => {
213
- const { queryBuilderState } = props;
214
- const fetchStructureState = queryBuilderState.fetchStructureState;
215
- const graphFetchState = fetchStructureState.graphFetchTreeState;
216
- const treeData = graphFetchState.treeData;
211
+ (props: { graphFetchTreeState: QueryBuilderGraphFetchTreeState }) => {
212
+ const { graphFetchTreeState } = props;
213
+ const treeData = graphFetchTreeState.treeData;
217
214
 
218
215
  // Deep/Graph Fetch Tree
219
216
  const updateTreeData = (data: QueryBuilderGraphFetchTreeData): void => {
220
- graphFetchState.setGraphFetchTree(data);
217
+ graphFetchTreeState.setGraphFetchTree(data);
221
218
  };
222
219
 
223
220
  // Drag and Drop
224
221
  const handleDrop = useCallback(
225
222
  (item: QueryBuilderExplorerTreeDragSource): void => {
226
- graphFetchState.addProperty(item.node);
223
+ graphFetchTreeState.addProperty(item.node, { refreshTreeData: true });
227
224
  },
228
- [graphFetchState],
225
+ [graphFetchTreeState],
229
226
  );
230
227
  const [{ isDragOver }, dropTargetConnector] = useDrop<
231
228
  QueryBuilderExplorerTreeDragSource,
@@ -266,7 +263,7 @@ export const QueryBuilderGraphFetchTreePanel = observer(
266
263
  )}
267
264
  {treeData && !isGraphFetchTreeDataEmpty(treeData) && (
268
265
  <QueryBuilderGraphFetchTreeExplorer
269
- graphFetchState={graphFetchState}
266
+ graphFetchState={graphFetchTreeState}
270
267
  treeData={treeData}
271
268
  isReadOnly={false}
272
269
  updateTreeData={updateTreeData}
@@ -51,6 +51,7 @@ import {
51
51
  DragPreviewLayer,
52
52
  PanelEntryDropZonePlaceholder,
53
53
  useDragPreviewLayer,
54
+ BlankPanelContent,
54
55
  } from '@finos/legend-art';
55
56
  import {
56
57
  type Type,
@@ -98,18 +99,18 @@ import {
98
99
  import { QUERY_BUILDER_TEST_ID } from '../QueryBuilder_TestID.js';
99
100
  import { isTypeCompatibleForAssignment } from '../../stores/QueryBuilderValueSpecificationHelper.js';
100
101
  import { QUERY_BUILDER_GROUP_OPERATION } from '../../stores/QueryBuilderGroupOperationHelper.js';
102
+ import { QueryBuilderProjectionState } from '../../stores/fetch-structure/projection/QueryBuilderProjectionState.js';
101
103
 
102
104
  const QueryBuilderPostFilterConditionContextMenu = observer(
103
105
  forwardRef<
104
106
  HTMLDivElement,
105
107
  {
106
- queryBuilderState: QueryBuilderState;
108
+ projectionState: QueryBuilderProjectionState;
107
109
  node: QueryBuilderPostFilterTreeNodeData;
108
110
  }
109
111
  >(function QueryBuilderPostFilterConditionContextMenu(props, ref) {
110
- const { queryBuilderState, node } = props;
111
- const postFilterState =
112
- queryBuilderState.fetchStructureState.projectionState.postFilterState;
112
+ const { projectionState, node } = props;
113
+ const postFilterState = projectionState.postFilterState;
113
114
  const removeNode = (): void =>
114
115
  postFilterState.removeNodeAndPruneBranch(node);
115
116
  const createCondition = (): void => {
@@ -549,18 +550,17 @@ const QueryBuilderPostFilterTreeNodeContainer = observer(
549
550
  props: TreeNodeContainerProps<
550
551
  QueryBuilderPostFilterTreeNodeData,
551
552
  {
552
- queryBuilderState: QueryBuilderState;
553
+ projectionState: QueryBuilderProjectionState;
553
554
  }
554
555
  >,
555
556
  ) => {
556
557
  const { node, level, stepPaddingInRem, onNodeSelect, innerProps } = props;
557
- const { queryBuilderState } = innerProps;
558
+ const { projectionState: projectionState } = innerProps;
558
559
  const ref = useRef<HTMLDivElement>(null);
559
560
  const [isSelectedFromContextMenu, setIsSelectedFromContextMenu] =
560
561
  useState(false);
561
562
  const applicationStore = useApplicationStore();
562
- const postFilterState =
563
- queryBuilderState.fetchStructureState.projectionState.postFilterState;
563
+ const postFilterState = projectionState.postFilterState;
564
564
  const isExpandable =
565
565
  node instanceof QueryBuilderPostFilterTreeGroupNodeData;
566
566
  const selectNode = (): void => onNodeSelect?.(node);
@@ -671,7 +671,7 @@ const QueryBuilderPostFilterTreeNodeContainer = observer(
671
671
  <ContextMenu
672
672
  content={
673
673
  <QueryBuilderPostFilterConditionContextMenu
674
- queryBuilderState={queryBuilderState}
674
+ projectionState={projectionState}
675
675
  node={node}
676
676
  />
677
677
  }
@@ -760,7 +760,7 @@ const QueryBuilderPostFilterTreeNodeView = observer(
760
760
  props: TreeNodeViewProps<
761
761
  QueryBuilderPostFilterTreeNodeData,
762
762
  {
763
- queryBuilderState: QueryBuilderState;
763
+ projectionState: QueryBuilderProjectionState;
764
764
  }
765
765
  >,
766
766
  ) => {
@@ -798,10 +798,9 @@ const QueryBuilderPostFilterTreeNodeView = observer(
798
798
  );
799
799
 
800
800
  const QueryBuilderPostFilterTree = observer(
801
- (props: { queryBuilderState: QueryBuilderState }) => {
802
- const { queryBuilderState } = props;
803
- const postFilterState =
804
- queryBuilderState.fetchStructureState.projectionState.postFilterState;
801
+ (props: { projectionState: QueryBuilderProjectionState }) => {
802
+ const { projectionState } = props;
803
+ const postFilterState = projectionState.postFilterState;
805
804
  const rootNodes = postFilterState.rootIds.map((rootId) =>
806
805
  postFilterState.getNode(rootId),
807
806
  );
@@ -827,7 +826,7 @@ const QueryBuilderPostFilterTree = observer(
827
826
  getChildNodes={getChildNodes}
828
827
  onNodeSelect={onNodeSelect}
829
828
  innerProps={{
830
- queryBuilderState,
829
+ projectionState: projectionState,
831
830
  }}
832
831
  />
833
832
  ))}
@@ -837,12 +836,11 @@ const QueryBuilderPostFilterTree = observer(
837
836
  },
838
837
  );
839
838
 
840
- export const QueryBuilderPostFilterPanel = observer(
841
- (props: { queryBuilderState: QueryBuilderState }) => {
842
- const { queryBuilderState } = props;
839
+ const QueryBuilderPostFilterPanelContent = observer(
840
+ (props: { projectionState: QueryBuilderProjectionState }) => {
841
+ const { projectionState } = props;
843
842
  const applicationStore = useApplicationStore();
844
- const postFilterState =
845
- queryBuilderState.fetchStructureState.projectionState.postFilterState;
843
+ const postFilterState = projectionState.postFilterState;
846
844
  const rootNode = postFilterState.getRootNode();
847
845
  // actions
848
846
  const collapseTree = (): void => {
@@ -902,7 +900,7 @@ export const QueryBuilderPostFilterPanel = observer(
902
900
  const columnState = (item as QueryBuilderProjectionColumnDragSource)
903
901
  .columnState;
904
902
  const aggregateColumnState =
905
- queryBuilderState.fetchStructureState.projectionState.aggregationState.columns.find(
903
+ projectionState.aggregationState.columns.find(
906
904
  (column) => column.projectionColumnState === columnState,
907
905
  );
908
906
  if (
@@ -940,8 +938,7 @@ export const QueryBuilderPostFilterPanel = observer(
940
938
  [
941
939
  applicationStore,
942
940
  postFilterState,
943
- queryBuilderState.fetchStructureState.projectionState.aggregationState
944
- .columns,
941
+ projectionState.aggregationState.columns,
945
942
  ],
946
943
  );
947
944
  const [{ isDragOver }, dropTargetConnector] = useDrop<
@@ -962,10 +959,11 @@ export const QueryBuilderPostFilterPanel = observer(
962
959
  }),
963
960
  [applicationStore, handleDrop],
964
961
  );
962
+
965
963
  return (
966
964
  <div
967
965
  data-testid={QUERY_BUILDER_TEST_ID.QUERY_BUILDER_POST_FILTER}
968
- className="panel query-builder__filter"
966
+ className="panel"
969
967
  >
970
968
  <div className="panel__header">
971
969
  <div className="panel__header__title">
@@ -1037,7 +1035,7 @@ export const QueryBuilderPostFilterPanel = observer(
1037
1035
  </button>
1038
1036
  </div>
1039
1037
  </div>
1040
- <div className="panel__content query-builder__filter__content">
1038
+ <div className="panel__content">
1041
1039
  <PanelDropZone
1042
1040
  isDragOver={isDragOver}
1043
1041
  dropTargetConnector={dropTargetConnector}
@@ -1056,9 +1054,7 @@ export const QueryBuilderPostFilterPanel = observer(
1056
1054
  ): string => item.node.dragPreviewLabel}
1057
1055
  types={Object.values(QUERY_BUILDER_POST_FILTER_DND_TYPE)}
1058
1056
  />
1059
- <QueryBuilderPostFilterTree
1060
- queryBuilderState={queryBuilderState}
1061
- />
1057
+ <QueryBuilderPostFilterTree projectionState={projectionState} />
1062
1058
  </>
1063
1059
  )}
1064
1060
  </PanelDropZone>
@@ -1067,3 +1063,41 @@ export const QueryBuilderPostFilterPanel = observer(
1067
1063
  );
1068
1064
  },
1069
1065
  );
1066
+
1067
+ export const QueryBuilderPostFilterPanel = observer(
1068
+ (props: { queryBuilderState: QueryBuilderState }) => {
1069
+ const { queryBuilderState } = props;
1070
+ const fetchStructureImplementation =
1071
+ queryBuilderState.fetchStructureState.implementation;
1072
+
1073
+ return (
1074
+ <div
1075
+ data-testid={QUERY_BUILDER_TEST_ID.QUERY_BUILDER_POST_FILTER}
1076
+ className="panel"
1077
+ >
1078
+ {fetchStructureImplementation instanceof
1079
+ QueryBuilderProjectionState && (
1080
+ <QueryBuilderPostFilterPanelContent
1081
+ projectionState={fetchStructureImplementation}
1082
+ />
1083
+ )}
1084
+ {!(
1085
+ fetchStructureImplementation instanceof QueryBuilderProjectionState
1086
+ ) && (
1087
+ <>
1088
+ <div className="panel__header">
1089
+ <div className="panel__header__title">
1090
+ <div className="panel__header__title__label">post-filter</div>
1091
+ </div>
1092
+ </div>
1093
+ <div className="panel__content">
1094
+ <BlankPanelContent>
1095
+ Post-filter is not supported for the current fetch-structure
1096
+ </BlankPanelContent>
1097
+ </div>
1098
+ </>
1099
+ )}
1100
+ </div>
1101
+ );
1102
+ },
1103
+ );