@memberjunction/ng-core-entity-forms 5.42.0 → 5.44.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (270) hide show
  1. package/dist/__tests__/model-prediction.logic.test.d.ts +2 -0
  2. package/dist/__tests__/model-prediction.logic.test.d.ts.map +1 -0
  3. package/dist/__tests__/model-prediction.logic.test.js +140 -0
  4. package/dist/__tests__/model-prediction.logic.test.js.map +1 -0
  5. package/dist/lib/custom/AIAgentSessions/ai-agent-session-form.component.js +79 -105
  6. package/dist/lib/custom/AIAgentSessions/ai-agent-session-form.component.js.map +1 -1
  7. package/dist/lib/custom/AIAgents/FlowAgentType/flow-agent-form-section.component.js +7 -10
  8. package/dist/lib/custom/AIAgents/FlowAgentType/flow-agent-form-section.component.js.map +1 -1
  9. package/dist/lib/custom/AIAgents/add-action-dialog.component.d.ts.map +1 -1
  10. package/dist/lib/custom/AIAgents/add-action-dialog.component.js +46 -51
  11. package/dist/lib/custom/AIAgents/add-action-dialog.component.js.map +1 -1
  12. package/dist/lib/custom/AIAgents/ai-agent-form.component.d.ts +2 -0
  13. package/dist/lib/custom/AIAgents/ai-agent-form.component.d.ts.map +1 -1
  14. package/dist/lib/custom/AIAgents/ai-agent-form.component.js +300 -378
  15. package/dist/lib/custom/AIAgents/ai-agent-form.component.js.map +1 -1
  16. package/dist/lib/custom/AIAgents/create-sub-agent-dialog.component.js +22 -29
  17. package/dist/lib/custom/AIAgents/create-sub-agent-dialog.component.js.map +1 -1
  18. package/dist/lib/custom/AIAgents/new-agent-dialog.component.js +15 -17
  19. package/dist/lib/custom/AIAgents/new-agent-dialog.component.js.map +1 -1
  20. package/dist/lib/custom/AIAgents/prompt-selector-dialog.component.js +27 -34
  21. package/dist/lib/custom/AIAgents/prompt-selector-dialog.component.js.map +1 -1
  22. package/dist/lib/custom/AIAgents/sub-agent-selector-dialog.component.d.ts +11 -0
  23. package/dist/lib/custom/AIAgents/sub-agent-selector-dialog.component.d.ts.map +1 -1
  24. package/dist/lib/custom/AIAgents/sub-agent-selector-dialog.component.js +48 -47
  25. package/dist/lib/custom/AIAgents/sub-agent-selector-dialog.component.js.map +1 -1
  26. package/dist/lib/custom/AIPromptRuns/ai-prompt-run-form.component.js +438 -454
  27. package/dist/lib/custom/AIPromptRuns/ai-prompt-run-form.component.js.map +1 -1
  28. package/dist/lib/custom/AIPromptRuns/chat-message-viewer.component.js +48 -51
  29. package/dist/lib/custom/AIPromptRuns/chat-message-viewer.component.js.map +1 -1
  30. package/dist/lib/custom/AIPrompts/ai-prompt-form.component.js +253 -282
  31. package/dist/lib/custom/AIPrompts/ai-prompt-form.component.js.map +1 -1
  32. package/dist/lib/custom/Actions/action-execution-log-form.component.js +24 -33
  33. package/dist/lib/custom/Actions/action-execution-log-form.component.js.map +1 -1
  34. package/dist/lib/custom/Actions/action-form.component.js +263 -311
  35. package/dist/lib/custom/Actions/action-form.component.js.map +1 -1
  36. package/dist/lib/custom/Entities/entity-form.component.d.ts +6 -0
  37. package/dist/lib/custom/Entities/entity-form.component.d.ts.map +1 -1
  38. package/dist/lib/custom/Entities/entity-form.component.js +475 -493
  39. package/dist/lib/custom/Entities/entity-form.component.js.map +1 -1
  40. package/dist/lib/custom/Lists/list-form.component.js +122 -173
  41. package/dist/lib/custom/Lists/list-form.component.js.map +1 -1
  42. package/dist/lib/custom/Queries/query-form.component.js +190 -248
  43. package/dist/lib/custom/Queries/query-form.component.js.map +1 -1
  44. package/dist/lib/custom/Queries/query-run-dialog.component.js +19 -23
  45. package/dist/lib/custom/Queries/query-run-dialog.component.js.map +1 -1
  46. package/dist/lib/custom/RecordProcesses/record-process-form.component.d.ts +16 -0
  47. package/dist/lib/custom/RecordProcesses/record-process-form.component.d.ts.map +1 -0
  48. package/dist/lib/custom/RecordProcesses/record-process-form.component.js +54 -0
  49. package/dist/lib/custom/RecordProcesses/record-process-form.component.js.map +1 -0
  50. package/dist/lib/custom/SearchScopes/searchscopeprovider-form.component.js +23 -24
  51. package/dist/lib/custom/SearchScopes/searchscopeprovider-form.component.js.map +1 -1
  52. package/dist/lib/custom/Templates/template-param-dialog.component.d.ts.map +1 -1
  53. package/dist/lib/custom/Templates/template-param-dialog.component.js +25 -46
  54. package/dist/lib/custom/Templates/template-param-dialog.component.js.map +1 -1
  55. package/dist/lib/custom/Tests/test-form.component.js +100 -130
  56. package/dist/lib/custom/Tests/test-form.component.js.map +1 -1
  57. package/dist/lib/custom/Tests/test-run-form.component.js +187 -205
  58. package/dist/lib/custom/Tests/test-run-form.component.js.map +1 -1
  59. package/dist/lib/custom/Tests/test-suite-form.component.d.ts +8 -0
  60. package/dist/lib/custom/Tests/test-suite-form.component.d.ts.map +1 -1
  61. package/dist/lib/custom/Tests/test-suite-form.component.js +412 -489
  62. package/dist/lib/custom/Tests/test-suite-form.component.js.map +1 -1
  63. package/dist/lib/custom/Tests/test-suite-run-form.component.js +100 -126
  64. package/dist/lib/custom/Tests/test-suite-run-form.component.js.map +1 -1
  65. package/dist/lib/custom/ai-agent-run/ai-agent-run-analytics.component.js +166 -184
  66. package/dist/lib/custom/ai-agent-run/ai-agent-run-analytics.component.js.map +1 -1
  67. package/dist/lib/custom/ai-agent-run/ai-agent-run-step-detail.component.js +42 -61
  68. package/dist/lib/custom/ai-agent-run/ai-agent-run-step-detail.component.js.map +1 -1
  69. package/dist/lib/custom/ai-agent-run/ai-agent-run-timeline.component.js +8 -17
  70. package/dist/lib/custom/ai-agent-run/ai-agent-run-timeline.component.js.map +1 -1
  71. package/dist/lib/custom/ai-agent-run/ai-agent-run.component.d.ts +0 -2
  72. package/dist/lib/custom/ai-agent-run/ai-agent-run.component.d.ts.map +1 -1
  73. package/dist/lib/custom/ai-agent-run/ai-agent-run.component.js +183 -188
  74. package/dist/lib/custom/ai-agent-run/ai-agent-run.component.js.map +1 -1
  75. package/dist/lib/custom/ai-agent-run/flow/agent-run-flow.component.d.ts +108 -0
  76. package/dist/lib/custom/ai-agent-run/flow/agent-run-flow.component.d.ts.map +1 -0
  77. package/dist/lib/custom/ai-agent-run/flow/agent-run-flow.component.js +665 -0
  78. package/dist/lib/custom/ai-agent-run/flow/agent-run-flow.component.js.map +1 -0
  79. package/dist/lib/custom/ai-agent-run/flow/agent-run-flow.model.d.ts +94 -0
  80. package/dist/lib/custom/ai-agent-run/flow/agent-run-flow.model.d.ts.map +1 -0
  81. package/dist/lib/custom/ai-agent-run/flow/agent-run-flow.model.js +257 -0
  82. package/dist/lib/custom/ai-agent-run/flow/agent-run-flow.model.js.map +1 -0
  83. package/dist/lib/custom/ai-agent-run/flow/constellation.component.d.ts +38 -0
  84. package/dist/lib/custom/ai-agent-run/flow/constellation.component.d.ts.map +1 -0
  85. package/dist/lib/custom/ai-agent-run/flow/constellation.component.js +200 -0
  86. package/dist/lib/custom/ai-agent-run/flow/constellation.component.js.map +1 -0
  87. package/dist/lib/custom/ai-agent-run/flow/flame-cascade.component.d.ts +44 -0
  88. package/dist/lib/custom/ai-agent-run/flow/flame-cascade.component.d.ts.map +1 -0
  89. package/dist/lib/custom/ai-agent-run/flow/flame-cascade.component.js +180 -0
  90. package/dist/lib/custom/ai-agent-run/flow/flame-cascade.component.js.map +1 -0
  91. package/dist/lib/custom/ai-agent-run/flow/flow-svg.util.d.ts +12 -0
  92. package/dist/lib/custom/ai-agent-run/flow/flow-svg.util.d.ts.map +1 -0
  93. package/dist/lib/custom/ai-agent-run/flow/flow-svg.util.js +46 -0
  94. package/dist/lib/custom/ai-agent-run/flow/flow-svg.util.js.map +1 -0
  95. package/dist/lib/custom/ai-agent-run/flow/flowchart.component.d.ts +64 -0
  96. package/dist/lib/custom/ai-agent-run/flow/flowchart.component.d.ts.map +1 -0
  97. package/dist/lib/custom/ai-agent-run/flow/flowchart.component.js +267 -0
  98. package/dist/lib/custom/ai-agent-run/flow/flowchart.component.js.map +1 -0
  99. package/dist/lib/custom/ai-agent-run/flow/pan-zoom.d.ts +53 -0
  100. package/dist/lib/custom/ai-agent-run/flow/pan-zoom.d.ts.map +1 -0
  101. package/dist/lib/custom/ai-agent-run/flow/pan-zoom.js +111 -0
  102. package/dist/lib/custom/ai-agent-run/flow/pan-zoom.js.map +1 -0
  103. package/dist/lib/custom/ai-agent-run/flow/subway-lines.component.d.ts +42 -0
  104. package/dist/lib/custom/ai-agent-run/flow/subway-lines.component.d.ts.map +1 -0
  105. package/dist/lib/custom/ai-agent-run/flow/subway-lines.component.js +193 -0
  106. package/dist/lib/custom/ai-agent-run/flow/subway-lines.component.js.map +1 -0
  107. package/dist/lib/custom/custom-forms.module.d.ts +58 -49
  108. package/dist/lib/custom/custom-forms.module.d.ts.map +1 -1
  109. package/dist/lib/custom/custom-forms.module.js +64 -16
  110. package/dist/lib/custom/custom-forms.module.js.map +1 -1
  111. package/dist/lib/custom/shared/entity-selector-dialog.component.d.ts +2 -0
  112. package/dist/lib/custom/shared/entity-selector-dialog.component.d.ts.map +1 -1
  113. package/dist/lib/custom/shared/entity-selector-dialog.component.js +25 -25
  114. package/dist/lib/custom/shared/entity-selector-dialog.component.js.map +1 -1
  115. package/dist/lib/generated/Entities/MJAIAgent/mjaiagent.form.component.d.ts.map +1 -1
  116. package/dist/lib/generated/Entities/MJAIAgent/mjaiagent.form.component.js +280 -216
  117. package/dist/lib/generated/Entities/MJAIAgent/mjaiagent.form.component.js.map +1 -1
  118. package/dist/lib/generated/Entities/MJAIAgentChannel/mjaiagentchannel.form.component.js +25 -21
  119. package/dist/lib/generated/Entities/MJAIAgentChannel/mjaiagentchannel.form.component.js.map +1 -1
  120. package/dist/lib/generated/Entities/MJAIAgentRun/mjaiagentrun.form.component.d.ts.map +1 -1
  121. package/dist/lib/generated/Entities/MJAIAgentRun/mjaiagentrun.form.component.js +68 -14
  122. package/dist/lib/generated/Entities/MJAIAgentRun/mjaiagentrun.form.component.js.map +1 -1
  123. package/dist/lib/generated/Entities/MJAIAgentSession/mjaiagentsession.form.component.d.ts.map +1 -1
  124. package/dist/lib/generated/Entities/MJAIAgentSession/mjaiagentsession.form.component.js +44 -32
  125. package/dist/lib/generated/Entities/MJAIAgentSession/mjaiagentsession.form.component.js.map +1 -1
  126. package/dist/lib/generated/Entities/MJAIAgentSkill/mjaiagentskill.form.component.d.ts +10 -0
  127. package/dist/lib/generated/Entities/MJAIAgentSkill/mjaiagentskill.form.component.d.ts.map +1 -0
  128. package/dist/lib/generated/Entities/MJAIAgentSkill/mjaiagentskill.form.component.js +66 -0
  129. package/dist/lib/generated/Entities/MJAIAgentSkill/mjaiagentskill.form.component.js.map +1 -0
  130. package/dist/lib/generated/Entities/MJAIPrompt/mjaiprompt.form.component.d.ts.map +1 -1
  131. package/dist/lib/generated/Entities/MJAIPrompt/mjaiprompt.form.component.js +55 -19
  132. package/dist/lib/generated/Entities/MJAIPrompt/mjaiprompt.form.component.js.map +1 -1
  133. package/dist/lib/generated/Entities/MJAIPromptRun/mjaipromptrun.form.component.d.ts.map +1 -1
  134. package/dist/lib/generated/Entities/MJAIPromptRun/mjaipromptrun.form.component.js +28 -10
  135. package/dist/lib/generated/Entities/MJAIPromptRun/mjaipromptrun.form.component.js.map +1 -1
  136. package/dist/lib/generated/Entities/MJAISkill/mjaiskill.form.component.d.ts +10 -0
  137. package/dist/lib/generated/Entities/MJAISkill/mjaiskill.form.component.d.ts.map +1 -0
  138. package/dist/lib/generated/Entities/MJAISkill/mjaiskill.form.component.js +167 -0
  139. package/dist/lib/generated/Entities/MJAISkill/mjaiskill.form.component.js.map +1 -0
  140. package/dist/lib/generated/Entities/MJAISkillAction/mjaiskillaction.form.component.d.ts +10 -0
  141. package/dist/lib/generated/Entities/MJAISkillAction/mjaiskillaction.form.component.d.ts.map +1 -0
  142. package/dist/lib/generated/Entities/MJAISkillAction/mjaiskillaction.form.component.js +64 -0
  143. package/dist/lib/generated/Entities/MJAISkillAction/mjaiskillaction.form.component.js.map +1 -0
  144. package/dist/lib/generated/Entities/MJAISkillPermission/mjaiskillpermission.form.component.d.ts +10 -0
  145. package/dist/lib/generated/Entities/MJAISkillPermission/mjaiskillpermission.form.component.d.ts.map +1 -0
  146. package/dist/lib/generated/Entities/MJAISkillPermission/mjaiskillpermission.form.component.js +82 -0
  147. package/dist/lib/generated/Entities/MJAISkillPermission/mjaiskillpermission.form.component.js.map +1 -0
  148. package/dist/lib/generated/Entities/MJAISkillSubAgent/mjaiskillsubagent.form.component.d.ts +10 -0
  149. package/dist/lib/generated/Entities/MJAISkillSubAgent/mjaiskillsubagent.form.component.d.ts.map +1 -0
  150. package/dist/lib/generated/Entities/MJAISkillSubAgent/mjaiskillsubagent.form.component.js +64 -0
  151. package/dist/lib/generated/Entities/MJAISkillSubAgent/mjaiskillsubagent.form.component.js.map +1 -0
  152. package/dist/lib/generated/Entities/MJAction/mjaction.form.component.d.ts.map +1 -1
  153. package/dist/lib/generated/Entities/MJAction/mjaction.form.component.js +35 -17
  154. package/dist/lib/generated/Entities/MJAction/mjaction.form.component.js.map +1 -1
  155. package/dist/lib/generated/Entities/MJApplication/mjapplication.form.component.d.ts.map +1 -1
  156. package/dist/lib/generated/Entities/MJApplication/mjapplication.form.component.js +59 -51
  157. package/dist/lib/generated/Entities/MJApplication/mjapplication.form.component.js.map +1 -1
  158. package/dist/lib/generated/Entities/MJCollection/mjcollection.form.component.d.ts.map +1 -1
  159. package/dist/lib/generated/Entities/MJCollection/mjcollection.form.component.js +25 -7
  160. package/dist/lib/generated/Entities/MJCollection/mjcollection.form.component.js.map +1 -1
  161. package/dist/lib/generated/Entities/MJCollectionArtifact/mjcollectionartifact.form.component.js +11 -7
  162. package/dist/lib/generated/Entities/MJCollectionArtifact/mjcollectionartifact.form.component.js.map +1 -1
  163. package/dist/lib/generated/Entities/MJConversation/mjconversation.form.component.d.ts.map +1 -1
  164. package/dist/lib/generated/Entities/MJConversation/mjconversation.form.component.js +56 -46
  165. package/dist/lib/generated/Entities/MJConversation/mjconversation.form.component.js.map +1 -1
  166. package/dist/lib/generated/Entities/MJConversationDetail/mjconversationdetail.form.component.d.ts.map +1 -1
  167. package/dist/lib/generated/Entities/MJConversationDetail/mjconversationdetail.form.component.js +73 -59
  168. package/dist/lib/generated/Entities/MJConversationDetail/mjconversationdetail.form.component.js.map +1 -1
  169. package/dist/lib/generated/Entities/MJDuplicateRunDetailMatch/mjduplicaterundetailmatch.form.component.d.ts.map +1 -1
  170. package/dist/lib/generated/Entities/MJDuplicateRunDetailMatch/mjduplicaterundetailmatch.form.component.js +24 -4
  171. package/dist/lib/generated/Entities/MJDuplicateRunDetailMatch/mjduplicaterundetailmatch.form.component.js.map +1 -1
  172. package/dist/lib/generated/Entities/MJEntity/mjentity.form.component.d.ts.map +1 -1
  173. package/dist/lib/generated/Entities/MJEntity/mjentity.form.component.js +137 -87
  174. package/dist/lib/generated/Entities/MJEntity/mjentity.form.component.js.map +1 -1
  175. package/dist/lib/generated/Entities/MJEntityActionInvocation/mjentityactioninvocation.form.component.js +10 -8
  176. package/dist/lib/generated/Entities/MJEntityActionInvocation/mjentityactioninvocation.form.component.js.map +1 -1
  177. package/dist/lib/generated/Entities/MJEntityDocument/mjentitydocument.form.component.d.ts.map +1 -1
  178. package/dist/lib/generated/Entities/MJEntityDocument/mjentitydocument.form.component.js +47 -29
  179. package/dist/lib/generated/Entities/MJEntityDocument/mjentitydocument.form.component.js.map +1 -1
  180. package/dist/lib/generated/Entities/MJExperiment/mjexperiment.form.component.d.ts +10 -0
  181. package/dist/lib/generated/Entities/MJExperiment/mjexperiment.form.component.d.ts.map +1 -0
  182. package/dist/lib/generated/Entities/MJExperiment/mjexperiment.form.component.js +99 -0
  183. package/dist/lib/generated/Entities/MJExperiment/mjexperiment.form.component.js.map +1 -0
  184. package/dist/lib/generated/Entities/MJExperimentSession/mjexperimentsession.form.component.d.ts +10 -0
  185. package/dist/lib/generated/Entities/MJExperimentSession/mjexperimentsession.form.component.d.ts.map +1 -0
  186. package/dist/lib/generated/Entities/MJExperimentSession/mjexperimentsession.form.component.js +101 -0
  187. package/dist/lib/generated/Entities/MJExperimentSession/mjexperimentsession.form.component.js.map +1 -0
  188. package/dist/lib/generated/Entities/MJExperimentSessionIteration/mjexperimentsessioniteration.form.component.d.ts +10 -0
  189. package/dist/lib/generated/Entities/MJExperimentSessionIteration/mjexperimentsessioniteration.form.component.d.ts.map +1 -0
  190. package/dist/lib/generated/Entities/MJExperimentSessionIteration/mjexperimentsessioniteration.form.component.js +115 -0
  191. package/dist/lib/generated/Entities/MJExperimentSessionIteration/mjexperimentsessioniteration.form.component.js.map +1 -0
  192. package/dist/lib/generated/Entities/MJFile/mjfile.form.component.d.ts.map +1 -1
  193. package/dist/lib/generated/Entities/MJFile/mjfile.form.component.js +63 -9
  194. package/dist/lib/generated/Entities/MJFile/mjfile.form.component.js.map +1 -1
  195. package/dist/lib/generated/Entities/MJFileStorageProvider/mjfilestorageprovider.form.component.d.ts.map +1 -1
  196. package/dist/lib/generated/Entities/MJFileStorageProvider/mjfilestorageprovider.form.component.js +32 -14
  197. package/dist/lib/generated/Entities/MJFileStorageProvider/mjfilestorageprovider.form.component.js.map +1 -1
  198. package/dist/lib/generated/Entities/MJMLAlgorithm/mjmlalgorithm.form.component.d.ts +10 -0
  199. package/dist/lib/generated/Entities/MJMLAlgorithm/mjmlalgorithm.form.component.d.ts.map +1 -0
  200. package/dist/lib/generated/Entities/MJMLAlgorithm/mjmlalgorithm.form.component.js +161 -0
  201. package/dist/lib/generated/Entities/MJMLAlgorithm/mjmlalgorithm.form.component.js.map +1 -0
  202. package/dist/lib/generated/Entities/MJMLAlgorithmUseCase/mjmlalgorithmusecase.form.component.d.ts +10 -0
  203. package/dist/lib/generated/Entities/MJMLAlgorithmUseCase/mjmlalgorithmusecase.form.component.d.ts.map +1 -0
  204. package/dist/lib/generated/Entities/MJMLAlgorithmUseCase/mjmlalgorithmusecase.form.component.js +89 -0
  205. package/dist/lib/generated/Entities/MJMLAlgorithmUseCase/mjmlalgorithmusecase.form.component.js.map +1 -0
  206. package/dist/lib/generated/Entities/MJMLAlgorithmUseCaseRanking/mjmlalgorithmusecaseranking.form.component.d.ts +10 -0
  207. package/dist/lib/generated/Entities/MJMLAlgorithmUseCaseRanking/mjmlalgorithmusecaseranking.form.component.d.ts.map +1 -0
  208. package/dist/lib/generated/Entities/MJMLAlgorithmUseCaseRanking/mjmlalgorithmusecaseranking.form.component.js +76 -0
  209. package/dist/lib/generated/Entities/MJMLAlgorithmUseCaseRanking/mjmlalgorithmusecaseranking.form.component.js.map +1 -0
  210. package/dist/lib/generated/Entities/MJMLModel/mjmlmodel.form.component.d.ts +10 -0
  211. package/dist/lib/generated/Entities/MJMLModel/mjmlmodel.form.component.d.ts.map +1 -0
  212. package/dist/lib/generated/Entities/MJMLModel/mjmlmodel.form.component.js +141 -0
  213. package/dist/lib/generated/Entities/MJMLModel/mjmlmodel.form.component.js.map +1 -0
  214. package/dist/lib/generated/Entities/MJMLModelScoringBinding/mjmlmodelscoringbinding.form.component.d.ts +10 -0
  215. package/dist/lib/generated/Entities/MJMLModelScoringBinding/mjmlmodelscoringbinding.form.component.d.ts.map +1 -0
  216. package/dist/lib/generated/Entities/MJMLModelScoringBinding/mjmlmodelscoringbinding.form.component.js +88 -0
  217. package/dist/lib/generated/Entities/MJMLModelScoringBinding/mjmlmodelscoringbinding.form.component.js.map +1 -0
  218. package/dist/lib/generated/Entities/MJMLTrainingPipeline/mjmltrainingpipeline.form.component.d.ts +10 -0
  219. package/dist/lib/generated/Entities/MJMLTrainingPipeline/mjmltrainingpipeline.form.component.d.ts.map +1 -0
  220. package/dist/lib/generated/Entities/MJMLTrainingPipeline/mjmltrainingpipeline.form.component.js +143 -0
  221. package/dist/lib/generated/Entities/MJMLTrainingPipeline/mjmltrainingpipeline.form.component.js.map +1 -0
  222. package/dist/lib/generated/Entities/MJMLTrainingRun/mjmltrainingrun.form.component.d.ts +10 -0
  223. package/dist/lib/generated/Entities/MJMLTrainingRun/mjmltrainingrun.form.component.d.ts.map +1 -0
  224. package/dist/lib/generated/Entities/MJMLTrainingRun/mjmltrainingrun.form.component.js +110 -0
  225. package/dist/lib/generated/Entities/MJMLTrainingRun/mjmltrainingrun.form.component.js.map +1 -0
  226. package/dist/lib/generated/Entities/MJOpenApp/mjopenapp.form.component.d.ts.map +1 -1
  227. package/dist/lib/generated/Entities/MJOpenApp/mjopenapp.form.component.js +56 -24
  228. package/dist/lib/generated/Entities/MJOpenApp/mjopenapp.form.component.js.map +1 -1
  229. package/dist/lib/generated/Entities/MJProcessRun/mjprocessrun.form.component.js +19 -17
  230. package/dist/lib/generated/Entities/MJProcessRun/mjprocessrun.form.component.js.map +1 -1
  231. package/dist/lib/generated/Entities/MJRecordProcess/mjrecordprocess.form.component.d.ts.map +1 -1
  232. package/dist/lib/generated/Entities/MJRecordProcess/mjrecordprocess.form.component.js +46 -26
  233. package/dist/lib/generated/Entities/MJRecordProcess/mjrecordprocess.form.component.js.map +1 -1
  234. package/dist/lib/generated/Entities/MJRemoteOperation/mjremoteoperation.form.component.js +12 -6
  235. package/dist/lib/generated/Entities/MJRemoteOperation/mjremoteoperation.form.component.js.map +1 -1
  236. package/dist/lib/generated/Entities/MJRole/mjrole.form.component.d.ts.map +1 -1
  237. package/dist/lib/generated/Entities/MJRole/mjrole.form.component.js +36 -18
  238. package/dist/lib/generated/Entities/MJRole/mjrole.form.component.js.map +1 -1
  239. package/dist/lib/generated/Entities/MJSchemaInfo/mjschemainfo.form.component.js +8 -6
  240. package/dist/lib/generated/Entities/MJSchemaInfo/mjschemainfo.form.component.js.map +1 -1
  241. package/dist/lib/generated/Entities/MJScopedPromptPart/mjscopedpromptpart.form.component.d.ts +10 -0
  242. package/dist/lib/generated/Entities/MJScopedPromptPart/mjscopedpromptpart.form.component.d.ts.map +1 -0
  243. package/dist/lib/generated/Entities/MJScopedPromptPart/mjscopedpromptpart.form.component.js +78 -0
  244. package/dist/lib/generated/Entities/MJScopedPromptPart/mjscopedpromptpart.form.component.js.map +1 -0
  245. package/dist/lib/generated/Entities/MJUser/mjuser.form.component.d.ts.map +1 -1
  246. package/dist/lib/generated/Entities/MJUser/mjuser.form.component.js +145 -109
  247. package/dist/lib/generated/Entities/MJUser/mjuser.form.component.js.map +1 -1
  248. package/dist/lib/generated/generated-forms.module.d.ts +356 -335
  249. package/dist/lib/generated/generated-forms.module.d.ts.map +1 -1
  250. package/dist/lib/generated/generated-forms.module.js +304 -226
  251. package/dist/lib/generated/generated-forms.module.js.map +1 -1
  252. package/dist/lib/panels/ai-agents/agent-realtime.panel.js +44 -44
  253. package/dist/lib/panels/ai-agents/agent-realtime.panel.js.map +1 -1
  254. package/dist/lib/panels/ai-skill-sharing/ai-skill-sharing-panel.component.d.ts +43 -0
  255. package/dist/lib/panels/ai-skill-sharing/ai-skill-sharing-panel.component.d.ts.map +1 -0
  256. package/dist/lib/panels/ai-skill-sharing/ai-skill-sharing-panel.component.js +240 -0
  257. package/dist/lib/panels/ai-skill-sharing/ai-skill-sharing-panel.component.js.map +1 -0
  258. package/dist/lib/panels/model-predictions/model-prediction.logic.d.ts +69 -0
  259. package/dist/lib/panels/model-predictions/model-prediction.logic.d.ts.map +1 -0
  260. package/dist/lib/panels/model-predictions/model-prediction.logic.js +130 -0
  261. package/dist/lib/panels/model-predictions/model-prediction.logic.js.map +1 -0
  262. package/dist/lib/panels/model-predictions/model-prediction.panel.d.ts +83 -0
  263. package/dist/lib/panels/model-predictions/model-prediction.panel.d.ts.map +1 -0
  264. package/dist/lib/panels/model-predictions/model-prediction.panel.js +293 -0
  265. package/dist/lib/panels/model-predictions/model-prediction.panel.js.map +1 -0
  266. package/package.json +38 -36
  267. package/dist/lib/custom/ai-agent-run/ai-agent-run-visualization.component.d.ts +0 -82
  268. package/dist/lib/custom/ai-agent-run/ai-agent-run-visualization.component.d.ts.map +0 -1
  269. package/dist/lib/custom/ai-agent-run/ai-agent-run-visualization.component.js +0 -1033
  270. package/dist/lib/custom/ai-agent-run/ai-agent-run-visualization.component.js.map +0 -1
