ngx-t-forms 2.0.27 → 2.0.29

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 (295) hide show
  1. package/README.md +2 -1
  2. package/fesm2022/{ngx-t-forms-calculated-field-rules.component-Cs_Lhz_D.mjs → ngx-t-forms-calculated-field-rules.component-D-SBMdYg.mjs} +12 -12
  3. package/fesm2022/{ngx-t-forms-calculated-field-rules.component-Cs_Lhz_D.mjs.map → ngx-t-forms-calculated-field-rules.component-D-SBMdYg.mjs.map} +1 -1
  4. package/fesm2022/{ngx-t-forms-chip-options-creator-editor.component-DkTpG5yQ.mjs → ngx-t-forms-chip-options-creator-editor.component-1cpszpPN.mjs} +7 -7
  5. package/fesm2022/{ngx-t-forms-chip-options-creator-editor.component-DkTpG5yQ.mjs.map → ngx-t-forms-chip-options-creator-editor.component-1cpszpPN.mjs.map} +1 -1
  6. package/fesm2022/{ngx-t-forms-config-mscoa-additional-inputs.component-DJ9d3Oy9.mjs → ngx-t-forms-config-mscoa-additional-inputs.component-DFdAVWTg.mjs} +9 -11
  7. package/fesm2022/ngx-t-forms-config-mscoa-additional-inputs.component-DFdAVWTg.mjs.map +1 -0
  8. package/fesm2022/{ngx-t-forms-data-source-picker.component-CFQ_GVPG.mjs → ngx-t-forms-data-source-picker.component-DxORinAD.mjs} +10 -11
  9. package/fesm2022/ngx-t-forms-data-source-picker.component-DxORinAD.mjs.map +1 -0
  10. package/fesm2022/{ngx-t-forms-document-list-label-config-editor.component-CPF_BLRA.mjs → ngx-t-forms-document-list-label-config-editor.component-DcWS1txl.mjs} +9 -11
  11. package/fesm2022/ngx-t-forms-document-list-label-config-editor.component-DcWS1txl.mjs.map +1 -0
  12. package/fesm2022/ngx-t-forms-form-input-selector.component-B2QEnvkq.mjs +134 -0
  13. package/fesm2022/ngx-t-forms-form-input-selector.component-B2QEnvkq.mjs.map +1 -0
  14. package/fesm2022/{ngx-t-forms-form-json-view.component-C7i6JZ-l.mjs → ngx-t-forms-form-json-view.component-DePf44w6.mjs} +5 -5
  15. package/fesm2022/{ngx-t-forms-form-json-view.component-C7i6JZ-l.mjs.map → ngx-t-forms-form-json-view.component-DePf44w6.mjs.map} +1 -1
  16. package/fesm2022/ngx-t-forms-form-section-stepper.component-BTkcSjg7.mjs +270 -0
  17. package/fesm2022/ngx-t-forms-form-section-stepper.component-BTkcSjg7.mjs.map +1 -0
  18. package/fesm2022/{ngx-t-forms-forms-builder-menu.component-G3Agd-vE.mjs → ngx-t-forms-forms-builder-menu.component-Wamzf_sq.mjs} +27 -31
  19. package/fesm2022/ngx-t-forms-forms-builder-menu.component-Wamzf_sq.mjs.map +1 -0
  20. package/fesm2022/ngx-t-forms-input-editor.component-D4xHO76K.mjs +147 -0
  21. package/fesm2022/ngx-t-forms-input-editor.component-D4xHO76K.mjs.map +1 -0
  22. package/fesm2022/ngx-t-forms-map-mat-options-keys-CbdW82su.mjs +124 -0
  23. package/fesm2022/ngx-t-forms-map-mat-options-keys-CbdW82su.mjs.map +1 -0
  24. package/fesm2022/{ngx-t-forms-mat-chip-list-editor.component-dIY3BX1u.mjs → ngx-t-forms-mat-chip-list-editor.component-DmTyO9Wi.mjs} +9 -10
  25. package/fesm2022/ngx-t-forms-mat-chip-list-editor.component-DmTyO9Wi.mjs.map +1 -0
  26. package/fesm2022/{ngx-t-forms-mat-slider-editor.component-yMRCg8fo.mjs → ngx-t-forms-mat-slider-editor.component-DZ4TenrI.mjs} +5 -6
  27. package/fesm2022/ngx-t-forms-mat-slider-editor.component-DZ4TenrI.mjs.map +1 -0
  28. package/fesm2022/{ngx-t-forms-mat-slider-toggle-editor.component-0aUVP9A6.mjs → ngx-t-forms-mat-slider-toggle-editor.component-DPyBYE4p.mjs} +5 -5
  29. package/fesm2022/{ngx-t-forms-mat-slider-toggle-editor.component-0aUVP9A6.mjs.map → ngx-t-forms-mat-slider-toggle-editor.component-DPyBYE4p.mjs.map} +1 -1
  30. package/fesm2022/ngx-t-forms-missing-form-configs.component-BRmnwAK6.mjs +28 -0
  31. package/fesm2022/{ngx-t-forms-missing-form-configs.component-CsPMQZqg.mjs.map → ngx-t-forms-missing-form-configs.component-BRmnwAK6.mjs.map} +1 -1
  32. package/fesm2022/{ngx-t-forms-mscoa-chart-toolbar.component-D8a9-6lt.mjs → ngx-t-forms-mscoa-chart-toolbar.component-D_umeAPL.mjs} +7 -7
  33. package/fesm2022/{ngx-t-forms-mscoa-chart-toolbar.component-D8a9-6lt.mjs.map → ngx-t-forms-mscoa-chart-toolbar.component-D_umeAPL.mjs.map} +1 -1
  34. package/fesm2022/{ngx-t-forms-mscoa-error-display.component-DwbyXd_D.mjs → ngx-t-forms-mscoa-error-display.component-CSX2NCNU.mjs} +7 -7
  35. package/fesm2022/{ngx-t-forms-mscoa-error-display.component-DwbyXd_D.mjs.map → ngx-t-forms-mscoa-error-display.component-CSX2NCNU.mjs.map} +1 -1
  36. package/fesm2022/{ngx-t-forms-mscoa-segment-config.component-BXPghOuH.mjs → ngx-t-forms-mscoa-segment-config.component-B6IF8kGg.mjs} +11 -14
  37. package/fesm2022/ngx-t-forms-mscoa-segment-config.component-B6IF8kGg.mjs.map +1 -0
  38. package/fesm2022/{ngx-t-forms-mscoa-temporary-hint.component-CBRfWvfD.mjs → ngx-t-forms-mscoa-temporary-hint.component-BPkjsRmH.mjs} +6 -6
  39. package/fesm2022/{ngx-t-forms-mscoa-temporary-hint.component-CBRfWvfD.mjs.map → ngx-t-forms-mscoa-temporary-hint.component-BPkjsRmH.mjs.map} +1 -1
  40. package/fesm2022/{ngx-t-forms-ngx-t-forms-CD9InaXz.mjs → ngx-t-forms-ngx-t-forms-D9qmig6g.mjs} +1784 -783
  41. package/fesm2022/ngx-t-forms-ngx-t-forms-D9qmig6g.mjs.map +1 -0
  42. package/fesm2022/{ngx-t-forms-pipeline-generator.component-QE-I58e4.mjs → ngx-t-forms-pipeline-generator.component-DBJEyCbd.mjs} +21 -45
  43. package/fesm2022/ngx-t-forms-pipeline-generator.component-DBJEyCbd.mjs.map +1 -0
  44. package/fesm2022/{ngx-t-forms-record-list-manager.component-D4wlLtdc.mjs → ngx-t-forms-record-list-manager.component-Dgs9lNSr.mjs} +9 -10
  45. package/fesm2022/ngx-t-forms-record-list-manager.component-Dgs9lNSr.mjs.map +1 -0
  46. package/fesm2022/{ngx-t-forms-required-inputs.component-BoqmVDp2.mjs → ngx-t-forms-required-inputs.component-CSIJvSHq.mjs} +10 -12
  47. package/fesm2022/ngx-t-forms-required-inputs.component-CSIJvSHq.mjs.map +1 -0
  48. package/fesm2022/{ngx-t-forms-rest-api-call-setup.component-CtfudSGT.mjs → ngx-t-forms-rest-api-call-setup.component-CY-JSkGs.mjs} +14 -18
  49. package/fesm2022/ngx-t-forms-rest-api-call-setup.component-CY-JSkGs.mjs.map +1 -0
  50. package/fesm2022/{ngx-t-forms-section-report.component-Dntm1m5b.mjs → ngx-t-forms-section-report.component-12-KdKT6.mjs} +11 -11
  51. package/fesm2022/{ngx-t-forms-section-report.component-Dntm1m5b.mjs.map → ngx-t-forms-section-report.component-12-KdKT6.mjs.map} +1 -1
  52. package/fesm2022/{ngx-t-forms-selection-options-editor.component-Cc_qCtW2.mjs → ngx-t-forms-selection-options-editor.component-Be3QAG_L.mjs} +11 -12
  53. package/fesm2022/ngx-t-forms-selection-options-editor.component-Be3QAG_L.mjs.map +1 -0
  54. package/fesm2022/{ngx-t-forms-t-workflow-picker.component-xvX8t0pu.mjs → ngx-t-forms-t-workflow-picker.component-a4f1r8gH.mjs} +12 -12
  55. package/fesm2022/{ngx-t-forms-t-workflow-picker.component-xvX8t0pu.mjs.map → ngx-t-forms-t-workflow-picker.component-a4f1r8gH.mjs.map} +1 -1
  56. package/fesm2022/{ngx-t-forms-validators-config.component-D6JG1p81.mjs → ngx-t-forms-validators-config.component-B3j9Dmgu.mjs} +13 -15
  57. package/fesm2022/ngx-t-forms-validators-config.component-B3j9Dmgu.mjs.map +1 -0
  58. package/fesm2022/ngx-t-forms.mjs +1 -1
  59. package/package.json +10 -8
  60. package/types/ngx-t-forms.d.ts +962 -0
  61. package/fesm2022/ngx-t-forms-config-mscoa-additional-inputs.component-DJ9d3Oy9.mjs.map +0 -1
  62. package/fesm2022/ngx-t-forms-data-source-picker.component-CFQ_GVPG.mjs.map +0 -1
  63. package/fesm2022/ngx-t-forms-document-list-label-config-editor.component-CPF_BLRA.mjs.map +0 -1
  64. package/fesm2022/ngx-t-forms-form-input-selector.component-C38FXT55.mjs +0 -132
  65. package/fesm2022/ngx-t-forms-form-input-selector.component-C38FXT55.mjs.map +0 -1
  66. package/fesm2022/ngx-t-forms-form-section-stepper.component-CJz0yr78.mjs +0 -264
  67. package/fesm2022/ngx-t-forms-form-section-stepper.component-CJz0yr78.mjs.map +0 -1
  68. package/fesm2022/ngx-t-forms-forms-builder-menu.component-G3Agd-vE.mjs.map +0 -1
  69. package/fesm2022/ngx-t-forms-input-editor.component-B12zbXE1.mjs +0 -147
  70. package/fesm2022/ngx-t-forms-input-editor.component-B12zbXE1.mjs.map +0 -1
  71. package/fesm2022/ngx-t-forms-mat-chip-list-editor.component-dIY3BX1u.mjs.map +0 -1
  72. package/fesm2022/ngx-t-forms-mat-slider-editor.component-yMRCg8fo.mjs.map +0 -1
  73. package/fesm2022/ngx-t-forms-missing-form-configs.component-CsPMQZqg.mjs +0 -28
  74. package/fesm2022/ngx-t-forms-mscoa-segment-config.component-BXPghOuH.mjs.map +0 -1
  75. package/fesm2022/ngx-t-forms-ngx-t-forms-CD9InaXz.mjs.map +0 -1
  76. package/fesm2022/ngx-t-forms-pipeline-generator.component-QE-I58e4.mjs.map +0 -1
  77. package/fesm2022/ngx-t-forms-record-list-manager.component-D4wlLtdc.mjs.map +0 -1
  78. package/fesm2022/ngx-t-forms-required-inputs.component-BoqmVDp2.mjs.map +0 -1
  79. package/fesm2022/ngx-t-forms-rest-api-call-setup.component-CtfudSGT.mjs.map +0 -1
  80. package/fesm2022/ngx-t-forms-selection-options-editor.component-Cc_qCtW2.mjs.map +0 -1
  81. package/fesm2022/ngx-t-forms-validators-config.component-D6JG1p81.mjs.map +0 -1
  82. package/index.d.ts +0 -5
  83. package/lib/components/dialog-template/dialog-template.component.d.ts +0 -10
  84. package/lib/components/form-builder/elements/default-element/default-element.component.d.ts +0 -12
  85. package/lib/components/form-builder/elements/form-json-view/form-json-view.component.d.ts +0 -9
  86. package/lib/components/form-builder/elements/form-section-stepper/form-section-stepper.component.d.ts +0 -72
  87. package/lib/components/form-builder/elements/form-submissions-config/config.d.ts +0 -18
  88. package/lib/components/form-builder/elements/form-submissions-config/form-submissions-config.component.d.ts +0 -61
  89. package/lib/components/form-builder/elements/forms-builder-menu/forms-builder-menu.component.d.ts +0 -55
  90. package/lib/components/form-builder/elements/input-editor/input-editor.component.d.ts +0 -18
  91. package/lib/components/form-builder/elements/input-element-editor/input-element-editor.component.d.ts +0 -109
  92. package/lib/components/form-builder/elements/missing-form-configs/missing-form-configs.component.d.ts +0 -12
  93. package/lib/components/form-builder/elements/section-report/section-report.component.d.ts +0 -23
  94. package/lib/components/form-builder/elements/select-form-template/select-form-template.component.d.ts +0 -22
  95. package/lib/components/form-builder/form-builder.component.d.ts +0 -29
  96. package/lib/components/forms/forms.component.d.ts +0 -52
  97. package/lib/components/forms/functions/cloneCopyFormInput.d.ts +0 -3
  98. package/lib/components/forms/functions/elementBlur.d.ts +0 -2
  99. package/lib/components/forms/functions/elementConfigurationChanged.d.ts +0 -2
  100. package/lib/components/forms/functions/findFormInput.d.ts +0 -2
  101. package/lib/components/forms/functions/formHttpSubmissions.d.ts +0 -6
  102. package/lib/components/forms/functions/selectInputTemplate.d.ts +0 -3
  103. package/lib/components/forms/store/Form-actions-formBuilder.d.ts +0 -36
  104. package/lib/components/forms/store/Form-selectors-FormBuilder.d.ts +0 -74
  105. package/lib/components/forms/store/Forms-Actions.d.ts +0 -75
  106. package/lib/components/forms/store/Forms-Effects.d.ts +0 -20
  107. package/lib/components/forms/store/Forms-selectors.d.ts +0 -3
  108. package/lib/components/forms/store/forms-store.service.d.ts +0 -222
  109. package/lib/components/index.d.ts +0 -13
  110. package/lib/components/t-dynamic-data-edit/elements/api-value-access-rules/api-value-access-rules.component.d.ts +0 -79
  111. package/lib/components/t-dynamic-data-edit/elements/api-value-access-rules/elements/data-tree/data-tree.component.d.ts +0 -56
  112. package/lib/components/t-dynamic-data-edit/elements/api-value-access-rules/elements/validation-expressio-creator/validation-expressio-creator.component.d.ts +0 -50
  113. package/lib/components/t-dynamic-data-edit/elements/api-value-access-rules/functions/convertDataToTree.d.ts +0 -52
  114. package/lib/components/t-dynamic-data-edit/elements/api-value-access-rules/functions/extractNodeFromTree.d.ts +0 -3
  115. package/lib/components/t-dynamic-data-edit/elements/api-value-access-rules/functions/validateExpression.d.ts +0 -6
  116. package/lib/components/t-dynamic-data-edit/elements/calculated-field-rules/calculated-field-rules.component.d.ts +0 -80
  117. package/lib/components/t-dynamic-data-edit/elements/chip-options-creator-editor/chip-options-creator-editor.component.d.ts +0 -53
  118. package/lib/components/t-dynamic-data-edit/elements/config-mscoa-additional-inputs/config-mscoa-additional-inputs.component.d.ts +0 -73
  119. package/lib/components/t-dynamic-data-edit/elements/data-source-picker/data-source-picker.component.d.ts +0 -57
  120. package/lib/components/t-dynamic-data-edit/elements/document-list-label-config-editor/document-list-label-config-editor.component.d.ts +0 -69
  121. package/lib/components/t-dynamic-data-edit/elements/form-input-selector/form-input-selector.component.d.ts +0 -48
  122. package/lib/components/t-dynamic-data-edit/elements/json-editor/json-editor.component.d.ts +0 -54
  123. package/lib/components/t-dynamic-data-edit/elements/mat-chip-list-editor/mat-chip-list-editor.component.d.ts +0 -49
  124. package/lib/components/t-dynamic-data-edit/elements/mat-slider-editor/mat-slider-editor.component.d.ts +0 -44
  125. package/lib/components/t-dynamic-data-edit/elements/mat-slider-toggle-editor/mat-slider-toggle-editor.component.d.ts +0 -48
  126. package/lib/components/t-dynamic-data-edit/elements/mscoa-segment-config/mscoa-segment-config.component.d.ts +0 -80
  127. package/lib/components/t-dynamic-data-edit/elements/pipeline-generator/elements/aggregate-stage-editor/aggregate-stage-editor.component.d.ts +0 -33
  128. package/lib/components/t-dynamic-data-edit/elements/pipeline-generator/pipeline-generator.component.d.ts +0 -92
  129. package/lib/components/t-dynamic-data-edit/elements/postman-collections/functions/convertPostmanCollectionToTree.d.ts +0 -4
  130. package/lib/components/t-dynamic-data-edit/elements/postman-collections/functions/filterCollectionItems.d.ts +0 -3
  131. package/lib/components/t-dynamic-data-edit/elements/postman-collections/functions/methodColors.d.ts +0 -1
  132. package/lib/components/t-dynamic-data-edit/elements/postman-collections/postman-collections.component.d.ts +0 -28
  133. package/lib/components/t-dynamic-data-edit/elements/record-list-manager/record-list-manager.component.d.ts +0 -75
  134. package/lib/components/t-dynamic-data-edit/elements/required-inputs/required-inputs.component.d.ts +0 -58
  135. package/lib/components/t-dynamic-data-edit/elements/rest-api-call-setup/rest-api-call-setup.component.d.ts +0 -46
  136. package/lib/components/t-dynamic-data-edit/elements/selection-options-editor/selection-options-editor.component.d.ts +0 -79
  137. package/lib/components/t-dynamic-data-edit/elements/t-workflow-picker/t-workflow-picker.component.d.ts +0 -59
  138. package/lib/components/t-dynamic-data-edit/elements/validators-config/validators-config.component.d.ts +0 -60
  139. package/lib/components/t-dynamic-data-edit/functions/testData.d.ts +0 -2
  140. package/lib/components/t-dynamic-data-edit/t-dynamic-data-edit.component.d.ts +0 -61
  141. package/lib/components/t-dynamic-data-view/t-dynamic-data-view.component.d.ts +0 -14
  142. package/lib/components/t-form-input/elements/Geo-location-form-input/elements/geo-location-form-input/geo-location-form-input.component.d.ts +0 -17
  143. package/lib/components/t-form-input/elements/Geo-location-form-input/functions/getGeoLocation.d.ts +0 -2
  144. package/lib/components/t-form-input/elements/Geo-location-form-input/geo-location.component.d.ts +0 -14
  145. package/lib/components/t-form-input/elements/auto-complete-input-element/auto-complete-input-element.component.d.ts +0 -13
  146. package/lib/components/t-form-input/elements/auto-complete-input-element/core/auto-complet-reactive-input/auto-complet-reactive-input.component.d.ts +0 -19
  147. package/lib/components/t-form-input/elements/basic-input-input-element/basic-input-input-element.component.d.ts +0 -17
  148. package/lib/components/t-form-input/elements/basic-input-input-element/core/input-custom/input-custom.component.d.ts +0 -18
  149. package/lib/components/t-form-input/elements/date-picker-input-element/core/date-picker-reactive-input/date-picker-reactive-input.component.d.ts +0 -16
  150. package/lib/components/t-form-input/elements/date-picker-input-element/date-picker-input-element.component.d.ts +0 -12
  151. package/lib/components/t-form-input/elements/date-range-picker-input-element/core/date-range-picker-reactive-input/date-range-picker-reactive-input.component.d.ts +0 -17
  152. package/lib/components/t-form-input/elements/date-range-picker-input-element/date-range-picker-input-element.component.d.ts +0 -33
  153. package/lib/components/t-form-input/elements/document-picker/core/document-picker-reactive-input/document-picker-reactive-input.component.d.ts +0 -47
  154. package/lib/components/t-form-input/elements/document-picker/document-picker.component.d.ts +0 -14
  155. package/lib/components/t-form-input/elements/editor-input-element/core/editor-js-input/editor-js-input.component.d.ts +0 -22
  156. package/lib/components/t-form-input/elements/editor-input-element/core/form-input-rich-text-editor/config.d.ts +0 -10
  157. package/lib/components/t-form-input/elements/editor-input-element/editor-input-element.component.d.ts +0 -13
  158. package/lib/components/t-form-input/elements/file-upload-input-element/core/file-uploader/camera-functions.d.ts +0 -3
  159. package/lib/components/t-form-input/elements/file-upload-input-element/core/file-uploader/file-uploader.component.d.ts +0 -30
  160. package/lib/components/t-form-input/elements/file-upload-input-element/file-upload-input-element.component.d.ts +0 -13
  161. package/lib/components/t-form-input/elements/image-capture-input-element/core/camera-capture/camera-capture.component.d.ts +0 -27
  162. package/lib/components/t-form-input/elements/image-capture-input-element/image-capture-input-element.component.d.ts +0 -12
  163. package/lib/components/t-form-input/elements/mscoa-form-input/elements/account-value/account-value.component.d.ts +0 -41
  164. package/lib/components/t-form-input/elements/mscoa-form-input/elements/mscoa-chart/components/mscoa-chart-input-menu/mscoa-chart-input-menu.component.d.ts +0 -23
  165. package/lib/components/t-form-input/elements/mscoa-form-input/elements/mscoa-chart/components/mscoa-chart-toolbar/mscoa-chart-toolbar.component.d.ts +0 -22
  166. package/lib/components/t-form-input/elements/mscoa-form-input/elements/mscoa-chart/components/mscoa-error-display/mscoa-error-display.component.d.ts +0 -34
  167. package/lib/components/t-form-input/elements/mscoa-form-input/elements/mscoa-chart/components/mscoa-temporary-hint/mscoa-temporary-hint.component.d.ts +0 -21
  168. package/lib/components/t-form-input/elements/mscoa-form-input/elements/mscoa-chart/extractCols.d.ts +0 -22
  169. package/lib/components/t-form-input/elements/mscoa-form-input/elements/mscoa-chart/mscoa-chart.component.d.ts +0 -336
  170. package/lib/components/t-form-input/elements/mscoa-form-input/elements/mscoa-chart/utils/mscoa-chart.constants.d.ts +0 -47
  171. package/lib/components/t-form-input/elements/mscoa-form-input/elements/mscoa-chart/utils/mscoa-chart.helpers.d.ts +0 -87
  172. package/lib/components/t-form-input/elements/mscoa-form-input/elements/mscoa-chart/utils/mscoa-chart.types.d.ts +0 -51
  173. package/lib/components/t-form-input/elements/mscoa-form-input/elements/mscoa-chart/utils/mscoa-message-formatter.d.ts +0 -87
  174. package/lib/components/t-form-input/elements/mscoa-form-input/elements/mscoa-computation/mscoa-computation.component.d.ts +0 -189
  175. package/lib/components/t-form-input/elements/mscoa-form-input/elements/mscoa-reactive-form-field/mscoa-reactive-form-field.component.d.ts +0 -34
  176. package/lib/components/t-form-input/elements/mscoa-form-input/elements/scoa-account-table/scoa-account-table.component.d.ts +0 -89
  177. package/lib/components/t-form-input/elements/mscoa-form-input/elements/scoa-input/scoa-input.component.d.ts +0 -27
  178. package/lib/components/t-form-input/elements/mscoa-form-input/mscoa-form-input.component.d.ts +0 -15
  179. package/lib/components/t-form-input/elements/mscoa-form-input/store/accountConstants.d.ts +0 -10
  180. package/lib/components/t-form-input/elements/mscoa-form-input/store/mscoa-actions.d.ts +0 -30
  181. package/lib/components/t-form-input/elements/mscoa-form-input/store/mscoa-component-store.service.d.ts +0 -100
  182. package/lib/components/t-form-input/elements/mscoa-form-input/store/mscoa-effects.d.ts +0 -9
  183. package/lib/components/t-form-input/elements/mscoa-form-input/store/mscoa-selectors.d.ts +0 -60
  184. package/lib/components/t-form-input/elements/multiple-input-input-element/core/multiple-input-table/multiple-input-table.component.d.ts +0 -48
  185. package/lib/components/t-form-input/elements/multiple-input-input-element/core/multiple-input-table-edit/multiple-input-table-edit.component.d.ts +0 -51
  186. package/lib/components/t-form-input/elements/multiple-input-input-element/core/multiple-input-table-view/multiple-input-table-view.component.d.ts +0 -47
  187. package/lib/components/t-form-input/elements/multiple-input-input-element/functions/getListCalculated.d.ts +0 -2
  188. package/lib/components/t-form-input/elements/multiple-input-input-element/multiple-input-input-element.component.d.ts +0 -15
  189. package/lib/components/t-form-input/elements/section-title/section-title.component.d.ts +0 -7
  190. package/lib/components/t-form-input/elements/select-input-element/elements/select-input/select-input.component.d.ts +0 -27
  191. package/lib/components/t-form-input/elements/select-input-element/select-input-element.component.d.ts +0 -18
  192. package/lib/components/t-form-input/elements/signature-input-element/config/signature.d.ts +0 -2
  193. package/lib/components/t-form-input/elements/signature-input-element/core/signature-pad-input/functions/getSignatureImage.d.ts +0 -3
  194. package/lib/components/t-form-input/elements/signature-input-element/core/signature-pad-input/signature-pad-input.component.d.ts +0 -40
  195. package/lib/components/t-form-input/elements/signature-input-element/signature-input-element.component.d.ts +0 -12
  196. package/lib/components/t-form-input/elements/textarea-input-element/core/text-area-reactive-input/text-area-reactive-input.component.d.ts +0 -19
  197. package/lib/components/t-form-input/elements/textarea-input-element/textarea-input-element.component.d.ts +0 -12
  198. package/lib/components/t-form-input/elements/toggle-input-element/core/toggle/toggle.component.d.ts +0 -16
  199. package/lib/components/t-form-input/elements/toggle-input-element/toggle-input-element.component.d.ts +0 -12
  200. package/lib/components/t-form-input/elements/workflow-adjudication/elements/point-assignment/elements/point-assignment-dialog/point-assignment-dialog.component.d.ts +0 -41
  201. package/lib/components/t-form-input/elements/workflow-adjudication/elements/point-assignment/point-assignment.component.d.ts +0 -44
  202. package/lib/components/t-form-input/elements/workflow-adjudication/elements/points-creation/points-creation.component.d.ts +0 -31
  203. package/lib/components/t-form-input/elements/workflow-adjudication/elements/submission-review/elements/submission-review-dialog/submission-review-dialog.component.d.ts +0 -27
  204. package/lib/components/t-form-input/elements/workflow-adjudication/elements/submission-review/submission-review.component.d.ts +0 -79
  205. package/lib/components/t-form-input/elements/workflow-adjudication/elements/supplier-selection/supplier-selection.component.d.ts +0 -33
  206. package/lib/components/t-form-input/elements/workflow-adjudication/elements/workflow-adjudication-reactive-input/workflow-adjudication-reactive-input.component.d.ts +0 -19
  207. package/lib/components/t-form-input/elements/workflow-adjudication/workflow-adjudication.component.d.ts +0 -14
  208. package/lib/components/t-form-input/t-form-input.component.d.ts +0 -21
  209. package/lib/components/t-form-input-status/t-form-input-status.component.d.ts +0 -11
  210. package/lib/components/user-form-stepper/user-form-stepper.component.d.ts +0 -38
  211. package/lib/injection-tokens/index.d.ts +0 -14
  212. package/lib/ngx-t-forms.component.d.ts +0 -5
  213. package/lib/ngx-t-forms.service.d.ts +0 -6
  214. package/lib/services/core/t-form-builder/functions/addFormInputToForm.d.ts +0 -8
  215. package/lib/services/core/t-form-builder/functions/addMultipleInputFunction.d.ts +0 -2
  216. package/lib/services/core/t-form-builder/functions/addNewSection.d.ts +0 -2
  217. package/lib/services/core/t-form-builder/functions/addScoaExtensionInput.d.ts +0 -2
  218. package/lib/services/core/t-form-builder/functions/deleteSection.d.ts +0 -3
  219. package/lib/services/core/t-form-builder/functions/formCanSave.d.ts +0 -3
  220. package/lib/services/core/t-form-builder/functions/inputElementEditorConfigs.d.ts +0 -127
  221. package/lib/services/core/t-form-builder/functions/moveFormInput.d.ts +0 -4
  222. package/lib/services/core/t-form-builder/functions/moveInputToDiffSection.d.ts +0 -2
  223. package/lib/services/core/t-form-builder/functions/multipleInputToggleLabel.d.ts +0 -2
  224. package/lib/services/core/t-form-builder/functions/removeItem.d.ts +0 -8
  225. package/lib/services/core/t-form-builder/functions/sectionDrop.d.ts +0 -3
  226. package/lib/services/core/t-form-builder/functions/stepTitleChangeStep.d.ts +0 -15
  227. package/lib/services/core/t-form-controller/function/calculateInputValue.d.ts +0 -11
  228. package/lib/services/core/t-form-controller/function/getApiDataFetching.d.ts +0 -4
  229. package/lib/services/core/t-form-controller/function/getInputSourcedValue.d.ts +0 -4
  230. package/lib/services/core/t-form-controller/function/multipleFormInputsMapValueToFormInputId.d.ts +0 -2
  231. package/lib/services/core/t-form-controller/function/postApiDataFetching.d.ts +0 -16
  232. package/lib/services/core/t-form-controller/function/validateMinInputForPostRequest.d.ts +0 -8
  233. package/lib/services/core/t-form-environment-injection/functions/provideNgxTforms.d.ts +0 -3
  234. package/lib/services/core/t-form-section-controller/Functions/commonFormOperations.d.ts +0 -21
  235. package/lib/services/core/t-form-section-controller/Functions/errorResolver.d.ts +0 -7
  236. package/lib/services/core/t-form-section-controller/Functions/formGenerator.d.ts +0 -29
  237. package/lib/services/core/t-form-section-controller/Functions/getValueFromPathMap.d.ts +0 -4
  238. package/lib/services/core/t-form-tower-controller/form-tower-controller.service.d.ts +0 -103
  239. package/lib/services/core/t-form-tower-controller/functions/allFormInputs.d.ts +0 -2
  240. package/lib/services/core/t-form-tower-controller/functions/createEmptyForm.d.ts +0 -2
  241. package/lib/services/core/t-form-tower-controller/functions/extractInitFunctions.d.ts +0 -8
  242. package/lib/services/core/t-form-tower-controller/functions/getAllFunctionTypes.d.ts +0 -14
  243. package/lib/services/core/t-form-tower-controller/functions/getFormValue.d.ts +0 -4
  244. package/lib/services/core/t-form-tower-controller/functions/getSubmissionStatus.d.ts +0 -7
  245. package/lib/services/core/t-form-tower-controller/functions/handleStepChange.d.ts +0 -3
  246. package/lib/services/core/t-form-tower-controller/functions/multipleInputRowIDControllInput.d.ts +0 -2
  247. package/lib/services/core/t-form-tower-controller/functions/prePoPulateForm.d.ts +0 -2
  248. package/lib/services/core/t-form-tower-controller/functions/runMultipleInputPrepopulationFunctions.d.ts +0 -11
  249. package/lib/services/core/t-form-tower-controller/functions/saveMultipleInputForm.d.ts +0 -10
  250. package/lib/services/core/t-form-tower-controller/functions/selectFormSteps.d.ts +0 -9
  251. package/lib/services/core/t-form-tower-controller/functions/setControlTempErrors.d.ts +0 -3
  252. package/lib/services/core/t-form-tower-controller/functions/setInputAsTouchedAndDirty.d.ts +0 -2
  253. package/lib/services/core/t-form-tower-controller/functions/setInputError.d.ts +0 -5
  254. package/lib/services/core/t-form-tower-controller/functions/setInputStatus.d.ts +0 -3
  255. package/lib/services/core/t-form-tower-controller/functions/setSectionAsSeen.d.ts +0 -3
  256. package/lib/services/core/t-form-tower-controller/functions/startTowerFormChangesEventListener.d.ts +0 -10
  257. package/lib/services/core/t-form-tower-controller/functions/toggleMultipleInput.d.ts +0 -5
  258. package/lib/services/core/t-form-tower-controller/functions/updateChangeHistory.d.ts +0 -2
  259. package/lib/services/core/t-form-tower-controller/functions/updateFormInputConfig.d.ts +0 -13
  260. package/lib/services/core/t-form-tower-controller/functions/updateValue.d.ts +0 -2
  261. package/lib/services/core/t-input-controller/functions/baseCustomInput.d.ts +0 -105
  262. package/lib/services/core/t-input-controller/functions/colorCoding.d.ts +0 -24
  263. package/lib/services/core/t-input-controller/functions/configureCols.d.ts +0 -5
  264. package/lib/services/core/t-input-controller/functions/generateInputSecret.d.ts +0 -2
  265. package/lib/services/core/t-input-controller/functions/inputErrorMessage.d.ts +0 -3
  266. package/lib/services/core/tour/tour-manager.service.d.ts +0 -18
  267. package/lib/services/hhtpResources/Pipeline/pipeline.service.d.ts +0 -80
  268. package/lib/services/index.d.ts +0 -7
  269. package/lib/shared/functions/assignDeepPropertyToObject.d.ts +0 -1
  270. package/lib/shared/functions/camelize.d.ts +0 -6
  271. package/lib/shared/functions/convertElementEditorTypesToInputType.d.ts +0 -3
  272. package/lib/shared/functions/createFileUploadSample.d.ts +0 -10
  273. package/lib/shared/functions/daysAgoTransform.d.ts +0 -1
  274. package/lib/shared/functions/enryption.d.ts +0 -9
  275. package/lib/shared/functions/evaluateArrayAccessRules.d.ts +0 -14
  276. package/lib/shared/functions/fuzzyTextSearch.d.ts +0 -4
  277. package/lib/shared/functions/getAvatar.d.ts +0 -1
  278. package/lib/shared/functions/getDeepObject.d.ts +0 -138
  279. package/lib/shared/functions/getInputIllustration.d.ts +0 -2
  280. package/lib/shared/functions/getPipedValueFromDataType.d.ts +0 -2
  281. package/lib/shared/functions/getformInputsSampleValue.d.ts +0 -10
  282. package/lib/shared/functions/isEqual.d.ts +0 -12
  283. package/lib/shared/functions/mapColors.d.ts +0 -1
  284. package/lib/shared/functions/migrationCheck.d.ts +0 -3
  285. package/lib/shared/functions/replaceUrlVariables.d.ts +0 -2
  286. package/lib/shared/functions/searchArray.d.ts +0 -1
  287. package/lib/shared/functions/textIconsForUserHints.d.ts +0 -21
  288. package/lib/shared/index.d.ts +0 -10
  289. package/lib/shared/modules/mat-modules.module.d.ts +0 -50
  290. package/lib/shared/modules/stringJsonValidator/getObjectValidations.d.ts +0 -16
  291. package/lib/shared/pipes/date/days-ago.pipe.d.ts +0 -12
  292. package/lib/shared/pipes/format-Data.pipe.d.ts +0 -8
  293. package/lib/shared/pipes/index.d.ts +0 -2
  294. package/lib/shared/pipes/list-search.pipe.d.ts +0 -7
  295. package/public-api.d.ts +0 -7
