@memberjunction/ng-conversations 4.0.0 → 4.2.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/README.md CHANGED
@@ -1,197 +1,329 @@
1
1
  # @memberjunction/ng-conversations
2
2
 
3
- Angular package for conversation, collection, and artifact management built on MemberJunction.
3
+ A comprehensive Angular component library for building conversation-based interfaces in MemberJunction, including messaging, artifact management, collections, projects, tasks, agent interaction panels, and collaboration features.
4
+
5
+ ## Overview
6
+
7
+ The `@memberjunction/ng-conversations` package is a large, feature-rich module that powers MemberJunction's conversation UI. It provides 40+ components covering the entire conversation lifecycle: message composition and rendering (with markdown, mentions, code blocks, and artifacts), conversation navigation and history, threaded discussions, artifact collections and libraries, project/task management, agent execution panels, sharing/permission modals, search, notifications, and export.
8
+
9
+ ```mermaid
10
+ graph TD
11
+ A[ConversationsModule] --> B[Messaging]
12
+ A --> C[Navigation]
13
+ A --> D[Collections & Library]
14
+ A --> E[Agent & Tasks]
15
+ A --> F[Collaboration]
16
+
17
+ B --> B1[MessageItemComponent]
18
+ B --> B2[MessageListComponent]
19
+ B --> B3[MessageInputComponent]
20
+ B --> B4[MentionEditorComponent]
21
+ B --> B5[SuggestedResponsesComponent]
22
+ B --> B6[ConversationMessageRatingComponent]
23
+
24
+ C --> C1[ConversationWorkspaceComponent]
25
+ C --> C2[ConversationNavigationComponent]
26
+ C --> C3[ConversationSidebarComponent]
27
+ C --> C4[ConversationListComponent]
28
+ C --> C5[ConversationChatAreaComponent]
29
+ C --> C6[ThreadPanelComponent]
30
+
31
+ D --> D1[CollectionTreeComponent]
32
+ D --> D2[CollectionViewComponent]
33
+ D --> D3[LibraryFullViewComponent]
34
+ D --> D4[ArtifactCreateModalComponent]
35
+
36
+ E --> E1[AgentProcessPanelComponent]
37
+ E --> E2[ActiveAgentIndicatorComponent]
38
+ E --> E3[TasksFullViewComponent]
39
+ E --> E4[GlobalTasksPanelComponent]
40
+
41
+ F --> F1[ShareModalComponent]
42
+ F --> F2[MembersModalComponent]
43
+ F --> F3[ExportModalComponent]
44
+ F --> F4[SearchPanelComponent]
45
+
46
+ style A fill:#2d6a9f,stroke:#1a4971,color:#fff
47
+ style B fill:#7c5295,stroke:#563a6b,color:#fff
48
+ style C fill:#2d8659,stroke:#1a5c3a,color:#fff
49
+ style D fill:#b8762f,stroke:#8a5722,color:#fff
50
+ style E fill:#7c5295,stroke:#563a6b,color:#fff
51
+ style F fill:#2d8659,stroke:#1a5c3a,color:#fff
52
+ ```
53
+
54
+ ## Installation
4
55
 
5
- ## Status: Foundation Complete ✅
56
+ ```bash
57
+ npm install @memberjunction/ng-conversations
58
+ ```
6
59
 
7
- This package provides the core infrastructure for building Slack-style conversation interfaces with artifacts and collections. The initial implementation includes:
60
+ ## Usage
8
61
 
9
- ### Completed
62
+ ### Import the Module
10
63
 