@@ -0,0 +1,54 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ import { Component } from '@angular/core';
8
+ import { RegisterClass } from '@memberjunction/global';
9
+ import { BaseFormComponent } from '@memberjunction/ng-base-forms';
10
+ import { MJRecordProcessFormComponent } from '../../generated/Entities/MJRecordProcess/mjrecordprocess.form.component';
11
+ import * as i0 from "@angular/core";
12
+ import * as i1 from "@memberjunction/ng-base-forms";
13
+ import * as i2 from "@memberjunction/ng-record-process-studio";
14
+ function RecordProcessFormComponentExtended_Conditional_0_Template(rf, ctx) { if (rf & 1) {
15
+ const _r1 = i0.ɵɵgetCurrentView();
16
+ i0.ɵɵelementStart(0, "mj-record-form-container", 1);
17
+ i0.ɵɵlistener("Navigate", function RecordProcessFormComponentExtended_Conditional_0_Template_mj_record_form_container_Navigate_0_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.OnFormNavigate($event)); })("DeleteRequested", function RecordProcessFormComponentExtended_Conditional_0_Template_mj_record_form_container_DeleteRequested_0_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.OnDeleteRequested()); })("FavoriteToggled", function RecordProcessFormComponentExtended_Conditional_0_Template_mj_record_form_container_FavoriteToggled_0_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.OnFavoriteToggled()); })("HistoryRequested", function RecordProcessFormComponentExtended_Conditional_0_Template_mj_record_form_container_HistoryRequested_0_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.OnHistoryRequested()); })("ListManagementRequested", function RecordProcessFormComponentExtended_Conditional_0_Template_mj_record_form_container_ListManagementRequested_0_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.OnListManagementRequested()); });
18
+ i0.ɵɵelement(1, "mj-record-process-editor", 2);
19
+ i0.ɵɵelementEnd();
20
+ } if (rf & 2) {
21
+ const ctx_r1 = i0.ɵɵnextContext();
22
+ i0.ɵɵproperty("Record", ctx_r1.record)("FormComponent", ctx_r1);
23
+ i0.ɵɵadvance();
24
+ i0.ɵɵproperty("Record", ctx_r1.record)("ShowToolbar", false)("Provider", ctx_r1.ProviderToUse);
25
+ } }
26
+ /**
27
+ * Custom form override for `MJ: Record Processes`. Replaces the generated field layout (which exposes the
28
+ * rules as a raw `Configuration` JSON textarea) with the visual `<mj-record-process-editor>` — the same
29
+ * authoring surface used in the Bulk Operations app — so editing a process record anywhere in Explorer
30
+ * gets the business-friendly rules builder + inline dry-run preview. The form's container owns Save; the
31
+ * editor mutates the record in place (ShowToolbar=false).
32
+ */
33
+ let RecordProcessFormComponentExtended = class RecordProcessFormComponentExtended extends MJRecordProcessFormComponent {
34
+ static { this.ɵfac = /*@__PURE__*/ (() => { let ɵRecordProcessFormComponentExtended_BaseFactory; return function RecordProcessFormComponentExtended_Factory(__ngFactoryType__) { return (ɵRecordProcessFormComponentExtended_BaseFactory || (ɵRecordProcessFormComponentExtended_BaseFactory = i0.ɵɵgetInheritedFactory(RecordProcessFormComponentExtended)))(__ngFactoryType__ || RecordProcessFormComponentExtended); }; })(); }
35
+ static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: RecordProcessFormComponentExtended, selectors: [["mj-record-process-form-extended"]], standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 1, vars: 1, consts: [[3, "Record", "FormComponent"], [3, "Navigate", "DeleteRequested", "FavoriteToggled", "HistoryRequested", "ListManagementRequested", "Record", "FormComponent"], [3, "Record", "ShowToolbar", "Provider"]], template: function RecordProcessFormComponentExtended_Template(rf, ctx) { if (rf & 1) {
36
+ i0.ɵɵconditionalCreate(0, RecordProcessFormComponentExtended_Conditional_0_Template, 2, 5, "mj-record-form-container", 0);
37
+ } if (rf & 2) {
38
+ i0.ɵɵconditional(ctx.record ? 0 : -1);
39
+ } }, dependencies: [i1.MjRecordFormContainerComponent, i2.RecordProcessEditorComponent], encapsulation: 2 }); }
40
+ };
41
+ RecordProcessFormComponentExtended = __decorate([
42
+ RegisterClass(BaseFormComponent, 'MJ: Record Processes')
43
+ ], RecordProcessFormComponentExtended);
44
+ export { RecordProcessFormComponentExtended };
45
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(RecordProcessFormComponentExtended, [{
46
+ type: Component,
47
+ args: [{ standalone: false, selector: 'mj-record-process-form-extended', template: "@if (record) {\n<mj-record-form-container [Record]=\"record\" [FormComponent]=\"this\"\n (Navigate)=\"OnFormNavigate($event)\"\n (DeleteRequested)=\"OnDeleteRequested()\"\n (FavoriteToggled)=\"OnFavoriteToggled()\"\n (HistoryRequested)=\"OnHistoryRequested()\"\n (ListManagementRequested)=\"OnListManagementRequested()\">\n\n <mj-record-process-editor [Record]=\"record\" [ShowToolbar]=\"false\" [Provider]=\"ProviderToUse\"></mj-record-process-editor>\n\n</mj-record-form-container>\n}\n" }]
48
+ }], null, null); })();
49
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(RecordProcessFormComponentExtended, { className: "RecordProcessFormComponentExtended", filePath: "src/lib/custom/RecordProcesses/record-process-form.component.ts", lineNumber: 19 }); })();
50
+ /** Tree-shaking guard so the override registers with the ClassFactory. */
51
+ export function LoadRecordProcessFormComponentExtended() {
52
+ // intentionally empty
53
+ }
54
+ //# sourceMappingURL=record-process-form.component.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"record-process-form.component.js","sourceRoot":"","sources":["../../../../src/lib/custom/RecordProcesses/record-process-form.component.ts","../../../../src/lib/custom/RecordProcesses/record-process-form.component.html"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EAAE,4BAA4B,EAAE,MAAM,yEAAyE,CAAC;;;;;;ICFvH,mDAK4D;IAAxD,AADA,AADA,AADA,AADA,oOAAY,6BAAsB,KAAC,+NAChB,0BAAmB,KAAC,+NACpB,0BAAmB,KAAC,iOACnB,2BAAoB,KAAC,+OACd,kCAA2B,KAAC;IAEvD,8CAAwH;IAE5H,iBAA2B;;;IATiB,AAAlB,sCAAiB,yBAAuB;IAOpC,cAAiB;IAAuB,AAAtB,AAAlB,sCAAiB,sBAAsB,kCAA2B;;ADHhG;;;;;;GAMG;AAOI,IAAM,kCAAkC,GAAxC,MAAM,kCAAmC,SAAQ,4BAA4B;4TAAvE,kCAAkC,yBAAlC,kCAAkC;oEAAlC,kCAAkC;YClB/C,yHAAc;;YAAd,qCAWC;;;ADOY,kCAAkC;IAN9C,aAAa,CAAC,iBAAiB,EAAE,sBAAsB,CAAC;GAM5C,kCAAkC,CAAwC;;iFAA1E,kCAAkC;cAL9C,SAAS;6BACM,KAAK,YACP,iCAAiC;;kFAGlC,kCAAkC;AAE/C,0EAA0E;AAC1E,MAAM,UAAU,sCAAsC;IAClD,sBAAsB;AAC1B,CAAC","sourcesContent":["import { Component } from '@angular/core';\nimport { RegisterClass } from '@memberjunction/global';\nimport { BaseFormComponent } from '@memberjunction/ng-base-forms';\nimport { MJRecordProcessFormComponent } from '../../generated/Entities/MJRecordProcess/mjrecordprocess.form.component';\n\n/**\n * Custom form override for `MJ: Record Processes`. Replaces the generated field layout (which exposes the\n * rules as a raw `Configuration` JSON textarea) with the visual `<mj-record-process-editor>` — the same\n * authoring surface used in the Bulk Operations app — so editing a process record anywhere in Explorer\n * gets the business-friendly rules builder + inline dry-run preview. The form's container owns Save; the\n * editor mutates the record in place (ShowToolbar=false).\n */\n@RegisterClass(BaseFormComponent, 'MJ: Record Processes')\n@Component({\n standalone: false,\n selector: 'mj-record-process-form-extended',\n templateUrl: './record-process-form.component.html',\n})\nexport class RecordProcessFormComponentExtended extends MJRecordProcessFormComponent {}\n\n/** Tree-shaking guard so the override registers with the ClassFactory. */\nexport function LoadRecordProcessFormComponentExtended(): void {\n // intentionally empty\n}\n","@if (record) {\n<mj-record-form-container [Record]=\"record\" [FormComponent]=\"this\"\n (Navigate)=\"OnFormNavigate($event)\"\n (DeleteRequested)=\"OnDeleteRequested()\"\n (FavoriteToggled)=\"OnFavoriteToggled()\"\n (HistoryRequested)=\"OnHistoryRequested()\"\n (ListManagementRequested)=\"OnListManagementRequested()\">\n\n <mj-record-process-editor [Record]=\"record\" [ShowToolbar]=\"false\" [Provider]=\"ProviderToUse\"></mj-record-process-editor>\n\n</mj-record-form-container>\n}\n"]}
@@ -27,17 +27,17 @@ import { BaseFormComponent } from '@memberjunction/ng-base-forms';
27
27
  import { MJSearchScopeProviderFormComponent } from '../../generated/Entities/MJSearchScopeProvider/mjsearchscopeprovider.form.component';
