@memberjunction/ng-core-entity-forms 6.2.0-edge.0 → 6.2.0-edge.1
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.
- package/dist/lib/custom/AIAgentCategories/ai-agent-category-overview.panel.d.ts +1 -1
- package/dist/lib/custom/AIAgentCategories/ai-agent-category-overview.panel.js +2 -2
- package/dist/lib/custom/AIAgentCategories/ai-agent-category-overview.panel.js.map +1 -1
- package/dist/lib/custom/AIAgentSessions/ai-agent-session-form.component.js.map +1 -1
- package/dist/lib/custom/AIAgents/add-action-dialog.component.d.ts +90 -16
- package/dist/lib/custom/AIAgents/add-action-dialog.component.d.ts.map +1 -1
- package/dist/lib/custom/AIAgents/add-action-dialog.component.js +218 -70
- package/dist/lib/custom/AIAgents/add-action-dialog.component.js.map +1 -1
- package/dist/lib/custom/AIAgents/agent-prompt-advanced-settings-dialog.component.d.ts +80 -16
- package/dist/lib/custom/AIAgents/agent-prompt-advanced-settings-dialog.component.d.ts.map +1 -1
- package/dist/lib/custom/AIAgents/agent-prompt-advanced-settings-dialog.component.js +146 -46
- package/dist/lib/custom/AIAgents/agent-prompt-advanced-settings-dialog.component.js.map +1 -1
- package/dist/lib/custom/AIAgents/ai-agent-form.component.d.ts +329 -27
- package/dist/lib/custom/AIAgents/ai-agent-form.component.d.ts.map +1 -1
- package/dist/lib/custom/AIAgents/ai-agent-form.component.js +794 -262
- package/dist/lib/custom/AIAgents/ai-agent-form.component.js.map +1 -1
- package/dist/lib/custom/AIAgents/ai-agent-management.service.d.ts +76 -0
- package/dist/lib/custom/AIAgents/ai-agent-management.service.d.ts.map +1 -1
- package/dist/lib/custom/AIAgents/ai-agent-management.service.js +77 -33
- package/dist/lib/custom/AIAgents/ai-agent-management.service.js.map +1 -1
- package/dist/lib/custom/AIAgents/create-prompt-dialog.component.d.ts +69 -15
- package/dist/lib/custom/AIAgents/create-prompt-dialog.component.d.ts.map +1 -1
- package/dist/lib/custom/AIAgents/create-prompt-dialog.component.js +182 -74
- package/dist/lib/custom/AIAgents/create-prompt-dialog.component.js.map +1 -1
- package/dist/lib/custom/AIAgents/create-sub-agent-dialog.component.d.ts +105 -25
- package/dist/lib/custom/AIAgents/create-sub-agent-dialog.component.d.ts.map +1 -1
- package/dist/lib/custom/AIAgents/create-sub-agent-dialog.component.js +272 -112
- package/dist/lib/custom/AIAgents/create-sub-agent-dialog.component.js.map +1 -1
- package/dist/lib/custom/AIAgents/new-agent-dialog.component.d.ts +32 -6
- package/dist/lib/custom/AIAgents/new-agent-dialog.component.d.ts.map +1 -1
- package/dist/lib/custom/AIAgents/new-agent-dialog.component.js +71 -19
- package/dist/lib/custom/AIAgents/new-agent-dialog.component.js.map +1 -1
- package/dist/lib/custom/AIAgents/new-agent-dialog.service.d.ts +10 -0
- package/dist/lib/custom/AIAgents/new-agent-dialog.service.d.ts.map +1 -1
- package/dist/lib/custom/AIAgents/new-agent-dialog.service.js +27 -7
- package/dist/lib/custom/AIAgents/new-agent-dialog.service.js.map +1 -1
- package/dist/lib/custom/AIAgents/prompt-selector-dialog.component.d.ts +65 -15
- package/dist/lib/custom/AIAgents/prompt-selector-dialog.component.d.ts.map +1 -1
- package/dist/lib/custom/AIAgents/prompt-selector-dialog.component.js +152 -52
- package/dist/lib/custom/AIAgents/prompt-selector-dialog.component.js.map +1 -1
- package/dist/lib/custom/AIAgents/sub-agent-advanced-settings-dialog.component.d.ts +81 -15
- package/dist/lib/custom/AIAgents/sub-agent-advanced-settings-dialog.component.d.ts.map +1 -1
- package/dist/lib/custom/AIAgents/sub-agent-advanced-settings-dialog.component.js +145 -45
- package/dist/lib/custom/AIAgents/sub-agent-advanced-settings-dialog.component.js.map +1 -1
- package/dist/lib/custom/AIAgents/sub-agent-selector-dialog.component.d.ts +71 -17
- package/dist/lib/custom/AIAgents/sub-agent-selector-dialog.component.d.ts.map +1 -1
- package/dist/lib/custom/AIAgents/sub-agent-selector-dialog.component.js +175 -67
- package/dist/lib/custom/AIAgents/sub-agent-selector-dialog.component.js.map +1 -1
- package/dist/lib/custom/AIPromptRuns/ai-prompt-run-form.component.d.ts +173 -27
- package/dist/lib/custom/AIPromptRuns/ai-prompt-run-form.component.d.ts.map +1 -1
- package/dist/lib/custom/AIPromptRuns/ai-prompt-run-form.component.js +385 -93
- package/dist/lib/custom/AIPromptRuns/ai-prompt-run-form.component.js.map +1 -1
- package/dist/lib/custom/AIPromptRuns/chat-message-viewer.component.d.ts +64 -4
- package/dist/lib/custom/AIPromptRuns/chat-message-viewer.component.d.ts.map +1 -1
- package/dist/lib/custom/AIPromptRuns/chat-message-viewer.component.js +129 -29
- package/dist/lib/custom/AIPromptRuns/chat-message-viewer.component.js.map +1 -1
- package/dist/lib/custom/AIPrompts/ai-prompt-form.component.d.ts +260 -27
- package/dist/lib/custom/AIPrompts/ai-prompt-form.component.d.ts.map +1 -1
- package/dist/lib/custom/AIPrompts/ai-prompt-form.component.js +686 -238
- package/dist/lib/custom/AIPrompts/ai-prompt-form.component.js.map +1 -1
- package/dist/lib/custom/AIPrompts/ai-prompt-management.service.d.ts +10 -0
- package/dist/lib/custom/AIPrompts/ai-prompt-management.service.d.ts.map +1 -1
- package/dist/lib/custom/AIPrompts/ai-prompt-management.service.js +17 -9
- package/dist/lib/custom/AIPrompts/ai-prompt-management.service.js.map +1 -1
- package/dist/lib/custom/AIPrompts/template-selector-dialog.component.d.ts +74 -16
- package/dist/lib/custom/AIPrompts/template-selector-dialog.component.d.ts.map +1 -1
- package/dist/lib/custom/AIPrompts/template-selector-dialog.component.js +174 -58
- package/dist/lib/custom/AIPrompts/template-selector-dialog.component.js.map +1 -1
- package/dist/lib/custom/Actions/action-execution-log-form.component.d.ts +108 -14
- package/dist/lib/custom/Actions/action-execution-log-form.component.d.ts.map +1 -1
- package/dist/lib/custom/Actions/action-execution-log-form.component.js +258 -70
- package/dist/lib/custom/Actions/action-execution-log-form.component.js.map +1 -1
- package/dist/lib/custom/Actions/action-form.component.d.ts +198 -14
- package/dist/lib/custom/Actions/action-form.component.d.ts.map +1 -1
- package/dist/lib/custom/Actions/action-form.component.js +387 -107
- package/dist/lib/custom/Actions/action-form.component.js.map +1 -1
- package/dist/lib/custom/BridgeProviders/bridge-provider-features.d.ts +12 -6
- package/dist/lib/custom/BridgeProviders/bridge-provider-features.d.ts.map +1 -1
- package/dist/lib/custom/BridgeProviders/bridge-provider-features.js +41 -29
- package/dist/lib/custom/BridgeProviders/bridge-provider-features.js.map +1 -1
- package/dist/lib/custom/BridgeProviders/bridge-provider-form.component.js +14 -14
- package/dist/lib/custom/BridgeProviders/bridge-provider-form.component.js.map +1 -1
- package/dist/lib/custom/Companies/company-overview.panel.d.ts +1 -1
- package/dist/lib/custom/Companies/company-overview.panel.js +2 -2
- package/dist/lib/custom/Companies/company-overview.panel.js.map +1 -1
- package/dist/lib/custom/Conversations/conversation-overview.panel.d.ts +1 -1
- package/dist/lib/custom/Conversations/conversation-overview.panel.js +2 -2
- package/dist/lib/custom/Conversations/conversation-overview.panel.js.map +1 -1
- package/dist/lib/custom/Employees/employee-overview.panel.d.ts +1 -1
- package/dist/lib/custom/Employees/employee-overview.panel.js +2 -2
- package/dist/lib/custom/Employees/employee-overview.panel.js.map +1 -1
- package/dist/lib/custom/Entities/entity-form.component.d.ts +209 -28
- package/dist/lib/custom/Entities/entity-form.component.d.ts.map +1 -1
- package/dist/lib/custom/Entities/entity-form.component.js +494 -138
- package/dist/lib/custom/Entities/entity-form.component.js.map +1 -1
- package/dist/lib/custom/EntityActions/entityaction.form.component.d.ts +5 -1
- package/dist/lib/custom/EntityActions/entityaction.form.component.d.ts.map +1 -1
- package/dist/lib/custom/EntityActions/entityaction.form.component.js +10 -2
- package/dist/lib/custom/EntityActions/entityaction.form.component.js.map +1 -1
- package/dist/lib/custom/Files/file-form.component.d.ts +1 -1
- package/dist/lib/custom/Files/file-form.component.js +2 -2
- package/dist/lib/custom/Files/file-form.component.js.map +1 -1
- package/dist/lib/custom/Lists/list-form.component.d.ts +300 -36
- package/dist/lib/custom/Lists/list-form.component.d.ts.map +1 -1
- package/dist/lib/custom/Lists/list-form.component.js +664 -208
- package/dist/lib/custom/Lists/list-form.component.js.map +1 -1
- package/dist/lib/custom/MLModels/ml-model-view-models.d.ts +31 -0
- package/dist/lib/custom/MLModels/ml-model-view-models.d.ts.map +1 -1
- package/dist/lib/custom/MLModels/ml-model-view-models.js +52 -16
- package/dist/lib/custom/MLModels/ml-model-view-models.js.map +1 -1
- package/dist/lib/custom/MLModels/ps-model-detail.component.d.ts +107 -10
- package/dist/lib/custom/MLModels/ps-model-detail.component.d.ts.map +1 -1
- package/dist/lib/custom/MLModels/ps-model-detail.component.js +291 -101
- package/dist/lib/custom/MLModels/ps-model-detail.component.js.map +1 -1
- package/dist/lib/custom/Queries/query-form.component.d.ts +201 -26
- package/dist/lib/custom/Queries/query-form.component.d.ts.map +1 -1
- package/dist/lib/custom/Queries/query-form.component.js +429 -109
- package/dist/lib/custom/Queries/query-form.component.js.map +1 -1
- package/dist/lib/custom/Queries/query-run-dialog.component.d.ts +107 -14
- package/dist/lib/custom/Queries/query-run-dialog.component.d.ts.map +1 -1
- package/dist/lib/custom/Queries/query-run-dialog.component.js +249 -79
- package/dist/lib/custom/Queries/query-run-dialog.component.js.map +1 -1
- package/dist/lib/custom/RecordProcesses/record-process-form.component.d.ts +110 -4
- package/dist/lib/custom/RecordProcesses/record-process-form.component.d.ts.map +1 -1
- package/dist/lib/custom/RecordProcesses/record-process-form.component.js +858 -86
- package/dist/lib/custom/RecordProcesses/record-process-form.component.js.map +1 -1
- package/dist/lib/custom/SearchScopes/searchscope-form.component.d.ts +1 -1
- package/dist/lib/custom/SearchScopes/searchscope-form.component.js +4 -4
- package/dist/lib/custom/SearchScopes/searchscope-form.component.js.map +1 -1
- package/dist/lib/custom/SessionBridges/session-bridge-form.component.js.map +1 -1
- package/dist/lib/custom/Templates/template-param-dialog.component.d.ts +77 -13
- package/dist/lib/custom/Templates/template-param-dialog.component.d.ts.map +1 -1
- package/dist/lib/custom/Templates/template-param-dialog.component.js +196 -78
- package/dist/lib/custom/Templates/template-param-dialog.component.js.map +1 -1
- package/dist/lib/custom/Templates/template-params-grid.component.d.ts +49 -7
- package/dist/lib/custom/Templates/template-params-grid.component.d.ts.map +1 -1
- package/dist/lib/custom/Templates/template-params-grid.component.js +132 -44
- package/dist/lib/custom/Templates/template-params-grid.component.js.map +1 -1
- package/dist/lib/custom/Templates/templates-form.component.d.ts +142 -17
- package/dist/lib/custom/Templates/templates-form.component.d.ts.map +1 -1
- package/dist/lib/custom/Templates/templates-form.component.js +333 -113
- package/dist/lib/custom/Templates/templates-form.component.js.map +1 -1
- package/dist/lib/custom/Tests/entity-link-pill.component.d.ts +24 -4
- package/dist/lib/custom/Tests/entity-link-pill.component.d.ts.map +1 -1
- package/dist/lib/custom/Tests/entity-link-pill.component.js +64 -20
- package/dist/lib/custom/Tests/entity-link-pill.component.js.map +1 -1
- package/dist/lib/custom/Tests/test-form.component.d.ts +217 -27
- package/dist/lib/custom/Tests/test-form.component.d.ts.map +1 -1
- package/dist/lib/custom/Tests/test-form.component.js +549 -169
- package/dist/lib/custom/Tests/test-form.component.js.map +1 -1
- package/dist/lib/custom/Tests/test-run-checks.d.ts +2 -0
- package/dist/lib/custom/Tests/test-run-checks.d.ts.map +1 -1
- package/dist/lib/custom/Tests/test-run-checks.js +5 -1
- package/dist/lib/custom/Tests/test-run-checks.js.map +1 -1
- package/dist/lib/custom/Tests/test-run-feedback-form.component.d.ts +2 -0
- package/dist/lib/custom/Tests/test-run-feedback-form.component.d.ts.map +1 -1
- package/dist/lib/custom/Tests/test-run-feedback-form.component.js +5 -1
- package/dist/lib/custom/Tests/test-run-feedback-form.component.js.map +1 -1
- package/dist/lib/custom/Tests/test-run-form.component.d.ts +146 -18
- package/dist/lib/custom/Tests/test-run-form.component.d.ts.map +1 -1
- package/dist/lib/custom/Tests/test-run-form.component.js +362 -106
- package/dist/lib/custom/Tests/test-run-form.component.js.map +1 -1
- package/dist/lib/custom/Tests/test-suite-form.component.d.ts +390 -47
- package/dist/lib/custom/Tests/test-suite-form.component.d.ts.map +1 -1
- package/dist/lib/custom/Tests/test-suite-form.component.js +1015 -343
- package/dist/lib/custom/Tests/test-suite-form.component.js.map +1 -1
- package/dist/lib/custom/Tests/test-suite-run-form.component.d.ts +214 -26
- package/dist/lib/custom/Tests/test-suite-run-form.component.d.ts.map +1 -1
- package/dist/lib/custom/Tests/test-suite-run-form.component.js +535 -159
- package/dist/lib/custom/Tests/test-suite-run-form.component.js.map +1 -1
- package/dist/lib/custom/Users/user-overview.panel.d.ts +1 -1
- package/dist/lib/custom/Users/user-overview.panel.js +2 -2
- package/dist/lib/custom/Users/user-overview.panel.js.map +1 -1
- package/dist/lib/custom/ai-agent-run/ai-agent-run-analytics.component.d.ts +208 -29
- package/dist/lib/custom/ai-agent-run/ai-agent-run-analytics.component.d.ts.map +1 -1
- package/dist/lib/custom/ai-agent-run/ai-agent-run-analytics.component.js +446 -138
- package/dist/lib/custom/ai-agent-run/ai-agent-run-analytics.component.js.map +1 -1
- package/dist/lib/custom/ai-agent-run/ai-agent-run-cost.service.d.ts +6 -0
- package/dist/lib/custom/ai-agent-run/ai-agent-run-cost.service.d.ts.map +1 -1
- package/dist/lib/custom/ai-agent-run/ai-agent-run-cost.service.js +16 -4
- package/dist/lib/custom/ai-agent-run/ai-agent-run-cost.service.js.map +1 -1
- package/dist/lib/custom/ai-agent-run/ai-agent-run-data.service.d.ts +50 -6
- package/dist/lib/custom/ai-agent-run/ai-agent-run-data.service.d.ts.map +1 -1
- package/dist/lib/custom/ai-agent-run/ai-agent-run-data.service.js +84 -12
- package/dist/lib/custom/ai-agent-run/ai-agent-run-data.service.js.map +1 -1
- package/dist/lib/custom/ai-agent-run/ai-agent-run-step-detail.component.d.ts +89 -5
- package/dist/lib/custom/ai-agent-run/ai-agent-run-step-detail.component.d.ts.map +1 -1
- package/dist/lib/custom/ai-agent-run/ai-agent-run-step-detail.component.js +216 -70
- package/dist/lib/custom/ai-agent-run/ai-agent-run-step-detail.component.js.map +1 -1
- package/dist/lib/custom/ai-agent-run/ai-agent-run-step-node.component.d.ts +62 -3
- package/dist/lib/custom/ai-agent-run/ai-agent-run-step-node.component.d.ts.map +1 -1
- package/dist/lib/custom/ai-agent-run/ai-agent-run-step-node.component.js +140 -42
- package/dist/lib/custom/ai-agent-run/ai-agent-run-step-node.component.js.map +1 -1
- package/dist/lib/custom/ai-agent-run/ai-agent-run-timeline.component.d.ts +81 -10
- package/dist/lib/custom/ai-agent-run/ai-agent-run-timeline.component.d.ts.map +1 -1
- package/dist/lib/custom/ai-agent-run/ai-agent-run-timeline.component.js +165 -37
- package/dist/lib/custom/ai-agent-run/ai-agent-run-timeline.component.js.map +1 -1
- package/dist/lib/custom/ai-agent-run/ai-agent-run.component.d.ts +140 -15
- package/dist/lib/custom/ai-agent-run/ai-agent-run.component.d.ts.map +1 -1
- package/dist/lib/custom/ai-agent-run/ai-agent-run.component.js +326 -100
- package/dist/lib/custom/ai-agent-run/ai-agent-run.component.js.map +1 -1
- package/dist/lib/custom/ai-agent-run/flow/agent-run-flow.component.d.ts +101 -15
- package/dist/lib/custom/ai-agent-run/flow/agent-run-flow.component.d.ts.map +1 -1
- package/dist/lib/custom/ai-agent-run/flow/agent-run-flow.component.js +281 -97
- package/dist/lib/custom/ai-agent-run/flow/agent-run-flow.component.js.map +1 -1
- package/dist/lib/custom/ai-agent-run/flow/agent-run-flow.model.d.ts +43 -25
- package/dist/lib/custom/ai-agent-run/flow/agent-run-flow.model.d.ts.map +1 -1
- package/dist/lib/custom/ai-agent-run/flow/agent-run-flow.model.js +100 -64
- package/dist/lib/custom/ai-agent-run/flow/agent-run-flow.model.js.map +1 -1
- package/dist/lib/custom/ai-agent-run/flow/constellation.component.d.ts +14 -2
- package/dist/lib/custom/ai-agent-run/flow/constellation.component.d.ts.map +1 -1
- package/dist/lib/custom/ai-agent-run/flow/constellation.component.js +71 -53
- package/dist/lib/custom/ai-agent-run/flow/constellation.component.js.map +1 -1
- package/dist/lib/custom/ai-agent-run/flow/flame-cascade.component.d.ts +14 -2
- package/dist/lib/custom/ai-agent-run/flow/flame-cascade.component.d.ts.map +1 -1
- package/dist/lib/custom/ai-agent-run/flow/flame-cascade.component.js +70 -52
- package/dist/lib/custom/ai-agent-run/flow/flame-cascade.component.js.map +1 -1
- package/dist/lib/custom/ai-agent-run/flow/flow-svg.util.d.ts +8 -0
- package/dist/lib/custom/ai-agent-run/flow/flow-svg.util.d.ts.map +1 -1
- package/dist/lib/custom/ai-agent-run/flow/flow-svg.util.js +22 -6
- package/dist/lib/custom/ai-agent-run/flow/flow-svg.util.js.map +1 -1
- package/dist/lib/custom/ai-agent-run/flow/flowchart.component.d.ts +24 -2
- package/dist/lib/custom/ai-agent-run/flow/flowchart.component.d.ts.map +1 -1
- package/dist/lib/custom/ai-agent-run/flow/flowchart.component.js +91 -59
- package/dist/lib/custom/ai-agent-run/flow/flowchart.component.js.map +1 -1
- package/dist/lib/custom/ai-agent-run/flow/pan-zoom.d.ts +10 -2
- package/dist/lib/custom/ai-agent-run/flow/pan-zoom.d.ts.map +1 -1
- package/dist/lib/custom/ai-agent-run/flow/pan-zoom.js +33 -17
- package/dist/lib/custom/ai-agent-run/flow/pan-zoom.js.map +1 -1
- package/dist/lib/custom/ai-agent-run/flow/run-tree-flow-projection.d.ts +2 -0
- package/dist/lib/custom/ai-agent-run/flow/run-tree-flow-projection.d.ts.map +1 -1
- package/dist/lib/custom/ai-agent-run/flow/run-tree-flow-projection.js +34 -30
- package/dist/lib/custom/ai-agent-run/flow/run-tree-flow-projection.js.map +1 -1
- package/dist/lib/custom/ai-agent-run/flow/subway-lines.component.d.ts +14 -2
- package/dist/lib/custom/ai-agent-run/flow/subway-lines.component.d.ts.map +1 -1
- package/dist/lib/custom/ai-agent-run/flow/subway-lines.component.js +69 -51
- package/dist/lib/custom/ai-agent-run/flow/subway-lines.component.js.map +1 -1
- package/dist/lib/custom/shared/entity-selector-dialog.component.d.ts +38 -12
- package/dist/lib/custom/shared/entity-selector-dialog.component.d.ts.map +1 -1
- package/dist/lib/custom/shared/entity-selector-dialog.component.js +103 -51
- package/dist/lib/custom/shared/entity-selector-dialog.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJAIPromptRun/mjaipromptrun.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJAIPromptRun/mjaipromptrun.form.component.js +59 -51
- package/dist/lib/generated/Entities/MJAIPromptRun/mjaipromptrun.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJAIVendor/mjaivendor.form.component.js +76 -74
- package/dist/lib/generated/Entities/MJAIVendor/mjaivendor.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJProject/mjproject.form.component.js +27 -25
- package/dist/lib/generated/Entities/MJProject/mjproject.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJUser/mjuser.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJUser/mjuser.form.component.js +155 -119
- package/dist/lib/generated/Entities/MJUser/mjuser.form.component.js.map +1 -1
- package/dist/lib/panels/ai-skill-sharing/ai-skill-sharing-panel.component.d.ts +5 -1
- package/dist/lib/panels/ai-skill-sharing/ai-skill-sharing-panel.component.d.ts.map +1 -1
- package/dist/lib/panels/ai-skill-sharing/ai-skill-sharing-panel.component.js +11 -3
- package/dist/lib/panels/ai-skill-sharing/ai-skill-sharing-panel.component.js.map +1 -1
- package/dist/lib/panels/content-sources/tag-pipeline-configuration.panel.d.ts +2 -0
- package/dist/lib/panels/content-sources/tag-pipeline-configuration.panel.d.ts.map +1 -1
- package/dist/lib/panels/content-sources/tag-pipeline-configuration.panel.js +16 -12
- package/dist/lib/panels/content-sources/tag-pipeline-configuration.panel.js.map +1 -1
- package/dist/lib/panels/content-sources/website-crawler-settings.panel.d.ts +1 -1
- package/dist/lib/panels/content-sources/website-crawler-settings.panel.js +2 -2
- package/dist/lib/panels/content-sources/website-crawler-settings.panel.js.map +1 -1
- package/dist/lib/panels/model-predictions/model-prediction.logic.d.ts +45 -19
- package/dist/lib/panels/model-predictions/model-prediction.logic.d.ts.map +1 -1
- package/dist/lib/panels/model-predictions/model-prediction.logic.js +95 -43
- package/dist/lib/panels/model-predictions/model-prediction.logic.js.map +1 -1
- package/dist/lib/panels/model-predictions/model-prediction.panel.d.ts +20 -16
- package/dist/lib/panels/model-predictions/model-prediction.panel.d.ts.map +1 -1
- package/dist/lib/panels/model-predictions/model-prediction.panel.js +73 -65
- package/dist/lib/panels/model-predictions/model-prediction.panel.js.map +1 -1
- package/dist/lib/shared/components/template-editor.component.d.ts +133 -14
- package/dist/lib/shared/components/template-editor.component.d.ts.map +1 -1
- package/dist/lib/shared/components/template-editor.component.js +322 -124
- package/dist/lib/shared/components/template-editor.component.js.map +1 -1
- package/package.json +43 -42
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"flame-cascade.component.js","sourceRoot":"","sources":["../../../../../src/lib/custom/ai-agent-run/flow/flame-cascade.component.ts"],"names":[],"mappings":"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","sourcesContent":["import { Component, ElementRef, Input, Output, EventEmitter, ViewChild, OnDestroy, ChangeDetectionStrategy, ViewEncapsulation } from '@angular/core';\nimport { FlowModel, FlowNode, FLOW_COLORS, shortLabel, formatDuration } from './agent-run-flow.model';\nimport { svgEl, clip, appendIcon, appendTitle } from './flow-svg.util';\nimport { PanZoomController } from './pan-zoom';\n\ninterface FlameCell {\n outline: SVGElement;\n fill: SVGElement;\n x: number;\n fw: number;\n node: FlowNode;\n}\n\n/**\n * Flame Cascade — a static icicle of the whole run that's always visible (depth =\n * hierarchy, x = order, bar width = compressed time). Translucent **swimlane bands**\n * sit behind each sub-agent/loop so you can see which steps belong to which. As the\n * clock plays, a fill sweeps each bar and a playhead crosses the chart; longer steps\n * burn hotter.\n */\n@Component({\n standalone: false,\n selector: 'mj-agent-flow-flame',\n template: `<svg #svg class=\"flow-svg\" preserveAspectRatio=\"xMinYMin meet\"></svg>`,\n styleUrls: ['./flow-shared.css'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class FlameCascadeComponent implements OnDestroy {\n @ViewChild('svg', { static: true }) svgRef!: ElementRef<SVGSVGElement>;\n @Output() nodeSelected = new EventEmitter<FlowNode>();\n\n private static seq = 0;\n private uid = 'flame' + (FlameCascadeComponent.seq++);\n\n private _model: FlowModel | null = null;\n private built = false;\n private cells = new Map<number, FlameCell>();\n private playhead?: SVGElement;\n private playMark?: SVGElement;\n private selectedId = -1;\n private pz?: PanZoomController;\n\n public SetSelected(id: number | null): void { this.selectedId = id ?? -1; }\n public ZoomIn(): void { this.pz?.ZoomIn(); }\n public ZoomOut(): void { this.pz?.ZoomOut(); }\n public FitReset(): void { this.pz?.Reset(); }\n public ReapplyView(): void { this.pz?.Reapply(); }\n ngOnDestroy(): void { this.pz?.Detach(); }\n\n private readonly VW = 1200;\n private readonly ROW = 46;\n private readonly GAP = 9;\n private readonly PAD = 26;\n private readonly TOP = 44;\n private get IW(): number { return this.VW - this.PAD * 2; }\n\n @Input() set Model(m: FlowModel | null) { this._model = m; this.built = false; this.clear(); }\n\n public Render(p: number, ts: number): void {\n if (!this._model) return;\n if (!this.built) { this.build(); this.built = true; }\n this.update(p, ts);\n }\n\n private clear(): void {\n this.pz?.Detach(); this.pz = undefined;\n const svg = this.svgRef?.nativeElement;\n if (svg) while (svg.firstChild) svg.removeChild(svg.firstChild);\n this.cells.clear();\n }\n\n private subtreeMaxDepth(n: FlowNode): number {\n return n.children.length ? Math.max(...n.children.map(c => this.subtreeMaxDepth(c))) : n.depth;\n }\n\n private build(): void {\n const svg = this.svgRef.nativeElement;\n const m = this._model!;\n const VH = this.TOP + (m.maxDepth + 1) * this.ROW + 26;\n svg.setAttribute('viewBox', `0 0 ${this.VW} ${VH}`);\n const defs = svgEl('defs', {}, svg);\n const main = svgEl('g', {}, svg);\n const bands = svgEl('g', {}, main);\n const grid = svgEl('g', {}, main);\n const g = svgEl('g', {}, main);\n\n // time axis\n for (let i = 0; i <= 10; i++) {\n const x = this.PAD + this.IW * i / 10;\n svgEl('line', { x1: x, y1: this.TOP - 8, x2: x, y2: VH - 18, 'stroke-width': 1, class: 'fgrid' }, grid);\n if (i % 2 === 0) svgEl('text', { x, y: this.TOP - 16, 'font-size': 9.5, 'text-anchor': 'middle', class: 'ftxt-muted', text: i * 10 + '%' }, grid);\n }\n\n // swimlane bands behind sub-agent / loop containers (nested grouping)\n for (const n of m.nodes) {\n if (n.children.length === 0 || n.depth === 0) continue;\n const x = this.PAD + n.t0 * this.IW;\n const w = Math.max(2, (n.t1 - n.t0) * this.IW);\n const y = this.TOP + n.depth * this.ROW - 3;\n const h = (this.subtreeMaxDepth(n) - n.depth + 1) * this.ROW - this.GAP + 6;\n const band = svgEl('rect', { x: x - 3, y, width: w + 6, height: h, rx: 12, fill: FLOW_COLORS[n.type], opacity: 0.07 }, bands);\n band.setAttribute('stroke', FLOW_COLORS[n.type]);\n band.setAttribute('stroke-width', '1');\n band.setAttribute('stroke-opacity', '0.18');\n }\n\n for (const n of m.nodes) {\n const x = this.PAD + n.t0 * this.IW;\n const fw = Math.max(2, (n.t1 - n.t0) * this.IW);\n const y = this.TOP + n.depth * this.ROW;\n const h = this.ROW - this.GAP;\n const col = FLOW_COLORS[n.type];\n const grp = svgEl('g', {}, g);\n (grp as SVGElement & { style: CSSStyleDeclaration }).style.color = col;\n (grp as SVGElement & { style: CSSStyleDeclaration }).style.cursor = 'pointer';\n appendTitle(grp, `${n.name} · ${formatDuration(n.realDur)}`);\n\n // outline = always-visible structure; fill = animated progress overlay\n const outline = svgEl('rect', { x, y, width: fw, height: h, rx: 8, fill: col, 'fill-opacity': 0.14, stroke: col, 'stroke-width': 1.4, 'stroke-opacity': 0.7 }, grp);\n const fill = svgEl('rect', { x, y, width: 0, height: h, rx: 8, fill: col, opacity: 0 }, grp);\n\n // label group, clipped to the bar so it never bleeds into neighbours\n const clipId = `${this.uid}-${n.id}`;\n const cp = svgEl('clipPath', { id: clipId }, defs);\n svgEl('rect', { x, y, width: fw, height: h, rx: 8 }, cp);\n const content = svgEl('g', { 'clip-path': `url(#${clipId})` }, grp);\n const cy = y + h / 2;\n const name = shortLabel(n);\n const showIcon = fw > 22;\n const iconRight = showIcon ? 30 : 9;\n if (showIcon) appendIcon(content, x + 7, cy - 9, 18, n.iconClass, n.logoUrl, col);\n // shrink the font until the (already abbreviated) label fits, before giving up\n let fontSize = 0;\n for (const fs of [12.5, 11.5, 10.5, 9.5, 8.5]) {\n if (iconRight + name.length * fs * 0.56 + 8 <= fw) { fontSize = fs; break; }\n }\n if (fontSize > 0) {\n svgEl('text', { x: x + iconRight, y: cy + 1, 'font-size': fontSize, 'font-weight': 600, 'dominant-baseline': 'middle', class: 'ftxt-on', text: name }, content);\n if (n.realDur && iconRight + name.length * fontSize * 0.56 + 52 <= fw) {\n svgEl('text', { x: x + fw - 12, y: cy + 1, 'font-size': 10.5, 'text-anchor': 'end', 'dominant-baseline': 'middle', class: 'ftxt-on', opacity: 0.72, text: formatDuration(n.realDur) }, content);\n }\n }\n grp.addEventListener('click', () => { if (!this.pz?.moved) this.nodeSelected.emit(n); });\n this.cells.set(n.id, { outline, fill, x, fw, node: n });\n }\n\n this.playhead = svgEl('line', { x1: this.PAD, y1: this.TOP - 8, x2: this.PAD, y2: VH - 16, 'stroke-width': 1.5, opacity: 0, class: 'fhand' }, g);\n this.playMark = svgEl('path', { d: `M${this.PAD - 5},${this.TOP - 14} L${this.PAD + 5},${this.TOP - 14} L${this.PAD},${this.TOP - 6} Z`, opacity: 0, class: 'fhand-dot' }, g);\n\n this.pz = new PanZoomController(svg, main, 'mj.agentRunFlow.view.flame.v1');\n this.pz.Load(); this.pz.Attach();\n }\n\n private update(p: number, ts: number): void {\n this.cells.forEach(({ outline, fill, fw, node }) => {\n const started = p >= node.t0;\n const active = started && p < node.t1;\n const selected = node.id === this.selectedId;\n const cw = p >= node.t1 ? fw : started ? (p - node.t0) / (node.t1 - node.t0) * fw : 0;\n fill.setAttribute('width', String(Math.max(0, cw)));\n const fillOp = active ? 0.92 + 0.08 * Math.sin(ts / 170) : started ? 0.6 : 0;\n fill.setAttribute('opacity', String(fillOp));\n outline.setAttribute('class', selected ? 'glow2' : active && node.heat ? 'glow' + node.heat : '');\n outline.setAttribute('stroke-width', selected ? '3' : '1.4');\n outline.setAttribute('stroke-opacity', selected || active ? '1' : started ? '0.85' : '0.55');\n });\n const live = p > 0 && p < 1;\n const ph = this.PAD + p * this.IW;\n this.playhead?.setAttribute('x1', String(ph));\n this.playhead?.setAttribute('x2', String(ph));\n this.playhead?.setAttribute('opacity', live ? '0.8' : '0');\n this.playMark?.setAttribute('transform', `translate(${ph - this.PAD},0)`);\n this.playMark?.setAttribute('opacity', live ? '1' : '0');\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"flame-cascade.component.js","sourceRoot":"","sources":["../../../../../src/lib/custom/ai-agent-run/flow/flame-cascade.component.ts"],"names":[],"mappings":"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","sourcesContent":["import { Component, ElementRef, Input, Output, EventEmitter, ViewChild, OnDestroy, ChangeDetectionStrategy, ViewEncapsulation } from '@angular/core';\nimport { FlowModel, FlowNode, FLOW_COLORS, ShortLabel, FormatDuration } from './agent-run-flow.model';\nimport { SvgEl, Clip, AppendIcon, AppendTitle } from './flow-svg.util';\nimport { PanZoomController } from './pan-zoom';\n\ninterface FlameCell {\n outline: SVGElement;\n fill: SVGElement;\n x: number;\n fw: number;\n node: FlowNode;\n}\n\n/**\n * Flame Cascade — a static icicle of the whole run that's always visible (depth =\n * hierarchy, x = order, bar width = compressed time). Translucent **swimlane bands**\n * sit behind each sub-agent/loop so you can see which steps belong to which. As the\n * clock plays, a fill sweeps each bar and a playhead crosses the chart; longer steps\n * burn hotter.\n */\n@Component({\n standalone: false,\n selector: 'mj-agent-flow-flame',\n template: `<svg #svg class=\"flow-svg\" preserveAspectRatio=\"xMinYMin meet\"></svg>`,\n styleUrls: ['./flow-shared.css'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class FlameCascadeComponent implements OnDestroy {\n @ViewChild('svg', { static: true }) SvgRef!: ElementRef<SVGSVGElement>;\n\n /** @deprecated Use {@link SvgRef}. */\n get svgRef(): ElementRef<SVGSVGElement> {\n return this.SvgRef;\n }\n /** @deprecated Use {@link SvgRef}. */\n set svgRef(value: ElementRef<SVGSVGElement>) {\n this.SvgRef = value;\n }\n @Output() NodeSelected = new EventEmitter<FlowNode>();\n\n /**\n * @deprecated Use {@link NodeSelected}.\n *\n * The same emitter under the old binding name, so a template still binding\n * (nodeSelected) keeps working. Must stay AFTER NodeSelected: class fields\n * initialise in order, and the other way round this captures undefined.\n */\n @Output() nodeSelected = this.NodeSelected;\n\n private static seq = 0;\n private uid = 'flame' + (FlameCascadeComponent.seq++);\n\n private _model: FlowModel | null = null;\n private built = false;\n private cells = new Map<number, FlameCell>();\n private playhead?: SVGElement;\n private playMark?: SVGElement;\n private selectedId = -1;\n private pz?: PanZoomController;\n\n public SetSelected(id: number | null): void { this.selectedId = id ?? -1; }\n public ZoomIn(): void { this.pz?.ZoomIn(); }\n public ZoomOut(): void { this.pz?.ZoomOut(); }\n public FitReset(): void { this.pz?.Reset(); }\n public ReapplyView(): void { this.pz?.Reapply(); }\n ngOnDestroy(): void { this.pz?.Detach(); }\n\n private readonly VW = 1200;\n private readonly ROW = 46;\n private readonly GAP = 9;\n private readonly PAD = 26;\n private readonly TOP = 44;\n private get IW(): number { return this.VW - this.PAD * 2; }\n\n @Input() set Model(m: FlowModel | null) { this._model = m; this.built = false; this.clear(); }\n\n public Render(p: number, ts: number): void {\n if (!this._model) return;\n if (!this.built) { this.build(); this.built = true; }\n this.update(p, ts);\n }\n\n private clear(): void {\n this.pz?.Detach(); this.pz = undefined;\n const svg = this.SvgRef?.nativeElement;\n if (svg) while (svg.firstChild) svg.removeChild(svg.firstChild);\n this.cells.clear();\n }\n\n private subtreeMaxDepth(n: FlowNode): number {\n return n.Children.length ? Math.max(...n.Children.map(c => this.subtreeMaxDepth(c))) : n.Depth;\n }\n\n private build(): void {\n const svg = this.SvgRef.nativeElement;\n const m = this._model!;\n const VH = this.TOP + (m.MaxDepth + 1) * this.ROW + 26;\n svg.setAttribute('viewBox', `0 0 ${this.VW} ${VH}`);\n const defs = SvgEl('defs', {}, svg);\n const main = SvgEl('g', {}, svg);\n const bands = SvgEl('g', {}, main);\n const grid = SvgEl('g', {}, main);\n const g = SvgEl('g', {}, main);\n\n // time axis\n for (let i = 0; i <= 10; i++) {\n const x = this.PAD + this.IW * i / 10;\n SvgEl('line', { x1: x, y1: this.TOP - 8, x2: x, y2: VH - 18, 'stroke-width': 1, class: 'fgrid' }, grid);\n if (i % 2 === 0) SvgEl('text', { x, y: this.TOP - 16, 'font-size': 9.5, 'text-anchor': 'middle', class: 'ftxt-muted', text: i * 10 + '%' }, grid);\n }\n\n // swimlane bands behind sub-agent / loop containers (nested grouping)\n for (const n of m.Nodes) {\n if (n.Children.length === 0 || n.Depth === 0) continue;\n const x = this.PAD + n.T0 * this.IW;\n const w = Math.max(2, (n.T1 - n.T0) * this.IW);\n const y = this.TOP + n.Depth * this.ROW - 3;\n const h = (this.subtreeMaxDepth(n) - n.Depth + 1) * this.ROW - this.GAP + 6;\n const band = SvgEl('rect', { x: x - 3, y, width: w + 6, height: h, rx: 12, fill: FLOW_COLORS[n.Type], opacity: 0.07 }, bands);\n band.setAttribute('stroke', FLOW_COLORS[n.Type]);\n band.setAttribute('stroke-width', '1');\n band.setAttribute('stroke-opacity', '0.18');\n }\n\n for (const n of m.Nodes) {\n const x = this.PAD + n.T0 * this.IW;\n const fw = Math.max(2, (n.T1 - n.T0) * this.IW);\n const y = this.TOP + n.Depth * this.ROW;\n const h = this.ROW - this.GAP;\n const col = FLOW_COLORS[n.Type];\n const grp = SvgEl('g', {}, g);\n (grp as SVGElement & { style: CSSStyleDeclaration }).style.color = col;\n (grp as SVGElement & { style: CSSStyleDeclaration }).style.cursor = 'pointer';\n AppendTitle(grp, `${n.Name} · ${FormatDuration(n.RealDur)}`);\n\n // outline = always-visible structure; fill = animated progress overlay\n const outline = SvgEl('rect', { x, y, width: fw, height: h, rx: 8, fill: col, 'fill-opacity': 0.14, stroke: col, 'stroke-width': 1.4, 'stroke-opacity': 0.7 }, grp);\n const fill = SvgEl('rect', { x, y, width: 0, height: h, rx: 8, fill: col, opacity: 0 }, grp);\n\n // label group, clipped to the bar so it never bleeds into neighbours\n const clipId = `${this.uid}-${n.Id}`;\n const cp = SvgEl('clipPath', { id: clipId }, defs);\n SvgEl('rect', { x, y, width: fw, height: h, rx: 8 }, cp);\n const content = SvgEl('g', { 'clip-path': `url(#${clipId})` }, grp);\n const cy = y + h / 2;\n const name = ShortLabel(n);\n const showIcon = fw > 22;\n const iconRight = showIcon ? 30 : 9;\n if (showIcon) AppendIcon(content, x + 7, cy - 9, 18, n.IconClass, n.LogoUrl, col);\n // shrink the font until the (already abbreviated) label fits, before giving up\n let fontSize = 0;\n for (const fs of [12.5, 11.5, 10.5, 9.5, 8.5]) {\n if (iconRight + name.length * fs * 0.56 + 8 <= fw) { fontSize = fs; break; }\n }\n if (fontSize > 0) {\n SvgEl('text', { x: x + iconRight, y: cy + 1, 'font-size': fontSize, 'font-weight': 600, 'dominant-baseline': 'middle', class: 'ftxt-on', text: name }, content);\n if (n.RealDur && iconRight + name.length * fontSize * 0.56 + 52 <= fw) {\n SvgEl('text', { x: x + fw - 12, y: cy + 1, 'font-size': 10.5, 'text-anchor': 'end', 'dominant-baseline': 'middle', class: 'ftxt-on', opacity: 0.72, text: FormatDuration(n.RealDur) }, content);\n }\n }\n grp.addEventListener('click', () => { if (!this.pz?.moved) this.NodeSelected.emit(n); });\n this.cells.set(n.Id, { outline, fill, x, fw, node: n });\n }\n\n this.playhead = SvgEl('line', { x1: this.PAD, y1: this.TOP - 8, x2: this.PAD, y2: VH - 16, 'stroke-width': 1.5, opacity: 0, class: 'fhand' }, g);\n this.playMark = SvgEl('path', { d: `M${this.PAD - 5},${this.TOP - 14} L${this.PAD + 5},${this.TOP - 14} L${this.PAD},${this.TOP - 6} Z`, opacity: 0, class: 'fhand-dot' }, g);\n\n this.pz = new PanZoomController(svg, main, 'mj.agentRunFlow.view.flame.v1');\n this.pz.Load(); this.pz.Attach();\n }\n\n private update(p: number, ts: number): void {\n this.cells.forEach(({ outline, fill, fw, node }) => {\n const started = p >= node.T0;\n const active = started && p < node.T1;\n const selected = node.Id === this.selectedId;\n const cw = p >= node.T1 ? fw : started ? (p - node.T0) / (node.T1 - node.T0) * fw : 0;\n fill.setAttribute('width', String(Math.max(0, cw)));\n const fillOp = active ? 0.92 + 0.08 * Math.sin(ts / 170) : started ? 0.6 : 0;\n fill.setAttribute('opacity', String(fillOp));\n outline.setAttribute('class', selected ? 'glow2' : active && node.Heat ? 'glow' + node.Heat : '');\n outline.setAttribute('stroke-width', selected ? '3' : '1.4');\n outline.setAttribute('stroke-opacity', selected || active ? '1' : started ? '0.85' : '0.55');\n });\n const live = p > 0 && p < 1;\n const ph = this.PAD + p * this.IW;\n this.playhead?.setAttribute('x1', String(ph));\n this.playhead?.setAttribute('x2', String(ph));\n this.playhead?.setAttribute('opacity', live ? '0.8' : '0');\n this.playMark?.setAttribute('transform', `translate(${ph - this.PAD},0)`);\n this.playMark?.setAttribute('opacity', live ? '1' : '0');\n }\n}\n"]}
|
|
@@ -1,12 +1,20 @@
|
|
|
1
|
+
export declare function SvgEl(tag: string, attrs: Record<string, string | number>, parent?: SVGElement): SVGElement;
|
|
2
|
+
/** @deprecated Use {@link SvgEl}. */
|
|
1
3
|
export declare function svgEl(tag: string, attrs: Record<string, string | number>, parent?: SVGElement): SVGElement;
|
|
2
4
|
/** Truncate a label to fit, with an ellipsis. */
|
|
5
|
+
export declare function Clip(text: string, max: number): string;
|
|
6
|
+
/** @deprecated Use {@link Clip}. */
|
|
3
7
|
export declare function clip(text: string, max: number): string;
|
|
4
8
|
/**
|
|
5
9
|
* Append an icon centered in a `size`×`size` box at (x,y): an agent logo `<image>`
|
|
6
10
|
* when `logoUrl` is set, otherwise a Font Awesome glyph via `<foreignObject>` (FA's
|
|
7
11
|
* global stylesheet renders it; we just set colour + size).
|
|
8
12
|
*/
|
|
13
|
+
export declare function AppendIcon(parent: SVGElement, x: number, y: number, size: number, iconClass: string, logoUrl: string | null, color: string): SVGElement;
|
|
14
|
+
/** @deprecated Use {@link AppendIcon}. */
|
|
9
15
|
export declare function appendIcon(parent: SVGElement, x: number, y: number, size: number, iconClass: string, logoUrl: string | null, color: string): SVGElement;
|
|
10
16
|
/** Native hover tooltip on an SVG element (works without any JS). */
|
|
17
|
+
export declare function AppendTitle(parent: SVGElement, text: string): void;
|
|
18
|
+
/** @deprecated Use {@link AppendTitle}. */
|
|
11
19
|
export declare function appendTitle(parent: SVGElement, text: string): void;
|
|
12
20
|
//# sourceMappingURL=flow-svg.util.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"flow-svg.util.d.ts","sourceRoot":"","sources":["../../../../../src/lib/custom/ai-agent-run/flow/flow-svg.util.ts"],"names":[],"mappings":"AAGA,wBAAgB,KAAK,CACnB,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,EACtC,MAAM,CAAC,EAAE,UAAU,GAClB,UAAU,CAQZ;AAED,iDAAiD;AACjD,wBAAgB,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAEtD;AAID;;;;GAIG;AACH,wBAAgB,UAAU,CACxB,MAAM,EAAE,UAAU,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EACtD,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,EAAE,KAAK,EAAE,MAAM,GACvD,UAAU,CAgBZ;AAED,qEAAqE;AACrE,wBAAgB,WAAW,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAElE"}
|
|
1
|
+
{"version":3,"file":"flow-svg.util.d.ts","sourceRoot":"","sources":["../../../../../src/lib/custom/ai-agent-run/flow/flow-svg.util.ts"],"names":[],"mappings":"AAGA,wBAAgB,KAAK,CACnB,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,EACtC,MAAM,CAAC,EAAE,UAAU,GAClB,UAAU,CAQZ;AAED,qCAAqC;AACrC,wBAAgB,KAAK,CACnB,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,EACtC,MAAM,CAAC,EAAE,UAAU,GAClB,UAAU,CAEZ;AAED,iDAAiD;AACjD,wBAAgB,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAEtD;AAED,oCAAoC;AACpC,wBAAgB,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAEtD;AAID;;;;GAIG;AACH,wBAAgB,UAAU,CACxB,MAAM,EAAE,UAAU,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EACtD,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,EAAE,KAAK,EAAE,MAAM,GACvD,UAAU,CAgBZ;AAED,0CAA0C;AAC1C,wBAAgB,UAAU,CACxB,MAAM,EAAE,UAAU,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EACtD,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,EAAE,KAAK,EAAE,MAAM,GACvD,UAAU,CAEZ;AAED,qEAAqE;AACrE,wBAAgB,WAAW,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAElE;AAED,2CAA2C;AAC3C,wBAAgB,WAAW,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAElE"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/** Tiny SVG element factory shared by all flow renderers. */
|
|
2
2
|
const SVG_NS = 'http://www.w3.org/2000/svg';
|
|
3
|
-
export function
|
|
3
|
+
export function SvgEl(tag, attrs, parent) {
|
|
4
4
|
const e = document.createElementNS(SVG_NS, tag);
|
|
5
5
|
for (const k in attrs) {
|
|
6
6
|
if (k === 'text')
|
|
@@ -12,24 +12,32 @@ export function svgEl(tag, attrs, parent) {
|
|
|
12
12
|
parent.appendChild(e);
|
|
13
13
|
return e;
|
|
14
14
|
}
|
|
15
|
+
/** @deprecated Use {@link SvgEl}. */
|
|
16
|
+
export function svgEl(tag, attrs, parent) {
|
|
17
|
+
return SvgEl(tag, attrs, parent);
|
|
18
|
+
}
|
|
15
19
|
/** Truncate a label to fit, with an ellipsis. */
|
|
16
|
-
export function
|
|
20
|
+
export function Clip(text, max) {
|
|
17
21
|
return text.length <= max ? text : text.slice(0, max - 1) + '…';
|
|
18
22
|
}
|
|
23
|
+
/** @deprecated Use {@link Clip}. */
|
|
24
|
+
export function clip(text, max) {
|
|
25
|
+
return Clip(text, max);
|
|
26
|
+
}
|
|
19
27
|
const XHTML_NS = 'http://www.w3.org/1999/xhtml';
|
|
20
28
|
/**
|
|
21
29
|
* Append an icon centered in a `size`×`size` box at (x,y): an agent logo `<image>`
|
|
22
30
|
* when `logoUrl` is set, otherwise a Font Awesome glyph via `<foreignObject>` (FA's
|
|
23
31
|
* global stylesheet renders it; we just set colour + size).
|
|
24
32
|
*/
|
|
25
|
-
export function
|
|
33
|
+
export function AppendIcon(parent, x, y, size, iconClass, logoUrl, color) {
|
|
26
34
|
if (logoUrl) {
|
|
27
|
-
const img =
|
|
35
|
+
const img = SvgEl('image', { x, y, width: size, height: size, preserveAspectRatio: 'xMidYMid slice' }, parent);
|
|
28
36
|
img.setAttribute('href', logoUrl);
|
|
29
37
|
img.setAttribute('clip-path', `inset(0 round ${size / 2}px)`);
|
|
30
38
|
return img;
|
|
31
39
|
}
|
|
32
|
-
const fo =
|
|
40
|
+
const fo = SvgEl('foreignObject', { x, y, width: size, height: size }, parent);
|
|
33
41
|
const div = document.createElementNS(XHTML_NS, 'div');
|
|
34
42
|
div.setAttribute('style', `width:${size}px;height:${size}px;display:flex;align-items:center;justify-content:center;color:${color}`);
|
|
35
43
|
const i = document.createElementNS(XHTML_NS, 'i');
|
|
@@ -39,8 +47,16 @@ export function appendIcon(parent, x, y, size, iconClass, logoUrl, color) {
|
|
|
39
47
|
fo.appendChild(div);
|
|
40
48
|
return fo;
|
|
41
49
|
}
|
|
50
|
+
/** @deprecated Use {@link AppendIcon}. */
|
|
51
|
+
export function appendIcon(parent, x, y, size, iconClass, logoUrl, color) {
|
|
52
|
+
return AppendIcon(parent, x, y, size, iconClass, logoUrl, color);
|
|
53
|
+
}
|
|
42
54
|
/** Native hover tooltip on an SVG element (works without any JS). */
|
|
55
|
+
export function AppendTitle(parent, text) {
|
|
56
|
+
SvgEl('title', { text }, parent);
|
|
57
|
+
}
|
|
58
|
+
/** @deprecated Use {@link AppendTitle}. */
|
|
43
59
|
export function appendTitle(parent, text) {
|
|
44
|
-
|
|
60
|
+
return AppendTitle(parent, text);
|
|
45
61
|
}
|
|
46
62
|
//# sourceMappingURL=flow-svg.util.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"flow-svg.util.js","sourceRoot":"","sources":["../../../../../src/lib/custom/ai-agent-run/flow/flow-svg.util.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAC7D,MAAM,MAAM,GAAG,4BAA4B,CAAC;AAE5C,MAAM,UAAU,KAAK,CACnB,GAAW,EACX,KAAsC,EACtC,MAAmB;IAEnB,MAAM,CAAC,GAAG,QAAQ,CAAC,eAAe,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAChD,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,IAAI,CAAC,KAAK,MAAM;YAAE,CAAC,CAAC,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;;YAC9C,CAAC,CAAC,YAAY,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3C,CAAC;IACD,IAAI,MAAM;QAAE,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAClC,OAAO,CAAC,CAAC;AACX,CAAC;AAED,iDAAiD;AACjD,MAAM,UAAU,IAAI,CAAC,IAAY,EAAE,GAAW;IAC5C,OAAO,IAAI,CAAC,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC;AAClE,CAAC;AAED,MAAM,QAAQ,GAAG,8BAA8B,CAAC;AAEhD;;;;GAIG;AACH,MAAM,UAAU,UAAU,CACxB,MAAkB,EAAE,CAAS,EAAE,CAAS,EAAE,IAAY,EACtD,SAAiB,EAAE,OAAsB,EAAE,KAAa;IAExD,IAAI,OAAO,EAAE,CAAC;QACZ,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,EAAE,MAAM,CAAC,CAAC;QAC/G,GAAG,CAAC,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAClC,GAAG,CAAC,YAAY,CAAC,WAAW,EAAE,iBAAiB,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC;QAC9D,OAAO,GAAG,CAAC;IACb,CAAC;IACD,MAAM,EAAE,GAAG,KAAK,CAAC,eAAe,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,MAAM,CAAC,CAAC;IAC/E,MAAM,GAAG,GAAG,QAAQ,CAAC,eAAe,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IACtD,GAAG,CAAC,YAAY,CAAC,OAAO,EAAE,SAAS,IAAI,aAAa,IAAI,mEAAmE,KAAK,EAAE,CAAC,CAAC;IACpI,MAAM,CAAC,GAAG,QAAQ,CAAC,eAAe,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;IAClD,CAAC,CAAC,YAAY,CAAC,OAAO,EAAE,YAAY,SAAS,EAAE,CAAC,CAAC;IACjD,CAAC,CAAC,YAAY,CAAC,OAAO,EAAE,aAAa,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,kBAAkB,CAAC,CAAC;IAChF,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IACnB,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IACpB,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,qEAAqE;AACrE,MAAM,UAAU,WAAW,CAAC,MAAkB,EAAE,IAAY;IAC1D,KAAK,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,EAAE,MAAM,CAAC,CAAC;AACnC,CAAC","sourcesContent":["/** Tiny SVG element factory shared by all flow renderers. */\nconst SVG_NS = 'http://www.w3.org/2000/svg';\n\nexport function
|
|
1
|
+
{"version":3,"file":"flow-svg.util.js","sourceRoot":"","sources":["../../../../../src/lib/custom/ai-agent-run/flow/flow-svg.util.ts"],"names":[],"mappings":"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","sourcesContent":["/** Tiny SVG element factory shared by all flow renderers. */\nconst SVG_NS = 'http://www.w3.org/2000/svg';\n\nexport function SvgEl(\n tag: string,\n attrs: Record<string, string | number>,\n parent?: SVGElement\n): SVGElement {\n const e = document.createElementNS(SVG_NS, tag);\n for (const k in attrs) {\n if (k === 'text') e.textContent = String(attrs[k]);\n else e.setAttribute(k, String(attrs[k]));\n }\n if (parent) parent.appendChild(e);\n return e;\n}\n\n/** @deprecated Use {@link SvgEl}. */\nexport function svgEl(\n tag: string,\n attrs: Record<string, string | number>,\n parent?: SVGElement\n): SVGElement {\n return SvgEl(tag, attrs, parent);\n}\n\n/** Truncate a label to fit, with an ellipsis. */\nexport function Clip(text: string, max: number): string {\n return text.length <= max ? text : text.slice(0, max - 1) + '…';\n}\n\n/** @deprecated Use {@link Clip}. */\nexport function clip(text: string, max: number): string {\n return Clip(text, max);\n}\n\nconst XHTML_NS = 'http://www.w3.org/1999/xhtml';\n\n/**\n * Append an icon centered in a `size`×`size` box at (x,y): an agent logo `<image>`\n * when `logoUrl` is set, otherwise a Font Awesome glyph via `<foreignObject>` (FA's\n * global stylesheet renders it; we just set colour + size).\n */\nexport function AppendIcon(\n parent: SVGElement, x: number, y: number, size: number,\n iconClass: string, logoUrl: string | null, color: string\n): SVGElement {\n if (logoUrl) {\n const img = SvgEl('image', { x, y, width: size, height: size, preserveAspectRatio: 'xMidYMid slice' }, parent);\n img.setAttribute('href', logoUrl);\n img.setAttribute('clip-path', `inset(0 round ${size / 2}px)`);\n return img;\n }\n const fo = SvgEl('foreignObject', { x, y, width: size, height: size }, parent);\n const div = document.createElementNS(XHTML_NS, 'div');\n div.setAttribute('style', `width:${size}px;height:${size}px;display:flex;align-items:center;justify-content:center;color:${color}`);\n const i = document.createElementNS(XHTML_NS, 'i');\n i.setAttribute('class', `fa-solid ${iconClass}`);\n i.setAttribute('style', `font-size:${Math.round(size * 0.82)}px;line-height:1`);\n div.appendChild(i);\n fo.appendChild(div);\n return fo;\n}\n\n/** @deprecated Use {@link AppendIcon}. */\nexport function appendIcon(\n parent: SVGElement, x: number, y: number, size: number,\n iconClass: string, logoUrl: string | null, color: string\n): SVGElement {\n return AppendIcon(parent, x, y, size, iconClass, logoUrl, color);\n}\n\n/** Native hover tooltip on an SVG element (works without any JS). */\nexport function AppendTitle(parent: SVGElement, text: string): void {\n SvgEl('title', { text }, parent);\n}\n\n/** @deprecated Use {@link AppendTitle}. */\nexport function appendTitle(parent: SVGElement, text: string): void {\n return AppendTitle(parent, text);\n}\n"]}
|
|
@@ -9,8 +9,28 @@ import * as i0 from "@angular/core";
|
|
|
9
9
|
* renderers, so palette, hierarchy and durations stay consistent.
|
|
10
10
|
*/
|
|
11
11
|
export declare class FlowchartComponent implements OnDestroy {
|
|
12
|
-
|
|
12
|
+
SvgRef: ElementRef<SVGSVGElement>;
|
|
13
|
+
/** @deprecated Use {@link SvgRef}. */
|
|
14
|
+
get svgRef(): ElementRef<SVGSVGElement>;
|
|
15
|
+
/** @deprecated Use {@link SvgRef}. */
|
|
16
|
+
set svgRef(value: ElementRef<SVGSVGElement>);
|
|
17
|
+
NodeSelected: EventEmitter<FlowNode>;
|
|
18
|
+
/**
|
|
19
|
+
* @deprecated Use {@link NodeSelected}.
|
|
20
|
+
*
|
|
21
|
+
* The same emitter under the old binding name, so a template still binding
|
|
22
|
+
* (nodeSelected) keeps working. Must stay AFTER NodeSelected: class fields
|
|
23
|
+
* initialise in order, and the other way round this captures undefined.
|
|
24
|
+
*/
|
|
13
25
|
nodeSelected: EventEmitter<FlowNode>;
|
|
26
|
+
SelectionCleared: EventEmitter<void>;
|
|
27
|
+
/**
|
|
28
|
+
* @deprecated Use {@link SelectionCleared}.
|
|
29
|
+
*
|
|
30
|
+
* The same emitter under the old binding name, so a template still binding
|
|
31
|
+
* (selectionCleared) keeps working. Must stay AFTER SelectionCleared: class fields
|
|
32
|
+
* initialise in order, and the other way round this captures undefined.
|
|
33
|
+
*/
|
|
14
34
|
selectionCleared: EventEmitter<void>;
|
|
15
35
|
private _model;
|
|
16
36
|
private built;
|
|
@@ -49,6 +69,8 @@ export declare class FlowchartComponent implements OnDestroy {
|
|
|
49
69
|
private fitToView;
|
|
50
70
|
zoomIn(): void;
|
|
51
71
|
zoomOut(): void;
|
|
72
|
+
ResetView(): void;
|
|
73
|
+
/** @deprecated Use {@link ResetView}. */
|
|
52
74
|
resetView(): void;
|
|
53
75
|
ZoomIn(): void;
|
|
54
76
|
ZoomOut(): void;
|
|
@@ -59,6 +81,6 @@ export declare class FlowchartComponent implements OnDestroy {
|
|
|
59
81
|
Deselect(): void;
|
|
60
82
|
private paintSelection;
|
|
61
83
|
static ɵfac: i0.ɵɵFactoryDeclaration<FlowchartComponent, never>;
|
|
62
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<FlowchartComponent, "mj-agent-flow-flowchart", never, { "Model": { "alias": "Model"; "required": false; }; }, { "nodeSelected": "nodeSelected"; "selectionCleared": "selectionCleared"; }, never, never, false, never>;
|
|
84
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<FlowchartComponent, "mj-agent-flow-flowchart", never, { "Model": { "alias": "Model"; "required": false; }; }, { "NodeSelected": "NodeSelected"; "nodeSelected": "nodeSelected"; "SelectionCleared": "SelectionCleared"; "selectionCleared": "selectionCleared"; }, never, never, false, never>;
|
|
63
85
|
}
|
|
64
86
|
//# sourceMappingURL=flowchart.component.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"flowchart.component.d.ts","sourceRoot":"","sources":["../../../../../src/lib/custom/ai-agent-run/flow/flowchart.component.ts"],"names":[],"mappings":"AAAA,OAAO,EACM,UAAU,EAAiB,YAAY,EACN,SAAS,EACtD,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAuD,MAAM,wBAAwB,CAAC;;AAKlH;;;;;;GAMG;AACH,qBAQa,kBAAmB,YAAW,SAAS;IACd,MAAM,EAAG,UAAU,CAAC,aAAa,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"flowchart.component.d.ts","sourceRoot":"","sources":["../../../../../src/lib/custom/ai-agent-run/flow/flowchart.component.ts"],"names":[],"mappings":"AAAA,OAAO,EACM,UAAU,EAAiB,YAAY,EACN,SAAS,EACtD,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAuD,MAAM,wBAAwB,CAAC;;AAKlH;;;;;;GAMG;AACH,qBAQa,kBAAmB,YAAW,SAAS;IACd,MAAM,EAAG,UAAU,CAAC,aAAa,CAAC,CAAC;IAEvE,sCAAsC;IACtC,IAAI,MAAM,IAAI,UAAU,CAAC,aAAa,CAAC,CAEtC;IACD,sCAAsC;IACtC,IAAI,MAAM,CAAC,KAAK,EAAE,UAAU,CAAC,aAAa,CAAC,EAE1C;IACS,YAAY,yBAAgC;IAEtD;;;;;;OAMG;IACO,YAAY,yBAAqB;IACjC,gBAAgB,qBAA4B;IAEtD;;;;;;OAMG;IACO,gBAAgB,qBAAyB;IAEnD,OAAO,CAAC,MAAM,CAA0B;IACxC,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,KAAK,CAA0B;IACvC,OAAO,CAAC,KAAK,CAAC,CAAa;IAC3B,OAAO,CAAC,UAAU,CAAM;IACxB,OAAO,CAAC,SAAS,CAAqB;IAEtC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAO;IAC9B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAM;IAC7B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAM;IAC3B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAM;IAC7B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAM;IAE3B,OAAO,CAAC,IAAI,CAA0B;IACtC,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,KAAK,CAAgC;IAE7C,IAAa,KAAK,CAAC,CAAC,EAAE,SAAS,GAAG,IAAI,EAAsG;IAErI,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI;IAK5C,WAAW,IAAI,IAAI;IAEnB,OAAO,CAAC,KAAK;IAQb,OAAO,CAAC,YAAY;IAOpB,OAAO,CAAC,eAAe;IAIvB,OAAO,CAAC,UAAU;IAwElB,OAAO,CAAC,cAAc;IAOtB,OAAO,CAAC,OAAO,CAIb;IACF,OAAO,CAAC,MAAM,CAAsJ;IACpK,OAAO,CAAC,SAAS,CAAoF;IACrG,OAAO,CAAC,MAAM,CAMZ;IACF,OAAO,CAAC,IAAI,CAGV;IAEF,OAAO,CAAC,eAAe;IAOvB,OAAO,CAAC,eAAe;IAOvB,OAAO,CAAC,SAAS;IAGjB,OAAO,CAAC,MAAM;IAMd,OAAO,CAAC,SAAS;IAUV,MAAM,IAAI,IAAI;IACd,OAAO,IAAI,IAAI;IACf,SAAS,IAAI,IAAI;IAExB,yCAAyC;IAClC,SAAS,IAAI,IAAI;IAKjB,MAAM,IAAI,IAAI;IACd,OAAO,IAAI,IAAI;IACf,QAAQ,IAAI,IAAI;IAIvB,OAAO,CAAC,WAAW;IAMnB,OAAO,CAAC,QAAQ;IAOhB,2FAA2F;IACpF,QAAQ,IAAI,IAAI;IAKvB,OAAO,CAAC,cAAc;yCAtPX,kBAAkB;2CAAlB,kBAAkB;CA6P9B"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Component, Input, Output, EventEmitter, ViewChild, ChangeDetectionStrategy, ViewEncapsulation } from '@angular/core';
|
|
2
|
-
import { FLOW_COLORS, FLOW_LABEL,
|
|
3
|
-
import {
|
|
2
|
+
import { FLOW_COLORS, FLOW_LABEL, ShortLabel, FormatDuration } from './agent-run-flow.model';
|
|
3
|
+
import { SvgEl, Clip, AppendIcon, AppendTitle } from './flow-svg.util';
|
|
4
4
|
import * as i0 from "@angular/core";
|
|
5
5
|
const _c0 = ["svg"];
|
|
6
6
|
/**
|
|
@@ -12,8 +12,24 @@ const _c0 = ["svg"];
|
|
|
12
12
|
*/
|
|
13
13
|
export class FlowchartComponent {
|
|
14
14
|
constructor() {
|
|
15
|
-
this.
|
|
16
|
-
|
|
15
|
+
this.NodeSelected = new EventEmitter();
|
|
16
|
+
/**
|
|
17
|
+
* @deprecated Use {@link NodeSelected}.
|
|
18
|
+
*
|
|
19
|
+
* The same emitter under the old binding name, so a template still binding
|
|
20
|
+
* (nodeSelected) keeps working. Must stay AFTER NodeSelected: class fields
|
|
21
|
+
* initialise in order, and the other way round this captures undefined.
|
|
22
|
+
*/
|
|
23
|
+
this.nodeSelected = this.NodeSelected;
|
|
24
|
+
this.SelectionCleared = new EventEmitter();
|
|
25
|
+
/**
|
|
26
|
+
* @deprecated Use {@link SelectionCleared}.
|
|
27
|
+
*
|
|
28
|
+
* The same emitter under the old binding name, so a template still binding
|
|
29
|
+
* (selectionCleared) keeps working. Must stay AFTER SelectionCleared: class fields
|
|
30
|
+
* initialise in order, and the other way round this captures undefined.
|
|
31
|
+
*/
|
|
32
|
+
this.selectionCleared = this.SelectionCleared;
|
|
17
33
|
this._model = null;
|
|
18
34
|
this.built = false;
|
|
19
35
|
this.listening = false;
|
|
@@ -33,7 +49,7 @@ export class FlowchartComponent {
|
|
|
33
49
|
/* ------------------------------ pan / zoom ------------------------------- */
|
|
34
50
|
this.onWheel = (e) => {
|
|
35
51
|
e.preventDefault();
|
|
36
|
-
const r = this.
|
|
52
|
+
const r = this.SvgRef.nativeElement.getBoundingClientRect();
|
|
37
53
|
this.zoomAt(e.clientX - r.left, e.clientY - r.top, e.deltaY > 0 ? 0.9 : 1.1);
|
|
38
54
|
};
|
|
39
55
|
this.onDown = () => { this.panning = true; this.moved = false; this.suppressBg = false; this.start = { x: 0, y: 0, tx: this.view.tx, ty: this.view.ty }; };
|
|
@@ -55,6 +71,14 @@ export class FlowchartComponent {
|
|
|
55
71
|
this.suppressBg = false;
|
|
56
72
|
};
|
|
57
73
|
}
|
|
74
|
+
/** @deprecated Use {@link SvgRef}. */
|
|
75
|
+
get svgRef() {
|
|
76
|
+
return this.SvgRef;
|
|
77
|
+
}
|
|
78
|
+
/** @deprecated Use {@link SvgRef}. */
|
|
79
|
+
set svgRef(value) {
|
|
80
|
+
this.SvgRef = value;
|
|
81
|
+
}
|
|
58
82
|
set Model(m) { this._model = m; this.built = false; this.collapsed.clear(); this.selectedId = -1; this.clear(); }
|
|
59
83
|
Render(_p, _ts) {
|
|
60
84
|
if (!this._model)
|
|
@@ -66,7 +90,7 @@ export class FlowchartComponent {
|
|
|
66
90
|
}
|
|
67
91
|
ngOnDestroy() { this.detachListeners(); }
|
|
68
92
|
clear() {
|
|
69
|
-
const svg = this.
|
|
93
|
+
const svg = this.SvgRef?.nativeElement;
|
|
70
94
|
if (svg)
|
|
71
95
|
while (svg.firstChild)
|
|
72
96
|
svg.removeChild(svg.firstChild);
|
|
@@ -75,59 +99,59 @@ export class FlowchartComponent {
|
|
|
75
99
|
/* ------------------------------ scene build ------------------------------ */
|
|
76
100
|
visibleNodes() {
|
|
77
101
|
const out = [];
|
|
78
|
-
const walk = (n) => { out.push(n); if (!this.collapsed.has(n.
|
|
79
|
-
n.
|
|
80
|
-
walk(this._model.
|
|
102
|
+
const walk = (n) => { out.push(n); if (!this.collapsed.has(n.Id))
|
|
103
|
+
n.Children.forEach(walk); };
|
|
104
|
+
walk(this._model.Root);
|
|
81
105
|
return out;
|
|
82
106
|
}
|
|
83
107
|
descendantCount(n) {
|
|
84
|
-
return n.
|
|
108
|
+
return n.Children.reduce((s, c) => s + 1 + this.descendantCount(c), 0);
|
|
85
109
|
}
|
|
86
110
|
buildScene(fit) {
|
|
87
111
|
this.clear();
|
|
88
|
-
const svg = this.
|
|
112
|
+
const svg = this.SvgRef.nativeElement;
|
|
89
113
|
const ordered = this.visibleNodes();
|
|
90
114
|
const rowY = (i) => i * (this.NODE_H + this.VGAP);
|
|
91
|
-
this.mainG =
|
|
115
|
+
this.mainG = SvgEl('g', {}, svg);
|
|
92
116
|
const main = this.mainG;
|
|
93
|
-
const edges =
|
|
94
|
-
const nodesG =
|
|
117
|
+
const edges = SvgEl('g', {}, main);
|
|
118
|
+
const nodesG = SvgEl('g', {}, main);
|
|
95
119
|
const pos = new Map();
|
|
96
|
-
ordered.forEach((n, i) => pos.set(n.
|
|
120
|
+
ordered.forEach((n, i) => pos.set(n.Id, { x: this.PADX + n.Depth * this.INDENT, y: rowY(i) }));
|
|
97
121
|
// elbow connectors to parent (file-tree style)
|
|
98
122
|
for (const n of ordered) {
|
|
99
|
-
if (!n.
|
|
123
|
+
if (!n.Parent || !pos.has(n.Parent.Id))
|
|
100
124
|
continue;
|
|
101
|
-
const c = pos.get(n.
|
|
125
|
+
const c = pos.get(n.Id), p = pos.get(n.Parent.Id);
|
|
102
126
|
const spineX = p.x + 16, midY = c.y + this.NODE_H / 2;
|
|
103
|
-
|
|
127
|
+
SvgEl('path', { d: `M${spineX},${p.y + this.NODE_H} L${spineX},${midY} L${c.x},${midY}`, fill: 'none', stroke: 'var(--mj-border-strong)', 'stroke-width': 1.5 }, edges);
|
|
104
128
|
}
|
|
105
129
|
for (const n of ordered) {
|
|
106
|
-
const { x, y } = pos.get(n.
|
|
107
|
-
const col = FLOW_COLORS[n.
|
|
108
|
-
const isContainer = n.
|
|
109
|
-
const isCollapsed = this.collapsed.has(n.
|
|
110
|
-
const grp =
|
|
130
|
+
const { x, y } = pos.get(n.Id);
|
|
131
|
+
const col = FLOW_COLORS[n.Type];
|
|
132
|
+
const isContainer = n.Children.length > 0;
|
|
133
|
+
const isCollapsed = this.collapsed.has(n.Id);
|
|
134
|
+
const grp = SvgEl('g', {}, nodesG);
|
|
111
135
|
grp.style.color = col;
|
|
112
|
-
const body =
|
|
136
|
+
const body = SvgEl('g', {}, grp);
|
|
113
137
|
body.style.cursor = 'pointer';
|
|
114
|
-
const sel = n.
|
|
115
|
-
const rect =
|
|
138
|
+
const sel = n.Id === this.selectedId;
|
|
139
|
+
const rect = SvgEl('rect', {
|
|
116
140
|
x, y, width: this.NODE_W, height: this.NODE_H, rx: 12,
|
|
117
141
|
fill: sel ? 'var(--mj-bg-surface-hover)' : 'var(--mj-bg-surface-card)',
|
|
118
142
|
stroke: col, 'stroke-width': sel ? 3 : isContainer ? 2 : 1.4, opacity: 0.98
|
|
119
143
|
}, body);
|
|
120
|
-
if (n.
|
|
121
|
-
rect.setAttribute('class', 'glow' + n.
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
const baseSub = n.
|
|
127
|
-
const sub = isContainer && isCollapsed ? `${FLOW_LABEL[n.
|
|
128
|
-
|
|
129
|
-
if (n.
|
|
130
|
-
|
|
144
|
+
if (n.Heat >= 2)
|
|
145
|
+
rect.setAttribute('class', 'glow' + n.Heat);
|
|
146
|
+
SvgEl('rect', { x, y, width: 5, height: this.NODE_H, rx: 2.5, fill: col }, body);
|
|
147
|
+
AppendTitle(body, `${n.Name} · ${FormatDuration(n.RealDur)}`);
|
|
148
|
+
AppendIcon(body, x + 14, y + this.NODE_H / 2 - 11, 22, n.IconClass, n.LogoUrl, col);
|
|
149
|
+
SvgEl('text', { x: x + 46, y: y + 22, 'font-size': 13, 'font-weight': 600, 'dominant-baseline': 'middle', text: Clip(ShortLabel(n), 26) }, body);
|
|
150
|
+
const baseSub = n.Model ? `${FLOW_LABEL[n.Type]} · ${n.Model}` : FLOW_LABEL[n.Type];
|
|
151
|
+
const sub = isContainer && isCollapsed ? `${FLOW_LABEL[n.Type]} · ${this.descendantCount(n)} hidden` : baseSub;
|
|
152
|
+
SvgEl('text', { x: x + 46, y: y + 41, 'font-size': 10.5, class: 'ftxt-muted', text: Clip(sub, 32) }, body);
|
|
153
|
+
if (n.RealDur) {
|
|
154
|
+
SvgEl('text', { x: x + this.NODE_W - 14, y: y + this.NODE_H / 2, 'font-size': 11, 'font-weight': 600, 'text-anchor': 'end', 'dominant-baseline': 'middle', class: 'ftxt-secondary', text: FormatDuration(n.RealDur) }, body);
|
|
131
155
|
}
|
|
132
156
|
body.addEventListener('mouseup', () => { if (!this.moved) {
|
|
133
157
|
this.suppressBg = true;
|
|
@@ -136,19 +160,19 @@ export class FlowchartComponent {
|
|
|
136
160
|
// collapse / expand disclosure — in the LEFT gutter, tree convention
|
|
137
161
|
if (isContainer) {
|
|
138
162
|
const gx = x - 15, gy = y + this.NODE_H / 2;
|
|
139
|
-
const tg =
|
|
163
|
+
const tg = SvgEl('g', {}, grp);
|
|
140
164
|
tg.style.cursor = 'pointer';
|
|
141
|
-
|
|
165
|
+
SvgEl('circle', { cx: gx, cy: gy, r: 9, fill: 'transparent' }, tg); // hit target
|
|
142
166
|
const tri = isCollapsed
|
|
143
167
|
? `M${gx - 3},${gy - 5} L${gx + 4},${gy} L${gx - 3},${gy + 5} Z`
|
|
144
168
|
: `M${gx - 5},${gy - 3} L${gx + 5},${gy - 3} L${gx},${gy + 4} Z`;
|
|
145
|
-
|
|
169
|
+
SvgEl('path', { d: tri, fill: col }, tg);
|
|
146
170
|
tg.addEventListener('mouseup', () => { if (!this.moved) {
|
|
147
171
|
this.suppressBg = true;
|
|
148
172
|
this.toggleCollapse(n);
|
|
149
173
|
} });
|
|
150
174
|
}
|
|
151
|
-
this.boxes.set(n.
|
|
175
|
+
this.boxes.set(n.Id, { rect, node: n });
|
|
152
176
|
}
|
|
153
177
|
if (!this.listening) {
|
|
154
178
|
this.attachListeners();
|
|
@@ -160,21 +184,21 @@ export class FlowchartComponent {
|
|
|
160
184
|
this.applyView();
|
|
161
185
|
}
|
|
162
186
|
toggleCollapse(n) {
|
|
163
|
-
if (this.collapsed.has(n.
|
|
164
|
-
this.collapsed.delete(n.
|
|
187
|
+
if (this.collapsed.has(n.Id))
|
|
188
|
+
this.collapsed.delete(n.Id);
|
|
165
189
|
else
|
|
166
|
-
this.collapsed.add(n.
|
|
190
|
+
this.collapsed.add(n.Id);
|
|
167
191
|
this.buildScene(false);
|
|
168
192
|
}
|
|
169
193
|
attachListeners() {
|
|
170
|
-
const svg = this.
|
|
194
|
+
const svg = this.SvgRef.nativeElement;
|
|
171
195
|
svg.addEventListener('wheel', this.onWheel, { passive: false });
|
|
172
196
|
svg.addEventListener('mousedown', (e) => { this.onDown(); this.onDownPos(e); });
|
|
173
197
|
window.addEventListener('mousemove', this.onMove);
|
|
174
198
|
window.addEventListener('mouseup', this.onUp);
|
|
175
199
|
}
|
|
176
200
|
detachListeners() {
|
|
177
|
-
const svg = this.
|
|
201
|
+
const svg = this.SvgRef?.nativeElement;
|
|
178
202
|
svg?.removeEventListener('wheel', this.onWheel);
|
|
179
203
|
window.removeEventListener('mousemove', this.onMove);
|
|
180
204
|
window.removeEventListener('mouseup', this.onUp);
|
|
@@ -190,7 +214,7 @@ export class FlowchartComponent {
|
|
|
190
214
|
this.applyView();
|
|
191
215
|
}
|
|
192
216
|
fitToView() {
|
|
193
|
-
const svg = this.
|
|
217
|
+
const svg = this.SvgRef.nativeElement;
|
|
194
218
|
if (!this.mainG)
|
|
195
219
|
return;
|
|
196
220
|
const bb = this.mainG.getBBox();
|
|
@@ -199,29 +223,33 @@ export class FlowchartComponent {
|
|
|
199
223
|
this.view = { s, tx: (vw - bb.width * s) / 2 - bb.x * s, ty: 28 - bb.y * s };
|
|
200
224
|
this.applyView();
|
|
201
225
|
}
|
|
202
|
-
zoomIn() { const svg = this.
|
|
203
|
-
zoomOut() { const svg = this.
|
|
204
|
-
|
|
226
|
+
zoomIn() { const svg = this.SvgRef.nativeElement; this.zoomAt(svg.clientWidth / 2, svg.clientHeight / 2, 1.2); } // case-violation-ok-legacy-back-compat: the PascalCase name is already taken in this scope
|
|
227
|
+
zoomOut() { const svg = this.SvgRef.nativeElement; this.zoomAt(svg.clientWidth / 2, svg.clientHeight / 2, 1 / 1.2); } // case-violation-ok-legacy-back-compat: the PascalCase name is already taken in this scope
|
|
228
|
+
ResetView() { this.fitToView(); }
|
|
229
|
+
/** @deprecated Use {@link ResetView}. */
|
|
230
|
+
resetView() {
|
|
231
|
+
return this.ResetView();
|
|
232
|
+
}
|
|
205
233
|
// unified interface used by the container's shared zoom toolbar
|
|
206
234
|
ZoomIn() { this.zoomIn(); }
|
|
207
235
|
ZoomOut() { this.zoomOut(); }
|
|
208
236
|
FitReset() { this.fitToView(); }
|
|
209
237
|
/* ------------------------------- selection ------------------------------ */
|
|
210
238
|
onNodeClick(n) {
|
|
211
|
-
if (this.selectedId === n.
|
|
239
|
+
if (this.selectedId === n.Id) {
|
|
212
240
|
this.deselect();
|
|
213
241
|
return;
|
|
214
242
|
}
|
|
215
|
-
this.selectedId = n.
|
|
243
|
+
this.selectedId = n.Id;
|
|
216
244
|
this.paintSelection();
|
|
217
|
-
this.
|
|
245
|
+
this.NodeSelected.emit(n);
|
|
218
246
|
}
|
|
219
247
|
deselect() {
|
|
220
248
|
if (this.selectedId === -1)
|
|
221
249
|
return;
|
|
222
250
|
this.selectedId = -1;
|
|
223
251
|
this.paintSelection();
|
|
224
|
-
this.
|
|
252
|
+
this.SelectionCleared.emit();
|
|
225
253
|
}
|
|
226
254
|
/** External deselect (e.g. detail panel closed) — clears highlight without re-emitting. */
|
|
227
255
|
Deselect() {
|
|
@@ -232,8 +260,8 @@ export class FlowchartComponent {
|
|
|
232
260
|
}
|
|
233
261
|
paintSelection() {
|
|
234
262
|
this.boxes.forEach(({ rect, node }) => {
|
|
235
|
-
const sel = node.
|
|
236
|
-
rect.setAttribute('stroke-width', sel ? '3' : node.
|
|
263
|
+
const sel = node.Id === this.selectedId;
|
|
264
|
+
rect.setAttribute('stroke-width', sel ? '3' : node.Children.length ? '2' : '1.4');
|
|
237
265
|
rect.setAttribute('fill', sel ? 'var(--mj-bg-surface-hover)' : 'var(--mj-bg-surface-card)');
|
|
238
266
|
});
|
|
239
267
|
}
|
|
@@ -242,8 +270,8 @@ export class FlowchartComponent {
|
|
|
242
270
|
i0.ɵɵviewQuery(_c0, 7);
|
|
243
271
|
} if (rf & 2) {
|
|
244
272
|
let _t;
|
|
245
|
-
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.
|
|
246
|
-
} }, inputs: { Model: "Model" }, outputs: { nodeSelected: "nodeSelected", selectionCleared: "selectionCleared" }, standalone: false, decls: 3, vars: 0, consts: [["svg", ""], [1, "fc-wrap"], [1, "flow-svg"]], template: function FlowchartComponent_Template(rf, ctx) { if (rf & 1) {
|
|
273
|
+
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.SvgRef = _t.first);
|
|
274
|
+
} }, inputs: { Model: "Model" }, outputs: { NodeSelected: "NodeSelected", nodeSelected: "nodeSelected", SelectionCleared: "SelectionCleared", selectionCleared: "selectionCleared" }, standalone: false, decls: 3, vars: 0, consts: [["svg", ""], [1, "fc-wrap"], [1, "flow-svg"]], template: function FlowchartComponent_Template(rf, ctx) { if (rf & 1) {
|
|
247
275
|
i0.ɵɵelementStart(0, "div", 1);
|
|
248
276
|
i0.ɵɵnamespaceSVG();
|
|
249
277
|
i0.ɵɵelement(1, "svg", 2, 0);
|
|
@@ -253,11 +281,15 @@ export class FlowchartComponent {
|
|
|
253
281
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(FlowchartComponent, [{
|
|
254
282
|
type: Component,
|
|
255
283
|
args: [{ standalone: false, selector: 'mj-agent-flow-flowchart', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"fc-wrap\">\n <svg #svg class=\"flow-svg\"></svg>\n</div>\n", styles: ["/* ViewEncapsulation.None \u2014 namespaced under .fc-* to avoid leakage. */\nmj-agent-flow-flowchart { display: block; width: 100%; height: 100%; }\n\n.fc-wrap { position: relative; width: 100%; height: 100%; }\n\n.fc-toolbar {\n position: absolute;\n top: 12px;\n right: 14px;\n display: flex;\n gap: 6px;\n z-index: 3;\n}\n.fc-btn {\n width: 34px;\n height: 34px;\n border-radius: 9px;\n border: 1px solid var(--mj-border-default);\n background: var(--mj-bg-surface-card);\n color: var(--mj-text-secondary);\n cursor: pointer;\n display: grid;\n place-items: center;\n font-size: 13px;\n}\n.fc-btn:hover { color: var(--mj-text-primary); border-color: var(--mj-brand-primary); }\n\n.fc-wrap .flow-svg { cursor: grab; }\n.fc-wrap .flow-svg:active { cursor: grabbing; }\n", "/* Shared chrome for every flow renderer's <svg> host.\n These components use ViewEncapsulation.None so this CSS reaches SVG nodes\n created imperatively via createElementNS (which never receive Angular's\n emulated-encapsulation scoping attribute). Everything is namespaced under\n `.flow-svg` to avoid leaking into the rest of the app. */\n.flow-svg {\n width: 100%;\n height: 100%;\n display: block;\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif;\n}\n\n.flow-svg text { fill: var(--mj-text-primary); }\n.flow-svg .ftxt-secondary { fill: var(--mj-text-secondary); }\n.flow-svg .ftxt-muted { fill: var(--mj-text-muted); }\n.flow-svg .ftxt-on { fill: var(--mj-text-inverse); }\n.flow-svg .fgrid { stroke: var(--mj-border-subtle); }\n.flow-svg .fhand { stroke: var(--mj-text-secondary); }\n.flow-svg .fhand-dot { fill: var(--mj-text-primary); }\n.flow-svg .fstar-bg { fill: var(--mj-text-muted); }\n/* outlined label for legibility over edges / busy fields */\n.flow-svg .fhalo { paint-order: stroke; stroke: var(--mj-bg-page); stroke-width: 3.5px; stroke-linejoin: round; }\n\n/* Heat / activity glow tiers \u2014 driven by `currentColor` (the node's category color). */\n.flow-svg .glow1 { filter: drop-shadow(0 0 4px currentColor); }\n.flow-svg .glow2 { filter: drop-shadow(0 0 9px currentColor); }\n.flow-svg .glow3 { filter: drop-shadow(0 0 16px currentColor); }\n"] }]
|
|
256
|
-
}], null, {
|
|
284
|
+
}], null, { SvgRef: [{
|
|
257
285
|
type: ViewChild,
|
|
258
286
|
args: ['svg', { static: true }]
|
|
287
|
+
}], NodeSelected: [{
|
|
288
|
+
type: Output
|
|
259
289
|
}], nodeSelected: [{
|
|
260
290
|
type: Output
|
|
291
|
+
}], SelectionCleared: [{
|
|
292
|
+
type: Output
|
|
261
293
|
}], selectionCleared: [{
|
|
262
294
|
type: Output
|
|
263
295
|
}], Model: [{
|