@memberjunction/ng-dashboards 5.28.0 → 5.30.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.
Files changed (125) hide show
  1. package/dist/AI/components/agents/agent-configuration.component.d.ts.map +1 -1
  2. package/dist/AI/components/agents/agent-configuration.component.js +11 -9
  3. package/dist/AI/components/agents/agent-configuration.component.js.map +1 -1
  4. package/dist/AI/components/agents/agent-editor.component.d.ts.map +1 -1
  5. package/dist/AI/components/agents/agent-editor.component.js +21 -19
  6. package/dist/AI/components/agents/agent-editor.component.js.map +1 -1
  7. package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.js +154 -154
  8. package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.js.map +1 -1
  9. package/dist/AI/components/duplicates/duplicate-detection-resource.component.d.ts.map +1 -1
  10. package/dist/AI/components/duplicates/duplicate-detection-resource.component.js +8 -0
  11. package/dist/AI/components/duplicates/duplicate-detection-resource.component.js.map +1 -1
  12. package/dist/AI/components/vectors/vector-management-resource.component.d.ts +1 -1
  13. package/dist/AI/components/vectors/vector-management-resource.component.d.ts.map +1 -1
  14. package/dist/AI/components/vectors/vector-management-resource.component.js +2 -2
  15. package/dist/AI/components/vectors/vector-management-resource.component.js.map +1 -1
  16. package/dist/APIKeys/api-applications-panel.component.d.ts +1 -1
  17. package/dist/APIKeys/api-applications-panel.component.d.ts.map +1 -1
  18. package/dist/APIKeys/api-applications-panel.component.js +15 -2
  19. package/dist/APIKeys/api-applications-panel.component.js.map +1 -1
  20. package/dist/APIKeys/api-key-edit-panel.component.d.ts.map +1 -1
  21. package/dist/APIKeys/api-key-edit-panel.component.js +17 -5
  22. package/dist/APIKeys/api-key-edit-panel.component.js.map +1 -1
  23. package/dist/Archiving/components/archive-config-resource.component.d.ts +20 -0
  24. package/dist/Archiving/components/archive-config-resource.component.d.ts.map +1 -0
  25. package/dist/Archiving/components/archive-config-resource.component.js +46 -0
  26. package/dist/Archiving/components/archive-config-resource.component.js.map +1 -0
  27. package/dist/Archiving/components/archive-runs-resource.component.d.ts +20 -0
  28. package/dist/Archiving/components/archive-runs-resource.component.d.ts.map +1 -0
  29. package/dist/Archiving/components/archive-runs-resource.component.js +46 -0
  30. package/dist/Archiving/components/archive-runs-resource.component.js.map +1 -0
  31. package/dist/Credentials/components/credentials-list-resource.component.d.ts.map +1 -1
  32. package/dist/Credentials/components/credentials-list-resource.component.js +56 -71
  33. package/dist/Credentials/components/credentials-list-resource.component.js.map +1 -1
  34. package/dist/DashboardBrowser/dashboard-browser-resource.component.d.ts +0 -8
  35. package/dist/DashboardBrowser/dashboard-browser-resource.component.d.ts.map +1 -1
  36. package/dist/DashboardBrowser/dashboard-browser-resource.component.js +73 -74
  37. package/dist/DashboardBrowser/dashboard-browser-resource.component.js.map +1 -1
  38. package/dist/DashboardBrowser/dashboard-share-adapter.d.ts +25 -0
  39. package/dist/DashboardBrowser/dashboard-share-adapter.d.ts.map +1 -0
  40. package/dist/DashboardBrowser/dashboard-share-adapter.js +99 -0
  41. package/dist/DashboardBrowser/dashboard-share-adapter.js.map +1 -0
  42. package/dist/DashboardBrowser/dashboard-share-dialog.component.d.ts +21 -104
  43. package/dist/DashboardBrowser/dashboard-share-dialog.component.d.ts.map +1 -1
  44. package/dist/DashboardBrowser/dashboard-share-dialog.component.js +48 -530
  45. package/dist/DashboardBrowser/dashboard-share-dialog.component.js.map +1 -1
  46. package/dist/DataExplorer/data-explorer-dashboard.component.d.ts +5 -0
  47. package/dist/DataExplorer/data-explorer-dashboard.component.d.ts.map +1 -1
  48. package/dist/DataExplorer/data-explorer-dashboard.component.js +17 -0
  49. package/dist/DataExplorer/data-explorer-dashboard.component.js.map +1 -1
  50. package/dist/Integration/components/connections/connections.component.d.ts +18 -1
  51. package/dist/Integration/components/connections/connections.component.d.ts.map +1 -1
  52. package/dist/Integration/components/connections/connections.component.js +251 -199
  53. package/dist/Integration/components/connections/connections.component.js.map +1 -1
  54. package/dist/Integration/services/integration-data.service.d.ts +7 -2
  55. package/dist/Integration/services/integration-data.service.d.ts.map +1 -1
  56. package/dist/Integration/services/integration-data.service.js +10 -2
  57. package/dist/Integration/services/integration-data.service.js.map +1 -1
  58. package/dist/KnowledgeHub/components/analytics/analytics-resource.component.js +144 -144
  59. package/dist/KnowledgeHub/components/analytics/analytics-resource.component.js.map +1 -1
  60. package/dist/Lists/components/lists-operations-resource.component.d.ts.map +1 -1
  61. package/dist/Lists/components/lists-operations-resource.component.js +12 -14
  62. package/dist/Lists/components/lists-operations-resource.component.js.map +1 -1
  63. package/dist/MCP/components/mcp-connection-dialog.component.js +1 -1
  64. package/dist/MCP/components/mcp-connection-dialog.component.js.map +1 -1
  65. package/dist/MCP/mcp-dashboard.component.d.ts +170 -0
  66. package/dist/MCP/mcp-dashboard.component.d.ts.map +1 -1
  67. package/dist/MCP/mcp-dashboard.component.js +2521 -758
  68. package/dist/MCP/mcp-dashboard.component.js.map +1 -1
  69. package/dist/MCP/mcp-filter-panel.component.d.ts +16 -1
  70. package/dist/MCP/mcp-filter-panel.component.d.ts.map +1 -1
  71. package/dist/MCP/mcp-filter-panel.component.js +187 -60
  72. package/dist/MCP/mcp-filter-panel.component.js.map +1 -1
  73. package/dist/MCP/mcp-resource.component.d.ts +0 -9
  74. package/dist/MCP/mcp-resource.component.d.ts.map +1 -1
  75. package/dist/MCP/mcp-resource.component.js +1 -10
  76. package/dist/MCP/mcp-resource.component.js.map +1 -1
  77. package/dist/MCP/mcp.module.d.ts +7 -6
  78. package/dist/MCP/mcp.module.d.ts.map +1 -1
  79. package/dist/MCP/mcp.module.js +4 -8
  80. package/dist/MCP/mcp.module.js.map +1 -1
  81. package/dist/Permissions/audit-log-resource.component.d.ts +38 -0
  82. package/dist/Permissions/audit-log-resource.component.d.ts.map +1 -0
  83. package/dist/Permissions/audit-log-resource.component.js +380 -0
  84. package/dist/Permissions/audit-log-resource.component.js.map +1 -0
  85. package/dist/Permissions/permissions-shared.d.ts +51 -0
  86. package/dist/Permissions/permissions-shared.d.ts.map +1 -0
  87. package/dist/Permissions/permissions-shared.js +91 -0
  88. package/dist/Permissions/permissions-shared.js.map +1 -0
  89. package/dist/Permissions/resource-access-resource.component.d.ts +45 -0
  90. package/dist/Permissions/resource-access-resource.component.d.ts.map +1 -0
  91. package/dist/Permissions/resource-access-resource.component.js +342 -0
  92. package/dist/Permissions/resource-access-resource.component.js.map +1 -0
  93. package/dist/Permissions/user-access-resource.component.d.ts +39 -0
  94. package/dist/Permissions/user-access-resource.component.d.ts.map +1 -0
  95. package/dist/Permissions/user-access-resource.component.js +346 -0
  96. package/dist/Permissions/user-access-resource.component.js.map +1 -0
  97. package/dist/QueryBrowser/query-browser-resource.component.d.ts +13 -3
  98. package/dist/QueryBrowser/query-browser-resource.component.d.ts.map +1 -1
  99. package/dist/QueryBrowser/query-browser-resource.component.js +186 -139
  100. package/dist/QueryBrowser/query-browser-resource.component.js.map +1 -1
  101. package/dist/archiving-dashboards.module.d.ts +19 -0
  102. package/dist/archiving-dashboards.module.d.ts.map +1 -0
  103. package/dist/archiving-dashboards.module.js +52 -0
  104. package/dist/archiving-dashboards.module.js.map +1 -0
  105. package/dist/component-studio-dashboards.module.d.ts +1 -0
  106. package/dist/component-studio-dashboards.module.d.ts.map +1 -1
  107. package/dist/component-studio-dashboards.module.js +7 -0
  108. package/dist/component-studio-dashboards.module.js.map +1 -1
  109. package/dist/core-dashboards.module.d.ts +24 -19
  110. package/dist/core-dashboards.module.d.ts.map +1 -1
  111. package/dist/core-dashboards.module.js +30 -1
  112. package/dist/core-dashboards.module.js.map +1 -1
  113. package/dist/module.d.ts +13 -12
  114. package/dist/module.d.ts.map +1 -1
  115. package/dist/module.js +7 -0
  116. package/dist/module.js.map +1 -1
  117. package/dist/public-api.d.ts +7 -1
  118. package/dist/public-api.d.ts.map +1 -1
  119. package/dist/public-api.js +8 -0
  120. package/dist/public-api.js.map +1 -1
  121. package/dist/shared/pipes/highlight-search.pipe.d.ts +1 -1
  122. package/dist/shared/pipes/highlight-search.pipe.d.ts.map +1 -1
  123. package/dist/shared/pipes/highlight-search.pipe.js +14 -4
  124. package/dist/shared/pipes/highlight-search.pipe.js.map +1 -1
  125. package/package.json +52 -48