28
28
  import * as i0 from "@angular/core";
29
29
  import * as i1 from "@angular/forms";
30
- import * as i2 from "@memberjunction/ng-base-forms";
30
+ import * as i2 from "@memberjunction/ng-ui-components";
31
+ import * as i3 from "@memberjunction/ng-base-forms";
31
32
  const _forTrack0 = ($index, $item) => $item.ID;
32
33
  function MJSearchScopeProviderFormComponentExtended_Conditional_6_Template(rf, ctx) { if (rf & 1) {
33
- i0.ɵɵelementStart(0, "p", 5);
34
- i0.ɵɵelement(1, "i", 20);
35
- i0.ɵɵtext(2);
34
+ i0.ɵɵelementStart(0, "mj-alert", 5);
35
+ i0.ɵɵtext(1);
36
36
  i0.ɵɵelementEnd();
37
37
  } if (rf & 2) {
38
38
  const ctx_r0 = i0.ɵɵnextContext();
39
- i0.ɵɵadvance(2);
40
- i0.ɵɵtextInterpolate1(" Could not load provider catalog \u2014 ", ctx_r0.LoadError, " ");
39
+ i0.ɵɵadvance();
40
+ i0.ɵɵtextInterpolate1("Could not load provider catalog \u2014 ", ctx_r0.LoadError);
41
41
  } }