@@ -1,4 +1,4 @@
1
- import * as i2$4 from '@angular/common';
1
+ import * as i2$2 from '@angular/common';
2
2
  import { CommonModule } from '@angular/common';
3
3
  import * as i0 from '@angular/core';
4
4
  import { EventEmitter, Output, Input, Component, inject, Injectable, ElementRef, ViewChild, HostBinding, Optional, Self } from '@angular/core';
@@ -6,23 +6,23 @@ import * as i1 from '@angular/forms';
6
6
  import { FormsModule } from '@angular/forms';
7
7
  import { Subscription, BehaviorSubject, switchMap, map, take, catchError, finalize, throwError, tap, combineLatest, filter, Subject, takeUntil, distinctUntilChanged } from 'rxjs';
8
8
  import PipelineBuilder from 'db-aggregation-pipeline-builder';
9
- import { M as MatModulesModule, J as JsonEditorComponent, N as NGX_T_FORMS_CONFIG_TOKEN, b as TDynamicDataViewComponent, D as DaysAgoPipe } from './ngx-t-forms-ngx-t-forms-CD9InaXz.mjs';
9
+ import { M as MatModulesModule, J as JsonEditorComponent, N as NGX_T_FORMS_CONFIG_TOKEN, b as TDynamicDataViewComponent, D as DaysAgoPipe } from './ngx-t-forms-ngx-t-forms-D9qmig6g.mjs';
10
10
  import * as i2 from '@angular/material/autocomplete';
