@memberjunction/ng-explorer-core 6.2.0-edge.3 → 6.2.0-edge.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (117) hide show
  1. package/README.md +10 -0
  2. package/dist/app-routing.module.d.ts.map +1 -1
  3. package/dist/app-routing.module.js +5 -0
  4. package/dist/app-routing.module.js.map +1 -1
  5. package/dist/generated/lazy-feature-config.d.ts +1 -1
  6. package/dist/generated/lazy-feature-config.d.ts.map +1 -1
  7. package/dist/generated/lazy-feature-config.js +3 -2
  8. package/dist/generated/lazy-feature-config.js.map +1 -1
  9. package/dist/lib/guards/moved-nav-item-redirect.d.ts +15 -0
  10. package/dist/lib/guards/moved-nav-item-redirect.d.ts.map +1 -0
  11. package/dist/lib/guards/moved-nav-item-redirect.js +37 -0
  12. package/dist/lib/guards/moved-nav-item-redirect.js.map +1 -0
  13. package/dist/lib/omnibar/omnibar-dashboard-matches.d.ts +34 -0
  14. package/dist/lib/omnibar/omnibar-dashboard-matches.d.ts.map +1 -0
  15. package/dist/lib/omnibar/omnibar-dashboard-matches.js +70 -0
  16. package/dist/lib/omnibar/omnibar-dashboard-matches.js.map +1 -0
  17. package/dist/lib/omnibar/omnibar-palette.component.d.ts +27 -2
  18. package/dist/lib/omnibar/omnibar-palette.component.d.ts.map +1 -1
  19. package/dist/lib/omnibar/omnibar-palette.component.js +126 -65
  20. package/dist/lib/omnibar/omnibar-palette.component.js.map +1 -1
  21. package/dist/lib/omnibar/omnibar-provider.d.ts +4 -0
  22. package/dist/lib/omnibar/omnibar-provider.d.ts.map +1 -1
  23. package/dist/lib/omnibar/omnibar-provider.js.map +1 -1
  24. package/dist/lib/omnibar/providers/omnibar-record.provider.d.ts +2 -2
  25. package/dist/lib/omnibar/providers/omnibar-record.provider.d.ts.map +1 -1
  26. package/dist/lib/omnibar/providers/omnibar-record.provider.js +3 -7
  27. package/dist/lib/omnibar/providers/omnibar-record.provider.js.map +1 -1
  28. package/dist/lib/omnibar/providers/omnibar-search.provider.d.ts +15 -2
  29. package/dist/lib/omnibar/providers/omnibar-search.provider.d.ts.map +1 -1
  30. package/dist/lib/omnibar/providers/omnibar-search.provider.js +59 -7
  31. package/dist/lib/omnibar/providers/omnibar-search.provider.js.map +1 -1
  32. package/dist/lib/profile/forking-setting.d.ts +8 -0
  33. package/dist/lib/profile/forking-setting.d.ts.map +1 -0
  34. package/dist/lib/profile/forking-setting.js +18 -0
  35. package/dist/lib/profile/forking-setting.js.map +1 -0
  36. package/dist/lib/profile/profile-dialog.component.d.ts +8 -0
  37. package/dist/lib/profile/profile-dialog.component.d.ts.map +1 -1
  38. package/dist/lib/profile/profile-dialog.component.js +182 -92
  39. package/dist/lib/profile/profile-dialog.component.js.map +1 -1
  40. package/dist/lib/resource-wrappers/artifact-resource.component.d.ts +16 -1
  41. package/dist/lib/resource-wrappers/artifact-resource.component.d.ts.map +1 -1
  42. package/dist/lib/resource-wrappers/artifact-resource.component.js +27 -4
  43. package/dist/lib/resource-wrappers/artifact-resource.component.js.map +1 -1
  44. package/dist/lib/resource-wrappers/chat-conversations-resource.component.d.ts +7 -18
  45. package/dist/lib/resource-wrappers/chat-conversations-resource.component.d.ts.map +1 -1
  46. package/dist/lib/resource-wrappers/chat-conversations-resource.component.js +20 -41
  47. package/dist/lib/resource-wrappers/chat-conversations-resource.component.js.map +1 -1
  48. package/dist/lib/resource-wrappers/chat-search-routing.d.ts +10 -3
  49. package/dist/lib/resource-wrappers/chat-search-routing.d.ts.map +1 -1
  50. package/dist/lib/resource-wrappers/chat-search-routing.js +11 -4
  51. package/dist/lib/resource-wrappers/chat-search-routing.js.map +1 -1
  52. package/dist/lib/resource-wrappers/dashboard-add-to-menu.component.d.ts +29 -0
  53. package/dist/lib/resource-wrappers/dashboard-add-to-menu.component.d.ts.map +1 -0
  54. package/dist/lib/resource-wrappers/dashboard-add-to-menu.component.js +141 -0
  55. package/dist/lib/resource-wrappers/dashboard-add-to-menu.component.js.map +1 -0
  56. package/dist/lib/resource-wrappers/dashboard-part-config.d.ts +28 -0
  57. package/dist/lib/resource-wrappers/dashboard-part-config.d.ts.map +1 -0
  58. package/dist/lib/resource-wrappers/dashboard-part-config.js +150 -0
  59. package/dist/lib/resource-wrappers/dashboard-part-config.js.map +1 -0
  60. package/dist/lib/resource-wrappers/dashboard-resource.component.d.ts +361 -56
  61. package/dist/lib/resource-wrappers/dashboard-resource.component.d.ts.map +1 -1
  62. package/dist/lib/resource-wrappers/dashboard-resource.component.js +1312 -361
  63. package/dist/lib/resource-wrappers/dashboard-resource.component.js.map +1 -1
  64. package/dist/lib/resource-wrappers/dashboard-source-search.d.ts +86 -0
  65. package/dist/lib/resource-wrappers/dashboard-source-search.d.ts.map +1 -0
  66. package/dist/lib/resource-wrappers/dashboard-source-search.js +136 -0
  67. package/dist/lib/resource-wrappers/dashboard-source-search.js.map +1 -0
  68. package/dist/lib/resource-wrappers/dashboard-studio-pane.d.ts +30 -0
  69. package/dist/lib/resource-wrappers/dashboard-studio-pane.d.ts.map +1 -0
  70. package/dist/lib/resource-wrappers/dashboard-studio-pane.js +55 -0
  71. package/dist/lib/resource-wrappers/dashboard-studio-pane.js.map +1 -0
  72. package/dist/lib/resource-wrappers/dashboard-studio-tools.d.ts +135 -0
  73. package/dist/lib/resource-wrappers/dashboard-studio-tools.d.ts.map +1 -0
  74. package/dist/lib/resource-wrappers/dashboard-studio-tools.js +856 -0
  75. package/dist/lib/resource-wrappers/dashboard-studio-tools.js.map +1 -0
  76. package/dist/lib/resource-wrappers/dashboard-tab-agent.d.ts +87 -0
  77. package/dist/lib/resource-wrappers/dashboard-tab-agent.d.ts.map +1 -0
  78. package/dist/lib/resource-wrappers/dashboard-tab-agent.js +125 -0
  79. package/dist/lib/resource-wrappers/dashboard-tab-agent.js.map +1 -0
  80. package/dist/lib/resource-wrappers/livekit-room-resource.component.d.ts +28 -7
  81. package/dist/lib/resource-wrappers/livekit-room-resource.component.d.ts.map +1 -1
  82. package/dist/lib/resource-wrappers/livekit-room-resource.component.js +174 -112
  83. package/dist/lib/resource-wrappers/livekit-room-resource.component.js.map +1 -1
  84. package/dist/lib/resource-wrappers/search-results-resource.component.d.ts.map +1 -1
  85. package/dist/lib/resource-wrappers/search-results-resource.component.js +5 -4
  86. package/dist/lib/resource-wrappers/search-results-resource.component.js.map +1 -1
  87. package/dist/lib/shell/components/tabs/tab-container.component.d.ts +7 -0
  88. package/dist/lib/shell/components/tabs/tab-container.component.d.ts.map +1 -1
  89. package/dist/lib/shell/components/tabs/tab-container.component.js +20 -2
  90. package/dist/lib/shell/components/tabs/tab-container.component.js.map +1 -1
  91. package/dist/lib/shell/dashboard-tab-for-url.d.ts +35 -0
  92. package/dist/lib/shell/dashboard-tab-for-url.d.ts.map +1 -0
  93. package/dist/lib/shell/dashboard-tab-for-url.js +39 -0
  94. package/dist/lib/shell/dashboard-tab-for-url.js.map +1 -0
  95. package/dist/lib/shell/shell.component.d.ts +31 -2
  96. package/dist/lib/shell/shell.component.d.ts.map +1 -1
  97. package/dist/lib/shell/shell.component.js +109 -35
  98. package/dist/lib/shell/shell.component.js.map +1 -1
  99. package/dist/lib/shell/shell.module.d.ts +2 -1
  100. package/dist/lib/shell/shell.module.d.ts.map +1 -1
  101. package/dist/lib/shell/shell.module.js +6 -2
  102. package/dist/lib/shell/shell.module.js.map +1 -1
  103. package/dist/lib/single-dashboard/single-dashboard.component.js +1 -1
  104. package/dist/lib/single-dashboard/single-dashboard.component.js.map +1 -1
  105. package/dist/lib/template-user/template-user-banner.component.d.ts +20 -0
  106. package/dist/lib/template-user/template-user-banner.component.d.ts.map +1 -0
  107. package/dist/lib/template-user/template-user-banner.component.js +67 -0
  108. package/dist/lib/template-user/template-user-banner.component.js.map +1 -0
  109. package/dist/module.d.ts +61 -59
  110. package/dist/module.d.ts.map +1 -1
  111. package/dist/module.js +7 -0
  112. package/dist/module.js.map +1 -1
  113. package/dist/public-api.d.ts +1 -0
  114. package/dist/public-api.d.ts.map +1 -1
  115. package/dist/public-api.js +1 -0
  116. package/dist/public-api.js.map +1 -1
  117. package/package.json +58 -53