42
42
  function MJSearchScopeProviderFormComponentExtended_For_11_Template(rf, ctx) { if (rf & 1) {
43
43
  i0.ɵɵelementStart(0, "option", 8);
@@ -50,25 +50,24 @@ function MJSearchScopeProviderFormComponentExtended_For_11_Template(rf, ctx) { i
50
50
  i0.ɵɵtextInterpolate4(" ", option_r2.Name, " \u2014 ", option_r2.DriverClass, "", option_r2.IsRegisteredOnServer ? "" : " (not registered on this server)", "", option_r2.Status !== "Active" ? " [" + option_r2.Status + "]" : "", " ");
51
51
  } }
52
52
  function MJSearchScopeProviderFormComponentExtended_Conditional_12_Template(rf, ctx) { if (rf & 1) {
53
- i0.ɵɵelementStart(0, "p", 9);
54
- i0.ɵɵelement(1, "i", 21);
55
- i0.ɵɵtext(2, " The selected provider's ");
56
- i0.ɵɵelementStart(3, "code");
57
- i0.ɵɵtext(4, "DriverClass");
53
+ i0.ɵɵelementStart(0, "mj-alert", 9);
54
+ i0.ɵɵtext(1, " The selected provider's ");
55
+ i0.ɵɵelementStart(2, "code");
56
+ i0.ɵɵtext(3, "DriverClass");
58
57
  i0.ɵɵelementEnd();
59
- i0.ɵɵtext(5, " is not registered with this MJServer build. Searches using this ");
60
- i0.ɵɵelementStart(6, "code");
61
- i0.ɵɵtext(7, "SearchScopeProvider");
58
+ i0.ɵɵtext(4, " is not registered with this MJServer build. Searches using this ");
59
+ i0.ɵɵelementStart(5, "code");
60
+ i0.ɵɵtext(6, "SearchScopeProvider");
62
61
  i0.ɵɵelementEnd();
63
- i0.ɵɵtext(8, " will return no results until the package that registers ");
64
- i0.ɵɵelementStart(9, "code");
65
- i0.ɵɵtext(10);
62
+ i0.ɵɵtext(7, " will return no results until the package that registers ");
63
+ i0.ɵɵelementStart(8, "code");
64
+ i0.ɵɵtext(9);
66
65
  i0.ɵɵelementEnd();
67
- i0.ɵɵtext(11, " is installed. ");
66
+ i0.ɵɵtext(10, " is installed. ");
68
67
  i0.ɵɵelementEnd();
69
68
  } if (rf & 2) {
70
69
  const ctx_r0 = i0.ɵɵnextContext();
71
- i0.ɵɵadvance(10);
70
+ i0.ɵɵadvance(9);
72
71
  i0.ɵɵtextInterpolate(ctx_r0.SelectedProvider == null ? null : ctx_r0.SelectedProvider.DriverClass);
73
72
  } }
74
73
  let MJSearchScopeProviderFormComponentExtended = class MJSearchScopeProviderFormComponentExtended extends MJSearchScopeProviderFormComponent {
@@ -166,7 +165,7 @@ let MJSearchScopeProviderFormComponentExtended = class MJSearchScopeProviderForm
166
165
  }
167
166
  }
168
167
  static { this.ɵfac = /*@__PURE__*/ (() => { let ɵMJSearchScopeProviderFormComponentExtended_BaseFactory; return function MJSearchScopeProviderFormComponentExtended_Factory(__ngFactoryType__) { return (ɵMJSearchScopeProviderFormComponentExtended_BaseFactory || (ɵMJSearchScopeProviderFormComponentExtended_BaseFactory = i0.ɵɵgetInheritedFactory(MJSearchScopeProviderFormComponentExtended)))(__ngFactoryType__ || MJSearchScopeProviderFormComponentExtended); }; })(); }
