@memberjunction/ng-dashboards 5.30.1 → 5.31.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/AI/components/agents/agent-configuration.component.d.ts.map +1 -1
- package/dist/AI/components/agents/agent-configuration.component.js +4 -4
- package/dist/AI/components/agents/agent-configuration.component.js.map +1 -1
- package/dist/AI/components/agents/agent-editor.component.d.ts +2 -1
- package/dist/AI/components/agents/agent-editor.component.d.ts.map +1 -1
- package/dist/AI/components/agents/agent-editor.component.js +8 -6
- package/dist/AI/components/agents/agent-editor.component.js.map +1 -1
- package/dist/AI/components/analytics/agent-runs/agent-run-analysis.component.d.ts +2 -1
- package/dist/AI/components/analytics/agent-runs/agent-run-analysis.component.d.ts.map +1 -1
- package/dist/AI/components/analytics/agent-runs/agent-run-analysis.component.js +6 -5
- package/dist/AI/components/analytics/agent-runs/agent-run-analysis.component.js.map +1 -1
- package/dist/AI/components/analytics/cost-budget/cost-budget.component.d.ts +2 -1
- package/dist/AI/components/analytics/cost-budget/cost-budget.component.d.ts.map +1 -1
- package/dist/AI/components/analytics/cost-budget/cost-budget.component.js +6 -5
- package/dist/AI/components/analytics/cost-budget/cost-budget.component.js.map +1 -1
- package/dist/AI/components/analytics/error-analysis/error-analysis.component.d.ts +2 -1
- package/dist/AI/components/analytics/error-analysis/error-analysis.component.d.ts.map +1 -1
- package/dist/AI/components/analytics/error-analysis/error-analysis.component.js +6 -5
- package/dist/AI/components/analytics/error-analysis/error-analysis.component.js.map +1 -1
- package/dist/AI/components/analytics/executive-summary/executive-summary.component.d.ts +2 -1
- package/dist/AI/components/analytics/executive-summary/executive-summary.component.d.ts.map +1 -1
- package/dist/AI/components/analytics/executive-summary/executive-summary.component.js +7 -4
- package/dist/AI/components/analytics/executive-summary/executive-summary.component.js.map +1 -1
- package/dist/AI/components/analytics/model-performance/model-performance.component.d.ts +3 -2
- package/dist/AI/components/analytics/model-performance/model-performance.component.d.ts.map +1 -1
- package/dist/AI/components/analytics/model-performance/model-performance.component.js +10 -6
- package/dist/AI/components/analytics/model-performance/model-performance.component.js.map +1 -1
- package/dist/AI/components/analytics/prompt-runs/prompt-run-analysis.component.d.ts +2 -1
- package/dist/AI/components/analytics/prompt-runs/prompt-run-analysis.component.d.ts.map +1 -1
- package/dist/AI/components/analytics/prompt-runs/prompt-run-analysis.component.js +6 -5
- package/dist/AI/components/analytics/prompt-runs/prompt-run-analysis.component.js.map +1 -1
- package/dist/AI/components/analytics/usage-patterns/usage-patterns.component.d.ts +2 -1
- package/dist/AI/components/analytics/usage-patterns/usage-patterns.component.d.ts.map +1 -1
- package/dist/AI/components/analytics/usage-patterns/usage-patterns.component.js +6 -5
- package/dist/AI/components/analytics/usage-patterns/usage-patterns.component.js.map +1 -1
- package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.d.ts.map +1 -1
- package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.js +55 -52
- package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.js.map +1 -1
- package/dist/AI/components/duplicates/duplicate-detection-resource.component.js +15 -15
- package/dist/AI/components/duplicates/duplicate-detection-resource.component.js.map +1 -1
- package/dist/AI/components/execution-monitoring.component.d.ts.map +1 -1
- package/dist/AI/components/execution-monitoring.component.js +4 -3
- package/dist/AI/components/execution-monitoring.component.js.map +1 -1
- package/dist/AI/components/models/model-management.component.js +2 -2
- package/dist/AI/components/models/model-management.component.js.map +1 -1
- package/dist/AI/components/prompts/model-prompt-priority-matrix.component.d.ts +2 -1
- package/dist/AI/components/prompts/model-prompt-priority-matrix.component.d.ts.map +1 -1
- package/dist/AI/components/prompts/model-prompt-priority-matrix.component.js +10 -8
- package/dist/AI/components/prompts/model-prompt-priority-matrix.component.js.map +1 -1
- package/dist/AI/components/prompts/prompt-management.component.d.ts.map +1 -1
- package/dist/AI/components/prompts/prompt-management.component.js +2 -2
- package/dist/AI/components/prompts/prompt-management.component.js.map +1 -1
- package/dist/AI/components/prompts/prompt-version-control.component.d.ts +2 -1
- package/dist/AI/components/prompts/prompt-version-control.component.d.ts.map +1 -1
- package/dist/AI/components/prompts/prompt-version-control.component.js +13 -10
- package/dist/AI/components/prompts/prompt-version-control.component.js.map +1 -1
- package/dist/AI/components/requests/agent-requests-resource.component.js +1 -1
- package/dist/AI/components/requests/agent-requests-resource.component.js.map +1 -1
- package/dist/AI/components/tags/tags-resource.component.d.ts +1181 -0
- package/dist/AI/components/tags/tags-resource.component.d.ts.map +1 -0
- package/dist/AI/components/tags/tags-resource.component.js +7487 -0
- package/dist/AI/components/tags/tags-resource.component.js.map +1 -0
- package/dist/AI/components/vectors/vector-management-resource.component.d.ts.map +1 -1
- package/dist/AI/components/vectors/vector-management-resource.component.js +25 -21
- package/dist/AI/components/vectors/vector-management-resource.component.js.map +1 -1
- package/dist/AI/index.d.ts +1 -0
- package/dist/AI/index.d.ts.map +1 -1
- package/dist/AI/index.js +5 -0
- package/dist/AI/index.js.map +1 -1
- package/dist/AI/services/ai-instrumentation.service.d.ts +5 -0
- package/dist/AI/services/ai-instrumentation.service.d.ts.map +1 -1
- package/dist/AI/services/ai-instrumentation.service.js +12 -4
- package/dist/AI/services/ai-instrumentation.service.js.map +1 -1
- package/dist/APIKeys/api-applications-panel.component.d.ts +3 -2
- package/dist/APIKeys/api-applications-panel.component.d.ts.map +1 -1
- package/dist/APIKeys/api-applications-panel.component.js +5 -4
- package/dist/APIKeys/api-applications-panel.component.js.map +1 -1
- package/dist/APIKeys/api-key-create-dialog.component.d.ts +2 -1
- package/dist/APIKeys/api-key-create-dialog.component.d.ts.map +1 -1
- package/dist/APIKeys/api-key-create-dialog.component.js +5 -5
- package/dist/APIKeys/api-key-create-dialog.component.js.map +1 -1
- package/dist/APIKeys/api-key-edit-panel.component.d.ts +3 -2
- package/dist/APIKeys/api-key-edit-panel.component.d.ts.map +1 -1
- package/dist/APIKeys/api-key-edit-panel.component.js +11 -10
- package/dist/APIKeys/api-key-edit-panel.component.js.map +1 -1
- package/dist/APIKeys/api-key-list.component.d.ts +2 -1
- package/dist/APIKeys/api-key-list.component.d.ts.map +1 -1
- package/dist/APIKeys/api-key-list.component.js +6 -5
- package/dist/APIKeys/api-key-list.component.js.map +1 -1
- package/dist/APIKeys/api-keys-resource.component.d.ts.map +1 -1
- package/dist/APIKeys/api-keys-resource.component.js +4 -4
- package/dist/APIKeys/api-keys-resource.component.js.map +1 -1
- package/dist/APIKeys/api-scopes-panel.component.d.ts +3 -2
- package/dist/APIKeys/api-scopes-panel.component.d.ts.map +1 -1
- package/dist/APIKeys/api-scopes-panel.component.js +8 -6
- package/dist/APIKeys/api-scopes-panel.component.js.map +1 -1
- package/dist/APIKeys/api-usage-panel.component.d.ts +3 -2
- package/dist/APIKeys/api-usage-panel.component.d.ts.map +1 -1
- package/dist/APIKeys/api-usage-panel.component.js +10 -8
- package/dist/APIKeys/api-usage-panel.component.js.map +1 -1
- package/dist/Actions/components/actions-list-view.component.d.ts +2 -1
- package/dist/Actions/components/actions-list-view.component.d.ts.map +1 -1
- package/dist/Actions/components/actions-list-view.component.js +6 -5
- package/dist/Actions/components/actions-list-view.component.js.map +1 -1
- package/dist/Actions/components/actions-overview.component.js +2 -2
- package/dist/Actions/components/actions-overview.component.js.map +1 -1
- package/dist/Actions/components/categories-list-view.component.d.ts +2 -1
- package/dist/Actions/components/categories-list-view.component.d.ts.map +1 -1
- package/dist/Actions/components/categories-list-view.component.js +6 -5
- package/dist/Actions/components/categories-list-view.component.js.map +1 -1
- package/dist/Actions/components/execution-monitoring.component.js +1 -1
- package/dist/Actions/components/execution-monitoring.component.js.map +1 -1
- package/dist/Actions/components/explorer/action-card.component.d.ts +2 -1
- package/dist/Actions/components/explorer/action-card.component.d.ts.map +1 -1
- package/dist/Actions/components/explorer/action-card.component.js +6 -4
- package/dist/Actions/components/explorer/action-card.component.js.map +1 -1
- package/dist/Actions/components/explorer/action-explorer.component.js +1 -1
- package/dist/Actions/components/explorer/action-explorer.component.js.map +1 -1
- package/dist/Actions/components/explorer/new-action-panel.component.d.ts +2 -1
- package/dist/Actions/components/explorer/new-action-panel.component.d.ts.map +1 -1
- package/dist/Actions/components/explorer/new-action-panel.component.js +7 -5
- package/dist/Actions/components/explorer/new-action-panel.component.js.map +1 -1
- package/dist/Actions/components/explorer/new-category-panel.component.d.ts +2 -1
- package/dist/Actions/components/explorer/new-category-panel.component.d.ts.map +1 -1
- package/dist/Actions/components/explorer/new-category-panel.component.js +7 -5
- package/dist/Actions/components/explorer/new-category-panel.component.js.map +1 -1
- package/dist/ApplicationRoles/application-roles-resource.component.js +4 -4
- package/dist/ApplicationRoles/application-roles-resource.component.js.map +1 -1
- package/dist/Communication/communication-logs-resource.component.js +1 -1
- package/dist/Communication/communication-logs-resource.component.js.map +1 -1
- package/dist/Communication/communication-monitor-resource.component.js +1 -1
- package/dist/Communication/communication-monitor-resource.component.js.map +1 -1
- package/dist/Communication/communication-providers-resource.component.js +3 -3
- package/dist/Communication/communication-providers-resource.component.js.map +1 -1
- package/dist/Communication/communication-runs-resource.component.js +1 -1
- package/dist/Communication/communication-runs-resource.component.js.map +1 -1
- package/dist/Communication/communication-templates-resource.component.js +3 -3
- package/dist/Communication/communication-templates-resource.component.js.map +1 -1
- package/dist/ComponentStudio/component-studio-dashboard.component.d.ts +1 -1
- package/dist/ComponentStudio/component-studio-dashboard.component.d.ts.map +1 -1
- package/dist/ComponentStudio/component-studio-dashboard.component.js +5 -4
- package/dist/ComponentStudio/component-studio-dashboard.component.js.map +1 -1
- package/dist/ComponentStudio/components/ai-assistant/ai-assistant-panel.component.d.ts +2 -1
- package/dist/ComponentStudio/components/ai-assistant/ai-assistant-panel.component.d.ts.map +1 -1
- package/dist/ComponentStudio/components/ai-assistant/ai-assistant-panel.component.js +6 -4
- package/dist/ComponentStudio/components/ai-assistant/ai-assistant-panel.component.js.map +1 -1
- package/dist/ComponentStudio/components/artifact-load-dialog.component.d.ts +11 -2
- package/dist/ComponentStudio/components/artifact-load-dialog.component.d.ts.map +1 -1
- package/dist/ComponentStudio/components/artifact-load-dialog.component.js +61 -27
- package/dist/ComponentStudio/components/artifact-load-dialog.component.js.map +1 -1
- package/dist/ComponentStudio/components/artifact-selection-dialog.component.d.ts +4 -2
- package/dist/ComponentStudio/components/artifact-selection-dialog.component.d.ts.map +1 -1
- package/dist/ComponentStudio/components/artifact-selection-dialog.component.js +19 -11
- package/dist/ComponentStudio/components/artifact-selection-dialog.component.js.map +1 -1
- package/dist/ComponentStudio/components/editors/data-requirements-editor.component.d.ts +4 -2
- package/dist/ComponentStudio/components/editors/data-requirements-editor.component.d.ts.map +1 -1
- package/dist/ComponentStudio/components/editors/data-requirements-editor.component.js +11 -3
- package/dist/ComponentStudio/components/editors/data-requirements-editor.component.js.map +1 -1
- package/dist/ComponentStudio/components/workspace/component-preview.component.d.ts +10 -1
- package/dist/ComponentStudio/components/workspace/component-preview.component.d.ts.map +1 -1
- package/dist/ComponentStudio/components/workspace/component-preview.component.js +18 -9
- package/dist/ComponentStudio/components/workspace/component-preview.component.js.map +1 -1
- package/dist/ComponentStudio/services/component-studio-state.service.d.ts +11 -1
- package/dist/ComponentStudio/services/component-studio-state.service.d.ts.map +1 -1
- package/dist/ComponentStudio/services/component-studio-state.service.js +23 -3
- package/dist/ComponentStudio/services/component-studio-state.service.js.map +1 -1
- package/dist/ComponentStudio/services/component-version.service.d.ts +6 -1
- package/dist/ComponentStudio/services/component-version.service.d.ts.map +1 -1
- package/dist/ComponentStudio/services/component-version.service.js +16 -6
- package/dist/ComponentStudio/services/component-version.service.js.map +1 -1
- package/dist/Credentials/components/credentials-audit-resource.component.js +1 -1
- package/dist/Credentials/components/credentials-audit-resource.component.js.map +1 -1
- package/dist/Credentials/components/credentials-categories-resource.component.d.ts.map +1 -1
- package/dist/Credentials/components/credentials-categories-resource.component.js +3 -3
- package/dist/Credentials/components/credentials-categories-resource.component.js.map +1 -1
- package/dist/Credentials/components/credentials-list-resource.component.d.ts.map +1 -1
- package/dist/Credentials/components/credentials-list-resource.component.js +3 -3
- package/dist/Credentials/components/credentials-list-resource.component.js.map +1 -1
- package/dist/Credentials/components/credentials-overview-resource.component.d.ts.map +1 -1
- package/dist/Credentials/components/credentials-overview-resource.component.js +3 -3
- package/dist/Credentials/components/credentials-overview-resource.component.js.map +1 -1
- package/dist/Credentials/components/credentials-types-resource.component.d.ts.map +1 -1
- package/dist/Credentials/components/credentials-types-resource.component.js +3 -3
- package/dist/Credentials/components/credentials-types-resource.component.js.map +1 -1
- package/dist/Credentials/credentials-dashboard.component.js +1 -1
- package/dist/Credentials/credentials-dashboard.component.js.map +1 -1
- package/dist/DashboardBrowser/dashboard-browser-resource.component.js +13 -13
- package/dist/DashboardBrowser/dashboard-browser-resource.component.js.map +1 -1
- package/dist/DashboardBrowser/dashboard-share-adapter.d.ts +4 -0
- package/dist/DashboardBrowser/dashboard-share-adapter.d.ts.map +1 -1
- package/dist/DashboardBrowser/dashboard-share-adapter.js +5 -2
- package/dist/DashboardBrowser/dashboard-share-adapter.js.map +1 -1
- package/dist/DashboardBrowser/dashboard-share-dialog.component.d.ts +3 -1
- package/dist/DashboardBrowser/dashboard-share-dialog.component.d.ts.map +1 -1
- package/dist/DashboardBrowser/dashboard-share-dialog.component.js +9 -4
- package/dist/DashboardBrowser/dashboard-share-dialog.component.js.map +1 -1
- package/dist/DataExplorer/components/navigation-panel/navigation-panel.component.d.ts +3 -2
- package/dist/DataExplorer/components/navigation-panel/navigation-panel.component.d.ts.map +1 -1
- package/dist/DataExplorer/components/navigation-panel/navigation-panel.component.js +7 -6
- package/dist/DataExplorer/components/navigation-panel/navigation-panel.component.js.map +1 -1
- package/dist/DataExplorer/components/view-selector/view-selector.component.d.ts +3 -2
- package/dist/DataExplorer/components/view-selector/view-selector.component.d.ts.map +1 -1
- package/dist/DataExplorer/components/view-selector/view-selector.component.js +6 -5
- package/dist/DataExplorer/components/view-selector/view-selector.component.js.map +1 -1
- package/dist/DataExplorer/data-explorer-dashboard.component.d.ts.map +1 -1
- package/dist/DataExplorer/data-explorer-dashboard.component.js +10 -9
- package/dist/DataExplorer/data-explorer-dashboard.component.js.map +1 -1
- package/dist/DataExplorer/services/explorer-state.service.d.ts +6 -1
- package/dist/DataExplorer/services/explorer-state.service.d.ts.map +1 -1
- package/dist/DataExplorer/services/explorer-state.service.js +15 -5
- package/dist/DataExplorer/services/explorer-state.service.js.map +1 -1
- package/dist/DatabaseDesigner/components/create-wizard/database-create-wizard.component.d.ts +64 -0
- package/dist/DatabaseDesigner/components/create-wizard/database-create-wizard.component.d.ts.map +1 -0
- package/dist/DatabaseDesigner/components/create-wizard/database-create-wizard.component.js +400 -0
- package/dist/DatabaseDesigner/components/create-wizard/database-create-wizard.component.js.map +1 -0
- package/dist/DatabaseDesigner/components/create-wizard/steps/step-basics.component.d.ts +42 -0
- package/dist/DatabaseDesigner/components/create-wizard/steps/step-basics.component.d.ts.map +1 -0
- package/dist/DatabaseDesigner/components/create-wizard/steps/step-basics.component.js +232 -0
- package/dist/DatabaseDesigner/components/create-wizard/steps/step-basics.component.js.map +1 -0
- package/dist/DatabaseDesigner/components/create-wizard/steps/step-fields.component.d.ts +14 -0
- package/dist/DatabaseDesigner/components/create-wizard/steps/step-fields.component.d.ts.map +1 -0
- package/dist/DatabaseDesigner/components/create-wizard/steps/step-fields.component.js +38 -0
- package/dist/DatabaseDesigner/components/create-wizard/steps/step-fields.component.js.map +1 -0
- package/dist/DatabaseDesigner/components/create-wizard/steps/step-pipeline.component.d.ts +24 -0
- package/dist/DatabaseDesigner/components/create-wizard/steps/step-pipeline.component.d.ts.map +1 -0
- package/dist/DatabaseDesigner/components/create-wizard/steps/step-pipeline.component.js +77 -0
- package/dist/DatabaseDesigner/components/create-wizard/steps/step-pipeline.component.js.map +1 -0
- package/dist/DatabaseDesigner/components/create-wizard/steps/step-relationships.component.d.ts +88 -0
- package/dist/DatabaseDesigner/components/create-wizard/steps/step-relationships.component.d.ts.map +1 -0
- package/dist/DatabaseDesigner/components/create-wizard/steps/step-relationships.component.js +404 -0
- package/dist/DatabaseDesigner/components/create-wizard/steps/step-relationships.component.js.map +1 -0
- package/dist/DatabaseDesigner/components/create-wizard/steps/step-review.component.d.ts +12 -0
- package/dist/DatabaseDesigner/components/create-wizard/steps/step-review.component.d.ts.map +1 -0
- package/dist/DatabaseDesigner/components/create-wizard/steps/step-review.component.js +116 -0
- package/dist/DatabaseDesigner/components/create-wizard/steps/step-review.component.js.map +1 -0
- package/dist/DatabaseDesigner/components/database-designer-dashboard.component.d.ts +55 -0
- package/dist/DatabaseDesigner/components/database-designer-dashboard.component.d.ts.map +1 -0
- package/dist/DatabaseDesigner/components/database-designer-dashboard.component.js +204 -0
- package/dist/DatabaseDesigner/components/database-designer-dashboard.component.js.map +1 -0
- package/dist/DatabaseDesigner/components/entity-list.component.d.ts +61 -0
- package/dist/DatabaseDesigner/components/entity-list.component.d.ts.map +1 -0
- package/dist/DatabaseDesigner/components/entity-list.component.js +485 -0
- package/dist/DatabaseDesigner/components/entity-list.component.js.map +1 -0
- package/dist/DatabaseDesigner/components/modify/database-modify.component.d.ts +52 -0
- package/dist/DatabaseDesigner/components/modify/database-modify.component.d.ts.map +1 -0
- package/dist/DatabaseDesigner/components/modify/database-modify.component.js +320 -0
- package/dist/DatabaseDesigner/components/modify/database-modify.component.js.map +1 -0
- package/dist/DatabaseDesigner/components/shared/database-preview-pane.component.d.ts +79 -0
- package/dist/DatabaseDesigner/components/shared/database-preview-pane.component.d.ts.map +1 -0
- package/dist/DatabaseDesigner/components/shared/database-preview-pane.component.js +378 -0
- package/dist/DatabaseDesigner/components/shared/database-preview-pane.component.js.map +1 -0
- package/dist/DatabaseDesigner/components/shared/entity-fields-grid.component.d.ts +85 -0
- package/dist/DatabaseDesigner/components/shared/entity-fields-grid.component.d.ts.map +1 -0
- package/dist/DatabaseDesigner/components/shared/entity-fields-grid.component.js +429 -0
- package/dist/DatabaseDesigner/components/shared/entity-fields-grid.component.js.map +1 -0
- package/dist/DatabaseDesigner/components/shared/entity-pipeline-panel.component.d.ts +58 -0
- package/dist/DatabaseDesigner/components/shared/entity-pipeline-panel.component.d.ts.map +1 -0
- package/dist/DatabaseDesigner/components/shared/entity-pipeline-panel.component.js +333 -0
- package/dist/DatabaseDesigner/components/shared/entity-pipeline-panel.component.js.map +1 -0
- package/dist/DatabaseDesigner/components/shared/entity-review-panel.component.d.ts +36 -0
- package/dist/DatabaseDesigner/components/shared/entity-review-panel.component.d.ts.map +1 -0
- package/dist/DatabaseDesigner/components/shared/entity-review-panel.component.js +345 -0
- package/dist/DatabaseDesigner/components/shared/entity-review-panel.component.js.map +1 -0
- package/dist/DatabaseDesigner/components/shared/wizard-step-indicator.component.d.ts +13 -0
- package/dist/DatabaseDesigner/components/shared/wizard-step-indicator.component.d.ts.map +1 -0
- package/dist/DatabaseDesigner/components/shared/wizard-step-indicator.component.js +81 -0
- package/dist/DatabaseDesigner/components/shared/wizard-step-indicator.component.js.map +1 -0
- package/dist/DatabaseDesigner/database-designer-dashboards.module.d.ts +30 -0
- package/dist/DatabaseDesigner/database-designer-dashboards.module.d.ts.map +1 -0
- package/dist/DatabaseDesigner/database-designer-dashboards.module.js +131 -0
- package/dist/DatabaseDesigner/database-designer-dashboards.module.js.map +1 -0
- package/dist/DatabaseDesigner/database-designer-erd.d.ts +19 -0
- package/dist/DatabaseDesigner/database-designer-erd.d.ts.map +1 -0
- package/dist/DatabaseDesigner/database-designer-erd.js +84 -0
- package/dist/DatabaseDesigner/database-designer-erd.js.map +1 -0
- package/dist/DatabaseDesigner/database-designer.types.d.ts +167 -0
- package/dist/DatabaseDesigner/database-designer.types.d.ts.map +1 -0
- package/dist/DatabaseDesigner/database-designer.types.js +26 -0
- package/dist/DatabaseDesigner/database-designer.types.js.map +1 -0
- package/dist/DatabaseDesigner/services/database-designer.engine.d.ts +94 -0
- package/dist/DatabaseDesigner/services/database-designer.engine.d.ts.map +1 -0
- package/dist/DatabaseDesigner/services/database-designer.engine.js +392 -0
- package/dist/DatabaseDesigner/services/database-designer.engine.js.map +1 -0
- package/dist/DatabaseDesigner/services/database-designer.service.d.ts +78 -0
- package/dist/DatabaseDesigner/services/database-designer.service.d.ts.map +1 -0
- package/dist/DatabaseDesigner/services/database-designer.service.js +273 -0
- package/dist/DatabaseDesigner/services/database-designer.service.js.map +1 -0
- package/dist/DatabaseDesigner/services/entity-wizard-state.service.d.ts +79 -0
- package/dist/DatabaseDesigner/services/entity-wizard-state.service.d.ts.map +1 -0
- package/dist/DatabaseDesigner/services/entity-wizard-state.service.js +204 -0
- package/dist/DatabaseDesigner/services/entity-wizard-state.service.js.map +1 -0
- package/dist/EntityAdmin/entity-admin-dashboard.component.d.ts.map +1 -1
- package/dist/EntityAdmin/entity-admin-dashboard.component.js +2 -2
- package/dist/EntityAdmin/entity-admin-dashboard.component.js.map +1 -1
- package/dist/Home/action-pin-config-dialog.component.d.ts +2 -1
- package/dist/Home/action-pin-config-dialog.component.d.ts.map +1 -1
- package/dist/Home/action-pin-config-dialog.component.js +6 -4
- package/dist/Home/action-pin-config-dialog.component.js.map +1 -1
- package/dist/Home/action-pin-runner-dialog.component.d.ts +2 -1
- package/dist/Home/action-pin-runner-dialog.component.d.ts.map +1 -1
- package/dist/Home/action-pin-runner-dialog.component.js +5 -4
- package/dist/Home/action-pin-runner-dialog.component.js.map +1 -1
- package/dist/Home/home-application.d.ts.map +1 -1
- package/dist/Home/home-application.js +10 -12
- package/dist/Home/home-application.js.map +1 -1
- package/dist/Home/home-dashboard.component.d.ts.map +1 -1
- package/dist/Home/home-dashboard.component.js +3 -3
- package/dist/Home/home-dashboard.component.js.map +1 -1
- package/dist/Integration/components/activity/activity.component.d.ts.map +1 -1
- package/dist/Integration/components/activity/activity.component.js +1 -0
- package/dist/Integration/components/activity/activity.component.js.map +1 -1
- package/dist/Integration/components/connections/connections.component.d.ts.map +1 -1
- package/dist/Integration/components/connections/connections.component.js +11 -10
- package/dist/Integration/components/connections/connections.component.js.map +1 -1
- package/dist/Integration/components/mapping-workspace/mapping-workspace.component.d.ts.map +1 -1
- package/dist/Integration/components/mapping-workspace/mapping-workspace.component.js +2 -2
- package/dist/Integration/components/mapping-workspace/mapping-workspace.component.js.map +1 -1
- package/dist/Integration/components/overview/overview.component.d.ts.map +1 -1
- package/dist/Integration/components/overview/overview.component.js +1 -0
- package/dist/Integration/components/overview/overview.component.js.map +1 -1
- package/dist/Integration/components/pipelines/pipelines.component.d.ts.map +1 -1
- package/dist/Integration/components/pipelines/pipelines.component.js +1 -0
- package/dist/Integration/components/pipelines/pipelines.component.js.map +1 -1
- package/dist/Integration/components/schedules/schedules.component.d.ts.map +1 -1
- package/dist/Integration/components/schedules/schedules.component.js +5 -4
- package/dist/Integration/components/schedules/schedules.component.js.map +1 -1
- package/dist/Integration/services/integration-data.service.d.ts +5 -1
- package/dist/Integration/services/integration-data.service.d.ts.map +1 -1
- package/dist/Integration/services/integration-data.service.js +27 -19
- package/dist/Integration/services/integration-data.service.js.map +1 -1
- package/dist/KnowledgeHub/components/analytics/analytics-resource.component.js +6 -6
- package/dist/KnowledgeHub/components/analytics/analytics-resource.component.js.map +1 -1
- package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.d.ts.map +1 -1
- package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.js +8 -6
- package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.js.map +1 -1
- package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.js +6 -6
- package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.js.map +1 -1
- package/dist/KnowledgeHub/components/scheduling/scheduling-resource.component.js +3 -3
- package/dist/KnowledgeHub/components/scheduling/scheduling-resource.component.js.map +1 -1
- package/dist/Lists/components/lists-browse-resource.component.js +6 -6
- package/dist/Lists/components/lists-browse-resource.component.js.map +1 -1
- package/dist/Lists/components/lists-categories-resource.component.js +4 -4
- package/dist/Lists/components/lists-categories-resource.component.js.map +1 -1
- package/dist/Lists/components/lists-my-lists-resource.component.js +6 -6
- package/dist/Lists/components/lists-my-lists-resource.component.js.map +1 -1
- package/dist/Lists/components/lists-operations-resource.component.d.ts.map +1 -1
- package/dist/Lists/components/lists-operations-resource.component.js +11 -10
- package/dist/Lists/components/lists-operations-resource.component.js.map +1 -1
- package/dist/Lists/services/list-set-operations.service.d.ts +5 -0
- package/dist/Lists/services/list-set-operations.service.d.ts.map +1 -1
- package/dist/Lists/services/list-set-operations.service.js +11 -3
- package/dist/Lists/services/list-set-operations.service.js.map +1 -1
- package/dist/MCP/components/mcp-connection-dialog.component.d.ts +2 -1
- package/dist/MCP/components/mcp-connection-dialog.component.d.ts.map +1 -1
- package/dist/MCP/components/mcp-connection-dialog.component.js +8 -6
- package/dist/MCP/components/mcp-connection-dialog.component.js.map +1 -1
- package/dist/MCP/components/mcp-server-dialog.component.d.ts +2 -1
- package/dist/MCP/components/mcp-server-dialog.component.d.ts.map +1 -1
- package/dist/MCP/components/mcp-server-dialog.component.js +7 -5
- package/dist/MCP/components/mcp-server-dialog.component.js.map +1 -1
- package/dist/MCP/mcp-dashboard.component.d.ts.map +1 -1
- package/dist/MCP/mcp-dashboard.component.js +12 -12
- package/dist/MCP/mcp-dashboard.component.js.map +1 -1
- package/dist/Permissions/permissions-shared.d.ts +3 -3
- package/dist/Permissions/permissions-shared.d.ts.map +1 -1
- package/dist/Permissions/permissions-shared.js +5 -5
- package/dist/Permissions/permissions-shared.js.map +1 -1
- package/dist/Permissions/resource-access-resource.component.js +1 -1
- package/dist/Permissions/resource-access-resource.component.js.map +1 -1
- package/dist/Permissions/user-access-resource.component.js +1 -2
- package/dist/Permissions/user-access-resource.component.js.map +1 -1
- package/dist/QueryBrowser/query-browser-resource.component.d.ts.map +1 -1
- package/dist/QueryBrowser/query-browser-resource.component.js +2 -2
- package/dist/QueryBrowser/query-browser-resource.component.js.map +1 -1
- package/dist/Scheduling/scheduling-dashboard.component.d.ts.map +1 -1
- package/dist/Scheduling/scheduling-dashboard.component.js +1 -0
- package/dist/Scheduling/scheduling-dashboard.component.js.map +1 -1
- package/dist/Scheduling/services/scheduling-instrumentation.service.d.ts +5 -0
- package/dist/Scheduling/services/scheduling-instrumentation.service.d.ts.map +1 -1
- package/dist/Scheduling/services/scheduling-instrumentation.service.js +21 -13
- package/dist/Scheduling/services/scheduling-instrumentation.service.js.map +1 -1
- package/dist/SystemDiagnostics/system-diagnostics.component.d.ts.map +1 -1
- package/dist/SystemDiagnostics/system-diagnostics.component.js +2 -2
- package/dist/SystemDiagnostics/system-diagnostics.component.js.map +1 -1
- package/dist/Testing/components/testing-explorer.component.d.ts +2 -1
- package/dist/Testing/components/testing-explorer.component.d.ts.map +1 -1
- package/dist/Testing/components/testing-explorer.component.js +9 -7
- package/dist/Testing/components/testing-explorer.component.js.map +1 -1
- package/dist/Testing/services/testing-instrumentation.service.d.ts +6 -1
- package/dist/Testing/services/testing-instrumentation.service.d.ts.map +1 -1
- package/dist/Testing/services/testing-instrumentation.service.js +21 -11
- package/dist/Testing/services/testing-instrumentation.service.js.map +1 -1
- package/dist/Testing/testing-dashboard.component.d.ts +3 -1
- package/dist/Testing/testing-dashboard.component.d.ts.map +1 -1
- package/dist/Testing/testing-dashboard.component.js +15 -11
- package/dist/Testing/testing-dashboard.component.js.map +1 -1
- package/dist/VersionHistory/components/diff-resource.component.d.ts.map +1 -1
- package/dist/VersionHistory/components/diff-resource.component.js +5 -5
- package/dist/VersionHistory/components/diff-resource.component.js.map +1 -1
- package/dist/VersionHistory/components/graph-resource.component.d.ts.map +1 -1
- package/dist/VersionHistory/components/graph-resource.component.js +1 -2
- package/dist/VersionHistory/components/graph-resource.component.js.map +1 -1
- package/dist/VersionHistory/components/labels-resource.component.d.ts.map +1 -1
- package/dist/VersionHistory/components/labels-resource.component.js +3 -3
- package/dist/VersionHistory/components/labels-resource.component.js.map +1 -1
- package/dist/VersionHistory/components/restore-resource.component.js +1 -1
- package/dist/VersionHistory/components/restore-resource.component.js.map +1 -1
- package/dist/ai-dashboards.module.d.ts +35 -34
- package/dist/ai-dashboards.module.d.ts.map +1 -1
- package/dist/ai-dashboards.module.js +6 -0
- package/dist/ai-dashboards.module.js.map +1 -1
- package/dist/module.d.ts +13 -12
- package/dist/module.d.ts.map +1 -1
- package/dist/module.js +7 -0
- package/dist/module.js.map +1 -1
- package/dist/public-api.d.ts +3 -1
- package/dist/public-api.d.ts.map +1 -1
- package/dist/public-api.js +3 -1
- package/dist/public-api.js.map +1 -1
- package/dist/shared/entity-field-display.d.ts +4 -3
- package/dist/shared/entity-field-display.d.ts.map +1 -1
- package/dist/shared/entity-field-display.js +9 -9
- package/dist/shared/entity-field-display.js.map +1 -1
- package/package.json +52 -51
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { OnInit, OnDestroy, EventEmitter } from '@angular/core';
|
|
2
2
|
import { MJArtifactEntity, MJArtifactVersionEntity, MJCollectionEntity } from '@memberjunction/core-entities';
|
|
3
3
|
import { ComponentSpec } from '@memberjunction/interactive-component-types';
|
|
4
|
+
import { BaseAngularComponent } from '@memberjunction/ng-base-types';
|
|
4
5
|
import * as i0 from "@angular/core";
|
|
5
6
|
export interface ArtifactLoadResult {
|
|
6
7
|
spec: ComponentSpec;
|
|
@@ -9,7 +10,7 @@ export interface ArtifactLoadResult {
|
|
|
9
10
|
versionNumber: number;
|
|
10
11
|
artifactName: string;
|
|
11
12
|
}
|
|
12
|
-
export declare class ArtifactLoadDialogComponent implements OnInit, OnDestroy {
|
|
13
|
+
export declare class ArtifactLoadDialogComponent extends BaseAngularComponent implements OnInit, OnDestroy {
|
|
13
14
|
Visible: boolean;
|
|
14
15
|
Close: EventEmitter<ArtifactLoadResult | undefined>;
|
|
15
16
|
activeTab: number;
|
|
@@ -34,9 +35,10 @@ export declare class ArtifactLoadDialogComponent implements OnInit, OnDestroy {
|
|
|
34
35
|
previewSpec: ComponentSpec | null;
|
|
35
36
|
previewError: string | null;
|
|
36
37
|
showJsonPreview: boolean;
|
|
37
|
-
private metadata;
|
|
38
|
+
private get metadata();
|
|
38
39
|
private destroy$;
|
|
39
40
|
private searchSubject;
|
|
41
|
+
private cdr;
|
|
40
42
|
ngOnInit(): Promise<void>;
|
|
41
43
|
ngOnDestroy(): void;
|
|
42
44
|
loadArtifacts(): Promise<void>;
|
|
@@ -47,6 +49,13 @@ export declare class ArtifactLoadDialogComponent implements OnInit, OnDestroy {
|
|
|
47
49
|
loadVersions(artifactId: string): Promise<void>;
|
|
48
50
|
selectVersion(version: MJArtifactVersionEntity): Promise<void>;
|
|
49
51
|
loadPreview(version: MJArtifactVersionEntity): Promise<void>;
|
|
52
|
+
/**
|
|
53
|
+
* Skip emits artifact content as a `SkipAPIAnalysisCompleteResponse` envelope whose
|
|
54
|
+
* actual ComponentSpec lives at `componentOptions[0].option`. Older saves may put the
|
|
55
|
+
* envelope in `Configuration`; newer saves put it in `Content`. Either field can also
|
|
56
|
+
* contain a raw spec, so this helper handles both shapes.
|
|
57
|
+
*/
|
|
58
|
+
private unwrapSpec;
|
|
50
59
|
filterArtifacts(): Promise<void>;
|
|
51
60
|
onSearchInput(): void;
|
|
52
61
|
onArtifactTypeChange(): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"artifact-load-dialog.component.d.ts","sourceRoot":"","sources":["../../../src/ComponentStudio/components/artifact-load-dialog.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,MAAM,EAAE,SAAS,EAAiB,YAAY,
|
|
1
|
+
{"version":3,"file":"artifact-load-dialog.component.d.ts","sourceRoot":"","sources":["../../../src/ComponentStudio/components/artifact-load-dialog.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,MAAM,EAAE,SAAS,EAAiB,YAAY,EAA6B,MAAM,eAAe,CAAC;AAErH,OAAO,EACL,gBAAgB,EAChB,uBAAuB,EACvB,kBAAkB,EAEnB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,6CAA6C,CAAC;AAI5E,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;;AAErE,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,aAAa,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,qBAMa,2BAA4B,SAAQ,oBAAqB,YAAW,MAAM,EAAE,SAAS;IACvF,OAAO,UAAS;IACf,KAAK,+CAAsD;IAGrE,SAAS,SAAK;IAGd,SAAS,EAAE,gBAAgB,EAAE,CAAM;IACnC,gBAAgB,EAAE,uBAAuB,EAAE,CAAM;IACjD,gBAAgB,EAAE,gBAAgB,GAAG,IAAI,CAAQ;IACjD,eAAe,EAAE,uBAAuB,GAAG,IAAI,CAAQ;IAGvD,WAAW,EAAE,kBAAkB,EAAE,CAAM;IACvC,kBAAkB,EAAE,kBAAkB,GAAG,IAAI,CAAQ;IACrD,mBAAmB,EAAE,gBAAgB,EAAE,CAAM;IAG7C,UAAU,SAAM;IAChB,oBAAoB,SAAM;IAC1B,SAAS,SAAM;IAGf,WAAW,SAAK;IAChB,QAAQ,SAAM;IACd,cAAc,SAAK;IACnB,YAAY,UAAS;IAGrB,SAAS,UAAQ;IACjB,iBAAiB,UAAS;IAC1B,oBAAoB,UAAS;IAC7B,sBAAsB,UAAS;IAG/B,WAAW,EAAE,aAAa,GAAG,IAAI,CAAQ;IACzC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAQ;IACnC,eAAe,UAAS;IAExB,OAAO,KAAK,QAAQ,GAAiC;IACrD,OAAO,CAAC,QAAQ,CAAuB;IACvC,OAAO,CAAC,aAAa,CAAyB;IAC9C,OAAO,CAAC,GAAG,CAA6B;IAElC,QAAQ;IAgBd,WAAW;IAKL,aAAa;IA8Bb,eAAe;IAiCf,gBAAgB,CAAC,UAAU,EAAE,kBAAkB;IAiCrD,OAAO,CAAC,mBAAmB;IA0BrB,cAAc,CAAC,QAAQ,EAAE,gBAAgB;IAUzC,YAAY,CAAC,UAAU,EAAE,MAAM;IA6B/B,aAAa,CAAC,OAAO,EAAE,uBAAuB;IAK9C,WAAW,CAAC,OAAO,EAAE,uBAAuB;IAoClD;;;;;OAKG;IACH,OAAO,CAAC,UAAU;IASZ,eAAe;IAKrB,aAAa;IAIb,oBAAoB;IAOd,QAAQ;IAOR,YAAY;IAOlB,SAAS,IAAI,OAAO;IAIpB,aAAa,IAAI,OAAO;IAIxB,aAAa,IAAI,MAAM;IAIvB,iBAAiB;IAIjB,oBAAoB,IAAI,MAAM;IAQ9B,OAAO,IAAI,OAAO;IAMlB,MAAM;IAIN,IAAI;IAcJ,WAAW,CAAC,KAAK,EAAE,MAAM;IAIzB,iBAAiB,IAAI,gBAAgB,EAAE;IAIvC,iBAAiB,IAAI,IAAI;IAIzB,cAAc,IAAI,MAAM;IAIxB,0FAA0F;IAC1F,kBAAkB,CAAC,QAAQ,EAAE,gBAAgB,GAAG,OAAO;IAIvD,6FAA6F;IAC7F,oBAAoB,CAAC,UAAU,EAAE,kBAAkB,GAAG,OAAO;IAI7D,uFAAuF;IACvF,iBAAiB,CAAC,OAAO,EAAE,uBAAuB,GAAG,OAAO;yCApYjD,2BAA2B;2CAA3B,2BAA2B;CAuYvC"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import { Component, Input, Output, EventEmitter } from '@angular/core';
|
|
2
|
-
import { RunView
|
|
1
|
+
import { Component, Input, Output, EventEmitter, ChangeDetectorRef, inject } from '@angular/core';
|
|
2
|
+
import { RunView } from '@memberjunction/core';
|
|
3
3
|
import { UUIDsEqual } from '@memberjunction/global';
|
|
4
4
|
import { Subject, debounceTime, distinctUntilChanged } from 'rxjs';
|
|
5
5
|
import { takeUntil } from 'rxjs/operators';
|
|
6
|
+
import { BaseAngularComponent } from '@memberjunction/ng-base-types';
|
|
6
7
|
import * as i0 from "@angular/core";
|
|
7
8
|
import * as i1 from "@angular/forms";
|
|
8
9
|
import * as i2 from "@memberjunction/ng-code-editor";
|
|
@@ -460,7 +461,7 @@ function ArtifactLoadDialogComponent_Conditional_20_Template(rf, ctx) { if (rf &
|
|
|
460
461
|
i0.ɵɵadvance(6);
|
|
461
462
|
i0.ɵɵconditional(ctx_r0.isLoadingVersions ? 6 : ctx_r0.artifactVersions.length === 0 ? 7 : 8);
|
|
462
463
|
} }
|
|
463
|
-
export class ArtifactLoadDialogComponent {
|
|
464
|
+
export class ArtifactLoadDialogComponent extends BaseAngularComponent {
|
|
464
465
|
Visible = false;
|
|
465
466
|
Close = new EventEmitter();
|
|
466
467
|
// Tab state
|
|
@@ -492,9 +493,10 @@ export class ArtifactLoadDialogComponent {
|
|
|
492
493
|
previewSpec = null;
|
|
493
494
|
previewError = null;
|
|
494
495
|
showJsonPreview = false;
|
|
495
|
-
metadata
|
|
496
|
+
get metadata() { return this.ProviderToUse; }
|
|
496
497
|
destroy$ = new Subject();
|
|
497
498
|
searchSubject = new Subject();
|
|
499
|
+
cdr = inject(ChangeDetectorRef);
|
|
498
500
|
async ngOnInit() {
|
|
499
501
|
// Setup search debouncing
|
|
500
502
|
this.searchSubject.pipe(debounceTime(300), distinctUntilChanged(), takeUntil(this.destroy$)).subscribe(() => {
|
|
@@ -511,8 +513,9 @@ export class ArtifactLoadDialogComponent {
|
|
|
511
513
|
}
|
|
512
514
|
async loadArtifacts() {
|
|
513
515
|
this.isLoading = true;
|
|
516
|
+
this.cdr.detectChanges();
|
|
514
517
|
try {
|
|
515
|
-
const rv =
|
|
518
|
+
const rv = RunView.FromMetadataProvider(this.ProviderToUse);
|
|
516
519
|
const startRow = this.currentPage * this.pageSize;
|
|
517
520
|
const result = await rv.RunView({
|
|
518
521
|
EntityName: 'MJ: Artifacts',
|
|
@@ -534,17 +537,19 @@ export class ArtifactLoadDialogComponent {
|
|
|
534
537
|
}
|
|
535
538
|
finally {
|
|
536
539
|
this.isLoading = false;
|
|
540
|
+
this.cdr.detectChanges();
|
|
537
541
|
}
|
|
538
542
|
}
|
|
539
543
|
async loadCollections() {
|
|
540
544
|
this.isLoadingCollections = true;
|
|
545
|
+
this.cdr.detectChanges();
|
|
541
546
|
try {
|
|
542
547
|
const currentUserId = this.metadata.CurrentUser?.ID;
|
|
543
548
|
if (!currentUserId) {
|
|
544
549
|
this.collections = [];
|
|
545
550
|
return;
|
|
546
551
|
}
|
|
547
|
-
const rv =
|
|
552
|
+
const rv = RunView.FromMetadataProvider(this.ProviderToUse);
|
|
548
553
|
const result = await rv.RunView({
|
|
549
554
|
EntityName: 'MJ: Collections',
|
|
550
555
|
ExtraFilter: `UserID = '${currentUserId}' OR ID IN (
|
|
@@ -564,6 +569,7 @@ export class ArtifactLoadDialogComponent {
|
|
|
564
569
|
}
|
|
565
570
|
finally {
|
|
566
571
|
this.isLoadingCollections = false;
|
|
572
|
+
this.cdr.detectChanges();
|
|
567
573
|
}
|
|
568
574
|
}
|
|
569
575
|
async selectCollection(collection) {
|
|
@@ -571,9 +577,10 @@ export class ArtifactLoadDialogComponent {
|
|
|
571
577
|
this.selectedArtifact = null;
|
|
572
578
|
this.selectedVersion = null;
|
|
573
579
|
this.artifactVersions = [];
|
|
580
|
+
this.cdr.detectChanges();
|
|
574
581
|
// Load artifacts in this collection
|
|
575
582
|
try {
|
|
576
|
-
const rv =
|
|
583
|
+
const rv = RunView.FromMetadataProvider(this.ProviderToUse);
|
|
577
584
|
const result = await rv.RunView({
|
|
578
585
|
EntityName: 'MJ: Artifacts',
|
|
579
586
|
ExtraFilter: `ID IN (
|
|
@@ -593,6 +600,9 @@ export class ArtifactLoadDialogComponent {
|
|
|
593
600
|
console.error('Error loading collection artifacts:', error);
|
|
594
601
|
this.collectionArtifacts = [];
|
|
595
602
|
}
|
|
603
|
+
finally {
|
|
604
|
+
this.cdr.detectChanges();
|
|
605
|
+
}
|
|
596
606
|
}
|
|
597
607
|
buildArtifactFilter() {
|
|
598
608
|
const filters = [];
|
|
@@ -610,7 +620,7 @@ export class ArtifactLoadDialogComponent {
|
|
|
610
620
|
}
|
|
611
621
|
// User email filter
|
|
612
622
|
if (this.userEmail?.trim()) {
|
|
613
|
-
const md =
|
|
623
|
+
const md = this.ProviderToUse;
|
|
614
624
|
const schemaName = md.EntityByName("MJ: Users")?.SchemaName || "__mj";
|
|
615
625
|
filters.push(`UserID IN (SELECT ID FROM ${schemaName}.vwUsers WHERE Email LIKE '%${this.userEmail.trim()}%')`);
|
|
616
626
|
}
|
|
@@ -621,12 +631,14 @@ export class ArtifactLoadDialogComponent {
|
|
|
621
631
|
this.selectedVersion = null;
|
|
622
632
|
this.previewSpec = null;
|
|
623
633
|
this.previewError = null;
|
|
634
|
+
this.cdr.detectChanges();
|
|
624
635
|
await this.loadVersions(artifact.ID);
|
|
625
636
|
}
|
|
626
637
|
async loadVersions(artifactId) {
|
|
627
638
|
this.isLoadingVersions = true;
|
|
639
|
+
this.cdr.detectChanges();
|
|
628
640
|
try {
|
|
629
|
-
const rv =
|
|
641
|
+
const rv = RunView.FromMetadataProvider(this.ProviderToUse);
|
|
630
642
|
const result = await rv.RunView({
|
|
631
643
|
EntityName: 'MJ: Artifact Versions',
|
|
632
644
|
ExtraFilter: `ArtifactID = '${artifactId}'`,
|
|
@@ -647,6 +659,7 @@ export class ArtifactLoadDialogComponent {
|
|
|
647
659
|
}
|
|
648
660
|
finally {
|
|
649
661
|
this.isLoadingVersions = false;
|
|
662
|
+
this.cdr.detectChanges();
|
|
650
663
|
}
|
|
651
664
|
}
|
|
652
665
|
async selectVersion(version) {
|
|
@@ -656,29 +669,50 @@ export class ArtifactLoadDialogComponent {
|
|
|
656
669
|
async loadPreview(version) {
|
|
657
670
|
try {
|
|
658
671
|
this.previewError = null;
|
|
659
|
-
|
|
660
|
-
if (
|
|
661
|
-
this.previewSpec =
|
|
672
|
+
const raw = version.Content ?? version.Configuration;
|
|
673
|
+
if (!raw) {
|
|
674
|
+
this.previewSpec = null;
|
|
675
|
+
this.previewError = 'No content found in this version';
|
|
676
|
+
return;
|
|
662
677
|
}
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
this.previewSpec = config.componentOptions[0].option;
|
|
669
|
-
}
|
|
670
|
-
else {
|
|
671
|
-
this.previewSpec = config;
|
|
672
|
-
}
|
|
678
|
+
const spec = this.unwrapSpec(JSON.parse(raw));
|
|
679
|
+
if (!spec) {
|
|
680
|
+
this.previewSpec = null;
|
|
681
|
+
this.previewError = 'Artifact content is not a recognized component spec';
|
|
682
|
+
return;
|
|
673
683
|
}
|
|
674
|
-
|
|
675
|
-
|
|
684
|
+
const hasCode = typeof spec.code === 'string' && spec.code.trim().length > 0;
|
|
685
|
+
const hasDeps = Array.isArray(spec.dependencies) && spec.dependencies.length > 0;
|
|
686
|
+
const isRegistryRef = spec.location === 'registry' && !!spec.registry && !!spec.namespace && !!spec.name;
|
|
687
|
+
if (!hasCode && !hasDeps && !isRegistryRef) {
|
|
688
|
+
this.previewSpec = null;
|
|
689
|
+
this.previewError = 'Artifact contains no component code, dependencies, or registry reference';
|
|
690
|
+
return;
|
|
676
691
|
}
|
|
692
|
+
this.previewSpec = spec;
|
|
677
693
|
}
|
|
678
694
|
catch (error) {
|
|
679
695
|
this.previewError = `Failed to parse: ${error}`;
|
|
680
696
|
this.previewSpec = null;
|
|
681
697
|
}
|
|
698
|
+
finally {
|
|
699
|
+
this.cdr.detectChanges();
|
|
700
|
+
}
|
|
701
|
+
}
|
|
702
|
+
/**
|
|
703
|
+
* Skip emits artifact content as a `SkipAPIAnalysisCompleteResponse` envelope whose
|
|
704
|
+
* actual ComponentSpec lives at `componentOptions[0].option`. Older saves may put the
|
|
705
|
+
* envelope in `Configuration`; newer saves put it in `Content`. Either field can also
|
|
706
|
+
* contain a raw spec, so this helper handles both shapes.
|
|
707
|
+
*/
|
|
708
|
+
unwrapSpec(parsed) {
|
|
709
|
+
if (!parsed || typeof parsed !== 'object')
|
|
710
|
+
return null;
|
|
711
|
+
const obj = parsed;
|
|
712
|
+
if (Array.isArray(obj.componentOptions) && obj.componentOptions.length > 0 && obj.componentOptions[0]?.option) {
|
|
713
|
+
return obj.componentOptions[0].option;
|
|
714
|
+
}
|
|
715
|
+
return parsed;
|
|
682
716
|
}
|
|
683
717
|
async filterArtifacts() {
|
|
684
718
|
this.currentPage = 0;
|
|
@@ -771,8 +805,8 @@ export class ArtifactLoadDialogComponent {
|
|
|
771
805
|
IsVersionSelected(version) {
|
|
772
806
|
return UUIDsEqual(this.selectedVersion?.ID, version.ID);
|
|
773
807
|
}
|
|
774
|
-
static ɵfac = function ArtifactLoadDialogComponent_Factory(__ngFactoryType__) { return
|
|
775
|
-
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ArtifactLoadDialogComponent, selectors: [["app-artifact-load-dialog"]], inputs: { Visible: "Visible" }, outputs: { Close: "Close" }, standalone: false, decls: 27, vars: 18, consts: [["Title", "Load Component from Artifact", 3, "Close", "Visible", "Width", "MinWidth"], [1, "artifact-load-content"], [1, "filter-panel"], [1, "panel-header"], ["mjButton", "", "variant", "flat", 3, "click"], [1, "fa-solid", "fa-filter"], [1, "filter-count"], [1, "filter-content"], [1, "main-content"], [1, "tabs"], [1, "tab", 3, "click"], [1, "fa-solid", "fa-file-code"], [1, "fa-solid", "fa-folder"], [1, "tab-content"], [1, "artifacts-view"], [1, "collections-view"], [1, "version-panel"], ["mjButton", "", "variant", "primary", 3, "click", "disabled"], [1, "fa-solid", "fa-download"], ["mjButton", "", 3, "click"], [1, "filter-group"], ["type", "text", "placeholder", "Name or description...", 1, "filter-input", 3, "ngModelChange", "input", "ngModel"], [1, "filter-select", 3, "ngModelChange", "change", "ngModel"], ["value", ""], ["value", "Component"], ["value", "Report"], ["value", "Dashboard"], ["type", "text", "placeholder", "Enter user email...", 1, "filter-input", 3, "ngModelChange", "input", "ngModel"], [1, "paging-controls"], ["mjButton", "", 3, "click", "disabled"], [1, "fa-solid", "fa-chevron-left"], [1, "page-info"], [1, "fa-solid", "fa-chevron-right"], [1, "artifacts-list"], [1, "loading-state"], [1, "empty-state"], ["text", "Loading artifacts...", "size", "small"], [1, "fa-solid", "fa-inbox"], [1, "artifact-item", 3, "selected"], [1, "artifact-item", 3, "click"], [1, "artifact-content"], [1, "artifact-main"], [1, "artifact-name"], [1, "artifact-description"], [1, "artifact-meta"], [1, "collections-list"], [1, "collection-artifacts"], ["text", "Loading collections...", "size", "small"], [1, "fa-solid", "fa-folder-open"], [1, "collection-item", 3, "selected"], [1, "collection-item", 3, "click"], [1, "collection-icon"], [1, "collection-info"], [1, "collection-name"], [1, "collection-description"], [1, "section-header"], [1, "fa-solid", "fa-code-branch"], [1, "version-content"], ["text", "Loading versions...", "size", "small"], [1, "fa-solid", "fa-info-circle"], [1, "version-list"], [1, "version-item", 3, "selected"], [1, "preview-section"], [1, "version-item", 3, "click"], [1, "version-number"], [1, "version-meta"], [1, "version-comments"], [1, "preview-header"], [1, "fa-solid", "fa-eye"], [1, "preview-error"], [1, "preview-content"], [1, "fa-solid", "fa-exclamation-triangle"], [1, "preview-item"], [1, "preview-json-section"], [1, "preview-json-header", 3, "click"], [1, "fa-solid"], [1, "preview-json-content"], [2, "height", "300px", "width", "100%", 3, "value", "language", "readonly", "lineWrapping", "setup"]], template: function ArtifactLoadDialogComponent_Template(rf, ctx) { if (rf & 1) {
|
|
808
|
+
static ɵfac = /*@__PURE__*/ (() => { let ɵArtifactLoadDialogComponent_BaseFactory; return function ArtifactLoadDialogComponent_Factory(__ngFactoryType__) { return (ɵArtifactLoadDialogComponent_BaseFactory || (ɵArtifactLoadDialogComponent_BaseFactory = i0.ɵɵgetInheritedFactory(ArtifactLoadDialogComponent)))(__ngFactoryType__ || ArtifactLoadDialogComponent); }; })();
|
|
809
|
+
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ArtifactLoadDialogComponent, selectors: [["app-artifact-load-dialog"]], inputs: { Visible: "Visible" }, outputs: { Close: "Close" }, standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 27, vars: 18, consts: [["Title", "Load Component from Artifact", 3, "Close", "Visible", "Width", "MinWidth"], [1, "artifact-load-content"], [1, "filter-panel"], [1, "panel-header"], ["mjButton", "", "variant", "flat", 3, "click"], [1, "fa-solid", "fa-filter"], [1, "filter-count"], [1, "filter-content"], [1, "main-content"], [1, "tabs"], [1, "tab", 3, "click"], [1, "fa-solid", "fa-file-code"], [1, "fa-solid", "fa-folder"], [1, "tab-content"], [1, "artifacts-view"], [1, "collections-view"], [1, "version-panel"], ["mjButton", "", "variant", "primary", 3, "click", "disabled"], [1, "fa-solid", "fa-download"], ["mjButton", "", 3, "click"], [1, "filter-group"], ["type", "text", "placeholder", "Name or description...", 1, "filter-input", 3, "ngModelChange", "input", "ngModel"], [1, "filter-select", 3, "ngModelChange", "change", "ngModel"], ["value", ""], ["value", "Component"], ["value", "Report"], ["value", "Dashboard"], ["type", "text", "placeholder", "Enter user email...", 1, "filter-input", 3, "ngModelChange", "input", "ngModel"], [1, "paging-controls"], ["mjButton", "", 3, "click", "disabled"], [1, "fa-solid", "fa-chevron-left"], [1, "page-info"], [1, "fa-solid", "fa-chevron-right"], [1, "artifacts-list"], [1, "loading-state"], [1, "empty-state"], ["text", "Loading artifacts...", "size", "small"], [1, "fa-solid", "fa-inbox"], [1, "artifact-item", 3, "selected"], [1, "artifact-item", 3, "click"], [1, "artifact-content"], [1, "artifact-main"], [1, "artifact-name"], [1, "artifact-description"], [1, "artifact-meta"], [1, "collections-list"], [1, "collection-artifacts"], ["text", "Loading collections...", "size", "small"], [1, "fa-solid", "fa-folder-open"], [1, "collection-item", 3, "selected"], [1, "collection-item", 3, "click"], [1, "collection-icon"], [1, "collection-info"], [1, "collection-name"], [1, "collection-description"], [1, "section-header"], [1, "fa-solid", "fa-code-branch"], [1, "version-content"], ["text", "Loading versions...", "size", "small"], [1, "fa-solid", "fa-info-circle"], [1, "version-list"], [1, "version-item", 3, "selected"], [1, "preview-section"], [1, "version-item", 3, "click"], [1, "version-number"], [1, "version-meta"], [1, "version-comments"], [1, "preview-header"], [1, "fa-solid", "fa-eye"], [1, "preview-error"], [1, "preview-content"], [1, "fa-solid", "fa-exclamation-triangle"], [1, "preview-item"], [1, "preview-json-section"], [1, "preview-json-header", 3, "click"], [1, "fa-solid"], [1, "preview-json-content"], [2, "height", "300px", "width", "100%", 3, "value", "language", "readonly", "lineWrapping", "setup"]], template: function ArtifactLoadDialogComponent_Template(rf, ctx) { if (rf & 1) {
|
|
776
810
|
i0.ɵɵelementStart(0, "mj-dialog", 0);
|
|
777
811
|
i0.ɵɵlistener("Close", function ArtifactLoadDialogComponent_Template_mj_dialog_Close_0_listener() { return ctx.cancel(); });
|
|
778
812
|
i0.ɵɵelementStart(1, "div", 1)(2, "div", 2)(3, "div", 3);
|
|
@@ -843,5 +877,5 @@ export class ArtifactLoadDialogComponent {
|
|
|
843
877
|
}], Close: [{
|
|
844
878
|
type: Output
|
|
845
879
|
}] }); })();
|
|
846
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(ArtifactLoadDialogComponent, { className: "ArtifactLoadDialogComponent", filePath: "src/ComponentStudio/components/artifact-load-dialog.component.ts", lineNumber:
|
|
880
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(ArtifactLoadDialogComponent, { className: "ArtifactLoadDialogComponent", filePath: "src/ComponentStudio/components/artifact-load-dialog.component.ts", lineNumber: 29 }); })();
|
|
847
881
|
//# sourceMappingURL=artifact-load-dialog.component.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"artifact-load-dialog.component.js","sourceRoot":"","sources":["../../../src/ComponentStudio/components/artifact-load-dialog.component.ts","../../../src/ComponentStudio/components/artifact-load-dialog.component.html"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAqB,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC1F,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAQzD,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,MAAM,CAAC;AACnE,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;;;;;;;;;ICLjC,4BAAM;IAAA,uBAAO;IAAA,iBAAO;;;IAOlB,+BAA2B;IAAA,YAA4B;IAAA,iBAAO;;;IAAnC,cAA4B;IAA5B,mDAA4B;;;;IASvD,AADF,AAFF,8BAA4B,cAEA,YACjB;IAAA,sBAAM;IAAA,iBAAQ;IACrB,iCAI4B;IAHrB,uTAAwB;IACxB,8LAAS,sBAAe,KAAC;IAGlC,AALE,iBAI4B,EACxB;IAIJ,AADF,+BAA0B,YACjB;IAAA,6BAAa;IAAA,iBAAQ;IAC5B,kCAE8B;IAFtB,4UAAkC;IAClC,iMAAU,6BAAsB,KAAC;IAEvC,kCAAiB;IAAA,oCAAmB;IAAA,iBAAS;IAC7C,mCAA0B;IAAA,0BAAS;IAAA,iBAAS;IAC5C,mCAAuB;IAAA,uBAAM;IAAA,iBAAS;IACtC,mCAA0B;IAAA,0BAAS;IAEvC,AADE,AADqC,iBAAS,EACrC,EACL;IAIJ,AADF,gCAA0B,aACjB;IAAA,+BAAc;IAAA,iBAAQ;IAC7B,kCAI4B;IAHrB,sTAAuB;IACvB,+LAAS,wBAAiB,KAAC;IAItC,AADE,AALE,iBAI4B,EACxB,EACF;;;IA5BK,eAAwB;IAAxB,iDAAwB;IASvB,eAAkC;IAAlC,2DAAkC;IAcnC,gBAAuB;IAAvB,gDAAuB;;;IAmD1B,+BAA2B;IACzB,iCAAkE;IACpE,iBAAM;;;IAGN,+BAAyB;IACvB,wBAAiC;IACjC,yBAAG;IAAA,kCAAkB;IACvB,AADuB,iBAAI,EACrB;;;IAcI,+BAAkC;IAChC,YACF;IAAA,iBAAM;;;IADJ,cACF;IADE,wDACF;;;;IAZR,+BAEwC;IAAnC,iPAAS,kCAAwB,KAAC;IAGjC,AADF,AADF,+BAA8B,cACD,cACE;IACzB,wBAAqC;IACrC,4BAAM;IAAA,YAAmB;IAC3B,AAD2B,iBAAO,EAC5B;IACN,kIAA4B;IAK9B,iBAAM;IAEJ,AADF,+BAA2B,UACpB;IAAA,aAAmB;IAAA,iBAAM;IAC9B,4BAAK;IAAA,aAA4C;;IAGvD,AADE,AADE,AADmD,iBAAM,EACnD,EACF,EACF;;;;IAnBD,kEAA+C;IAMtC,eAAmB;IAAnB,sCAAmB;IAE3B,cAIC;IAJD,kDAIC;IAGI,eAAmB;IAAnB,sCAAmB;IACnB,eAA4C;IAA5C,gFAA4C;;;IAlBzD,8HAsBC;;;IAtBD,+BAsBC;;;;IApDH,AADF,AAFF,+BAA4B,cAEG,iBAGW;IAD9B,gMAAS,qBAAc,KAAC;IAE9B,wBAAwC;IAAC,0BAC3C;IAAA,iBAAS;IACT,gCAAwB;IACtB,YAEF;IAAA,iBAAO;IACP,kCAEkC;IAD1B,gMAAS,iBAAU,KAAC;IAE1B,sBAAK;IAAA,wBAAyC;IAElD,AADE,iBAAS,EACL;IAGN,gCAA4B;IAY1B,AANA,AALA,+GAAiB,yFAKkB,8EAM5B;IA0BX,AADE,iBAAM,EACF;;;IArDM,eAA6B;IAA7B,kDAA6B;IAInC,eAEF;IAFE,gIAEF;IAGQ,cAAyB;IAAzB,8CAAyB;IAOjC,eAmCC;IAnCD,iFAmCC;;;IAUC,+BAA2B;IACzB,iCAAoE;IACtE,iBAAM;;;IAGN,+BAAyB;IACvB,wBAAuC;IACvC,yBAAG;IAAA,oCAAoB;IACzB,AADyB,iBAAI,EACvB;;;IAaE,+BAAoC;IAAA,YAA4B;IAAA,iBAAM;;;IAAlC,cAA4B;IAA5B,+CAA4B;;;;IATtE,+BAE4C;IAAvC,kPAAS,sCAA4B,KAAC;IACzC,+BAA6B;IAC3B,wBAAkC;IACpC,iBAAM;IAEJ,AADF,+BAA6B,cACE;IAAA,YAAqB;IAAA,iBAAM;IACxD,iIAA8B;IAIlC,AADE,iBAAM,EACF;;;;IAXD,sEAAmD;IAMvB,eAAqB;IAArB,wCAAqB;IAClD,cAEC;IAFD,oDAEC;;;IAXP,4HAcC;;;IAdD,iCAcC;;;IAWC,+BAAyB;IACvB,wBAAiC;IACjC,yBAAG;IAAA,+CAA+B;IACpC,AADoC,iBAAI,EAClC;;;IAcI,+BAAkC;IAChC,YACF;IAAA,iBAAM;;;IADJ,cACF;IADE,wDACF;;;;IAZR,+BAEwC;IAAnC,8PAAS,kCAAwB,KAAC;IAGjC,AADF,AADF,+BAA8B,cACD,cACE;IACzB,wBAAqC;IACrC,4BAAM;IAAA,YAAmB;IAC3B,AAD2B,iBAAO,EAC5B;IACN,+IAA4B;IAOlC,AADE,AADE,iBAAM,EACF,EACF;;;;IAfD,kEAA+C;IAMtC,eAAmB;IAAnB,sCAAmB;IAE3B,cAIC;IAJD,kDAIC;;;IAdT,0IAkBC;;;IAlBD,yCAkBC;;;IA7BH,AADF,+BAAkC,cACJ;IAC1B,wBAAqC;IACrC,YACF;IAAA,iBAAM;IAON,AANA,2HAAwC,0FAMjC;IAqBT,iBAAM;;;IA7BF,eACF;IADE,gFACF;IACA,cA0BC;IA1BD,iEA0BC;;;IA/DL,AADF,+BAA8B,cACE;IAY5B,AANA,AALA,6GAA4B,uFAKS,4EAM9B;IAiBT,iBAAM;IAEN,6GAA0B;IAmC5B,iBAAM;;;IAjEF,eA2BC;IA3BD,2FA2BC;IAGH,eAkCC;IAlCD,oDAkCC;;;IAeD,+BAA2B;IACzB,iCAAiE;IACnE,iBAAM;;;IAGN,+BAAyB;IACvB,wBAAuC;IACvC,yBAAG;IAAA,qCAAqB;IAC1B,AAD0B,iBAAI,EACxB;;;IAeI,+BAA8B;IAAA,YAAsB;IAAA,iBAAM;;;IAA5B,cAAsB;IAAtB,0CAAsB;;;;IAV1D,+BAEsC;IAAjC,iPAAS,iCAAsB,KAAC;IACnC,+BAA4B;IAC1B,wBAAuC;IACvC,YACF;IAAA,iBAAM;IAEJ,AADF,+BAA0B,UACnB;IAAA,YAA2C;;IAAA,iBAAM;IACtD,iIAAwB;IAI5B,AADE,iBAAM,EACF;;;;IAZD,iEAA6C;IAI9C,eACF;IADE,kEACF;IAEO,eAA2C;IAA3C,+EAA2C;IAChD,eAEC;IAFD,+CAEC;;;IAaH,+BAA2B;IACzB,wBAAgD;IAChD,YACF;IAAA,iBAAM;;;IADJ,eACF;IADE,oDACF;;;IASM,AADF,+BAA0B,aAChB;IAAA,4BAAY;IAAA,iBAAS;IAAC,YAChC;IAAA,iBAAM;;;IAD0B,eAChC;IADgC,+DAChC;;;IAIE,AADF,+BAA0B,aAChB;IAAA,qBAAK;IAAA,iBAAS;IAAC,YACzB;IAAA,iBAAM;;;IADmB,eACzB;IADyB,wDACzB;;;IAIE,AADF,+BAA0B,aAChB;IAAA,0BAAU;IAAA,iBAAS;IAAC,YAC9B;IAAA,iBAAM;;;IADwB,eAC9B;IAD8B,6DAC9B;;;IAOE,AADF,+BAA0B,aAChB;IAAA,6BAAa;IAAA,iBAAS;IAAC,YACjC;IAAA,iBAAM;;;IAD2B,eACjC;IADiC,uEACjC;;;IAUE,+BAAkC;IAChC,qCAOiB;IACnB,iBAAM;;;IAPF,cAA0B;IAI1B,AADA,AADA,AADA,AADA,+CAA0B,oBACP,kBACF,sBACI,kBACJ;;;;IAvCvB,AADF,AADF,+BAA6B,cACD,aAChB;IAAA,qBAAK;IAAA,iBAAS;IAAC,YACzB;IAAA,iBAAM;IACN,uJAA+B;IAK/B,uJAAwB;IAKxB,uJAA6B;IAM3B,AADF,+BAA0B,aAChB;IAAA,0BAAS;IAAA,iBAAS;IAAC,aAC7B;IAAA,iBAAM;IACN,yJAAuE;IAQrE,AADF,gCAAkC,eAC+B;IAA9B,0OAAS,0BAAmB,KAAC;IAC5D,yBAA8G;IAC9G,+BAAQ;IAAA,0CAAyB;IACnC,AADmC,iBAAS,EACtC;IACN,yJAAuB;IAa3B,AADE,iBAAM,EACF;;;IA7CqB,eACzB;IADyB,wDACzB;IACA,cAIC;IAJD,yDAIC;IACD,cAIC;IAJD,kDAIC;IACD,cAIC;IAJD,uDAIC;IAE4B,eAC7B;IAD6B,uEAC7B;IACA,cAIC;IAJD,yGAIC;IAKuB,eAA2C;IAAC,AAA5C,2DAA2C,2CAA0C;IAG3G,eAWC;IAXD,kDAWC;;;IAvDP,AADF,+BAA6B,cACC;IAC1B,wBAA+B;IAAC,yBAClC;IAAA,iBAAM;IAON,AANA,yIAAoB,qHAMI;IAkD1B,iBAAM;;;IAxDJ,eAuDC;IAvDD,uEAuDC;;;IAhFL,+BAA0B;IACxB,4HAeC;IACH,iBAAM;IAGN,2HAAuB;;;IAnBrB,cAeC;IAfD,sCAeC;IAIH,eA8DC;IA9DD,iDA8DC;;;IAlGH,AADF,AADF,+BAA2B,aACC,SACpB;IAAA,wBAAuC;IAAC,yBAAQ;IACtD,AADsD,iBAAK,EACrD;IAEN,+BAA6B;IAY3B,AANA,AALA,6GAAyB,uFAKiB,4EAMnC;IAsFX,AADE,iBAAM,EACF;;;IAjGF,eA+FC;IA/FD,6FA+FC;;AD/RX,MAAM,OAAO,2BAA2B;IAC7B,OAAO,GAAG,KAAK,CAAC;IACf,KAAK,GAAG,IAAI,YAAY,EAAkC,CAAC;IAErE,YAAY;IACZ,SAAS,GAAG,CAAC,CAAC,CAAC,iCAAiC;IAEhD,iBAAiB;IACjB,SAAS,GAAuB,EAAE,CAAC;IACnC,gBAAgB,GAA8B,EAAE,CAAC;IACjD,gBAAgB,GAA4B,IAAI,CAAC;IACjD,eAAe,GAAmC,IAAI,CAAC;IAEvD,mBAAmB;IACnB,WAAW,GAAyB,EAAE,CAAC;IACvC,kBAAkB,GAA8B,IAAI,CAAC;IACrD,mBAAmB,GAAuB,EAAE,CAAC;IAE7C,oBAAoB;IACpB,UAAU,GAAG,EAAE,CAAC;IAChB,oBAAoB,GAAG,EAAE,CAAC;IAC1B,SAAS,GAAG,EAAE,CAAC;IAEf,SAAS;IACT,WAAW,GAAG,CAAC,CAAC;IAChB,QAAQ,GAAG,EAAE,CAAC;IACd,cAAc,GAAG,CAAC,CAAC;IACnB,YAAY,GAAG,KAAK,CAAC;IAErB,WAAW;IACX,SAAS,GAAG,IAAI,CAAC;IACjB,iBAAiB,GAAG,KAAK,CAAC;IAC1B,oBAAoB,GAAG,KAAK,CAAC;IAC7B,sBAAsB,GAAG,KAAK,CAAC;IAE/B,UAAU;IACV,WAAW,GAAyB,IAAI,CAAC;IACzC,YAAY,GAAkB,IAAI,CAAC;IACnC,eAAe,GAAG,KAAK,CAAC;IAEhB,QAAQ,GAAG,IAAI,QAAQ,EAAE,CAAC;IAC1B,QAAQ,GAAG,IAAI,OAAO,EAAQ,CAAC;IAC/B,aAAa,GAAG,IAAI,OAAO,EAAU,CAAC;IAE9C,KAAK,CAAC,QAAQ;QACZ,0BAA0B;QAC1B,IAAI,CAAC,aAAa,CAAC,IAAI,CACrB,YAAY,CAAC,GAAG,CAAC,EACjB,oBAAoB,EAAE,EACtB,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CACzB,CAAC,SAAS,CAAC,GAAG,EAAE;YACf,IAAI,CAAC,eAAe,EAAE,CAAC;QACzB,CAAC,CAAC,CAAC;QAEH,MAAM,OAAO,CAAC,GAAG,CAAC;YAChB,IAAI,CAAC,aAAa,EAAE;YACpB,IAAI,CAAC,eAAe,EAAE;SACvB,CAAC,CAAC;IACL,CAAC;IAED,WAAW;QACT,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;QACrB,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;IAC3B,CAAC;IAED,KAAK,CAAC,aAAa;QACjB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC;YACH,MAAM,EAAE,GAAG,IAAI,OAAO,EAAE,CAAC;YACzB,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC;YAElD,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,OAAO,CAAmB;gBAChD,UAAU,EAAE,eAAe;gBAC3B,WAAW,EAAE,IAAI,CAAC,mBAAmB,EAAE;gBACvC,OAAO,EAAE,qBAAqB;gBAC9B,OAAO,EAAE,IAAI,CAAC,QAAQ;gBACtB,QAAQ,EAAE,QAAQ;gBAClB,UAAU,EAAE,eAAe;aAC5B,CAAC,CAAC;YAEH,IAAI,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;gBACrC,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC;gBAChC,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC,aAAa,IAAI,CAAC,CAAC;gBAChD,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;gBAClE,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,WAAW,GAAG,UAAU,GAAG,CAAC,CAAC;YACxD,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,0BAA0B,EAAE,KAAK,CAAC,CAAC;QACnD,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACzB,CAAC;IACH,CAAC;IAED,KAAK,CAAC,eAAe;QACnB,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC;QACjC,IAAI,CAAC;YACH,MAAM,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,EAAE,CAAC;YACpD,IAAI,CAAC,aAAa,EAAE,CAAC;gBACnB,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;gBACtB,OAAO;YACT,CAAC;YAED,MAAM,EAAE,GAAG,IAAI,OAAO,EAAE,CAAC;YACzB,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,OAAO,CAAqB;gBAClD,UAAU,EAAE,iBAAiB;gBAC7B,WAAW,EAAE,aAAa,aAAa;;4BAEnB,aAAa;UAC/B;gBACF,OAAO,EAAE,MAAM;gBACf,UAAU,EAAE,eAAe;aAC5B,CAAC,CAAC;YAEH,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;gBACnB,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC;YAC1C,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,4BAA4B,EAAE,KAAK,CAAC,CAAC;YACnD,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;QACxB,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,oBAAoB,GAAG,KAAK,CAAC;QACpC,CAAC;IACH,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,UAA8B;QACnD,IAAI,CAAC,kBAAkB,GAAG,UAAU,CAAC;QACrC,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;QAC7B,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;QAC5B,IAAI,CAAC,gBAAgB,GAAG,EAAE,CAAC;QAE3B,oCAAoC;QACpC,IAAI,CAAC;YACH,MAAM,EAAE,GAAG,IAAI,OAAO,EAAE,CAAC;YACzB,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,OAAO,CAAmB;gBAChD,UAAU,EAAE,eAAe;gBAC3B,WAAW,EAAE;;;;qCAIgB,UAAU,CAAC,EAAE;UACxC;gBACF,OAAO,EAAE,MAAM;gBACf,UAAU,EAAE,eAAe;aAC5B,CAAC,CAAC;YAEH,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;gBACnB,IAAI,CAAC,mBAAmB,GAAG,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC;YAClD,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,qCAAqC,EAAE,KAAK,CAAC,CAAC;YAC5D,IAAI,CAAC,mBAAmB,GAAG,EAAE,CAAC;QAChC,CAAC;IACH,CAAC;IAEO,mBAAmB;QACzB,MAAM,OAAO,GAAa,EAAE,CAAC;QAE7B,6CAA6C;QAC7C,IAAI,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAC9B,OAAO,CAAC,IAAI,CAAC,gEAAgE,IAAI,CAAC,oBAAoB,IAAI,CAAC,CAAC;QAC9G,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,IAAI,CAAC,0EAA0E,CAAC,CAAC;QAC3F,CAAC;QAED,gBAAgB;QAChB,IAAI,IAAI,CAAC,UAAU,EAAE,IAAI,EAAE,EAAE,CAAC;YAC5B,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;YAC3C,OAAO,CAAC,IAAI,CAAC,gBAAgB,IAAI,4BAA4B,IAAI,KAAK,CAAC,CAAC;QAC1E,CAAC;QAED,oBAAoB;QACpB,IAAI,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE,CAAC;YAC3B,MAAM,EAAE,GAAG,IAAI,QAAQ,EAAE,CAAC;YAC1B,MAAM,UAAU,GAAG,EAAE,CAAC,YAAY,CAAC,WAAW,CAAC,EAAE,UAAU,IAAI,MAAM,CAAC;YACtE,OAAO,CAAC,IAAI,CAAC,6BAA6B,UAAU,+BAA+B,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACjH,CAAC;QAED,OAAO,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACzD,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,QAA0B;QAC7C,IAAI,CAAC,gBAAgB,GAAG,QAAQ,CAAC;QACjC,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;QAC5B,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QACxB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QAEzB,MAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IACvC,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,UAAkB;QACnC,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;QAC9B,IAAI,CAAC;YACH,MAAM,EAAE,GAAG,IAAI,OAAO,EAAE,CAAC;YACzB,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,OAAO,CAA0B;gBACvD,UAAU,EAAE,uBAAuB;gBACnC,WAAW,EAAE,iBAAiB,UAAU,GAAG;gBAC3C,OAAO,EAAE,oBAAoB;gBAC7B,UAAU,EAAE,eAAe;aAC5B,CAAC,CAAC;YAEH,IAAI,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;gBACrC,IAAI,CAAC,gBAAgB,GAAG,MAAM,CAAC,OAAO,CAAC;gBAEvC,iCAAiC;gBACjC,IAAI,IAAI,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACrC,MAAM,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC;gBACrD,CAAC;YACH,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,yBAAyB,EAAE,KAAK,CAAC,CAAC;YAChD,IAAI,CAAC,gBAAgB,GAAG,EAAE,CAAC;QAC7B,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;QACjC,CAAC;IACH,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,OAAgC;QAClD,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC;QAC/B,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IAClC,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,OAAgC;QAChD,IAAI,CAAC;YACH,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;YAEzB,uCAAuC;YACvC,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;gBACpB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAkB,CAAC;YAClE,CAAC;YACD,2CAA2C;iBACtC,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;gBAC/B,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;gBAEjD,yDAAyD;gBACzD,IAAI,MAAM,CAAC,gBAAgB,IAAI,MAAM,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAClE,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;gBACvD,CAAC;qBAAM,CAAC;oBACN,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC;gBAC5B,CAAC;YACH,CAAC;iBACI,CAAC;gBACJ,IAAI,CAAC,YAAY,GAAG,kCAAkC,CAAC;YACzD,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,YAAY,GAAG,oBAAoB,KAAK,EAAE,CAAC;YAChD,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QAC1B,CAAC;IACH,CAAC;IAED,KAAK,CAAC,eAAe;QACnB,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;QACrB,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;IAC7B,CAAC;IAED,aAAa;QACX,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC3C,CAAC;IAED,oBAAoB;QAClB,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;QAC7B,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;QAC5B,IAAI,CAAC,gBAAgB,GAAG,EAAE,CAAC;QAC3B,IAAI,CAAC,eAAe,EAAE,CAAC;IACzB,CAAC;IAED,KAAK,CAAC,QAAQ;QACZ,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACtB,IAAI,CAAC,WAAW,EAAE,CAAC;YACnB,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;QAC7B,CAAC;IACH,CAAC;IAED,KAAK,CAAC,YAAY;QAChB,IAAI,IAAI,CAAC,WAAW,GAAG,CAAC,EAAE,CAAC;YACzB,IAAI,CAAC,WAAW,EAAE,CAAC;YACnB,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;QAC7B,CAAC;IACH,CAAC;IAED,SAAS;QACP,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;IAED,aAAa;QACX,OAAO,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;IAC9B,CAAC;IAED,aAAa;QACX,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;IACxD,CAAC;IAED,iBAAiB;QACf,IAAI,CAAC,sBAAsB,GAAG,CAAC,IAAI,CAAC,sBAAsB,CAAC;IAC7D,CAAC;IAED,oBAAoB;QAClB,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,IAAI,IAAI,CAAC,UAAU,EAAE,IAAI,EAAE;YAAE,KAAK,EAAE,CAAC;QACrC,IAAI,IAAI,CAAC,oBAAoB;YAAE,KAAK,EAAE,CAAC;QACvC,IAAI,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE;YAAE,KAAK,EAAE,CAAC;QACpC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO;QACL,OAAO,IAAI,CAAC,gBAAgB,KAAK,IAAI;YAC9B,IAAI,CAAC,eAAe,KAAK,IAAI;YAC7B,IAAI,CAAC,WAAW,KAAK,IAAI,CAAC;IACnC,CAAC;IAED,MAAM;QACJ,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC7B,CAAC;IAED,IAAI;QACF,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YAAE,OAAO;QAE5B,MAAM,MAAM,GAAuB;YACjC,IAAI,EAAE,IAAI,CAAC,WAAY;YACvB,UAAU,EAAE,IAAI,CAAC,gBAAiB,CAAC,EAAE;YACrC,SAAS,EAAE,IAAI,CAAC,eAAgB,CAAC,EAAE;YACnC,aAAa,EAAE,IAAI,CAAC,eAAgB,CAAC,aAAa;YAClD,YAAY,EAAE,IAAI,CAAC,gBAAiB,CAAC,IAAI;SAC1C,CAAC;QAEF,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC1B,CAAC;IAED,WAAW,CAAC,KAAa;QACvB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;IACzB,CAAC;IAED,iBAAiB;QACf,OAAO,IAAI,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC;IAC1E,CAAC;IAED,iBAAiB;QACf,IAAI,CAAC,eAAe,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC;IAC/C,CAAC;IAED,cAAc;QACZ,OAAO,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC3E,CAAC;IAED,0FAA0F;IAC1F,kBAAkB,CAAC,QAA0B;QAC3C,OAAO,UAAU,CAAC,IAAI,CAAC,gBAAgB,EAAE,EAAE,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC;IAC5D,CAAC;IAED,6FAA6F;IAC7F,oBAAoB,CAAC,UAA8B;QACjD,OAAO,UAAU,CAAC,IAAI,CAAC,kBAAkB,EAAE,EAAE,EAAE,UAAU,CAAC,EAAE,CAAC,CAAC;IAChE,CAAC;IAED,uFAAuF;IACvF,iBAAiB,CAAC,OAAgC;QAChD,OAAO,UAAU,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC;IAC1D,CAAC;qHApWU,2BAA2B;6DAA3B,2BAA2B;YC3BxC,oCAAoH;YAAnD,2GAAS,YAAQ,IAAC;YAI7E,AADF,AAFF,8BAAmC,aAEmD,aACxD;YACxB,2FAA+B;YAG/B,iCAE2D;YAF1C,wGAAS,uBAAmB,IAAC;YAG5C,uBAAkC;YAClC,8FAA4D;YAIhE,AADE,iBAAS,EACL;YAEN,8FAA+B;YAoCjC,iBAAM;YAMF,AADF,AAFF,8BAA0B,cAEN,kBAGiB;YAAzB,yGAAS,gBAAY,CAAC,CAAC,IAAC;YAC9B,yBAAqC;YAAC,gCACxC;YAAA,iBAAS;YACT,mCAEiC;YAAzB,yGAAS,gBAAY,CAAC,CAAC,IAAC;YAC9B,yBAAkC;YAAC,8BACrC;YACF,AADE,iBAAS,EACL;YAGN,gCAAyB;YAEvB,iGAAuB;YA+DvB,gGAAuB;YAuE3B,AADE,iBAAM,EACF;YAGN,gGAAwB;YA0G1B,iBAAM;YAGJ,AADF,0CAAmB,kBAIe;YADxB,yGAAS,UAAM,IAAC;YAEtB,yBAAoC;YACpC,iCACF;YAAA,iBAAS;YACT,mCAAoC;YAAnB,yGAAS,YAAQ,IAAC;YAAC,uBAAM;YAE9C,AADE,AAD4C,iBAAS,EACjC,EACV;;YA1UuF,AAAf,AAAzE,8BAAgB,eAAuE,iBAAiB;YAGrF,eAAyD;YAAzD,sEAAyD;YAE/E,eAEC;YAFD,sDAEC;YAGO,cAAkD;YAAlD,+DAAkD;YAExD,eAEC;YAFD,uFAEC;YAIL,cAmCC;YAnCD,sDAmCC;YAQS,eAAgC;YAAhC,6CAAgC;YAKhC,eAAgC;YAAhC,6CAAgC;YASxC,eA4DC;YA5DD,+CA4DC;YAGD,cAqEC;YArED,+CAqEC;YAKL,cAyGC;YAzGD,gDAyGC;YAOO,eAAuB;YAAvB,yCAAuB;;;iFDzStB,2BAA2B;cANvC,SAAS;6BACI,KAAK,YACP,0BAA0B;;kBAKnC,KAAK;;kBACL,MAAM;;kFAFI,2BAA2B","sourcesContent":["import { Component, OnInit, OnDestroy, Input, Output, EventEmitter } from '@angular/core';\nimport { RunView, Metadata } from '@memberjunction/core';\nimport {\n MJArtifactEntity,\n MJArtifactVersionEntity,\n MJCollectionEntity,\n MJCollectionArtifactEntity\n} from '@memberjunction/core-entities';\nimport { ComponentSpec } from '@memberjunction/interactive-component-types';\nimport { UUIDsEqual } from '@memberjunction/global';\nimport { Subject, debounceTime, distinctUntilChanged } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nexport interface ArtifactLoadResult {\n spec: ComponentSpec;\n artifactID: string;\n versionID: string;\n versionNumber: number;\n artifactName: string;\n}\n\n@Component({\n standalone: false,\n selector: 'app-artifact-load-dialog',\n templateUrl: './artifact-load-dialog.component.html',\n styleUrl: './artifact-load-dialog.component.css'\n})\nexport class ArtifactLoadDialogComponent implements OnInit, OnDestroy {\n @Input() Visible = false;\n @Output() Close = new EventEmitter<ArtifactLoadResult | undefined>();\n\n // Tab state\n activeTab = 0; // 0 = Artifacts, 1 = Collections\n\n // Artifacts data\n artifacts: MJArtifactEntity[] = [];\n artifactVersions: MJArtifactVersionEntity[] = [];\n selectedArtifact: MJArtifactEntity | null = null;\n selectedVersion: MJArtifactVersionEntity | null = null;\n\n // Collections data\n collections: MJCollectionEntity[] = [];\n selectedCollection: MJCollectionEntity | null = null;\n collectionArtifacts: MJArtifactEntity[] = [];\n\n // Search and filter\n searchTerm = '';\n selectedArtifactType = '';\n userEmail = '';\n\n // Paging\n currentPage = 0;\n pageSize = 25;\n totalArtifacts = 0;\n hasMorePages = false;\n\n // UI state\n isLoading = true;\n isLoadingVersions = false;\n isLoadingCollections = false;\n isFilterPanelCollapsed = false;\n\n // Preview\n previewSpec: ComponentSpec | null = null;\n previewError: string | null = null;\n showJsonPreview = false;\n\n private metadata = new Metadata();\n private destroy$ = new Subject<void>();\n private searchSubject = new Subject<string>();\n\n async ngOnInit() {\n // Setup search debouncing\n this.searchSubject.pipe(\n debounceTime(300),\n distinctUntilChanged(),\n takeUntil(this.destroy$)\n ).subscribe(() => {\n this.filterArtifacts();\n });\n\n await Promise.all([\n this.loadArtifacts(),\n this.loadCollections()\n ]);\n }\n\n ngOnDestroy() {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n async loadArtifacts() {\n this.isLoading = true;\n try {\n const rv = new RunView();\n const startRow = this.currentPage * this.pageSize;\n\n const result = await rv.RunView<MJArtifactEntity>({\n EntityName: 'MJ: Artifacts',\n ExtraFilter: this.buildArtifactFilter(),\n OrderBy: '__mj_UpdatedAt DESC',\n MaxRows: this.pageSize,\n StartRow: startRow,\n ResultType: 'entity_object'\n });\n\n if (result.Success && result.Results) {\n this.artifacts = result.Results;\n this.totalArtifacts = result.TotalRowCount || 0;\n const totalPages = Math.ceil(this.totalArtifacts / this.pageSize);\n this.hasMorePages = this.currentPage < totalPages - 1;\n }\n } catch (error) {\n console.error('Error loading artifacts:', error);\n } finally {\n this.isLoading = false;\n }\n }\n\n async loadCollections() {\n this.isLoadingCollections = true;\n try {\n const currentUserId = this.metadata.CurrentUser?.ID;\n if (!currentUserId) {\n this.collections = [];\n return;\n }\n\n const rv = new RunView();\n const result = await rv.RunView<MJCollectionEntity>({\n EntityName: 'MJ: Collections',\n ExtraFilter: `UserID = '${currentUserId}' OR ID IN (\n SELECT CollectionID FROM __mj.vwCollectionPermissions\n WHERE UserID = '${currentUserId}' AND CanRead = 1\n )`,\n OrderBy: 'Name',\n ResultType: 'entity_object'\n });\n\n if (result.Success) {\n this.collections = result.Results || [];\n }\n } catch (error) {\n console.error('Error loading collections:', error);\n this.collections = [];\n } finally {\n this.isLoadingCollections = false;\n }\n }\n\n async selectCollection(collection: MJCollectionEntity) {\n this.selectedCollection = collection;\n this.selectedArtifact = null;\n this.selectedVersion = null;\n this.artifactVersions = [];\n\n // Load artifacts in this collection\n try {\n const rv = new RunView();\n const result = await rv.RunView<MJArtifactEntity>({\n EntityName: 'MJ: Artifacts',\n ExtraFilter: `ID IN (\n SELECT DISTINCT av.ArtifactID\n FROM __mj.vwArtifactVersions av\n INNER JOIN __mj.vwCollectionArtifacts ca ON ca.ArtifactVersionID = av.ID\n WHERE ca.CollectionID = '${collection.ID}'\n )`,\n OrderBy: 'Name',\n ResultType: 'entity_object'\n });\n\n if (result.Success) {\n this.collectionArtifacts = result.Results || [];\n }\n } catch (error) {\n console.error('Error loading collection artifacts:', error);\n this.collectionArtifacts = [];\n }\n }\n\n private buildArtifactFilter(): string {\n const filters: string[] = [];\n\n // Always filter to Component type by default\n if (this.selectedArtifactType) {\n filters.push(`TypeID IN (SELECT ID FROM __mj.vwArtifactTypes WHERE Name = '${this.selectedArtifactType}')`);\n } else {\n filters.push(`TypeID IN (SELECT ID FROM __mj.vwArtifactTypes WHERE Name = 'Component')`);\n }\n\n // Search filter\n if (this.searchTerm?.trim()) {\n const term = this.searchTerm.toLowerCase();\n filters.push(`(Name LIKE '%${term}%' OR Description LIKE '%${term}%')`);\n }\n\n // User email filter\n if (this.userEmail?.trim()) {\n const md = new Metadata();\n const schemaName = md.EntityByName(\"MJ: Users\")?.SchemaName || \"__mj\";\n filters.push(`UserID IN (SELECT ID FROM ${schemaName}.vwUsers WHERE Email LIKE '%${this.userEmail.trim()}%')`);\n }\n\n return filters.length > 0 ? filters.join(' AND ') : '';\n }\n\n async selectArtifact(artifact: MJArtifactEntity) {\n this.selectedArtifact = artifact;\n this.selectedVersion = null;\n this.previewSpec = null;\n this.previewError = null;\n\n await this.loadVersions(artifact.ID);\n }\n\n async loadVersions(artifactId: string) {\n this.isLoadingVersions = true;\n try {\n const rv = new RunView();\n const result = await rv.RunView<MJArtifactVersionEntity>({\n EntityName: 'MJ: Artifact Versions',\n ExtraFilter: `ArtifactID = '${artifactId}'`,\n OrderBy: 'VersionNumber DESC',\n ResultType: 'entity_object'\n });\n\n if (result.Success && result.Results) {\n this.artifactVersions = result.Results;\n\n // Auto-select the latest version\n if (this.artifactVersions.length > 0) {\n await this.selectVersion(this.artifactVersions[0]);\n }\n }\n } catch (error) {\n console.error('Error loading versions:', error);\n this.artifactVersions = [];\n } finally {\n this.isLoadingVersions = false;\n }\n }\n\n async selectVersion(version: MJArtifactVersionEntity) {\n this.selectedVersion = version;\n await this.loadPreview(version);\n }\n\n async loadPreview(version: MJArtifactVersionEntity) {\n try {\n this.previewError = null;\n\n // Try Content field first (new schema)\n if (version.Content) {\n this.previewSpec = JSON.parse(version.Content) as ComponentSpec;\n }\n // Fallback to Configuration field (legacy)\n else if (version.Configuration) {\n const config = JSON.parse(version.Configuration);\n\n // Extract from SkipAPIAnalysisCompleteResponse if needed\n if (config.componentOptions && config.componentOptions.length > 0) {\n this.previewSpec = config.componentOptions[0].option;\n } else {\n this.previewSpec = config;\n }\n }\n else {\n this.previewError = 'No content found in this version';\n }\n } catch (error) {\n this.previewError = `Failed to parse: ${error}`;\n this.previewSpec = null;\n }\n }\n\n async filterArtifacts() {\n this.currentPage = 0;\n await this.loadArtifacts();\n }\n\n onSearchInput() {\n this.searchSubject.next(this.searchTerm);\n }\n\n onArtifactTypeChange() {\n this.selectedArtifact = null;\n this.selectedVersion = null;\n this.artifactVersions = [];\n this.filterArtifacts();\n }\n\n async nextPage() {\n if (this.hasMorePages) {\n this.currentPage++;\n await this.loadArtifacts();\n }\n }\n\n async previousPage() {\n if (this.currentPage > 0) {\n this.currentPage--;\n await this.loadArtifacts();\n }\n }\n\n canGoNext(): boolean {\n return this.hasMorePages;\n }\n\n canGoPrevious(): boolean {\n return this.currentPage > 0;\n }\n\n getTotalPages(): number {\n return Math.ceil(this.totalArtifacts / this.pageSize);\n }\n\n toggleFilterPanel() {\n this.isFilterPanelCollapsed = !this.isFilterPanelCollapsed;\n }\n\n getActiveFilterCount(): number {\n let count = 0;\n if (this.searchTerm?.trim()) count++;\n if (this.selectedArtifactType) count++;\n if (this.userEmail?.trim()) count++;\n return count;\n }\n\n canLoad(): boolean {\n return this.selectedArtifact !== null &&\n this.selectedVersion !== null &&\n this.previewSpec !== null;\n }\n\n cancel() {\n this.Close.emit(undefined);\n }\n\n load() {\n if (!this.canLoad()) return;\n\n const result: ArtifactLoadResult = {\n spec: this.previewSpec!,\n artifactID: this.selectedArtifact!.ID,\n versionID: this.selectedVersion!.ID,\n versionNumber: this.selectedVersion!.VersionNumber,\n artifactName: this.selectedArtifact!.Name\n };\n\n this.Close.emit(result);\n }\n\n onTabSelect(index: number) {\n this.activeTab = index;\n }\n\n getArtifactsByTab(): MJArtifactEntity[] {\n return this.activeTab === 0 ? this.artifacts : this.collectionArtifacts;\n }\n\n toggleJsonPreview(): void {\n this.showJsonPreview = !this.showJsonPreview;\n }\n\n getPreviewJSON(): string {\n return this.previewSpec ? JSON.stringify(this.previewSpec, null, 2) : '';\n }\n\n /** Case-insensitive UUID check whether an artifact is the currently selected artifact. */\n IsArtifactSelected(artifact: MJArtifactEntity): boolean {\n return UUIDsEqual(this.selectedArtifact?.ID, artifact.ID);\n }\n\n /** Case-insensitive UUID check whether a collection is the currently selected collection. */\n IsCollectionSelected(collection: MJCollectionEntity): boolean {\n return UUIDsEqual(this.selectedCollection?.ID, collection.ID);\n }\n\n /** Case-insensitive UUID check whether a version is the currently selected version. */\n IsVersionSelected(version: MJArtifactVersionEntity): boolean {\n return UUIDsEqual(this.selectedVersion?.ID, version.ID);\n }\n}\n","<mj-dialog [Visible]=\"true\" Title=\"Load Component from Artifact\" (Close)=\"cancel()\" [Width]=\"1200\" [MinWidth]=\"600\">\n <div class=\"artifact-load-content\">\n <!-- Left Filter Panel -->\n <div class=\"filter-panel\" [style.width]=\"isFilterPanelCollapsed ? '40px' : '280px'\">\n <div class=\"panel-header\">\n @if (!isFilterPanelCollapsed) {\n <span>Filters</span>\n }\n <button mjButton (click)=\"toggleFilterPanel()\"\n variant=\"flat\"\n [class.filter-active]=\"getActiveFilterCount() > 0\">\n <i class=\"fa-solid fa-filter\"></i>\n @if (isFilterPanelCollapsed && getActiveFilterCount() > 0) {\n <span class=\"filter-count\">{{ getActiveFilterCount() }}</span>\n }\n </button>\n </div>\n\n @if (!isFilterPanelCollapsed) {\n <div class=\"filter-content\">\n <!-- Search -->\n <div class=\"filter-group\">\n <label>Search</label>\n <input type=\"text\"\n [(ngModel)]=\"searchTerm\"\n (input)=\"onSearchInput()\"\n placeholder=\"Name or description...\"\n class=\"filter-input\">\n </div>\n\n <!-- Artifact Type -->\n <div class=\"filter-group\">\n <label>Artifact Type</label>\n <select [(ngModel)]=\"selectedArtifactType\"\n (change)=\"onArtifactTypeChange()\"\n class=\"filter-select\">\n <option value=\"\">Component (default)</option>\n <option value=\"Component\">Component</option>\n <option value=\"Report\">Report</option>\n <option value=\"Dashboard\">Dashboard</option>\n </select>\n </div>\n\n <!-- User Email -->\n <div class=\"filter-group\">\n <label>Filter by User</label>\n <input type=\"text\"\n [(ngModel)]=\"userEmail\"\n (input)=\"filterArtifacts()\"\n placeholder=\"Enter user email...\"\n class=\"filter-input\">\n </div>\n </div>\n }\n </div>\n\n <!-- Main Content Area -->\n <div class=\"main-content\">\n <!-- Tabs -->\n <div class=\"tabs\">\n <button class=\"tab\"\n [class.active]=\"activeTab === 0\"\n (click)=\"onTabSelect(0)\">\n <i class=\"fa-solid fa-file-code\"></i> All Artifacts\n </button>\n <button class=\"tab\"\n [class.active]=\"activeTab === 1\"\n (click)=\"onTabSelect(1)\">\n <i class=\"fa-solid fa-folder\"></i> Collections\n </button>\n </div>\n\n <!-- Tab Content -->\n <div class=\"tab-content\">\n <!-- Artifacts Tab -->\n @if (activeTab === 0) {\n <div class=\"artifacts-view\">\n <!-- Paging Controls -->\n <div class=\"paging-controls\">\n <button mjButton\n (click)=\"previousPage()\"\n [disabled]=\"!canGoPrevious()\">\n <i class=\"fa-solid fa-chevron-left\"></i> Previous\n </button>\n <span class=\"page-info\">\n Page {{ currentPage + 1 }} of {{ getTotalPages() }}\n ({{ totalArtifacts }} total)\n </span>\n <button mjButton\n (click)=\"nextPage()\"\n [disabled]=\"!canGoNext()\">\n Next <i class=\"fa-solid fa-chevron-right\"></i>\n </button>\n </div>\n\n <!-- Artifacts List -->\n <div class=\"artifacts-list\">\n @if (isLoading) {\n <div class=\"loading-state\">\n <mj-loading text=\"Loading artifacts...\" size=\"small\"></mj-loading>\n </div>\n }\n @else if (artifacts.length === 0) {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-inbox\"></i>\n <p>No artifacts found</p>\n </div>\n }\n @else {\n @for (artifact of artifacts; track artifact.ID) {\n <div class=\"artifact-item\"\n [class.selected]=\"IsArtifactSelected(artifact)\"\n (click)=\"selectArtifact(artifact)\">\n <div class=\"artifact-content\">\n <div class=\"artifact-main\">\n <div class=\"artifact-name\">\n <i class=\"fa-solid fa-file-code\"></i>\n <span>{{ artifact.Name }}</span>\n </div>\n @if (artifact.Description) {\n <div class=\"artifact-description\">\n {{ artifact.Description }}\n </div>\n }\n </div>\n <div class=\"artifact-meta\">\n <div>{{ artifact.Type }}</div>\n <div>{{ artifact.__mj_UpdatedAt | date:'short' }}</div>\n </div>\n </div>\n </div>\n }\n }\n </div>\n </div>\n }\n\n <!-- Collections Tab -->\n @if (activeTab === 1) {\n <div class=\"collections-view\">\n <div class=\"collections-list\">\n @if (isLoadingCollections) {\n <div class=\"loading-state\">\n <mj-loading text=\"Loading collections...\" size=\"small\"></mj-loading>\n </div>\n }\n @else if (collections.length === 0) {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-folder-open\"></i>\n <p>No collections found</p>\n </div>\n }\n @else {\n @for (collection of collections; track collection.ID) {\n <div class=\"collection-item\"\n [class.selected]=\"IsCollectionSelected(collection)\"\n (click)=\"selectCollection(collection)\">\n <div class=\"collection-icon\">\n <i class=\"fa-solid fa-folder\"></i>\n </div>\n <div class=\"collection-info\">\n <div class=\"collection-name\">{{ collection.Name }}</div>\n @if (collection.Description) {\n <div class=\"collection-description\">{{ collection.Description }}</div>\n }\n </div>\n </div>\n }\n }\n </div>\n\n @if (selectedCollection) {\n <div class=\"collection-artifacts\">\n <div class=\"section-header\">\n <i class=\"fa-solid fa-file-code\"></i>\n Artifacts in \"{{ selectedCollection.Name }}\"\n </div>\n @if (collectionArtifacts.length === 0) {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-inbox\"></i>\n <p>No artifacts in this collection</p>\n </div>\n }\n @else {\n @for (artifact of collectionArtifacts; track artifact.ID) {\n <div class=\"artifact-item\"\n [class.selected]=\"IsArtifactSelected(artifact)\"\n (click)=\"selectArtifact(artifact)\">\n <div class=\"artifact-content\">\n <div class=\"artifact-main\">\n <div class=\"artifact-name\">\n <i class=\"fa-solid fa-file-code\"></i>\n <span>{{ artifact.Name }}</span>\n </div>\n @if (artifact.Description) {\n <div class=\"artifact-description\">\n {{ artifact.Description }}\n </div>\n }\n </div>\n </div>\n </div>\n }\n }\n </div>\n }\n </div>\n }\n </div>\n </div>\n\n <!-- Right Version/Preview Panel -->\n @if (selectedArtifact) {\n <div class=\"version-panel\">\n <div class=\"panel-header\">\n <h4><i class=\"fa-solid fa-code-branch\"></i> Versions</h4>\n </div>\n\n <div class=\"version-content\">\n @if (isLoadingVersions) {\n <div class=\"loading-state\">\n <mj-loading text=\"Loading versions...\" size=\"small\"></mj-loading>\n </div>\n }\n @else if (artifactVersions.length === 0) {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-info-circle\"></i>\n <p>No versions available</p>\n </div>\n }\n @else {\n <div class=\"version-list\">\n @for (version of artifactVersions; track version.ID) {\n <div class=\"version-item\"\n [class.selected]=\"IsVersionSelected(version)\"\n (click)=\"selectVersion(version)\">\n <div class=\"version-number\">\n <i class=\"fa-solid fa-code-branch\"></i>\n Version {{ version.VersionNumber }}\n </div>\n <div class=\"version-meta\">\n <div>{{ version.__mj_UpdatedAt | date:'short' }}</div>\n @if (version.Comments) {\n <div class=\"version-comments\">{{ version.Comments }}</div>\n }\n </div>\n </div>\n }\n </div>\n\n <!-- Preview Section -->\n @if (selectedVersion) {\n <div class=\"preview-section\">\n <div class=\"preview-header\">\n <i class=\"fa-solid fa-eye\"></i> Preview\n </div>\n @if (previewError) {\n <div class=\"preview-error\">\n <i class=\"fa-solid fa-exclamation-triangle\"></i>\n {{ previewError }}\n </div>\n }\n @else if (previewSpec) {\n <div class=\"preview-content\">\n <div class=\"preview-item\">\n <strong>Name:</strong> {{ previewSpec.name }}\n </div>\n @if (previewSpec.description) {\n <div class=\"preview-item\">\n <strong>Description:</strong> {{ previewSpec.description }}\n </div>\n }\n @if (previewSpec.type) {\n <div class=\"preview-item\">\n <strong>Type:</strong> {{ previewSpec.type }}\n </div>\n }\n @if (previewSpec.namespace) {\n <div class=\"preview-item\">\n <strong>Namespace:</strong> {{ previewSpec.namespace }}\n </div>\n }\n <div class=\"preview-item\">\n <strong>Has Code:</strong> {{ previewSpec.code ? 'Yes' : 'No' }}\n </div>\n @if (previewSpec.dependencies && previewSpec.dependencies.length > 0) {\n <div class=\"preview-item\">\n <strong>Dependencies:</strong> {{ previewSpec.dependencies.length }}\n </div>\n }\n\n <!-- Full Spec JSON Viewer -->\n <div class=\"preview-json-section\">\n <div class=\"preview-json-header\" (click)=\"toggleJsonPreview()\">\n <i class=\"fa-solid\" [class.fa-chevron-right]=\"!showJsonPreview\" [class.fa-chevron-down]=\"showJsonPreview\"></i>\n <strong>Full Specification (JSON)</strong>\n </div>\n @if (showJsonPreview) {\n <div class=\"preview-json-content\">\n <mj-code-editor\n [value]=\"getPreviewJSON()\"\n [language]=\"'json'\"\n [readonly]=\"true\"\n [lineWrapping]=\"true\"\n [setup]=\"'basic'\"\n style=\"height: 300px; width: 100%;\">\n </mj-code-editor>\n </div>\n }\n </div>\n </div>\n }\n </div>\n }\n }\n </div>\n </div>\n }\n </div>\n\n <mj-dialog-actions>\n <button mjButton\n variant=\"primary\"\n (click)=\"load()\"\n [disabled]=\"!canLoad()\">\n <i class=\"fa-solid fa-download\"></i>\n Load Component\n </button>\n <button mjButton (click)=\"cancel()\">Cancel</button>\n </mj-dialog-actions>\n</mj-dialog>\n"]}
|
|
1
|
+
{"version":3,"file":"artifact-load-dialog.component.js","sourceRoot":"","sources":["../../../src/ComponentStudio/components/artifact-load-dialog.component.ts","../../../src/ComponentStudio/components/artifact-load-dialog.component.html"],"names":[],"mappings":"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","sourcesContent":["import { Component, OnInit, OnDestroy, Input, Output, EventEmitter, ChangeDetectorRef, inject } from '@angular/core';\nimport { RunView } from '@memberjunction/core';\nimport {\n MJArtifactEntity,\n MJArtifactVersionEntity,\n MJCollectionEntity,\n MJCollectionArtifactEntity\n} from '@memberjunction/core-entities';\nimport { ComponentSpec } from '@memberjunction/interactive-component-types';\nimport { UUIDsEqual } from '@memberjunction/global';\nimport { Subject, debounceTime, distinctUntilChanged } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { BaseAngularComponent } from '@memberjunction/ng-base-types';\n\nexport interface ArtifactLoadResult {\n spec: ComponentSpec;\n artifactID: string;\n versionID: string;\n versionNumber: number;\n artifactName: string;\n}\n\n@Component({\n standalone: false,\n selector: 'app-artifact-load-dialog',\n templateUrl: './artifact-load-dialog.component.html',\n styleUrl: './artifact-load-dialog.component.css'\n})\nexport class ArtifactLoadDialogComponent extends BaseAngularComponent implements OnInit, OnDestroy {\n @Input() Visible = false;\n @Output() Close = new EventEmitter<ArtifactLoadResult | undefined>();\n\n // Tab state\n activeTab = 0; // 0 = Artifacts, 1 = Collections\n\n // Artifacts data\n artifacts: MJArtifactEntity[] = [];\n artifactVersions: MJArtifactVersionEntity[] = [];\n selectedArtifact: MJArtifactEntity | null = null;\n selectedVersion: MJArtifactVersionEntity | null = null;\n\n // Collections data\n collections: MJCollectionEntity[] = [];\n selectedCollection: MJCollectionEntity | null = null;\n collectionArtifacts: MJArtifactEntity[] = [];\n\n // Search and filter\n searchTerm = '';\n selectedArtifactType = '';\n userEmail = '';\n\n // Paging\n currentPage = 0;\n pageSize = 25;\n totalArtifacts = 0;\n hasMorePages = false;\n\n // UI state\n isLoading = true;\n isLoadingVersions = false;\n isLoadingCollections = false;\n isFilterPanelCollapsed = false;\n\n // Preview\n previewSpec: ComponentSpec | null = null;\n previewError: string | null = null;\n showJsonPreview = false;\n\n private get metadata() { return this.ProviderToUse; }\n private destroy$ = new Subject<void>();\n private searchSubject = new Subject<string>();\n private cdr = inject(ChangeDetectorRef);\n\n async ngOnInit() {\n // Setup search debouncing\n this.searchSubject.pipe(\n debounceTime(300),\n distinctUntilChanged(),\n takeUntil(this.destroy$)\n ).subscribe(() => {\n this.filterArtifacts();\n });\n\n await Promise.all([\n this.loadArtifacts(),\n this.loadCollections()\n ]);\n }\n\n ngOnDestroy() {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n async loadArtifacts() {\n this.isLoading = true;\n this.cdr.detectChanges();\n try {\n const rv = RunView.FromMetadataProvider(this.ProviderToUse);\n const startRow = this.currentPage * this.pageSize;\n\n const result = await rv.RunView<MJArtifactEntity>({\n EntityName: 'MJ: Artifacts',\n ExtraFilter: this.buildArtifactFilter(),\n OrderBy: '__mj_UpdatedAt DESC',\n MaxRows: this.pageSize,\n StartRow: startRow,\n ResultType: 'entity_object'\n });\n\n if (result.Success && result.Results) {\n this.artifacts = result.Results;\n this.totalArtifacts = result.TotalRowCount || 0;\n const totalPages = Math.ceil(this.totalArtifacts / this.pageSize);\n this.hasMorePages = this.currentPage < totalPages - 1;\n }\n } catch (error) {\n console.error('Error loading artifacts:', error);\n } finally {\n this.isLoading = false;\n this.cdr.detectChanges();\n }\n }\n\n async loadCollections() {\n this.isLoadingCollections = true;\n this.cdr.detectChanges();\n try {\n const currentUserId = this.metadata.CurrentUser?.ID;\n if (!currentUserId) {\n this.collections = [];\n return;\n }\n\n const rv = RunView.FromMetadataProvider(this.ProviderToUse);\n const result = await rv.RunView<MJCollectionEntity>({\n EntityName: 'MJ: Collections',\n ExtraFilter: `UserID = '${currentUserId}' OR ID IN (\n SELECT CollectionID FROM __mj.vwCollectionPermissions\n WHERE UserID = '${currentUserId}' AND CanRead = 1\n )`,\n OrderBy: 'Name',\n ResultType: 'entity_object'\n });\n\n if (result.Success) {\n this.collections = result.Results || [];\n }\n } catch (error) {\n console.error('Error loading collections:', error);\n this.collections = [];\n } finally {\n this.isLoadingCollections = false;\n this.cdr.detectChanges();\n }\n }\n\n async selectCollection(collection: MJCollectionEntity) {\n this.selectedCollection = collection;\n this.selectedArtifact = null;\n this.selectedVersion = null;\n this.artifactVersions = [];\n this.cdr.detectChanges();\n\n // Load artifacts in this collection\n try {\n const rv = RunView.FromMetadataProvider(this.ProviderToUse);\n const result = await rv.RunView<MJArtifactEntity>({\n EntityName: 'MJ: Artifacts',\n ExtraFilter: `ID IN (\n SELECT DISTINCT av.ArtifactID\n FROM __mj.vwArtifactVersions av\n INNER JOIN __mj.vwCollectionArtifacts ca ON ca.ArtifactVersionID = av.ID\n WHERE ca.CollectionID = '${collection.ID}'\n )`,\n OrderBy: 'Name',\n ResultType: 'entity_object'\n });\n\n if (result.Success) {\n this.collectionArtifacts = result.Results || [];\n }\n } catch (error) {\n console.error('Error loading collection artifacts:', error);\n this.collectionArtifacts = [];\n } finally {\n this.cdr.detectChanges();\n }\n }\n\n private buildArtifactFilter(): string {\n const filters: string[] = [];\n\n // Always filter to Component type by default\n if (this.selectedArtifactType) {\n filters.push(`TypeID IN (SELECT ID FROM __mj.vwArtifactTypes WHERE Name = '${this.selectedArtifactType}')`);\n } else {\n filters.push(`TypeID IN (SELECT ID FROM __mj.vwArtifactTypes WHERE Name = 'Component')`);\n }\n\n // Search filter\n if (this.searchTerm?.trim()) {\n const term = this.searchTerm.toLowerCase();\n filters.push(`(Name LIKE '%${term}%' OR Description LIKE '%${term}%')`);\n }\n\n // User email filter\n if (this.userEmail?.trim()) {\n const md = this.ProviderToUse;\n const schemaName = md.EntityByName(\"MJ: Users\")?.SchemaName || \"__mj\";\n filters.push(`UserID IN (SELECT ID FROM ${schemaName}.vwUsers WHERE Email LIKE '%${this.userEmail.trim()}%')`);\n }\n\n return filters.length > 0 ? filters.join(' AND ') : '';\n }\n\n async selectArtifact(artifact: MJArtifactEntity) {\n this.selectedArtifact = artifact;\n this.selectedVersion = null;\n this.previewSpec = null;\n this.previewError = null;\n this.cdr.detectChanges();\n\n await this.loadVersions(artifact.ID);\n }\n\n async loadVersions(artifactId: string) {\n this.isLoadingVersions = true;\n this.cdr.detectChanges();\n try {\n const rv = RunView.FromMetadataProvider(this.ProviderToUse);\n const result = await rv.RunView<MJArtifactVersionEntity>({\n EntityName: 'MJ: Artifact Versions',\n ExtraFilter: `ArtifactID = '${artifactId}'`,\n OrderBy: 'VersionNumber DESC',\n ResultType: 'entity_object'\n });\n\n if (result.Success && result.Results) {\n this.artifactVersions = result.Results;\n\n // Auto-select the latest version\n if (this.artifactVersions.length > 0) {\n await this.selectVersion(this.artifactVersions[0]);\n }\n }\n } catch (error) {\n console.error('Error loading versions:', error);\n this.artifactVersions = [];\n } finally {\n this.isLoadingVersions = false;\n this.cdr.detectChanges();\n }\n }\n\n async selectVersion(version: MJArtifactVersionEntity) {\n this.selectedVersion = version;\n await this.loadPreview(version);\n }\n\n async loadPreview(version: MJArtifactVersionEntity) {\n try {\n this.previewError = null;\n\n const raw = version.Content ?? version.Configuration;\n if (!raw) {\n this.previewSpec = null;\n this.previewError = 'No content found in this version';\n return;\n }\n\n const spec = this.unwrapSpec(JSON.parse(raw));\n if (!spec) {\n this.previewSpec = null;\n this.previewError = 'Artifact content is not a recognized component spec';\n return;\n }\n\n const hasCode = typeof spec.code === 'string' && spec.code.trim().length > 0;\n const hasDeps = Array.isArray(spec.dependencies) && spec.dependencies.length > 0;\n const isRegistryRef = spec.location === 'registry' && !!spec.registry && !!spec.namespace && !!spec.name;\n if (!hasCode && !hasDeps && !isRegistryRef) {\n this.previewSpec = null;\n this.previewError = 'Artifact contains no component code, dependencies, or registry reference';\n return;\n }\n\n this.previewSpec = spec;\n } catch (error) {\n this.previewError = `Failed to parse: ${error}`;\n this.previewSpec = null;\n } finally {\n this.cdr.detectChanges();\n }\n }\n\n /**\n * Skip emits artifact content as a `SkipAPIAnalysisCompleteResponse` envelope whose\n * actual ComponentSpec lives at `componentOptions[0].option`. Older saves may put the\n * envelope in `Configuration`; newer saves put it in `Content`. Either field can also\n * contain a raw spec, so this helper handles both shapes.\n */\n private unwrapSpec(parsed: unknown): ComponentSpec | null {\n if (!parsed || typeof parsed !== 'object') return null;\n const obj = parsed as { componentOptions?: Array<{ option?: ComponentSpec }> };\n if (Array.isArray(obj.componentOptions) && obj.componentOptions.length > 0 && obj.componentOptions[0]?.option) {\n return obj.componentOptions[0].option;\n }\n return parsed as ComponentSpec;\n }\n\n async filterArtifacts() {\n this.currentPage = 0;\n await this.loadArtifacts();\n }\n\n onSearchInput() {\n this.searchSubject.next(this.searchTerm);\n }\n\n onArtifactTypeChange() {\n this.selectedArtifact = null;\n this.selectedVersion = null;\n this.artifactVersions = [];\n this.filterArtifacts();\n }\n\n async nextPage() {\n if (this.hasMorePages) {\n this.currentPage++;\n await this.loadArtifacts();\n }\n }\n\n async previousPage() {\n if (this.currentPage > 0) {\n this.currentPage--;\n await this.loadArtifacts();\n }\n }\n\n canGoNext(): boolean {\n return this.hasMorePages;\n }\n\n canGoPrevious(): boolean {\n return this.currentPage > 0;\n }\n\n getTotalPages(): number {\n return Math.ceil(this.totalArtifacts / this.pageSize);\n }\n\n toggleFilterPanel() {\n this.isFilterPanelCollapsed = !this.isFilterPanelCollapsed;\n }\n\n getActiveFilterCount(): number {\n let count = 0;\n if (this.searchTerm?.trim()) count++;\n if (this.selectedArtifactType) count++;\n if (this.userEmail?.trim()) count++;\n return count;\n }\n\n canLoad(): boolean {\n return this.selectedArtifact !== null &&\n this.selectedVersion !== null &&\n this.previewSpec !== null;\n }\n\n cancel() {\n this.Close.emit(undefined);\n }\n\n load() {\n if (!this.canLoad()) return;\n\n const result: ArtifactLoadResult = {\n spec: this.previewSpec!,\n artifactID: this.selectedArtifact!.ID,\n versionID: this.selectedVersion!.ID,\n versionNumber: this.selectedVersion!.VersionNumber,\n artifactName: this.selectedArtifact!.Name\n };\n\n this.Close.emit(result);\n }\n\n onTabSelect(index: number) {\n this.activeTab = index;\n }\n\n getArtifactsByTab(): MJArtifactEntity[] {\n return this.activeTab === 0 ? this.artifacts : this.collectionArtifacts;\n }\n\n toggleJsonPreview(): void {\n this.showJsonPreview = !this.showJsonPreview;\n }\n\n getPreviewJSON(): string {\n return this.previewSpec ? JSON.stringify(this.previewSpec, null, 2) : '';\n }\n\n /** Case-insensitive UUID check whether an artifact is the currently selected artifact. */\n IsArtifactSelected(artifact: MJArtifactEntity): boolean {\n return UUIDsEqual(this.selectedArtifact?.ID, artifact.ID);\n }\n\n /** Case-insensitive UUID check whether a collection is the currently selected collection. */\n IsCollectionSelected(collection: MJCollectionEntity): boolean {\n return UUIDsEqual(this.selectedCollection?.ID, collection.ID);\n }\n\n /** Case-insensitive UUID check whether a version is the currently selected version. */\n IsVersionSelected(version: MJArtifactVersionEntity): boolean {\n return UUIDsEqual(this.selectedVersion?.ID, version.ID);\n }\n}\n","<mj-dialog [Visible]=\"true\" Title=\"Load Component from Artifact\" (Close)=\"cancel()\" [Width]=\"1200\" [MinWidth]=\"600\">\n <div class=\"artifact-load-content\">\n <!-- Left Filter Panel -->\n <div class=\"filter-panel\" [style.width]=\"isFilterPanelCollapsed ? '40px' : '280px'\">\n <div class=\"panel-header\">\n @if (!isFilterPanelCollapsed) {\n <span>Filters</span>\n }\n <button mjButton (click)=\"toggleFilterPanel()\"\n variant=\"flat\"\n [class.filter-active]=\"getActiveFilterCount() > 0\">\n <i class=\"fa-solid fa-filter\"></i>\n @if (isFilterPanelCollapsed && getActiveFilterCount() > 0) {\n <span class=\"filter-count\">{{ getActiveFilterCount() }}</span>\n }\n </button>\n </div>\n\n @if (!isFilterPanelCollapsed) {\n <div class=\"filter-content\">\n <!-- Search -->\n <div class=\"filter-group\">\n <label>Search</label>\n <input type=\"text\"\n [(ngModel)]=\"searchTerm\"\n (input)=\"onSearchInput()\"\n placeholder=\"Name or description...\"\n class=\"filter-input\">\n </div>\n\n <!-- Artifact Type -->\n <div class=\"filter-group\">\n <label>Artifact Type</label>\n <select [(ngModel)]=\"selectedArtifactType\"\n (change)=\"onArtifactTypeChange()\"\n class=\"filter-select\">\n <option value=\"\">Component (default)</option>\n <option value=\"Component\">Component</option>\n <option value=\"Report\">Report</option>\n <option value=\"Dashboard\">Dashboard</option>\n </select>\n </div>\n\n <!-- User Email -->\n <div class=\"filter-group\">\n <label>Filter by User</label>\n <input type=\"text\"\n [(ngModel)]=\"userEmail\"\n (input)=\"filterArtifacts()\"\n placeholder=\"Enter user email...\"\n class=\"filter-input\">\n </div>\n </div>\n }\n </div>\n\n <!-- Main Content Area -->\n <div class=\"main-content\">\n <!-- Tabs -->\n <div class=\"tabs\">\n <button class=\"tab\"\n [class.active]=\"activeTab === 0\"\n (click)=\"onTabSelect(0)\">\n <i class=\"fa-solid fa-file-code\"></i> All Artifacts\n </button>\n <button class=\"tab\"\n [class.active]=\"activeTab === 1\"\n (click)=\"onTabSelect(1)\">\n <i class=\"fa-solid fa-folder\"></i> Collections\n </button>\n </div>\n\n <!-- Tab Content -->\n <div class=\"tab-content\">\n <!-- Artifacts Tab -->\n @if (activeTab === 0) {\n <div class=\"artifacts-view\">\n <!-- Paging Controls -->\n <div class=\"paging-controls\">\n <button mjButton\n (click)=\"previousPage()\"\n [disabled]=\"!canGoPrevious()\">\n <i class=\"fa-solid fa-chevron-left\"></i> Previous\n </button>\n <span class=\"page-info\">\n Page {{ currentPage + 1 }} of {{ getTotalPages() }}\n ({{ totalArtifacts }} total)\n </span>\n <button mjButton\n (click)=\"nextPage()\"\n [disabled]=\"!canGoNext()\">\n Next <i class=\"fa-solid fa-chevron-right\"></i>\n </button>\n </div>\n\n <!-- Artifacts List -->\n <div class=\"artifacts-list\">\n @if (isLoading) {\n <div class=\"loading-state\">\n <mj-loading text=\"Loading artifacts...\" size=\"small\"></mj-loading>\n </div>\n }\n @else if (artifacts.length === 0) {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-inbox\"></i>\n <p>No artifacts found</p>\n </div>\n }\n @else {\n @for (artifact of artifacts; track artifact.ID) {\n <div class=\"artifact-item\"\n [class.selected]=\"IsArtifactSelected(artifact)\"\n (click)=\"selectArtifact(artifact)\">\n <div class=\"artifact-content\">\n <div class=\"artifact-main\">\n <div class=\"artifact-name\">\n <i class=\"fa-solid fa-file-code\"></i>\n <span>{{ artifact.Name }}</span>\n </div>\n @if (artifact.Description) {\n <div class=\"artifact-description\">\n {{ artifact.Description }}\n </div>\n }\n </div>\n <div class=\"artifact-meta\">\n <div>{{ artifact.Type }}</div>\n <div>{{ artifact.__mj_UpdatedAt | date:'short' }}</div>\n </div>\n </div>\n </div>\n }\n }\n </div>\n </div>\n }\n\n <!-- Collections Tab -->\n @if (activeTab === 1) {\n <div class=\"collections-view\">\n <div class=\"collections-list\">\n @if (isLoadingCollections) {\n <div class=\"loading-state\">\n <mj-loading text=\"Loading collections...\" size=\"small\"></mj-loading>\n </div>\n }\n @else if (collections.length === 0) {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-folder-open\"></i>\n <p>No collections found</p>\n </div>\n }\n @else {\n @for (collection of collections; track collection.ID) {\n <div class=\"collection-item\"\n [class.selected]=\"IsCollectionSelected(collection)\"\n (click)=\"selectCollection(collection)\">\n <div class=\"collection-icon\">\n <i class=\"fa-solid fa-folder\"></i>\n </div>\n <div class=\"collection-info\">\n <div class=\"collection-name\">{{ collection.Name }}</div>\n @if (collection.Description) {\n <div class=\"collection-description\">{{ collection.Description }}</div>\n }\n </div>\n </div>\n }\n }\n </div>\n\n @if (selectedCollection) {\n <div class=\"collection-artifacts\">\n <div class=\"section-header\">\n <i class=\"fa-solid fa-file-code\"></i>\n Artifacts in \"{{ selectedCollection.Name }}\"\n </div>\n @if (collectionArtifacts.length === 0) {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-inbox\"></i>\n <p>No artifacts in this collection</p>\n </div>\n }\n @else {\n @for (artifact of collectionArtifacts; track artifact.ID) {\n <div class=\"artifact-item\"\n [class.selected]=\"IsArtifactSelected(artifact)\"\n (click)=\"selectArtifact(artifact)\">\n <div class=\"artifact-content\">\n <div class=\"artifact-main\">\n <div class=\"artifact-name\">\n <i class=\"fa-solid fa-file-code\"></i>\n <span>{{ artifact.Name }}</span>\n </div>\n @if (artifact.Description) {\n <div class=\"artifact-description\">\n {{ artifact.Description }}\n </div>\n }\n </div>\n </div>\n </div>\n }\n }\n </div>\n }\n </div>\n }\n </div>\n </div>\n\n <!-- Right Version/Preview Panel -->\n @if (selectedArtifact) {\n <div class=\"version-panel\">\n <div class=\"panel-header\">\n <h4><i class=\"fa-solid fa-code-branch\"></i> Versions</h4>\n </div>\n\n <div class=\"version-content\">\n @if (isLoadingVersions) {\n <div class=\"loading-state\">\n <mj-loading text=\"Loading versions...\" size=\"small\"></mj-loading>\n </div>\n }\n @else if (artifactVersions.length === 0) {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-info-circle\"></i>\n <p>No versions available</p>\n </div>\n }\n @else {\n <div class=\"version-list\">\n @for (version of artifactVersions; track version.ID) {\n <div class=\"version-item\"\n [class.selected]=\"IsVersionSelected(version)\"\n (click)=\"selectVersion(version)\">\n <div class=\"version-number\">\n <i class=\"fa-solid fa-code-branch\"></i>\n Version {{ version.VersionNumber }}\n </div>\n <div class=\"version-meta\">\n <div>{{ version.__mj_UpdatedAt | date:'short' }}</div>\n @if (version.Comments) {\n <div class=\"version-comments\">{{ version.Comments }}</div>\n }\n </div>\n </div>\n }\n </div>\n\n <!-- Preview Section -->\n @if (selectedVersion) {\n <div class=\"preview-section\">\n <div class=\"preview-header\">\n <i class=\"fa-solid fa-eye\"></i> Preview\n </div>\n @if (previewError) {\n <div class=\"preview-error\">\n <i class=\"fa-solid fa-exclamation-triangle\"></i>\n {{ previewError }}\n </div>\n }\n @else if (previewSpec) {\n <div class=\"preview-content\">\n <div class=\"preview-item\">\n <strong>Name:</strong> {{ previewSpec.name }}\n </div>\n @if (previewSpec.description) {\n <div class=\"preview-item\">\n <strong>Description:</strong> {{ previewSpec.description }}\n </div>\n }\n @if (previewSpec.type) {\n <div class=\"preview-item\">\n <strong>Type:</strong> {{ previewSpec.type }}\n </div>\n }\n @if (previewSpec.namespace) {\n <div class=\"preview-item\">\n <strong>Namespace:</strong> {{ previewSpec.namespace }}\n </div>\n }\n <div class=\"preview-item\">\n <strong>Has Code:</strong> {{ previewSpec.code ? 'Yes' : 'No' }}\n </div>\n @if (previewSpec.dependencies && previewSpec.dependencies.length > 0) {\n <div class=\"preview-item\">\n <strong>Dependencies:</strong> {{ previewSpec.dependencies.length }}\n </div>\n }\n\n <!-- Full Spec JSON Viewer -->\n <div class=\"preview-json-section\">\n <div class=\"preview-json-header\" (click)=\"toggleJsonPreview()\">\n <i class=\"fa-solid\" [class.fa-chevron-right]=\"!showJsonPreview\" [class.fa-chevron-down]=\"showJsonPreview\"></i>\n <strong>Full Specification (JSON)</strong>\n </div>\n @if (showJsonPreview) {\n <div class=\"preview-json-content\">\n <mj-code-editor\n [value]=\"getPreviewJSON()\"\n [language]=\"'json'\"\n [readonly]=\"true\"\n [lineWrapping]=\"true\"\n [setup]=\"'basic'\"\n style=\"height: 300px; width: 100%;\">\n </mj-code-editor>\n </div>\n }\n </div>\n </div>\n }\n </div>\n }\n }\n </div>\n </div>\n }\n </div>\n\n <mj-dialog-actions>\n <button mjButton\n variant=\"primary\"\n (click)=\"load()\"\n [disabled]=\"!canLoad()\">\n <i class=\"fa-solid fa-download\"></i>\n Load Component\n </button>\n <button mjButton (click)=\"cancel()\">Cancel</button>\n </mj-dialog-actions>\n</mj-dialog>\n"]}
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
import { OnInit, OnDestroy, EventEmitter } from '@angular/core';
|
|
2
2
|
import { MJArtifactEntity, MJArtifactVersionEntity } from '@memberjunction/core-entities';
|
|
3
|
+
import { BaseAngularComponent } from '@memberjunction/ng-base-types';
|
|
3
4
|
import * as i0 from "@angular/core";
|
|
4
5
|
export interface ArtifactSelectionResult {
|
|
5
6
|
artifact: MJArtifactEntity;
|
|
6
7
|
action: 'new-version' | 'update-version';
|
|
7
8
|
versionToUpdate?: MJArtifactVersionEntity;
|
|
8
9
|
}
|
|
9
|
-
export declare class ArtifactSelectionDialogComponent implements OnInit, OnDestroy {
|
|
10
|
+
export declare class ArtifactSelectionDialogComponent extends BaseAngularComponent implements OnInit, OnDestroy {
|
|
10
11
|
Visible: boolean;
|
|
11
12
|
Close: EventEmitter<ArtifactSelectionResult | undefined>;
|
|
12
13
|
artifacts: MJArtifactEntity[];
|
|
@@ -26,11 +27,12 @@ export declare class ArtifactSelectionDialogComponent implements OnInit, OnDestr
|
|
|
26
27
|
versionAction: 'new' | 'update';
|
|
27
28
|
newArtifactName: string;
|
|
28
29
|
newArtifactDescription: string;
|
|
29
|
-
private metadata;
|
|
30
|
+
private get metadata();
|
|
30
31
|
private currentUser;
|
|
31
32
|
private destroy$;
|
|
32
33
|
private searchSubject;
|
|
33
34
|
private notificationService;
|
|
35
|
+
private cdr;
|
|
34
36
|
ngOnInit(): Promise<void>;
|
|
35
37
|
ngOnDestroy(): void;
|
|
36
38
|
loadArtifacts(): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"artifact-selection-dialog.component.d.ts","sourceRoot":"","sources":["../../../src/ComponentStudio/components/artifact-selection-dialog.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,MAAM,EAAE,SAAS,EAAiB,YAAY,
|
|
1
|
+
{"version":3,"file":"artifact-selection-dialog.component.d.ts","sourceRoot":"","sources":["../../../src/ComponentStudio/components/artifact-selection-dialog.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,MAAM,EAAE,SAAS,EAAiB,YAAY,EAA6B,MAAM,eAAe,CAAC;AAErH,OAAO,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,MAAM,+BAA+B,CAAC;AAK1F,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;;AAErE,MAAM,WAAW,uBAAuB;IACtC,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,MAAM,EAAE,aAAa,GAAG,gBAAgB,CAAC;IACzC,eAAe,CAAC,EAAE,uBAAuB,CAAC;CAC3C;AAED,qBAMa,gCAAiC,SAAQ,oBAAqB,YAAW,MAAM,EAAE,SAAS;IAC5F,OAAO,UAAS;IACf,KAAK,oDAA2D;IAG1E,SAAS,EAAE,gBAAgB,EAAE,CAAM;IACnC,gBAAgB,EAAE,uBAAuB,EAAE,CAAM;IAGjD,WAAW,SAAK;IAChB,QAAQ,SAAM;IACd,cAAc,SAAK;IACnB,YAAY,UAAS;IAGrB,SAAS,UAAQ;IACjB,UAAU,SAAM;IAChB,SAAS,SAAM;IACf,oBAAoB,SAAM;IAC1B,mBAAmB,UAAS;IAC5B,sBAAsB,UAAS;IAI/B,gBAAgB,EAAE,gBAAgB,GAAG,IAAI,CAAQ;IACjD,eAAe,EAAE,uBAAuB,GAAG,IAAI,CAAQ;IACvD,aAAa,EAAE,KAAK,GAAG,QAAQ,CAAS;IAGxC,eAAe,SAAM;IACrB,sBAAsB,SAAM;IAE5B,OAAO,KAAK,QAAQ,GAAiC;IACrD,OAAO,CAAC,WAAW,CAAyB;IAC5C,OAAO,CAAC,QAAQ,CAAuB;IACvC,OAAO,CAAC,aAAa,CAAyB;IAE9C,OAAO,CAAC,mBAAmB,CAAiC;IAC5D,OAAO,CAAC,GAAG,CAA6B;IAElC,QAAQ;IAad,WAAW;IAKL,aAAa;IAmCnB,OAAO,CAAC,eAAe,CAAgC;IAC1C,eAAe;IA+B5B,eAAe;IAMT,cAAc,CAAC,QAAQ,EAAE,gBAAgB;IAWzC,YAAY,CAAC,UAAU,EAAE,MAAM;IAqBrC,oBAAoB,IAAI,MAAM;IAMxB,QAAQ;IAOR,YAAY;IAOlB,SAAS,IAAI,OAAO;IAIpB,aAAa,IAAI,OAAO;IAIxB,aAAa,IAAI,MAAM;IAIvB,iBAAiB;IAIjB,aAAa;IAIb,oBAAoB;IAQpB,oBAAoB,IAAI,MAAM;IAQ9B,OAAO,IAAI,OAAO;IAclB,iBAAiB,IAAI,MAAM;IAY3B,MAAM;IAIA,IAAI;YAqCI,iBAAiB;IAqD/B,0FAA0F;IAC1F,kBAAkB,CAAC,QAAQ,EAAE,gBAAgB,GAAG,OAAO;IAIvD,uFAAuF;IACvF,iBAAiB,CAAC,OAAO,EAAE,uBAAuB,GAAG,OAAO;yCAzVjD,gCAAgC;2CAAhC,gCAAgC;CA4V5C"}
|