@@ -1,25 +1,66 @@
1
1
  import { ViewContainerRef, ElementRef, ChangeDetectorRef } from '@angular/core';
2
2
  import { BaseResourceComponent } from '@memberjunction/ng-shared';
3
3
  import { ResourceData, MJDashboardEntity, MJDashboardUserStateEntity, DashboardUserPermissions } from '@memberjunction/core-entities';
4
- import type { ShareDialogResult } from '@memberjunction/ng-dashboards/core-dashboards.module';
4
+ import type { MJConversationEntity } from '@memberjunction/core-entities';
5
+ import { CompositeKey } from '@memberjunction/core';
6
+ import type { NavigationRequest } from '@memberjunction/ng-artifacts';
7
+ import type { PendingAttachment } from '@memberjunction/ng-composer';
8
+ import type { DashboardEditorLoadError, ShareDialogResult } from '@memberjunction/ng-dashboards/core-dashboards.module';
9
+ import type { DashboardNavRequestEvent } from '@memberjunction/ng-dashboard-viewer';
10
+ import type { DashboardStudioHost } from './dashboard-studio-tools';
5
11
  import * as i0 from "@angular/core";
12
+ /** What an agent's Request* tool asks the user to confirm. */
13
+ type AgentConfirmKind = Parameters<DashboardStudioHost['Confirm']>[0];
14
+ /** The confirm dialog an agent's request opens: what it asks, and the texts it shows. */
15
+ interface AgentConfirmDialog {
16
+ Kind: AgentConfirmKind;
17
+ Title: string;
18
+ Message: string;
19
+ ConfirmText: string;
20
+ }
21
+ /** What the chat area's ConversationCreated output gives: the new conversation and the first message to send in it. */
22
+ interface ChatConversationCreated {
23
+ conversation: MJConversationEntity;
24
+ pendingMessage?: string;
25
+ pendingAttachments?: PendingAttachment[];
26
+ }
6
27
  /**
7
28
  * Dashboard Resource Wrapper - displays a single dashboard in a tab
8
29
  * Extends BaseResourceComponent to work with the resource type system
9
- * Dynamically routes between code-based and config-based dashboards based on dashboard type
30
+ * Dynamically routes between code-based and config-based dashboards based on dashboard type:
31
+ * a Config dashboard shows in the shared dashboard editor (`mj-dashboard-editor`) with the AI pane
32
+ * beside it, and a Code dashboard or the Data Explorer shows in the tab's own container.
10
33
  */