169
- static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: MJSearchScopeProviderFormComponentExtended, selectors: [["mj-searchscopeprovider-form-extended"]], standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 33, vars: 42, consts: [[3, "Navigate", "DeleteRequested", "FavoriteToggled", "HistoryRequested", "ListManagementRequested", "Record", "FormComponent"], ["SectionKey", "searchConfiguration", "SectionName", "Search Configuration", "Icon", "fa fa-search", 3, "Form", "FormContext"], ["FieldName", "SearchScopeID", "Type", "textbox", "LinkType", "Record", 3, "Record", "ShowLabel", "EditMode", "FormContext"], [1, "provider-picker"], [1, "provider-picker-label"], [1, "provider-picker-error"], [1, "mj-input", "provider-picker-select", 3, "ngModelChange", "disabled", "ngModel"], ["value", ""], [3, "value"], [1, "provider-picker-warning"], [1, "provider-picker-help"], ["SectionKey", "operationalSettings", "SectionName", "Operational Settings", "Icon", "fa fa-sliders-h", 3, "Form", "FormContext"], ["FieldName", "Enabled", "Type", "checkbox", 3, "Record", "ShowLabel", "EditMode", "FormContext"], ["FieldName", "MaxResultsOverride", "Type", "number", 3, "Record", "ShowLabel", "EditMode", "FormContext"], ["FieldName", "ProviderConfigOverride", "Type", "code", 3, "Record", "ShowLabel", "EditMode", "FormContext"], ["SectionKey", "queryProcessing", "SectionName", "Query Processing", "Icon", "fa fa-magic", 3, "Form", "FormContext"], ["FieldName", "QueryTransformTemplateID", "Type", "textbox", "LinkType", "Record", 3, "Record", "ShowLabel", "EditMode", "FormContext"], ["SectionKey", "systemMetadata", "SectionName", "System Metadata", "Icon", "fa fa-cog", 3, "Form", "FormContext"], ["FieldName", "__mj_CreatedAt", "Type", "textbox", 3, "Record", "ShowLabel", "EditMode", "FormContext"], ["FieldName", "__mj_UpdatedAt", "Type", "textbox", 3, "Record", "ShowLabel", "EditMode", "FormContext"], [1, "fa-solid", "fa-circle-exclamation"], [1, "fa-solid", "fa-triangle-exclamation"]], template: function MJSearchScopeProviderFormComponentExtended_Template(rf, ctx) { if (rf & 1) {
168
+ static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: MJSearchScopeProviderFormComponentExtended, selectors: [["mj-searchscopeprovider-form-extended"]], standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 33, vars: 42, consts: [[3, "Navigate", "DeleteRequested", "FavoriteToggled", "HistoryRequested", "ListManagementRequested", "Record", "FormComponent"], ["SectionKey", "searchConfiguration", "SectionName", "Search Configuration", "Icon", "fa fa-search", 3, "Form", "FormContext"], ["FieldName", "SearchScopeID", "Type", "textbox", "LinkType", "Record", 3, "Record", "ShowLabel", "EditMode", "FormContext"], [1, "provider-picker"], [1, "provider-picker-label"], ["Variant", "error"], [1, "mj-input", "provider-picker-select", 3, "ngModelChange", "disabled", "ngModel"], ["value", ""], [3, "value"], ["Variant", "warning"], [1, "provider-picker-help"], ["SectionKey", "operationalSettings", "SectionName", "Operational Settings", "Icon", "fa fa-sliders-h", 3, "Form", "FormContext"], ["FieldName", "Enabled", "Type", "checkbox", 3, "Record", "ShowLabel", "EditMode", "FormContext"], ["FieldName", "MaxResultsOverride", "Type", "number", 3, "Record", "ShowLabel", "EditMode", "FormContext"], ["FieldName", "ProviderConfigOverride", "Type", "code", 3, "Record", "ShowLabel", "EditMode", "FormContext"], ["SectionKey", "queryProcessing", "SectionName", "Query Processing", "Icon", "fa fa-magic", 3, "Form", "FormContext"], ["FieldName", "QueryTransformTemplateID", "Type", "textbox", "LinkType", "Record", 3, "Record", "ShowLabel", "EditMode", "FormContext"], ["SectionKey", "systemMetadata", "SectionName", "System Metadata", "Icon", "fa fa-cog", 3, "Form", "FormContext"], ["FieldName", "__mj_CreatedAt", "Type", "textbox", 3, "Record", "ShowLabel", "EditMode", "FormContext"], ["FieldName", "__mj_UpdatedAt", "Type", "textbox", 3, "Record", "ShowLabel", "EditMode", "FormContext"]], template: function MJSearchScopeProviderFormComponentExtended_Template(rf, ctx) { if (rf & 1) {
170
169
  i0.ɵɵelementStart(0, "mj-record-form-container", 0);
171
170
  i0.ɵɵlistener("Navigate", function MJSearchScopeProviderFormComponentExtended_Template_mj_record_form_container_Navigate_0_listener($event) { return ctx.OnFormNavigate($event); })("DeleteRequested", function MJSearchScopeProviderFormComponentExtended_Template_mj_record_form_container_DeleteRequested_0_listener() { return ctx.OnDeleteRequested(); })("FavoriteToggled", function MJSearchScopeProviderFormComponentExtended_Template_mj_record_form_container_FavoriteToggled_0_listener() { return ctx.OnFavoriteToggled(); })("HistoryRequested", function MJSearchScopeProviderFormComponentExtended_Template_mj_record_form_container_HistoryRequested_0_listener() { return ctx.OnHistoryRequested(); })("ListManagementRequested", function MJSearchScopeProviderFormComponentExtended_Template_mj_record_form_container_ListManagementRequested_0_listener() { return ctx.OnListManagementRequested(); });
172
171
  i0.ɵɵelementStart(1, "mj-collapsible-panel", 1);
@@ -174,7 +173,7 @@ let MJSearchScopeProviderFormComponentExtended = class MJSearchScopeProviderForm
174
173
  i0.ɵɵelementStart(3, "div", 3)(4, "label", 4);
175
174
  i0.ɵɵtext(5, "Search Provider");
176
175
  i0.ɵɵelementEnd();
177
- i0.ɵɵconditionalCreate(6, MJSearchScopeProviderFormComponentExtended_Conditional_6_Template, 3, 1, "p", 5);
176
+ i0.ɵɵconditionalCreate(6, MJSearchScopeProviderFormComponentExtended_Conditional_6_Template, 2, 1, "mj-alert", 5);
178
177
  i0.ɵɵelementStart(7, "select", 6);
179
178
  i0.ɵɵlistener("ngModelChange", function MJSearchScopeProviderFormComponentExtended_Template_select_ngModelChange_7_listener($event) { return ctx.SelectedSearchProviderID = $event; });
180
179
  i0.ɵɵelementStart(8, "option", 7);
@@ -182,7 +181,7 @@ let MJSearchScopeProviderFormComponentExtended = class MJSearchScopeProviderForm
182
181
  i0.ɵɵelementEnd();
183
182
  i0.ɵɵrepeaterCreate(10, MJSearchScopeProviderFormComponentExtended_For_11_Template, 2, 5, "option", 8, _forTrack0);
184
183
  i0.ɵɵelementEnd();
185
- i0.ɵɵconditionalCreate(12, MJSearchScopeProviderFormComponentExtended_Conditional_12_Template, 12, 1, "p", 9);
184
+ i0.ɵɵconditionalCreate(12, MJSearchScopeProviderFormComponentExtended_Conditional_12_Template, 11, 1, "mj-alert", 9);
186
185
  i0.ɵɵelementStart(13, "p", 10);
187
186
  i0.ɵɵtext(14, " Picks from rows in ");
188
187
  i0.ɵɵelementStart(15, "code");
@@ -239,7 +238,7 @@ let MJSearchScopeProviderFormComponentExtended = class MJSearchScopeProviderForm
239
238
  i0.ɵɵproperty("Record", ctx.record)("ShowLabel", true)("EditMode", ctx.EditMode)("FormContext", ctx.formContext);
240
239
  i0.ɵɵadvance();
241
240
  i0.ɵɵproperty("Record", ctx.record)("ShowLabel", true)("EditMode", ctx.EditMode)("FormContext", ctx.formContext);
242
- } }, dependencies: [i1.NgSelectOption, i1.ɵNgSelectMultipleOption, i1.SelectControlValueAccessor, i1.NgControlStatus, i1.NgModel, i2.MjFormFieldComponent, i2.MjCollapsiblePanelComponent, i2.MjRecordFormContainerComponent], styles: [".provider-picker[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 0.5rem;\n padding-top: 0.5rem;\n}\n\n.provider-picker-label[_ngcontent-%COMP%] {\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.provider-picker-select[_ngcontent-%COMP%] {\n width: 100%;\n max-width: 600px;\n}\n\n.provider-picker-error[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 0.875rem;\n color: var(--mj-status-error-text);\n background: var(--mj-status-error-bg);\n padding: 0.5rem 0.75rem;\n border-left: 3px solid var(--mj-status-error-border);\n border-radius: 2px;\n}\n\n.provider-picker-warning[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 0.875rem;\n color: var(--mj-status-warning-text);\n background: var(--mj-status-warning-bg);\n padding: 0.5rem 0.75rem;\n border-left: 3px solid var(--mj-status-warning-border);\n border-radius: 2px;\n}\n\n.provider-picker-warning[_ngcontent-%COMP%] code[_ngcontent-%COMP%], \n.provider-picker-help[_ngcontent-%COMP%] code[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-sunken);\n padding: 0.1rem 0.3rem;\n border-radius: 2px;\n font-family: ui-monospace, SFMono-Regular, monospace;\n font-size: 0.85em;\n}\n\n.provider-picker-help[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 0.8125rem;\n color: var(--mj-text-muted);\n}"] }); }
241
+ } }, dependencies: [i1.NgSelectOption, i1.ɵNgSelectMultipleOption, i1.SelectControlValueAccessor, i1.NgControlStatus, i1.NgModel, i2.MJAlertComponent, i3.MjFormFieldComponent, i3.MjCollapsiblePanelComponent, i3.MjRecordFormContainerComponent], styles: [".provider-picker[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 0.5rem;\n padding-top: 0.5rem;\n}\n\n.provider-picker-label[_ngcontent-%COMP%] {\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.provider-picker-select[_ngcontent-%COMP%] {\n width: 100%;\n max-width: 600px;\n}\n\n.provider-picker-help[_ngcontent-%COMP%] code[_ngcontent-%COMP%], \nmj-alert[_ngcontent-%COMP%] code[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-sunken);\n padding: 0.1rem 0.3rem;\n border-radius: 2px;\n font-family: ui-monospace, SFMono-Regular, monospace;\n font-size: 0.85em;\n}\n\n.provider-picker-help[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 0.8125rem;\n color: var(--mj-text-muted);\n}"] }); }
243
242
  };
