@memberjunction/ng-core-entity-forms 6.2.0-edge.2 → 6.2.0-edge.4

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 (279) hide show
  1. package/dist/lib/custom/AIAgentCategories/ai-agent-category-header.panel.d.ts.map +1 -1
  2. package/dist/lib/custom/AIAgentCategories/ai-agent-category-header.panel.js +9 -5
  3. package/dist/lib/custom/AIAgentCategories/ai-agent-category-header.panel.js.map +1 -1
  4. package/dist/lib/custom/AIAgentCategories/ai-agent-category-overview.panel.d.ts +4 -0
  5. package/dist/lib/custom/AIAgentCategories/ai-agent-category-overview.panel.d.ts.map +1 -1
  6. package/dist/lib/custom/AIAgentCategories/ai-agent-category-overview.panel.js +67 -36
  7. package/dist/lib/custom/AIAgentCategories/ai-agent-category-overview.panel.js.map +1 -1
  8. package/dist/lib/custom/AIAgents/ai-agent-form.component.d.ts +5 -0
  9. package/dist/lib/custom/AIAgents/ai-agent-form.component.d.ts.map +1 -1
  10. package/dist/lib/custom/AIAgents/ai-agent-form.component.js +13 -9
  11. package/dist/lib/custom/AIAgents/ai-agent-form.component.js.map +1 -1
  12. package/dist/lib/custom/AIPromptRuns/ai-prompt-run-form.component.d.ts.map +1 -1
  13. package/dist/lib/custom/AIPromptRuns/ai-prompt-run-form.component.js +1 -0
  14. package/dist/lib/custom/AIPromptRuns/ai-prompt-run-form.component.js.map +1 -1
  15. package/dist/lib/custom/Companies/company-header.panel.d.ts.map +1 -1
  16. package/dist/lib/custom/Companies/company-header.panel.js +9 -5
  17. package/dist/lib/custom/Companies/company-header.panel.js.map +1 -1
  18. package/dist/lib/custom/Companies/company-overview.panel.d.ts +4 -0
  19. package/dist/lib/custom/Companies/company-overview.panel.d.ts.map +1 -1
  20. package/dist/lib/custom/Companies/company-overview.panel.js +68 -37
  21. package/dist/lib/custom/Companies/company-overview.panel.js.map +1 -1
  22. package/dist/lib/custom/Conversations/conversation-header.panel.d.ts.map +1 -1
  23. package/dist/lib/custom/Conversations/conversation-header.panel.js +9 -5
  24. package/dist/lib/custom/Conversations/conversation-header.panel.js.map +1 -1
  25. package/dist/lib/custom/Conversations/conversation-overview.panel.d.ts +25 -4
  26. package/dist/lib/custom/Conversations/conversation-overview.panel.d.ts.map +1 -1
  27. package/dist/lib/custom/Conversations/conversation-overview.panel.js +212 -90
  28. package/dist/lib/custom/Conversations/conversation-overview.panel.js.map +1 -1
  29. package/dist/lib/custom/Employees/employee-header.panel.d.ts.map +1 -1
  30. package/dist/lib/custom/Employees/employee-header.panel.js +9 -5
  31. package/dist/lib/custom/Employees/employee-header.panel.js.map +1 -1
  32. package/dist/lib/custom/Employees/employee-overview.panel.d.ts +4 -0
  33. package/dist/lib/custom/Employees/employee-overview.panel.d.ts.map +1 -1
  34. package/dist/lib/custom/Employees/employee-overview.panel.js +68 -37
  35. package/dist/lib/custom/Employees/employee-overview.panel.js.map +1 -1
  36. package/dist/lib/custom/Entities/entity-form.component.d.ts +8 -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 +19 -4
  39. package/dist/lib/custom/Entities/entity-form.component.js.map +1 -1
  40. package/dist/lib/custom/Files/file-form.component.d.ts +5 -5
  41. package/dist/lib/custom/Files/file-form.component.d.ts.map +1 -1
  42. package/dist/lib/custom/Files/file-form.component.js +227 -157
  43. package/dist/lib/custom/Files/file-form.component.js.map +1 -1
  44. package/dist/lib/custom/Files/file-form.logic.d.ts +24 -0
  45. package/dist/lib/custom/Files/file-form.logic.d.ts.map +1 -0
  46. package/dist/lib/custom/Files/file-form.logic.js +57 -0
  47. package/dist/lib/custom/Files/file-form.logic.js.map +1 -0
  48. package/dist/lib/custom/HierarchyPanels/hierarchy-form-panels.d.ts.map +1 -1
  49. package/dist/lib/custom/HierarchyPanels/hierarchy-form-panels.js +60 -45
  50. package/dist/lib/custom/HierarchyPanels/hierarchy-form-panels.js.map +1 -1
  51. package/dist/lib/custom/Lists/list-form.component.d.ts.map +1 -1
  52. package/dist/lib/custom/Lists/list-form.component.js +4 -2
  53. package/dist/lib/custom/Lists/list-form.component.js.map +1 -1
  54. package/dist/lib/custom/Queries/query-form.component.d.ts.map +1 -1
  55. package/dist/lib/custom/Queries/query-form.component.js +3 -2
  56. package/dist/lib/custom/Queries/query-form.component.js.map +1 -1
  57. package/dist/lib/custom/Rubrics/rubric-form.component.js +1 -1
  58. package/dist/lib/custom/Rubrics/rubric-form.component.js.map +1 -1
  59. package/dist/lib/custom/SearchScopes/searchscope-form.component.d.ts.map +1 -1
  60. package/dist/lib/custom/SearchScopes/searchscope-form.component.js +1 -0
  61. package/dist/lib/custom/SearchScopes/searchscope-form.component.js.map +1 -1
  62. package/dist/lib/custom/Templates/templates-form.component.d.ts.map +1 -1
  63. package/dist/lib/custom/Templates/templates-form.component.js +3 -2
  64. package/dist/lib/custom/Templates/templates-form.component.js.map +1 -1
  65. package/dist/lib/custom/Tests/test-form.component.d.ts.map +1 -1
  66. package/dist/lib/custom/Tests/test-form.component.js +1 -0
  67. package/dist/lib/custom/Tests/test-form.component.js.map +1 -1
  68. package/dist/lib/custom/Tests/test-run-form.component.d.ts.map +1 -1
  69. package/dist/lib/custom/Tests/test-run-form.component.js +1 -0
  70. package/dist/lib/custom/Tests/test-run-form.component.js.map +1 -1
  71. package/dist/lib/custom/Tests/test-suite-form.component.d.ts.map +1 -1
  72. package/dist/lib/custom/Tests/test-suite-form.component.js +1 -0
  73. package/dist/lib/custom/Tests/test-suite-form.component.js.map +1 -1
  74. package/dist/lib/custom/Tests/test-suite-run-form.component.d.ts.map +1 -1
  75. package/dist/lib/custom/Tests/test-suite-run-form.component.js +1 -0
  76. package/dist/lib/custom/Tests/test-suite-run-form.component.js.map +1 -1
  77. package/dist/lib/custom/Users/user-header.panel.d.ts.map +1 -1
  78. package/dist/lib/custom/Users/user-header.panel.js +9 -5
  79. package/dist/lib/custom/Users/user-header.panel.js.map +1 -1
  80. package/dist/lib/custom/Users/user-overview.panel.d.ts +4 -0
  81. package/dist/lib/custom/Users/user-overview.panel.d.ts.map +1 -1
  82. package/dist/lib/custom/Users/user-overview.panel.js +64 -33
  83. package/dist/lib/custom/Users/user-overview.panel.js.map +1 -1
  84. package/dist/lib/custom/ai-agent-run/agent-run-cost-split.d.ts +34 -0
  85. package/dist/lib/custom/ai-agent-run/agent-run-cost-split.d.ts.map +1 -0
  86. package/dist/lib/custom/ai-agent-run/agent-run-cost-split.js +33 -0
  87. package/dist/lib/custom/ai-agent-run/agent-run-cost-split.js.map +1 -0
  88. package/dist/lib/custom/ai-agent-run/ai-agent-run-analytics.component.d.ts +3 -0
  89. package/dist/lib/custom/ai-agent-run/ai-agent-run-analytics.component.d.ts.map +1 -1
  90. package/dist/lib/custom/ai-agent-run/ai-agent-run-analytics.component.js +261 -242
  91. package/dist/lib/custom/ai-agent-run/ai-agent-run-analytics.component.js.map +1 -1
  92. package/dist/lib/custom/ai-agent-run/ai-agent-run.component.d.ts.map +1 -1
  93. package/dist/lib/custom/ai-agent-run/ai-agent-run.component.js +1 -0
  94. package/dist/lib/custom/ai-agent-run/ai-agent-run.component.js.map +1 -1
  95. package/dist/lib/custom/custom-forms.module.d.ts +35 -34
  96. package/dist/lib/custom/custom-forms.module.d.ts.map +1 -1
  97. package/dist/lib/custom/custom-forms.module.js +6 -2
  98. package/dist/lib/custom/custom-forms.module.js.map +1 -1
  99. package/dist/lib/generated/Entities/MJAIAgent/mjaiagent.form.component.d.ts.map +1 -1
  100. package/dist/lib/generated/Entities/MJAIAgent/mjaiagent.form.component.js +98 -44
  101. package/dist/lib/generated/Entities/MJAIAgent/mjaiagent.form.component.js.map +1 -1
  102. package/dist/lib/generated/Entities/MJAIAgentArtifactType/mjaiagentartifacttype.form.component.d.ts.map +1 -1
  103. package/dist/lib/generated/Entities/MJAIAgentArtifactType/mjaiagentartifacttype.form.component.js +5 -9
  104. package/dist/lib/generated/Entities/MJAIAgentArtifactType/mjaiagentartifacttype.form.component.js.map +1 -1
  105. package/dist/lib/generated/Entities/MJAIAgentNoteType/mjaiagentnotetype.form.component.d.ts.map +1 -1
  106. package/dist/lib/generated/Entities/MJAIAgentNoteType/mjaiagentnotetype.form.component.js +15 -18
  107. package/dist/lib/generated/Entities/MJAIAgentNoteType/mjaiagentnotetype.form.component.js.map +1 -1
  108. package/dist/lib/generated/Entities/MJAIAgentPrompt/mjaiagentprompt.form.component.d.ts.map +1 -1
  109. package/dist/lib/generated/Entities/MJAIAgentPrompt/mjaiagentprompt.form.component.js +5 -9
  110. package/dist/lib/generated/Entities/MJAIAgentPrompt/mjaiagentprompt.form.component.js.map +1 -1
  111. package/dist/lib/generated/Entities/MJAIAgentSession/mjaiagentsession.form.component.d.ts.map +1 -1
  112. package/dist/lib/generated/Entities/MJAIAgentSession/mjaiagentsession.form.component.js +27 -9
  113. package/dist/lib/generated/Entities/MJAIAgentSession/mjaiagentsession.form.component.js.map +1 -1
  114. package/dist/lib/generated/Entities/MJAIAgentSessionBridge/mjaiagentsessionbridge.form.component.js +17 -15
  115. package/dist/lib/generated/Entities/MJAIAgentSessionBridge/mjaiagentsessionbridge.form.component.js.map +1 -1
  116. package/dist/lib/generated/Entities/MJAIBridgeProvider/mjaibridgeprovider.form.component.d.ts.map +1 -1
  117. package/dist/lib/generated/Entities/MJAIBridgeProvider/mjaibridgeprovider.form.component.js +25 -7
  118. package/dist/lib/generated/Entities/MJAIBridgeProvider/mjaibridgeprovider.form.component.js.map +1 -1
  119. package/dist/lib/generated/Entities/MJAIResultCache/mjairesultcache.form.component.js +12 -14
  120. package/dist/lib/generated/Entities/MJAIResultCache/mjairesultcache.form.component.js.map +1 -1
  121. package/dist/lib/generated/Entities/MJCommunicationLog/mjcommunicationlog.form.component.d.ts.map +1 -1
  122. package/dist/lib/generated/Entities/MJCommunicationLog/mjcommunicationlog.form.component.js +5 -9
  123. package/dist/lib/generated/Entities/MJCommunicationLog/mjcommunicationlog.form.component.js.map +1 -1
  124. package/dist/lib/generated/Entities/MJCompanyIntegrationRunAPILog/mjcompanyintegrationrunapilog.form.component.d.ts.map +1 -1
  125. package/dist/lib/generated/Entities/MJCompanyIntegrationRunAPILog/mjcompanyintegrationrunapilog.form.component.js +5 -9
  126. package/dist/lib/generated/Entities/MJCompanyIntegrationRunAPILog/mjcompanyintegrationrunapilog.form.component.js.map +1 -1
  127. package/dist/lib/generated/Entities/MJComponent/mjcomponent.form.component.d.ts.map +1 -1
  128. package/dist/lib/generated/Entities/MJComponent/mjcomponent.form.component.js +26 -8
  129. package/dist/lib/generated/Entities/MJComponent/mjcomponent.form.component.js.map +1 -1
  130. package/dist/lib/generated/Entities/MJContentItemAttribute/mjcontentitemattribute.form.component.d.ts.map +1 -1
  131. package/dist/lib/generated/Entities/MJContentItemAttribute/mjcontentitemattribute.form.component.js +4 -7
  132. package/dist/lib/generated/Entities/MJContentItemAttribute/mjcontentitemattribute.form.component.js.map +1 -1
  133. package/dist/lib/generated/Entities/MJContentSourceParam/mjcontentsourceparam.form.component.d.ts.map +1 -1
  134. package/dist/lib/generated/Entities/MJContentSourceParam/mjcontentsourceparam.form.component.js +4 -7
  135. package/dist/lib/generated/Entities/MJContentSourceParam/mjcontentsourceparam.form.component.js.map +1 -1
  136. package/dist/lib/generated/Entities/MJConversation/mjconversation.form.component.d.ts.map +1 -1
  137. package/dist/lib/generated/Entities/MJConversation/mjconversation.form.component.js +49 -13
  138. package/dist/lib/generated/Entities/MJConversation/mjconversation.form.component.js.map +1 -1
  139. package/dist/lib/generated/Entities/MJConversationArtifactPermission/mjconversationartifactpermission.form.component.d.ts.map +1 -1
  140. package/dist/lib/generated/Entities/MJConversationArtifactPermission/mjconversationartifactpermission.form.component.js +5 -9
  141. package/dist/lib/generated/Entities/MJConversationArtifactPermission/mjconversationartifactpermission.form.component.js.map +1 -1
  142. package/dist/lib/generated/Entities/MJConversationBranch/mjconversationbranch.form.component.d.ts +10 -0
  143. package/dist/lib/generated/Entities/MJConversationBranch/mjconversationbranch.form.component.d.ts.map +1 -0
  144. package/dist/lib/generated/Entities/MJConversationBranch/mjconversationbranch.form.component.js +111 -0
  145. package/dist/lib/generated/Entities/MJConversationBranch/mjconversationbranch.form.component.js.map +1 -0
  146. package/dist/lib/generated/Entities/MJConversationDetail/mjconversationdetail.form.component.d.ts.map +1 -1
  147. package/dist/lib/generated/Entities/MJConversationDetail/mjconversationdetail.form.component.js +73 -75
  148. package/dist/lib/generated/Entities/MJConversationDetail/mjconversationdetail.form.component.js.map +1 -1
  149. package/dist/lib/generated/Entities/MJCredential/mjcredential.form.component.d.ts.map +1 -1
  150. package/dist/lib/generated/Entities/MJCredential/mjcredential.form.component.js +34 -16
  151. package/dist/lib/generated/Entities/MJCredential/mjcredential.form.component.js.map +1 -1
  152. package/dist/lib/generated/Entities/MJEmployeeRole/mjemployeerole.form.component.d.ts.map +1 -1
  153. package/dist/lib/generated/Entities/MJEmployeeRole/mjemployeerole.form.component.js +5 -9
  154. package/dist/lib/generated/Entities/MJEmployeeRole/mjemployeerole.form.component.js.map +1 -1
  155. package/dist/lib/generated/Entities/MJEntity/mjentity.form.component.d.ts.map +1 -1
  156. package/dist/lib/generated/Entities/MJEntity/mjentity.form.component.js +169 -97
  157. package/dist/lib/generated/Entities/MJEntity/mjentity.form.component.js.map +1 -1
  158. package/dist/lib/generated/Entities/MJEntityCommunicationField/mjentitycommunicationfield.form.component.d.ts.map +1 -1
  159. package/dist/lib/generated/Entities/MJEntityCommunicationField/mjentitycommunicationfield.form.component.js +8 -11
  160. package/dist/lib/generated/Entities/MJEntityCommunicationField/mjentitycommunicationfield.form.component.js.map +1 -1
  161. package/dist/lib/generated/Entities/MJEntityDocumentType/mjentitydocumenttype.form.component.d.ts.map +1 -1
  162. package/dist/lib/generated/Entities/MJEntityDocumentType/mjentitydocumenttype.form.component.js +15 -18
  163. package/dist/lib/generated/Entities/MJEntityDocumentType/mjentitydocumenttype.form.component.js.map +1 -1
  164. package/dist/lib/generated/Entities/MJEntityFormContribution/mjentityformcontribution.form.component.d.ts +10 -0
  165. package/dist/lib/generated/Entities/MJEntityFormContribution/mjentityformcontribution.form.component.d.ts.map +1 -0
  166. package/dist/lib/generated/Entities/MJEntityFormContribution/mjentityformcontribution.form.component.js +148 -0
  167. package/dist/lib/generated/Entities/MJEntityFormContribution/mjentityformcontribution.form.component.js.map +1 -0
  168. package/dist/lib/generated/Entities/MJEnvironment/mjenvironment.form.component.d.ts.map +1 -1
  169. package/dist/lib/generated/Entities/MJEnvironment/mjenvironment.form.component.js +53 -56
  170. package/dist/lib/generated/Entities/MJEnvironment/mjenvironment.form.component.js.map +1 -1
  171. package/dist/lib/generated/Entities/MJInteraction/mjinteraction.form.component.d.ts +10 -0
  172. package/dist/lib/generated/Entities/MJInteraction/mjinteraction.form.component.d.ts.map +1 -0
  173. package/dist/lib/generated/Entities/MJInteraction/mjinteraction.form.component.js +161 -0
  174. package/dist/lib/generated/Entities/MJInteraction/mjinteraction.form.component.js.map +1 -0
  175. package/dist/lib/generated/Entities/MJInteractionEvent/mjinteractionevent.form.component.d.ts +10 -0
  176. package/dist/lib/generated/Entities/MJInteractionEvent/mjinteractionevent.form.component.d.ts.map +1 -0
  177. package/dist/lib/generated/Entities/MJInteractionEvent/mjinteractionevent.form.component.js +78 -0
  178. package/dist/lib/generated/Entities/MJInteractionEvent/mjinteractionevent.form.component.js.map +1 -0
  179. package/dist/lib/generated/Entities/MJInteractionLink/mjinteractionlink.form.component.d.ts +10 -0
  180. package/dist/lib/generated/Entities/MJInteractionLink/mjinteractionlink.form.component.d.ts.map +1 -0
  181. package/dist/lib/generated/Entities/MJInteractionLink/mjinteractionlink.form.component.js +68 -0
  182. package/dist/lib/generated/Entities/MJInteractionLink/mjinteractionlink.form.component.js.map +1 -0
  183. package/dist/lib/generated/Entities/MJInteractionOffer/mjinteractionoffer.form.component.d.ts +10 -0
  184. package/dist/lib/generated/Entities/MJInteractionOffer/mjinteractionoffer.form.component.d.ts.map +1 -0
  185. package/dist/lib/generated/Entities/MJInteractionOffer/mjinteractionoffer.form.component.js +100 -0
  186. package/dist/lib/generated/Entities/MJInteractionOffer/mjinteractionoffer.form.component.js.map +1 -0
  187. package/dist/lib/generated/Entities/MJMeeting/mjmeeting.form.component.d.ts +10 -0
  188. package/dist/lib/generated/Entities/MJMeeting/mjmeeting.form.component.d.ts.map +1 -0
  189. package/dist/lib/generated/Entities/MJMeeting/mjmeeting.form.component.js +119 -0
  190. package/dist/lib/generated/Entities/MJMeeting/mjmeeting.form.component.js.map +1 -0
  191. package/dist/lib/generated/Entities/MJMeetingParticipant/mjmeetingparticipant.form.component.d.ts +10 -0
  192. package/dist/lib/generated/Entities/MJMeetingParticipant/mjmeetingparticipant.form.component.d.ts.map +1 -0
  193. package/dist/lib/generated/Entities/MJMeetingParticipant/mjmeetingparticipant.form.component.js +92 -0
  194. package/dist/lib/generated/Entities/MJMeetingParticipant/mjmeetingparticipant.form.component.js.map +1 -0
  195. package/dist/lib/generated/Entities/MJNumberPool/mjnumberpool.form.component.d.ts +10 -0
  196. package/dist/lib/generated/Entities/MJNumberPool/mjnumberpool.form.component.d.ts.map +1 -0
  197. package/dist/lib/generated/Entities/MJNumberPool/mjnumberpool.form.component.js +87 -0
  198. package/dist/lib/generated/Entities/MJNumberPool/mjnumberpool.form.component.js.map +1 -0
  199. package/dist/lib/generated/Entities/MJPhoneNumber/mjphonenumber.form.component.d.ts +10 -0
  200. package/dist/lib/generated/Entities/MJPhoneNumber/mjphonenumber.form.component.d.ts.map +1 -0
  201. package/dist/lib/generated/Entities/MJPhoneNumber/mjphonenumber.form.component.js +129 -0
  202. package/dist/lib/generated/Entities/MJPhoneNumber/mjphonenumber.form.component.js.map +1 -0
  203. package/dist/lib/generated/Entities/MJQueryPermission/mjquerypermission.form.component.d.ts.map +1 -1
  204. package/dist/lib/generated/Entities/MJQueryPermission/mjquerypermission.form.component.js +5 -9
  205. package/dist/lib/generated/Entities/MJQueryPermission/mjquerypermission.form.component.js.map +1 -1
  206. package/dist/lib/generated/Entities/MJRecommendationItem/mjrecommendationitem.form.component.d.ts.map +1 -1
  207. package/dist/lib/generated/Entities/MJRecommendationItem/mjrecommendationitem.form.component.js +8 -11
  208. package/dist/lib/generated/Entities/MJRecommendationItem/mjrecommendationitem.form.component.js.map +1 -1
  209. package/dist/lib/generated/Entities/MJResourceType/mjresourcetype.form.component.d.ts.map +1 -1
  210. package/dist/lib/generated/Entities/MJResourceType/mjresourcetype.form.component.js +36 -40
  211. package/dist/lib/generated/Entities/MJResourceType/mjresourcetype.form.component.js.map +1 -1
  212. package/dist/lib/generated/Entities/MJRole/mjrole.form.component.d.ts.map +1 -1
  213. package/dist/lib/generated/Entities/MJRole/mjrole.form.component.js +39 -21
  214. package/dist/lib/generated/Entities/MJRole/mjrole.form.component.js.map +1 -1
  215. package/dist/lib/generated/Entities/MJRowLevelSecurityFilter/mjrowlevelsecurityfilter.form.component.d.ts.map +1 -1
  216. package/dist/lib/generated/Entities/MJRowLevelSecurityFilter/mjrowlevelsecurityfilter.form.component.js +45 -48
  217. package/dist/lib/generated/Entities/MJRowLevelSecurityFilter/mjrowlevelsecurityfilter.form.component.js.map +1 -1
  218. package/dist/lib/generated/Entities/MJScopedNotificationConfig/mjscopednotificationconfig.form.component.d.ts +10 -0
  219. package/dist/lib/generated/Entities/MJScopedNotificationConfig/mjscopednotificationconfig.form.component.d.ts.map +1 -0
  220. package/dist/lib/generated/Entities/MJScopedNotificationConfig/mjscopednotificationconfig.form.component.js +106 -0
  221. package/dist/lib/generated/Entities/MJScopedNotificationConfig/mjscopednotificationconfig.form.component.js.map +1 -0
  222. package/dist/lib/generated/Entities/MJTemplateContentType/mjtemplatecontenttype.form.component.d.ts.map +1 -1
  223. package/dist/lib/generated/Entities/MJTemplateContentType/mjtemplatecontenttype.form.component.js +15 -18
  224. package/dist/lib/generated/Entities/MJTemplateContentType/mjtemplatecontenttype.form.component.js.map +1 -1
  225. package/dist/lib/generated/Entities/MJUser/mjuser.form.component.d.ts.map +1 -1
  226. package/dist/lib/generated/Entities/MJUser/mjuser.form.component.js +822 -676
  227. package/dist/lib/generated/Entities/MJUser/mjuser.form.component.js.map +1 -1
  228. package/dist/lib/generated/Entities/MJUserNotificationType/mjusernotificationtype.form.component.d.ts.map +1 -1
  229. package/dist/lib/generated/Entities/MJUserNotificationType/mjusernotificationtype.form.component.js +24 -6
  230. package/dist/lib/generated/Entities/MJUserNotificationType/mjusernotificationtype.form.component.js.map +1 -1
  231. package/dist/lib/generated/Entities/MJVersionLabelItem/mjversionlabelitem.form.component.d.ts.map +1 -1
  232. package/dist/lib/generated/Entities/MJVersionLabelItem/mjversionlabelitem.form.component.js +5 -9
  233. package/dist/lib/generated/Entities/MJVersionLabelItem/mjversionlabelitem.form.component.js.map +1 -1
  234. package/dist/lib/generated/Entities/MJWorkQueueDeduplication/mjworkqueuededuplication.form.component.d.ts +10 -0
  235. package/dist/lib/generated/Entities/MJWorkQueueDeduplication/mjworkqueuededuplication.form.component.d.ts.map +1 -0
  236. package/dist/lib/generated/Entities/MJWorkQueueDeduplication/mjworkqueuededuplication.form.component.js +64 -0
  237. package/dist/lib/generated/Entities/MJWorkQueueDeduplication/mjworkqueuededuplication.form.component.js.map +1 -0
  238. package/dist/lib/generated/Entities/MJWorkQueueDelivery/mjworkqueuedelivery.form.component.d.ts +10 -0
  239. package/dist/lib/generated/Entities/MJWorkQueueDelivery/mjworkqueuedelivery.form.component.d.ts.map +1 -0
  240. package/dist/lib/generated/Entities/MJWorkQueueDelivery/mjworkqueuedelivery.form.component.js +94 -0
  241. package/dist/lib/generated/Entities/MJWorkQueueDelivery/mjworkqueuedelivery.form.component.js.map +1 -0
  242. package/dist/lib/generated/Entities/MJWorkQueueMessage/mjworkqueuemessage.form.component.d.ts +10 -0
  243. package/dist/lib/generated/Entities/MJWorkQueueMessage/mjworkqueuemessage.form.component.d.ts.map +1 -0
  244. package/dist/lib/generated/Entities/MJWorkQueueMessage/mjworkqueuemessage.form.component.js +91 -0
  245. package/dist/lib/generated/Entities/MJWorkQueueMessage/mjworkqueuemessage.form.component.js.map +1 -0
  246. package/dist/lib/generated/Entities/MJWorkQueueSubscription/mjworkqueuesubscription.form.component.d.ts +10 -0
  247. package/dist/lib/generated/Entities/MJWorkQueueSubscription/mjworkqueuesubscription.form.component.d.ts.map +1 -0
  248. package/dist/lib/generated/Entities/MJWorkQueueSubscription/mjworkqueuesubscription.form.component.js +105 -0
  249. package/dist/lib/generated/Entities/MJWorkQueueSubscription/mjworkqueuesubscription.form.component.js.map +1 -0
  250. package/dist/lib/generated/Entities/MJWorkQueueTopic/mjworkqueuetopic.form.component.d.ts +10 -0
  251. package/dist/lib/generated/Entities/MJWorkQueueTopic/mjworkqueuetopic.form.component.d.ts.map +1 -0
  252. package/dist/lib/generated/Entities/MJWorkQueueTopic/mjworkqueuetopic.form.component.js +129 -0
  253. package/dist/lib/generated/Entities/MJWorkQueueTopic/mjworkqueuetopic.form.component.js.map +1 -0
  254. package/dist/lib/generated/Entities/MJWorkQueueTransport/mjworkqueuetransport.form.component.d.ts +10 -0
  255. package/dist/lib/generated/Entities/MJWorkQueueTransport/mjworkqueuetransport.form.component.d.ts.map +1 -0
  256. package/dist/lib/generated/Entities/MJWorkQueueTransport/mjworkqueuetransport.form.component.js +85 -0
  257. package/dist/lib/generated/Entities/MJWorkQueueTransport/mjworkqueuetransport.form.component.js.map +1 -0
  258. package/dist/lib/generated/Entities/MJWorkspace/mjworkspace.form.component.d.ts.map +1 -1
  259. package/dist/lib/generated/Entities/MJWorkspace/mjworkspace.form.component.js +17 -20
  260. package/dist/lib/generated/Entities/MJWorkspace/mjworkspace.form.component.js.map +1 -1
  261. package/dist/lib/generated/generated-forms.module.d.ts +448 -431
  262. package/dist/lib/generated/generated-forms.module.d.ts.map +1 -1
  263. package/dist/lib/generated/generated-forms.module.js +63 -12
  264. package/dist/lib/generated/generated-forms.module.js.map +1 -1
  265. package/dist/lib/panels/ai-agents/agent-realtime.panel.d.ts +7 -1
  266. package/dist/lib/panels/ai-agents/agent-realtime.panel.d.ts.map +1 -1
  267. package/dist/lib/panels/ai-agents/agent-realtime.panel.js +89 -43
  268. package/dist/lib/panels/ai-agents/agent-realtime.panel.js.map +1 -1
  269. package/dist/lib/panels/ai-skill-sharing/ai-skill-sharing-panel.component.js +3 -3
  270. package/dist/lib/panels/ai-skill-sharing/ai-skill-sharing-panel.component.js.map +1 -1
  271. package/dist/lib/panels/content-sources/tag-pipeline-configuration.panel.js +5 -5
  272. package/dist/lib/panels/content-sources/tag-pipeline-configuration.panel.js.map +1 -1
  273. package/dist/lib/panels/content-sources/website-crawler-settings.panel.js +4 -4
  274. package/dist/lib/panels/content-sources/website-crawler-settings.panel.js.map +1 -1
  275. package/dist/lib/panels/form-chrome/entity-relationship-form-role.panel.js +3 -3
  276. package/dist/lib/panels/form-chrome/entity-relationship-form-role.panel.js.map +1 -1
  277. package/dist/lib/panels/model-predictions/model-prediction.panel.js +4 -4
  278. package/dist/lib/panels/model-predictions/model-prediction.panel.js.map +1 -1
  279. package/package.json +48 -47