11
34
  export declare class DashboardResource extends BaseResourceComponent {
12
35
  private viewContainer;
13
36
  private cdr;
14
37
  private componentRef;
38
+ private recentAccess;
39
+ private homePins;
40
+ private realtimeSession;
41
+ private artifactPermissions;
42
+ /** The editor that shows the Config dashboard. Undefined while the tab shows none. */
43
+ private editor?;
44
+ /** The panels last reported to the agent, as JSON. Null until the open dashboard is first reported. */
45
+ private reportedPanelsKey;
15
46
  /**
16
- * A cache reattach moves this wrapper to another tab without recreating the dashboard inside it,
17
- * so the child's tab stamp — taken when we created it — has to move too. Without this the
18
- * dashboard keeps reading and writing the params of the tab it was born in, from inside a tab it
19
- * no longer belongs to.
47
+ * True once the tab registered the agent tools for the dashboard the editor loaded. Until then the
48
+ * tab reports no context, so the first report comes with the tools.
49
+ */
50
+ private agentStatePublished;
51
+ /** True once the tab follows edit-mode requests (see watchEditModeRequests). */
52
+ private watchingEditModeRequests;
53
+ /**
54
+ * A cache reattach moves this wrapper to another tab without recreating the dashboard inside it.
55
+ * A child resource component (a Code dashboard, the Data Explorer) has its own tab stamp, taken
56
+ * when we created it, and it has to move too. Without this the dashboard keeps reading and
57
+ * writing the params of the tab it was born in, from inside a tab it no longer belongs to. The
58
+ * editor has no tab of its own. The new tab can hold an edit-mode request (a card's Edit
59
+ * action reopens a closed tab this way), so the tab takes it here, where no load will.
20
60
  */
21
61
  protected onTabIdRebound(tabId: string): void;
22
62
  private dataLoaded;
63
+ /** The element that holds a Code dashboard or the Data Explorer. */
23
64
  ContainerElement: ElementRef<HTMLDivElement>;
24
65
  /** @deprecated Use {@link ContainerElement}. */
25
66
  get containerElement(): ElementRef<HTMLDivElement>;
@@ -33,45 +74,104 @@ export declare class DashboardResource extends BaseResourceComponent {
33
74
  get errorDetails(): string | null;
34
75
  /** @deprecated Use {@link ErrorDetails}. */
35
76
  set errorDetails(value: string | null);
36
- /** Cached dashboard categories for breadcrumb navigation */
37
- private categories;
38
- /** Reference to the dashboard viewer component (for config-based dashboards) */
39
- private viewerInstance;
40
- /** The config-based dashboard entity (null for code-based dashboards) */
41
- ConfigDashboard: MJDashboardEntity | null;
77
+ /** The Config dashboard the editor shows. Null for a Code dashboard, the Data Explorer, or none. */
78
+ ConfigDashboardId: string | null;
79
+ /** The Config dashboard the editor shows, or null (a Code dashboard, the Data Explorer, or none). */
80
+ get ConfigDashboard(): MJDashboardEntity | null;
42
81
  /** @deprecated Use {@link ConfigDashboard}. */
43
82
  get configDashboard(): MJDashboardEntity | null;
44
- /** @deprecated Use {@link ConfigDashboard}. */
45
- set configDashboard(value: MJDashboardEntity | null);
46
- /** Whether we're in edit mode */
47
- IsEditMode: boolean;
83
+ /** True while the editor is in edit mode. */
84
+ get IsEditMode(): boolean;
48
85
  /** @deprecated Use {@link IsEditMode}. */
49
86
  get isEditMode(): boolean;
50
- /** @deprecated Use {@link IsEditMode}. */
51
- set isEditMode(value: boolean);
52
- /** Editing fields */
53
- EditingName: string;
54
- /** @deprecated Use {@link EditingName}. */
87
+ /** True when the user may share the dashboard the editor shows. */
88
+ get CanShare(): boolean;
89
+ /** The confirm dialog an agent's Request* tool opened, or null. The user, not the agent, saves or pins. */
90
+ AgentConfirm: AgentConfirmDialog | null;
91
+ /** The request behind the open agent confirm dialog. Null while none is open. */
92
+ private agentConfirmRequest;
93
+ /** True while the AI pane shows beside the dashboard. */
94
+ ChatOpen: boolean;
95
+ /** True while the AI pane takes its largest width (CopilotMaxPct). */
96
+ CopilotExpanded: boolean;
97
+ /** The dashboard's width while the AI pane is open, in percent of the tab's width. */
98
+ MainSizePct: number;
99
+ /** The AI pane's width, in percent of the tab's width. */
100
+ CopilotSizePct: number;
101
+ /** The smallest width of the AI pane, in percent of the tab's width. */
102
+ readonly CopilotMinPct = 20;
103
+ /** The largest width of the AI pane, in percent of the tab's width. */
104
+ readonly CopilotMaxPct = 60;
105
+ /** True while the dialog that asks before a voice session ends with the AI pane is open. */
106
+ ShowCloseChatConfirm: boolean;
107
+ /** The agent the AI pane talks to: the Dashboards application's default agent. Null until it resolves. */
108
+ ChatAgentId: string | null;
109
+ /** The name of that agent, which the AI pane shows in its header. */
110
+ ChatAgentName: string | null;
111
+ /** Why the AI pane has no agent, or null. The pane then shows this instead of the chat. */
112
+ ChatAgentError: string | null;
113
+ /** The AI pane's conversation, from the moment its first message created it. */
114
+ ChatConversation: MJConversationEntity | null;
115
+ /** The ID of the AI pane's conversation. */
116
+ ChatConversationId: string | null;
117
+ /** True until the first message creates the AI pane's conversation. */
118
+ ChatIsNewConversation: boolean;
119
+ /** The first message, which the chat area sends once it has created the conversation. Null after it is sent. */
120
+ ChatPendingMessage: string | null;
121
+ /** The files attached to the first message, sent with it. */
122
+ ChatPendingAttachments: PendingAttachment[] | null;
123
+ /** The shell's app context snapshot, as the chat area's AppContext input takes it. The agent reads it. */
124
+ ChatAppContext: Record<string, unknown> | null;
125
+ /** The application the AI pane's conversations belong to, and whose default agent answers in it. */
126
+ readonly ChatApplicationId = "4B439111-B492-4936-9E33-A428CB5725B4";
127
+ /** True while the AI pane resolves its agent. */
128
+ private resolvingChatAgent;
129
+ /** The environment of the AI pane's conversations and of the artifacts the agent searches: the tab's, else the default. */
130
+ get ChatEnvironmentId(): string;
131
+ /** @deprecated Use {@link DashboardEditorComponent.EditingName}. */
132
+ get EditingName(): string;
133
+ /** @deprecated Use {@link DashboardEditorComponent.EditingName}. */
134
+ set EditingName(value: string);
135
+ /** @deprecated Use {@link DashboardEditorComponent.EditingName}. */
55
136
  get editingName(): string;
56
- /** @deprecated Use {@link EditingName}. */
137
+ /** @deprecated Use {@link DashboardEditorComponent.EditingName}. */
57
138
  set editingName(value: string);
58
- EditingDescription: string;
59
- /** @deprecated Use {@link EditingDescription}. */
139
+ /** @deprecated Use {@link DashboardEditorComponent.EditingDescription}. */
140
+ get EditingDescription(): string;
141
+ /** @deprecated Use {@link DashboardEditorComponent.EditingDescription}. */
142
+ set EditingDescription(value: string);
143
+ /** @deprecated Use {@link DashboardEditorComponent.EditingDescription}. */
60
144
  get editingDescription(): string;
61
- /** @deprecated Use {@link EditingDescription}. */
145
+ /** @deprecated Use {@link DashboardEditorComponent.EditingDescription}. */
62
146
  set editingDescription(value: string);
63
- /** Current user's permissions for this dashboard */
64
- DashboardPermissions: DashboardUserPermissions;
65
- /** @deprecated Use {@link DashboardPermissions}. */
147
+ /** @deprecated Use {@link DashboardEditorComponent.Permissions}. */
148
+ get DashboardPermissions(): DashboardUserPermissions;
149
+ /** @deprecated Use {@link DashboardEditorComponent.Permissions}. */
66
150
  get dashboardPermissions(): DashboardUserPermissions;
67
- /** @deprecated Use {@link DashboardPermissions}. */
68
- set dashboardPermissions(value: DashboardUserPermissions);
151
+ /** @deprecated Use {@link DashboardEditorComponent.ToggleEditMode}. */
152
+ ToggleEditMode(): void;
153
+ /** @deprecated Use {@link DashboardEditorComponent.ToggleEditMode}. */
154
+ toggleEditMode(): void;
155
+ /** @deprecated Use {@link DashboardEditorComponent.CancelEdit}. */
156
+ CancelEdit(): void;
157
+ /** @deprecated Use {@link DashboardEditorComponent.CancelEdit}. */
158
+ cancelEdit(): void;
159
+ /** @deprecated Use {@link DashboardEditorComponent.SaveDashboard}. */
160
+ SaveDashboard(): Promise<void>;
161
+ /** @deprecated Use {@link DashboardEditorComponent.SaveDashboard}. */
162
+ saveDashboard(): Promise<void>;
163
+ /** @deprecated Use {@link DashboardEditorComponent.OpenAddPartDialog}. */
164
+ OpenAddPartDialog(): void;
165
+ /** @deprecated Use {@link DashboardEditorComponent.OpenAddPartDialog}. */
166
+ openAddPartDialog(): void;
69
167
  /** Whether the share dialog is visible */
70
168
  ShowShareDialog: boolean;
71
169
  /** @deprecated Use {@link ShowShareDialog}. */
72
170
  get showShareDialog(): boolean;
73
171
  /** @deprecated Use {@link ShowShareDialog}. */
74
172
  set showShareDialog(value: boolean);
173
+ /** True when the open Config dashboard is pinned to Home. */
174
+ get IsPinnedToHome(): boolean;
75
175
  /**
76
176
  * Sets the error state with a user-friendly message and optional technical details
77
177
  */
@@ -83,35 +183,58 @@ export declare class DashboardResource extends BaseResourceComponent {
83
183
  constructor(viewContainer: ViewContainerRef, cdr: ChangeDetectorRef);
84
184
  set Data(value: ResourceData);
85
185
  get Data(): ResourceData;
186
+ ngOnInit(): void;
86
187
  ngOnDestroy(): void;
87
188
  /**
88
- * Toggle between view and edit mode
189
+ * Shows a Config dashboard in the editor, which reads it from DashboardEngine. The editor's Loaded
190
+ * or LoadFailed event finishes the load (OnEditorLoaded, OnEditorLoadFailed).
89
191
  */
90
- ToggleEditMode(): void;
91
- /** @deprecated Use {@link ToggleEditMode}. */
92
- toggleEditMode(): void;
192
+ private showConfigDashboard;
93
193
  /**
94
- * Enter edit mode
194
+ * The editor shows the dashboard and its layout is ready. The loading screen goes, the tab takes an
195
+ * edit-mode request (a new dashboard, or a card's Edit action) when it has one, and the agent gets
196
+ * its tools and the dashboard. NavigationService removes the request when the tab takes it, so a
197
+ * later load of the tab opens for viewing.
95
198
  */
96
- private enterEditMode;
199
+ OnEditorLoaded(dashboard: MJDashboardEntity): void;
200
+ /** The editor could not show the dashboard: the tab shows why, and the loading screen goes. */
201
+ OnEditorLoadFailed(error: DashboardEditorLoadError): void;
97
202
  /**
98
- * Cancel edit mode and discard changes
203
+ * The dashboard's saved name changed, by a save here or elsewhere. The tab takes the name as its
204
+ * title and keeps its dashboard ID: ResourceRecordSaved would rewrite the record ID in a form the
205
+ * tab configuration does not have, and the tab would reload on each Save.
99
206
  */
100
- CancelEdit(): void;
101
- /** @deprecated Use {@link CancelEdit}. */
102
- cancelEdit(): void;
207
+ OnEditorNameChanged(name: string): void;
208
+ /** The editor entered or left edit mode: the tab reports it to the agent. */
209
+ OnEditorEditingChange(): void;
210
+ /** The editor's parts or layout changed: the tab reports the panels to the agent when they changed. */
211
+ OnEditorConfigChanged(): void;
212
+ /** The editor rebuilt the saved layout after a save elsewhere: the rebuild reports nothing to the agent. */
213
+ OnEditorReloaded(): void;
214
+ /** The user starred or unstarred the dashboard in the editor. */
215
+ OnEditorFavoriteChange(): void;
216
+ /** A part of the dashboard asked to open something: a record, another dashboard, a query. */
217
+ OnEditorNavigationRequested(event: DashboardNavRequestEvent): void;
103
218
  /**
104
- * Save dashboard changes
219
+ * Takes the tab's edit-mode request, if it has one for this tab's dashboard, and enters edit mode in
220
+ * the editor. A tab that has not finished loading leaves the request for its load (see
221
+ * OnEditorLoaded). A tab that is already editing keeps its changes. A request for what the tab shows
222
+ * now stays for that tab's component: a cached component can still be bound to a tab ID that OpenTab
223
+ * gave to another dashboard, or to this dashboard in another application.
105
224
  */
106
- SaveDashboard(): Promise<void>;
107
- /** @deprecated Use {@link SaveDashboard}. */
108
- saveDashboard(): Promise<void>;
225
+ private takeEditModeRequest;
226
+ /** The application of the tab this component was loaded for, from the resource data the tab container gives it. */
227
+ private tabApplicationId;
109
228
  /**
110
- * Open the add panel dialog
229
+ * Enters edit mode when OpenDashboard asks this open tab to (NavigationService.DashboardEditModeRequested$).
230
+ * Starts once per tab, and stops when the tab is destroyed.
111
231
  */
112
- OpenAddPartDialog(): void;
113
- /** @deprecated Use {@link OpenAddPartDialog}. */
114
- openAddPartDialog(): void;
232
+ private watchEditModeRequests;
233
+ /**
234
+ * Takes the viewer's current panels as the ones last reported to the agent, so the change events
235
+ * of a reloaded layout report nothing. Does nothing before the first report.
236
+ */
237
+ private treatPanelsAsReported;
115
238
  /**
116
239
  * Open the share dialog for this dashboard
117
240
  */
@@ -125,9 +248,188 @@ export declare class DashboardResource extends BaseResourceComponent {
125
248
  /** @deprecated Use {@link CloseShareDialog}. */
126
249
  closeShareDialog(): void;
127
250
  /**
128
- * Handle share dialog result
251
+ * Handle share dialog result. After a save the editor reads the user's permissions again, since
252
+ * sharing can change them.
129
253
  */
130
254
  OnShareDialogResult(result: ShareDialogResult): void;
255
+ /** Pins the open dashboard to Home as a card, then adds a thumbnail of it in the background. */
256
+ PinToHome(): Promise<void>;
257
+ /**
258
+ * Reads one placement flag (the pin) for a dashboard. False without a dashboard,
259
+ * or when the user cannot read that data (the engine throws PermissionConstrainedError).
260
+ */
261
+ private readPlacement;
262
+ /** The Home pin for a dashboard, in the shared dashboard pin shape. */
263
+ private homePinFor;
264
+ /**
265
+ * Adds a thumbnail of the dashboard (the editor's body) to its pin. Best effort: without one, Home
266
+ * shows the pin's icon. Logs a failure and never rejects, because the caller does not wait for it.
267
+ */
268
+ private attachPinThumbnail;
269
+ /** Loads the user's Home pins, so the Add to menu can show whether this dashboard is pinned. */
270
+ private loadHomePins;
271
+ /** Updates the header buttons and reports the new placement to the agent. */
272
+ private onPlacementChanged;
273
+ /** Opens the AI pane with the widths the user saved, or closes it as CloseChat does. */
274
+ ToggleChat(): void;
275
+ /**
276
+ * Closes the AI pane. Its conversation stays, so the pane shows it again when it opens. Closing the pane
277
+ * ends a voice session, so while one runs the user confirms first (OnCloseChatConfirmed).
278
+ */
279
+ CloseChat(): void;
280
+ /** The user confirmed: the AI pane closes, and the voice session ends with it. */
281
+ OnCloseChatConfirmed(): void;
282
+ /** The user keeps the AI pane open, and the voice session with it. */
283
+ OnCloseChatCancelled(): void;
284
+ /** Gives the AI pane its largest width, or its own width again. */
285
+ ToggleCopilotExpanded(): void;
286
+ /**
287
+ * Keeps the widths the user dragged the split to, in this tab and in the user's settings. The AI pane then
288
+ * has that width, not its largest one. Sizes that are not two numbers change nothing.
289
+ */
290
+ OnCopilotSplitDragEnd(sizes: readonly (number | '*')[]): void;
291
+ /**
292
+ * The chat area created the AI pane's conversation for the first message. The pane keeps the conversation
293
+ * and gives the message back to the chat area, which then sends it in that conversation.
294
+ */
295
+ OnChatConversationCreated(event: ChatConversationCreated): void;
296
+ /**
297
+ * A voice call started before any message, so the server created the AI pane's conversation. When the
298
+ * call ends, the pane adopts that conversation, so the chat area shows the call's transcript and the
299
+ * next message goes to it. The start of the call reports the same conversation without `select`; the
300
+ * pane leaves the chat area alone until the call ends, as the Conversations app does.
301
+ */
302
+ OnChatRealtimeConversationReady(event: {
303
+ conversationId: string;
304
+ select: boolean;
305
+ }): Promise<void>;
306
+ /** The conversation with `conversationId` that the user can read, or null. */
307
+ private loadChatConversation;
308
+ /** The chat area sent the first message. The pane drops it, so the chat area does not send it again. */
309
+ OnChatPendingMessageConsumed(): void;
310
+ /** Opens the app page that an artifact in the chat asks for. An app the metadata does not name opens the page in the current app. */
311
+ OnChatNavigationRequest(request: NavigationRequest): void;
312
+ /** Opens a record that the chat links to. */
313
+ OnChatOpenEntityRecord(event: {
314
+ entityName: string;
315
+ compositeKey: CompositeKey;
316
+ }): void;
317
+ /** Keeps the shell's latest app context snapshot for the chat, until the tab is destroyed. Renders only while the pane is open. */
318
+ private watchAppContext;
319
+ /** The AI pane widths in the user's settings, or the defaults when the settings cannot be read. */
320
+ private savedPanePrefs;
321
+ private applyPanePrefs;
322
+ private closeChatPane;
323
+ /** The ID of the application with this name, in any case, or undefined when the metadata has none. */
324
+ private applicationIdByName;
325
+ /**
326
+ * Resolves the agent the AI pane talks to: the Dashboards application's default agent
327
+ * (Application.AgentSettings.DefaultAgentID). When the resolver falls back to Sage, the application has no
328
+ * agent of its own, and the pane says so instead of showing a chat. After a failure the next open tries again.
329
+ */
330
+ private ensureChatAgentResolved;
331
+ /**
332
+ * Registers the tab's tools and reports the open Config dashboard to the agent. The studio tools
333
+ * of one registration share an edit queue, so the tab registers them once for each dashboard load.
334
+ */
335
+ private publishAgentState;
336
+ /**
337
+ * Reports the Config dashboard the editor shows to the agent. Does nothing while none is shown, and
338
+ * before the tab registered the tools for it: an edit-mode request taken on the load reports nothing
339
+ * of its own, so the load reports once.
340
+ */
341
+ private emitAgentContext;
342
+ /** Reports the dashboard again when its panels change. A layout move or resize reports nothing. */
343
+ private onViewerConfigChanged;
344
+ /** The reads the agent tools make from this tab. */
345
+ private agentHost;
346
+ private isOpenDashboard;
347
+ /**
348
+ * The open dashboard's panels, read from the editor's viewer and its live layout, so unsaved edits
349
+ * count. Empty while the viewer is not ready. Best effort: a failed read never stops the context report.
350
+ */
351
+ private livePanels;
352
+ /** The panels saved in a dashboard's layout. Empty when the layout or the part types cannot be read. */
353
+ private savedPanels;
354
+ /**
355
+ * The reads and edits the studio tools make on this tab, through its editor, and the requests they
356
+ * put to the user. DashboardStudioHost says what each member must do.
357
+ */
358
+ private studioHost;
359
+ /**
360
+ * The studio host's edits. Each runs through runAgentEdit, so it rejects with the reason when it
361
+ * cannot be made, and an edit the viewer can skip without an error is checked afterwards.
362
+ */
363
+ private studioEdits;
364
+ /**
365
+ * Makes one agent edit on the editor's viewer, then reports the dashboard's parts to the agent again.
366
+ * The edit waits until the viewer's layout is ready: entering edit mode can reload the saved
367
+ * dashboard. Rejects with an Error that says why when no viewer is open, the editor's Save runs, or
368
+ * the edit fails; the user also sees a failed edit.
369
+ */
370
+ private runAgentEdit;
371
+ /**
372
+ * The box of each panel the tab shows, in CSS pixels from the top left corner of the element that
373
+ * CaptureScreenshot captures (the editor's body). A panel whose content is hidden, such as one in a
374
+ * stack's inactive tab, is left out. html-to-image draws a scrolled container from its top, so each
375
+ * box adds the container's scroll offset. None while the editor shows no dashboard.
376
+ */
377
+ private panelBounds;
378
+ /**
379
+ * Searches the sources the user may show in a panel. First loads the engines that the searched kinds
380
+ * read: the tab starts these loads with the dashboard, and a load that failed then runs again here.
381
+ */
382
+ private searchSources;
383
+ /** The lists the source search reads, each limited to what the user may use. */
384
+ private sourceSearchDeps;
385
+ /**
386
+ * Loads the engines the source search reads for `kinds`: user views for 'view' and queries for
387
+ * 'query'. Artifacts and entities need neither. A loaded engine returns at once.
388
+ */
389
+ private loadSourceEngines;
390
+ /**
391
+ * Starts to load the source search engines with a Config dashboard, so that the agent's first search
392
+ * usually finds them loaded. The dashboard does not wait for it. Never rejects: a failure is logged,
393
+ * and the search loads the engines again.
394
+ */
395
+ private preloadSourceEngines;
396
+ /**
397
+ * The artifacts the user can read in the tab's environment (ChatEnvironmentId) whose name or description
398
+ * contains `query` in any case (all of them for a blank query), the first SOURCE_SEARCH_MAX_ARTIFACTS by
399
+ * name, each with its latest version number. An artifact whose versions cannot be read has none, so
400
+ * its panel shows the latest version. Rejects when the artifacts cannot be read.
401
+ */
402
+ private artifactSources;
403
+ /**
404
+ * The highest version number of each artifact, by normalized artifact ID. One RunViews call reads
405
+ * every version of the artifacts, highest first and without the entity's row cap, with at most
406
+ * ARTIFACT_VERSION_FILTER_CHUNK IDs in each filter. The artifacts whose versions cannot be read are
407
+ * not in the map, and the failure is logged.
408
+ */
409
+ private latestArtifactVersions;
410
+ /**
411
+ * Opens the confirm dialog for an agent's request and settles with the user's answer: true once the
412
+ * confirmed action is done, false when the user cancels. Rejects when no Config dashboard is open,
413
+ * when another confirmation is open, when the confirmed action fails, and when no answer comes
414
+ * within AGENT_CONFIRM_TIMEOUT_MS; the dialog closes first.
415
+ */
416
+ private askAgentConfirm;
417
+ /** Takes the user's answer to the agent's confirm dialog. Does nothing when no dialog is open. */
418
+ OnAgentConfirm(confirmed: boolean): void;
419
+ /** Closes the agent's confirm dialog, if one is open, and fails its request with `reason`. */
420
+ private abortAgentConfirm;
421
+ /** Closes the agent's confirm dialog and returns its request, or null when none is open. */
422
+ private closeAgentConfirm;
423
+ /** Does what the user confirmed, as the editor's Save and the Add to menu do it. Rejects when it did not take effect. */
424
+ private performAgentRequest;
425
+ /**
426
+ * Saves the dashboard through the editor, as its Save does, with the new name and description the
427
+ * agent gave. Rejects with the reason the save did not happen. While a Save runs the editor refuses
428
+ * at once and leaves its name and description fields as they are, because that Save reads them.
429
+ */
430
+ private saveForAgent;
431
+ /** Pins the dashboard to Home as the Add to menu does. Rejects when it is not pinned afterwards. */
432
+ private pinForAgent;
131
433
  /** @deprecated Use {@link OnShareDialogResult}. */
132
434
  onShareDialogResult(result: ShareDialogResult): void;
133
435
  /**
@@ -148,18 +450,20 @@ export declare class DashboardResource extends BaseResourceComponent {
148
450
  private loadCodeBasedDashboard;
149
451
  protected loadDashboardUserState(dashboardId: string): Promise<MJDashboardUserStateEntity>;
150
452
  /**
151
- * Load a config-based dashboard using the new DashboardViewerComponent (Golden Layout)
152
- */
153
- private loadConfigBasedDashboard;
154
- /**
155
- * Handle navigation requests from the dashboard viewer
453
+ * Handle navigation requests from a part of the dashboard (the editor passes them on)
156
454
  */
157
455
  private handleNavigationRequest;
158
456
  /**
159
- * Get the display name for a dashboard resource
160
- * Loads the actual dashboard name from the database if available
457
+ * The tab title: the dashboard's name from the DashboardEngine cache, else its record name from
458
+ * the server, else the given name. A Data Explorer tab keeps the name of the app it belongs to.
161
459
  */
162
460
  GetResourceDisplayName(data: ResourceData): Promise<string>;
461
+ /** True for the Data Explorer, which this wrapper hosts but which is not a dashboard record. */
462
+ private isDataExplorer;
463
+ /** The dashboard's name from the DashboardEngine cache, or null when the cache does not have it. */
464
+ private cachedDashboardName;
465
+ /** The dashboard's record name from the server, or null when it cannot be read. */
466
+ private loadDashboardName;
163
467
  /**
164
468
  * Get the icon class for dashboard resources
165
469
  */
@@ -167,4 +471,5 @@ export declare class DashboardResource extends BaseResourceComponent {
167
471
  static ɵfac: i0.ɵɵFactoryDeclaration<DashboardResource, never>;
168
472
  static ɵcmp: i0.ɵɵComponentDeclaration<DashboardResource, "mj-dashboard-resource", never, {}, {}, never, never, false, never>;
169
473
  }
474
+ export {};
170
475
  //# sourceMappingURL=dashboard-resource.component.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"dashboard-resource.component.d.ts","sourceRoot":"","sources":["../../../src/lib/resource-wrappers/dashboard-resource.component.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dashboard-resource.component.d.ts","sourceRoot":"","sources":["../../../src/lib/resource-wrappers/dashboard-resource.component.ts"],"names":[],"mappings":"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"}