11
11
  import * as i2$1 from '@angular/material/button';
12
12
  import * as i3 from '@angular/material/card';
13
13
  import * as i4 from '@angular/material/divider';
14
- import * as i2$2 from '@angular/material/icon';
15
- import * as i2$3 from '@angular/material/select';
16
- import * as i8 from '@angular/material/tooltip';
17
- import { TWorkflowPickerComponent } from './ngx-t-forms-t-workflow-picker.component-xvX8t0pu.mjs';
14
+ import * as i3$1 from '@angular/material/icon';
15
+ import * as i3$2 from '@angular/material/select';
16
+ import * as i4$1 from '@angular/material/tooltip';
17
+ import { TWorkflowPickerComponent } from './ngx-t-forms-t-workflow-picker.component-a4f1r8gH.mjs';
18
18
  import { MatFormFieldControl } from '@angular/material/form-field';
19
19
  import { HttpClient } from '@angular/common/http';
20
- import * as i10$1 from '@angular/cdk/overlay';
20
+ import * as i10 from '@angular/cdk/overlay';
21
21
  import { OverlayModule } from '@angular/cdk/overlay';
22
22
  import * as i5 from '@angular/material/expansion';
23
23
  import * as i7 from '@angular/material/list';
24
- import * as i3$1 from '@angular/material/progress-spinner';
25
- import * as i10 from '@angular/material/toolbar';
24
+ import * as i7$1 from '@angular/material/progress-spinner';
25
+ import * as i5$1 from '@angular/material/toolbar';
26
26
 