@@ -0,0 +1,99 @@
1
+ import { Metadata } from '@memberjunction/core';
2
+ import { UUIDsEqual } from '@memberjunction/global';
3
+ import { DashboardEngine } from '@memberjunction/core-entities';
4
+ /**
5
+ * Bridges {@link GenericShareDialogComponent} to the dashboard permission model.
6
+ * `MJ: Dashboard Permissions` stores four independent `Can*` booleans; we fold
7
+ * them into the dialog's three-tier `Level` enum and fan back out on save:
8
+ *
9
+ * View → CanRead only
10
+ * Edit → CanRead + CanEdit
11
+ * Owner → CanRead + CanEdit + CanDelete + CanShare
12
+ *
13
+ * Refreshes the {@link DashboardEngine} cache after save so downstream
14
+ * consumers see the new grants immediately.
15
+ */
16
+ export class DashboardShareAdapter {
17
+ async LoadShares(context) {
18
+ const existing = DashboardEngine.Instance.GetDashboardShares(context.ResourceID);
19
+ const rows = [];
20
+ const md = new Metadata();
21
+ for (const permission of existing) {
22
+ const user = await md.GetEntityObject('MJ: Users');
23
+ await user.Load(permission.UserID);
24
+ rows.push({
25
+ PermissionEntity: permission,
26
+ UserID: permission.UserID,
27
+ User: user,
28
+ Level: this.flagsToLevel(permission),
29
+ IsNew: false,
30
+ MarkedForRemoval: false
31
+ });
32
+ }
33
+ return rows;
34
+ }
35
+ async CreateShare(context, user) {
36
+ const md = new Metadata();
37
+ const permission = await md.GetEntityObject('MJ: Dashboard Permissions');
38
+ permission.NewRecord();
39
+ permission.DashboardID = context.ResourceID;
40
+ permission.UserID = user.ID;
41
+ this.applyLevelToPermission(permission, 'View');
42
+ if (context.CurrentUserID) {
43
+ permission.SharedByUserID = context.CurrentUserID;
44
+ }
45
+ return {
46
+ PermissionEntity: permission,
47
+ UserID: user.ID,
48
+ User: user,
49
+ Level: 'View',
50
+ IsNew: true,
51
+ MarkedForRemoval: false
52
+ };
53
+ }
54
+ SyncLevelToEntity(row) {
55
+ this.applyLevelToPermission(row.PermissionEntity, row.Level);
56
+ }
57
+ async AfterSave(_context) {
58
+ await DashboardEngine.Instance.Config(true);
59
+ }
60
+ /** Resolve the owner's display name for a dashboard by owner user ID. */
61
+ static resolveOwnerName(ownerUserID) {
62
+ if (!ownerUserID)
63
+ return null;
64
+ const dashboards = DashboardEngine.Instance.Dashboards;
65
+ const match = dashboards.find((d) => d.UserID && UUIDsEqual(d.UserID, ownerUserID));
66
+ return match?.User ?? null;
67
+ }
68
+ flagsToLevel(permission) {
69
+ if (permission.CanDelete || permission.CanShare)
70
+ return 'Owner';
71
+ if (permission.CanEdit)
72
+ return 'Edit';
73
+ return 'View';
74
+ }
75
+ applyLevelToPermission(permission, level) {
76
+ switch (level) {
77
+ case 'Owner':
78
+ permission.CanRead = true;
79
+ permission.CanEdit = true;
80
+ permission.CanDelete = true;
81
+ permission.CanShare = true;
82
+ break;
83
+ case 'Edit':
84
+ permission.CanRead = true;
85
+ permission.CanEdit = true;
86
+ permission.CanDelete = false;
87
+ permission.CanShare = false;
88
+ break;
89
+ case 'View':
90
+ default:
91
+ permission.CanRead = true;
92
+ permission.CanEdit = false;
93
+ permission.CanDelete = false;
94
+ permission.CanShare = false;
95
+ break;
96
+ }
97
+ }
98
+ }
99
+ //# sourceMappingURL=dashboard-share-adapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dashboard-share-adapter.js","sourceRoot":"","sources":["../../src/DashboardBrowser/dashboard-share-adapter.ts"],"names":[],"mappings":"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","sourcesContent":["import { Metadata } from '@memberjunction/core';\nimport { UUIDsEqual } from '@memberjunction/global';\nimport { DashboardEngine, MJDashboardPermissionEntity, MJUserEntity } from '@memberjunction/core-entities';\nimport {\n ResourceShareAdapter,\n ResourceShareContext,\n ResourceShareLevel,\n ResourceSharePermissionModel\n} from '@memberjunction/ng-resource-permissions';\n\n/**\n * Bridges {@link GenericShareDialogComponent} to the dashboard permission model.\n * `MJ: Dashboard Permissions` stores four independent `Can*` booleans; we fold\n * them into the dialog's three-tier `Level` enum and fan back out on save:\n *\n * View → CanRead only\n * Edit → CanRead + CanEdit\n * Owner → CanRead + CanEdit + CanDelete + CanShare\n *\n * Refreshes the {@link DashboardEngine} cache after save so downstream\n * consumers see the new grants immediately.\n */\nexport class DashboardShareAdapter implements ResourceShareAdapter {\n async LoadShares(context: ResourceShareContext): Promise<ResourceSharePermissionModel[]> {\n const existing = DashboardEngine.Instance.GetDashboardShares(context.ResourceID);\n const rows: ResourceSharePermissionModel[] = [];\n const md = new Metadata();\n for (const permission of existing) {\n const user = await md.GetEntityObject<MJUserEntity>('MJ: Users');\n await user.Load(permission.UserID);\n rows.push({\n PermissionEntity: permission,\n UserID: permission.UserID,\n User: user,\n Level: this.flagsToLevel(permission),\n IsNew: false,\n MarkedForRemoval: false\n });\n }\n return rows;\n }\n\n async CreateShare(context: ResourceShareContext, user: MJUserEntity): Promise<ResourceSharePermissionModel> {\n const md = new Metadata();\n const permission = await md.GetEntityObject<MJDashboardPermissionEntity>('MJ: Dashboard Permissions');\n permission.NewRecord();\n permission.DashboardID = context.ResourceID;\n permission.UserID = user.ID;\n this.applyLevelToPermission(permission, 'View');\n if (context.CurrentUserID) {\n permission.SharedByUserID = context.CurrentUserID;\n }\n return {\n PermissionEntity: permission,\n UserID: user.ID,\n User: user,\n Level: 'View',\n IsNew: true,\n MarkedForRemoval: false\n };\n }\n\n SyncLevelToEntity(row: ResourceSharePermissionModel): void {\n this.applyLevelToPermission(row.PermissionEntity as MJDashboardPermissionEntity, row.Level);\n }\n\n async AfterSave(_context: ResourceShareContext): Promise<void> {\n await DashboardEngine.Instance.Config(true);\n }\n\n /** Resolve the owner's display name for a dashboard by owner user ID. */\n static resolveOwnerName(ownerUserID: string | null | undefined): string | null {\n if (!ownerUserID) return null;\n const dashboards = DashboardEngine.Instance.Dashboards;\n const match = dashboards.find((d) => d.UserID && UUIDsEqual(d.UserID, ownerUserID));\n return match?.User ?? null;\n }\n\n private flagsToLevel(permission: MJDashboardPermissionEntity): ResourceShareLevel {\n if (permission.CanDelete || permission.CanShare) return 'Owner';\n if (permission.CanEdit) return 'Edit';\n return 'View';\n }\n\n private applyLevelToPermission(permission: MJDashboardPermissionEntity, level: ResourceShareLevel): void {\n switch (level) {\n case 'Owner':\n permission.CanRead = true;\n permission.CanEdit = true;\n permission.CanDelete = true;\n permission.CanShare = true;\n break;\n case 'Edit':\n permission.CanRead = true;\n permission.CanEdit = true;\n permission.CanDelete = false;\n permission.CanShare = false;\n break;\n case 'View':\n default:\n permission.CanRead = true;\n permission.CanEdit = false;\n permission.CanDelete = false;\n permission.CanShare = false;\n break;\n }\n }\n}\n"]}
@@ -1,115 +1,32 @@
1
- import { EventEmitter, OnChanges, SimpleChanges, ChangeDetectorRef } from '@angular/core';
2
- import { MJDashboardEntity, MJDashboardPermissionEntity, MJUserEntity } from '@memberjunction/core-entities';
1
+ import { EventEmitter } from '@angular/core';
2
+ import { MJDashboardEntity } from '@memberjunction/core-entities';
3
+ import { ResourceShareContext, ResourceShareDialogResult } from '@memberjunction/ng-resource-permissions';
4
+ import { DashboardShareAdapter } from './dashboard-share-adapter';
3
5
  import * as i0 from "@angular/core";