11
- #### Core Services
12
- - **ConversationDataService** - CRUD operations for conversations with reactive state
13
- - **MessageDataService** - Message management with caching
14
- - **ArtifactDataService** - Artifact and version management
15
- - **ProjectDataService** - Project organization
16
- - **CollectionDataService** - Collection and artifact organization
17
- - **ConversationStateService** - Reactive state management for conversations
18
- - **ArtifactStateService** - Reactive state management for artifacts
64
+ ```typescript
65
+ import { ConversationsModule } from '@memberjunction/ng-conversations';
19
66
 
20
- #### Components
21
- - **MessageItemComponent** - Individual message display with dynamic rendering
22
- - **MessageListComponent** - Efficient message list using ViewContainerRef.createComponent()
67
+ @NgModule({
68
+ imports: [ConversationsModule]
69
+ })
70
+ export class YourModule { }
71
+ ```
23
72
 
24
- #### Models
25
- - TypeScript interfaces for all state management types
26
- - Union types for navigation tabs, layouts, and view modes
73
+ ### Full Conversation Workspace
27
74
 
28
- ### 🎯 Key Features
75
+ The top-level workspace component provides a complete conversation experience with sidebar, chat area, and thread panel:
29
76
 
30
- 1. **Performance Optimized**
31
- - Uses dynamic component creation (ViewContainerRef.createComponent) instead of Angular template binding
32
- - Follows the proven pattern from @memberjunction/ng-skip-chat
33
- - Dramatically reduces render cycles and improves performance
77
+ ```html
78
+ <mj-conversation-workspace
79
+ [conversationId]="selectedConversationId"
80
+ (conversationChanged)="onConversationChanged($event)">
81
+ </mj-conversation-workspace>
82
+ ```
34
83
 
35
- 2. **MJ Entity Integration**
36
- - All services use Metadata.GetEntityObject() pattern
37
- - RunView for efficient data loading
38
- - Proper type safety with generic methods
84
+ ### Chat Area
39
85
 
40
- 3. **Reactive State Management**
41
- - RxJS BehaviorSubjects for all state
42
- - Derived observables using combineLatest
43
- - shareReplay(1) for efficient caching
86
+ The chat area handles message display, input, and agent interactions:
44
87
 
45
- 4. **Proper User Context**
46
- - All server-side operations include contextUser parameter
47
- - Follows MJ security patterns
88
+ ```html
89
+ <mj-conversation-chat-area
90
+ [conversationId]="conversationId"
91
+ [conversation]="conversation"
92
+ [threadId]="selectedThreadId"
93
+ [isNewConversation]="isNewConversation"
94
+ (conversationCreated)="onConversationCreated($event)"
95
+ (threadOpened)="onThreadOpened($event)"
96
+ (threadClosed)="onThreadClosed()">
97
+ </mj-conversation-chat-area>
98
+ ```
48
99
 
49
- ### 📦 Installation
100
+ ### Message Components
50
101
 
51
- This package is part of the MemberJunction monorepo. It's installed via npm workspaces:
102
+ #### Message List
52
103
 
53
- ```bash
54
- # From repo root
55
- npm install
104
+ ```html
105
+ <mj-message-list
106
+ [messages]="conversationMessages"
107
+ [isLoading]="isLoadingMessages"
108
+ (messageRated)="onMessageRated($event)">
109
+ </mj-message-list>
56
110
  ```
57
111
 
58
- ### 🔧 Usage Example
112
+ #### Message Input with Mentions
59
113
 
60
- ```typescript
61
- import {
62
- ConversationDataService,
63
- MessageDataService,
64
- ConversationStateService,
65
- MessageListComponent
66
- } from '@memberjunction/ng-conversations';
67
-
68
- // In your component
69
- constructor(
70
- private conversationData: ConversationDataService,
71
- private conversationState: ConversationStateService,
72
- private currentUser: UserInfo
73
- ) {}
74
-
75
- async ngOnInit() {
76
- // Load conversations
77
- const conversations = await this.conversationData.loadConversations(
78
- environmentId,
79
- this.currentUser
80
- );
81
-
82
- // Set active conversation
83
- this.conversationState.setActiveConversation(conversations[0].ID);
84
-
85
- // Subscribe to state changes
86
- this.conversationState.activeConversation$.subscribe(conv => {
87
- console.log('Active conversation changed:', conv);
88
- });
89
- }
114
+ ```html
115
+ <mj-message-input
116
+ [conversationId]="conversationId"
117
+ [allowSend]="!isProcessing"
118
+ (messageSent)="onMessageSent($event)">
119
+ </mj-message-input>
90
120
  ```