244
243
  MJSearchScopeProviderFormComponentExtended = __decorate([
245
244
  RegisterClass(BaseFormComponent, 'MJ: Search Scope Providers')
@@ -247,7 +246,7 @@ MJSearchScopeProviderFormComponentExtended = __decorate([
247
246
  export { MJSearchScopeProviderFormComponentExtended };
248
247
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MJSearchScopeProviderFormComponentExtended, [{
249
248
  type: Component,
250
- args: [{ standalone: false, selector: 'mj-searchscopeprovider-form-extended', template: "<mj-record-form-container [Record]=\"record\" [FormComponent]=\"this\"\n (Navigate)=\"OnFormNavigate($event)\"\n (DeleteRequested)=\"OnDeleteRequested()\"\n (FavoriteToggled)=\"OnFavoriteToggled()\"\n (HistoryRequested)=\"OnHistoryRequested()\"\n (ListManagementRequested)=\"OnListManagementRequested()\">\n\n <!-- ========================================\n FIELD PANELS\n ======================================== -->\n <!-- Search Configuration Section -->\n <mj-collapsible-panel\n SectionKey=\"searchConfiguration\"\n SectionName=\"Search Configuration\"\n Icon=\"fa fa-search\"\n [Form]=\"this\"\n [FormContext]=\"formContext\">\n <mj-form-field\n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"SearchScopeID\"\n Type=\"textbox\"\n [EditMode]=\"EditMode\"\n [FormContext]=\"formContext\"\n LinkType=\"Record\"\n ></mj-form-field>\n\n <!-- P5.5 \u2014 provider picker. Replaces the generated form's plain\n SearchProviderID textbox. Sourced from MJ: Search Providers\n rows; each option is annotated with whether the provider's\n DriverClass is currently registered with the server's\n ClassFactory. -->\n <div class=\"provider-picker\">\n <label class=\"provider-picker-label\">Search Provider</label>\n @if (LoadError) {\n <p class=\"provider-picker-error\">\n <i class=\"fa-solid fa-circle-exclamation\"></i>\n Could not load provider catalog \u2014 {{ LoadError }}\n </p>\n }\n <select\n class=\"mj-input provider-picker-select\"\n [disabled]=\"!EditMode || !ProvidersLoaded\"\n [ngModel]=\"SelectedSearchProviderID\"\n (ngModelChange)=\"SelectedSearchProviderID = $event\">\n <option value=\"\">\u2014 Select a provider \u2014</option>\n @for (option of AvailableProviders; track option.ID) {\n <option [value]=\"option.ID\">\n {{ option.Name }} \u2014 {{ option.DriverClass }}{{ option.IsRegisteredOnServer ? '' : ' (not registered on this server)' }}{{ option.Status !== 'Active' ? ' [' + option.Status + ']' : '' }}\n </option>\n }\n </select>\n @if (SelectedProviderUnregisteredOnServer) {\n <p class=\"provider-picker-warning\">\n <i class=\"fa-solid fa-triangle-exclamation\"></i>\n The selected provider's <code>DriverClass</code> is not registered with this MJServer build.\n Searches using this <code>SearchScopeProvider</code> will return no results until the\n package that registers <code>{{ SelectedProvider?.DriverClass }}</code> is installed.\n </p>\n }\n <p class=\"provider-picker-help\">\n Picks from rows in <code>MJ: Search Providers</code>. The \"(not registered on this server)\" suffix\n comes from the <code>AvailableSearchProviders</code> query, which calls\n <code>BaseSearchProvider.GetAvailableProviders()</code> server-side to enumerate\n ClassFactory registrations.\n </p>\n </div>\n\n </mj-collapsible-panel>\n\n <!-- Operational Settings Section -->\n <mj-collapsible-panel\n SectionKey=\"operationalSettings\"\n SectionName=\"Operational Settings\"\n Icon=\"fa fa-sliders-h\"\n [Form]=\"this\"\n [FormContext]=\"formContext\">\n <mj-form-field\n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"Enabled\"\n Type=\"checkbox\"\n [EditMode]=\"EditMode\"\n [FormContext]=\"formContext\"\n ></mj-form-field>\n <mj-form-field\n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"MaxResultsOverride\"\n Type=\"number\"\n [EditMode]=\"EditMode\"\n [FormContext]=\"formContext\"\n ></mj-form-field>\n <mj-form-field\n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"ProviderConfigOverride\"\n Type=\"code\"\n [EditMode]=\"EditMode\"\n [FormContext]=\"formContext\"\n ></mj-form-field>\n\n </mj-collapsible-panel>\n\n <!-- Query Processing Section -->\n <mj-collapsible-panel\n SectionKey=\"queryProcessing\"\n SectionName=\"Query Processing\"\n Icon=\"fa fa-magic\"\n [Form]=\"this\"\n [FormContext]=\"formContext\">\n <mj-form-field\n [Record]=\"record\"\n [ShowLabel]=\"false\"\n FieldName=\"QueryTransformTemplateID\"\n Type=\"textbox\"\n [EditMode]=\"EditMode\"\n [FormContext]=\"formContext\"\n LinkType=\"Record\"\n ></mj-form-field>\n\n </mj-collapsible-panel>\n\n <!-- System Metadata Section -->\n <mj-collapsible-panel\n SectionKey=\"systemMetadata\"\n SectionName=\"System Metadata\"\n Icon=\"fa fa-cog\"\n [Form]=\"this\"\n [FormContext]=\"formContext\">\n <mj-form-field\n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"__mj_CreatedAt\"\n Type=\"textbox\"\n [EditMode]=\"EditMode\"\n [FormContext]=\"formContext\"\n ></mj-form-field>\n <mj-form-field\n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"__mj_UpdatedAt\"\n Type=\"textbox\"\n [EditMode]=\"EditMode\"\n [FormContext]=\"formContext\"\n ></mj-form-field>\n\n </mj-collapsible-panel>\n</mj-record-form-container>\n", styles: [".provider-picker {\n display: flex;\n flex-direction: column;\n gap: 0.5rem;\n padding-top: 0.5rem;\n}\n\n.provider-picker-label {\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.provider-picker-select {\n width: 100%;\n max-width: 600px;\n}\n\n.provider-picker-error {\n margin: 0;\n font-size: 0.875rem;\n color: var(--mj-status-error-text);\n background: var(--mj-status-error-bg);\n padding: 0.5rem 0.75rem;\n border-left: 3px solid var(--mj-status-error-border);\n border-radius: 2px;\n}\n\n.provider-picker-warning {\n margin: 0;\n font-size: 0.875rem;\n color: var(--mj-status-warning-text);\n background: var(--mj-status-warning-bg);\n padding: 0.5rem 0.75rem;\n border-left: 3px solid var(--mj-status-warning-border);\n border-radius: 2px;\n}\n\n.provider-picker-warning code,\n.provider-picker-help code {\n background: var(--mj-bg-surface-sunken);\n padding: 0.1rem 0.3rem;\n border-radius: 2px;\n font-family: ui-monospace, SFMono-Regular, monospace;\n font-size: 0.85em;\n}\n\n.provider-picker-help {\n margin: 0;\n font-size: 0.8125rem;\n color: var(--mj-text-muted);\n}\n"] }]
249
+ args: [{ standalone: false, selector: 'mj-searchscopeprovider-form-extended', template: "<mj-record-form-container [Record]=\"record\" [FormComponent]=\"this\"\n (Navigate)=\"OnFormNavigate($event)\"\n (DeleteRequested)=\"OnDeleteRequested()\"\n (FavoriteToggled)=\"OnFavoriteToggled()\"\n (HistoryRequested)=\"OnHistoryRequested()\"\n (ListManagementRequested)=\"OnListManagementRequested()\">\n\n <!-- ========================================\n FIELD PANELS\n ======================================== -->\n <!-- Search Configuration Section -->\n <mj-collapsible-panel\n SectionKey=\"searchConfiguration\"\n SectionName=\"Search Configuration\"\n Icon=\"fa fa-search\"\n [Form]=\"this\"\n [FormContext]=\"formContext\">\n <mj-form-field\n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"SearchScopeID\"\n Type=\"textbox\"\n [EditMode]=\"EditMode\"\n [FormContext]=\"formContext\"\n LinkType=\"Record\"\n ></mj-form-field>\n\n <!-- P5.5 \u2014 provider picker. Replaces the generated form's plain\n SearchProviderID textbox. Sourced from MJ: Search Providers\n rows; each option is annotated with whether the provider's\n DriverClass is currently registered with the server's\n ClassFactory. -->\n <div class=\"provider-picker\">\n <label class=\"provider-picker-label\">Search Provider</label>\n @if (LoadError) {\n <mj-alert Variant=\"error\">Could not load provider catalog \u2014 {{ LoadError }}</mj-alert>\n }\n <select\n class=\"mj-input provider-picker-select\"\n [disabled]=\"!EditMode || !ProvidersLoaded\"\n [ngModel]=\"SelectedSearchProviderID\"\n (ngModelChange)=\"SelectedSearchProviderID = $event\">\n <option value=\"\">\u2014 Select a provider \u2014</option>\n @for (option of AvailableProviders; track option.ID) {\n <option [value]=\"option.ID\">\n {{ option.Name }} \u2014 {{ option.DriverClass }}{{ option.IsRegisteredOnServer ? '' : ' (not registered on this server)' }}{{ option.Status !== 'Active' ? ' [' + option.Status + ']' : '' }}\n </option>\n }\n </select>\n @if (SelectedProviderUnregisteredOnServer) {\n <mj-alert Variant=\"warning\">\n The selected provider's <code>DriverClass</code> is not registered with this MJServer build.\n Searches using this <code>SearchScopeProvider</code> will return no results until the\n package that registers <code>{{ SelectedProvider?.DriverClass }}</code> is installed.\n </mj-alert>\n }\n <p class=\"provider-picker-help\">\n Picks from rows in <code>MJ: Search Providers</code>. The \"(not registered on this server)\" suffix\n comes from the <code>AvailableSearchProviders</code> query, which calls\n <code>BaseSearchProvider.GetAvailableProviders()</code> server-side to enumerate\n ClassFactory registrations.\n </p>\n </div>\n\n </mj-collapsible-panel>\n\n <!-- Operational Settings Section -->\n <mj-collapsible-panel\n SectionKey=\"operationalSettings\"\n SectionName=\"Operational Settings\"\n Icon=\"fa fa-sliders-h\"\n [Form]=\"this\"\n [FormContext]=\"formContext\">\n <mj-form-field\n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"Enabled\"\n Type=\"checkbox\"\n [EditMode]=\"EditMode\"\n [FormContext]=\"formContext\"\n ></mj-form-field>\n <mj-form-field\n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"MaxResultsOverride\"\n Type=\"number\"\n [EditMode]=\"EditMode\"\n [FormContext]=\"formContext\"\n ></mj-form-field>\n <mj-form-field\n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"ProviderConfigOverride\"\n Type=\"code\"\n [EditMode]=\"EditMode\"\n [FormContext]=\"formContext\"\n ></mj-form-field>\n\n </mj-collapsible-panel>\n\n <!-- Query Processing Section -->\n <mj-collapsible-panel\n SectionKey=\"queryProcessing\"\n SectionName=\"Query Processing\"\n Icon=\"fa fa-magic\"\n [Form]=\"this\"\n [FormContext]=\"formContext\">\n <mj-form-field\n [Record]=\"record\"\n [ShowLabel]=\"false\"\n FieldName=\"QueryTransformTemplateID\"\n Type=\"textbox\"\n [EditMode]=\"EditMode\"\n [FormContext]=\"formContext\"\n LinkType=\"Record\"\n ></mj-form-field>\n\n </mj-collapsible-panel>\n\n <!-- System Metadata Section -->\n <mj-collapsible-panel\n SectionKey=\"systemMetadata\"\n SectionName=\"System Metadata\"\n Icon=\"fa fa-cog\"\n [Form]=\"this\"\n [FormContext]=\"formContext\">\n <mj-form-field\n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"__mj_CreatedAt\"\n Type=\"textbox\"\n [EditMode]=\"EditMode\"\n [FormContext]=\"formContext\"\n ></mj-form-field>\n <mj-form-field\n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"__mj_UpdatedAt\"\n Type=\"textbox\"\n [EditMode]=\"EditMode\"\n [FormContext]=\"formContext\"\n ></mj-form-field>\n\n </mj-collapsible-panel>\n</mj-record-form-container>\n", styles: [".provider-picker {\n display: flex;\n flex-direction: column;\n gap: 0.5rem;\n padding-top: 0.5rem;\n}\n\n.provider-picker-label {\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.provider-picker-select {\n width: 100%;\n max-width: 600px;\n}\n\n.provider-picker-help code,\nmj-alert code {\n background: var(--mj-bg-surface-sunken);\n padding: 0.1rem 0.3rem;\n border-radius: 2px;\n font-family: ui-monospace, SFMono-Regular, monospace;\n font-size: 0.85em;\n}\n\n.provider-picker-help {\n margin: 0;\n font-size: 0.8125rem;\n color: var(--mj-text-muted);\n}\n"] }]
251
250
  }], null, null); })();
252
251
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(MJSearchScopeProviderFormComponentExtended, { className: "MJSearchScopeProviderFormComponentExtended", filePath: "src/lib/custom/SearchScopes/searchscopeprovider-form.component.ts", lineNumber: 46 }); })();
253
252
  //# sourceMappingURL=searchscopeprovider-form.component.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"searchscopeprovider-form.component.js","sourceRoot":"","sources":["../../../../src/lib/custom/SearchScopes/searchscopeprovider-form.component.ts","../../../../src/lib/custom/SearchScopes/searchscopeprovider-form.component.html"],"names":[],"mappings":"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","sourcesContent":["/**\n * Custom MJSearchScopeProvider form (P5.5).\n *\n * Plan acceptance criterion: provide a dropdown for `SearchProviderID` so\n * scope authors don't have to look up GUIDs by hand. The dropdown is sourced\n * from the `MJ: Search Providers` table (those rows are the canonical FK\n * targets), and each option is annotated with whether the provider's\n * `DriverClass` is currently registered with the runtime ClassFactory on\n * this MJServer build — so authors can see at a glance whether their pick\n * will actually be available at search time.\n *\n * The runtime registration list comes from the `AvailableSearchProviders`\n * GraphQL query backed by `BaseSearchProvider.GetAvailableProviders()`.\n * That query is the canonical \"which providers does this server know\n * about\" source — same helper Phase 5.5 of the RAG plan calls out.\n */\nimport { Component, OnInit } from '@angular/core';\nimport { LogError, Metadata, RunView } from '@memberjunction/core';\nimport { MJSearchScopeProviderEntity, MJSearchProviderEntity } from '@memberjunction/core-entities';\nimport { RegisterClass } from '@memberjunction/global';\nimport { BaseFormComponent } from '@memberjunction/ng-base-forms';\nimport { GraphQLDataProvider } from '@memberjunction/graphql-dataprovider';\nimport { MJSearchScopeProviderFormComponent } from '../../generated/Entities/MJSearchScopeProvider/mjsearchscopeprovider.form.component';\n\ninterface SearchProviderOption {\n ID: string;\n Name: string;\n DriverClass: string;\n Status: 'Active' | 'Pending' | 'Terminated';\n /**\n * `true` if `DriverClass` matches a class currently registered with the\n * runtime ClassFactory on this MJServer. `false` means the row exists in\n * `MJ: Search Providers` but no installed package registers that class —\n * picking it would result in `IsAvailable()=false` at search time.\n */\n IsRegisteredOnServer: boolean;\n}\n\n@RegisterClass(BaseFormComponent, 'MJ: Search Scope Providers')\n@Component({\n standalone: false,\n selector: 'mj-searchscopeprovider-form-extended',\n templateUrl: './searchscopeprovider-form.component.html',\n styleUrls: ['./searchscopeprovider-form.component.css'],\n})\nexport class MJSearchScopeProviderFormComponentExtended extends MJSearchScopeProviderFormComponent implements OnInit {\n public override record!: MJSearchScopeProviderEntity;\n\n public AvailableProviders: SearchProviderOption[] = [];\n public ProvidersLoaded = false;\n public LoadError: string | null = null;\n\n /**\n * Drives the dropdown's `[ngModel]`. Kept in sync with `record.SearchProviderID`\n * via the setter so dirty tracking and the form's save flow continue to work.\n */\n public get SelectedSearchProviderID(): string {\n return this.record?.SearchProviderID ?? '';\n }\n public set SelectedSearchProviderID(value: string) {\n if (!this.record) return;\n if (this.record.SearchProviderID === value) return;\n this.record.SearchProviderID = value;\n }\n\n public get SelectedProvider(): SearchProviderOption | null {\n const id = this.SelectedSearchProviderID;\n if (!id) return null;\n return this.AvailableProviders.find(p => p.ID.toLowerCase() === id.toLowerCase()) ?? null;\n }\n\n public get SelectedProviderUnregisteredOnServer(): boolean {\n const sel = this.SelectedProvider;\n return sel != null && !sel.IsRegisteredOnServer;\n }\n\n override async ngOnInit(): Promise<void> {\n await super.ngOnInit();\n await this.loadProviderCatalog();\n }\n\n /**\n * Pulls the `MJ: Search Providers` rows and the server-registered class list\n * in parallel, then merges into one dropdown source. Failures don't block the\n * form — the dropdown just disables itself, leaving the underlying generated\n * textbox accessible via `EditMode`.\n */\n private async loadProviderCatalog(): Promise<void> {\n try {\n const rv = new RunView();\n const [rowsResult, registeredKeys] = await Promise.all([\n rv.RunView<MJSearchProviderEntity>({\n EntityName: 'MJ: Search Providers',\n OrderBy: 'Name',\n ResultType: 'simple',\n }),\n this.fetchRegisteredDriverClasses(),\n ]);\n\n if (!rowsResult.Success) {\n this.LoadError = rowsResult.ErrorMessage ?? 'Unknown error loading providers';\n LogError(`MJSearchScopeProviderFormExtended: RunView failed: ${this.LoadError}`);\n return;\n }\n\n const registeredSet = new Set(registeredKeys.map(k => k.toLowerCase()));\n const rows = rowsResult.Results ?? [];\n this.AvailableProviders = rows.map(row => ({\n ID: row.ID,\n Name: row.Name,\n DriverClass: row.DriverClass,\n Status: row.Status,\n IsRegisteredOnServer: registeredSet.has(row.DriverClass.toLowerCase()),\n }));\n this.ProvidersLoaded = true;\n } catch (err) {\n const msg = err instanceof Error ? err.message : String(err);\n this.LoadError = msg;\n LogError(`MJSearchScopeProviderFormExtended: catalog load threw: ${msg}`);\n }\n }\n\n /**\n * Calls the `AvailableSearchProviders` GraphQL query to learn which\n * `DriverClass` keys are actually registered with `MJGlobal.ClassFactory`\n * on the server. Returns `[]` on any failure — the dropdown still renders\n * from the DB rows; we just lose the \"(not registered)\" badge.\n */\n private async fetchRegisteredDriverClasses(): Promise<string[]> {\n try {\n const dataProvider = this.ProviderToUse as GraphQLDataProvider;\n const response = await dataProvider.ExecuteGQL(\n `query AvailableSearchProviders { AvailableSearchProviders { DriverClass SourceType } }`,\n {}\n ) as { AvailableSearchProviders?: Array<{ DriverClass: string }> };\n return (response?.AvailableSearchProviders ?? []).map(r => r.DriverClass);\n } catch (err) {\n // Older server build won't have the resolver. The dropdown still\n // works from DB rows; the registration badge just won't appear.\n const msg = err instanceof Error ? err.message : String(err);\n LogError(`MJSearchScopeProviderFormExtended: AvailableSearchProviders query failed (badge disabled): ${msg}`);\n return [];\n }\n }\n}\n","<mj-record-form-container [Record]=\"record\" [FormComponent]=\"this\"\n (Navigate)=\"OnFormNavigate($event)\"\n (DeleteRequested)=\"OnDeleteRequested()\"\n (FavoriteToggled)=\"OnFavoriteToggled()\"\n (HistoryRequested)=\"OnHistoryRequested()\"\n (ListManagementRequested)=\"OnListManagementRequested()\">\n\n <!-- ========================================\n FIELD PANELS\n ======================================== -->\n <!-- Search Configuration Section -->\n <mj-collapsible-panel\n SectionKey=\"searchConfiguration\"\n SectionName=\"Search Configuration\"\n Icon=\"fa fa-search\"\n [Form]=\"this\"\n [FormContext]=\"formContext\">\n <mj-form-field\n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"SearchScopeID\"\n Type=\"textbox\"\n [EditMode]=\"EditMode\"\n [FormContext]=\"formContext\"\n LinkType=\"Record\"\n ></mj-form-field>\n\n <!-- P5.5 — provider picker. Replaces the generated form's plain\n SearchProviderID textbox. Sourced from MJ: Search Providers\n rows; each option is annotated with whether the provider's\n DriverClass is currently registered with the server's\n ClassFactory. -->\n <div class=\"provider-picker\">\n <label class=\"provider-picker-label\">Search Provider</label>\n @if (LoadError) {\n <p class=\"provider-picker-error\">\n <i class=\"fa-solid fa-circle-exclamation\"></i>\n Could not load provider catalog — {{ LoadError }}\n </p>\n }\n <select\n class=\"mj-input provider-picker-select\"\n [disabled]=\"!EditMode || !ProvidersLoaded\"\n [ngModel]=\"SelectedSearchProviderID\"\n (ngModelChange)=\"SelectedSearchProviderID = $event\">\n <option value=\"\">— Select a provider —</option>\n @for (option of AvailableProviders; track option.ID) {\n <option [value]=\"option.ID\">\n {{ option.Name }} — {{ option.DriverClass }}{{ option.IsRegisteredOnServer ? '' : ' (not registered on this server)' }}{{ option.Status !== 'Active' ? ' [' + option.Status + ']' : '' }}\n </option>\n }\n </select>\n @if (SelectedProviderUnregisteredOnServer) {\n <p class=\"provider-picker-warning\">\n <i class=\"fa-solid fa-triangle-exclamation\"></i>\n The selected provider's <code>DriverClass</code> is not registered with this MJServer build.\n Searches using this <code>SearchScopeProvider</code> will return no results until the\n package that registers <code>{{ SelectedProvider?.DriverClass }}</code> is installed.\n </p>\n }\n <p class=\"provider-picker-help\">\n Picks from rows in <code>MJ: Search Providers</code>. The \"(not registered on this server)\" suffix\n comes from the <code>AvailableSearchProviders</code> query, which calls\n <code>BaseSearchProvider.GetAvailableProviders()</code> server-side to enumerate\n ClassFactory registrations.\n </p>\n </div>\n\n </mj-collapsible-panel>\n\n <!-- Operational Settings Section -->\n <mj-collapsible-panel\n SectionKey=\"operationalSettings\"\n SectionName=\"Operational Settings\"\n Icon=\"fa fa-sliders-h\"\n [Form]=\"this\"\n [FormContext]=\"formContext\">\n <mj-form-field\n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"Enabled\"\n Type=\"checkbox\"\n [EditMode]=\"EditMode\"\n [FormContext]=\"formContext\"\n ></mj-form-field>\n <mj-form-field\n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"MaxResultsOverride\"\n Type=\"number\"\n [EditMode]=\"EditMode\"\n [FormContext]=\"formContext\"\n ></mj-form-field>\n <mj-form-field\n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"ProviderConfigOverride\"\n Type=\"code\"\n [EditMode]=\"EditMode\"\n [FormContext]=\"formContext\"\n ></mj-form-field>\n\n </mj-collapsible-panel>\n\n <!-- Query Processing Section -->\n <mj-collapsible-panel\n SectionKey=\"queryProcessing\"\n SectionName=\"Query Processing\"\n Icon=\"fa fa-magic\"\n [Form]=\"this\"\n [FormContext]=\"formContext\">\n <mj-form-field\n [Record]=\"record\"\n [ShowLabel]=\"false\"\n FieldName=\"QueryTransformTemplateID\"\n Type=\"textbox\"\n [EditMode]=\"EditMode\"\n [FormContext]=\"formContext\"\n LinkType=\"Record\"\n ></mj-form-field>\n\n </mj-collapsible-panel>\n\n <!-- System Metadata Section -->\n <mj-collapsible-panel\n SectionKey=\"systemMetadata\"\n SectionName=\"System Metadata\"\n Icon=\"fa fa-cog\"\n [Form]=\"this\"\n [FormContext]=\"formContext\">\n <mj-form-field\n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"__mj_CreatedAt\"\n Type=\"textbox\"\n [EditMode]=\"EditMode\"\n [FormContext]=\"formContext\"\n ></mj-form-field>\n <mj-form-field\n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"__mj_UpdatedAt\"\n Type=\"textbox\"\n [EditMode]=\"EditMode\"\n [FormContext]=\"formContext\"\n ></mj-form-field>\n\n </mj-collapsible-panel>\n</mj-record-form-container>\n"]}