27
27
  class AggregateStageEditorComponent {
28
28
  ngOnDestroy() {
@@ -76,7 +76,6 @@ class AggregateStageEditorComponent {
76
76
  const { config, stage } = this.activeStage || {};
77
77
  // Check if config and stage are defined
78
78
  if (!config && config !== 0 || !stage) {
79
- console.error('Config or stage is not defined', config, stage);
80
79
  this.activeStage.valid = false;
81
80
  return; // Early exit if validation fails
82
81
  }
@@ -93,7 +92,6 @@ class AggregateStageEditorComponent {
93
92
  // Catch and handle errors from validation
94
93
  this.configValidationError = error.message || JSON.stringify(error) || 'An unknown error occurred';
95
94
  this.activeStage.valid = false;
96
- console.error('Validation Error:', this.configValidationError);
97
95
  }
98
96
  }
99
97
  canSaveConfig() {
@@ -117,10 +115,10 @@ class AggregateStageEditorComponent {
117
115
  deleteActive() {
118
116
  this.deleteStage.emit();
119
117
  }
120
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: AggregateStageEditorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
121
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.17", type: AggregateStageEditorComponent, isStandalone: true, selector: "app-aggregate-stage-editor", inputs: { selectedStage: "selectedStage", isRunningPipeline: "isRunningPipeline" }, outputs: { saveStage: "saveStage", deleteStage: "deleteStage" }, ngImport: i0, template: "<mat-card style=\"margin-bottom:8px\">\n <mat-card-content>\n\n <h5>\n Aggregate Pipeline Stage Configuration\n </h5>\n\n\n\n <mat-form-field style=\" margin-bottom: 8px;\" appearance=\"outline\" subscriptSizing=\"dynamic\" >\n <mat-label>Select Aggregate Stage</mat-label>\n <mat-select matNativeControl [value]=\"selectedStage?.name\" (selectionChange)=\"handleChange($event)\"\n placeholder=\"ChooseFunctionToRun\">\n <mat-option *ngFor=\"let stage of allowedStages; trackBy: trackByStage\" [value]=\"stage.stage\">\n {{stage.stage}}</mat-option>\n\n\n\n </mat-select>\n <mat-hint>\n {{activeDescription ?\n 'Hover over the info icon to view stage details .'\n : 'Please select an aggregation function from the list.'}}\n </mat-hint>\n <mat-hint *ngIf=\"activeDescription\" align=\"end\">\n <mat-icon matTooltipHideDelay=\"1000\" [matTooltip]=\"activeDescription\" matSuffix>info</mat-icon>\n </mat-hint>\n </mat-form-field>\n\n\n\n <div class=\"tree-instructions\" style=\"background: cornsilk;\" *ngIf=\"configValidationError\">\n <mat-icon style=\"margin-top: 4px;margin-bottom:auto\" class=\"info-icon\" color=\"warn\">warning</mat-icon>\n <span>{{ configValidationError }}</span>\n </div>\n\n\n\n\n\n <div class=\"config-container\" *ngIf=\"activeStage ||selectedStage?.config\">\n <app-json-editor [value]=\"selectedStage?.config\" (valueChange)=\"handleConfigChange($event)\"></app-json-editor>\n </div>\n\n <br>\n\n\n\n </mat-card-content>\n <mat-divider>\n </mat-divider>\n <mat-card-actions>\n\n <span class=\"spacer\"></span>\n <button color=\"warn\" [disabled]=\"isRunningPipeline\" mat-button (click)=\"deleteActive()\">\n Delete\n <mat-icon >delete</mat-icon>\n </button>\n <button style=\"margin-left:8px;\" color=\"primary\" mat-flat-button (click)=\"saveConfiguration()\"\n [disabled]=\"isRunningPipeline ||!activeStage?.valid \">\n Save\n <mat-icon> save</mat-icon>\n </button>\n </mat-card-actions>\n</mat-card>", styles: [".title-icon{margin-right:8px;vertical-align:middle}.tree-instructions{display:flex;align-items:center;gap:8px;padding:12px;background:var(--mdc-elevated-card-container-color, var(--mat-app-surface-container-low));border-radius:4px;margin-bottom:16px}.info-icon{min-width:38px!important;display:block}mat-form-field{min-width:100%;background:azure}.stageDescription{background:azure}.stage-button-container{display:flex;gap:4px;width:fit-content;align-items:center}.tree-instructions{display:flex;align-items:center;gap:8px;padding:12px;background:azure;border-radius:4px;margin-bottom:16px}.info-icon{min-width:38px;margin:8px auto auto}\n"], dependencies: [{ kind: "ngmodule", type: MatModulesModule }, { kind: "component", type: i2.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "component", type: i2$1.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i3.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i3.MatCardActions, selector: "mat-card-actions", inputs: ["align"], exportAs: ["matCardActions"] }, { kind: "directive", type: i3.MatCardContent, selector: "mat-card-content" }, { kind: "component", type: i4.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "component", type: i2$2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i2$3.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i2$3.MatLabel, selector: "mat-label" }, { kind: "directive", type: i2$3.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i2$3.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "component", type: i2$3.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth", "canSelectNullableOptions"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "directive", type: i8.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2$4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2$4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: FormsModule }, { kind: "component", type: JsonEditorComponent, selector: "app-json-editor", inputs: ["value"], outputs: ["valueChange"] }] }); }
118
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.5", ngImport: i0, type: AggregateStageEditorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
119
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.1.5", type: AggregateStageEditorComponent, isStandalone: true, selector: "app-aggregate-stage-editor", inputs: { selectedStage: "selectedStage", isRunningPipeline: "isRunningPipeline" }, outputs: { saveStage: "saveStage", deleteStage: "deleteStage" }, ngImport: i0, template: "<mat-card style=\"margin-bottom:8px\">\n <mat-card-content>\n\n <h5>\n Aggregate Pipeline Stage Configuration\n </h5>\n\n\n\n <mat-form-field style=\" margin-bottom: 8px;\" appearance=\"outline\" subscriptSizing=\"dynamic\" >\n <mat-label>Select Aggregate Stage</mat-label>\n <mat-select matNativeControl [value]=\"selectedStage?.name\" (selectionChange)=\"handleChange($event)\"\n placeholder=\"ChooseFunctionToRun\">\n <mat-option *ngFor=\"let stage of allowedStages; trackBy: trackByStage\" [value]=\"stage.stage\">\n {{stage.stage}}</mat-option>\n\n\n\n </mat-select>\n <mat-hint>\n {{activeDescription ?\n 'Hover over the info icon to view stage details .'\n : 'Please select an aggregation function from the list.'}}\n </mat-hint>\n <mat-hint *ngIf=\"activeDescription\" align=\"end\">\n <mat-icon matTooltipHideDelay=\"1000\" [matTooltip]=\"activeDescription\" matSuffix>info</mat-icon>\n </mat-hint>\n </mat-form-field>\n\n\n\n <div class=\"tree-instructions\" style=\"background: cornsilk;\" *ngIf=\"configValidationError\">\n <mat-icon style=\"margin-top: 4px;margin-bottom:auto\" class=\"info-icon\" color=\"warn\">warning</mat-icon>\n <span>{{ configValidationError }}</span>\n </div>\n\n\n\n\n\n <div class=\"config-container\" *ngIf=\"activeStage ||selectedStage?.config\">\n <app-json-editor [value]=\"selectedStage?.config\" (valueChange)=\"handleConfigChange($event)\"></app-json-editor>\n </div>\n\n <br>\n\n\n\n </mat-card-content>\n <mat-divider>\n </mat-divider>\n <mat-card-actions>\n\n <span class=\"spacer\"></span>\n <button color=\"warn\" [disabled]=\"isRunningPipeline\" mat-button (click)=\"deleteActive()\">\n Delete\n <mat-icon >delete</mat-icon>\n </button>\n <button style=\"margin-left:8px;\" color=\"primary\" mat-flat-button (click)=\"saveConfiguration()\"\n [disabled]=\"isRunningPipeline ||!activeStage?.valid \">\n Save\n <mat-icon> save</mat-icon>\n </button>\n </mat-card-actions>\n</mat-card>", styles: [".title-icon{margin-right:8px;vertical-align:middle}.tree-instructions{display:flex;align-items:center;gap:8px;padding:12px;background:var(--mdc-elevated-card-container-color, var(--mat-app-surface-container-low));border-radius:4px;margin-bottom:16px}.info-icon{min-width:38px!important;display:block}mat-form-field{min-width:100%;background:azure}.stageDescription{background:azure}.stage-button-container{display:flex;gap:4px;width:fit-content;align-items:center}.tree-instructions{display:flex;align-items:center;gap:8px;padding:12px;background:azure;border-radius:4px;margin-bottom:16px}.info-icon{min-width:38px;margin:8px auto auto}\n"], dependencies: [{ kind: "ngmodule", type: MatModulesModule }, { kind: "component", type: i2.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "component", type: i2$1.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i3.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i3.MatCardActions, selector: "mat-card-actions", inputs: ["align"], exportAs: ["matCardActions"] }, { kind: "directive", type: i3.MatCardContent, selector: "mat-card-content" }, { kind: "component", type: i4.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "component", type: i3$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i3$2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3$2.MatLabel, selector: "mat-label" }, { kind: "directive", type: i3$2.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i3$2.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "component", type: i3$2.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth", "canSelectNullableOptions"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "directive", type: i4$1.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2$2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: FormsModule }, { kind: "component", type: JsonEditorComponent, selector: "app-json-editor", inputs: ["value"], outputs: ["valueChange"] }] }); }
122
120
  }
123
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: AggregateStageEditorComponent, decorators: [{
121
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.5", ngImport: i0, type: AggregateStageEditorComponent, decorators: [{
124
122
  type: Component,
125
123
  args: [{ selector: 'app-aggregate-stage-editor', standalone: true, imports: [
126
124
  MatModulesModule,
@@ -199,7 +197,6 @@ class PipelineService {
199
197
  * @param error The error response from the HTTP request
200
198
  */
201
199
  handleError(error) {
202
- console.error('An error occurred', error);
203
200
  // Return an observable with a user-facing error message
204
201
  return throwError(() => new Error('Something went wrong with the pipeline generation; please try again later.'));
205
202
  }
@@ -226,7 +223,6 @@ class PipelineService {
226
223
  ? "Document schema is missing. Please ensure at least one document exists for the selected workflow."
227
224
  : undefined;
228
225
  this.schemaLoadError$.next(error);
229
- console.log("Workflow schema loaded,run pipeline");
230
226
  this.runActivePipeline();
231
227
  }), catchError((error) => {
232
228
  this.schemaLoadError$.next("Error loading schema");
@@ -247,20 +243,14 @@ class PipelineService {
247
243
  }
248
244
  onTextChange(event) {
249
245
  this.prompt$.next(event);
250
- console.log(event);
251
246
  }
252
247
  promptSubmit() {
253
248
  // Use combineLatest to fetch the latest values from multiple sources
254
249
  combineLatest([this.schema$, this.threadId$, this.pipeline$, this.prompt$, this.chatHistory$])
255
- .pipe(take(1), tap(([schema, threadId, pipeline, prompt, history]) => {
256
- if (!schema || !prompt) {
257
- console.warn(`Missing values: schema ${schema} prompt ${prompt}`);
258
- }
259
- }), filter(([schema, , , prompt]) => !!schema && !!prompt), switchMap(([schema, threadId, pipeline, prompt, history]) => {
250
+ .pipe(take(1), tap(() => { }), filter(([schema, , , prompt]) => !!schema && !!prompt), switchMap(([schema, threadId, pipeline, prompt, history]) => {
260
251
  // Use a shallow copy of the pipeline
261
252
  const previousError = history[history.length - 1]?.assistance?.error;
262
253
  const pipelineCopy = pipeline.map(stage => JSON.parse(JSON.stringify(stage))) || [];
263
- console.info('Generating pipeline with prompt:', prompt, 'schema:', schema, 'threadId:', threadId, 'pipeline:', pipeline);
264
254
  return this.generatePipeline(prompt, schema, threadId, pipelineCopy, previousError).pipe(map((response) => ({ ...response, history, prompt })));
265
255
  }), tap((response) => {
266
256
  const { pipeline, threadId, history, prompt } = response;
@@ -276,10 +266,8 @@ class PipelineService {
276
266
  // Store threadID locally
277
267
  localStorage.setItem('threadId', threadId);
278
268
  // Run the active pipeline after all state updates are complete
279
- console.log("prompt submitted run pipeline");
280
269
  this.runActivePipeline();
281
270
  }), catchError((error) => {
282
- console.error('Error response:', error.message || error);
283
271
  return this.handleError(error);
284
272
  })).subscribe();
285
273
  }
@@ -292,8 +280,7 @@ class PipelineService {
292
280
  try {
293
281
  PipelineBuilder.validatePipeline(pipeline);
294
282
  }
295
- catch (error) {
296
- console.error(error, pipeline);
283
+ catch {
297
284
  return;
298
285
  }
299
286
  const workflowId = this.workflowId$.getValue();
@@ -303,7 +290,6 @@ class PipelineService {
303
290
  this.runPipeLine(pipeline, workflowId).pipe(take(1), tap(({ results }) => {
304
291
  this.pipeLineResult$.next(results);
305
292
  }), catchError((error) => {
306
- console.error('Error response:', error);
307
293
  const err = JSON.parse(JSON.stringify(error));
308
294
  const errorMessage = err.error;
309
295
  if (errorMessage) {
@@ -343,10 +329,8 @@ class PipelineService {
343
329
  }
344
330
  return s;
345
331
  });
346
- console.log("newPipeline", newPipeline);
347
332
  this.pipeline$.next(newPipeline);
348
333
  this.activeStage$.next(undefined);
349
- console.log("stage saved run pipeline");
350
334
  this.runActivePipeline();
351
335
  }
352
336
  deleteStage(index) {
@@ -355,10 +339,8 @@ class PipelineService {
355
339
  return;
356
340
  }
357
341
  const newPipeline = pipeline.filter((s, i) => i !== index);
358
- console.log("newPipeline", newPipeline);
359
342
  this.pipeline$.next(newPipeline);
360
343
  this.activeStage$.next(undefined);
361
- console.log("stage deleted run pipeline");
362
344
  this.runActivePipeline();
363
345
  }
364
346
  get pipelineGeneralValid() {
@@ -382,10 +364,10 @@ class PipelineService {
382
364
  };
383
365
  }));
384
366
  }
385
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: PipelineService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
386
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: PipelineService, providedIn: 'root' }); }
367
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.5", ngImport: i0, type: PipelineService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
368
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.1.5", ngImport: i0, type: PipelineService, providedIn: 'root' }); }
387
369
  }
388
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: PipelineService, decorators: [{
370
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.5", ngImport: i0, type: PipelineService, decorators: [{
389
371
  type: Injectable,
390
372
  args: [{
391
373
  providedIn: 'root'
@@ -423,7 +405,6 @@ class PipelineGeneratorComponent {
423
405
  name: this._workflowName || 'Unnamed Pipeline',
424
406
  "source": "mongoPipeline",
425
407
  };
426
- console.log('Pipeline config changed', newConfig);
427
408
  this.valueChanged.emit(newConfig);
428
409
  });
429
410
  };
@@ -457,7 +438,6 @@ class PipelineGeneratorComponent {
457
438
  this.stateChanges.next();
458
439
  }
459
440
  markAsTouched() {
460
- console.log('markAsTouched');
461
441
  if (!this.touched) {
462
442
  this.onTouched();
463
443
  this.touched = true;
@@ -472,7 +452,6 @@ class PipelineGeneratorComponent {
472
452
  if (value?.workflowId) {
473
453
  this.workflowChanged(value?.workflowId);
474
454
  }
475
- console.log('Pipeline value changed', value, this.pipeline.pipeline$.value);
476
455
  if (value?.pipeline) {
477
456
  this.pipeline.pipeline$.next(value?.pipeline || []);
478
457
  }
@@ -518,7 +497,6 @@ class PipelineGeneratorComponent {
518
497
  return this.pipeline.activeStage$.asObservable();
519
498
  }
520
499
  get activeStage() {
521
- console.log(this.pipeline.activeStage);
522
500
  return this.pipeline.activeStage;
523
501
  }
524
502
  get isRunningPipeline() {
@@ -537,7 +515,6 @@ class PipelineGeneratorComponent {
537
515
  if (!this.textareaElementRef?.nativeElement) {
538
516
  return;
539
517
  }
540
- console.log('onTextChange', event);
541
518
  const newValue = event.target.value;
542
519
  const textarea = this.textareaElementRef.nativeElement;
543
520
  this.cursorPosition = textarea.selectionStart || 0;
@@ -577,7 +554,6 @@ class PipelineGeneratorComponent {
577
554
  }
578
555
  promptSubmit() {
579
556
  this.pipeline.promptSubmit();
580
- console.log('promptSubmit');
581
557
  }
582
558
  setActiveStage(index) {
583
559
  this.pipeline.setActiveStage(index);
@@ -595,10 +571,10 @@ class PipelineGeneratorComponent {
595
571
  this.pipeline.saveStage(index, stage);
596
572
  this.setActiveStage(undefined);
597
573
  }
598
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: PipelineGeneratorComponent, deps: [{ token: i1.NgControl, optional: true, self: true }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
599
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.17", type: PipelineGeneratorComponent, isStandalone: true, selector: "app-pipeline-generator", inputs: { disabled: "disabled", value: "value", getWorkflowOptions: "getWorkflowOptions", userName: "userName", errors: "errors" }, outputs: { valueChanged: "valueChanged" }, host: { properties: { "id": "this.id" } }, providers: [{ provide: MatFormFieldControl, useExisting: PipelineGeneratorComponent }], viewQueries: [{ propertyName: "textareaElementRef", first: true, predicate: ["textarea"], descendants: true, read: ElementRef }], ngImport: i0, template: "\r\n\r\n\r\n<section class=\"ion-margin\">\r\n <p>MongoDB aggregation pipeline builder for selected workflows. </p>\r\n</section>\r\n<lib-t-workflow-picker \r\n(valueChanged)=\"workflowChanged($event)\"\r\n(workflowNameChanged)=\"workflowNameChanged($event)\" \r\n[getWorkflowOptions]=\" workflows$\"\r\n [value]=\"(workflowId|async)||undefined\">\r\n</lib-t-workflow-picker>\r\n<mat-accordion multi *ngIf=\"workflowId|async\">\r\n <!-- Pipeline Accordion -->\r\n <mat-expansion-panel value=\"pipeline\">\r\n <mat-expansion-panel-header>\r\n <mat-panel-title>\r\n <mat-spinner color=\"accent\" *ngIf=\"isRunningPipeline\" class=\"header-spinner\"></mat-spinner>\r\n <mat-icon class=\"title-icon\">\r\n dynamic_form\r\n </mat-icon>\r\n {{isRunningPipeline?'Executing current Data pipeline...':'Data retrieval pipeline'}}\r\n </mat-panel-title>\r\n\r\n </mat-expansion-panel-header>\r\n <div class=\"content\">\r\n <!-- Mongodb aggregate pipelione stages management and edit start-->\r\n <div *ngIf=\"((stages | async)?.length || 0) ===0\" class=\"tree-instructions\">\r\n <mat-icon class=\"info-icon\" color=\"primary\">info</mat-icon>\r\n <span>\r\n Add stages to the pipeline below.<br>\r\n Each stage processes input documents by filtering, grouping, or calculating values. The output documents from\r\n one stage are passed to the next stage in the pipeline.\r\n </span>\r\n </div>\r\n\r\n <mat-nav-list style=\" background: var(--mat-tree-container-background-color);padding:0px;border-radius:8px\">\r\n\r\n\r\n <ng-container *ngFor=\"let stage of stages | async; trackBy: trackById;index as $index;last as isLast\">\r\n <mat-list-item [style.margin-top]=\"(activeStageIndex|async) ===$index?'4px':'0px'\"\r\n [class.mat-elevation-z8]=\"(activeStageIndex|async) ===$index\" class=\"stage-item\"\r\n (click)=\"setActiveStage($index)\" [activated]=\" (activeStageIndex|async) ===$index\">\r\n <span class=\"stage-index\" matListItemAvatar>{{$index + 1}} </span>\r\n <div matListItemTitle>\r\n <div style=\"line-height: normal;\">\r\n {{ stage.name || 'Stage ' }}\r\n </div>\r\n <div class=\"stage-inner-message\" *ngIf=\"!stage.name && (activeStageIndex|async) !==$index \">\r\n Incomplete , click to edit\r\n </div>\r\n\r\n </div>\r\n\r\n <button *ngIf=\"(activeStageIndex|async) ===$index||!stage.valid && (activeStageIndex|async) !==$index\"\r\n mat-icon-button matListItemMeta>\r\n <mat-icon color=\"primary\" *ngIf=\"(activeStageIndex|async) ===$index\">check_circle</mat-icon>\r\n\r\n <mat-icon color=\"warn\" *ngIf=\"!stage.valid && (activeStageIndex|async) !==$index\">\r\n warning\r\n </mat-icon>\r\n </button>\r\n </mat-list-item>\r\n <mat-divider></mat-divider>\r\n\r\n <app-aggregate-stage-editor [selectedStage]=\"stage\" [isRunningPipeline]=\"isRunningPipeline\"\r\n (deleteStage)=\"deleteStage($index)\" (saveStage)=\"saveStage($index,$event)\"\r\n *ngIf=\"(activeStageIndex|async) ===$index\"></app-aggregate-stage-editor>\r\n\r\n\r\n </ng-container>\r\n\r\n <mat-toolbar style=\"padding: 0px;\">\r\n\r\n <span class=\"spacer\"></span>\r\n <button class=\"stage-button\" [disabled]=\"isRunningPipeline\" color=\"primary\" (click)=\"addStage()\"\r\n mat-raised-button>\r\n Add\r\n <mat-icon>add</mat-icon>\r\n </button>\r\n </mat-toolbar>\r\n </mat-nav-list>\r\n\r\n <!-- Mongodb aggregate pipelione stages management and edit end -->\r\n </div>\r\n </mat-expansion-panel>\r\n\r\n <!-- Results Accordion -->\r\n <mat-expansion-panel value=\"results\">\r\n <mat-expansion-panel-header>\r\n <mat-panel-title>\r\n <mat-spinner color=\"accent\" *ngIf=\"isRunningPipeline\" class=\"header-spinner\"></mat-spinner>\r\n <mat-icon class=\"title-icon\">dataset</mat-icon>\r\n {{isRunningPipeline?'Running pipeline...':'Data Results'}}\r\n </mat-panel-title>\r\n </mat-expansion-panel-header>\r\n <div class=\"content\">\r\n <ng-container *ngIf=\"pipeLineResults | async as results; else noResults\">\r\n\r\n <lib-t-dynamic-data-view *ngIf=\"results\" [data]=\"results\"></lib-t-dynamic-data-view>\r\n <p *ngIf=\"!results\" color=\"medium\">\r\n\r\n No results available\r\n\r\n </p>\r\n\r\n </ng-container>\r\n <ng-template #noResults>\r\n <p color=\"medium\">No results available</p>\r\n </ng-template>\r\n </div>\r\n </mat-expansion-panel>\r\n\r\n <!-- AI Agent Accordion -->\r\n <mat-expansion-panel value=\"ai\">\r\n <mat-expansion-panel-header>\r\n <mat-panel-title>\r\n <mat-spinner *ngIf=\" aiIsGeneratingPipeline \" style=\"position: absolute;\" class=\"header-spinner\"></mat-spinner>\r\n <mat-icon class=\"title-icon\">tips_and_updates</mat-icon>\r\n {{ aiIsGeneratingPipeline ? 'Agent busy ...' : 'AI AGENT prompt' }}\r\n </mat-panel-title>\r\n </mat-expansion-panel-header>\r\n\r\n <div class=\"content\">\r\n @if( schemaLoadError$ | async){\r\n <div class=\"tree-instructions\" style=\"background: antiquewhite !important;\">\r\n <mat-icon class=\"info-icon\" color=\"warn\">error</mat-icon>\r\n <span> {{ schemaLoadError$ | async }}</span>\r\n </div>\r\n \r\n }\r\n <mat-list *ngFor=\"let chat of chatHistory|async;\">\r\n\r\n <mat-list-item class=\"chatContent chatItem\">\r\n <div class=\"chat\" style=\"background:bisque;text-align:end;\r\n border-radius: 18px 18px 0px 18px;\" matListItemTitle>\r\n <div>\r\n {{chat.user}}\r\n </div>\r\n <div style=\"opacity:0.6;line-height: normal;display: flex;align-items: center;justify-content: flex-end;\">\r\n {{chat.date|daysAgo}}\r\n <mat-icon class=\"sent-icon\">\r\n done_all\r\n </mat-icon>\r\n </div>\r\n </div>\r\n </mat-list-item>\r\n\r\n <mat-list-item style=\"margin-top: 16px;\" class=\"chatContent chatItem\" color=\"light\" lines=\"full\">\r\n <mat-icon style=\" margin-left: 0px;\r\n margin-top: 16px;\r\n margin-bottom: auto;\" matListItemIcon>smart_toy</mat-icon>\r\n <div class=\"chat\" style=\"text-align: left; \r\n padding-left: 16px; \r\n background: azure;\r\n border-radius: 0px 18px 18px 18px;\" *ngIf=\"!chat.assistance?.error\" matListItemTitle>\r\n <pre>\r\n {{chat. assistance.pipeline |json}}\r\n </pre>\r\n </div>\r\n <div *ngIf=\"chat.assistance?.error\" matListItemTitle>\r\n {{chat.assistance.error}}\r\n </div>\r\n </mat-list-item>\r\n\r\n\r\n </mat-list>\r\n <mat-list>\r\n <mat-list-item class=\"chatContent chatItem\">\r\n <textarea matListItemTitle #textarea style=\" width: calc(100% - 13px);\r\n border-radius: 14px;\r\n padding-right: 3px;\r\n padding-left: 8px;\" class=\"chat\" [value]=\" prompt|async\" (input)=\"onTextChange($event)\"\r\n placeholder=\"Provide a pipeline generation prompt\"></textarea>\r\n <button matListItemMeta style=\" margin-left: 4px;\r\n margin-right: 0px;\" color=\"primary\" mat-mini-fab [disabled]=\"aiIsGeneratingPipeline\" (click)=\"promptSubmit()\">\r\n\r\n <mat-icon style=\"margin: 0px !important;color:white\">send</mat-icon>\r\n <mat-spinner color=\"accent\" *ngIf=\" aiIsGeneratingPipeline \" \r\n class=\"submit-spinner\" ></mat-spinner>\r\n </button>\r\n \r\n </mat-list-item>\r\n\r\n </mat-list>\r\n\r\n\r\n <section *ngIf=\"showSuggestions\" class=\"showSuggestionContainer\">\r\n <!-- <mat-toolbar class=\"search-container\" style=\"background: inherit;\">\r\n\r\n\r\n <input type=\"search\" placeholder=\"Search options\" class=\"search-field\" (change)=\"onSearchChange($event)\">\r\n\r\n <mat-icon>\r\n search\r\n </mat-icon>\r\n </mat-toolbar> -->\r\n <mat-divider></mat-divider>\r\n <div style=\"padding: 8px;\">\r\n <div class=\"suggestion-container\">\r\n <div class=\"suggestion-column\">\r\n <h5>Collection document properties</h5>\r\n <div class=\"button-container\">\r\n <button *ngFor=\"let method of getSchemaProperties | async;trackBy: trackById\"\r\n (click)=\"selectSuggestionInput(method.value)\" color=\"accent\" mat-flat-button\r\n class=\"suggestion-button\">\r\n {{ method.label | titlecase }}\r\n </button>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n\r\n\r\n </div>\r\n </section>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n </div>\r\n </mat-expansion-panel>\r\n</mat-accordion>\r\n\r\n\r\n\r\n\r\n<ng-template\r\n cdkConnectedOverlay\r\n [cdkConnectedOverlayOpen]=\"disabled\"\r\n>\r\n<div style=\"position: absolute; top: 0; left: 0; width: 100%; height: 100%; background-color: rgba(0, 0, 0, 0.5);\">\r\n\r\n\r\n</div>\r\n</ng-template>\r\n", styles: ["ion-card{margin:0 auto}.head{font-weight:500;font-size:.9rem;padding-left:8px}.chat{margin-top:0;padding-bottom:8px;padding-top:9px;padding-right:16px;white-space:normal;font-size:.8rem}.icon{margin-top:auto;margin-bottom:auto;margin-right:16px}.container{max-width:600px;margin:0 auto}ion-accordion-group{margin:16px}ion-icon{margin-right:16PX}.suggestion-container{display:flex;width:100%;gap:14px}.suggestion-column{flex:1;min-width:0}.button-container{display:flex;flex-wrap:wrap}.suggestion-button{height:auto;text-transform:capitalize;margin:2px;padding:8px;line-height:normal;text-align:left;font-size:.8em}h5{margin-bottom:8px;font-size:1em}mat-expansion-panel-header{padding-left:16px;padding-right:16px}mat-expansion-panel{background:var(--mat-sys-surface-container, var(--mat-app-surface))}mat-form-field{width:100%;background:azure}.chatItem{padding:0}.chatItem mat-icon{margin-left:16px;margin-right:16px}.chatContent{height:fit-content!important}.stage-button{margin:4px}.stage-index{font-size:.875em;display:flex;width:28px;height:28px;justify-content:center;background:azure;align-items:center;border:solid var(--mat-divider-color, var(--mat-app-outline)) 1px}.stage-inner-message{font-size:.875em;display:flex;line-height:normal;opacity:.6}.stage-item{height:54px!important}.tree-instructions{display:flex;align-items:center;gap:8px;padding:12px;background:azure;border-radius:4px;margin-bottom:16px}.info-icon{min-width:38px!important;display:block}.title-icon{margin-right:8px;vertical-align:middle}.header-spinner{position:absolute;width:24px!important;height:24px!important}.sent-icon{font-size:.875em;height:14px;margin-right:0!important;margin-left:0!important}.submit-spinner{position:absolute;width:40px!important;right:-8px;top:-20px;height:40px!important;--mdc-circular-progress-size: 40px !important;--mdc-circular-progress-active-indicator-width: 40px !important}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2$4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2$4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i2$4.AsyncPipe, name: "async" }, { kind: "pipe", type: i2$4.JsonPipe, name: "json" }, { kind: "pipe", type: i2$4.TitleCasePipe, name: "titlecase" }, { kind: "component", type: TWorkflowPickerComponent, selector: "lib-t-workflow-picker", inputs: ["disabled", "errors", "required", "value", "placeholder", "getWorkflowOptions"], outputs: ["valueChange", "valueChanged", "workflowNameChanged"] }, { kind: "ngmodule", type: FormsModule }, { kind: "component", type: TDynamicDataViewComponent, selector: "lib-t-dynamic-data-view", inputs: ["data"] }, { kind: "ngmodule", type: MatModulesModule }, { kind: "component", type: i2$1.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i2$1.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: i2$1.MatMiniFabButton, selector: "button[mat-mini-fab]", exportAs: ["matButton"] }, { kind: "component", type: i4.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "directive", type: i5.MatAccordion, selector: "mat-accordion", inputs: ["hideToggle", "displayMode", "togglePosition"], exportAs: ["matAccordion"] }, { kind: "component", type: i5.MatExpansionPanel, selector: "mat-expansion-panel", inputs: ["hideToggle", "togglePosition"], outputs: ["afterExpand", "afterCollapse"], exportAs: ["matExpansionPanel"] }, { kind: "component", type: i5.MatExpansionPanelHeader, selector: "mat-expansion-panel-header", inputs: ["expandedHeight", "collapsedHeight", "tabIndex"] }, { kind: "directive", type: i5.MatExpansionPanelTitle, selector: "mat-panel-title" }, { kind: "component", type: i2$2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i7.MatList, selector: "mat-list", exportAs: ["matList"] }, { kind: "component", type: i7.MatNavList, selector: "mat-nav-list", exportAs: ["matNavList"] }, { kind: "component", type: i7.MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["activated"], exportAs: ["matListItem"] }, { kind: "directive", type: i7.MatListItemAvatar, selector: "[matListItemAvatar]" }, { kind: "directive", type: i7.MatListItemIcon, selector: "[matListItemIcon]" }, { kind: "directive", type: i7.MatListItemTitle, selector: "[matListItemTitle]" }, { kind: "directive", type: i7.MatListItemMeta, selector: "[matListItemMeta]" }, { kind: "component", type: i3$1.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "component", type: i10.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { kind: "directive", type: i10$1.CdkConnectedOverlay, selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayTransformOriginOn", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush", "cdkConnectedOverlayDisposeOnNavigation"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }, { kind: "component", type: AggregateStageEditorComponent, selector: "app-aggregate-stage-editor", inputs: ["selectedStage", "isRunningPipeline"], outputs: ["saveStage", "deleteStage"] }, { kind: "pipe", type: DaysAgoPipe, name: "daysAgo" }, { kind: "ngmodule", type: OverlayModule }] }); }
574
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.5", ngImport: i0, type: PipelineGeneratorComponent, deps: [{ token: i1.NgControl, optional: true, self: true }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
575
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.5", type: PipelineGeneratorComponent, isStandalone: true, selector: "app-pipeline-generator", inputs: { disabled: "disabled", value: "value", getWorkflowOptions: "getWorkflowOptions", userName: "userName", errors: "errors" }, outputs: { valueChanged: "valueChanged" }, host: { properties: { "id": "this.id" } }, providers: [{ provide: MatFormFieldControl, useExisting: PipelineGeneratorComponent }], viewQueries: [{ propertyName: "textareaElementRef", first: true, predicate: ["textarea"], descendants: true, read: ElementRef }], ngImport: i0, template: "\r\n\r\n\r\n<section class=\"ion-margin\">\r\n <p>MongoDB aggregation pipeline builder for selected workflows. </p>\r\n</section>\r\n<lib-t-workflow-picker \r\n(valueChanged)=\"workflowChanged($event)\"\r\n(workflowNameChanged)=\"workflowNameChanged($event)\" \r\n[getWorkflowOptions]=\" workflows$\"\r\n [value]=\"(workflowId|async)||undefined\">\r\n</lib-t-workflow-picker>\r\n<mat-accordion multi *ngIf=\"workflowId|async\">\r\n <!-- Pipeline Accordion -->\r\n <mat-expansion-panel value=\"pipeline\">\r\n <mat-expansion-panel-header>\r\n <mat-panel-title>\r\n <mat-spinner color=\"accent\" *ngIf=\"isRunningPipeline\" class=\"header-spinner\"></mat-spinner>\r\n <mat-icon class=\"title-icon\">\r\n dynamic_form\r\n </mat-icon>\r\n {{isRunningPipeline?'Executing current Data pipeline...':'Data retrieval pipeline'}}\r\n </mat-panel-title>\r\n\r\n </mat-expansion-panel-header>\r\n <div class=\"content\">\r\n <!-- Mongodb aggregate pipelione stages management and edit start-->\r\n <div *ngIf=\"((stages | async)?.length || 0) ===0\" class=\"tree-instructions\">\r\n <mat-icon class=\"info-icon\" color=\"primary\">info</mat-icon>\r\n <span>\r\n Add stages to the pipeline below.<br>\r\n Each stage processes input documents by filtering, grouping, or calculating values. The output documents from\r\n one stage are passed to the next stage in the pipeline.\r\n </span>\r\n </div>\r\n\r\n <mat-nav-list style=\" background: var(--mat-tree-container-background-color);padding:0px;border-radius:8px\">\r\n\r\n\r\n <ng-container *ngFor=\"let stage of stages | async; trackBy: trackById;index as $index;last as isLast\">\r\n <mat-list-item [style.margin-top]=\"(activeStageIndex|async) ===$index?'4px':'0px'\"\r\n [class.mat-elevation-z8]=\"(activeStageIndex|async) ===$index\" class=\"stage-item\"\r\n (click)=\"setActiveStage($index)\" [activated]=\" (activeStageIndex|async) ===$index\">\r\n <span class=\"stage-index\" matListItemAvatar>{{$index + 1}} </span>\r\n <div matListItemTitle>\r\n <div style=\"line-height: normal;\">\r\n {{ stage.name || 'Stage ' }}\r\n </div>\r\n <div class=\"stage-inner-message\" *ngIf=\"!stage.name && (activeStageIndex|async) !==$index \">\r\n Incomplete , click to edit\r\n </div>\r\n\r\n </div>\r\n\r\n <button *ngIf=\"(activeStageIndex|async) ===$index||!stage.valid && (activeStageIndex|async) !==$index\"\r\n mat-icon-button matListItemMeta>\r\n <mat-icon color=\"primary\" *ngIf=\"(activeStageIndex|async) ===$index\">check_circle</mat-icon>\r\n\r\n <mat-icon color=\"warn\" *ngIf=\"!stage.valid && (activeStageIndex|async) !==$index\">\r\n warning\r\n </mat-icon>\r\n </button>\r\n </mat-list-item>\r\n <mat-divider></mat-divider>\r\n\r\n <app-aggregate-stage-editor [selectedStage]=\"stage\" [isRunningPipeline]=\"isRunningPipeline\"\r\n (deleteStage)=\"deleteStage($index)\" (saveStage)=\"saveStage($index,$event)\"\r\n *ngIf=\"(activeStageIndex|async) ===$index\"></app-aggregate-stage-editor>\r\n\r\n\r\n </ng-container>\r\n\r\n <mat-toolbar style=\"padding: 0px;\">\r\n\r\n <span class=\"spacer\"></span>\r\n <button class=\"stage-button\" [disabled]=\"isRunningPipeline\" color=\"primary\" (click)=\"addStage()\"\r\n mat-raised-button>\r\n Add\r\n <mat-icon>add</mat-icon>\r\n </button>\r\n </mat-toolbar>\r\n </mat-nav-list>\r\n\r\n <!-- Mongodb aggregate pipelione stages management and edit end -->\r\n </div>\r\n </mat-expansion-panel>\r\n\r\n <!-- Results Accordion -->\r\n <mat-expansion-panel value=\"results\">\r\n <mat-expansion-panel-header>\r\n <mat-panel-title>\r\n <mat-spinner color=\"accent\" *ngIf=\"isRunningPipeline\" class=\"header-spinner\"></mat-spinner>\r\n <mat-icon class=\"title-icon\">dataset</mat-icon>\r\n {{isRunningPipeline?'Running pipeline...':'Data Results'}}\r\n </mat-panel-title>\r\n </mat-expansion-panel-header>\r\n <div class=\"content\">\r\n <ng-container *ngIf=\"pipeLineResults | async as results; else noResults\">\r\n\r\n <lib-t-dynamic-data-view *ngIf=\"results\" [data]=\"results\"></lib-t-dynamic-data-view>\r\n <p *ngIf=\"!results\" color=\"medium\">\r\n\r\n No results available\r\n\r\n </p>\r\n\r\n </ng-container>\r\n <ng-template #noResults>\r\n <p color=\"medium\">No results available</p>\r\n </ng-template>\r\n </div>\r\n </mat-expansion-panel>\r\n\r\n <!-- AI Agent Accordion -->\r\n <mat-expansion-panel value=\"ai\">\r\n <mat-expansion-panel-header>\r\n <mat-panel-title>\r\n <mat-spinner *ngIf=\" aiIsGeneratingPipeline \" style=\"position: absolute;\" class=\"header-spinner\"></mat-spinner>\r\n <mat-icon class=\"title-icon\">tips_and_updates</mat-icon>\r\n {{ aiIsGeneratingPipeline ? 'Agent busy ...' : 'AI AGENT prompt' }}\r\n </mat-panel-title>\r\n </mat-expansion-panel-header>\r\n\r\n <div class=\"content\">\r\n @if( schemaLoadError$ | async){\r\n <div class=\"tree-instructions\" style=\"background: antiquewhite !important;\">\r\n <mat-icon class=\"info-icon\" color=\"warn\">error</mat-icon>\r\n <span> {{ schemaLoadError$ | async }}</span>\r\n </div>\r\n \r\n }\r\n <mat-list *ngFor=\"let chat of chatHistory|async;\">\r\n\r\n <mat-list-item class=\"chatContent chatItem\">\r\n <div class=\"chat\" style=\"background:bisque;text-align:end;\r\n border-radius: 18px 18px 0px 18px;\" matListItemTitle>\r\n <div>\r\n {{chat.user}}\r\n </div>\r\n <div style=\"opacity:0.6;line-height: normal;display: flex;align-items: center;justify-content: flex-end;\">\r\n {{chat.date|daysAgo}}\r\n <mat-icon class=\"sent-icon\">\r\n done_all\r\n </mat-icon>\r\n </div>\r\n </div>\r\n </mat-list-item>\r\n\r\n <mat-list-item style=\"margin-top: 16px;\" class=\"chatContent chatItem\" color=\"light\" lines=\"full\">\r\n <mat-icon style=\" margin-left: 0px;\r\n margin-top: 16px;\r\n margin-bottom: auto;\" matListItemIcon>smart_toy</mat-icon>\r\n <div class=\"chat\" style=\"text-align: left; \r\n padding-left: 16px; \r\n background: azure;\r\n border-radius: 0px 18px 18px 18px;\" *ngIf=\"!chat.assistance?.error\" matListItemTitle>\r\n <pre>\r\n {{chat. assistance.pipeline |json}}\r\n </pre>\r\n </div>\r\n <div *ngIf=\"chat.assistance?.error\" matListItemTitle>\r\n {{chat.assistance.error}}\r\n </div>\r\n </mat-list-item>\r\n\r\n\r\n </mat-list>\r\n <mat-list>\r\n <mat-list-item class=\"chatContent chatItem\">\r\n <textarea matListItemTitle #textarea style=\" width: calc(100% - 13px);\r\n border-radius: 14px;\r\n padding-right: 3px;\r\n padding-left: 8px;\" class=\"chat\" [value]=\" prompt|async\" (input)=\"onTextChange($event)\"\r\n placeholder=\"Provide a pipeline generation prompt\"></textarea>\r\n <button matListItemMeta style=\" margin-left: 4px;\r\n margin-right: 0px;\" color=\"primary\" mat-mini-fab [disabled]=\"aiIsGeneratingPipeline\" (click)=\"promptSubmit()\">\r\n\r\n <mat-icon style=\"margin: 0px !important;color:white\">send</mat-icon>\r\n <mat-spinner color=\"accent\" *ngIf=\" aiIsGeneratingPipeline \" \r\n class=\"submit-spinner\" ></mat-spinner>\r\n </button>\r\n \r\n </mat-list-item>\r\n\r\n </mat-list>\r\n\r\n\r\n <section *ngIf=\"showSuggestions\" class=\"showSuggestionContainer\">\r\n <!-- <mat-toolbar class=\"search-container\" style=\"background: inherit;\">\r\n\r\n\r\n <input type=\"search\" placeholder=\"Search options\" class=\"search-field\" (change)=\"onSearchChange($event)\">\r\n\r\n <mat-icon>\r\n search\r\n </mat-icon>\r\n </mat-toolbar> -->\r\n <mat-divider></mat-divider>\r\n <div style=\"padding: 8px;\">\r\n <div class=\"suggestion-container\">\r\n <div class=\"suggestion-column\">\r\n <h5>Collection document properties</h5>\r\n <div class=\"button-container\">\r\n <button *ngFor=\"let method of getSchemaProperties | async;trackBy: trackById\"\r\n (click)=\"selectSuggestionInput(method.value)\" color=\"accent\" mat-flat-button\r\n class=\"suggestion-button\">\r\n {{ method.label | titlecase }}\r\n </button>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n\r\n\r\n </div>\r\n </section>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n </div>\r\n </mat-expansion-panel>\r\n</mat-accordion>\r\n\r\n\r\n\r\n\r\n<ng-template\r\n cdkConnectedOverlay\r\n [cdkConnectedOverlayOpen]=\"disabled\"\r\n>\r\n<div style=\"position: absolute; top: 0; left: 0; width: 100%; height: 100%; background-color: rgba(0, 0, 0, 0.5);\">\r\n\r\n\r\n</div>\r\n</ng-template>\r\n", styles: ["ion-card{margin:0 auto}.head{font-weight:500;font-size:.9rem;padding-left:8px}.chat{margin-top:0;padding-bottom:8px;padding-top:9px;padding-right:16px;white-space:normal;font-size:.8rem}.icon{margin-top:auto;margin-bottom:auto;margin-right:16px}.container{max-width:600px;margin:0 auto}ion-accordion-group{margin:16px}ion-icon{margin-right:16PX}.suggestion-container{display:flex;width:100%;gap:14px}.suggestion-column{flex:1;min-width:0}.button-container{display:flex;flex-wrap:wrap}.suggestion-button{height:auto;text-transform:capitalize;margin:2px;padding:8px;line-height:normal;text-align:left;font-size:.8em}h5{margin-bottom:8px;font-size:1em}mat-expansion-panel-header{padding-left:16px;padding-right:16px}mat-expansion-panel{background:var(--mat-sys-surface-container, var(--mat-app-surface))}mat-form-field{width:100%;background:azure}.chatItem{padding:0}.chatItem mat-icon{margin-left:16px;margin-right:16px}.chatContent{height:fit-content!important}.stage-button{margin:4px}.stage-index{font-size:.875em;display:flex;width:28px;height:28px;justify-content:center;background:azure;align-items:center;border:solid var(--mat-divider-color, var(--mat-app-outline)) 1px}.stage-inner-message{font-size:.875em;display:flex;line-height:normal;opacity:.6}.stage-item{height:54px!important}.tree-instructions{display:flex;align-items:center;gap:8px;padding:12px;background:azure;border-radius:4px;margin-bottom:16px}.info-icon{min-width:38px!important;display:block}.title-icon{margin-right:8px;vertical-align:middle}.header-spinner{position:absolute;width:24px!important;height:24px!important}.sent-icon{font-size:.875em;height:14px;margin-right:0!important;margin-left:0!important}.submit-spinner{position:absolute;width:40px!important;right:-8px;top:-20px;height:40px!important;--mdc-circular-progress-size: 40px !important;--mdc-circular-progress-active-indicator-width: 40px !important}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2$2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: TWorkflowPickerComponent, selector: "lib-t-workflow-picker", inputs: ["disabled", "errors", "required", "value", "placeholder", "getWorkflowOptions"], outputs: ["valueChange", "valueChanged", "workflowNameChanged"] }, { kind: "ngmodule", type: FormsModule }, { kind: "component", type: TDynamicDataViewComponent, selector: "lib-t-dynamic-data-view", inputs: ["data"] }, { kind: "ngmodule", type: MatModulesModule }, { kind: "component", type: i2$1.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i2$1.MatMiniFabButton, selector: "button[mat-mini-fab], a[mat-mini-fab], button[matMiniFab], a[matMiniFab]", exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i2$1.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i4.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "directive", type: i5.MatAccordion, selector: "mat-accordion", inputs: ["hideToggle", "displayMode", "togglePosition"], exportAs: ["matAccordion"] }, { kind: "component", type: i5.MatExpansionPanel, selector: "mat-expansion-panel", inputs: ["hideToggle", "togglePosition"], outputs: ["afterExpand", "afterCollapse"], exportAs: ["matExpansionPanel"] }, { kind: "component", type: i5.MatExpansionPanelHeader, selector: "mat-expansion-panel-header", inputs: ["expandedHeight", "collapsedHeight", "tabIndex"] }, { kind: "directive", type: i5.MatExpansionPanelTitle, selector: "mat-panel-title" }, { kind: "component", type: i3$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i7.MatList, selector: "mat-list", exportAs: ["matList"] }, { kind: "component", type: i7.MatNavList, selector: "mat-nav-list", exportAs: ["matNavList"] }, { kind: "component", type: i7.MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["activated"], exportAs: ["matListItem"] }, { kind: "directive", type: i7.MatListItemAvatar, selector: "[matListItemAvatar]" }, { kind: "directive", type: i7.MatListItemIcon, selector: "[matListItemIcon]" }, { kind: "directive", type: i7.MatListItemTitle, selector: "[matListItemTitle]" }, { kind: "directive", type: i7.MatListItemMeta, selector: "[matListItemMeta]" }, { kind: "component", type: i7$1.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "component", type: i5$1.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { kind: "directive", type: i10.CdkConnectedOverlay, selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayTransformOriginOn", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush", "cdkConnectedOverlayDisposeOnNavigation", "cdkConnectedOverlayUsePopover", "cdkConnectedOverlayMatchWidth", "cdkConnectedOverlay"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }, { kind: "component", type: AggregateStageEditorComponent, selector: "app-aggregate-stage-editor", inputs: ["selectedStage", "isRunningPipeline"], outputs: ["saveStage", "deleteStage"] }, { kind: "ngmodule", type: OverlayModule }, { kind: "pipe", type: i2$2.AsyncPipe, name: "async" }, { kind: "pipe", type: i2$2.JsonPipe, name: "json" }, { kind: "pipe", type: i2$2.TitleCasePipe, name: "titlecase" }, { kind: "pipe", type: DaysAgoPipe, name: "daysAgo" }] }); }
600
576
  }
601
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: PipelineGeneratorComponent, decorators: [{
577
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.5", ngImport: i0, type: PipelineGeneratorComponent, decorators: [{
602
578
  type: Component,
603
579
  args: [{ selector: 'app-pipeline-generator', standalone: true, imports: [
604
580
  CommonModule,
@@ -634,4 +610,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImpo
634
610
  }] } });
635
611
 
636
612
  export { PipelineGeneratorComponent };
637
- //# sourceMappingURL=ngx-t-forms-pipeline-generator.component-QE-I58e4.mjs.map
613
+ //# sourceMappingURL=ngx-t-forms-pipeline-generator.component-DBJEyCbd.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ngx-t-forms-pipeline-generator.component-DBJEyCbd.mjs","sources":["../../../projects/ngx-t-forms/src/lib/components/t-dynamic-data-edit/elements/pipeline-generator/elements/aggregate-stage-editor/aggregate-stage-editor.component.ts","../../../projects/ngx-t-forms/src/lib/components/t-dynamic-data-edit/elements/pipeline-generator/elements/aggregate-stage-editor/aggregate-stage-editor.component.html","../../../projects/ngx-t-forms/src/lib/services/hhtpResources/Pipeline/pipeline.service.ts","../../../projects/ngx-t-forms/src/lib/components/t-dynamic-data-edit/elements/pipeline-generator/pipeline-generator.component.ts","../../../projects/ngx-t-forms/src/lib/components/t-dynamic-data-edit/elements/pipeline-generator/pipeline-generator.component.html"],"sourcesContent":["import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport PipelineBuilder from \"db-aggregation-pipeline-builder\"\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { JsonEditorComponent } from '../../../json-editor/json-editor.component';\nimport { IAllowedStage } from '../../../../../../services/hhtpResources/Pipeline/pipeline.service';\nimport { MatModulesModule } from '../../../../../../shared/modules/mat-modules.module';\n\nimport { MatSelectChange } from '@angular/material/select';\n\n@Component({\n selector: 'app-aggregate-stage-editor',\n templateUrl: './aggregate-stage-editor.component.html',\n styleUrls: ['./aggregate-stage-editor.component.scss'],\n standalone: true,\n\n imports: [\n MatModulesModule,\n CommonModule,\n FormsModule,\n JsonEditorComponent\n ]\n})\nexport class AggregateStageEditorComponent implements OnInit {\n subscription = new Subscription();\n @Input() selectedStage:any\n @Input() isRunningPipeline: boolean = false\n @Output() saveStage = new EventEmitter<IAllowedStage | undefined>()\n @Output() deleteStage = new EventEmitter<void>()\n ngOnDestroy(): void {\n this.subscription.unsubscribe()\n }\n\n constructor() {\n\n }\n activeStage: IAllowedStage | undefined = undefined; // Define the type appropriately if possible\n allowedStages: { stage: string; description: string; config: any }[] = [];\n configValidationError: string | undefined\n\n\n ngOnInit() {\n // Debounce the config change to optimize performance\n\n this.allowedStages = PipelineBuilder.getViewOnlyStages() as any\n }\n\n handleChange(event: MatSelectChange): void {\n \n const selectedStage = event.value\n if (this.activeStage === undefined) {\n this.activeStage = {\n stage: selectedStage,\n ...this.selectedStage || {},\n\n } as IAllowedStage\n } else {\n this.activeStage = {\n config : this.activeStage?.config|| this.selectedStage ?.config,\n stage: selectedStage\n } as IAllowedStage\n\n }\n { }\n if (this.activeStage?.config as any && !!this.activeStage?.stage) {\n\n this.validateConfig();\n\n }\n }\n\n handleConfigChange(event: any): void {\n if (!this.activeStage) {\n this.activeStage = {\n ...this.selectedStage || {},\n } as IAllowedStage\n }\n this.activeStage = {\n stage:this.activeStage?.stage || this.selectedStage ?.name,\n config: event.value\n } as IAllowedStage\n this.validateConfig();\n\n }\n validateConfig(): void {\n this.configValidationError = undefined\n const { config, stage } = this.activeStage || {} as IAllowedStage;\n\n // Check if config and stage are defined\n if (!config && config !== 0 || !stage) {\n this.activeStage!.valid = false;\n return; // Early exit if validation fails\n }\n\n try {\n const valid = PipelineBuilder.validateStageConfig(stage as any, config);\n this.activeStage!.valid = valid;\n\n // Set error message if config is invalid\n if (!valid) {\n this.configValidationError = undefined\n return;\n }\n } catch (error: any) {\n // Catch and handle errors from validation\n this.configValidationError = error.message || JSON.stringify(error) || 'An unknown error occurred';\n this.activeStage!.valid = false;\n }\n }\n\n canSaveConfig(): boolean {\n return !!this.activeStage && !this.configValidationError;\n }\n\n saveConfiguration(): void {\n // Logic for saving the configuration\n if (this.canSaveConfig()) {\n this.saveStage.emit(this.activeStage as IAllowedStage);\n \n }\n }\n\n trackByStage(index: number, stage: any): string {\n return stage.stage;\n }\n\n get allowedStageNames(): string[] {\n return this.allowedStages.map(stage => stage.stage);\n }\n\n\n get activeDescription() {\n return this.allowedStages.find(stage => stage.stage === this.activeStage?.stage)?.description\n\n\n }\n\n deleteActive() {\n this.deleteStage.emit()\n }\n // close() {\n // this.pipeline.setActiveStage(undefined)\n // }\n\n}\n","<mat-card style=\"margin-bottom:8px\">\n <mat-card-content>\n\n <h5>\n Aggregate Pipeline Stage Configuration\n </h5>\n\n\n\n <mat-form-field style=\" margin-bottom: 8px;\" appearance=\"outline\" subscriptSizing=\"dynamic\" >\n <mat-label>Select Aggregate Stage</mat-label>\n <mat-select matNativeControl [value]=\"selectedStage?.name\" (selectionChange)=\"handleChange($event)\"\n placeholder=\"ChooseFunctionToRun\">\n <mat-option *ngFor=\"let stage of allowedStages; trackBy: trackByStage\" [value]=\"stage.stage\">\n {{stage.stage}}</mat-option>\n\n\n\n </mat-select>\n <mat-hint>\n {{activeDescription ?\n 'Hover over the info icon to view stage details .'\n : 'Please select an aggregation function from the list.'}}\n </mat-hint>\n <mat-hint *ngIf=\"activeDescription\" align=\"end\">\n <mat-icon matTooltipHideDelay=\"1000\" [matTooltip]=\"activeDescription\" matSuffix>info</mat-icon>\n </mat-hint>\n </mat-form-field>\n\n\n\n <div class=\"tree-instructions\" style=\"background: cornsilk;\" *ngIf=\"configValidationError\">\n <mat-icon style=\"margin-top: 4px;margin-bottom:auto\" class=\"info-icon\" color=\"warn\">warning</mat-icon>\n <span>{{ configValidationError }}</span>\n </div>\n\n\n\n\n\n <div class=\"config-container\" *ngIf=\"activeStage ||selectedStage?.config\">\n <app-json-editor [value]=\"selectedStage?.config\" (valueChange)=\"handleConfigChange($event)\"></app-json-editor>\n </div>\n\n <br>\n\n\n\n </mat-card-content>\n <mat-divider>\n </mat-divider>\n <mat-card-actions>\n\n <span class=\"spacer\"></span>\n <button color=\"warn\" [disabled]=\"isRunningPipeline\" mat-button (click)=\"deleteActive()\">\n Delete\n <mat-icon >delete</mat-icon>\n </button>\n <button style=\"margin-left:8px;\" color=\"primary\" mat-flat-button (click)=\"saveConfiguration()\"\n [disabled]=\"isRunningPipeline ||!activeStage?.valid \">\n Save\n <mat-icon> save</mat-icon>\n </button>\n </mat-card-actions>\n</mat-card>","import { HttpClient } from '@angular/common/http';\r\nimport { inject, Injectable } from '@angular/core';\r\nimport { BehaviorSubject, catchError, combineLatest, filter, finalize, map, Observable, switchMap, take, tap, throwError } from 'rxjs';\r\nimport { PipelineStage } from 'mongoose'\r\n\r\nimport PipelineBuilder from \"db-aggregation-pipeline-builder\"\r\nimport { IPipelineGenerationError, IPipelineGenerationResponse, IRunPipelineResponse, PipelineStageEnum } from 'ngx-t-forms-types';\r\nexport interface IAllowedStage {\r\n stage: PipelineStageEnum,\r\n description: string,\r\n config: any,\r\n valid?:boolean\r\n\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class PipelineService {\r\n //LOADING INDICATORS\r\n isRunningPipeline: boolean = false\r\n aiIsGeneratingPipeline: boolean = false\r\n isLoadingAllowedStages: boolean = false\r\n isLoadingWorkflowSchema: boolean = false\r\n\r\n //States \r\n workflowId$ = new BehaviorSubject<string|undefined>(undefined)\r\n activeStage$ = new BehaviorSubject<number|undefined>(undefined)\r\n prompt$ = new BehaviorSubject<string|undefined>(undefined)\r\n schemaLoadError$ = new BehaviorSubject<string|undefined>(undefined)\r\n \r\n\r\n pipeline$ = new BehaviorSubject<PipelineStage[]>([])\r\n threadId$ = new BehaviorSubject<string|undefined>(undefined)\r\n schema$ = new BehaviorSubject<Object|undefined>(undefined)\r\n allowedStages$ = new BehaviorSubject<IAllowedStage[]>([])\r\n pipeLineResult$ = new BehaviorSubject<unknown>([])\r\n chatHistory$ = new BehaviorSubject<{\r\n user: string,\r\n assistance:IPipelineGenerationResponse,\r\n date:Date\r\n }[]>([])\r\n http = inject(HttpClient)\r\n constructor() { \r\n //Set local storage threadId\r\n const threadId = localStorage.getItem('threadId')\r\n if(threadId){\r\n this.threadId$.next(threadId)\r\n }\r\n }\r\n\r\n get config$() {\r\n return this.workflowId$.pipe(\r\n switchMap(workflowId => this.pipeline$.pipe(\r\n switchMap(pipeline => this.pipeLineResult$.pipe(\r\n map(responseBody => ({ workflowId, pipeline, responseBody }))\r\n ))\r\n ))\r\n );\r\n }\r\n /**\r\n * Fetch available pipeline stages for the user to select and generate pipelines.\r\n * Ideally, this could be static or fetched from a backend.\r\n */\r\n runPipeLine(pipeline: PipelineStage[],workflowId:string): Observable<IRunPipelineResponse> {\r\n const url = \"http://localhost:5000/api/v1/pipelineBuilder/runPipeline\"\r\n // For now, returning a static list of pipeline stages. In a real application, you can fetch from an API.\r\n\r\n this.isRunningPipeline = true\r\n return this.http.post<IRunPipelineResponse>(\r\n url,\r\n { pipeline,workflowId }\r\n ).pipe(\r\n take(1),\r\n catchError(this.handleError), // Error handling for the HTTP request,\r\n finalize(() => this.isRunningPipeline = false)\r\n );\r\n }\r\n\r\n /**\r\n * Generate a MongoDB pipeline based on the given user prompt.\r\n * \r\n * @param prompt The user's input or description of the desired pipeline.\r\n */\r\n private generatePipeline(query: string, schema: Object | undefined,\r\n threadId:string|undefined, existingPipeline: PipelineStage[],previousError:string): Observable<IPipelineGenerationResponse> {\r\n if (!schema) {\r\n throw new Error(\"Schema is required\")\r\n }\r\n const payload = { query, schema ,threadId, existingPipeline ,previousError};\r\n const url = \"http://localhost:5000/api/v1/pipelineBuilder/generatePipeline\";\r\n this.aiIsGeneratingPipeline = true\r\n return this.http.post<IPipelineGenerationResponse>(`${url}`, payload)\r\n .pipe(\r\n take(1),\r\n catchError(this.handleError),// Error handling for the HTTP request,\r\n finalize(() => this.aiIsGeneratingPipeline = false)\r\n );\r\n }\r\n\r\n /**\r\n * Handle any errors from the HTTP request.\r\n * \r\n * @param error The error response from the HTTP request\r\n */\r\n private handleError(error: any): Observable<never> {\r\n // Return an observable with a user-facing error message\r\n return throwError(() => new Error('Something went wrong with the pipeline generation; please try again later.'));\r\n\r\n }\r\n\r\n\r\n private getSchema(workflowId: string): Observable<{\r\n schema: object\r\n }> {\r\n if(!workflowId){\r\n throw new Error(\"WorkflowId is required\")\r\n }\r\n const url = \"http://localhost:5000/api/v1/pipelineBuilder/getSchema\";\r\n return this.http.get<{ schema: object }>(`${url}`, { params: { workflowId: workflowId } }).pipe(\r\n take(1),\r\n catchError(this.handleError) // Error handling for the HTTP request\r\n )\r\n }\r\n/** OPERATIONS */\r\nisSchemaEmpty(object:object){\r\n\r\n}\r\n workflowChanged(event: any) {\r\n this.workflowId$.next(event)\r\n if(!event){\r\n return \r\n }\r\n this.getSchema(event).pipe(\r\n take(1),\r\n tap(({ schema }) => {\r\n this.schema$.next(schema)\r\n const isEmptySchema = Object.keys( schema)[0] === \"\" && Object.values(schema)[0] === \"Array<>\"\r\n const error = isEmptySchema \r\n ? \"Document schema is missing. Please ensure at least one document exists for the selected workflow.\" \r\n : undefined\r\n this.schemaLoadError$.next(error)\r\n this.runActivePipeline()\r\n }),\r\n catchError((error) => {\r\n this.schemaLoadError$.next(\"Error loading schema\");\r\n return this.handleError(error);\r\n })\r\n ).subscribe()\r\n }\r\n\r\n \r\n setActiveStage(i:number|undefined){\r\n const index = this.activeStage$.getValue()\r\n if(index === i){\r\n this.activeStage$.next(undefined)\r\n return\r\n }\r\n this.activeStage$.next(i)\r\n\r\n \r\n }\r\n addStage(){\r\n const newPipeline = this.pipeline$.getValue().concat({} as any)\r\n this.pipeline$.next(newPipeline)\r\n }\r\n onTextChange(event: any) {\r\n this.prompt$.next(event)\r\n }\r\n promptSubmit() {\r\n // Use combineLatest to fetch the latest values from multiple sources\r\n combineLatest([this.schema$, this.threadId$, this.pipeline$,this.prompt$,this.chatHistory$])\r\n .pipe(\r\n take(1),\r\n tap(() => {}),\r\n filter(([schema,,,prompt]) => !!schema && !!prompt ),\r\n switchMap(([schema, threadId, pipeline,prompt,history]) => {\r\n // Use a shallow copy of the pipeline\r\n const previousError = (history[history.length-1]?.assistance as any )?.error\r\n const pipelineCopy = pipeline.map(stage => JSON.parse(JSON.stringify(stage))) || [];\r\n return this.generatePipeline(prompt!, schema, threadId, pipelineCopy,previousError).pipe(\r\n map((response) => ({ ...response,history,prompt}))\r\n )\r\n }),\r\n tap((response) => {\r\n const { pipeline, threadId,history,prompt } = response;\r\n const historyRecord = {\r\n user: prompt as any,\r\n assistance: response,\r\n date:new Date()\r\n };\r\n \r\n // Use next with a concatenated value for chat history\r\n this.chatHistory$.next([...(history||[]), historyRecord]);\r\n this.pipeline$.next(pipeline);\r\n this.threadId$.next(threadId);\r\n \r\n // Store threadID locally\r\n localStorage.setItem('threadId', threadId);\r\n \r\n // Run the active pipeline after all state updates are complete\r\n this.runActivePipeline();\r\n }),\r\n catchError((error:IPipelineGenerationError) => {\r\n return this.handleError(error);\r\n })\r\n ).subscribe();\r\n\r\n }\r\n \r\n runActivePipeline() {\r\n const pipeline = [...(this.pipeline$.getValue().map(stage => (JSON.parse(JSON.stringify(stage))))||[])]\r\n const someAreNotValid = pipeline.some(stage=>Object.keys(stage).length ===0)\r\n if(pipeline.length === 0 || someAreNotValid ){\r\n return\r\n }\r\n try {\r\n PipelineBuilder.validatePipeline(pipeline)\r\n } catch {\r\n return\r\n }\r\n const workflowId = this.workflowId$.getValue()\r\n if (!workflowId) {\r\n return\r\n }\r\n \r\n this.runPipeLine(pipeline,workflowId).pipe(\r\n take(1),\r\n tap(({ results }) => {\r\n this.pipeLineResult$.next(results)\r\n }),\r\n catchError((error) => {\r\n const err = JSON.parse(JSON.stringify(error))\r\n const errorMessage = err.error\r\n if(errorMessage){\r\n this.pipelineErrorLogAndRetry(errorMessage)\r\n }\r\n return this.handleError(error);\r\n })\r\n ).subscribe()\r\n }\r\n\r\n pipelineErrorLogAndRetry(message:string){\r\n const history = this.chatHistory$.getValue() \r\n const prompt = this.prompt$.getValue ()\r\n const historyRecord = {\r\n user: prompt as any,\r\n assistance: {\r\n message\r\n } as any,\r\n date:new Date()\r\n };\r\n this.chatHistory$.next([...(history||[]), historyRecord]);\r\n\r\n }\r\n get activeStage():Observable<{name:string,config:PipelineStage}|undefined>{\r\n return this.pipeline$.asObservable().pipe(\r\n switchMap(pipeline=>this.activeStage$.pipe(\r\n map(activeIndex=>activeIndex === undefined ? undefined : {\r\n name:Object.keys(pipeline[activeIndex]||{})[0] || '',\r\n config:(pipeline[activeIndex] as any)[Object.keys(pipeline[activeIndex]||{})?.[0]||'']\r\n })\r\n ))\r\n )\r\n \r\n }\r\n saveStage(index:number,stage: IAllowedStage | undefined) {\r\n const pipeline = this.pipeline$.getValue()\r\n if(index === undefined){\r\n return\r\n }\r\n const newPipeline = pipeline.map((s, i) => {\r\n if (i === index) {\r\n return stage ? {\r\n [stage.stage]: stage.config\r\n } : s;\r\n }\r\n return s;\r\n });\r\n\r\n this.pipeline$.next(newPipeline as any)\r\n this.activeStage$.next(undefined)\r\n this.runActivePipeline()\r\n \r\n }\r\n deleteStage(index:number){\r\n const pipeline = this.pipeline$.getValue()\r\n\r\n if(index === undefined){\r\n return\r\n }\r\n const newPipeline = pipeline.filter((s, i) => i !== index);\r\n this.pipeline$.next(newPipeline as any)\r\n this.activeStage$.next(undefined)\r\n this.runActivePipeline()\r\n }\r\n get pipelineGeneralValid(){\r\n return this.pipeline$.asObservable().pipe(\r\n map(pipeline=>{\r\n const allHaveTypes = pipeline.every(stage=>Object.keys(stage).length === 1)\r\n if(!allHaveTypes){\r\n return {\r\n valid:false,\r\n message:\"All stages must be a valid pipeline stage\"\r\n }\r\n }\r\n const AllStagesMustHaveConfig = pipeline.every((stage: { [key: string]: any }) => stage[Object.keys(stage)?.[0]||''] !== undefined)\r\n if(!AllStagesMustHaveConfig){\r\n return {\r\n valid:false,\r\n message:\"All stages must have a configuration\"\r\n }\r\n }\r\n return {\r\n valid:true\r\n }\r\n })\r\n )\r\n }\r\n}","import { CommonModule } from '@angular/common';\r\n\r\nimport { Component, ElementRef, EventEmitter, HostBinding, inject, Input, OnDestroy, OnInit, Optional, Output, Self, ViewChild } from '@angular/core';\r\nimport { FormsModule, NgControl } from '@angular/forms';\r\n\r\n\r\n\r\n\r\nimport { AggregateStageEditorComponent } from './elements/aggregate-stage-editor/aggregate-stage-editor.component';\r\nimport { map, Subject, takeUntil, take, tap, Observable, distinctUntilChanged } from 'rxjs';\r\nimport { MongoDbPipeLineConfigInterface } from \"ngx-t-forms-types\";\r\n\r\nimport { TDynamicDataViewComponent } from '../../../t-dynamic-data-view/t-dynamic-data-view.component';\r\nimport { MatModulesModule } from '../../../../shared/modules/mat-modules.module';\r\nimport { TWorkflowPickerComponent } from '../t-workflow-picker/t-workflow-picker.component';\r\nimport { IWorkflowOption } from \"ngx-t-forms-types\";\r\nimport { MatFormFieldControl } from '@angular/material/form-field';\r\nimport { IConfigElementError } from '../../t-dynamic-data-edit.component';\r\nimport { NGX_T_FORMS_CONFIG_TOKEN } from '../../../../../lib/injection-tokens';\r\nimport { PipelineService } from '../../../../../lib/services/hhtpResources/Pipeline/pipeline.service';\r\nimport { DaysAgoPipe } from '../../../../../lib/shared/pipes/date/days-ago.pipe';\r\n\r\nimport { OverlayModule } from '@angular/cdk/overlay';\r\n@Component({\r\n selector: 'app-pipeline-generator',\r\n templateUrl: './pipeline-generator.component.html',\r\n styleUrls: ['./pipeline-generator.component.scss'],\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n TWorkflowPickerComponent,\r\n FormsModule,\r\n TDynamicDataViewComponent,\r\n MatModulesModule,\r\n AggregateStageEditorComponent,\r\n DaysAgoPipe,\r\n OverlayModule\r\n\r\n ],\r\n providers: [{ provide: MatFormFieldControl, useExisting: PipelineGeneratorComponent }],\r\n})\r\nexport class PipelineGeneratorComponent implements OnInit, OnDestroy, MatFormFieldControl<MongoDbPipeLineConfigInterface> {\r\n static nextId = 0;\r\n stateChanges = new Subject<void>();\r\n NGX_T_FORMS_CONFIG = inject(NGX_T_FORMS_CONFIG_TOKEN)\r\n @HostBinding() id = `app-pipeline-generator-${PipelineGeneratorComponent.nextId++}`;\r\n constructor(@Optional() @Self() public ngControl: NgControl, private _elementRef: ElementRef<HTMLElement>,) {\r\n }\r\n placeholder: string = ''\r\n\r\n focused: boolean = false;\r\n get empty() {\r\n return !this.value\r\n }\r\n get shouldLabelFloat() {\r\n return this.focused || !this.empty;\r\n }\r\n required: boolean = false;\r\n @Input() disabled: boolean = false;\r\n get errorState(): boolean {\r\n const hasError = !!this.ngControl?.control?.errors || (this.errors || []).length > 0 && this.touched\r\n\r\n return !this.value && !!this.required || hasError\r\n }\r\n\r\n controlType?: string | undefined;\r\n autofilled?: boolean | undefined;\r\n userAriaDescribedBy?: string | undefined;\r\n disableAutomaticLabeling?: boolean | undefined;\r\n setDescribedByIds(ids: string[]) {\r\n // Ensure the component view is initialized\r\n if (this._elementRef && this._elementRef.nativeElement) {\r\n const controlElement = this._elementRef.nativeElement.querySelector('.app-pipeline-generator');\r\n // Check if the controlElement exists before attempting to set its attribute\r\n if (controlElement) {\r\n controlElement.setAttribute('aria-describedby', ids.join(' '));\r\n }\r\n }\r\n }\r\n onContainerClick(event: MouseEvent): void {\r\n this.markAsTouched();\r\n this.stateChanges.next();\r\n }\r\n\r\n touched: boolean = false;\r\n onTouched = () => { };\r\n markAsTouched() {\r\n if (!this.touched) {\r\n this.onTouched();\r\n this.touched = true;\r\n }\r\n }\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n //@ViewChild('textarea', { static: false }) textareaRef!: HTMLTextAreaElement\r\n @ViewChild('textarea', { read: ElementRef, static: false }) textareaElementRef!: ElementRef;\r\n @Input() set value(value: MongoDbPipeLineConfigInterface) {\r\n const workflowIdChanged = this._value?.workflowId !== value?.workflowId\r\n const pipelineLengthChanged = this._value?.pipeline?.length !== value?.pipeline?.length\r\n const pipeLineContentChanged = JSON.stringify(this._value?.pipeline) !== JSON.stringify(value?.pipeline)\r\n if (workflowIdChanged || pipelineLengthChanged || pipeLineContentChanged) {\r\n\r\n this._value = value\r\n if (value?.workflowId) {\r\n this.workflowChanged(value?.workflowId)\r\n }\r\n\r\n if (value?.pipeline) {\r\n this.pipeline.pipeline$.next(value?.pipeline || [])\r\n }\r\n\r\n }\r\n\r\n }\r\n\r\n\r\n\r\n workflows$: Observable<IWorkflowOption[] | undefined> | undefined\r\n @Input() set getWorkflowOptions(options$: Observable<IWorkflowOption[] | undefined> | undefined) {\r\n this.workflows$ = options$\r\n\r\n }\r\n @Input() userName: string | undefined\r\n _value!: MongoDbPipeLineConfigInterface\r\n @Output() valueChanged = new EventEmitter<MongoDbPipeLineConfigInterface>()\r\n\r\n @Input() errors: IConfigElementError[] | undefined = [];\r\n destroy$ = new Subject<void>()\r\n private pipeline: PipelineService = new PipelineService()\r\n\r\n ngOnInit(): void {\r\n this.initiateSubscription()\r\n\r\n\r\n }\r\n initiated: boolean = false\r\n initiateSubscription = () => {\r\n this.pipeline.config$.pipe(\r\n takeUntil(this.destroy$),\r\n distinctUntilChanged((prev, curr) => JSON.stringify(prev) === JSON.stringify(curr))\r\n ).subscribe(config => {\r\n if (!this.initiated) {\r\n this.initiated = true\r\n return\r\n }\r\n\r\n const newConfig: any = {\r\n ...this._value,\r\n ...config,\r\n name: this._workflowName || 'Unnamed Pipeline',\r\n \"source\": \"mongoPipeline\",\r\n\r\n }\r\n this.valueChanged.emit(newConfig)\r\n })\r\n\r\n\r\n }\r\n ngOnDestroy(): void {\r\n this.destroy$.next()\r\n this.destroy$.complete()\r\n }\r\n workflowChanged(event: any) {\r\n this.pipeline.workflowChanged(event)\r\n }\r\n _workflowName: string | undefined\r\n workflowNameChanged(event: string | undefined) {\r\n this._workflowName = event\r\n\r\n }\r\n\r\n get workflowId() {\r\n return this.pipeline.workflowId$.asObservable()\r\n }\r\n get stages() {\r\n return this.pipeline.pipeline$.asObservable().pipe(\r\n map(stages => stages.map(stage => ({\r\n name: Object.keys(stage)[0],\r\n stage: Object.keys(stage)[0],\r\n config: (stage as any)[Object.keys(stage)?.[0] || ''],\r\n valid: !!Object.keys(stage)[0] && !!(stage as any)[Object.keys(stage)?.[0] || '']\r\n })))\r\n )\r\n }\r\n get pipeLineResults() {\r\n return this.pipeline.pipeLineResult$.asObservable()\r\n }\r\n get prompt() {\r\n return this.pipeline.prompt$.asObservable()\r\n }\r\n get aiIsGeneratingPipeline() {\r\n return this.pipeline.aiIsGeneratingPipeline\r\n }\r\n get activeStageIndex() {\r\n return this.pipeline.activeStage$.asObservable()\r\n }\r\n get activeStage() {\r\n return this.pipeline.activeStage\r\n }\r\n get isRunningPipeline() {\r\n return this.pipeline.isRunningPipeline\r\n }\r\n get cannotAddStage() {\r\n return this.pipeline.pipelineGeneralValid.pipe(\r\n map(valid => !valid)\r\n )\r\n }\r\n get schemaLoadError$() {\r\n return this.pipeline.schemaLoadError$.asObservable()\r\n }\r\n get chatHistory() {\r\n return this.pipeline.chatHistory$.asObservable()\r\n }\r\n cursorPosition = 0\r\n showSuggestions = false;\r\n onTextChange(event: Event) {\r\n if (!this.textareaElementRef?.nativeElement) {\r\n return;\r\n }\r\n const newValue = (event.target as HTMLInputElement).value;\r\n const textarea = this.textareaElementRef.nativeElement;\r\n this.cursorPosition = textarea.selectionStart || 0;\r\n\r\n const lastChar = newValue[this.cursorPosition - 1];\r\n const match = newValue.slice(0, this.cursorPosition).match(/\\$(\\w*)$/);\r\n\r\n if (lastChar === '$' || (match && match[1] !== undefined)) {\r\n this.showSuggestions = true;\r\n this.optionsSearch = match ? match?.[1] || '' : '';\r\n } else {\r\n this.showSuggestions = false;\r\n this.optionsSearch = '';\r\n }\r\n\r\n this.pipeline.onTextChange(newValue);\r\n }\r\n selectSuggestionInput(suggestion: string) {\r\n this.pipeline.prompt$.asObservable().pipe(\r\n take(1),\r\n tap(prompt => {\r\n const match = prompt?.slice(0, this.cursorPosition).match(/\\$(\\w*)$/);\r\n const beforeCursor = prompt?.slice(0, match ? match.index : this.cursorPosition - 1);\r\n const afterCursor = prompt?.slice(this.cursorPosition);\r\n prompt = beforeCursor + suggestion + ' ' + afterCursor;\r\n this.pipeline.prompt$.next(prompt);\r\n this.applyNewValueToPrompt(suggestion);\r\n })\r\n ).subscribe();\r\n }\r\n applyNewValueToPrompt(suggestion: any) {\r\n this.showSuggestions = false;\r\n\r\n const textarea = this.textareaElementRef.nativeElement;\r\n textarea.focus();\r\n const newCursorPosition = this.cursorPosition + suggestion.length;\r\n setTimeout(() => {\r\n textarea.setSelectionRange(newCursorPosition, newCursorPosition);\r\n }, 0);\r\n }\r\n optionsSearch = ''\r\n onSearchChange(event: any) {\r\n this.optionsSearch = event.detail.value\r\n\r\n }\r\n promptSubmit() {\r\n this.pipeline.promptSubmit()\r\n }\r\n trackById = (index: number, stage: any) => index\r\n\r\n setActiveStage(index: number | undefined) {\r\n\r\n this.pipeline.setActiveStage(index)\r\n }\r\n addStage() {\r\n this.pipeline.addStage()\r\n }\r\n get getSchemaProperties() {\r\n return this.pipeline.schema$.asObservable().pipe(\r\n map(schema =>\r\n Object.keys(schema || {}).map(key => ({ label: key, value: key, })).filter(key => this.optionsSearch ? key.label.toLowerCase().includes(this.optionsSearch.toLowerCase()) : true)\r\n )\r\n )\r\n }\r\n deleteStage(index: number) {\r\n this.pipeline.deleteStage(index)\r\n }\r\n saveStage(index: number, stage: any) {\r\n this.pipeline.saveStage(index, stage)\r\n this.setActiveStage(undefined)\r\n }\r\n}\r\n","\r\n\r\n\r\n<section class=\"ion-margin\">\r\n <p>MongoDB aggregation pipeline builder for selected workflows. </p>\r\n</section>\r\n<lib-t-workflow-picker \r\n(valueChanged)=\"workflowChanged($event)\"\r\n(workflowNameChanged)=\"workflowNameChanged($event)\" \r\n[getWorkflowOptions]=\" workflows$\"\r\n [value]=\"(workflowId|async)||undefined\">\r\n</lib-t-workflow-picker>\r\n<mat-accordion multi *ngIf=\"workflowId|async\">\r\n <!-- Pipeline Accordion -->\r\n <mat-expansion-panel value=\"pipeline\">\r\n <mat-expansion-panel-header>\r\n <mat-panel-title>\r\n <mat-spinner color=\"accent\" *ngIf=\"isRunningPipeline\" class=\"header-spinner\"></mat-spinner>\r\n <mat-icon class=\"title-icon\">\r\n dynamic_form\r\n </mat-icon>\r\n {{isRunningPipeline?'Executing current Data pipeline...':'Data retrieval pipeline'}}\r\n </mat-panel-title>\r\n\r\n </mat-expansion-panel-header>\r\n <div class=\"content\">\r\n <!-- Mongodb aggregate pipelione stages management and edit start-->\r\n <div *ngIf=\"((stages | async)?.length || 0) ===0\" class=\"tree-instructions\">\r\n <mat-icon class=\"info-icon\" color=\"primary\">info</mat-icon>\r\n <span>\r\n Add stages to the pipeline below.<br>\r\n Each stage processes input documents by filtering, grouping, or calculating values. The output documents from\r\n one stage are passed to the next stage in the pipeline.\r\n </span>\r\n </div>\r\n\r\n <mat-nav-list style=\" background: var(--mat-tree-container-background-color);padding:0px;border-radius:8px\">\r\n\r\n\r\n <ng-container *ngFor=\"let stage of stages | async; trackBy: trackById;index as $index;last as isLast\">\r\n <mat-list-item [style.margin-top]=\"(activeStageIndex|async) ===$index?'4px':'0px'\"\r\n [class.mat-elevation-z8]=\"(activeStageIndex|async) ===$index\" class=\"stage-item\"\r\n (click)=\"setActiveStage($index)\" [activated]=\" (activeStageIndex|async) ===$index\">\r\n <span class=\"stage-index\" matListItemAvatar>{{$index + 1}} </span>\r\n <div matListItemTitle>\r\n <div style=\"line-height: normal;\">\r\n {{ stage.name || 'Stage ' }}\r\n </div>\r\n <div class=\"stage-inner-message\" *ngIf=\"!stage.name && (activeStageIndex|async) !==$index \">\r\n Incomplete , click to edit\r\n </div>\r\n\r\n </div>\r\n\r\n <button *ngIf=\"(activeStageIndex|async) ===$index||!stage.valid && (activeStageIndex|async) !==$index\"\r\n mat-icon-button matListItemMeta>\r\n <mat-icon color=\"primary\" *ngIf=\"(activeStageIndex|async) ===$index\">check_circle</mat-icon>\r\n\r\n <mat-icon color=\"warn\" *ngIf=\"!stage.valid && (activeStageIndex|async) !==$index\">\r\n warning\r\n </mat-icon>\r\n </button>\r\n </mat-list-item>\r\n <mat-divider></mat-divider>\r\n\r\n <app-aggregate-stage-editor [selectedStage]=\"stage\" [isRunningPipeline]=\"isRunningPipeline\"\r\n (deleteStage)=\"deleteStage($index)\" (saveStage)=\"saveStage($index,$event)\"\r\n *ngIf=\"(activeStageIndex|async) ===$index\"></app-aggregate-stage-editor>\r\n\r\n\r\n </ng-container>\r\n\r\n <mat-toolbar style=\"padding: 0px;\">\r\n\r\n <span class=\"spacer\"></span>\r\n <button class=\"stage-button\" [disabled]=\"isRunningPipeline\" color=\"primary\" (click)=\"addStage()\"\r\n mat-raised-button>\r\n Add\r\n <mat-icon>add</mat-icon>\r\n </button>\r\n </mat-toolbar>\r\n </mat-nav-list>\r\n\r\n <!-- Mongodb aggregate pipelione stages management and edit end -->\r\n </div>\r\n </mat-expansion-panel>\r\n\r\n <!-- Results Accordion -->\r\n <mat-expansion-panel value=\"results\">\r\n <mat-expansion-panel-header>\r\n <mat-panel-title>\r\n <mat-spinner color=\"accent\" *ngIf=\"isRunningPipeline\" class=\"header-spinner\"></mat-spinner>\r\n <mat-icon class=\"title-icon\">dataset</mat-icon>\r\n {{isRunningPipeline?'Running pipeline...':'Data Results'}}\r\n </mat-panel-title>\r\n </mat-expansion-panel-header>\r\n <div class=\"content\">\r\n <ng-container *ngIf=\"pipeLineResults | async as results; else noResults\">\r\n\r\n <lib-t-dynamic-data-view *ngIf=\"results\" [data]=\"results\"></lib-t-dynamic-data-view>\r\n <p *ngIf=\"!results\" color=\"medium\">\r\n\r\n No results available\r\n\r\n </p>\r\n\r\n </ng-container>\r\n <ng-template #noResults>\r\n <p color=\"medium\">No results available</p>\r\n </ng-template>\r\n </div>\r\n </mat-expansion-panel>\r\n\r\n <!-- AI Agent Accordion -->\r\n <mat-expansion-panel value=\"ai\">\r\n <mat-expansion-panel-header>\r\n <mat-panel-title>\r\n <mat-spinner *ngIf=\" aiIsGeneratingPipeline \" style=\"position: absolute;\" class=\"header-spinner\"></mat-spinner>\r\n <mat-icon class=\"title-icon\">tips_and_updates</mat-icon>\r\n {{ aiIsGeneratingPipeline ? 'Agent busy ...' : 'AI AGENT prompt' }}\r\n </mat-panel-title>\r\n </mat-expansion-panel-header>\r\n\r\n <div class=\"content\">\r\n @if( schemaLoadError$ | async){\r\n <div class=\"tree-instructions\" style=\"background: antiquewhite !important;\">\r\n <mat-icon class=\"info-icon\" color=\"warn\">error</mat-icon>\r\n <span> {{ schemaLoadError$ | async }}</span>\r\n </div>\r\n \r\n }\r\n <mat-list *ngFor=\"let chat of chatHistory|async;\">\r\n\r\n <mat-list-item class=\"chatContent chatItem\">\r\n <div class=\"chat\" style=\"background:bisque;text-align:end;\r\n border-radius: 18px 18px 0px 18px;\" matListItemTitle>\r\n <div>\r\n {{chat.user}}\r\n </div>\r\n <div style=\"opacity:0.6;line-height: normal;display: flex;align-items: center;justify-content: flex-end;\">\r\n {{chat.date|daysAgo}}\r\n <mat-icon class=\"sent-icon\">\r\n done_all\r\n </mat-icon>\r\n </div>\r\n </div>\r\n </mat-list-item>\r\n\r\n <mat-list-item style=\"margin-top: 16px;\" class=\"chatContent chatItem\" color=\"light\" lines=\"full\">\r\n <mat-icon style=\" margin-left: 0px;\r\n margin-top: 16px;\r\n margin-bottom: auto;\" matListItemIcon>smart_toy</mat-icon>\r\n <div class=\"chat\" style=\"text-align: left; \r\n padding-left: 16px; \r\n background: azure;\r\n border-radius: 0px 18px 18px 18px;\" *ngIf=\"!chat.assistance?.error\" matListItemTitle>\r\n <pre>\r\n {{chat. assistance.pipeline |json}}\r\n </pre>\r\n </div>\r\n <div *ngIf=\"chat.assistance?.error\" matListItemTitle>\r\n {{chat.assistance.error}}\r\n </div>\r\n </mat-list-item>\r\n\r\n\r\n </mat-list>\r\n <mat-list>\r\n <mat-list-item class=\"chatContent chatItem\">\r\n <textarea matListItemTitle #textarea style=\" width: calc(100% - 13px);\r\n border-radius: 14px;\r\n padding-right: 3px;\r\n padding-left: 8px;\" class=\"chat\" [value]=\" prompt|async\" (input)=\"onTextChange($event)\"\r\n placeholder=\"Provide a pipeline generation prompt\"></textarea>\r\n <button matListItemMeta style=\" margin-left: 4px;\r\n margin-right: 0px;\" color=\"primary\" mat-mini-fab [disabled]=\"aiIsGeneratingPipeline\" (click)=\"promptSubmit()\">\r\n\r\n <mat-icon style=\"margin: 0px !important;color:white\">send</mat-icon>\r\n <mat-spinner color=\"accent\" *ngIf=\" aiIsGeneratingPipeline \" \r\n class=\"submit-spinner\" ></mat-spinner>\r\n </button>\r\n \r\n </mat-list-item>\r\n\r\n </mat-list>\r\n\r\n\r\n <section *ngIf=\"showSuggestions\" class=\"showSuggestionContainer\">\r\n <!-- <mat-toolbar class=\"search-container\" style=\"background: inherit;\">\r\n\r\n\r\n <input type=\"search\" placeholder=\"Search options\" class=\"search-field\" (change)=\"onSearchChange($event)\">\r\n\r\n <mat-icon>\r\n search\r\n </mat-icon>\r\n </mat-toolbar> -->\r\n <mat-divider></mat-divider>\r\n <div style=\"padding: 8px;\">\r\n <div class=\"suggestion-container\">\r\n <div class=\"suggestion-column\">\r\n <h5>Collection document properties</h5>\r\n <div class=\"button-container\">\r\n <button *ngFor=\"let method of getSchemaProperties | async;trackBy: trackById\"\r\n (click)=\"selectSuggestionInput(method.value)\" color=\"accent\" mat-flat-button\r\n class=\"suggestion-button\">\r\n {{ method.label | titlecase }}\r\n </button>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n\r\n\r\n </div>\r\n </section>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n </div>\r\n </mat-expansion-panel>\r\n</mat-accordion>\r\n\r\n\r\n\r\n\r\n<ng-template\r\n cdkConnectedOverlay\r\n [cdkConnectedOverlayOpen]=\"disabled\"\r\n>\r\n<div style=\"position: absolute; top: 0; left: 0; width: 100%; height: 100%; background-color: rgba(0, 0, 0, 0.5);\">\r\n\r\n\r\n</div>\r\n</ng-template>\r\n"],"names":["i8","i2","i3","i6","i9"],"mappings":"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"}