91
121
 
92
- ### 📁 Package Structure
122
+ #### Mention Editor
93
123
 
124
+ ```html
125
+ <mj-mention-editor
126
+ [mentionSources]="availableMentionSources"
127
+ (mentionSelected)="onMentionSelected($event)">
128
+ </mj-mention-editor>
94
129
  ```
95
- src/
96
- ├── lib/
97
- │ ├── components/
98
- │ │ └── message/ # Message display components
99
- │ │ ├── message-item.component.ts
100
- │ │ ├── message-item.component.html
101
- │ │ ├── message-item.component.css
102
- │ │ ├── message-list.component.ts
103
- │ │ ├── message-list.component.html
104
- │ │ └── message-list.component.css
105
- │ ├── services/
106
- │ │ ├── conversation-data.service.ts # Conversation CRUD
107
- │ │ ├── message-data.service.ts # Message CRUD
108
- │ │ ├── artifact-data.service.ts # Artifact & versions
109
- │ │ ├── project-data.service.ts # Project management
110
- │ │ ├── collection-data.service.ts # Collections
111
- │ │ ├── conversation-state.service.ts # Conversation state
112
- │ │ └── artifact-state.service.ts # Artifact state
113
- │ ├── models/
114
- │ │ └── conversation-state.model.ts # TypeScript interfaces
115
- │ └── conversations.module.ts
116
- └── public-api.ts
117
- ```
118
-
119
- ### 🚀 Next Steps
120
130
 
121
- To complete the full implementation as per the prototype:
131
+ ### Collections and Library
122
132
 
123
- 1. **Layout Components**
124
- - ConversationWorkspaceComponent (3-column layout)
125
- - ConversationNavigationComponent (top nav bar)
126
- - ConversationSidebarComponent (left sidebar with tabs)
133
+ ```html
134
+ <!-- Collection tree for organizing artifacts -->
135
+ <mj-collection-tree
136
+ [projectId]="currentProjectId"
137
+ (collectionSelected)="onCollectionSelected($event)">
138
+ </mj-collection-tree>
127
139
 
128
- 2. **Conversation Components**
129
- - ConversationListComponent (with grouping/filtering)
130
- - ConversationItemComponent (list item with badges)
131
- - ConversationChatAreaComponent (main chat interface)
132
- - MessageInputComponent (rich text input)
140
+ <!-- Full library view -->
141
+ <mj-library-full-view
142
+ [projectId]="currentProjectId">
143
+ </mj-library-full-view>
144
+ ```
133
145
 
134
- 3. **Artifact Components**
135
- - ArtifactPanelComponent (right panel)
136
- - ArtifactViewerComponent (type-specific rendering)
137
- - ArtifactEditorComponent (edit mode)
138
- - ArtifactVersionHistoryComponent (version timeline)
139
- - ArtifactShareModalComponent (sharing UI)
146
+ ### Project and Task Management
140
147
 
141
- 4. **Collection Components**
142
- - CollectionTreeComponent (hierarchical tree)
143
- - CollectionViewComponent (grid/list view)
144
- - CollectionModalComponent (management UI)
148
+ ```html
149
+ <!-- Project selector -->
150
+ <mj-project-selector
151
+ [currentProjectId]="projectId"
152
+ (projectChanged)="onProjectChanged($event)">
153
+ </mj-project-selector>
145
154
 
