@memberjunction/ng-dashboards 5.34.1 → 5.35.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 +51 -0
- package/dist/AI/components/agents/agent-configuration.component.d.ts.map +1 -1
- package/dist/AI/components/agents/agent-configuration.component.js +399 -292
- package/dist/AI/components/agents/agent-configuration.component.js.map +1 -1
- package/dist/AI/components/analytics/agent-runs/agent-run-analysis.component.d.ts +8 -2
- 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 +87 -85
- package/dist/AI/components/analytics/agent-runs/agent-run-analysis.component.js.map +1 -1
- package/dist/AI/components/analytics/ai-analytics-resource.component.d.ts +75 -0
- package/dist/AI/components/analytics/ai-analytics-resource.component.d.ts.map +1 -1
- package/dist/AI/components/analytics/ai-analytics-resource.component.js +400 -89
- package/dist/AI/components/analytics/ai-analytics-resource.component.js.map +1 -1
- package/dist/AI/components/analytics/analytics-filter-bar.component.d.ts +5 -0
- package/dist/AI/components/analytics/analytics-filter-bar.component.d.ts.map +1 -1
- package/dist/AI/components/analytics/analytics-filter-bar.component.js +184 -135
- package/dist/AI/components/analytics/analytics-filter-bar.component.js.map +1 -1
- package/dist/AI/components/analytics/cost-budget/cost-budget.component.d.ts +8 -2
- 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 +104 -103
- 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 +8 -2
- 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 +76 -74
- 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.map +1 -1
- package/dist/AI/components/analytics/executive-summary/executive-summary.component.js +67 -87
- 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 +12 -19
- 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 +96 -203
- 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.map +1 -1
- package/dist/AI/components/analytics/prompt-runs/prompt-run-analysis.component.js +110 -126
- 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.map +1 -1
- package/dist/AI/components/analytics/usage-patterns/usage-patterns.component.js +61 -77
- package/dist/AI/components/analytics/usage-patterns/usage-patterns.component.js.map +1 -1
- package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.js +990 -992
- package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.js.map +1 -1
- package/dist/AI/components/duplicates/duplicate-detection-resource.component.d.ts +6 -3
- package/dist/AI/components/duplicates/duplicate-detection-resource.component.d.ts.map +1 -1
- package/dist/AI/components/duplicates/duplicate-detection-resource.component.js +493 -490
- package/dist/AI/components/duplicates/duplicate-detection-resource.component.js.map +1 -1
- package/dist/AI/components/models/model-management.component.d.ts +17 -0
- package/dist/AI/components/models/model-management.component.d.ts.map +1 -1
- package/dist/AI/components/models/model-management.component.js +370 -425
- package/dist/AI/components/models/model-management.component.js.map +1 -1
- package/dist/AI/components/prompts/prompt-management.component.d.ts +17 -0
- package/dist/AI/components/prompts/prompt-management.component.d.ts.map +1 -1
- package/dist/AI/components/prompts/prompt-management.component.js +317 -357
- package/dist/AI/components/prompts/prompt-management.component.js.map +1 -1
- package/dist/AI/components/requests/agent-requests-resource.component.d.ts +11 -0
- package/dist/AI/components/requests/agent-requests-resource.component.d.ts.map +1 -1
- package/dist/AI/components/requests/agent-requests-resource.component.js +170 -175
- package/dist/AI/components/requests/agent-requests-resource.component.js.map +1 -1
- package/dist/AI/components/system/system-configuration.component.d.ts +19 -0
- package/dist/AI/components/system/system-configuration.component.d.ts.map +1 -1
- package/dist/AI/components/system/system-configuration.component.js +403 -362
- package/dist/AI/components/system/system-configuration.component.js.map +1 -1
- package/dist/AI/components/tags/tags-resource.component.js +781 -783
- package/dist/AI/components/tags/tags-resource.component.js.map +1 -1
- package/dist/AI/components/vectors/vector-management-resource.component.d.ts +8 -3
- package/dist/AI/components/vectors/vector-management-resource.component.d.ts.map +1 -1
- package/dist/AI/components/vectors/vector-management-resource.component.js +547 -521
- package/dist/AI/components/vectors/vector-management-resource.component.js.map +1 -1
- package/dist/Actions/components/actions-overview.component.d.ts +6 -0
- package/dist/Actions/components/actions-overview.component.d.ts.map +1 -1
- package/dist/Actions/components/actions-overview.component.js +79 -30
- package/dist/Actions/components/actions-overview.component.js.map +1 -1
- package/dist/Actions/components/execution-monitoring.component.d.ts +9 -3
- package/dist/Actions/components/execution-monitoring.component.d.ts.map +1 -1
- package/dist/Actions/components/execution-monitoring.component.js +196 -142
- package/dist/Actions/components/execution-monitoring.component.js.map +1 -1
- package/dist/Actions/components/explorer/action-explorer.component.d.ts +41 -1
- package/dist/Actions/components/explorer/action-explorer.component.d.ts.map +1 -1
- package/dist/Actions/components/explorer/action-explorer.component.js +388 -94
- package/dist/Actions/components/explorer/action-explorer.component.js.map +1 -1
- package/dist/Actions/components/explorer/index.d.ts +0 -1
- package/dist/Actions/components/explorer/index.d.ts.map +1 -1
- package/dist/Actions/components/explorer/index.js +0 -1
- package/dist/Actions/components/explorer/index.js.map +1 -1
- package/dist/Admin/admin-data-schema.component.js +32 -40
- package/dist/Admin/admin-data-schema.component.js.map +1 -1
- package/dist/Admin/admin-dev-tools-resource.component.js +32 -40
- package/dist/Admin/admin-dev-tools-resource.component.js.map +1 -1
- package/dist/Admin/admin-identity-access.component.js +32 -40
- package/dist/Admin/admin-identity-access.component.js.map +1 -1
- package/dist/Admin/admin-monitoring.component.js +32 -40
- package/dist/Admin/admin-monitoring.component.js.map +1 -1
- package/dist/ApplicationRoles/application-roles-resource.component.js +76 -82
- package/dist/ApplicationRoles/application-roles-resource.component.js.map +1 -1
- package/dist/Archiving/components/archive-config-resource.component.d.ts.map +1 -1
- package/dist/Archiving/components/archive-config-resource.component.js +24 -5
- package/dist/Archiving/components/archive-config-resource.component.js.map +1 -1
- package/dist/Archiving/components/archive-runs-resource.component.d.ts.map +1 -1
- package/dist/Archiving/components/archive-runs-resource.component.js +24 -5
- package/dist/Archiving/components/archive-runs-resource.component.js.map +1 -1
- package/dist/Communication/communication-logs-resource.component.d.ts +1 -1
- package/dist/Communication/communication-logs-resource.component.d.ts.map +1 -1
- package/dist/Communication/communication-logs-resource.component.js +80 -99
- package/dist/Communication/communication-logs-resource.component.js.map +1 -1
- package/dist/Communication/communication-monitor-resource.component.d.ts.map +1 -1
- package/dist/Communication/communication-monitor-resource.component.js +127 -106
- package/dist/Communication/communication-monitor-resource.component.js.map +1 -1
- package/dist/Communication/communication-providers-resource.component.d.ts.map +1 -1
- package/dist/Communication/communication-providers-resource.component.js +44 -45
- package/dist/Communication/communication-providers-resource.component.js.map +1 -1
- package/dist/Communication/communication-runs-resource.component.d.ts.map +1 -1
- package/dist/Communication/communication-runs-resource.component.js +60 -58
- package/dist/Communication/communication-runs-resource.component.js.map +1 -1
- package/dist/Communication/communication-templates-resource.component.d.ts +1 -1
- package/dist/Communication/communication-templates-resource.component.d.ts.map +1 -1
- package/dist/Communication/communication-templates-resource.component.js +139 -162
- package/dist/Communication/communication-templates-resource.component.js.map +1 -1
- package/dist/Credentials/components/credentials-audit-resource.component.d.ts +7 -0
- package/dist/Credentials/components/credentials-audit-resource.component.d.ts.map +1 -1
- package/dist/Credentials/components/credentials-audit-resource.component.js +310 -297
- package/dist/Credentials/components/credentials-audit-resource.component.js.map +1 -1
- package/dist/Credentials/components/credentials-categories-resource.component.js +245 -266
- package/dist/Credentials/components/credentials-categories-resource.component.js.map +1 -1
- package/dist/Credentials/components/credentials-list-resource.component.d.ts +7 -0
- package/dist/Credentials/components/credentials-list-resource.component.d.ts.map +1 -1
- package/dist/Credentials/components/credentials-list-resource.component.js +381 -399
- package/dist/Credentials/components/credentials-list-resource.component.js.map +1 -1
- package/dist/Credentials/components/credentials-overview-resource.component.js +222 -228
- package/dist/Credentials/components/credentials-overview-resource.component.js.map +1 -1
- package/dist/Credentials/components/credentials-types-resource.component.d.ts +6 -0
- package/dist/Credentials/components/credentials-types-resource.component.d.ts.map +1 -1
- package/dist/Credentials/components/credentials-types-resource.component.js +294 -305
- package/dist/Credentials/components/credentials-types-resource.component.js.map +1 -1
- package/dist/DatabaseDesigner/components/database-designer-dashboard.component.d.ts +8 -0
- package/dist/DatabaseDesigner/components/database-designer-dashboard.component.d.ts.map +1 -1
- package/dist/DatabaseDesigner/components/database-designer-dashboard.component.js +21 -0
- package/dist/DatabaseDesigner/components/database-designer-dashboard.component.js.map +1 -1
- package/dist/DatabaseDesigner/components/entity-list.component.js +147 -160
- package/dist/DatabaseDesigner/components/entity-list.component.js.map +1 -1
- package/dist/DatabaseDesigner/database-designer-dashboards.module.d.ts +1 -1
- package/dist/DatabaseDesigner/database-designer-dashboards.module.d.ts.map +1 -1
- package/dist/DatabaseDesigner/database-designer-dashboards.module.js +19 -1
- package/dist/DatabaseDesigner/database-designer-dashboards.module.js.map +1 -1
- package/dist/EntityAdmin/entity-admin-dashboard.component.js +20 -16
- package/dist/EntityAdmin/entity-admin-dashboard.component.js.map +1 -1
- package/dist/Home/home-dashboard.component.d.ts +6 -0
- package/dist/Home/home-dashboard.component.d.ts.map +1 -1
- package/dist/Home/home-dashboard.component.js +521 -485
- package/dist/Home/home-dashboard.component.js.map +1 -1
- package/dist/Integration/components/activity/activity.component.d.ts +8 -0
- package/dist/Integration/components/activity/activity.component.d.ts.map +1 -1
- package/dist/Integration/components/activity/activity.component.js +309 -318
- package/dist/Integration/components/activity/activity.component.js.map +1 -1
- package/dist/Integration/components/connections/connections.component.js +866 -847
- package/dist/Integration/components/connections/connections.component.js.map +1 -1
- package/dist/Integration/components/mapping-workspace/mapping-workspace.component.js +234 -233
- package/dist/Integration/components/mapping-workspace/mapping-workspace.component.js.map +1 -1
- package/dist/Integration/components/overview/overview.component.js +182 -163
- package/dist/Integration/components/overview/overview.component.js.map +1 -1
- package/dist/Integration/components/pipelines/pipelines.component.d.ts +2 -0
- package/dist/Integration/components/pipelines/pipelines.component.d.ts.map +1 -1
- package/dist/Integration/components/pipelines/pipelines.component.js +610 -606
- package/dist/Integration/components/pipelines/pipelines.component.js.map +1 -1
- package/dist/Integration/components/schedules/schedules.component.js +241 -241
- package/dist/Integration/components/schedules/schedules.component.js.map +1 -1
- package/dist/Integration/integration.module.d.ts +1 -1
- package/dist/Integration/integration.module.d.ts.map +1 -1
- package/dist/Integration/integration.module.js +28 -1
- package/dist/Integration/integration.module.js.map +1 -1
- package/dist/KnowledgeHub/components/analytics/analytics-resource.component.js +673 -674
- package/dist/KnowledgeHub/components/analytics/analytics-resource.component.js.map +1 -1
- package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.js +54 -51
- package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.js.map +1 -1
- package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.js +745 -703
- package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.js.map +1 -1
- package/dist/KnowledgeHub/components/scheduling/scheduling-resource.component.d.ts +12 -1
- package/dist/KnowledgeHub/components/scheduling/scheduling-resource.component.d.ts.map +1 -1
- package/dist/KnowledgeHub/components/scheduling/scheduling-resource.component.js +191 -120
- package/dist/KnowledgeHub/components/scheduling/scheduling-resource.component.js.map +1 -1
- package/dist/Lists/components/lists-browse-resource.component.d.ts +18 -1
- package/dist/Lists/components/lists-browse-resource.component.d.ts.map +1 -1
- package/dist/Lists/components/lists-browse-resource.component.js +486 -532
- package/dist/Lists/components/lists-browse-resource.component.js.map +1 -1
- package/dist/Lists/components/lists-categories-resource.component.d.ts.map +1 -1
- package/dist/Lists/components/lists-categories-resource.component.js +152 -160
- package/dist/Lists/components/lists-categories-resource.component.js.map +1 -1
- package/dist/Lists/components/lists-my-lists-resource.component.d.ts.map +1 -1
- package/dist/Lists/components/lists-my-lists-resource.component.js +302 -319
- 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 +234 -246
- package/dist/Lists/components/lists-operations-resource.component.js.map +1 -1
- package/dist/MCP/mcp-dashboard.component.d.ts +20 -0
- package/dist/MCP/mcp-dashboard.component.d.ts.map +1 -1
- package/dist/MCP/mcp-dashboard.component.js +1248 -1338
- package/dist/MCP/mcp-dashboard.component.js.map +1 -1
- package/dist/MCP/mcp.module.d.ts +1 -1
- package/dist/MCP/mcp.module.d.ts.map +1 -1
- package/dist/MCP/mcp.module.js +34 -1
- package/dist/MCP/mcp.module.js.map +1 -1
- package/dist/Permissions/audit-log-resource.component.js +76 -85
- package/dist/Permissions/audit-log-resource.component.js.map +1 -1
- package/dist/Permissions/resource-access-resource.component.js +64 -69
- package/dist/Permissions/resource-access-resource.component.js.map +1 -1
- package/dist/Permissions/user-access-resource.component.js +63 -74
- package/dist/Permissions/user-access-resource.component.js.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/components/scheduling-activity-resource.component.d.ts +2 -1
- package/dist/Scheduling/components/scheduling-activity-resource.component.d.ts.map +1 -1
- package/dist/Scheduling/components/scheduling-activity-resource.component.js +11 -12
- package/dist/Scheduling/components/scheduling-activity-resource.component.js.map +1 -1
- package/dist/Scheduling/components/scheduling-activity.component.d.ts +9 -1
- package/dist/Scheduling/components/scheduling-activity.component.d.ts.map +1 -1
- package/dist/Scheduling/components/scheduling-activity.component.js +250 -197
- package/dist/Scheduling/components/scheduling-activity.component.js.map +1 -1
- package/dist/Scheduling/components/scheduling-jobs-resource.component.d.ts +2 -1
- package/dist/Scheduling/components/scheduling-jobs-resource.component.d.ts.map +1 -1
- package/dist/Scheduling/components/scheduling-jobs-resource.component.js +11 -12
- package/dist/Scheduling/components/scheduling-jobs-resource.component.js.map +1 -1
- package/dist/Scheduling/components/scheduling-jobs.component.d.ts +9 -1
- package/dist/Scheduling/components/scheduling-jobs.component.d.ts.map +1 -1
- package/dist/Scheduling/components/scheduling-jobs.component.js +203 -147
- package/dist/Scheduling/components/scheduling-jobs.component.js.map +1 -1
- package/dist/Scheduling/components/scheduling-overview-resource.component.d.ts +2 -1
- package/dist/Scheduling/components/scheduling-overview-resource.component.d.ts.map +1 -1
- package/dist/Scheduling/components/scheduling-overview-resource.component.js +11 -12
- package/dist/Scheduling/components/scheduling-overview-resource.component.js.map +1 -1
- package/dist/Scheduling/components/scheduling-overview.component.d.ts +3 -1
- package/dist/Scheduling/components/scheduling-overview.component.d.ts.map +1 -1
- package/dist/Scheduling/components/scheduling-overview.component.js +224 -190
- package/dist/Scheduling/components/scheduling-overview.component.js.map +1 -1
- package/dist/Scheduling/scheduling-dashboard.component.d.ts +19 -6
- package/dist/Scheduling/scheduling-dashboard.component.d.ts.map +1 -1
- package/dist/Scheduling/scheduling-dashboard.component.js +262 -104
- package/dist/Scheduling/scheduling-dashboard.component.js.map +1 -1
- package/dist/SystemDiagnostics/system-diagnostics.component.js +773 -783
- package/dist/SystemDiagnostics/system-diagnostics.component.js.map +1 -1
- package/dist/Testing/components/testing-analytics-resource.component.d.ts +2 -1
- package/dist/Testing/components/testing-analytics-resource.component.d.ts.map +1 -1
- package/dist/Testing/components/testing-analytics-resource.component.js +7 -14
- package/dist/Testing/components/testing-analytics-resource.component.js.map +1 -1
- package/dist/Testing/components/testing-analytics.component.d.ts +3 -1
- package/dist/Testing/components/testing-analytics.component.d.ts.map +1 -1
- package/dist/Testing/components/testing-analytics.component.js +420 -393
- package/dist/Testing/components/testing-analytics.component.js.map +1 -1
- package/dist/Testing/components/testing-dashboard-tab-resource.component.d.ts +2 -1
- package/dist/Testing/components/testing-dashboard-tab-resource.component.d.ts.map +1 -1
- package/dist/Testing/components/testing-dashboard-tab-resource.component.js +16 -19
- package/dist/Testing/components/testing-dashboard-tab-resource.component.js.map +1 -1
- package/dist/Testing/components/testing-dashboard-tab.component.d.ts +3 -1
- package/dist/Testing/components/testing-dashboard-tab.component.d.ts.map +1 -1
- package/dist/Testing/components/testing-dashboard-tab.component.js +157 -122
- package/dist/Testing/components/testing-dashboard-tab.component.js.map +1 -1
- package/dist/Testing/components/testing-explorer-resource.component.d.ts +2 -1
- package/dist/Testing/components/testing-explorer-resource.component.d.ts.map +1 -1
- package/dist/Testing/components/testing-explorer-resource.component.js +7 -12
- package/dist/Testing/components/testing-explorer-resource.component.js.map +1 -1
- package/dist/Testing/components/testing-explorer.component.d.ts +8 -1
- package/dist/Testing/components/testing-explorer.component.d.ts.map +1 -1
- package/dist/Testing/components/testing-explorer.component.js +587 -608
- package/dist/Testing/components/testing-explorer.component.js.map +1 -1
- package/dist/Testing/components/testing-review-resource.component.d.ts +4 -1
- package/dist/Testing/components/testing-review-resource.component.d.ts.map +1 -1
- package/dist/Testing/components/testing-review-resource.component.js +9 -12
- package/dist/Testing/components/testing-review-resource.component.js.map +1 -1
- package/dist/Testing/components/testing-review.component.d.ts +3 -1
- package/dist/Testing/components/testing-review.component.d.ts.map +1 -1
- package/dist/Testing/components/testing-review.component.js +310 -274
- package/dist/Testing/components/testing-review.component.js.map +1 -1
- package/dist/Testing/components/testing-runs-resource.component.d.ts +2 -1
- package/dist/Testing/components/testing-runs-resource.component.d.ts.map +1 -1
- package/dist/Testing/components/testing-runs-resource.component.js +16 -19
- package/dist/Testing/components/testing-runs-resource.component.js.map +1 -1
- package/dist/Testing/components/testing-runs.component.d.ts +3 -1
- package/dist/Testing/components/testing-runs.component.d.ts.map +1 -1
- package/dist/Testing/components/testing-runs.component.js +307 -273
- package/dist/Testing/components/testing-runs.component.js.map +1 -1
- package/dist/Testing/testing-dashboard.component.d.ts +2 -0
- package/dist/Testing/testing-dashboard.component.d.ts.map +1 -1
- package/dist/Testing/testing-dashboard.component.js +107 -93
- package/dist/Testing/testing-dashboard.component.js.map +1 -1
- package/dist/VersionHistory/components/diff-resource.component.js +185 -188
- package/dist/VersionHistory/components/diff-resource.component.js.map +1 -1
- package/dist/VersionHistory/components/graph-resource.component.js +154 -184
- package/dist/VersionHistory/components/graph-resource.component.js.map +1 -1
- package/dist/VersionHistory/components/labels-resource.component.d.ts +7 -0
- package/dist/VersionHistory/components/labels-resource.component.d.ts.map +1 -1
- package/dist/VersionHistory/components/labels-resource.component.js +350 -354
- package/dist/VersionHistory/components/labels-resource.component.js.map +1 -1
- package/dist/VersionHistory/components/restore-resource.component.js +163 -169
- package/dist/VersionHistory/components/restore-resource.component.js.map +1 -1
- package/dist/actions-dashboards.module.d.ts +15 -16
- package/dist/actions-dashboards.module.d.ts.map +1 -1
- package/dist/actions-dashboards.module.js +34 -11
- package/dist/actions-dashboards.module.js.map +1 -1
- package/dist/ai-dashboards.module.d.ts +45 -48
- package/dist/ai-dashboards.module.d.ts.map +1 -1
- package/dist/ai-dashboards.module.js +36 -10
- package/dist/ai-dashboards.module.js.map +1 -1
- package/dist/archiving-dashboards.module.d.ts +2 -1
- package/dist/archiving-dashboards.module.d.ts.map +1 -1
- package/dist/archiving-dashboards.module.js +12 -2
- package/dist/archiving-dashboards.module.js.map +1 -1
- package/dist/communication-dashboards.module.d.ts +2 -1
- package/dist/communication-dashboards.module.d.ts.map +1 -1
- package/dist/communication-dashboards.module.js +24 -3
- package/dist/communication-dashboards.module.js.map +1 -1
- package/dist/core-dashboards.module.d.ts +1 -1
- package/dist/core-dashboards.module.d.ts.map +1 -1
- package/dist/core-dashboards.module.js +31 -1
- package/dist/core-dashboards.module.js.map +1 -1
- package/dist/credentials-dashboards.module.d.ts +1 -1
- package/dist/credentials-dashboards.module.d.ts.map +1 -1
- package/dist/credentials-dashboards.module.js +28 -1
- package/dist/credentials-dashboards.module.js.map +1 -1
- package/dist/lists-dashboards.module.d.ts +1 -1
- package/dist/lists-dashboards.module.d.ts.map +1 -1
- package/dist/lists-dashboards.module.js +28 -1
- package/dist/lists-dashboards.module.js.map +1 -1
- package/dist/public-api.d.ts +2 -2
- package/dist/public-api.d.ts.map +1 -1
- package/dist/public-api.js +3 -3
- package/dist/public-api.js.map +1 -1
- package/dist/scheduling-dashboards.module.d.ts +1 -1
- package/dist/scheduling-dashboards.module.d.ts.map +1 -1
- package/dist/scheduling-dashboards.module.js +31 -1
- package/dist/scheduling-dashboards.module.js.map +1 -1
- package/dist/testing-dashboards.module.d.ts +8 -7
- package/dist/testing-dashboards.module.d.ts.map +1 -1
- package/dist/testing-dashboards.module.js +30 -0
- package/dist/testing-dashboards.module.js.map +1 -1
- package/package.json +52 -52
- package/dist/AI/components/agents/agent-filter-panel.component.d.ts +0 -56
- package/dist/AI/components/agents/agent-filter-panel.component.d.ts.map +0 -1
- package/dist/AI/components/agents/agent-filter-panel.component.js +0 -285
- package/dist/AI/components/agents/agent-filter-panel.component.js.map +0 -1
- package/dist/AI/components/prompts/prompt-filter-panel.component.d.ts +0 -49
- package/dist/AI/components/prompts/prompt-filter-panel.component.d.ts.map +0 -1
- package/dist/AI/components/prompts/prompt-filter-panel.component.js +0 -184
- package/dist/AI/components/prompts/prompt-filter-panel.component.js.map +0 -1
- package/dist/AI/components/system/system-config-filter-panel.component.d.ts +0 -33
- package/dist/AI/components/system/system-config-filter-panel.component.d.ts.map +0 -1
- package/dist/AI/components/system/system-config-filter-panel.component.js +0 -144
- package/dist/AI/components/system/system-config-filter-panel.component.js.map +0 -1
- package/dist/Actions/components/explorer/action-toolbar.component.d.ts +0 -63
- package/dist/Actions/components/explorer/action-toolbar.component.d.ts.map +0 -1
- package/dist/Actions/components/explorer/action-toolbar.component.js +0 -463
- package/dist/Actions/components/explorer/action-toolbar.component.js.map +0 -1
|
@@ -11,44 +11,37 @@ import { RunView, CompositeKey } from '@memberjunction/core';
|
|
|
11
11
|
import * as i0 from "@angular/core";
|
|
12
12
|
import * as i1 from "@memberjunction/ng-shared";
|
|
13
13
|
import * as i2 from "@memberjunction/ng-shared-generic";
|
|
14
|
-
import * as i3 from "@
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
i0.ɵɵelement(1, "mj-loading", 11);
|
|
18
|
-
i0.ɵɵelementEnd();
|
|
19
|
-
} }
|
|
20
|
-
function CommunicationTemplatesResourceComponent_Conditional_15_For_4_Template(rf, ctx) { if (rf & 1) {
|
|
14
|
+
import * as i3 from "@memberjunction/ng-ui-components";
|
|
15
|
+
import * as i4 from "@angular/common";
|
|
16
|
+
function CommunicationTemplatesResourceComponent_Conditional_8_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
21
17
|
const _r3 = i0.ɵɵgetCurrentView();
|
|
22
|
-
i0.ɵɵelementStart(0, "
|
|
23
|
-
i0.ɵɵlistener("
|
|
24
|
-
i0.ɵɵtext(1);
|
|
18
|
+
i0.ɵɵelementStart(0, "mj-filter-chip", 10);
|
|
19
|
+
i0.ɵɵlistener("Clicked", function CommunicationTemplatesResourceComponent_Conditional_8_For_2_Template_mj_filter_chip_Clicked_0_listener() { const cat_r4 = i0.ɵɵrestoreView(_r3).$implicit; const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.onCategoryFilter(cat_r4)); });
|
|
25
20
|
i0.ɵɵelementEnd();
|
|
26
21
|
} if (rf & 2) {
|
|
27
22
|
const cat_r4 = ctx.$implicit;
|
|
28
23
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
29
|
-
i0.ɵɵ
|
|
30
|
-
i0.ɵɵadvance();
|
|
31
|
-
i0.ɵɵtextInterpolate2(" ", cat_r4, " (", ctx_r1.getCategoryCount(cat_r4), ") ");
|
|
24
|
+
i0.ɵɵproperty("Label", cat_r4)("Count", ctx_r1.getCategoryCount(cat_r4))("Active", ctx_r1.categoryFilter === cat_r4);
|
|
32
25
|
} }
|
|
33
|
-
function
|
|
26
|
+
function CommunicationTemplatesResourceComponent_Conditional_8_Template(rf, ctx) { if (rf & 1) {
|
|
34
27
|
const _r1 = i0.ɵɵgetCurrentView();
|
|
35
|
-
i0.ɵɵelementStart(0, "
|
|
36
|
-
i0.ɵɵlistener("
|
|
37
|
-
i0.ɵɵtext(2);
|
|
38
|
-
i0.ɵɵelementEnd();
|
|
39
|
-
i0.ɵɵrepeaterCreate(3, CommunicationTemplatesResourceComponent_Conditional_15_For_4_Template, 2, 4, "div", 13, i0.ɵɵrepeaterTrackByIdentity);
|
|
28
|
+
i0.ɵɵelementStart(0, "mj-filter-chip", 8);
|
|
29
|
+
i0.ɵɵlistener("Clicked", function CommunicationTemplatesResourceComponent_Conditional_8_Template_mj_filter_chip_Clicked_0_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onCategoryFilter("")); });
|
|
40
30
|
i0.ɵɵelementEnd();
|
|
31
|
+
i0.ɵɵrepeaterCreate(1, CommunicationTemplatesResourceComponent_Conditional_8_For_2_Template, 1, 3, "mj-filter-chip", 9, i0.ɵɵrepeaterTrackByIdentity);
|
|
41
32
|
} if (rf & 2) {
|
|
42
33
|
const ctx_r1 = i0.ɵɵnextContext();
|
|
43
|
-
i0.ɵɵ
|
|
44
|
-
i0.ɵɵclassProp("active", ctx_r1.categoryFilter === "");
|
|
45
|
-
i0.ɵɵadvance();
|
|
46
|
-
i0.ɵɵtextInterpolate1(" All (", ctx_r1.allTemplates.length, ") ");
|
|
34
|
+
i0.ɵɵproperty("Count", ctx_r1.allTemplates.length)("Active", ctx_r1.categoryFilter === "");
|
|
47
35
|
i0.ɵɵadvance();
|
|
48
36
|
i0.ɵɵrepeater(ctx_r1.categories);
|
|
49
37
|
} }
|
|
50
|
-
function
|
|
51
|
-
i0.ɵɵelementStart(0, "div",
|
|
38
|
+
function CommunicationTemplatesResourceComponent_Conditional_10_Template(rf, ctx) { if (rf & 1) {
|
|
39
|
+
i0.ɵɵelementStart(0, "div", 6);
|
|
40
|
+
i0.ɵɵelement(1, "mj-loading", 11);
|
|
41
|
+
i0.ɵɵelementEnd();
|
|
42
|
+
} }
|
|
43
|
+
function CommunicationTemplatesResourceComponent_Conditional_11_For_2_Conditional_9_Template(rf, ctx) { if (rf & 1) {
|
|
44
|
+
i0.ɵɵelementStart(0, "div", 21);
|
|
52
45
|
i0.ɵɵtext(1);
|
|
53
46
|
i0.ɵɵelementEnd();
|
|
54
47
|
} if (rf & 2) {
|
|
@@ -56,8 +49,8 @@ function CommunicationTemplatesResourceComponent_Conditional_16_For_2_Conditiona
|
|
|
56
49
|
i0.ɵɵadvance();
|
|
57
50
|
i0.ɵɵtextInterpolate1(" ", card_r6.Entity.Description, " ");
|
|
58
51
|
} }
|
|
59
|
-
function
|
|
60
|
-
i0.ɵɵelementStart(0, "span",
|
|
52
|
+
function CommunicationTemplatesResourceComponent_Conditional_11_For_2_For_13_Template(rf, ctx) { if (rf & 1) {
|
|
53
|
+
i0.ɵɵelementStart(0, "span", 24);
|
|
61
54
|
i0.ɵɵelement(1, "i");
|
|
62
55
|
i0.ɵɵtext(2);
|
|
63
56
|
i0.ɵɵelementEnd();
|
|
@@ -69,13 +62,13 @@ function CommunicationTemplatesResourceComponent_Conditional_16_For_2_For_13_Tem
|
|
|
69
62
|
i0.ɵɵadvance();
|
|
70
63
|
i0.ɵɵtextInterpolate1(" ", ct_r7, " ");
|
|
71
64
|
} }
|
|
72
|
-
function
|
|
73
|
-
i0.ɵɵelementStart(0, "span",
|
|
65
|
+
function CommunicationTemplatesResourceComponent_Conditional_11_For_2_Conditional_14_Template(rf, ctx) { if (rf & 1) {
|
|
66
|
+
i0.ɵɵelementStart(0, "span", 25);
|
|
74
67
|
i0.ɵɵtext(1, " No content ");
|
|
75
68
|
i0.ɵɵelementEnd();
|
|
76
69
|
} }
|
|
77
|
-
function
|
|
78
|
-
i0.ɵɵelementStart(0, "div",
|
|
70
|
+
function CommunicationTemplatesResourceComponent_Conditional_11_For_2_Conditional_15_Template(rf, ctx) { if (rf & 1) {
|
|
71
|
+
i0.ɵɵelementStart(0, "div", 26);
|
|
79
72
|
i0.ɵɵtext(1);
|
|
80
73
|
i0.ɵɵpipe(2, "date");
|
|
81
74
|
i0.ɵɵelementEnd();
|
|
@@ -84,25 +77,25 @@ function CommunicationTemplatesResourceComponent_Conditional_16_For_2_Conditiona
|
|
|
84
77
|
i0.ɵɵadvance();
|
|
85
78
|
i0.ɵɵtextInterpolate1(" Updated ", i0.ɵɵpipeBind2(2, 1, card_r6.LastUpdated, "mediumDate"), " ");
|
|
86
79
|
} }
|
|
87
|
-
function
|
|
80
|
+
function CommunicationTemplatesResourceComponent_Conditional_11_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
88
81
|
const _r5 = i0.ɵɵgetCurrentView();
|
|
89
|
-
i0.ɵɵelementStart(0, "div",
|
|
90
|
-
i0.ɵɵlistener("click", function
|
|
91
|
-
i0.ɵɵelementStart(1, "div",
|
|
92
|
-
i0.ɵɵelement(3, "i",
|
|
82
|
+
i0.ɵɵelementStart(0, "div", 14);
|
|
83
|
+
i0.ɵɵlistener("click", function CommunicationTemplatesResourceComponent_Conditional_11_For_2_Template_div_click_0_listener() { const card_r6 = i0.ɵɵrestoreView(_r5).$implicit; const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.openTemplate(card_r6.Entity)); });
|
|
84
|
+
i0.ɵɵelementStart(1, "div", 15)(2, "div", 16);
|
|
85
|
+
i0.ɵɵelement(3, "i", 17);
|
|
93
86
|
i0.ɵɵelementEnd();
|
|
94
|
-
i0.ɵɵelementStart(4, "div",
|
|
87
|
+
i0.ɵɵelementStart(4, "div", 18)(5, "div", 19);
|
|
95
88
|
i0.ɵɵtext(6);
|
|
96
89
|
i0.ɵɵelementEnd();
|
|
97
|
-
i0.ɵɵelementStart(7, "div",
|
|
90
|
+
i0.ɵɵelementStart(7, "div", 20);
|
|
98
91
|
i0.ɵɵtext(8);
|
|
99
92
|
i0.ɵɵelementEnd()()();
|
|
100
|
-
i0.ɵɵconditionalCreate(9,
|
|
101
|
-
i0.ɵɵelementStart(10, "div",
|
|
102
|
-
i0.ɵɵrepeaterCreate(12,
|
|
103
|
-
i0.ɵɵconditionalCreate(14,
|
|
93
|
+
i0.ɵɵconditionalCreate(9, CommunicationTemplatesResourceComponent_Conditional_11_For_2_Conditional_9_Template, 2, 1, "div", 21);
|
|
94
|
+
i0.ɵɵelementStart(10, "div", 22)(11, "div", 23);
|
|
95
|
+
i0.ɵɵrepeaterCreate(12, CommunicationTemplatesResourceComponent_Conditional_11_For_2_For_13_Template, 3, 3, "span", 24, i0.ɵɵrepeaterTrackByIdentity);
|
|
96
|
+
i0.ɵɵconditionalCreate(14, CommunicationTemplatesResourceComponent_Conditional_11_For_2_Conditional_14_Template, 2, 0, "span", 25);
|
|
104
97
|
i0.ɵɵelementEnd();
|
|
105
|
-
i0.ɵɵconditionalCreate(15,
|
|
98
|
+
i0.ɵɵconditionalCreate(15, CommunicationTemplatesResourceComponent_Conditional_11_For_2_Conditional_15_Template, 3, 4, "div", 26);
|
|
106
99
|
i0.ɵɵelementEnd()();
|
|
107
100
|
} if (rf & 2) {
|
|
108
101
|
const card_r6 = ctx.$implicit;
|
|
@@ -119,17 +112,17 @@ function CommunicationTemplatesResourceComponent_Conditional_16_For_2_Template(r
|
|
|
119
112
|
i0.ɵɵadvance();
|
|
120
113
|
i0.ɵɵconditional(card_r6.LastUpdated ? 15 : -1);
|
|
121
114
|
} }
|
|
122
|
-
function
|
|
123
|
-
i0.ɵɵelementStart(0, "div",
|
|
124
|
-
i0.ɵɵelement(1, "i",
|
|
115
|
+
function CommunicationTemplatesResourceComponent_Conditional_11_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
116
|
+
i0.ɵɵelementStart(0, "div", 13);
|
|
117
|
+
i0.ɵɵelement(1, "i", 17);
|
|
125
118
|
i0.ɵɵelementStart(2, "p");
|
|
126
119
|
i0.ɵɵtext(3, "No templates found matching your criteria");
|
|
127
120
|
i0.ɵɵelementEnd()();
|
|
128
121
|
} }
|
|
129
|
-
function
|
|
130
|
-
i0.ɵɵelementStart(0, "div",
|
|
131
|
-
i0.ɵɵrepeaterCreate(1,
|
|
132
|
-
i0.ɵɵconditionalCreate(3,
|
|
122
|
+
function CommunicationTemplatesResourceComponent_Conditional_11_Template(rf, ctx) { if (rf & 1) {
|
|
123
|
+
i0.ɵɵelementStart(0, "div", 7);
|
|
124
|
+
i0.ɵɵrepeaterCreate(1, CommunicationTemplatesResourceComponent_Conditional_11_For_2_Template, 16, 5, "div", 12, i0.ɵɵrepeaterTrackByIdentity);
|
|
125
|
+
i0.ɵɵconditionalCreate(3, CommunicationTemplatesResourceComponent_Conditional_11_Conditional_3_Template, 4, 0, "div", 13);
|
|
133
126
|
i0.ɵɵelementEnd();
|
|
134
127
|
} if (rf & 2) {
|
|
135
128
|
const ctx_r1 = i0.ɵɵnextContext();
|
|
@@ -210,8 +203,8 @@ let CommunicationTemplatesResourceComponent = class CommunicationTemplatesResour
|
|
|
210
203
|
getCategoryCount(category) {
|
|
211
204
|
return this.allTemplates.filter(t => t.CategoryName === category).length;
|
|
212
205
|
}
|
|
213
|
-
|
|
214
|
-
this.searchTerm =
|
|
206
|
+
onSearchValue(value) {
|
|
207
|
+
this.searchTerm = (value ?? '').toLowerCase();
|
|
215
208
|
this.applyFilter();
|
|
216
209
|
}
|
|
217
210
|
onCategoryFilter(category) {
|
|
@@ -256,35 +249,26 @@ let CommunicationTemplatesResourceComponent = class CommunicationTemplatesResour
|
|
|
256
249
|
return 'fa-solid fa-file-lines';
|
|
257
250
|
}
|
|
258
251
|
static ɵfac = function CommunicationTemplatesResourceComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || CommunicationTemplatesResourceComponent)(i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(i1.NavigationService)); };
|
|
259
|
-
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: CommunicationTemplatesResourceComponent, selectors: [["mj-communication-templates-resource"]], standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls:
|
|
260
|
-
i0.ɵɵelementStart(0, "
|
|
261
|
-
i0.ɵɵ
|
|
252
|
+
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: CommunicationTemplatesResourceComponent, selectors: [["mj-communication-templates-resource"]], standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 12, vars: 2, consts: [["Title", "Templates", "Icon", "fa-solid fa-file-lines", "Subtitle", "Manage reusable message templates"], ["actions", ""], ["mjButton", "", "variant", "primary", "size", "sm", 3, "click"], [1, "fa-solid", "fa-plus"], ["toolbar", ""], ["Placeholder", "Search templates...", 3, "ValueChange"], [1, "loading-state"], [1, "templates-grid"], ["Label", "All", 3, "Clicked", "Count", "Active"], [3, "Label", "Count", "Active"], [3, "Clicked", "Label", "Count", "Active"], ["text", "Loading templates..."], [1, "template-card"], [1, "empty-state"], [1, "template-card", 3, "click"], [1, "template-card-header"], [1, "template-icon"], [1, "fa-solid", "fa-file-lines"], [1, "template-title-area"], [1, "template-name"], [1, "template-category"], [1, "template-description"], [1, "template-meta"], [1, "template-content-types"], [1, "content-type-chip"], [1, "content-type-chip", "empty"], [1, "template-updated"]], template: function CommunicationTemplatesResourceComponent_Template(rf, ctx) { if (rf & 1) {
|
|
253
|
+
i0.ɵɵelementStart(0, "mj-page-layout")(1, "mj-page-header", 0)(2, "div", 1)(3, "button", 2);
|
|
254
|
+
i0.ɵɵlistener("click", function CommunicationTemplatesResourceComponent_Template_button_click_3_listener() { return ctx.addNewTemplate(); });
|
|
255
|
+
i0.ɵɵelement(4, "i", 3);
|
|
256
|
+
i0.ɵɵtext(5, " New Template ");
|
|
257
|
+
i0.ɵɵelementEnd()();
|
|
258
|
+
i0.ɵɵelementStart(6, "div", 4)(7, "mj-page-search", 5);
|
|
259
|
+
i0.ɵɵlistener("ValueChange", function CommunicationTemplatesResourceComponent_Template_mj_page_search_ValueChange_7_listener($event) { return ctx.onSearchValue($event); });
|
|
262
260
|
i0.ɵɵelementEnd();
|
|
263
|
-
i0.ɵɵ
|
|
264
|
-
i0.ɵɵtext(6, "Manage reusable message templates");
|
|
261
|
+
i0.ɵɵconditionalCreate(8, CommunicationTemplatesResourceComponent_Conditional_8_Template, 3, 2);
|
|
265
262
|
i0.ɵɵelementEnd()();
|
|
266
|
-
i0.ɵɵelementStart(
|
|
267
|
-
i0.ɵɵ
|
|
268
|
-
i0.ɵɵelementStart(10, "input", 5);
|
|
269
|
-
i0.ɵɵlistener("input", function CommunicationTemplatesResourceComponent_Template_input_input_10_listener($event) { return ctx.onSearch($event); });
|
|
263
|
+
i0.ɵɵelementStart(9, "mj-page-body");
|
|
264
|
+
i0.ɵɵconditionalCreate(10, CommunicationTemplatesResourceComponent_Conditional_10_Template, 2, 0, "div", 6)(11, CommunicationTemplatesResourceComponent_Conditional_11_Template, 4, 1, "div", 7);
|
|
270
265
|
i0.ɵɵelementEnd()();
|
|
271
|
-
i0.ɵɵelementStart(11, "button", 6);
|
|
272
|
-
i0.ɵɵlistener("click", function CommunicationTemplatesResourceComponent_Template_button_click_11_listener() { return ctx.addNewTemplate(); });
|
|
273
|
-
i0.ɵɵelement(12, "i", 7);
|
|
274
|
-
i0.ɵɵtext(13, " New Template ");
|
|
275
|
-
i0.ɵɵelementEnd()()();
|
|
276
|
-
i0.ɵɵconditionalCreate(14, CommunicationTemplatesResourceComponent_Conditional_14_Template, 2, 0, "div", 8);
|
|
277
|
-
i0.ɵɵconditionalCreate(15, CommunicationTemplatesResourceComponent_Conditional_15_Template, 5, 3, "div", 9);
|
|
278
|
-
i0.ɵɵconditionalCreate(16, CommunicationTemplatesResourceComponent_Conditional_16_Template, 4, 1, "div", 10);
|
|
279
|
-
i0.ɵɵelementEnd();
|
|
280
266
|
} if (rf & 2) {
|
|
281
|
-
i0.ɵɵadvance(
|
|
282
|
-
i0.ɵɵconditional(ctx.isLoading ?
|
|
283
|
-
i0.ɵɵadvance();
|
|
284
|
-
i0.ɵɵconditional(
|
|
285
|
-
|
|
286
|
-
i0.ɵɵconditional(!ctx.isLoading ? 16 : -1);
|
|
287
|
-
} }, dependencies: [i2.LoadingComponent, i3.DatePipe], styles: [".templates-wrapper[_ngcontent-%COMP%] {\n height: 100%;\n padding: 24px;\n overflow-y: auto;\n background: var(--mj-bg-surface);\n }\n\n \n\n .templates-header[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n margin-bottom: 20px;\n }\n .templates-header[_ngcontent-%COMP%] h2[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 18px;\n font-weight: 800;\n color: var(--mj-text-primary);\n }\n .templates-header[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 4px 0 0;\n font-size: 13px;\n color: var(--mj-text-muted);\n }\n .header-actions[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n }\n .search-input-wrapper[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 6px 12px;\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n background: var(--mj-bg-surface-card);\n transition: border-color 0.15s, box-shadow 0.15s;\n min-width: 220px;\n }\n .search-input-wrapper[_ngcontent-%COMP%]:focus-within {\n border-color: var(--mj-brand-primary);\n box-shadow: 0 0 0 2px color-mix(in srgb, var(--mj-brand-primary) 15%, transparent);\n }\n .search-input-wrapper[_ngcontent-%COMP%] i[_ngcontent-%COMP%] { color: var(--mj-text-muted); font-size: 12px; }\n .search-input-wrapper[_ngcontent-%COMP%] input[_ngcontent-%COMP%] {\n flex: 1; border: none; outline: none;\n background: transparent; font-size: 12px;\n font-family: inherit; color: var(--mj-text-primary);\n }\n .search-input-wrapper[_ngcontent-%COMP%] input[_ngcontent-%COMP%]::placeholder { color: var(--mj-text-muted); }\n\n .tb-btn[_ngcontent-%COMP%] {\n display: inline-flex; align-items: center;\n gap: 6px; padding: 8px 16px;\n border: 1px solid var(--mj-border-default);\n border-radius: 4px;\n background: var(--mj-bg-surface-card);\n color: var(--mj-text-muted);\n font-size: 12px; font-weight: 600;\n cursor: pointer; transition: all 0.15s ease;\n font-family: inherit;\n }\n .tb-btn.primary[_ngcontent-%COMP%] {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n border-color: var(--mj-brand-primary);\n }\n .tb-btn.primary[_ngcontent-%COMP%]:hover { filter: brightness(1.1); }\n\n .loading-state[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 80px 0;\n }\n\n \n\n .category-filters[_ngcontent-%COMP%] {\n display: flex;\n flex-wrap: wrap;\n gap: 8px;\n margin-bottom: 20px;\n }\n .filter-chip[_ngcontent-%COMP%] {\n display: inline-flex; align-items: center;\n gap: 4px; padding: 5px 14px;\n border: 1px solid var(--mj-border-default);\n border-radius: 16px;\n background: var(--mj-bg-surface-card);\n font-size: 12px; font-weight: 500;\n color: var(--mj-text-muted);\n cursor: pointer; transition: all 0.15s;\n }\n .filter-chip[_ngcontent-%COMP%]:hover {\n border-color: var(--mj-border-strong);\n background: var(--mj-bg-surface);\n }\n .filter-chip.active[_ngcontent-%COMP%] {\n border-color: var(--mj-brand-primary);\n background: color-mix(in srgb, var(--mj-brand-primary) 15%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n }\n\n \n\n .templates-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(320px, 1fr));\n gap: 16px;\n }\n\n .template-card[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 12px;\n padding: 20px;\n cursor: pointer;\n transition: all 0.15s ease;\n }\n .template-card[_ngcontent-%COMP%]:hover {\n box-shadow: 0 2px 8px var(--mj-shadow-md);\n border-color: var(--mj-border-strong);\n }\n\n .template-card-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 14px;\n margin-bottom: 12px;\n }\n .template-icon[_ngcontent-%COMP%] {\n width: 40px; height: 40px;\n border-radius: 8px;\n background: color-mix(in srgb, var(--mj-brand-primary) 15%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n display: flex; align-items: center; justify-content: center;\n font-size: 16px; flex-shrink: 0;\n }\n .template-title-area[_ngcontent-%COMP%] { flex: 1; min-width: 0; }\n .template-name[_ngcontent-%COMP%] {\n font-size: 14px; font-weight: 700;\n color: var(--mj-text-primary);\n white-space: nowrap; overflow: hidden; text-overflow: ellipsis;\n }\n .template-category[_ngcontent-%COMP%] {\n font-size: 11px;\n color: var(--mj-text-muted);\n margin-top: 2px;\n }\n\n .template-description[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-muted);\n line-height: 1.5;\n margin-bottom: 12px;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n overflow: hidden;\n }\n\n .template-meta[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n }\n .template-content-types[_ngcontent-%COMP%] {\n display: flex;\n flex-wrap: wrap;\n gap: 6px;\n }\n .content-type-chip[_ngcontent-%COMP%] {\n display: inline-flex; align-items: center;\n gap: 4px; padding: 3px 8px;\n border-radius: 10px; font-size: 10px; font-weight: 500;\n background: var(--mj-bg-surface);\n color: var(--mj-text-muted);\n }\n .content-type-chip.empty[_ngcontent-%COMP%] {\n font-style: italic;\n }\n .template-updated[_ngcontent-%COMP%] {\n font-size: 10px;\n color: var(--mj-text-muted);\n white-space: nowrap;\n }\n\n \n\n .empty-state[_ngcontent-%COMP%] {\n grid-column: 1 / -1;\n display: flex; flex-direction: column;\n align-items: center; justify-content: center;\n padding: 64px 0; color: var(--mj-text-muted);\n }\n .empty-state[_ngcontent-%COMP%] i[_ngcontent-%COMP%] { font-size: 2rem; margin-bottom: 12px; opacity: 0.5; }\n .empty-state[_ngcontent-%COMP%] p[_ngcontent-%COMP%] { margin: 0; font-size: 13px; }"] });
|
|
267
|
+
i0.ɵɵadvance(8);
|
|
268
|
+
i0.ɵɵconditional(!ctx.isLoading ? 8 : -1);
|
|
269
|
+
i0.ɵɵadvance(2);
|
|
270
|
+
i0.ɵɵconditional(ctx.isLoading ? 10 : 11);
|
|
271
|
+
} }, dependencies: [i2.LoadingComponent, i3.MJButtonDirective, i3.MJPageHeaderComponent, i3.MJPageLayoutComponent, i3.MJPageBodyComponent, i3.MJPageSearchComponent, i3.MJFilterChipComponent, i4.DatePipe], styles: [".loading-state[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 80px 0;\n }\n\n \n\n .templates-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(320px, 1fr));\n gap: 16px;\n }\n\n .template-card[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 12px;\n padding: 20px;\n cursor: pointer;\n transition: all 0.15s ease;\n }\n .template-card[_ngcontent-%COMP%]:hover {\n box-shadow: 0 2px 8px var(--mj-shadow-md);\n border-color: var(--mj-border-strong);\n }\n\n .template-card-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 14px;\n margin-bottom: 12px;\n }\n .template-icon[_ngcontent-%COMP%] {\n width: 40px; height: 40px;\n border-radius: 8px;\n background: color-mix(in srgb, var(--mj-brand-primary) 15%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n display: flex; align-items: center; justify-content: center;\n font-size: 16px; flex-shrink: 0;\n }\n .template-title-area[_ngcontent-%COMP%] { flex: 1; min-width: 0; }\n .template-name[_ngcontent-%COMP%] {\n font-size: 14px; font-weight: 700;\n color: var(--mj-text-primary);\n white-space: nowrap; overflow: hidden; text-overflow: ellipsis;\n }\n .template-category[_ngcontent-%COMP%] {\n font-size: 11px;\n color: var(--mj-text-muted);\n margin-top: 2px;\n }\n\n .template-description[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-muted);\n line-height: 1.5;\n margin-bottom: 12px;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n overflow: hidden;\n }\n\n .template-meta[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n }\n .template-content-types[_ngcontent-%COMP%] {\n display: flex;\n flex-wrap: wrap;\n gap: 6px;\n }\n .content-type-chip[_ngcontent-%COMP%] {\n display: inline-flex; align-items: center;\n gap: 4px; padding: 3px 8px;\n border-radius: 10px; font-size: 10px; font-weight: 500;\n background: var(--mj-bg-surface);\n color: var(--mj-text-muted);\n }\n .content-type-chip.empty[_ngcontent-%COMP%] {\n font-style: italic;\n }\n .template-updated[_ngcontent-%COMP%] {\n font-size: 10px;\n color: var(--mj-text-muted);\n white-space: nowrap;\n }\n\n \n\n .empty-state[_ngcontent-%COMP%] {\n grid-column: 1 / -1;\n display: flex; flex-direction: column;\n align-items: center; justify-content: center;\n padding: 64px 0; color: var(--mj-text-muted);\n }\n .empty-state[_ngcontent-%COMP%] i[_ngcontent-%COMP%] { font-size: 2rem; margin-bottom: 12px; opacity: 0.5; }\n .empty-state[_ngcontent-%COMP%] p[_ngcontent-%COMP%] { margin: 0; font-size: 13px; }"] });
|
|
288
272
|
};
|
|
289
273
|
CommunicationTemplatesResourceComponent = __decorate([
|
|
290
274
|
RegisterClass(BaseResourceComponent, 'CommunicationTemplatesResource')
|
|
@@ -293,99 +277,92 @@ export { CommunicationTemplatesResourceComponent };
|
|
|
293
277
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(CommunicationTemplatesResourceComponent, [{
|
|
294
278
|
type: Component,
|
|
295
279
|
args: [{ standalone: false, selector: 'mj-communication-templates-resource', template: `
|
|
296
|
-
<
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
<h2>Communication Templates</h2>
|
|
301
|
-
<p>Manage reusable message templates</p>
|
|
302
|
-
</div>
|
|
303
|
-
<div class="header-actions">
|
|
304
|
-
<div class="search-input-wrapper">
|
|
305
|
-
<i class="fa-solid fa-search"></i>
|
|
306
|
-
<input type="text" placeholder="Search templates..." (input)="onSearch($event)">
|
|
307
|
-
</div>
|
|
308
|
-
<button class="tb-btn primary" (click)="addNewTemplate()">
|
|
280
|
+
<mj-page-layout>
|
|
281
|
+
<mj-page-header Title="Templates" Icon="fa-solid fa-file-lines" Subtitle="Manage reusable message templates">
|
|
282
|
+
<div actions>
|
|
283
|
+
<button mjButton variant="primary" size="sm" (click)="addNewTemplate()">
|
|
309
284
|
<i class="fa-solid fa-plus"></i> New Template
|
|
310
285
|
</button>
|
|
311
286
|
</div>
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
{{cat}} ({{getCategoryCount(cat)}})
|
|
333
|
-
</div>
|
|
287
|
+
<div toolbar>
|
|
288
|
+
<mj-page-search
|
|
289
|
+
Placeholder="Search templates..."
|
|
290
|
+
(ValueChange)="onSearchValue($event)">
|
|
291
|
+
</mj-page-search>
|
|
292
|
+
@if (!isLoading) {
|
|
293
|
+
<mj-filter-chip
|
|
294
|
+
Label="All"
|
|
295
|
+
[Count]="allTemplates.length"
|
|
296
|
+
[Active]="categoryFilter === ''"
|
|
297
|
+
(Clicked)="onCategoryFilter('')">
|
|
298
|
+
</mj-filter-chip>
|
|
299
|
+
@for (cat of categories; track cat) {
|
|
300
|
+
<mj-filter-chip
|
|
301
|
+
[Label]="cat"
|
|
302
|
+
[Count]="getCategoryCount(cat)"
|
|
303
|
+
[Active]="categoryFilter === cat"
|
|
304
|
+
(Clicked)="onCategoryFilter(cat)">
|
|
305
|
+
</mj-filter-chip>
|
|
306
|
+
}
|
|
334
307
|
}
|
|
335
308
|
</div>
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
{{card.Entity.Description}}
|
|
356
|
-
</div>
|
|
357
|
-
}
|
|
358
|
-
<div class="template-meta">
|
|
359
|
-
<div class="template-content-types">
|
|
360
|
-
@for (ct of card.ContentTypes; track ct) {
|
|
361
|
-
<span class="content-type-chip">
|
|
362
|
-
<i [class]="getContentTypeIcon(ct)"></i> {{ct}}
|
|
363
|
-
</span>
|
|
364
|
-
}
|
|
365
|
-
@if (card.ContentTypes.length === 0) {
|
|
366
|
-
<span class="content-type-chip empty">
|
|
367
|
-
No content
|
|
368
|
-
</span>
|
|
369
|
-
}
|
|
309
|
+
</mj-page-header>
|
|
310
|
+
|
|
311
|
+
<mj-page-body>
|
|
312
|
+
@if (isLoading) {
|
|
313
|
+
<div class="loading-state">
|
|
314
|
+
<mj-loading text="Loading templates..."></mj-loading>
|
|
315
|
+
</div>
|
|
316
|
+
} @else {
|
|
317
|
+
<div class="templates-grid">
|
|
318
|
+
@for (card of filteredTemplates; track card) {
|
|
319
|
+
<div class="template-card" (click)="openTemplate(card.Entity)">
|
|
320
|
+
<div class="template-card-header">
|
|
321
|
+
<div class="template-icon">
|
|
322
|
+
<i class="fa-solid fa-file-lines"></i>
|
|
323
|
+
</div>
|
|
324
|
+
<div class="template-title-area">
|
|
325
|
+
<div class="template-name">{{card.Entity.Name}}</div>
|
|
326
|
+
<div class="template-category">{{card.CategoryName}}</div>
|
|
327
|
+
</div>
|
|
370
328
|
</div>
|
|
371
|
-
@if (card.
|
|
372
|
-
<div class="template-
|
|
373
|
-
|
|
329
|
+
@if (card.Entity.Description) {
|
|
330
|
+
<div class="template-description">
|
|
331
|
+
{{card.Entity.Description}}
|
|
374
332
|
</div>
|
|
375
333
|
}
|
|
334
|
+
<div class="template-meta">
|
|
335
|
+
<div class="template-content-types">
|
|
336
|
+
@for (ct of card.ContentTypes; track ct) {
|
|
337
|
+
<span class="content-type-chip">
|
|
338
|
+
<i [class]="getContentTypeIcon(ct)"></i> {{ct}}
|
|
339
|
+
</span>
|
|
340
|
+
}
|
|
341
|
+
@if (card.ContentTypes.length === 0) {
|
|
342
|
+
<span class="content-type-chip empty">
|
|
343
|
+
No content
|
|
344
|
+
</span>
|
|
345
|
+
}
|
|
346
|
+
</div>
|
|
347
|
+
@if (card.LastUpdated) {
|
|
348
|
+
<div class="template-updated">
|
|
349
|
+
Updated {{card.LastUpdated | date:'mediumDate'}}
|
|
350
|
+
</div>
|
|
351
|
+
}
|
|
352
|
+
</div>
|
|
376
353
|
</div>
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
</
|
|
388
|
-
`, styles: ["\n .
|
|
354
|
+
}
|
|
355
|
+
@if (filteredTemplates.length === 0) {
|
|
356
|
+
<div class="empty-state">
|
|
357
|
+
<i class="fa-solid fa-file-lines"></i>
|
|
358
|
+
<p>No templates found matching your criteria</p>
|
|
359
|
+
</div>
|
|
360
|
+
}
|
|
361
|
+
</div>
|
|
362
|
+
}
|
|
363
|
+
</mj-page-body>
|
|
364
|
+
</mj-page-layout>
|
|
365
|
+
`, styles: ["\n .loading-state {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 80px 0;\n }\n\n /* GRID */\n .templates-grid {\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(320px, 1fr));\n gap: 16px;\n }\n\n .template-card {\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 12px;\n padding: 20px;\n cursor: pointer;\n transition: all 0.15s ease;\n }\n .template-card:hover {\n box-shadow: 0 2px 8px var(--mj-shadow-md);\n border-color: var(--mj-border-strong);\n }\n\n .template-card-header {\n display: flex;\n align-items: center;\n gap: 14px;\n margin-bottom: 12px;\n }\n .template-icon {\n width: 40px; height: 40px;\n border-radius: 8px;\n background: color-mix(in srgb, var(--mj-brand-primary) 15%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n display: flex; align-items: center; justify-content: center;\n font-size: 16px; flex-shrink: 0;\n }\n .template-title-area { flex: 1; min-width: 0; }\n .template-name {\n font-size: 14px; font-weight: 700;\n color: var(--mj-text-primary);\n white-space: nowrap; overflow: hidden; text-overflow: ellipsis;\n }\n .template-category {\n font-size: 11px;\n color: var(--mj-text-muted);\n margin-top: 2px;\n }\n\n .template-description {\n font-size: 12px;\n color: var(--mj-text-muted);\n line-height: 1.5;\n margin-bottom: 12px;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n overflow: hidden;\n }\n\n .template-meta {\n display: flex;\n justify-content: space-between;\n align-items: center;\n }\n .template-content-types {\n display: flex;\n flex-wrap: wrap;\n gap: 6px;\n }\n .content-type-chip {\n display: inline-flex; align-items: center;\n gap: 4px; padding: 3px 8px;\n border-radius: 10px; font-size: 10px; font-weight: 500;\n background: var(--mj-bg-surface);\n color: var(--mj-text-muted);\n }\n .content-type-chip.empty {\n font-style: italic;\n }\n .template-updated {\n font-size: 10px;\n color: var(--mj-text-muted);\n white-space: nowrap;\n }\n\n /* EMPTY STATE */\n .empty-state {\n grid-column: 1 / -1;\n display: flex; flex-direction: column;\n align-items: center; justify-content: center;\n padding: 64px 0; color: var(--mj-text-muted);\n }\n .empty-state i { font-size: 2rem; margin-bottom: 12px; opacity: 0.5; }\n .empty-state p { margin: 0; font-size: 13px; }\n "] }]
|
|
389
366
|
}], () => [{ type: i0.ChangeDetectorRef }, { type: i1.NavigationService }], null); })();
|
|
390
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(CommunicationTemplatesResourceComponent, { className: "CommunicationTemplatesResourceComponent", filePath: "src/Communication/communication-templates-resource.component.ts", lineNumber:
|
|
367
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(CommunicationTemplatesResourceComponent, { className: "CommunicationTemplatesResourceComponent", filePath: "src/Communication/communication-templates-resource.component.ts", lineNumber: 206 }); })();
|
|
391
368
|
//# sourceMappingURL=communication-templates-resource.component.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"communication-templates-resource.component.js","sourceRoot":"","sources":["../../src/Communication/communication-templates-resource.component.ts"],"names":[],"mappings":"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","sourcesContent":["import { Component, OnInit, OnDestroy, ChangeDetectorRef } from '@angular/core';\nimport { ResourceData, MJTemplateEntity, MJTemplateContentEntity } from '@memberjunction/core-entities';\nimport { RegisterClass , UUIDsEqual } from '@memberjunction/global';\nimport { BaseResourceComponent, NavigationService } from '@memberjunction/ng-shared';\nimport { Metadata, RunView, CompositeKey } from '@memberjunction/core';\n\ninterface TemplateCardData {\n Entity: MJTemplateEntity;\n ContentTypes: string[];\n LastUpdated: Date | null;\n CategoryName: string;\n}\n@RegisterClass(BaseResourceComponent, 'CommunicationTemplatesResource')\n@Component({\n standalone: false,\n selector: 'mj-communication-templates-resource',\n template: `\n <div class=\"templates-wrapper\">\n <!-- HEADER -->\n <div class=\"templates-header\">\n <div>\n <h2>Communication Templates</h2>\n <p>Manage reusable message templates</p>\n </div>\n <div class=\"header-actions\">\n <div class=\"search-input-wrapper\">\n <i class=\"fa-solid fa-search\"></i>\n <input type=\"text\" placeholder=\"Search templates...\" (input)=\"onSearch($event)\">\n </div>\n <button class=\"tb-btn primary\" (click)=\"addNewTemplate()\">\n <i class=\"fa-solid fa-plus\"></i> New Template\n </button>\n </div>\n </div>\n \n <!-- LOADING -->\n @if (isLoading) {\n <div class=\"loading-state\">\n <mj-loading text=\"Loading templates...\"></mj-loading>\n </div>\n }\n \n <!-- CATEGORY FILTERS -->\n @if (!isLoading) {\n <div class=\"category-filters\">\n <div class=\"filter-chip\" [class.active]=\"categoryFilter === ''\"\n (click)=\"onCategoryFilter('')\">\n All ({{allTemplates.length}})\n </div>\n @for (cat of categories; track cat) {\n <div class=\"filter-chip\"\n [class.active]=\"categoryFilter === cat\"\n (click)=\"onCategoryFilter(cat)\">\n {{cat}} ({{getCategoryCount(cat)}})\n </div>\n }\n </div>\n }\n \n <!-- TEMPLATES GRID -->\n @if (!isLoading) {\n <div class=\"templates-grid\">\n @for (card of filteredTemplates; track card) {\n <div class=\"template-card\"\n (click)=\"openTemplate(card.Entity)\">\n <div class=\"template-card-header\">\n <div class=\"template-icon\">\n <i class=\"fa-solid fa-file-lines\"></i>\n </div>\n <div class=\"template-title-area\">\n <div class=\"template-name\">{{card.Entity.Name}}</div>\n <div class=\"template-category\">{{card.CategoryName}}</div>\n </div>\n </div>\n @if (card.Entity.Description) {\n <div class=\"template-description\">\n {{card.Entity.Description}}\n </div>\n }\n <div class=\"template-meta\">\n <div class=\"template-content-types\">\n @for (ct of card.ContentTypes; track ct) {\n <span class=\"content-type-chip\">\n <i [class]=\"getContentTypeIcon(ct)\"></i> {{ct}}\n </span>\n }\n @if (card.ContentTypes.length === 0) {\n <span class=\"content-type-chip empty\">\n No content\n </span>\n }\n </div>\n @if (card.LastUpdated) {\n <div class=\"template-updated\">\n Updated {{card.LastUpdated | date:'mediumDate'}}\n </div>\n }\n </div>\n </div>\n }\n @if (filteredTemplates.length === 0) {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-file-lines\"></i>\n <p>No templates found matching your criteria</p>\n </div>\n }\n </div>\n }\n </div>\n `,\n styles: [`\n .templates-wrapper {\n height: 100%;\n padding: 24px;\n overflow-y: auto;\n background: var(--mj-bg-surface);\n }\n\n /* HEADER */\n .templates-header {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n margin-bottom: 20px;\n }\n .templates-header h2 {\n margin: 0;\n font-size: 18px;\n font-weight: 800;\n color: var(--mj-text-primary);\n }\n .templates-header p {\n margin: 4px 0 0;\n font-size: 13px;\n color: var(--mj-text-muted);\n }\n .header-actions {\n display: flex;\n align-items: center;\n gap: 12px;\n }\n .search-input-wrapper {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 6px 12px;\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n background: var(--mj-bg-surface-card);\n transition: border-color 0.15s, box-shadow 0.15s;\n min-width: 220px;\n }\n .search-input-wrapper:focus-within {\n border-color: var(--mj-brand-primary);\n box-shadow: 0 0 0 2px color-mix(in srgb, var(--mj-brand-primary) 15%, transparent);\n }\n .search-input-wrapper i { color: var(--mj-text-muted); font-size: 12px; }\n .search-input-wrapper input {\n flex: 1; border: none; outline: none;\n background: transparent; font-size: 12px;\n font-family: inherit; color: var(--mj-text-primary);\n }\n .search-input-wrapper input::placeholder { color: var(--mj-text-muted); }\n\n .tb-btn {\n display: inline-flex; align-items: center;\n gap: 6px; padding: 8px 16px;\n border: 1px solid var(--mj-border-default);\n border-radius: 4px;\n background: var(--mj-bg-surface-card);\n color: var(--mj-text-muted);\n font-size: 12px; font-weight: 600;\n cursor: pointer; transition: all 0.15s ease;\n font-family: inherit;\n }\n .tb-btn.primary {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n border-color: var(--mj-brand-primary);\n }\n .tb-btn.primary:hover { filter: brightness(1.1); }\n\n .loading-state {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 80px 0;\n }\n\n /* CATEGORY FILTERS */\n .category-filters {\n display: flex;\n flex-wrap: wrap;\n gap: 8px;\n margin-bottom: 20px;\n }\n .filter-chip {\n display: inline-flex; align-items: center;\n gap: 4px; padding: 5px 14px;\n border: 1px solid var(--mj-border-default);\n border-radius: 16px;\n background: var(--mj-bg-surface-card);\n font-size: 12px; font-weight: 500;\n color: var(--mj-text-muted);\n cursor: pointer; transition: all 0.15s;\n }\n .filter-chip:hover {\n border-color: var(--mj-border-strong);\n background: var(--mj-bg-surface);\n }\n .filter-chip.active {\n border-color: var(--mj-brand-primary);\n background: color-mix(in srgb, var(--mj-brand-primary) 15%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n }\n\n /* GRID */\n .templates-grid {\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(320px, 1fr));\n gap: 16px;\n }\n\n .template-card {\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 12px;\n padding: 20px;\n cursor: pointer;\n transition: all 0.15s ease;\n }\n .template-card:hover {\n box-shadow: 0 2px 8px var(--mj-shadow-md);\n border-color: var(--mj-border-strong);\n }\n\n .template-card-header {\n display: flex;\n align-items: center;\n gap: 14px;\n margin-bottom: 12px;\n }\n .template-icon {\n width: 40px; height: 40px;\n border-radius: 8px;\n background: color-mix(in srgb, var(--mj-brand-primary) 15%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n display: flex; align-items: center; justify-content: center;\n font-size: 16px; flex-shrink: 0;\n }\n .template-title-area { flex: 1; min-width: 0; }\n .template-name {\n font-size: 14px; font-weight: 700;\n color: var(--mj-text-primary);\n white-space: nowrap; overflow: hidden; text-overflow: ellipsis;\n }\n .template-category {\n font-size: 11px;\n color: var(--mj-text-muted);\n margin-top: 2px;\n }\n\n .template-description {\n font-size: 12px;\n color: var(--mj-text-muted);\n line-height: 1.5;\n margin-bottom: 12px;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n overflow: hidden;\n }\n\n .template-meta {\n display: flex;\n justify-content: space-between;\n align-items: center;\n }\n .template-content-types {\n display: flex;\n flex-wrap: wrap;\n gap: 6px;\n }\n .content-type-chip {\n display: inline-flex; align-items: center;\n gap: 4px; padding: 3px 8px;\n border-radius: 10px; font-size: 10px; font-weight: 500;\n background: var(--mj-bg-surface);\n color: var(--mj-text-muted);\n }\n .content-type-chip.empty {\n font-style: italic;\n }\n .template-updated {\n font-size: 10px;\n color: var(--mj-text-muted);\n white-space: nowrap;\n }\n\n /* EMPTY STATE */\n .empty-state {\n grid-column: 1 / -1;\n display: flex; flex-direction: column;\n align-items: center; justify-content: center;\n padding: 64px 0; color: var(--mj-text-muted);\n }\n .empty-state i { font-size: 2rem; margin-bottom: 12px; opacity: 0.5; }\n .empty-state p { margin: 0; font-size: 13px; }\n `]\n})\nexport class CommunicationTemplatesResourceComponent extends BaseResourceComponent implements OnInit, OnDestroy {\n public allTemplates: TemplateCardData[] = [];\n public filteredTemplates: TemplateCardData[] = [];\n public categories: string[] = [];\n public categoryFilter = '';\n public isLoading = false;\n private searchTerm = '';\n\n constructor(private cdr: ChangeDetectorRef, private navService: NavigationService) {\n super();\n }\n\n async ngOnInit(): Promise<void> {\n super.ngOnInit();\n await this.loadData();\n this.NotifyLoadComplete();\n }\n\n ngOnDestroy(): void {\n super.ngOnDestroy();\n }\n\n public async loadData(): Promise<void> {\n try {\n this.isLoading = true;\n this.cdr.detectChanges();\n\n const rv = RunView.FromMetadataProvider(this.ProviderToUse);\n const [templatesResult, contentsResult] = await Promise.all([\n rv.RunView<MJTemplateEntity>({\n EntityName: 'MJ: Templates',\n OrderBy: 'Name ASC',\n ResultType: 'entity_object'\n }),\n rv.RunView<MJTemplateContentEntity>({\n EntityName: 'MJ: Template Contents',\n ResultType: 'entity_object'\n })\n ]);\n\n if (templatesResult.Success) {\n const contents = contentsResult.Success ? contentsResult.Results : [];\n this.allTemplates = templatesResult.Results.map(t => this.buildTemplateCard(t, contents));\n this.categories = this.extractCategories(this.allTemplates);\n this.applyFilter();\n }\n } catch (error) {\n console.error('Error loading templates:', error);\n } finally {\n this.isLoading = false;\n this.cdr.detectChanges();\n }\n }\n\n private buildTemplateCard(template: MJTemplateEntity, allContents: MJTemplateContentEntity[]): TemplateCardData {\n const templateContents = allContents.filter(c => UUIDsEqual(c.TemplateID, template.ID));\n const contentTypes = [...new Set(templateContents.map(c => c.TypeID ? 'Content' : 'Text'))];\n const category = template.Category || 'Uncategorized';\n const lastUpdated = template.Get('__mj_UpdatedAt') as Date | null;\n\n return {\n Entity: template,\n ContentTypes: contentTypes.length > 0 ? contentTypes : [],\n LastUpdated: lastUpdated,\n CategoryName: category\n };\n }\n\n private extractCategories(cards: TemplateCardData[]): string[] {\n const cats = new Set(cards.map(c => c.CategoryName));\n return Array.from(cats).sort();\n }\n\n public getCategoryCount(category: string): number {\n return this.allTemplates.filter(t => t.CategoryName === category).length;\n }\n\n public onSearch(event: Event): void {\n this.searchTerm = (event.target as HTMLInputElement).value.toLowerCase();\n this.applyFilter();\n }\n\n public onCategoryFilter(category: string): void {\n this.categoryFilter = category;\n this.applyFilter();\n }\n\n private applyFilter(): void {\n let filtered = this.allTemplates;\n\n if (this.categoryFilter) {\n filtered = filtered.filter(t => t.CategoryName === this.categoryFilter);\n }\n\n if (this.searchTerm) {\n filtered = filtered.filter(t =>\n t.Entity.Name?.toLowerCase().includes(this.searchTerm) ||\n t.Entity.Description?.toLowerCase().includes(this.searchTerm) ||\n t.CategoryName.toLowerCase().includes(this.searchTerm)\n );\n }\n\n this.filteredTemplates = filtered;\n this.cdr.detectChanges();\n }\n\n public openTemplate(template: MJTemplateEntity): void {\n const pk = new CompositeKey();\n pk.LoadFromEntityInfoAndRecord(this.ProviderToUse.Entities.find(e => e.Name === 'MJ: Templates')!, template);\n this.navService.OpenEntityRecord('MJ: Templates', pk);\n }\n\n public addNewTemplate(): void {\n this.navService.OpenEntityRecord('MJ: Templates', new CompositeKey());\n }\n\n public getContentTypeIcon(type: string): string {\n const t = type.toLowerCase();\n if (t.includes('html')) return 'fa-solid fa-code';\n if (t.includes('text') || t.includes('plain')) return 'fa-solid fa-align-left';\n if (t.includes('sms')) return 'fa-solid fa-comment-sms';\n return 'fa-solid fa-file';\n }\n\n async GetResourceDisplayName(data: ResourceData): Promise<string> {\n return 'Templates';\n }\n\n async GetResourceIconClass(data: ResourceData): Promise<string> {\n return 'fa-solid fa-file-lines';\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"communication-templates-resource.component.js","sourceRoot":"","sources":["../../src/Communication/communication-templates-resource.component.ts"],"names":[],"mappings":"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","sourcesContent":["import { Component, OnInit, OnDestroy, ChangeDetectorRef } from '@angular/core';\nimport { ResourceData, MJTemplateEntity, MJTemplateContentEntity } from '@memberjunction/core-entities';\nimport { RegisterClass , UUIDsEqual } from '@memberjunction/global';\nimport { BaseResourceComponent, NavigationService } from '@memberjunction/ng-shared';\nimport { Metadata, RunView, CompositeKey } from '@memberjunction/core';\n\ninterface TemplateCardData {\n Entity: MJTemplateEntity;\n ContentTypes: string[];\n LastUpdated: Date | null;\n CategoryName: string;\n}\n@RegisterClass(BaseResourceComponent, 'CommunicationTemplatesResource')\n@Component({\n standalone: false,\n selector: 'mj-communication-templates-resource',\n template: `\n <mj-page-layout>\n <mj-page-header Title=\"Templates\" Icon=\"fa-solid fa-file-lines\" Subtitle=\"Manage reusable message templates\">\n <div actions>\n <button mjButton variant=\"primary\" size=\"sm\" (click)=\"addNewTemplate()\">\n <i class=\"fa-solid fa-plus\"></i> New Template\n </button>\n </div>\n <div toolbar>\n <mj-page-search\n Placeholder=\"Search templates...\"\n (ValueChange)=\"onSearchValue($event)\">\n </mj-page-search>\n @if (!isLoading) {\n <mj-filter-chip\n Label=\"All\"\n [Count]=\"allTemplates.length\"\n [Active]=\"categoryFilter === ''\"\n (Clicked)=\"onCategoryFilter('')\">\n </mj-filter-chip>\n @for (cat of categories; track cat) {\n <mj-filter-chip\n [Label]=\"cat\"\n [Count]=\"getCategoryCount(cat)\"\n [Active]=\"categoryFilter === cat\"\n (Clicked)=\"onCategoryFilter(cat)\">\n </mj-filter-chip>\n }\n }\n </div>\n </mj-page-header>\n\n <mj-page-body>\n @if (isLoading) {\n <div class=\"loading-state\">\n <mj-loading text=\"Loading templates...\"></mj-loading>\n </div>\n } @else {\n <div class=\"templates-grid\">\n @for (card of filteredTemplates; track card) {\n <div class=\"template-card\" (click)=\"openTemplate(card.Entity)\">\n <div class=\"template-card-header\">\n <div class=\"template-icon\">\n <i class=\"fa-solid fa-file-lines\"></i>\n </div>\n <div class=\"template-title-area\">\n <div class=\"template-name\">{{card.Entity.Name}}</div>\n <div class=\"template-category\">{{card.CategoryName}}</div>\n </div>\n </div>\n @if (card.Entity.Description) {\n <div class=\"template-description\">\n {{card.Entity.Description}}\n </div>\n }\n <div class=\"template-meta\">\n <div class=\"template-content-types\">\n @for (ct of card.ContentTypes; track ct) {\n <span class=\"content-type-chip\">\n <i [class]=\"getContentTypeIcon(ct)\"></i> {{ct}}\n </span>\n }\n @if (card.ContentTypes.length === 0) {\n <span class=\"content-type-chip empty\">\n No content\n </span>\n }\n </div>\n @if (card.LastUpdated) {\n <div class=\"template-updated\">\n Updated {{card.LastUpdated | date:'mediumDate'}}\n </div>\n }\n </div>\n </div>\n }\n @if (filteredTemplates.length === 0) {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-file-lines\"></i>\n <p>No templates found matching your criteria</p>\n </div>\n }\n </div>\n }\n </mj-page-body>\n </mj-page-layout>\n `,\n styles: [`\n .loading-state {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 80px 0;\n }\n\n /* GRID */\n .templates-grid {\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(320px, 1fr));\n gap: 16px;\n }\n\n .template-card {\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 12px;\n padding: 20px;\n cursor: pointer;\n transition: all 0.15s ease;\n }\n .template-card:hover {\n box-shadow: 0 2px 8px var(--mj-shadow-md);\n border-color: var(--mj-border-strong);\n }\n\n .template-card-header {\n display: flex;\n align-items: center;\n gap: 14px;\n margin-bottom: 12px;\n }\n .template-icon {\n width: 40px; height: 40px;\n border-radius: 8px;\n background: color-mix(in srgb, var(--mj-brand-primary) 15%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n display: flex; align-items: center; justify-content: center;\n font-size: 16px; flex-shrink: 0;\n }\n .template-title-area { flex: 1; min-width: 0; }\n .template-name {\n font-size: 14px; font-weight: 700;\n color: var(--mj-text-primary);\n white-space: nowrap; overflow: hidden; text-overflow: ellipsis;\n }\n .template-category {\n font-size: 11px;\n color: var(--mj-text-muted);\n margin-top: 2px;\n }\n\n .template-description {\n font-size: 12px;\n color: var(--mj-text-muted);\n line-height: 1.5;\n margin-bottom: 12px;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n overflow: hidden;\n }\n\n .template-meta {\n display: flex;\n justify-content: space-between;\n align-items: center;\n }\n .template-content-types {\n display: flex;\n flex-wrap: wrap;\n gap: 6px;\n }\n .content-type-chip {\n display: inline-flex; align-items: center;\n gap: 4px; padding: 3px 8px;\n border-radius: 10px; font-size: 10px; font-weight: 500;\n background: var(--mj-bg-surface);\n color: var(--mj-text-muted);\n }\n .content-type-chip.empty {\n font-style: italic;\n }\n .template-updated {\n font-size: 10px;\n color: var(--mj-text-muted);\n white-space: nowrap;\n }\n\n /* EMPTY STATE */\n .empty-state {\n grid-column: 1 / -1;\n display: flex; flex-direction: column;\n align-items: center; justify-content: center;\n padding: 64px 0; color: var(--mj-text-muted);\n }\n .empty-state i { font-size: 2rem; margin-bottom: 12px; opacity: 0.5; }\n .empty-state p { margin: 0; font-size: 13px; }\n `]\n})\nexport class CommunicationTemplatesResourceComponent extends BaseResourceComponent implements OnInit, OnDestroy {\n public allTemplates: TemplateCardData[] = [];\n public filteredTemplates: TemplateCardData[] = [];\n public categories: string[] = [];\n public categoryFilter = '';\n public isLoading = false;\n private searchTerm = '';\n\n constructor(private cdr: ChangeDetectorRef, private navService: NavigationService) {\n super();\n }\n\n async ngOnInit(): Promise<void> {\n super.ngOnInit();\n await this.loadData();\n this.NotifyLoadComplete();\n }\n\n ngOnDestroy(): void {\n super.ngOnDestroy();\n }\n\n public async loadData(): Promise<void> {\n try {\n this.isLoading = true;\n this.cdr.detectChanges();\n\n const rv = RunView.FromMetadataProvider(this.ProviderToUse);\n const [templatesResult, contentsResult] = await Promise.all([\n rv.RunView<MJTemplateEntity>({\n EntityName: 'MJ: Templates',\n OrderBy: 'Name ASC',\n ResultType: 'entity_object'\n }),\n rv.RunView<MJTemplateContentEntity>({\n EntityName: 'MJ: Template Contents',\n ResultType: 'entity_object'\n })\n ]);\n\n if (templatesResult.Success) {\n const contents = contentsResult.Success ? contentsResult.Results : [];\n this.allTemplates = templatesResult.Results.map(t => this.buildTemplateCard(t, contents));\n this.categories = this.extractCategories(this.allTemplates);\n this.applyFilter();\n }\n } catch (error) {\n console.error('Error loading templates:', error);\n } finally {\n this.isLoading = false;\n this.cdr.detectChanges();\n }\n }\n\n private buildTemplateCard(template: MJTemplateEntity, allContents: MJTemplateContentEntity[]): TemplateCardData {\n const templateContents = allContents.filter(c => UUIDsEqual(c.TemplateID, template.ID));\n const contentTypes = [...new Set(templateContents.map(c => c.TypeID ? 'Content' : 'Text'))];\n const category = template.Category || 'Uncategorized';\n const lastUpdated = template.Get('__mj_UpdatedAt') as Date | null;\n\n return {\n Entity: template,\n ContentTypes: contentTypes.length > 0 ? contentTypes : [],\n LastUpdated: lastUpdated,\n CategoryName: category\n };\n }\n\n private extractCategories(cards: TemplateCardData[]): string[] {\n const cats = new Set(cards.map(c => c.CategoryName));\n return Array.from(cats).sort();\n }\n\n public getCategoryCount(category: string): number {\n return this.allTemplates.filter(t => t.CategoryName === category).length;\n }\n\n public onSearchValue(value: string): void {\n this.searchTerm = (value ?? '').toLowerCase();\n this.applyFilter();\n }\n\n public onCategoryFilter(category: string): void {\n this.categoryFilter = category;\n this.applyFilter();\n }\n\n private applyFilter(): void {\n let filtered = this.allTemplates;\n\n if (this.categoryFilter) {\n filtered = filtered.filter(t => t.CategoryName === this.categoryFilter);\n }\n\n if (this.searchTerm) {\n filtered = filtered.filter(t =>\n t.Entity.Name?.toLowerCase().includes(this.searchTerm) ||\n t.Entity.Description?.toLowerCase().includes(this.searchTerm) ||\n t.CategoryName.toLowerCase().includes(this.searchTerm)\n );\n }\n\n this.filteredTemplates = filtered;\n this.cdr.detectChanges();\n }\n\n public openTemplate(template: MJTemplateEntity): void {\n const pk = new CompositeKey();\n pk.LoadFromEntityInfoAndRecord(this.ProviderToUse.Entities.find(e => e.Name === 'MJ: Templates')!, template);\n this.navService.OpenEntityRecord('MJ: Templates', pk);\n }\n\n public addNewTemplate(): void {\n this.navService.OpenEntityRecord('MJ: Templates', new CompositeKey());\n }\n\n public getContentTypeIcon(type: string): string {\n const t = type.toLowerCase();\n if (t.includes('html')) return 'fa-solid fa-code';\n if (t.includes('text') || t.includes('plain')) return 'fa-solid fa-align-left';\n if (t.includes('sms')) return 'fa-solid fa-comment-sms';\n return 'fa-solid fa-file';\n }\n\n async GetResourceDisplayName(data: ResourceData): Promise<string> {\n return 'Templates';\n }\n\n async GetResourceIconClass(data: ResourceData): Promise<string> {\n return 'fa-solid fa-file-lines';\n }\n}\n"]}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { OnInit, OnDestroy, ChangeDetectorRef } from '@angular/core';
|
|
2
2
|
import { ResourceData, MJAuditLogEntity } from '@memberjunction/core-entities';
|
|
3
3
|
import { BaseResourceComponent } from '@memberjunction/ng-shared';
|
|
4
|
+
import { FilterFieldConfig, ViewToggleOption } from '@memberjunction/ng-ui-components';
|
|
4
5
|
import * as i0 from "@angular/core";
|
|
5
6
|
interface AuditLogWithDetails extends MJAuditLogEntity {
|
|
6
7
|
parsedDetails?: ParsedDetails;
|
|
@@ -38,6 +39,12 @@ export declare class CredentialsAuditResourceComponent extends BaseResourceCompo
|
|
|
38
39
|
failed: number;
|
|
39
40
|
}[];
|
|
40
41
|
operationCounts: Map<string, number>;
|
|
42
|
+
readonly viewOptions: ViewToggleOption[];
|
|
43
|
+
get FilterFields(): FilterFieldConfig[];
|
|
44
|
+
get FilterValues(): Record<string, unknown>;
|
|
45
|
+
get ActiveFilterCount(): number;
|
|
46
|
+
onFilterValuesChange(v: Record<string, unknown>): void;
|
|
47
|
+
resetFilters(): void;
|
|
41
48
|
constructor(cdr: ChangeDetectorRef);
|
|
42
49
|
ngOnInit(): void;
|
|
43
50
|
ngOnDestroy(): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"credentials-audit-resource.component.d.ts","sourceRoot":"","sources":["../../../src/Credentials/components/credentials-audit-resource.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,MAAM,EAAE,SAAS,EAAE,iBAAiB,EAA2B,MAAM,eAAe,CAAC;AACzG,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAE/E,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;;
|
|
1
|
+
{"version":3,"file":"credentials-audit-resource.component.d.ts","sourceRoot":"","sources":["../../../src/Credentials/components/credentials-audit-resource.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,MAAM,EAAE,SAAS,EAAE,iBAAiB,EAA2B,MAAM,eAAe,CAAC;AACzG,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAE/E,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAElE,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;;AAIvF,UAAU,mBAAoB,SAAQ,gBAAgB;IAClD,aAAa,CAAC,EAAE,aAAa,CAAC;CACjC;AAED,UAAU,aAAa;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,UAAU,aAAa;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,mBAAmB,EAAE,CAAC;CAC/B;AAED,qBAQa,iCAAkC,SAAQ,qBAAsB,YAAW,MAAM,EAAE,SAAS;IA8FzF,OAAO,CAAC,GAAG;IA7FhB,SAAS,UAAQ;IACjB,SAAS,EAAE,mBAAmB,EAAE,CAAM;IACtC,YAAY,EAAE,mBAAmB,EAAE,CAAM;IACzC,cAAc,EAAE,aAAa,EAAE,CAAM;IAErC,cAAc,SAAM;IACpB,iBAAiB,SAAM;IACvB,SAAS,SAAO;IAChB,UAAU,SAAM;IAChB,QAAQ,EAAE,OAAO,GAAG,UAAU,CAAc;IAC5C,aAAa,EAAE,MAAM,GAAG,IAAI,CAAQ;IAGpC,UAAU,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,EAAE,CAAM;IACrE,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAa;IAExD,SAAgB,WAAW,EAAE,gBAAgB,EAAE,CAG7C;IAEF,IAAW,YAAY,IAAI,iBAAiB,EAAE,CAuC7C;IACD,IAAW,YAAY,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAMjD;IACD,IAAW,iBAAiB,IAAI,MAAM,CAMrC;IACM,oBAAoB,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAYtD,YAAY,IAAI,IAAI;gBAMP,GAAG,EAAE,iBAAiB;IAI1C,QAAQ,IAAI,IAAI;IAKhB,WAAW,IAAI,IAAI;IAKb,sBAAsB,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC;IAI3D,oBAAoB,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC;YAIjD,QAAQ;IAoCtB,OAAO,CAAC,eAAe;IAMvB,OAAO,CAAC,YAAY;IAWb,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAK1C,uBAAuB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAKhD,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAKrC,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAKnC,WAAW,IAAI,IAAI;IAKnB,WAAW,CAAC,IAAI,EAAE,OAAO,GAAG,UAAU,GAAG,IAAI;IAK7C,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAKpC,YAAY,IAAI,IAAI;IAiC3B,OAAO,CAAC,mBAAmB;IAsB3B,OAAO,CAAC,eAAe;IAoBvB,OAAO,CAAC,cAAc;IAmCf,iBAAiB,IAAI,MAAM;IAI3B,gBAAgB,IAAI,MAAM,EAAE;IAI5B,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAQtC,gBAAgB,CAAC,GAAG,EAAE,mBAAmB,GAAG,MAAM;IAIlD,YAAY,CAAC,GAAG,EAAE,mBAAmB,GAAG,MAAM;IAI9C,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;IAY3C,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;IAY5C,UAAU,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,GAAG,IAAI,GAAG,MAAM;IAa9C,UAAU,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,GAAG,IAAI,GAAG,MAAM;IAU9C,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM;IAM9C,OAAO,IAAI,IAAI;IAIf,eAAe,IAAI,MAAM;IAIzB,cAAc,IAAI,MAAM;IAIxB,cAAc,IAAI,MAAM;IAKxB,kBAAkB,IAAI,MAAM;IAK5B,WAAW,IAAI,IAAI;yCA7ZjB,iCAAiC;2CAAjC,iCAAiC;CAob7C"}
|