4
6
  /**
5
- * Represents a user share with their permissions
7
+ * Public re-export kept for backward compatibility with existing call sites
8
+ * ({@link DashboardBrowserResourceComponent}, `DashboardResource` wrapper).
9
+ * The new abstraction lives in `@memberjunction/ng-resource-permissions`.
6
10
  */
7
- export interface UserSharePermission {
8
- /** The permission entity (may be new or existing) */
9
- Permission: MJDashboardPermissionEntity;
10
- /** The user being shared with */
11
- User: MJUserEntity;
12
- /** Whether this is a newly added share */
13
- IsNew: boolean;
14
- /** Whether this share has been marked for removal */
15
- MarkedForRemoval: boolean;
16
- }
17
- /**
18
- * Result emitted when the dialog is closed
19
- */
20
- export interface ShareDialogResult {
21
- /** The action taken: 'save' or 'cancel' */
22
- Action: 'save' | 'cancel';
23
- /** The dashboard that was shared (only on save) */
11
+ export type ShareDialogResult = ResourceShareDialogResult & {
24
12
  Dashboard?: MJDashboardEntity;
25
- }
13
+ };
26
14
  /**
27
- * Dialog component for sharing dashboards with other users.
28
- * Allows setting granular permissions (CanRead, CanEdit, CanDelete, CanShare).
15
+ * Thin wrapper that maps a `MJDashboardEntity` + the Dashboard-specific
16
+ * permission model onto the generic `mj-resource-share-dialog`. Existing call
17
+ * sites (`<mj-dashboard-share-dialog [Dashboard]=... [Visible]=... (Result)=... />`)
18
+ * continue to work unchanged — this component just constructs the context +
19
+ * adapter and delegates.
29
20
  */