146
- 5. **Project & Task Components**
147
- - ProjectListComponent
148
- - ProjectSelectorComponent
149
- - TaskListComponent
150
- - TaskItemComponent
151
- - AgentProcessPanelComponent (floating panel)
155
+ <!-- Tasks view -->
156
+ <mj-tasks-full-view
157
+ [projectId]="currentProjectId">
158
+ </mj-tasks-full-view>
159
+ ```
152
160
 
153
- 6. **Explorer Integration**
154
- - Add `/chat` route to explorer-core
155
- - Create wrapper components
156
- - Integrate with Explorer navigation
161
+ ### Agent Components
157
162
 
158
- ### 🧪 Testing
163
+ ```html
164
+ <!-- Agent execution panel -->
165
+ <mj-agent-process-panel
166
+ [agentRunId]="activeRunId">
167
+ </mj-agent-process-panel>
159
168
 
160
- ```bash
161
- # Compile the package
162
- cd packages/Angular/Generic/conversations
163
- npm run build
169
+ <!-- Active agent indicator -->
170
+ <mj-active-agent-indicator
171
+ [isActive]="agentIsRunning">
172
+ </mj-active-agent-indicator>
173
+ ```
164
174
 
165
- # Run from repo root
166
- npm run build:conversations
175
+ ### Collaboration
176
+
177
+ ```html
178
+ <!-- Share modal -->
179
+ <mj-share-modal
180
+ [visible]="showShareModal"
181
+ [resourceId]="resourceId"
182
+ [resourceType]="'conversation'"
183
+ (closed)="onShareClosed()">
184
+ </mj-share-modal>
185
+
186
+ <!-- Export modal -->
187
+ <mj-export-modal
188
+ [visible]="showExportModal"
189
+ [conversationId]="conversationId"
190
+ (exported)="onExported($event)">
191
+ </mj-export-modal>
167
192
  ```
168
193
 
169
- ### 📝 Notes
194
+ ## Component Reference
170
195
 