@@ -374,7 +374,7 @@ let MJRubricFormComponentExtended = class MJRubricFormComponentExtended extends
374
374
  row.NewRecord();
375
375
  return true;
376
376
  }
377
- const loaded = await row.InnerLoad(CompositeKey.FromID(id)); // first-pk-ok: callers pass only MJ: Rubric Criteria / Bands / Criterion Levels rows, all keyed by a single ID column
377
+ const loaded = await row.InnerLoad(CompositeKey.FromID(id)); // first-pk-ok: openRow only receives MJ: Rubric* core entities, all keyed on ID
378
378
  if (!loaded)
379
379
  throw new Error(`The ${label} was not found.`);
380
380
  return true;
@@ -1 +1 @@
1
- {"version":3,"file":"rubric-form.component.js","sourceRoot":"","sources":["../../../../src/lib/custom/Rubrics/rubric-form.component.ts","../../../../src/lib/generated/Entities/MJRubric/mjrubric.form.component.html"],"names":[],"mappings":"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","sourcesContent":["import { Component } from '@angular/core';\nimport { ActionParam } from '@memberjunction/actions-base';\nimport { CompositeKey, RunView } from '@memberjunction/core';\nimport { GraphQLActionClient, GraphQLDataProvider } from '@memberjunction/graphql-dataprovider';\nimport { EscapeSQLString, RegisterClass, RegisterClassEx, UUIDsEqual } from '@memberjunction/global';\nimport { BaseFormComponent, BaseFormPolicy, type FormChromeContext, type FormChromeSpec } from '@memberjunction/ng-base-forms';\nimport { SharedService } from '@memberjunction/ng-shared';\nimport { BandFromRow, NodeFields, NodeFromRow, PlanNodeSave, PlanBandSave, QueueNodeSave, PublishPreview, ScaleFromRow, VersionShownWithoutDraft, type RubricVersionCard } from '@memberjunction/ng-rubrics';\nimport type { RubricBandSnapshot, RubricNodeSnapshot, RubricScaleSnapshot, RubricVersionSnapshot } from '@memberjunction/rubrics-base';\nimport { MJRubricBandEntity, MJRubricCriterionEntity, MJRubricCriterionLevelEntity, MJRubricEntity, MJRubricVersionEntity } from '@memberjunction/core-entities';\nimport { MJRubricFormComponent } from '../../generated/Entities/MJRubric/mjrubric.form.component';\n\n/**\n * Rubric form. Loads the draft version and its criteria, hosts the author,\n * the diff, and the publish dialog, and saves what they emit.\n */\n@RegisterClass(BaseFormComponent, 'MJ: Rubrics')\n@Component({\n standalone: false,\n selector: 'mj-rubric-form',\n templateUrl: '../../generated/Entities/MJRubric/mjrubric.form.component.html',\n})\nexport class MJRubricFormComponentExtended extends MJRubricFormComponent {\n public override record!: MJRubricEntity;\n public Loading = true;\n public Nodes: RubricNodeSnapshot[] = [];\n public Scales: RubricScaleSnapshot[] = [];\n public Bands: RubricBandSnapshot[] = [];\n public Versions: Record<string, unknown>[] = [];\n public DraftId: string | null = null;\n public BaseVersion: RubricVersionSnapshot | null = null;\n public DraftVersion: RubricVersionSnapshot | null = null;\n public RequestedBump: 'Major' | 'Minor' | 'Patch' | null = null;\n public Summary = '';\n public Message = '';\n public Viewing: 'draft' | 'published' = 'draft';\n public VersionCards: RubricVersionCard[] = [];\n private nodeSaveTimer: ReturnType<typeof setTimeout> | null = null;\n private nodeSaveChain: Promise<void> = Promise.resolve();\n private disposed = false;\n\n public get PublishedLabel(): string {\n const row = this.Versions.find(item => item.Status === 'Published');\n return row ? `${row.MajorVersion}.${row.MinorVersion}.${row.PatchVersion}` : '';\n }\n\n public get NextVersion(): string {\n return this.DraftVersion ? PublishPreview(this.BaseVersion, this.DraftVersion).nextVersion ?? '' : '';\n }\n\n public get ComputedBump(): string | null {\n return this.DraftVersion ? PublishPreview(this.BaseVersion, this.DraftVersion).computedBump : null;\n }\n\n public override async ngOnInit(): Promise<void> {\n await super.ngOnInit();\n await this.LoadWorkspace();\n }\n\n public async LoadWorkspace(): Promise<void> {\n this.Loading = true;\n try {\n const rows = await this.rows('MJ: Rubric Versions', `RubricID='${this.record.ID}'`);\n this.Versions = rows;\n const draft = rows.find(row => row.Status === 'Draft') ?? null;\n this.DraftId = draft ? String(draft.ID) : null;\n this.DraftVersion = null;\n this.BaseVersion = null;\n this.Nodes = [];\n this.Bands = [];\n this.Scales = await this.loadScales();\n if (draft) {\n this.Viewing = 'draft';\n this.Nodes = await this.loadNodes(String(draft.ID));\n this.Bands = (await this.rows('MJ: Rubric Bands', `RubricVersionID='${draft.ID}'`)).map(BandFromRow);\n this.DraftVersion = this.snapshot(draft, this.Nodes, this.Bands);\n const baseId = draft.BasedOnVersionID ? String(draft.BasedOnVersionID) : null;\n const base = baseId ? rows.find(row => String(row.ID) === baseId) : rows.find(row => row.Status === 'Published');\n if (base) {\n const baseNodes = await this.loadNodes(String(base.ID));\n const baseBands = (await this.rows('MJ: Rubric Bands', `RubricVersionID='${base.ID}'`)).map(BandFromRow);\n this.BaseVersion = this.snapshot(base, baseNodes, baseBands);\n }\n } else {\n this.Viewing = 'published';\n const published = VersionShownWithoutDraft(rows);\n if (published) {\n const nodes = await this.loadNodes(String(published.ID));\n const bands = (await this.rows('MJ: Rubric Bands', `RubricVersionID='${published.ID}'`)).map(BandFromRow);\n this.Nodes = nodes;\n this.Bands = bands;\n this.BaseVersion = this.snapshot(published, nodes, bands);\n }\n }\n this.VersionCards = await this.buildVersionCards(rows);\n } finally {\n this.Loading = false;\n }\n }\n\n public OpenVersion(id: string): void {\n SharedService.Instance.OpenEntityRecord('MJ: Rubric Versions', CompositeKey.FromID(id));\n }\n\n private async buildVersionCards(versions: Record<string, unknown>[]): Promise<RubricVersionCard[]> {\n if (versions.length === 0) return [];\n const ids = versions.map(row => `'${EscapeSQLString(String(row.ID))}'`).join(', ');\n const criteria = await this.rows('MJ: Rubric Criteria', `RubricVersionID IN (${ids})`);\n const bands = await this.rows('MJ: Rubric Bands', `RubricVersionID IN (${ids})`);\n return versions.map(row => {\n const id = String(row.ID);\n const nodes = criteria.filter(item => String(item.RubricVersionID) === id);\n const versionBands = bands.filter(item => String(item.RubricVersionID) === id);\n const status = String(row.Status ?? '');\n const numbered = row.MajorVersion == null ? '' : `${row.MajorVersion}.${row.MinorVersion}.${row.PatchVersion}`;\n const label = status === 'Draft' ? `Draft${this.NextVersion ? ` · next ${this.NextVersion}` : ''}` : (numbered || status);\n return {\n id,\n status,\n label,\n bump: String(row.AppliedBump || row.ComputedBump || ''),\n threshold: row.PassThreshold == null ? '' : String(row.PassThreshold),\n criteria: nodes.filter(item => item.NodeType === 'Criterion' || item.NodeType == null).length,\n gates: nodes.filter(item => item.IsGate === true || item.IsGate === 1).length,\n bands: versionBands.map(item => String(item.Label ?? '')).filter(Boolean).join(', '),\n summary: row.ChangeSummary == null ? '' : String(row.ChangeSummary),\n };\n }).sort((left, right) => Number(left.status === 'Draft') - Number(right.status === 'Draft'));\n }\n\n public override ngOnDestroy(): void {\n this.disposed = true;\n if (this.nodeSaveTimer != null) clearTimeout(this.nodeSaveTimer);\n this.nodeSaveTimer = null;\n super.ngOnDestroy();\n }\n\n /** Keeps the open draft in memory and writes dirty criteria once typing pauses. */\n public OnNodes(nodes: RubricNodeSnapshot[]): void {\n if (!this.EditMode || this.Viewing === 'published') return;\n this.Nodes = nodes;\n if (this.DraftVersion) this.DraftVersion = { ...this.DraftVersion, nodes };\n if (!this.DraftId) return;\n const draftId = this.DraftId;\n this.nodeSaveTimer = QueueNodeSave(this.nodeSaveTimer, () => {\n this.nodeSaveTimer = null;\n this.nodeSaveChain = this.nodeSaveChain.then(() => this.persistNodes(draftId, nodes));\n });\n }\n\n private async persistNodes(draftId: string, nodes: RubricNodeSnapshot[]): Promise<void> {\n if (this.disposed || this.DraftId !== draftId || this.Viewing === 'published') return;\n try {\n const saved = await this.rows('MJ: Rubric Criteria', `RubricVersionID='${draftId}'`);\n const anchorRows = saved.length === 0 ? [] : await this.rows('MJ: Rubric Criterion Levels', `CriterionID IN (${saved.map(row => `'${String(row.ID)}'`).join(', ')})`);\n const plan = PlanNodeSave(saved.map(row => {\n const node = NodeFromRow(row, anchorRows.filter(anchor => String(anchor.CriterionID) === String(row.ID)).map(anchor => ({\n scaleLevelId: anchor.ScaleLevelID == null ? null : String(anchor.ScaleLevelID),\n anchorValue: anchor.AnchorValue == null ? null : Number(anchor.AnchorValue),\n descriptor: String(anchor.Descriptor ?? ''),\n })));\n return { id: node.id, parentId: node.parentId ?? null, fields: NodeFields(node), anchors: node.anchors ?? [] };\n }), nodes);\n for (const removedId of plan.removedIds) {\n const anchors = await this.rows('MJ: Rubric Criterion Levels', `CriterionID='${removedId}'`);\n for (const anchor of anchors) await this.remove('MJ: Rubric Criterion Levels', String(anchor.ID));\n await this.remove('MJ: Rubric Criteria', removedId);\n }\n for (const item of plan.upserts) {\n await this.write('MJ: Rubric Criteria', item.id, item.isNew, { ...item.fields, RubricVersionID: draftId });\n const source = nodes.find(node => UUIDsEqual(node.id, item.id));\n await this.saveAnchors(item.id, source?.anchors ?? []);\n }\n } catch (error) {\n this.Message = error instanceof Error ? error.message : 'Could not save the draft.';\n }\n }\n\n public async OnBands(bands: RubricBandSnapshot[]): Promise<void> {\n if (!this.EditMode || this.Viewing === 'published') return;\n this.Bands = bands;\n if (!this.DraftId) return;\n const saved = await this.rows('MJ: Rubric Bands', `RubricVersionID='${this.DraftId}'`);\n const plan = PlanBandSave(saved.map(row => String(row.ID)), bands);\n for (const id of plan.removedIds) await this.remove('MJ: Rubric Bands', id);\n for (const item of plan.upserts) await this.write('MJ: Rubric Bands', item.id, item.isNew, { ...item.fields, RubricVersionID: this.DraftId });\n if (this.DraftVersion) this.DraftVersion = { ...this.DraftVersion, bands };\n }\n\n /** Clones the highest published or retired version through Create Rubric Draft. */\n public async StartDraft(): Promise<void> {\n if (!this.EditMode) return;\n const found = await this.rows('MJ: Actions', `Name='Create Rubric Draft'`);\n const actionId = String(found[0]?.ID ?? '');\n if (!actionId) {\n this.Message = 'Create Rubric Draft was not found.';\n return;\n }\n const params: ActionParam[] = [{ Name: 'RubricID', Value: this.record.ID, Type: 'Input' }];\n const result = await new GraphQLActionClient(this.ProviderToUse as GraphQLDataProvider).RunAction(actionId, params);\n this.Message = result.Success ? 'Draft started.' : (result.Message ?? 'Could not start a draft.');\n if (result.Success) await this.LoadWorkspace();\n }\n\n public OnCancel(): void {\n if (!this.EditMode) return;\n this.RequestedBump = null;\n this.Summary = '';\n }\n\n public async OnPublish(event: { bump: string | null; summary: string }): Promise<void> {\n if (!this.EditMode || !this.DraftId) return;\n const version = await this.ProviderToUse.GetEntityObject<MJRubricVersionEntity>('MJ: Rubric Versions', this.ProviderToUse.CurrentUser);\n const loaded = await version.InnerLoad(CompositeKey.FromID(this.DraftId));\n if (!loaded) {\n this.Message = 'The draft version was not found.';\n return;\n }\n version.ChangeSummary = event.summary;\n if (event.bump === 'Major' || event.bump === 'Minor' || event.bump === 'Patch') version.RequestedBump = event.bump;\n version.Status = 'Published';\n const ok = await version.Save();\n this.Message = ok ? 'Published.' : (version.LatestResult?.Message ?? 'Publish failed.');\n await this.LoadWorkspace();\n }\n\n private async loadNodes(versionId: string): Promise<RubricNodeSnapshot[]> {\n const criteria = await this.rows('MJ: Rubric Criteria', `RubricVersionID='${versionId}'`);\n const anchors = criteria.length === 0 ? [] : await this.rows('MJ: Rubric Criterion Levels', `CriterionID IN (${criteria.map(row => `'${row.ID}'`).join(', ')})`);\n return criteria.map(row => NodeFromRow(row, anchors.filter(anchor => String(anchor.CriterionID) === String(row.ID)).map(anchor => ({\n scaleLevelId: anchor.ScaleLevelID == null ? null : String(anchor.ScaleLevelID),\n anchorValue: anchor.AnchorValue == null ? null : Number(anchor.AnchorValue),\n descriptor: String(anchor.Descriptor ?? ''),\n }))));\n }\n\n private async loadScales(): Promise<RubricScaleSnapshot[]> {\n const scales = await this.rows('MJ: Rubric Scales', '1=1');\n const loaded: RubricScaleSnapshot[] = [];\n for (const scale of scales) {\n const levels = await this.rows('MJ: Rubric Scale Levels', `ScaleID='${scale.ID}'`);\n loaded.push(ScaleFromRow(scale, levels));\n }\n return loaded;\n }\n\n private async saveAnchors(criterionId: string, anchors: NonNullable<RubricNodeSnapshot['anchors']>): Promise<void> {\n const saved = await this.rows('MJ: Rubric Criterion Levels', `CriterionID='${criterionId}'`);\n const used = new Set<string>();\n for (const anchor of anchors) {\n const match = saved.find(row => String(row.ScaleLevelID ?? '') === String(anchor.scaleLevelId ?? '') && !used.has(String(row.ID)));\n if (match) {\n used.add(String(match.ID));\n await this.write('MJ: Rubric Criterion Levels', String(match.ID), false, { Descriptor: anchor.descriptor, ScaleLevelID: anchor.scaleLevelId ?? null, AnchorValue: anchor.anchorValue ?? null });\n } else {\n const id = crypto.randomUUID();\n await this.write('MJ: Rubric Criterion Levels', id, true, { ID: id, CriterionID: criterionId, Descriptor: anchor.descriptor, ScaleLevelID: anchor.scaleLevelId ?? null, AnchorValue: anchor.anchorValue ?? null });\n }\n }\n for (const row of saved) {\n if (!used.has(String(row.ID))) await this.remove('MJ: Rubric Criterion Levels', String(row.ID));\n }\n }\n\n private async write(entityName: string, id: string, isNew: boolean, fields: Record<string, unknown>): Promise<void> {\n if (entityName === 'MJ: Rubric Criteria') return this.saveCriterion(id, isNew, fields);\n if (entityName === 'MJ: Rubric Bands') return this.saveBand(id, isNew, fields);\n if (entityName === 'MJ: Rubric Criterion Levels') return this.saveLevel(id, isNew, fields);\n throw new Error(`Cannot save ${entityName}.`);\n }\n\n private async saveCriterion(id: string, isNew: boolean, fields: Record<string, unknown>): Promise<void> {\n const row = await this.ProviderToUse.GetEntityObject<MJRubricCriterionEntity>('MJ: Rubric Criteria', this.ProviderToUse.CurrentUser);\n if (!(await this.openRow(row, id, isNew, 'criterion'))) return;\n if (isNew) row.ID = id;\n row.RubricVersionID = text(fields.RubricVersionID);\n row.ParentID = textOrNull(fields.ParentID);\n row.Key = text(fields.Key);\n row.Name = text(fields.Name);\n row.Description = textOrNull(fields.Description);\n row.Guidance = textOrNull(fields.Guidance);\n row.NodeType = fields.NodeType === 'Group' ? 'Group' : 'Criterion';\n row.ScaleID = textOrNull(fields.ScaleID);\n row.Weight = numberOrZero(fields.Weight);\n row.IsAdvisory = flag(fields.IsAdvisory);\n row.IsGate = flag(fields.IsGate);\n row.GateMinimumScore = numberOrNull(fields.GateMinimumScore);\n row.NotApplicablePolicy = policyOrNull(fields.NotApplicablePolicy);\n row.RollupMethod = rollupOrNull(fields.RollupMethod);\n row.EvidenceRequired = flag(fields.EvidenceRequired);\n row.RationaleRequired = flag(fields.RationaleRequired);\n row.Sequence = numberOrZero(fields.Sequence);\n await this.requireSave(row, 'criterion');\n }\n\n private async saveBand(id: string, isNew: boolean, fields: Record<string, unknown>): Promise<void> {\n const row = await this.ProviderToUse.GetEntityObject<MJRubricBandEntity>('MJ: Rubric Bands', this.ProviderToUse.CurrentUser);\n if (!(await this.openRow(row, id, isNew, 'band'))) return;\n if (isNew) row.ID = id;\n row.RubricVersionID = text(fields.RubricVersionID);\n row.Label = text(fields.Label);\n row.Description = textOrNull(fields.Description);\n row.MinScore = numberOrZero(fields.MinScore);\n row.MaxScore = numberOrZero(fields.MaxScore);\n row.DisplayTone = toneOrNeutral(fields.DisplayTone);\n row.Sequence = numberOrZero(fields.Sequence);\n await this.requireSave(row, 'band');\n }\n\n private async saveLevel(id: string, isNew: boolean, fields: Record<string, unknown>): Promise<void> {\n const row = await this.ProviderToUse.GetEntityObject<MJRubricCriterionLevelEntity>('MJ: Rubric Criterion Levels', this.ProviderToUse.CurrentUser);\n if (!(await this.openRow(row, id, isNew, 'anchor'))) return;\n if (isNew) row.ID = id;\n const criterionId = textOrNull(fields.CriterionID);\n if (criterionId) row.CriterionID = criterionId;\n row.ScaleLevelID = textOrNull(fields.ScaleLevelID);\n row.AnchorValue = numberOrNull(fields.AnchorValue);\n row.Descriptor = text(fields.Descriptor);\n await this.requireSave(row, 'anchor');\n }\n\n private async openRow(row: { NewRecord: () => void; InnerLoad: (key: CompositeKey) => Promise<boolean> }, id: string, isNew: boolean, label: string): Promise<boolean> {\n if (isNew) {\n row.NewRecord();\n return true;\n }\n const loaded = await row.InnerLoad(CompositeKey.FromID(id)); // first-pk-ok: callers pass only MJ: Rubric Criteria / Bands / Criterion Levels rows, all keyed by a single ID column\n if (!loaded) throw new Error(`The ${label} was not found.`);\n return true;\n }\n\n private async requireSave(row: { Save: () => Promise<boolean>; LatestResult?: { Message?: string } | null }, label: string): Promise<void> {\n if (!await row.Save()) throw new Error(row.LatestResult?.Message || `Could not save the ${label}.`);\n }\n\n private async remove(entityName: string, id: string): Promise<void> {\n const row = entityName === 'MJ: Rubric Criteria'\n ? await this.ProviderToUse.GetEntityObject<MJRubricCriterionEntity>(entityName, this.ProviderToUse.CurrentUser)\n : entityName === 'MJ: Rubric Bands'\n ? await this.ProviderToUse.GetEntityObject<MJRubricBandEntity>(entityName, this.ProviderToUse.CurrentUser)\n : await this.ProviderToUse.GetEntityObject<MJRubricCriterionLevelEntity>('MJ: Rubric Criterion Levels', this.ProviderToUse.CurrentUser);\n const loaded = await row.InnerLoad(CompositeKey.FromID(id));\n if (!loaded) throw new Error(`The ${entityName} row was not found.`);\n if (!await row.Delete()) throw new Error(row.LatestResult?.Message || `Could not delete the ${entityName} row.`);\n }\n\n private snapshot(row: Record<string, unknown>, nodes: RubricNodeSnapshot[], bands: RubricBandSnapshot[]): RubricVersionSnapshot {\n return {\n id: String(row.ID),\n rubricId: String(row.RubricID),\n majorVersion: row.MajorVersion == null ? null : Number(row.MajorVersion),\n minorVersion: row.MinorVersion == null ? null : Number(row.MinorVersion),\n patchVersion: row.PatchVersion == null ? null : Number(row.PatchVersion),\n instructions: row.Instructions == null ? null : String(row.Instructions),\n passThreshold: row.PassThreshold == null ? null : Number(row.PassThreshold),\n notApplicablePolicy: (row.NotApplicablePolicy as RubricVersionSnapshot['notApplicablePolicy']) ?? 'ExcludeAndRedistribute',\n scoreDisplayMin: row.ScoreDisplayMin == null ? 0 : Number(row.ScoreDisplayMin),\n scoreDisplayMax: row.ScoreDisplayMax == null ? 100 : Number(row.ScoreDisplayMax),\n nodes,\n scales: this.Scales,\n bands,\n };\n }\n\n private async rows(entityName: string, filter: string): Promise<Record<string, unknown>[]> {\n const view = RunView.FromMetadataProvider(this.ProviderToUse);\n const result = await view.RunView({ EntityName: entityName, ExtraFilter: filter, ResultType: 'simple', MaxRows: 500 }, this.ProviderToUse.CurrentUser);\n if (!result.Success) throw new Error(result.ErrorMessage || `Could not read ${entityName}.`);\n return (result.Results ?? []) as Record<string, unknown>[];\n }\n}\n\nfunction text(value: unknown): string {\n return value == null ? '' : String(value);\n}\n\nfunction textOrNull(value: unknown): string | null {\n if (value == null || value === '') return null;\n return String(value);\n}\n\nfunction numberOrZero(value: unknown): number {\n const parsed = Number(value ?? 0);\n return Number.isFinite(parsed) ? parsed : 0;\n}\n\nfunction numberOrNull(value: unknown): number | null {\n if (value == null || value === '') return null;\n const parsed = Number(value);\n return Number.isFinite(parsed) ? parsed : null;\n}\n\nfunction flag(value: unknown): boolean {\n return value === true || value === 1;\n}\n\nfunction policyOrNull(value: unknown): 'CountAsZero' | 'ExcludeAndRedistribute' | 'FailEvaluation' | 'NotAllowed' | null {\n return value === 'CountAsZero' || value === 'ExcludeAndRedistribute' || value === 'FailEvaluation' || value === 'NotAllowed' ? value : null;\n}\n\nfunction rollupOrNull(value: unknown): 'Maximum' | 'Minimum' | 'WeightedMean' | null {\n return value === 'Maximum' || value === 'Minimum' || value === 'WeightedMean' ? value : null;\n}\n\nfunction toneOrNeutral(value: unknown): 'Error' | 'Info' | 'Neutral' | 'Success' | 'Warning' {\n return value === 'Error' || value === 'Info' || value === 'Success' || value === 'Warning' ? value : 'Neutral';\n}\n\n/** The rubric record uses the left-nav rail. Each contribution is one item. */\n@RegisterClassEx(BaseFormPolicy, { key: 'MJ: Rubrics', metadata: { entity: 'MJ: Rubrics' } })\nexport class RubricFormPolicy extends BaseFormPolicy {\n public override DecorateChrome(spec: FormChromeSpec, _ctx: FormChromeContext): FormChromeSpec {\n return { ...spec, Layout: 'left-nav' };\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 <mj-form-panel-slot Entity=\"{{record.EntityInfo.Name}}\" Slot=\"before-fields\" [Record]=\"record\" [FormComponent]=\"this\" [FormContext]=\"formContext\"></mj-form-panel-slot>\n\n <!-- ========================================\n FIELD PANELS\n ======================================== -->\n <!-- Details Section -->\n <mj-collapsible-panel\n SectionKey=\"details\"\n SectionName=\"Details\"\n Icon=\"fa fa-align-left\"\n [Form]=\"this\"\n [FormContext]=\"formContext\">\n <mj-form-field \n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"Name\"\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=\"Description\"\n Type=\"textarea\"\n [EditMode]=\"EditMode\"\n [FormContext]=\"formContext\"\n ></mj-form-field>\n <mj-form-field \n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"CategoryID\"\n Type=\"textbox\"\n [EditMode]=\"EditMode\"\n [FormContext]=\"formContext\"\n LinkType=\"Record\"\n ></mj-form-field>\n <mj-form-field \n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"Status\"\n Type=\"select\"\n [EditMode]=\"EditMode\"\n [FormContext]=\"formContext\"\n ></mj-form-field>\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\n <mj-form-panel-slot Entity=\"{{record.EntityInfo.Name}}\" Slot=\"after-fields\" [Record]=\"record\" [FormComponent]=\"this\" [FormContext]=\"formContext\"></mj-form-panel-slot>\n\n <!-- ========================================\n RELATED ENTITY PANELS\n ======================================== -->\n\n <!-- Tests Section -->\n <mj-collapsible-panel\n SectionKey=\"mJTests\"\n SectionName=\"Tests\"\n Icon=\"fa fa-vial\"\n Variant=\"related-entity\"\n [Form]=\"this\"\n [FormContext]=\"formContext\"\n [BadgeCount]=\"GetSectionRowCount('mJTests')\"\n [DefaultExpanded]=\"false\">\n @if (record.IsSaved) {\n <div>\n <mj-explorer-entity-data-grid\n [Params]=\"BuildRelationshipViewParamsByEntityName('MJ: Tests','RubricID')\"\n [NewRecordValues]=\"NewRecordValues('MJ: Tests','RubricID')\"\n [AllowLoad]=\"IsSectionExpanded('mJTests')\"\n [ShowToolbar]=\"true\"\n (Navigate)=\"OnFormNavigate($event)\"\n (AfterDataLoad)=\"SetSectionRowCount('mJTests', $event.totalRowCount)\"\n >\n </mj-explorer-entity-data-grid>\n </div>\n }\n </mj-collapsible-panel>\n\n <!-- Rubric Versions Section -->\n <mj-collapsible-panel\n SectionKey=\"mJRubricVersions\"\n SectionName=\"Rubric Versions\"\n Icon=\"fa fa-table\"\n Variant=\"related-entity\"\n [Form]=\"this\"\n [FormContext]=\"formContext\"\n [BadgeCount]=\"GetSectionRowCount('mJRubricVersions')\"\n [DefaultExpanded]=\"false\">\n @if (record.IsSaved) {\n <div>\n <mj-explorer-entity-data-grid\n [Params]=\"BuildRelationshipViewParamsByEntityName('MJ: Rubric Versions','RubricID')\"\n [NewRecordValues]=\"NewRecordValues('MJ: Rubric Versions','RubricID')\"\n [AllowLoad]=\"IsSectionExpanded('mJRubricVersions')\"\n [ShowToolbar]=\"true\"\n (Navigate)=\"OnFormNavigate($event)\"\n (AfterDataLoad)=\"SetSectionRowCount('mJRubricVersions', $event.totalRowCount)\"\n >\n </mj-explorer-entity-data-grid>\n </div>\n }\n </mj-collapsible-panel>\n\n <!-- Test Suites Section -->\n <mj-collapsible-panel\n SectionKey=\"mJTestSuites\"\n SectionName=\"Test Suites\"\n Icon=\"fa fa-flask\"\n Variant=\"related-entity\"\n [Form]=\"this\"\n [FormContext]=\"formContext\"\n [BadgeCount]=\"GetSectionRowCount('mJTestSuites')\"\n [DefaultExpanded]=\"false\">\n @if (record.IsSaved) {\n <div>\n <mj-explorer-entity-data-grid\n [Params]=\"BuildRelationshipViewParamsByEntityName('MJ: Test Suites','RubricID')\"\n [NewRecordValues]=\"NewRecordValues('MJ: Test Suites','RubricID')\"\n [AllowLoad]=\"IsSectionExpanded('mJTestSuites')\"\n [ShowToolbar]=\"true\"\n (Navigate)=\"OnFormNavigate($event)\"\n (AfterDataLoad)=\"SetSectionRowCount('mJTestSuites', $event.totalRowCount)\"\n >\n </mj-explorer-entity-data-grid>\n </div>\n }\n </mj-collapsible-panel>\n\n <!-- AI Agent Rubrics Section -->\n <mj-collapsible-panel\n SectionKey=\"mJAIAgentRubrics\"\n SectionName=\"AI Agent Rubrics\"\n Icon=\"fa fa-table\"\n Variant=\"related-entity\"\n [Form]=\"this\"\n [FormContext]=\"formContext\"\n [BadgeCount]=\"GetSectionRowCount('mJAIAgentRubrics')\"\n [DefaultExpanded]=\"false\">\n @if (record.IsSaved) {\n <div>\n <mj-explorer-entity-data-grid\n [Params]=\"BuildRelationshipViewParamsByEntityName('MJ: AI Agent Rubrics','RubricID')\"\n [NewRecordValues]=\"NewRecordValues('MJ: AI Agent Rubrics','RubricID')\"\n [AllowLoad]=\"IsSectionExpanded('mJAIAgentRubrics')\"\n [ShowToolbar]=\"true\"\n (Navigate)=\"OnFormNavigate($event)\"\n (AfterDataLoad)=\"SetSectionRowCount('mJAIAgentRubrics', $event.totalRowCount)\"\n >\n </mj-explorer-entity-data-grid>\n </div>\n }\n </mj-collapsible-panel>\n\n <mj-form-panel-slot Entity=\"{{record.EntityInfo.Name}}\" Slot=\"after-related\" [Record]=\"record\" [FormComponent]=\"this\" [FormContext]=\"formContext\"></mj-form-panel-slot>\n</mj-record-form-container>\n "]}
1
+ {"version":3,"file":"rubric-form.component.js","sourceRoot":"","sources":["../../../../src/lib/custom/Rubrics/rubric-form.component.ts","../../../../src/lib/generated/Entities/MJRubric/mjrubric.form.component.html"],"names":[],"mappings":"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","sourcesContent":["import { Component } from '@angular/core';\nimport { ActionParam } from '@memberjunction/actions-base';\nimport { CompositeKey, RunView } from '@memberjunction/core';\nimport { GraphQLActionClient, GraphQLDataProvider } from '@memberjunction/graphql-dataprovider';\nimport { EscapeSQLString, RegisterClass, RegisterClassEx, UUIDsEqual } from '@memberjunction/global';\nimport { BaseFormComponent, BaseFormPolicy, type FormChromeContext, type FormChromeSpec } from '@memberjunction/ng-base-forms';\nimport { SharedService } from '@memberjunction/ng-shared';\nimport { BandFromRow, NodeFields, NodeFromRow, PlanNodeSave, PlanBandSave, QueueNodeSave, PublishPreview, ScaleFromRow, VersionShownWithoutDraft, type RubricVersionCard } from '@memberjunction/ng-rubrics';\nimport type { RubricBandSnapshot, RubricNodeSnapshot, RubricScaleSnapshot, RubricVersionSnapshot } from '@memberjunction/rubrics-base';\nimport { MJRubricBandEntity, MJRubricCriterionEntity, MJRubricCriterionLevelEntity, MJRubricEntity, MJRubricVersionEntity } from '@memberjunction/core-entities';\nimport { MJRubricFormComponent } from '../../generated/Entities/MJRubric/mjrubric.form.component';\n\n/**\n * Rubric form. Loads the draft version and its criteria, hosts the author,\n * the diff, and the publish dialog, and saves what they emit.\n */\n@RegisterClass(BaseFormComponent, 'MJ: Rubrics')\n@Component({\n standalone: false,\n selector: 'mj-rubric-form',\n templateUrl: '../../generated/Entities/MJRubric/mjrubric.form.component.html',\n})\nexport class MJRubricFormComponentExtended extends MJRubricFormComponent {\n public override record!: MJRubricEntity;\n public Loading = true;\n public Nodes: RubricNodeSnapshot[] = [];\n public Scales: RubricScaleSnapshot[] = [];\n public Bands: RubricBandSnapshot[] = [];\n public Versions: Record<string, unknown>[] = [];\n public DraftId: string | null = null;\n public BaseVersion: RubricVersionSnapshot | null = null;\n public DraftVersion: RubricVersionSnapshot | null = null;\n public RequestedBump: 'Major' | 'Minor' | 'Patch' | null = null;\n public Summary = '';\n public Message = '';\n public Viewing: 'draft' | 'published' = 'draft';\n public VersionCards: RubricVersionCard[] = [];\n private nodeSaveTimer: ReturnType<typeof setTimeout> | null = null;\n private nodeSaveChain: Promise<void> = Promise.resolve();\n private disposed = false;\n\n public get PublishedLabel(): string {\n const row = this.Versions.find(item => item.Status === 'Published');\n return row ? `${row.MajorVersion}.${row.MinorVersion}.${row.PatchVersion}` : '';\n }\n\n public get NextVersion(): string {\n return this.DraftVersion ? PublishPreview(this.BaseVersion, this.DraftVersion).nextVersion ?? '' : '';\n }\n\n public get ComputedBump(): string | null {\n return this.DraftVersion ? PublishPreview(this.BaseVersion, this.DraftVersion).computedBump : null;\n }\n\n public override async ngOnInit(): Promise<void> {\n await super.ngOnInit();\n await this.LoadWorkspace();\n }\n\n public async LoadWorkspace(): Promise<void> {\n this.Loading = true;\n try {\n const rows = await this.rows('MJ: Rubric Versions', `RubricID='${this.record.ID}'`);\n this.Versions = rows;\n const draft = rows.find(row => row.Status === 'Draft') ?? null;\n this.DraftId = draft ? String(draft.ID) : null;\n this.DraftVersion = null;\n this.BaseVersion = null;\n this.Nodes = [];\n this.Bands = [];\n this.Scales = await this.loadScales();\n if (draft) {\n this.Viewing = 'draft';\n this.Nodes = await this.loadNodes(String(draft.ID));\n this.Bands = (await this.rows('MJ: Rubric Bands', `RubricVersionID='${draft.ID}'`)).map(BandFromRow);\n this.DraftVersion = this.snapshot(draft, this.Nodes, this.Bands);\n const baseId = draft.BasedOnVersionID ? String(draft.BasedOnVersionID) : null;\n const base = baseId ? rows.find(row => String(row.ID) === baseId) : rows.find(row => row.Status === 'Published');\n if (base) {\n const baseNodes = await this.loadNodes(String(base.ID));\n const baseBands = (await this.rows('MJ: Rubric Bands', `RubricVersionID='${base.ID}'`)).map(BandFromRow);\n this.BaseVersion = this.snapshot(base, baseNodes, baseBands);\n }\n } else {\n this.Viewing = 'published';\n const published = VersionShownWithoutDraft(rows);\n if (published) {\n const nodes = await this.loadNodes(String(published.ID));\n const bands = (await this.rows('MJ: Rubric Bands', `RubricVersionID='${published.ID}'`)).map(BandFromRow);\n this.Nodes = nodes;\n this.Bands = bands;\n this.BaseVersion = this.snapshot(published, nodes, bands);\n }\n }\n this.VersionCards = await this.buildVersionCards(rows);\n } finally {\n this.Loading = false;\n }\n }\n\n public OpenVersion(id: string): void {\n SharedService.Instance.OpenEntityRecord('MJ: Rubric Versions', CompositeKey.FromID(id));\n }\n\n private async buildVersionCards(versions: Record<string, unknown>[]): Promise<RubricVersionCard[]> {\n if (versions.length === 0) return [];\n const ids = versions.map(row => `'${EscapeSQLString(String(row.ID))}'`).join(', ');\n const criteria = await this.rows('MJ: Rubric Criteria', `RubricVersionID IN (${ids})`);\n const bands = await this.rows('MJ: Rubric Bands', `RubricVersionID IN (${ids})`);\n return versions.map(row => {\n const id = String(row.ID);\n const nodes = criteria.filter(item => String(item.RubricVersionID) === id);\n const versionBands = bands.filter(item => String(item.RubricVersionID) === id);\n const status = String(row.Status ?? '');\n const numbered = row.MajorVersion == null ? '' : `${row.MajorVersion}.${row.MinorVersion}.${row.PatchVersion}`;\n const label = status === 'Draft' ? `Draft${this.NextVersion ? ` · next ${this.NextVersion}` : ''}` : (numbered || status);\n return {\n id,\n status,\n label,\n bump: String(row.AppliedBump || row.ComputedBump || ''),\n threshold: row.PassThreshold == null ? '' : String(row.PassThreshold),\n criteria: nodes.filter(item => item.NodeType === 'Criterion' || item.NodeType == null).length,\n gates: nodes.filter(item => item.IsGate === true || item.IsGate === 1).length,\n bands: versionBands.map(item => String(item.Label ?? '')).filter(Boolean).join(', '),\n summary: row.ChangeSummary == null ? '' : String(row.ChangeSummary),\n };\n }).sort((left, right) => Number(left.status === 'Draft') - Number(right.status === 'Draft'));\n }\n\n public override ngOnDestroy(): void {\n this.disposed = true;\n if (this.nodeSaveTimer != null) clearTimeout(this.nodeSaveTimer);\n this.nodeSaveTimer = null;\n super.ngOnDestroy();\n }\n\n /** Keeps the open draft in memory and writes dirty criteria once typing pauses. */\n public OnNodes(nodes: RubricNodeSnapshot[]): void {\n if (!this.EditMode || this.Viewing === 'published') return;\n this.Nodes = nodes;\n if (this.DraftVersion) this.DraftVersion = { ...this.DraftVersion, nodes };\n if (!this.DraftId) return;\n const draftId = this.DraftId;\n this.nodeSaveTimer = QueueNodeSave(this.nodeSaveTimer, () => {\n this.nodeSaveTimer = null;\n this.nodeSaveChain = this.nodeSaveChain.then(() => this.persistNodes(draftId, nodes));\n });\n }\n\n private async persistNodes(draftId: string, nodes: RubricNodeSnapshot[]): Promise<void> {\n if (this.disposed || this.DraftId !== draftId || this.Viewing === 'published') return;\n try {\n const saved = await this.rows('MJ: Rubric Criteria', `RubricVersionID='${draftId}'`);\n const anchorRows = saved.length === 0 ? [] : await this.rows('MJ: Rubric Criterion Levels', `CriterionID IN (${saved.map(row => `'${String(row.ID)}'`).join(', ')})`);\n const plan = PlanNodeSave(saved.map(row => {\n const node = NodeFromRow(row, anchorRows.filter(anchor => String(anchor.CriterionID) === String(row.ID)).map(anchor => ({\n scaleLevelId: anchor.ScaleLevelID == null ? null : String(anchor.ScaleLevelID),\n anchorValue: anchor.AnchorValue == null ? null : Number(anchor.AnchorValue),\n descriptor: String(anchor.Descriptor ?? ''),\n })));\n return { id: node.id, parentId: node.parentId ?? null, fields: NodeFields(node), anchors: node.anchors ?? [] };\n }), nodes);\n for (const removedId of plan.removedIds) {\n const anchors = await this.rows('MJ: Rubric Criterion Levels', `CriterionID='${removedId}'`);\n for (const anchor of anchors) await this.remove('MJ: Rubric Criterion Levels', String(anchor.ID));\n await this.remove('MJ: Rubric Criteria', removedId);\n }\n for (const item of plan.upserts) {\n await this.write('MJ: Rubric Criteria', item.id, item.isNew, { ...item.fields, RubricVersionID: draftId });\n const source = nodes.find(node => UUIDsEqual(node.id, item.id));\n await this.saveAnchors(item.id, source?.anchors ?? []);\n }\n } catch (error) {\n this.Message = error instanceof Error ? error.message : 'Could not save the draft.';\n }\n }\n\n public async OnBands(bands: RubricBandSnapshot[]): Promise<void> {\n if (!this.EditMode || this.Viewing === 'published') return;\n this.Bands = bands;\n if (!this.DraftId) return;\n const saved = await this.rows('MJ: Rubric Bands', `RubricVersionID='${this.DraftId}'`);\n const plan = PlanBandSave(saved.map(row => String(row.ID)), bands);\n for (const id of plan.removedIds) await this.remove('MJ: Rubric Bands', id);\n for (const item of plan.upserts) await this.write('MJ: Rubric Bands', item.id, item.isNew, { ...item.fields, RubricVersionID: this.DraftId });\n if (this.DraftVersion) this.DraftVersion = { ...this.DraftVersion, bands };\n }\n\n /** Clones the highest published or retired version through Create Rubric Draft. */\n public async StartDraft(): Promise<void> {\n if (!this.EditMode) return;\n const found = await this.rows('MJ: Actions', `Name='Create Rubric Draft'`);\n const actionId = String(found[0]?.ID ?? '');\n if (!actionId) {\n this.Message = 'Create Rubric Draft was not found.';\n return;\n }\n const params: ActionParam[] = [{ Name: 'RubricID', Value: this.record.ID, Type: 'Input' }];\n const result = await new GraphQLActionClient(this.ProviderToUse as GraphQLDataProvider).RunAction(actionId, params);\n this.Message = result.Success ? 'Draft started.' : (result.Message ?? 'Could not start a draft.');\n if (result.Success) await this.LoadWorkspace();\n }\n\n public OnCancel(): void {\n if (!this.EditMode) return;\n this.RequestedBump = null;\n this.Summary = '';\n }\n\n public async OnPublish(event: { bump: string | null; summary: string }): Promise<void> {\n if (!this.EditMode || !this.DraftId) return;\n const version = await this.ProviderToUse.GetEntityObject<MJRubricVersionEntity>('MJ: Rubric Versions', this.ProviderToUse.CurrentUser);\n const loaded = await version.InnerLoad(CompositeKey.FromID(this.DraftId));\n if (!loaded) {\n this.Message = 'The draft version was not found.';\n return;\n }\n version.ChangeSummary = event.summary;\n if (event.bump === 'Major' || event.bump === 'Minor' || event.bump === 'Patch') version.RequestedBump = event.bump;\n version.Status = 'Published';\n const ok = await version.Save();\n this.Message = ok ? 'Published.' : (version.LatestResult?.Message ?? 'Publish failed.');\n await this.LoadWorkspace();\n }\n\n private async loadNodes(versionId: string): Promise<RubricNodeSnapshot[]> {\n const criteria = await this.rows('MJ: Rubric Criteria', `RubricVersionID='${versionId}'`);\n const anchors = criteria.length === 0 ? [] : await this.rows('MJ: Rubric Criterion Levels', `CriterionID IN (${criteria.map(row => `'${row.ID}'`).join(', ')})`);\n return criteria.map(row => NodeFromRow(row, anchors.filter(anchor => String(anchor.CriterionID) === String(row.ID)).map(anchor => ({\n scaleLevelId: anchor.ScaleLevelID == null ? null : String(anchor.ScaleLevelID),\n anchorValue: anchor.AnchorValue == null ? null : Number(anchor.AnchorValue),\n descriptor: String(anchor.Descriptor ?? ''),\n }))));\n }\n\n private async loadScales(): Promise<RubricScaleSnapshot[]> {\n const scales = await this.rows('MJ: Rubric Scales', '1=1');\n const loaded: RubricScaleSnapshot[] = [];\n for (const scale of scales) {\n const levels = await this.rows('MJ: Rubric Scale Levels', `ScaleID='${scale.ID}'`);\n loaded.push(ScaleFromRow(scale, levels));\n }\n return loaded;\n }\n\n private async saveAnchors(criterionId: string, anchors: NonNullable<RubricNodeSnapshot['anchors']>): Promise<void> {\n const saved = await this.rows('MJ: Rubric Criterion Levels', `CriterionID='${criterionId}'`);\n const used = new Set<string>();\n for (const anchor of anchors) {\n const match = saved.find(row => String(row.ScaleLevelID ?? '') === String(anchor.scaleLevelId ?? '') && !used.has(String(row.ID)));\n if (match) {\n used.add(String(match.ID));\n await this.write('MJ: Rubric Criterion Levels', String(match.ID), false, { Descriptor: anchor.descriptor, ScaleLevelID: anchor.scaleLevelId ?? null, AnchorValue: anchor.anchorValue ?? null });\n } else {\n const id = crypto.randomUUID();\n await this.write('MJ: Rubric Criterion Levels', id, true, { ID: id, CriterionID: criterionId, Descriptor: anchor.descriptor, ScaleLevelID: anchor.scaleLevelId ?? null, AnchorValue: anchor.anchorValue ?? null });\n }\n }\n for (const row of saved) {\n if (!used.has(String(row.ID))) await this.remove('MJ: Rubric Criterion Levels', String(row.ID));\n }\n }\n\n private async write(entityName: string, id: string, isNew: boolean, fields: Record<string, unknown>): Promise<void> {\n if (entityName === 'MJ: Rubric Criteria') return this.saveCriterion(id, isNew, fields);\n if (entityName === 'MJ: Rubric Bands') return this.saveBand(id, isNew, fields);\n if (entityName === 'MJ: Rubric Criterion Levels') return this.saveLevel(id, isNew, fields);\n throw new Error(`Cannot save ${entityName}.`);\n }\n\n private async saveCriterion(id: string, isNew: boolean, fields: Record<string, unknown>): Promise<void> {\n const row = await this.ProviderToUse.GetEntityObject<MJRubricCriterionEntity>('MJ: Rubric Criteria', this.ProviderToUse.CurrentUser);\n if (!(await this.openRow(row, id, isNew, 'criterion'))) return;\n if (isNew) row.ID = id;\n row.RubricVersionID = text(fields.RubricVersionID);\n row.ParentID = textOrNull(fields.ParentID);\n row.Key = text(fields.Key);\n row.Name = text(fields.Name);\n row.Description = textOrNull(fields.Description);\n row.Guidance = textOrNull(fields.Guidance);\n row.NodeType = fields.NodeType === 'Group' ? 'Group' : 'Criterion';\n row.ScaleID = textOrNull(fields.ScaleID);\n row.Weight = numberOrZero(fields.Weight);\n row.IsAdvisory = flag(fields.IsAdvisory);\n row.IsGate = flag(fields.IsGate);\n row.GateMinimumScore = numberOrNull(fields.GateMinimumScore);\n row.NotApplicablePolicy = policyOrNull(fields.NotApplicablePolicy);\n row.RollupMethod = rollupOrNull(fields.RollupMethod);\n row.EvidenceRequired = flag(fields.EvidenceRequired);\n row.RationaleRequired = flag(fields.RationaleRequired);\n row.Sequence = numberOrZero(fields.Sequence);\n await this.requireSave(row, 'criterion');\n }\n\n private async saveBand(id: string, isNew: boolean, fields: Record<string, unknown>): Promise<void> {\n const row = await this.ProviderToUse.GetEntityObject<MJRubricBandEntity>('MJ: Rubric Bands', this.ProviderToUse.CurrentUser);\n if (!(await this.openRow(row, id, isNew, 'band'))) return;\n if (isNew) row.ID = id;\n row.RubricVersionID = text(fields.RubricVersionID);\n row.Label = text(fields.Label);\n row.Description = textOrNull(fields.Description);\n row.MinScore = numberOrZero(fields.MinScore);\n row.MaxScore = numberOrZero(fields.MaxScore);\n row.DisplayTone = toneOrNeutral(fields.DisplayTone);\n row.Sequence = numberOrZero(fields.Sequence);\n await this.requireSave(row, 'band');\n }\n\n private async saveLevel(id: string, isNew: boolean, fields: Record<string, unknown>): Promise<void> {\n const row = await this.ProviderToUse.GetEntityObject<MJRubricCriterionLevelEntity>('MJ: Rubric Criterion Levels', this.ProviderToUse.CurrentUser);\n if (!(await this.openRow(row, id, isNew, 'anchor'))) return;\n if (isNew) row.ID = id;\n const criterionId = textOrNull(fields.CriterionID);\n if (criterionId) row.CriterionID = criterionId;\n row.ScaleLevelID = textOrNull(fields.ScaleLevelID);\n row.AnchorValue = numberOrNull(fields.AnchorValue);\n row.Descriptor = text(fields.Descriptor);\n await this.requireSave(row, 'anchor');\n }\n\n private async openRow(row: { NewRecord: () => void; InnerLoad: (key: CompositeKey) => Promise<boolean> }, id: string, isNew: boolean, label: string): Promise<boolean> {\n if (isNew) {\n row.NewRecord();\n return true;\n }\n const loaded = await row.InnerLoad(CompositeKey.FromID(id)); // first-pk-ok: openRow only receives MJ: Rubric* core entities, all keyed on ID\n if (!loaded) throw new Error(`The ${label} was not found.`);\n return true;\n }\n\n private async requireSave(row: { Save: () => Promise<boolean>; LatestResult?: { Message?: string } | null }, label: string): Promise<void> {\n if (!await row.Save()) throw new Error(row.LatestResult?.Message || `Could not save the ${label}.`);\n }\n\n private async remove(entityName: string, id: string): Promise<void> {\n const row = entityName === 'MJ: Rubric Criteria'\n ? await this.ProviderToUse.GetEntityObject<MJRubricCriterionEntity>(entityName, this.ProviderToUse.CurrentUser)\n : entityName === 'MJ: Rubric Bands'\n ? await this.ProviderToUse.GetEntityObject<MJRubricBandEntity>(entityName, this.ProviderToUse.CurrentUser)\n : await this.ProviderToUse.GetEntityObject<MJRubricCriterionLevelEntity>('MJ: Rubric Criterion Levels', this.ProviderToUse.CurrentUser);\n const loaded = await row.InnerLoad(CompositeKey.FromID(id));\n if (!loaded) throw new Error(`The ${entityName} row was not found.`);\n if (!await row.Delete()) throw new Error(row.LatestResult?.Message || `Could not delete the ${entityName} row.`);\n }\n\n private snapshot(row: Record<string, unknown>, nodes: RubricNodeSnapshot[], bands: RubricBandSnapshot[]): RubricVersionSnapshot {\n return {\n id: String(row.ID),\n rubricId: String(row.RubricID),\n majorVersion: row.MajorVersion == null ? null : Number(row.MajorVersion),\n minorVersion: row.MinorVersion == null ? null : Number(row.MinorVersion),\n patchVersion: row.PatchVersion == null ? null : Number(row.PatchVersion),\n instructions: row.Instructions == null ? null : String(row.Instructions),\n passThreshold: row.PassThreshold == null ? null : Number(row.PassThreshold),\n notApplicablePolicy: (row.NotApplicablePolicy as RubricVersionSnapshot['notApplicablePolicy']) ?? 'ExcludeAndRedistribute',\n scoreDisplayMin: row.ScoreDisplayMin == null ? 0 : Number(row.ScoreDisplayMin),\n scoreDisplayMax: row.ScoreDisplayMax == null ? 100 : Number(row.ScoreDisplayMax),\n nodes,\n scales: this.Scales,\n bands,\n };\n }\n\n private async rows(entityName: string, filter: string): Promise<Record<string, unknown>[]> {\n const view = RunView.FromMetadataProvider(this.ProviderToUse);\n const result = await view.RunView({ EntityName: entityName, ExtraFilter: filter, ResultType: 'simple', MaxRows: 500 }, this.ProviderToUse.CurrentUser);\n if (!result.Success) throw new Error(result.ErrorMessage || `Could not read ${entityName}.`);\n return (result.Results ?? []) as Record<string, unknown>[];\n }\n}\n\nfunction text(value: unknown): string {\n return value == null ? '' : String(value);\n}\n\nfunction textOrNull(value: unknown): string | null {\n if (value == null || value === '') return null;\n return String(value);\n}\n\nfunction numberOrZero(value: unknown): number {\n const parsed = Number(value ?? 0);\n return Number.isFinite(parsed) ? parsed : 0;\n}\n\nfunction numberOrNull(value: unknown): number | null {\n if (value == null || value === '') return null;\n const parsed = Number(value);\n return Number.isFinite(parsed) ? parsed : null;\n}\n\nfunction flag(value: unknown): boolean {\n return value === true || value === 1;\n}\n\nfunction policyOrNull(value: unknown): 'CountAsZero' | 'ExcludeAndRedistribute' | 'FailEvaluation' | 'NotAllowed' | null {\n return value === 'CountAsZero' || value === 'ExcludeAndRedistribute' || value === 'FailEvaluation' || value === 'NotAllowed' ? value : null;\n}\n\nfunction rollupOrNull(value: unknown): 'Maximum' | 'Minimum' | 'WeightedMean' | null {\n return value === 'Maximum' || value === 'Minimum' || value === 'WeightedMean' ? value : null;\n}\n\nfunction toneOrNeutral(value: unknown): 'Error' | 'Info' | 'Neutral' | 'Success' | 'Warning' {\n return value === 'Error' || value === 'Info' || value === 'Success' || value === 'Warning' ? value : 'Neutral';\n}\n\n/** The rubric record uses the left-nav rail. Each contribution is one item. */\n@RegisterClassEx(BaseFormPolicy, { key: 'MJ: Rubrics', metadata: { entity: 'MJ: Rubrics' } })\nexport class RubricFormPolicy extends BaseFormPolicy {\n public override DecorateChrome(spec: FormChromeSpec, _ctx: FormChromeContext): FormChromeSpec {\n return { ...spec, Layout: 'left-nav' };\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 <mj-form-panel-slot Entity=\"{{record.EntityInfo.Name}}\" Slot=\"before-fields\" [Record]=\"record\" [FormComponent]=\"this\" [FormContext]=\"formContext\"></mj-form-panel-slot>\n\n <!-- ========================================\n FIELD PANELS\n ======================================== -->\n <!-- Details Section -->\n <mj-collapsible-panel\n SectionKey=\"details\"\n SectionName=\"Details\"\n Icon=\"fa fa-align-left\"\n [Form]=\"this\"\n [FormContext]=\"formContext\">\n <mj-form-field \n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"Name\"\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=\"Description\"\n Type=\"textarea\"\n [EditMode]=\"EditMode\"\n [FormContext]=\"formContext\"\n ></mj-form-field>\n <mj-form-field \n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"CategoryID\"\n Type=\"textbox\"\n [EditMode]=\"EditMode\"\n [FormContext]=\"formContext\"\n LinkType=\"Record\"\n ></mj-form-field>\n <mj-form-field \n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"Status\"\n Type=\"select\"\n [EditMode]=\"EditMode\"\n [FormContext]=\"formContext\"\n ></mj-form-field>\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\n <mj-form-panel-slot Entity=\"{{record.EntityInfo.Name}}\" Slot=\"after-fields\" [Record]=\"record\" [FormComponent]=\"this\" [FormContext]=\"formContext\"></mj-form-panel-slot>\n\n <!-- ========================================\n RELATED ENTITY PANELS\n ======================================== -->\n\n <!-- Tests Section -->\n <mj-collapsible-panel\n SectionKey=\"mJTests\"\n SectionName=\"Tests\"\n Icon=\"fa fa-vial\"\n Variant=\"related-entity\"\n [Form]=\"this\"\n [FormContext]=\"formContext\"\n [BadgeCount]=\"GetSectionRowCount('mJTests')\"\n [DefaultExpanded]=\"false\">\n @if (record.IsSaved) {\n <div>\n <mj-explorer-entity-data-grid\n [Params]=\"BuildRelationshipViewParamsByEntityName('MJ: Tests','RubricID')\"\n [NewRecordValues]=\"NewRecordValues('MJ: Tests','RubricID')\"\n [AllowLoad]=\"IsSectionExpanded('mJTests')\"\n [ShowToolbar]=\"true\"\n (Navigate)=\"OnFormNavigate($event)\"\n (AfterDataLoad)=\"SetSectionRowCount('mJTests', $event.totalRowCount)\"\n >\n </mj-explorer-entity-data-grid>\n </div>\n }\n </mj-collapsible-panel>\n\n <!-- Rubric Versions Section -->\n <mj-collapsible-panel\n SectionKey=\"mJRubricVersions\"\n SectionName=\"Rubric Versions\"\n Icon=\"fa fa-table\"\n Variant=\"related-entity\"\n [Form]=\"this\"\n [FormContext]=\"formContext\"\n [BadgeCount]=\"GetSectionRowCount('mJRubricVersions')\"\n [DefaultExpanded]=\"false\">\n @if (record.IsSaved) {\n <div>\n <mj-explorer-entity-data-grid\n [Params]=\"BuildRelationshipViewParamsByEntityName('MJ: Rubric Versions','RubricID')\"\n [NewRecordValues]=\"NewRecordValues('MJ: Rubric Versions','RubricID')\"\n [AllowLoad]=\"IsSectionExpanded('mJRubricVersions')\"\n [ShowToolbar]=\"true\"\n (Navigate)=\"OnFormNavigate($event)\"\n (AfterDataLoad)=\"SetSectionRowCount('mJRubricVersions', $event.totalRowCount)\"\n >\n </mj-explorer-entity-data-grid>\n </div>\n }\n </mj-collapsible-panel>\n\n <!-- Test Suites Section -->\n <mj-collapsible-panel\n SectionKey=\"mJTestSuites\"\n SectionName=\"Test Suites\"\n Icon=\"fa fa-flask\"\n Variant=\"related-entity\"\n [Form]=\"this\"\n [FormContext]=\"formContext\"\n [BadgeCount]=\"GetSectionRowCount('mJTestSuites')\"\n [DefaultExpanded]=\"false\">\n @if (record.IsSaved) {\n <div>\n <mj-explorer-entity-data-grid\n [Params]=\"BuildRelationshipViewParamsByEntityName('MJ: Test Suites','RubricID')\"\n [NewRecordValues]=\"NewRecordValues('MJ: Test Suites','RubricID')\"\n [AllowLoad]=\"IsSectionExpanded('mJTestSuites')\"\n [ShowToolbar]=\"true\"\n (Navigate)=\"OnFormNavigate($event)\"\n (AfterDataLoad)=\"SetSectionRowCount('mJTestSuites', $event.totalRowCount)\"\n >\n </mj-explorer-entity-data-grid>\n </div>\n }\n </mj-collapsible-panel>\n\n <!-- AI Agent Rubrics Section -->\n <mj-collapsible-panel\n SectionKey=\"mJAIAgentRubrics\"\n SectionName=\"AI Agent Rubrics\"\n Icon=\"fa fa-table\"\n Variant=\"related-entity\"\n [Form]=\"this\"\n [FormContext]=\"formContext\"\n [BadgeCount]=\"GetSectionRowCount('mJAIAgentRubrics')\"\n [DefaultExpanded]=\"false\">\n @if (record.IsSaved) {\n <div>\n <mj-explorer-entity-data-grid\n [Params]=\"BuildRelationshipViewParamsByEntityName('MJ: AI Agent Rubrics','RubricID')\"\n [NewRecordValues]=\"NewRecordValues('MJ: AI Agent Rubrics','RubricID')\"\n [AllowLoad]=\"IsSectionExpanded('mJAIAgentRubrics')\"\n [ShowToolbar]=\"true\"\n (Navigate)=\"OnFormNavigate($event)\"\n (AfterDataLoad)=\"SetSectionRowCount('mJAIAgentRubrics', $event.totalRowCount)\"\n >\n </mj-explorer-entity-data-grid>\n </div>\n }\n </mj-collapsible-panel>\n\n <mj-form-panel-slot Entity=\"{{record.EntityInfo.Name}}\" Slot=\"after-related\" [Record]=\"record\" [FormComponent]=\"this\" [FormContext]=\"formContext\"></mj-form-panel-slot>\n</mj-record-form-container>\n "]}
@@ -1 +1 @@
1
- {"version":3,"file":"searchscope-form.component.d.ts","sourceRoot":"","sources":["../../../../src/lib/custom/SearchScopes/searchscope-form.component.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,OAAO,EAAa,SAAS,EAAE,MAAM,eAAe,CAAC;AAGrD,OAAO,EAAE,mBAAmB,EAAkC,MAAM,+BAA+B,CAAC;AAGpG,OAAO,EAAiB,gBAAgB,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACrG,OAAO,EAAE,0BAA0B,EAAE,MAAM,qEAAqE,CAAC;;AAEjH,UAAU,eAAe;IACrB,oFAAoF;IACpF,GAAG,EAAE,MAAM,CAAC;IACZ,8FAA8F;IAC9F,KAAK,EAAE,MAAM,CAAC;IACd,6EAA6E;IAC7E,MAAM,EAAE,MAAM,CAAC;CAClB;AAUD,UAAU,cAAc;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;CACpB;AAeD,qBAOa,kCAAmC,SAAQ,0BAA2B,YAAW,SAAS;IACnF,MAAM,EAAG,mBAAmB,CAAC;IAE7C,SAAgB,kBAAkB,EAAE,cAAc,EAAE,CAAsB;IAE1E,iCAAiC;IAC1B,YAAY,SAAM;IAClB,gBAAgB,UAAS;IACzB,cAAc,EAAE,gBAAgB,EAAE,CAAM;IACxC,gBAAgB,EAAE,uBAAuB,EAAE,CAAM;IACjD,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAQ;IACvC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAQ;IAC1C,OAAO,CAAC,mBAAmB,CAA6B;IACxD,OAAO,CAAC,aAAa,CAAuB;IAE5C;;;;;;OAMG;IACH,OAAO,CAAC,oBAAoB,CAAgB;IACrC,wBAAwB,EAAE,MAAM,GAAG,IAAI,CAAQ;IAEtC,WAAW,IAAI,IAAI;IAKnC;;;;;;OAMG;IACI,UAAU,IAAI,IAAI;IAiElB,aAAa,IAAI,IAAI;IAM5B;;;;;;;;OAQG;IACH,OAAO,CAAC,MAAM,CAAC,uBAAuB;IAuBtC;;;;OAIG;IACmB,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAuB/C;;;;OAIG;IACH,IAAW,2BAA2B,IAAI,MAAM,CAG/C;IAED,IAAW,2BAA2B,CAAC,KAAK,EAAE,MAAM,EAUnD;IAED;;;OAGG;IACH,IAAW,uBAAuB,IAAI,OAAO,CAG5C;IAED;;;OAGG;IACI,oBAAoB,UAAS;IAEpC;;;;;;OAMG;IACH,OAAO,CAAC,cAAc,CAAkC;IAExD,IAAW,aAAa,IAAI,eAAe,EAAE,CAW5C;IAED;;;;OAIG;IACI,qBAAqB,CAAC,GAAG,EAAE,eAAe,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAsB9E;;;;;OAKG;IACU,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC;IA6B7C,OAAO,CAAC,WAAW;IAkCnB,OAAO,CAAC,SAAS;IAWjB,OAAO,CAAC,gBAAgB;yCA9Uf,kCAAkC;2CAAlC,kCAAkC;CAuV9C;AAED,wBAAgB,sCAAsC,IAAI,IAAI,CAI7D"}
1
+ {"version":3,"file":"searchscope-form.component.d.ts","sourceRoot":"","sources":["../../../../src/lib/custom/SearchScopes/searchscope-form.component.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,OAAO,EAAa,SAAS,EAAE,MAAM,eAAe,CAAC;AAGrD,OAAO,EAAE,mBAAmB,EAAkC,MAAM,+BAA+B,CAAC;AAGpG,OAAO,EAAiB,gBAAgB,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACrG,OAAO,EAAE,0BAA0B,EAAE,MAAM,qEAAqE,CAAC;;AAEjH,UAAU,eAAe;IACrB,oFAAoF;IACpF,GAAG,EAAE,MAAM,CAAC;IACZ,8FAA8F;IAC9F,KAAK,EAAE,MAAM,CAAC;IACd,6EAA6E;IAC7E,MAAM,EAAE,MAAM,CAAC;CAClB;AAUD,UAAU,cAAc;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;CACpB;AAeD,qBAOa,kCAAmC,SAAQ,0BAA2B,YAAW,SAAS;IACnF,MAAM,EAAG,mBAAmB,CAAC;IAE7C,SAAgB,kBAAkB,EAAE,cAAc,EAAE,CAAsB;IAE1E,iCAAiC;IAC1B,YAAY,SAAM;IAClB,gBAAgB,UAAS;IACzB,cAAc,EAAE,gBAAgB,EAAE,CAAM;IACxC,gBAAgB,EAAE,uBAAuB,EAAE,CAAM;IACjD,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAQ;IACvC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAQ;IAC1C,OAAO,CAAC,mBAAmB,CAA6B;IACxD,OAAO,CAAC,aAAa,CAAuB;IAE5C;;;;;;OAMG;IACH,OAAO,CAAC,oBAAoB,CAAgB;IACrC,wBAAwB,EAAE,MAAM,GAAG,IAAI,CAAQ;IAEtC,WAAW,IAAI,IAAI;IAMnC;;;;;;OAMG;IACI,UAAU,IAAI,IAAI;IAiElB,aAAa,IAAI,IAAI;IAM5B;;;;;;;;OAQG;IACH,OAAO,CAAC,MAAM,CAAC,uBAAuB;IAuBtC;;;;OAIG;IACmB,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAuB/C;;;;OAIG;IACH,IAAW,2BAA2B,IAAI,MAAM,CAG/C;IAED,IAAW,2BAA2B,CAAC,KAAK,EAAE,MAAM,EAUnD;IAED;;;OAGG;IACH,IAAW,uBAAuB,IAAI,OAAO,CAG5C;IAED;;;OAGG;IACI,oBAAoB,UAAS;IAEpC;;;;;;OAMG;IACH,OAAO,CAAC,cAAc,CAAkC;IAExD,IAAW,aAAa,IAAI,eAAe,EAAE,CAW5C;IAED;;;;OAIG;IACI,qBAAqB,CAAC,GAAG,EAAE,eAAe,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAsB9E;;;;;OAKG;IACU,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC;IA6B7C,OAAO,CAAC,WAAW;IAkCnB,OAAO,CAAC,SAAS;IAWjB,OAAO,CAAC,gBAAgB;yCA/Uf,kCAAkC;2CAAlC,kCAAkC;CAwV9C;AAED,wBAAgB,sCAAsC,IAAI,IAAI,CAI7D"}
@@ -375,6 +375,7 @@ let MJSearchScopeFormComponentExtended = class MJSearchScopeFormComponentExtende
375
375
  }
376
376
  static { MJSearchScopeFormComponentExtended_1 = this; }
377
377
  ngOnDestroy() {
378
+ super.ngOnDestroy();
378
379
  this.previewSubscription?.unsubscribe();
379
380
  this.previewSubscription = null;
380
381
  }