30
- export declare class DashboardShareDialogComponent implements OnChanges {
31
- private cdr;
21
+ export declare class DashboardShareDialogComponent {
32
22
  Visible: boolean;
33
- Dashboard: MJDashboardEntity | null;
23
+ set Dashboard(value: MJDashboardEntity | null);
24
+ get Dashboard(): MJDashboardEntity | null;
34
25
  Result: EventEmitter<ShareDialogResult>;
35
- /** Current shares for this dashboard */
36
- UserShares: UserSharePermission[];
37
- /** All available users for sharing (excludes owner and already shared) */
38
- AvailableUsers: MJUserEntity[];
39
- /** All users in the system */
40
- private allUsers;
41
- /** Loading state */
42
- IsLoading: boolean;
43
- /** Error message to display */
44
- Error: string | null;
45
- /** Search filter for available users */
46
- UserSearchFilter: string;
47
- constructor(cdr: ChangeDetectorRef);
48
- ngOnChanges(changes: SimpleChanges): void;
49
- /**
50
- * Reset dialog state
51
- */
52
- private resetDialog;
53
- /**
54
- * Load existing shares and available users
55
- */
56
- private loadData;
57
- /**
58
- * Update the list of available users (excludes owner and already shared)
59
- */
60
- private updateAvailableUsers;
61
- /**
62
- * Get filtered available users based on search
63
- */
64
- get FilteredAvailableUsers(): MJUserEntity[];
65
- /**
66
- * Check if there are unsaved changes
67
- */
68
- get HasChanges(): boolean;
69
- /**
70
- * Add a user to the share list
71
- */
72
- addUserShare(user: MJUserEntity): Promise<void>;
73
- /**
74
- * Mark a share for removal
75
- */
76
- removeUserShare(share: UserSharePermission): void;
77
- /**
78
- * Undo removal of a share
79
- */
80
- undoRemove(share: UserSharePermission): void;
81
- /**
82
- * Get shares that are not marked for removal
83
- */
84
- get ActiveShares(): UserSharePermission[];
85
- /**
86
- * Get shares marked for removal
87
- */
88
- get RemovedShares(): UserSharePermission[];
89
- /**
90
- * Toggle CanEdit permission (also enables CanRead)
91
- */
92
- toggleCanEdit(share: UserSharePermission): void;
93
- /**
94
- * Toggle CanDelete permission (also enables CanRead and CanEdit)
95
- */
96
- toggleCanDelete(share: UserSharePermission): void;
97
- /**
98
- * Toggle CanShare permission (also enables CanRead)
99
- */
100
- toggleCanShare(share: UserSharePermission): void;
101
- /**
102
- * Save all permission changes
103
- */
104
- onSave(): Promise<void>;
105
- /**
106
- * Cancel and close the dialog
107
- */
108
- onCancel(): void;
109
- /**
110
- * Get initials for a user (for avatar display)
111
- */
112
- getUserInitials(user: MJUserEntity): string;
26
+ context: ResourceShareContext | null;
27
+ adapter: DashboardShareAdapter;
28
+ private _dashboard;
29
+ onResult(result: ResourceShareDialogResult): void;
113
30
  static ɵfac: i0.ɵɵFactoryDeclaration<DashboardShareDialogComponent, never>;
114
31
  static ɵcmp: i0.ɵɵComponentDeclaration<DashboardShareDialogComponent, "mj-dashboard-share-dialog", never, { "Visible": { "alias": "Visible"; "required": false; }; "Dashboard": { "alias": "Dashboard"; "required": false; }; }, { "Result": "Result"; }, never, never, false, never>;
115
32
  }
@@ -1 +1 @@
1
- {"version":3,"file":"dashboard-share-dialog.component.d.ts","sourceRoot":"","sources":["../../src/DashboardBrowser/dashboard-share-dialog.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,YAAY,EAAE,SAAS,EAAE,aAAa,EAAE,iBAAiB,EAAqB,MAAM,eAAe,CAAC;AAEvI,OAAO,EAAE,iBAAiB,EAAE,2BAA2B,EAAmB,YAAY,EAAE,MAAM,+BAA+B,CAAC;;AAG9H;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAChC,qDAAqD;IACrD,UAAU,EAAE,2BAA2B,CAAC;IACxC,iCAAiC;IACjC,IAAI,EAAE,YAAY,CAAC;IACnB,0CAA0C;IAC1C,KAAK,EAAE,OAAO,CAAC;IACf,qDAAqD;IACrD,gBAAgB,EAAE,OAAO,CAAC;CAC7B;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAC9B,2CAA2C;IAC3C,MAAM,EAAE,MAAM,GAAG,QAAQ,CAAC;IAC1B,mDAAmD;IACnD,SAAS,CAAC,EAAE,iBAAiB,CAAC;CACjC;AAED;;;GAGG;AACH,qBAOa,6BAA8B,YAAW,SAAS;IAuB/C,OAAO,CAAC,GAAG;IAtBd,OAAO,UAAS;IAChB,SAAS,EAAE,iBAAiB,GAAG,IAAI,CAAQ;IAC1C,MAAM,kCAAyC;IAEzD,wCAAwC;IACjC,UAAU,EAAE,mBAAmB,EAAE,CAAM;IAE9C,0EAA0E;IACnE,cAAc,EAAE,YAAY,EAAE,CAAM;IAE3C,8BAA8B;IAC9B,OAAO,CAAC,QAAQ,CAAsB;IAEtC,oBAAoB;IACb,SAAS,UAAS;IAEzB,+BAA+B;IACxB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAQ;IAEnC,wCAAwC;IACjC,gBAAgB,SAAM;gBAET,GAAG,EAAE,iBAAiB;IAE1C,WAAW,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;IAOzC;;OAEG;IACH,OAAO,CAAC,WAAW;IAQnB;;OAEG;YACW,QAAQ;IAmDtB;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAe5B;;OAEG;IACH,IAAW,sBAAsB,IAAI,YAAY,EAAE,CAYlD;IAED;;OAEG;IACH,IAAW,UAAU,IAAI,OAAO,CAE/B;IAED;;OAEG;IACU,YAAY,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAyB5D;;OAEG;IACI,eAAe,CAAC,KAAK,EAAE,mBAAmB,GAAG,IAAI;IAaxD;;OAEG;IACI,UAAU,CAAC,KAAK,EAAE,mBAAmB,GAAG,IAAI;IAMnD;;OAEG;IACH,IAAW,YAAY,IAAI,mBAAmB,EAAE,CAE/C;IAED;;OAEG;IACH,IAAW,aAAa,IAAI,mBAAmB,EAAE,CAEhD;IAED;;OAEG;IACI,aAAa,CAAC,KAAK,EAAE,mBAAmB,GAAG,IAAI;IAQtD;;OAEG;IACI,eAAe,CAAC,KAAK,EAAE,mBAAmB,GAAG,IAAI;IASxD;;OAEG;IACI,cAAc,CAAC,KAAK,EAAE,mBAAmB,GAAG,IAAI;IAQvD;;OAEG;IACU,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IA4CpC;;OAEG;IACI,QAAQ,IAAI,IAAI;IAIvB;;OAEG;IACI,eAAe,CAAC,IAAI,EAAE,YAAY,GAAG,MAAM;yCAzSzC,6BAA6B;2CAA7B,6BAA6B;CAiTzC"}
1
+ {"version":3,"file":"dashboard-share-dialog.component.d.ts","sourceRoot":"","sources":["../../src/DashboardBrowser/dashboard-share-dialog.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,YAAY,EAAE,MAAM,eAAe,CAAC;AACvE,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EACH,oBAAoB,EACpB,yBAAyB,EAC5B,MAAM,yCAAyC,CAAC;AACjD,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;;AAElE;;;;GAIG;AACH,MAAM,MAAM,iBAAiB,GAAG,yBAAyB,GAAG;IAAE,SAAS,CAAC,EAAE,iBAAiB,CAAA;CAAE,CAAC;AAE9F;;;;;;GAMG;AACH,qBAYa,6BAA6B;IAC7B,OAAO,UAAS;IACzB,IACI,SAAS,CAAC,KAAK,EAAE,iBAAiB,GAAG,IAAI,EAU5C;IACD,IAAI,SAAS,IAAI,iBAAiB,GAAG,IAAI,CAExC;IACS,MAAM,kCAAyC;IAElD,OAAO,EAAE,oBAAoB,GAAG,IAAI,CAAQ;IAC5C,OAAO,wBAA+B;IAE7C,OAAO,CAAC,UAAU,CAAkC;IAEpD,QAAQ,CAAC,MAAM,EAAE,yBAAyB,GAAG,IAAI;yCAxBxC,6BAA6B;2CAA7B,6BAA6B;CA8BzC"}