171
- - **No Commits**: This code has NOT been committed. Review required before committing.
172
- - **Dynamic Rendering**: The message components use ViewContainerRef.createComponent() to avoid Angular binding overhead - this is CRITICAL for performance.
173
- - **Type Safety**: All services use proper MJ entity types and generic methods.
174
- - **Caching**: Message data is cached per conversation to minimize database hits.
196
+ ### Messaging Components
197
+
198
+ | Component | Selector | Description |
199
+ |-----------|----------|-------------|
200
+ | `MessageItemComponent` | `mj-message-item` | Single message display with markdown, artifacts, and rating |
201
+ | `MessageListComponent` | `mj-message-list` | Scrollable message list with auto-scroll |
202
+ | `MessageInputComponent` | `mj-message-input` | Message input with attachment support |
203
+ | `MessageInputBoxComponent` | `mj-message-input-box` | Core input box with auto-resize |
204
+ | `SuggestedResponsesComponent` | `mj-suggested-responses` | Quick response buttons |
205
+ | `FormQuestionComponent` | `mj-form-question` | Structured form input within conversations |
206
+ | `AgentResponseFormComponent` | `mj-agent-response-form` | Agent-generated form responses |
207
+ | `ActionableCommandsComponent` | `mj-actionable-commands` | Clickable command suggestions |
208
+ | `MentionDropdownComponent` | `mj-mention-dropdown` | @-mention autocomplete dropdown |
209
+ | `MentionEditorComponent` | `mj-mention-editor` | Rich text input with mention support |
210
+ | `ConversationMessageRatingComponent` | `mj-conversation-message-rating` | Message feedback (thumbs up/down) |
211
+
212
+ ### Navigation Components
213
+
214
+ | Component | Selector | Description |
215
+ |-----------|----------|-------------|
216
+ | `ConversationWorkspaceComponent` | `mj-conversation-workspace` | Full workspace layout |
217
+ | `ConversationNavigationComponent` | `mj-conversation-navigation` | Top-level navigation |
218
+ | `ConversationSidebarComponent` | `mj-conversation-sidebar` | Left sidebar with conversation list |
219
+ | `ConversationListComponent` | `mj-conversation-list` | Scrollable conversation history |
220
+ | `ConversationChatAreaComponent` | `mj-conversation-chat-area` | Main chat area |
221
+ | `ConversationEmptyStateComponent` | `mj-conversation-empty-state` | Empty state display |
222
+ | `ThreadPanelComponent` | `mj-thread-panel` | Threaded discussion panel |
223
+
224
+ ### Collection and Library Components
225
+
226
+ | Component | Selector | Description |
227
+ |-----------|----------|-------------|
228
+ | `CollectionTreeComponent` | `mj-collection-tree` | Hierarchical collection browser |
229
+ | `CollectionViewComponent` | `mj-collection-view` | Collection detail view |
230
+ | `CollectionArtifactCardComponent` | `mj-collection-artifact-card` | Artifact card within collections |
231
+ | `LibraryFullViewComponent` | `mj-library-full-view` | Full library interface |
232
+ | `CollectionFormModalComponent` | `mj-collection-form-modal` | Create/edit collection |
233
+ | `ArtifactCreateModalComponent` | `mj-artifact-create-modal` | Create new artifact |
234
+ | `CollectionsFullViewComponent` | `mj-collections-full-view` | All collections browser |
235
+
236
+ ### Project and Task Components
237
+
238
+ | Component | Selector | Description |
239
+ |-----------|----------|-------------|
240
+ | `ProjectSelectorComponent` | `mj-project-selector` | Project selection dropdown |
241
+ | `ProjectFormModalComponent` | `mj-project-form-modal` | Create/edit project |
242
+ | `TasksFullViewComponent` | `mj-tasks-full-view` | Full tasks management view (standalone) |
243
+ | `TasksDropdownComponent` | `mj-tasks-dropdown` | Task quick-access dropdown |
244
+ | `TaskWidgetComponent` | `mj-task-widget` | Compact task widget |
245
+ | `GlobalTasksPanelComponent` | `mj-global-tasks-panel` | Global tasks panel |
246
+
247
+ ### Agent Components
248
+
249
+ | Component | Selector | Description |
250
+ |-----------|----------|-------------|
251
+ | `AgentProcessPanelComponent` | `mj-agent-process-panel` | Agent execution panel |
252
+ | `ActiveAgentIndicatorComponent` | `mj-active-agent-indicator` | Active processing indicator |
253
+ | `ActiveTasksPanelComponent` | `mj-active-tasks-panel` | Active tasks panel |
254
+
255
+ ### Utility Components
256
+
257
+ | Component | Selector | Description |
258
+ |-----------|----------|-------------|
259
+ | `ShareModalComponent` | `mj-share-modal` | Resource sharing modal |
260
+ | `MembersModalComponent` | `mj-members-modal` | Members management |
261
+ | `ExportModalComponent` | `mj-export-modal` | Data export modal |
262
+ | `SearchPanelComponent` | `mj-search-panel` | Search across conversations |
263
+ | `NotificationBadgeComponent` | `mj-notification-badge` | Unread notification count |
264
+ | `ActivityIndicatorComponent` | `mj-activity-indicator` | Active processing indicator |
265
+ | `ToastComponent` | `mj-toast` | Toast notification display |
266
+ | `InputDialogComponent` | `mj-input-dialog` | Generic text input dialog |
267
+ | `ImageViewerComponent` | `mj-image-viewer` | Image attachment viewer |
268
+
269
+ ## Directives
270
+
271
+ | Directive | Selector | Description |
272
+ |-----------|----------|-------------|
273
+ | `SearchShortcutDirective` | `[mjSearchShortcut]` | Keyboard shortcut for search |
274
+
275
+ ## Key Design Patterns
276
+
277
+ ### Performance Optimization
278
+
279
+ Message components use dynamic component creation (`ViewContainerRef.createComponent`) instead of Angular template binding to minimize render cycles and improve performance with large message lists.
280
+
281
+ ### MJ Entity Integration
282
+
283
+ All data operations use the MemberJunction entity system:
284
+ - `Metadata.GetEntityObject()` for entity creation
285
+ - `RunView` for efficient data loading
286
+ - Proper generic typing throughout
287
+
288
+ ### Reactive State Management
289
+
290
+ RxJS `BehaviorSubject` instances for all state, with derived observables using `combineLatest` and `shareReplay(1)` for efficient caching.
291
+
292
+ ## Dependencies
293
+
294
+ ### MemberJunction Packages
295
+
296
+ | Package | Description |
297
+ |---------|-------------|
298
+ | `@memberjunction/core` | Core framework |
299
+ | `@memberjunction/core-entities` | Entity type definitions |
300
+ | `@memberjunction/global` | Global utilities |
301
+ | `@memberjunction/graphql-dataprovider` | GraphQL data access |
302
+ | `@memberjunction/ng-artifacts` | Artifact viewer components |
303
+ | `@memberjunction/ng-code-editor` | Code editor component |
304
+ | `@memberjunction/ng-container-directives` | Container directives |
305
+ | `@memberjunction/ng-markdown` | Markdown rendering |
306
+ | `@memberjunction/ng-shared-generic` | Shared generic components |
307
+ | `@memberjunction/ng-testing` | Testing framework components |
175
308
 