1
+ {"version":3,"file":"searchscopeprovider-form.component.js","sourceRoot":"","sources":["../../../../src/lib/custom/SearchScopes/searchscopeprovider-form.component.ts","../../../../src/lib/custom/SearchScopes/searchscopeprovider-form.component.html"],"names":[],"mappings":"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","sourcesContent":["/**\n * Custom MJSearchScopeProvider form (P5.5).\n *\n * Plan acceptance criterion: provide a dropdown for `SearchProviderID` so\n * scope authors don't have to look up GUIDs by hand. The dropdown is sourced\n * from the `MJ: Search Providers` table (those rows are the canonical FK\n * targets), and each option is annotated with whether the provider's\n * `DriverClass` is currently registered with the runtime ClassFactory on\n * this MJServer build — so authors can see at a glance whether their pick\n * will actually be available at search time.\n *\n * The runtime registration list comes from the `AvailableSearchProviders`\n * GraphQL query backed by `BaseSearchProvider.GetAvailableProviders()`.\n * That query is the canonical \"which providers does this server know\n * about\" source — same helper Phase 5.5 of the RAG plan calls out.\n */\nimport { Component, OnInit } from '@angular/core';\nimport { LogError, Metadata, RunView } from '@memberjunction/core';\nimport { MJSearchScopeProviderEntity, MJSearchProviderEntity } from '@memberjunction/core-entities';\nimport { RegisterClass } from '@memberjunction/global';\nimport { BaseFormComponent } from '@memberjunction/ng-base-forms';\nimport { GraphQLDataProvider } from '@memberjunction/graphql-dataprovider';\nimport { MJSearchScopeProviderFormComponent } from '../../generated/Entities/MJSearchScopeProvider/mjsearchscopeprovider.form.component';\n\ninterface SearchProviderOption {\n ID: string;\n Name: string;\n DriverClass: string;\n Status: 'Active' | 'Pending' | 'Terminated';\n /**\n * `true` if `DriverClass` matches a class currently registered with the\n * runtime ClassFactory on this MJServer. `false` means the row exists in\n * `MJ: Search Providers` but no installed package registers that class —\n * picking it would result in `IsAvailable()=false` at search time.\n */\n IsRegisteredOnServer: boolean;\n}\n\n@RegisterClass(BaseFormComponent, 'MJ: Search Scope Providers')\n@Component({\n standalone: false,\n selector: 'mj-searchscopeprovider-form-extended',\n templateUrl: './searchscopeprovider-form.component.html',\n styleUrls: ['./searchscopeprovider-form.component.css'],\n})\nexport class MJSearchScopeProviderFormComponentExtended extends MJSearchScopeProviderFormComponent implements OnInit {\n public override record!: MJSearchScopeProviderEntity;\n\n public AvailableProviders: SearchProviderOption[] = [];\n public ProvidersLoaded = false;\n public LoadError: string | null = null;\n\n /**\n * Drives the dropdown's `[ngModel]`. Kept in sync with `record.SearchProviderID`\n * via the setter so dirty tracking and the form's save flow continue to work.\n */\n public get SelectedSearchProviderID(): string {\n return this.record?.SearchProviderID ?? '';\n }\n public set SelectedSearchProviderID(value: string) {\n if (!this.record) return;\n if (this.record.SearchProviderID === value) return;\n this.record.SearchProviderID = value;\n }\n\n public get SelectedProvider(): SearchProviderOption | null {\n const id = this.SelectedSearchProviderID;\n if (!id) return null;\n return this.AvailableProviders.find(p => p.ID.toLowerCase() === id.toLowerCase()) ?? null;\n }\n\n public get SelectedProviderUnregisteredOnServer(): boolean {\n const sel = this.SelectedProvider;\n return sel != null && !sel.IsRegisteredOnServer;\n }\n\n override async ngOnInit(): Promise<void> {\n await super.ngOnInit();\n await this.loadProviderCatalog();\n }\n\n /**\n * Pulls the `MJ: Search Providers` rows and the server-registered class list\n * in parallel, then merges into one dropdown source. Failures don't block the\n * form — the dropdown just disables itself, leaving the underlying generated\n * textbox accessible via `EditMode`.\n */\n private async loadProviderCatalog(): Promise<void> {\n try {\n const rv = new RunView();\n const [rowsResult, registeredKeys] = await Promise.all([\n rv.RunView<MJSearchProviderEntity>({\n EntityName: 'MJ: Search Providers',\n OrderBy: 'Name',\n ResultType: 'simple',\n }),\n this.fetchRegisteredDriverClasses(),\n ]);\n\n if (!rowsResult.Success) {\n this.LoadError = rowsResult.ErrorMessage ?? 'Unknown error loading providers';\n LogError(`MJSearchScopeProviderFormExtended: RunView failed: ${this.LoadError}`);\n return;\n }\n\n const registeredSet = new Set(registeredKeys.map(k => k.toLowerCase()));\n const rows = rowsResult.Results ?? [];\n this.AvailableProviders = rows.map(row => ({\n ID: row.ID,\n Name: row.Name,\n DriverClass: row.DriverClass,\n Status: row.Status,\n IsRegisteredOnServer: registeredSet.has(row.DriverClass.toLowerCase()),\n }));\n this.ProvidersLoaded = true;\n } catch (err) {\n const msg = err instanceof Error ? err.message : String(err);\n this.LoadError = msg;\n LogError(`MJSearchScopeProviderFormExtended: catalog load threw: ${msg}`);\n }\n }\n\n /**\n * Calls the `AvailableSearchProviders` GraphQL query to learn which\n * `DriverClass` keys are actually registered with `MJGlobal.ClassFactory`\n * on the server. Returns `[]` on any failure — the dropdown still renders\n * from the DB rows; we just lose the \"(not registered)\" badge.\n */\n private async fetchRegisteredDriverClasses(): Promise<string[]> {\n try {\n const dataProvider = this.ProviderToUse as GraphQLDataProvider;\n const response = await dataProvider.ExecuteGQL(\n `query AvailableSearchProviders { AvailableSearchProviders { DriverClass SourceType } }`,\n {}\n ) as { AvailableSearchProviders?: Array<{ DriverClass: string }> };\n return (response?.AvailableSearchProviders ?? []).map(r => r.DriverClass);\n } catch (err) {\n // Older server build won't have the resolver. The dropdown still\n // works from DB rows; the registration badge just won't appear.\n const msg = err instanceof Error ? err.message : String(err);\n LogError(`MJSearchScopeProviderFormExtended: AvailableSearchProviders query failed (badge disabled): ${msg}`);\n return [];\n }\n }\n}\n","<mj-record-form-container [Record]=\"record\" [FormComponent]=\"this\"\n (Navigate)=\"OnFormNavigate($event)\"\n (DeleteRequested)=\"OnDeleteRequested()\"\n (FavoriteToggled)=\"OnFavoriteToggled()\"\n (HistoryRequested)=\"OnHistoryRequested()\"\n (ListManagementRequested)=\"OnListManagementRequested()\">\n\n <!-- ========================================\n FIELD PANELS\n ======================================== -->\n <!-- Search Configuration Section -->\n <mj-collapsible-panel\n SectionKey=\"searchConfiguration\"\n SectionName=\"Search Configuration\"\n Icon=\"fa fa-search\"\n [Form]=\"this\"\n [FormContext]=\"formContext\">\n <mj-form-field\n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"SearchScopeID\"\n Type=\"textbox\"\n [EditMode]=\"EditMode\"\n [FormContext]=\"formContext\"\n LinkType=\"Record\"\n ></mj-form-field>\n\n <!-- P5.5 — provider picker. Replaces the generated form's plain\n SearchProviderID textbox. Sourced from MJ: Search Providers\n rows; each option is annotated with whether the provider's\n DriverClass is currently registered with the server's\n ClassFactory. -->\n <div class=\"provider-picker\">\n <label class=\"provider-picker-label\">Search Provider</label>\n @if (LoadError) {\n <mj-alert Variant=\"error\">Could not load provider catalog — {{ LoadError }}</mj-alert>\n }\n <select\n class=\"mj-input provider-picker-select\"\n [disabled]=\"!EditMode || !ProvidersLoaded\"\n [ngModel]=\"SelectedSearchProviderID\"\n (ngModelChange)=\"SelectedSearchProviderID = $event\">\n <option value=\"\">— Select a provider —</option>\n @for (option of AvailableProviders; track option.ID) {\n <option [value]=\"option.ID\">\n {{ option.Name }} — {{ option.DriverClass }}{{ option.IsRegisteredOnServer ? '' : ' (not registered on this server)' }}{{ option.Status !== 'Active' ? ' [' + option.Status + ']' : '' }}\n </option>\n }\n </select>\n @if (SelectedProviderUnregisteredOnServer) {\n <mj-alert Variant=\"warning\">\n The selected provider's <code>DriverClass</code> is not registered with this MJServer build.\n Searches using this <code>SearchScopeProvider</code> will return no results until the\n package that registers <code>{{ SelectedProvider?.DriverClass }}</code> is installed.\n </mj-alert>\n }\n <p class=\"provider-picker-help\">\n Picks from rows in <code>MJ: Search Providers</code>. The \"(not registered on this server)\" suffix\n comes from the <code>AvailableSearchProviders</code> query, which calls\n <code>BaseSearchProvider.GetAvailableProviders()</code> server-side to enumerate\n ClassFactory registrations.\n </p>\n </div>\n\n </mj-collapsible-panel>\n\n <!-- Operational Settings Section -->\n <mj-collapsible-panel\n SectionKey=\"operationalSettings\"\n SectionName=\"Operational Settings\"\n Icon=\"fa fa-sliders-h\"\n [Form]=\"this\"\n [FormContext]=\"formContext\">\n <mj-form-field\n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"Enabled\"\n Type=\"checkbox\"\n [EditMode]=\"EditMode\"\n [FormContext]=\"formContext\"\n ></mj-form-field>\n <mj-form-field\n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"MaxResultsOverride\"\n Type=\"number\"\n [EditMode]=\"EditMode\"\n [FormContext]=\"formContext\"\n ></mj-form-field>\n <mj-form-field\n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"ProviderConfigOverride\"\n Type=\"code\"\n [EditMode]=\"EditMode\"\n [FormContext]=\"formContext\"\n ></mj-form-field>\n\n </mj-collapsible-panel>\n\n <!-- Query Processing Section -->\n <mj-collapsible-panel\n SectionKey=\"queryProcessing\"\n SectionName=\"Query Processing\"\n Icon=\"fa fa-magic\"\n [Form]=\"this\"\n [FormContext]=\"formContext\">\n <mj-form-field\n [Record]=\"record\"\n [ShowLabel]=\"false\"\n FieldName=\"QueryTransformTemplateID\"\n Type=\"textbox\"\n [EditMode]=\"EditMode\"\n [FormContext]=\"formContext\"\n LinkType=\"Record\"\n ></mj-form-field>\n\n </mj-collapsible-panel>\n\n <!-- System Metadata Section -->\n <mj-collapsible-panel\n SectionKey=\"systemMetadata\"\n SectionName=\"System Metadata\"\n Icon=\"fa fa-cog\"\n [Form]=\"this\"\n [FormContext]=\"formContext\">\n <mj-form-field\n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"__mj_CreatedAt\"\n Type=\"textbox\"\n [EditMode]=\"EditMode\"\n [FormContext]=\"formContext\"\n ></mj-form-field>\n <mj-form-field\n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"__mj_UpdatedAt\"\n Type=\"textbox\"\n [EditMode]=\"EditMode\"\n [FormContext]=\"formContext\"\n ></mj-form-field>\n\n </mj-collapsible-panel>\n</mj-record-form-container>\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"template-param-dialog.component.d.ts","sourceRoot":"","sources":["../../../../src/lib/custom/Templates/template-param-dialog.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,YAAY,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAC/E,OAAO,EAAE,gBAAgB,EAAyB,MAAM,+BAA+B,CAAC;AAKxF,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;;AACrE,MAAM,WAAW,aAAa;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,EAAE,OAAO,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,iBAAiB;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,eAAe,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,qBAMa,4BAA6B,SAAQ,oBAAqB,YAAW,MAAM;IAC3E,QAAQ,EAAE,gBAAgB,GAAG,IAAI,CAAQ;IAE3C,UAAU,EAAE,OAAO,CAAS;IACnC,IACI,SAAS,IAAI,OAAO,CAEvB;IACD,IAAI,SAAS,CAAC,KAAK,EAAE,OAAO,EAQ3B;IAES,eAAe,wBAA+B;IAC9C,OAAO,qBAA4B;IAEtC,UAAU,EAAE,aAAa,EAAE,CAAM;IACjC,SAAS,UAAS;IAClB,SAAS,UAAS;IAClB,UAAU,EAAE,iBAAiB,GAAG,IAAI,CAAQ;IAC5C,oBAAoB,UAAS;IAC7B,kBAAkB,UAAQ;IAC1B,mBAAmB,UAAS;IAC5B,eAAe,UAAQ;IAE9B,OAAO,CAAC,sBAAsB,CAA+B;IAE7D,QAAQ;IAMF,kBAAkB;IAwCxB,YAAY;IAQZ,eAAe,CAAC,KAAK,EAAE,MAAM;IAM7B,iBAAiB;IASX,WAAW;IA2GX,oBAAoB;IAgD1B,KAAK;IAML,OAAO,CAAC,gBAAgB;IAcxB,WAAW;IA6BX,IAAI,gBAAgB,IAAI,MAAM,CAY7B;yCA7TQ,4BAA4B;2CAA5B,4BAA4B;CA8TxC"}
1
+ {"version":3,"file":"template-param-dialog.component.d.ts","sourceRoot":"","sources":["../../../../src/lib/custom/Templates/template-param-dialog.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,YAAY,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAC/E,OAAO,EAAE,gBAAgB,EAAyB,MAAM,+BAA+B,CAAC;AAKxF,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;;AACrE,MAAM,WAAW,aAAa;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,EAAE,OAAO,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,iBAAiB;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,eAAe,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,qBAMa,4BAA6B,SAAQ,oBAAqB,YAAW,MAAM;IAC3E,QAAQ,EAAE,gBAAgB,GAAG,IAAI,CAAQ;IAE3C,UAAU,EAAE,OAAO,CAAS;IACnC,IACI,SAAS,IAAI,OAAO,CAEvB;IACD,IAAI,SAAS,CAAC,KAAK,EAAE,OAAO,EAQ3B;IAES,eAAe,wBAA+B;IAC9C,OAAO,qBAA4B;IAEtC,UAAU,EAAE,aAAa,EAAE,CAAM;IACjC,SAAS,UAAS;IAClB,SAAS,UAAS;IAClB,UAAU,EAAE,iBAAiB,GAAG,IAAI,CAAQ;IAC5C,oBAAoB,UAAS;IAC7B,kBAAkB,UAAQ;IAC1B,mBAAmB,UAAS;IAC5B,eAAe,UAAQ;IAE9B,OAAO,CAAC,sBAAsB,CAA+B;IAE7D,QAAQ;IAMF,kBAAkB;IAwCxB,YAAY;IAQZ,eAAe,CAAC,KAAK,EAAE,MAAM;IAM7B,iBAAiB;IASX,WAAW;IA+FX,oBAAoB;IAgD1B,KAAK;IAML,OAAO,CAAC,gBAAgB;IAcxB,WAAW;IA6BX,IAAI,gBAAgB,IAAI,MAAM,CAY7B;yCAjTQ,4BAA4B;2CAA5B,4BAA4B;CAkTxC"}