176
- ### 🔗 Dependencies
309
+ ### Kendo UI Packages
177
310
 
178
- - @memberjunction/core ^2.101.0
179
- - @memberjunction/core-entities ^2.101.0
180
- - @memberjunction/global ^2.101.0
181
- - @memberjunction/graphql-dataprovider ^2.101.0
182
- - @memberjunction/ng-base-types ^2.101.0
183
- - @progress/kendo-angular-* ^16.2.0
184
- - @angular/* ^18.0.2
185
- - @memberjunction/ng-markdown ^2.125.0
186
- - marked ^9.1.6
311
+ Uses `@progress/kendo-angular-dialog`, `@progress/kendo-angular-buttons`, `@progress/kendo-angular-inputs`, `@progress/kendo-angular-layout`, `@progress/kendo-angular-indicators`, `@progress/kendo-angular-dropdowns`, `@progress/kendo-angular-notification`, `@progress/kendo-angular-upload`, `@progress/kendo-angular-dateinputs`.
187
312
 
188
- ### 📚 References
313
+ ### Peer Dependencies
314
+
315
+ - `@angular/common` ^21.x
316
+ - `@angular/core` ^21.x
317
+ - `@angular/forms` ^21.x
318
+ - `@angular/router` ^21.x
189
319
 
190
- - Implementation Plan: See comprehensive plan created during initial analysis
191
- - Prototype: `/v3_conversations/slack-style-agent-chat-v22.html`
192
- - Entity Schema: `/v3_conversations/schema.sql`
193
- - Skip Chat Pattern: `packages/Angular/Generic/skip-chat/`
320
+ ## Build
321
+
322
+ ```bash
323
+ cd packages/Angular/Generic/conversations
324
+ npm run build
325
+ ```
194
326
 
195
- ---
327
+ ## License
196
328
 
197
- **Built with MemberJunction** | Version 2.101.0
329
+ ISC
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@memberjunction/ng-conversations",
3
- "version": "4.0.0",
3
+ "version": "4.2.0",
4
4
  "description": "MemberJunction: Conversation, Collection, and Artifact management components for any Angular application",
5
5
  "main": "./dist/public-api.js",
6
6
  "typings": "./dist/public-api.d.ts",
@@ -29,21 +29,21 @@
29
29
  "dependencies": {
30
30
  "@angular/animations": "21.1.3",
31
31
  "@angular/cdk": "21.1.3",
32
- "@memberjunction/ai": "4.0.0",
33
- "@memberjunction/ai-core-plus": "4.0.0",
34
- "@memberjunction/ai-engine-base": "4.0.0",
35
- "@memberjunction/core": "4.0.0",
36
- "@memberjunction/core-entities": "4.0.0",
37
- "@memberjunction/global": "4.0.0",
38
- "@memberjunction/graphql-dataprovider": "4.0.0",
39
- "@memberjunction/ng-artifacts": "4.0.0",
40
- "@memberjunction/ng-base-types": "4.0.0",
41
- "@memberjunction/ng-code-editor": "4.0.0",
42
- "@memberjunction/ng-container-directives": "4.0.0",
43
- "@memberjunction/ng-notifications": "4.0.0",
44
- "@memberjunction/ng-shared-generic": "4.0.0",
45
- "@memberjunction/ng-tasks": "4.0.0",
46
- "@memberjunction/ng-testing": "4.0.0",
32
+ "@memberjunction/ai": "4.2.0",
33
+ "@memberjunction/ai-core-plus": "4.2.0",
34
+ "@memberjunction/ai-engine-base": "4.2.0",
35
+ "@memberjunction/core": "4.2.0",
36
+ "@memberjunction/core-entities": "4.2.0",
37
+ "@memberjunction/global": "4.2.0",
38
+ "@memberjunction/graphql-dataprovider": "4.2.0",
39
+ "@memberjunction/ng-artifacts": "4.2.0",
40
+ "@memberjunction/ng-base-types": "4.2.0",
41
+ "@memberjunction/ng-code-editor": "4.2.0",
42
+ "@memberjunction/ng-container-directives": "4.2.0",
43
+ "@memberjunction/ng-notifications": "4.2.0",
44
+ "@memberjunction/ng-shared-generic": "4.2.0",
45
+ "@memberjunction/ng-tasks": "4.2.0",
46
+ "@memberjunction/ng-testing": "4.2.0",
47
47
  "@progress/kendo-angular-buttons": "22.0.1",
48
48
  "@progress/kendo-angular-dateinputs": "22.0.1",
49
49
  "@progress/kendo-angular-dialog": "22.0.1",
@@ -53,7 +53,7 @@
53
53
  "@progress/kendo-angular-layout": "22.0.1",
54
54
  "@progress/kendo-angular-notification": "22.0.1",
55
55
  "@progress/kendo-angular-upload": "22.0.1",
56
- "@memberjunction/ng-markdown": "4.0.0",
56
+ "@memberjunction/ng-markdown": "4.2.0",
57
57
  "rxjs": "^7.8.2",
58
58
  "tslib": "^2.8.1"
59
59
  },
@@ -1,48 +0,0 @@
1
- import { EventEmitter, OnInit, OnChanges, SimpleChanges, ChangeDetectorRef } from '@angular/core';
2
- import { UserInfo } from '@memberjunction/core';
3
- import { ArtifactEntity } from '@memberjunction/core-entities';
4
- import { ArtifactStateService } from '../../services/artifact-state.service';
5
- import { ArtifactPermissionService } from '../../services/artifact-permission.service';
6
- import * as i0 from "@angular/core";
7
- /**
8
- * Artifact viewer panel component
9
- * Displays artifact content with permission-based actions (share, edit, delete)
10
- */
11
- export declare class ArtifactViewerPanelComponent implements OnInit, OnChanges {
12
- private artifactStateService;
13
- private artifactPermissionService;
14
- private cdr;
15
- artifactId: string;
16
- currentUser: UserInfo;
17
- environmentId: string;
18
- versionNumber?: number;
19
- showSaveToCollection: boolean;
20
- viewContext: 'collection' | 'conversation';
21
- contextCollectionId?: string;
22
- closed: EventEmitter<void>;
23
- navigateToLink: EventEmitter<{
24
- type: 'conversation' | 'collection';
25
- id: string;
26
- }>;
27
- artifact: ArtifactEntity | null;
28
- loading: boolean;
29
- error: string | null;
30
- canShare: boolean;
31
- canEdit: boolean;
32
- isShareModalOpen: boolean;
33
- constructor(artifactStateService: ArtifactStateService, artifactPermissionService: ArtifactPermissionService, cdr: ChangeDetectorRef);
34
- ngOnInit(): Promise<void>;
35
- ngOnChanges(changes: SimpleChanges): Promise<void>;
36
- private loadArtifact;
37
- private loadPermissions;
38
- openShareModal(): void;
39
- closeShareModal(): void;
40
- onShareSaved(): void;
41
- onEdit(): void;
42
- onDelete(): Promise<void>;
43
- onSaveToCollection(): void;
44
- onClose(): void;
45
- static ɵfac: i0.ɵɵFactoryDeclaration<ArtifactViewerPanelComponent, never>;
46
- static ɵcmp: i0.ɵɵComponentDeclaration<ArtifactViewerPanelComponent, "mj-artifact-viewer-panel", never, { "artifactId": { "alias": "artifactId"; "required": false; }; "currentUser": { "alias": "currentUser"; "required": false; }; "environmentId": { "alias": "environmentId"; "required": false; }; "versionNumber": { "alias": "versionNumber"; "required": false; }; "showSaveToCollection": { "alias": "showSaveToCollection"; "required": false; }; "viewContext": { "alias": "viewContext"; "required": false; }; "contextCollectionId": { "alias": "contextCollectionId"; "required": false; }; }, { "closed": "closed"; "navigateToLink": "navigateToLink"; }, never, never, true, never>;
47
- }
48
- //# sourceMappingURL=artifact-viewer-panel.component.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"artifact-viewer-panel.component.d.ts","sourceRoot":"","sources":["../../../../src/lib/components/artifact/artifact-viewer-panel.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAE5H,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAE/D,OAAO,EAAE,oBAAoB,EAAE,MAAM,uCAAuC,CAAC;AAC7E,OAAO,EAAE,yBAAyB,EAAE,MAAM,4CAA4C,CAAC;;AAGvF;;;GAGG;AACH,qBA6Ha,4BAA6B,YAAW,MAAM,EAAE,SAAS;IAwBlE,OAAO,CAAC,oBAAoB;IAC5B,OAAO,CAAC,yBAAyB;IACjC,OAAO,CAAC,GAAG;IAzBJ,UAAU,EAAG,MAAM,CAAC;IACpB,WAAW,EAAG,QAAQ,CAAC;IACvB,aAAa,EAAG,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,oBAAoB,EAAE,OAAO,CAAS;IACtC,WAAW,EAAE,YAAY,GAAG,cAAc,CAAkB;IAC5D,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAE5B,MAAM,qBAA4B;IAClC,cAAc;cAA2B,cAAc,GAAG,YAAY;YAAM,MAAM;OAAK;IAEjG,QAAQ,EAAE,cAAc,GAAG,IAAI,CAAQ;IACvC,OAAO,EAAE,OAAO,CAAS;IACzB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAQ;IAG5B,QAAQ,EAAE,OAAO,CAAS;IAC1B,OAAO,EAAE,OAAO,CAAS;IAGzB,gBAAgB,EAAE,OAAO,CAAS;gBAGxB,oBAAoB,EAAE,oBAAoB,EAC1C,yBAAyB,EAAE,yBAAyB,EACpD,GAAG,EAAE,iBAAiB;IAG1B,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAKzB,WAAW,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;YAO1C,YAAY;YAqBZ,eAAe;IAmB7B,cAAc,IAAI,IAAI;IAItB,eAAe,IAAI,IAAI;IAIvB,YAAY,IAAI,IAAI;IAMpB,MAAM,IAAI,IAAI;IAKR,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAgB/B,kBAAkB,IAAI,IAAI;IAK1B,OAAO,IAAI,IAAI;yCAzHJ,4BAA4B;2CAA5B,4BAA4B;CA4HxC"}