@memberjunction/ng-core-entity-forms 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 (65) hide show
  1. package/dist/lib/custom/AIAgents/ai-agent-form.component.d.ts +5 -0
  2. package/dist/lib/custom/AIAgents/ai-agent-form.component.d.ts.map +1 -1
  3. package/dist/lib/custom/AIAgents/ai-agent-form.component.js +12 -9
  4. package/dist/lib/custom/AIAgents/ai-agent-form.component.js.map +1 -1
  5. package/dist/lib/custom/Conversations/conversation-overview.panel.d.ts +16 -3
  6. package/dist/lib/custom/Conversations/conversation-overview.panel.d.ts.map +1 -1
  7. package/dist/lib/custom/Conversations/conversation-overview.panel.js +103 -43
  8. package/dist/lib/custom/Conversations/conversation-overview.panel.js.map +1 -1
  9. package/dist/lib/custom/Entities/entity-form.component.d.ts +8 -0
  10. package/dist/lib/custom/Entities/entity-form.component.d.ts.map +1 -1
  11. package/dist/lib/custom/Entities/entity-form.component.js +18 -4
  12. package/dist/lib/custom/Entities/entity-form.component.js.map +1 -1
  13. package/dist/lib/custom/Files/file-form.component.d.ts +5 -5
  14. package/dist/lib/custom/Files/file-form.component.d.ts.map +1 -1
  15. package/dist/lib/custom/Files/file-form.component.js +227 -157
  16. package/dist/lib/custom/Files/file-form.component.js.map +1 -1
  17. package/dist/lib/custom/Files/file-form.logic.d.ts +24 -0
  18. package/dist/lib/custom/Files/file-form.logic.d.ts.map +1 -0
  19. package/dist/lib/custom/Files/file-form.logic.js +57 -0
  20. package/dist/lib/custom/Files/file-form.logic.js.map +1 -0
  21. package/dist/lib/custom/Lists/list-form.component.d.ts.map +1 -1
  22. package/dist/lib/custom/Lists/list-form.component.js +3 -2
  23. package/dist/lib/custom/Lists/list-form.component.js.map +1 -1
  24. package/dist/lib/custom/Queries/query-form.component.js +2 -2
  25. package/dist/lib/custom/Templates/templates-form.component.js +2 -2
  26. package/dist/lib/custom/ai-agent-run/agent-run-cost-split.d.ts +34 -0
  27. package/dist/lib/custom/ai-agent-run/agent-run-cost-split.d.ts.map +1 -0
  28. package/dist/lib/custom/ai-agent-run/agent-run-cost-split.js +33 -0
  29. package/dist/lib/custom/ai-agent-run/agent-run-cost-split.js.map +1 -0
  30. package/dist/lib/custom/ai-agent-run/ai-agent-run-analytics.component.d.ts +3 -0
  31. package/dist/lib/custom/ai-agent-run/ai-agent-run-analytics.component.d.ts.map +1 -1
  32. package/dist/lib/custom/ai-agent-run/ai-agent-run-analytics.component.js +261 -242
  33. package/dist/lib/custom/ai-agent-run/ai-agent-run-analytics.component.js.map +1 -1
  34. package/dist/lib/custom/custom-forms.module.d.ts +35 -34
  35. package/dist/lib/custom/custom-forms.module.d.ts.map +1 -1
  36. package/dist/lib/custom/custom-forms.module.js +6 -2
  37. package/dist/lib/custom/custom-forms.module.js.map +1 -1
  38. package/dist/lib/generated/Entities/MJConversation/mjconversation.form.component.d.ts.map +1 -1
  39. package/dist/lib/generated/Entities/MJConversation/mjconversation.form.component.js +32 -14
  40. package/dist/lib/generated/Entities/MJConversation/mjconversation.form.component.js.map +1 -1
  41. package/dist/lib/generated/Entities/MJConversationBranch/mjconversationbranch.form.component.d.ts +10 -0
  42. package/dist/lib/generated/Entities/MJConversationBranch/mjconversationbranch.form.component.d.ts.map +1 -0
  43. package/dist/lib/generated/Entities/MJConversationBranch/mjconversationbranch.form.component.js +111 -0
  44. package/dist/lib/generated/Entities/MJConversationBranch/mjconversationbranch.form.component.js.map +1 -0
  45. package/dist/lib/generated/Entities/MJConversationDetail/mjconversationdetail.form.component.d.ts.map +1 -1
  46. package/dist/lib/generated/Entities/MJConversationDetail/mjconversationdetail.form.component.js +73 -75
  47. package/dist/lib/generated/Entities/MJConversationDetail/mjconversationdetail.form.component.js.map +1 -1
  48. package/dist/lib/generated/Entities/MJEntity/mjentity.form.component.d.ts.map +1 -1
  49. package/dist/lib/generated/Entities/MJEntity/mjentity.form.component.js +112 -94
  50. package/dist/lib/generated/Entities/MJEntity/mjentity.form.component.js.map +1 -1
  51. package/dist/lib/generated/Entities/MJScopedNotificationConfig/mjscopednotificationconfig.form.component.d.ts +10 -0
  52. package/dist/lib/generated/Entities/MJScopedNotificationConfig/mjscopednotificationconfig.form.component.d.ts.map +1 -0
  53. package/dist/lib/generated/Entities/MJScopedNotificationConfig/mjscopednotificationconfig.form.component.js +106 -0
  54. package/dist/lib/generated/Entities/MJScopedNotificationConfig/mjscopednotificationconfig.form.component.js.map +1 -0
  55. package/dist/lib/generated/Entities/MJUser/mjuser.form.component.d.ts.map +1 -1
  56. package/dist/lib/generated/Entities/MJUser/mjuser.form.component.js +734 -714
  57. package/dist/lib/generated/Entities/MJUser/mjuser.form.component.js.map +1 -1
  58. package/dist/lib/generated/Entities/MJUserNotificationType/mjusernotificationtype.form.component.d.ts.map +1 -1
  59. package/dist/lib/generated/Entities/MJUserNotificationType/mjusernotificationtype.form.component.js +24 -6
  60. package/dist/lib/generated/Entities/MJUserNotificationType/mjusernotificationtype.form.component.js.map +1 -1
  61. package/dist/lib/generated/generated-forms.module.d.ts +283 -281
  62. package/dist/lib/generated/generated-forms.module.d.ts.map +1 -1
  63. package/dist/lib/generated/generated-forms.module.js +6 -0
  64. package/dist/lib/generated/generated-forms.module.js.map +1 -1
  65. package/package.json +48 -47
@@ -1 +1 @@
1
- {"version":3,"file":"file-form.component.js","sourceRoot":"","sources":["../../../../src/lib/custom/Files/file-form.component.ts","../../../../src/lib/custom/Files/file-form.component.html"],"names":[],"mappings":"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","sourcesContent":["import { Component, OnInit, OnDestroy, OnChanges, SimpleChanges, inject, ChangeDetectorRef } from '@angular/core';\nimport { DomSanitizer, SafeResourceUrl } from '@angular/platform-browser';\nimport { MJFileEntity, UserInfoEngine } from '@memberjunction/core-entities';\nimport { RegisterClass, UUIDsEqual } from '@memberjunction/global';\nimport { BaseFormComponent } from '@memberjunction/ng-base-forms';\nimport { GraphQLDataProvider, gql } from '@memberjunction/graphql-dataprovider';\nimport { MJNotificationService } from '@memberjunction/ng-notifications';\nimport { MJFileFormComponent } from '../../generated/Entities/MJFile/mjfile.form.component';\nimport { z } from 'zod';\n\nconst CreateMediaAccessTokenMutation = gql`\n mutation CreateMediaAccessToken($fileId: String!) {\n CreateMediaAccessToken(fileId: $fileId) {\n Success\n Token\n Url\n MimeType\n ErrorMessage\n }\n }\n`;\n\nconst CreateMediaAccessTokenMutationSchema = z.object({\n CreateMediaAccessToken: z.object({\n Success: z.boolean(),\n Token: z.string().optional().nullable(),\n Url: z.string().optional().nullable(),\n MimeType: z.string().optional().nullable(),\n ErrorMessage: z.string().optional().nullable(),\n }),\n});\n\nconst DownloadUrlMutation = gql`\n mutation DownloadUrl($fileId: String!) {\n DownloadUrl(fileId: $fileId) {\n Success\n ErrorMessage\n Url\n }\n }\n`;\n\nconst DownloadUrlMutationSchema = z.object({\n DownloadUrl: z.object({\n Success: z.boolean(),\n ErrorMessage: z.string().optional().nullable(),\n Url: z.string().optional().nullable(),\n }),\n});\n\n@RegisterClass(BaseFormComponent, 'MJ: Files', 100)\n@Component({\n standalone: false,\n selector: 'mj-file-form-extended',\n templateUrl: './file-form.component.html',\n styleUrls: ['../../../shared/form-styles.css', './file-form.component.css'],\n})\nexport class MJFileFormComponentExtended extends MJFileFormComponent implements OnInit, OnDestroy, OnChanges {\n public override record!: MJFileEntity;\n\n public static readonly PREF_SHOW_DETAILS = 'mj.fileViewer.showDetailsSidebar';\n\n public IsLoadingMedia: boolean = true;\n public IsMediaLoaded: boolean = false;\n public MediaUrl: string | null = null;\n public SafeMediaUrl: SafeResourceUrl | null = null;\n public TextContent: string | null = null;\n public ShowDetailsSidebar: boolean = true;\n public ViewStandardForm: boolean = false;\n\n private sanitizer = inject(DomSanitizer);\n private notifications = inject(MJNotificationService);\n private mediaTimer?: ReturnType<typeof setTimeout>;\n\n public override async ngOnInit(): Promise<void> {\n await super.ngOnInit();\n this.restoreUserPreferences();\n if (this.record?.ID) {\n void this.LoadMediaPreview();\n }\n }\n\n public async ngOnChanges(changes: SimpleChanges): Promise<void> {\n if (changes['record'] && this.record?.ID) {\n void this.LoadMediaPreview();\n }\n }\n\n public override ngOnDestroy(): void {\n if (this.mediaTimer) {\n clearTimeout(this.mediaTimer);\n }\n super.ngOnDestroy();\n }\n\n private restoreUserPreferences(): void {\n const saved = UserInfoEngine.Instance.GetSetting(MJFileFormComponentExtended.PREF_SHOW_DETAILS);\n if (saved !== undefined && saved !== null) {\n try {\n this.ShowDetailsSidebar = JSON.parse(saved) === true;\n } catch {\n this.ShowDetailsSidebar = saved === 'true';\n }\n }\n }\n\n /**\n * Loads the media streaming URL for inline viewing.\n */\n public async LoadMediaPreview(): Promise<void> {\n if (!this.record?.ID) return;\n\n this.IsLoadingMedia = true;\n this.IsMediaLoaded = false;\n this.MediaUrl = null;\n this.SafeMediaUrl = null;\n this.TextContent = null;\n this.cdr.markForCheck();\n\n try {\n // 1. Try CreateMediaAccessToken (supports Range headers and browser tab titles)\n const mediaResult = await GraphQLDataProvider.ExecuteGQL(\n CreateMediaAccessTokenMutation,\n { fileId: this.record.ID }\n );\n const parsedMedia = CreateMediaAccessTokenMutationSchema.safeParse(mediaResult);\n if (parsedMedia.success && parsedMedia.data.CreateMediaAccessToken.Success && parsedMedia.data.CreateMediaAccessToken.Url) {\n this.MediaUrl = parsedMedia.data.CreateMediaAccessToken.Url;\n this.SafeMediaUrl = this.sanitizer.bypassSecurityTrustResourceUrl(this.MediaUrl);\n } else {\n // 2. Fallback to DownloadUrl\n const downloadResult = await GraphQLDataProvider.ExecuteGQL(\n DownloadUrlMutation,\n { fileId: this.record.ID }\n );\n const parsedDownload = DownloadUrlMutationSchema.safeParse(downloadResult);\n if (parsedDownload.success && parsedDownload.data.DownloadUrl.Success && parsedDownload.data.DownloadUrl.Url) {\n this.MediaUrl = parsedDownload.data.DownloadUrl.Url;\n this.SafeMediaUrl = this.sanitizer.bypassSecurityTrustResourceUrl(this.MediaUrl);\n }\n }\n\n if (this.MediaUrl) {\n const mediaType = this.MediaType;\n if (mediaType === 'text') {\n try {\n const resp = await window.fetch(this.MediaUrl);\n if (resp.ok) {\n this.TextContent = await resp.text();\n }\n } catch {\n // fallback\n }\n this.IsMediaLoaded = true;\n }\n } else {\n this.IsMediaLoaded = true;\n }\n } catch (err) {\n console.error('[MJFileFormComponentExtended] Error loading media preview:', err);\n this.IsMediaLoaded = true;\n } finally {\n this.IsLoadingMedia = false;\n this.cdr.markForCheck();\n }\n }\n\n public OnMediaElementLoaded(): void {\n if (this.mediaTimer) clearTimeout(this.mediaTimer);\n this.mediaTimer = setTimeout(() => {\n this.IsMediaLoaded = true;\n this.cdr.markForCheck();\n }, 350);\n }\n\n /**\n * Determines media type category based on MIME type or file extension.\n */\n public get MediaType(): 'image' | 'pdf' | 'video' | 'audio' | 'text' | 'other' {\n const mime = (this.record?.ContentType || '').toLowerCase();\n const name = (this.record?.Name || '').toLowerCase();\n\n if (mime.startsWith('image/') || /\\.(png|jpe?g|gif|webp|svg|ico|bmp|avif)$/.test(name)) return 'image';\n if (mime === 'application/pdf' || name.endsWith('.pdf')) return 'pdf';\n if (mime.startsWith('video/') || /\\.(mp4|webm|ogg|mov|mkv|avi)$/.test(name)) return 'video';\n if (mime.startsWith('audio/') || /\\.(mp3|wav|ogg|aac|m4a|flac)$/.test(name)) return 'audio';\n if (\n mime.startsWith('text/') ||\n mime.includes('json') ||\n mime.includes('xml') ||\n mime.includes('javascript') ||\n /\\.(txt|md|csv|json|xml|yaml|yml|js|ts|html|css|sql|sh|log)$/.test(name)\n ) {\n return 'text';\n }\n return 'other';\n }\n\n public get FileIconClass(): string {\n switch (this.MediaType) {\n case 'image': return 'fa-solid fa-file-image mj-file-color-image';\n case 'pdf': return 'fa-solid fa-file-pdf mj-file-color-pdf';\n case 'video': return 'fa-solid fa-file-video mj-file-color-video';\n case 'audio': return 'fa-solid fa-file-audio mj-file-color-audio';\n case 'text': return 'fa-solid fa-file-lines mj-file-color-text';\n default: return 'fa-solid fa-file mj-file-color-generic';\n }\n }\n\n public FormatFileSize(bytes: number | null | undefined): string {\n if (bytes == null || isNaN(bytes) || bytes <= 0) return '0 B';\n const units = ['B', 'KB', 'MB', 'GB', 'TB'];\n const idx = Math.min(Math.floor(Math.log(bytes) / Math.log(1024)), units.length - 1);\n const val = bytes / Math.pow(1024, idx);\n return `${val.toFixed(idx === 0 ? 0 : 1)} ${units[idx]}`;\n }\n\n public OpenInExternalTab(): void {\n if (this.MediaUrl) {\n window.open(this.MediaUrl, '_blank', 'noopener,noreferrer');\n } else {\n this.notifications.CreateSimpleNotification('File URL not ready', 'warning');\n }\n }\n\n public ToggleDetailsSidebar(): void {\n this.ShowDetailsSidebar = !this.ShowDetailsSidebar;\n UserInfoEngine.Instance.SetSettingDebounced(\n MJFileFormComponentExtended.PREF_SHOW_DETAILS,\n JSON.stringify(this.ShowDetailsSidebar)\n );\n }\n\n public ToggleViewMode(): void {\n this.ViewStandardForm = !this.ViewStandardForm;\n }\n}\n","@if (!ViewStandardForm) {\n <div class=\"mj-file-viewer-container\">\n <!-- Top Action & Info Header -->\n <header class=\"mj-file-viewer-header\">\n <div class=\"mj-file-viewer-header-left\">\n <div class=\"mj-file-viewer-icon-box\">\n <i [class]=\"FileIconClass\"></i>\n </div>\n <div class=\"mj-file-viewer-title-group\">\n <h1 class=\"mj-file-viewer-title\" [title]=\"record.Name\">{{ record.Name }}</h1>\n <div class=\"mj-file-viewer-badges\">\n <span class=\"mj-file-badge mj-file-badge--type\">{{ record.ContentType || 'Document' }}</span>\n <span class=\"mj-file-badge mj-file-badge--size\">{{ FormatFileSize(record.ContentLength) }}</span>\n @if (record.Status) {\n <span class=\"mj-file-badge mj-file-badge--status\">{{ record.Status }}</span>\n }\n </div>\n </div>\n </div>\n\n <div class=\"mj-file-viewer-header-right\">\n @if (MediaUrl) {\n <button type=\"button\" mjButton variant=\"secondary\" size=\"sm\" (click)=\"OpenInExternalTab()\" title=\"Open file in new browser tab\">\n <i class=\"fa-solid fa-arrow-up-right-from-square\"></i>\n <span>Open in New Tab</span>\n </button>\n }\n <button type=\"button\" mjButton variant=\"secondary\" size=\"sm\" (click)=\"ToggleDetailsSidebar()\" [title]=\"ShowDetailsSidebar ? 'Hide Details' : 'Show Details'\">\n <i class=\"fa-solid fa-circle-info\"></i>\n <span>{{ ShowDetailsSidebar ? 'Hide Details' : 'Details' }}</span>\n </button>\n @if (UserCanEdit) {\n <button type=\"button\" mjButton variant=\"tertiary\" size=\"sm\" (click)=\"ToggleViewMode()\" title=\"Switch to full record editor\">\n <i class=\"fa-solid fa-pen-to-square\"></i>\n <span>Edit Record</span>\n </button>\n }\n </div>\n </header>\n\n <!-- Body / Split Content Area -->\n <div class=\"mj-file-viewer-body\">\n <!-- Media Stage -->\n <main class=\"mj-file-viewer-stage\">\n @if (IsLoadingMedia || !IsMediaLoaded) {\n <div class=\"mj-file-viewer-loading-overlay\">\n <mj-loading [text]=\"'Loading ' + (record.Name || 'file') + '...'\"></mj-loading>\n </div>\n }\n\n @switch (MediaType) {\n @case ('image') {\n @if (MediaUrl) {\n <div class=\"mj-file-media-image-box\" [class.mj-file-media--hidden]=\"!IsMediaLoaded\">\n <img [src]=\"MediaUrl\" [alt]=\"record.Name\" (load)=\"OnMediaElementLoaded()\" (error)=\"OnMediaElementLoaded()\" />\n </div>\n } @else {\n <div class=\"mj-file-viewer-fallback\">\n <i class=\"fa-solid fa-file-image mj-file-fallback-icon\"></i>\n <h3>{{ record.Name }}</h3>\n <p>Image preview could not be loaded.</p>\n </div>\n }\n }\n @case ('pdf') {\n @if (SafeMediaUrl) {\n <div class=\"mj-file-media-frame-box\" [class.mj-file-media--hidden]=\"!IsMediaLoaded\">\n <iframe [src]=\"SafeMediaUrl\" title=\"Document Preview\" (load)=\"OnMediaElementLoaded()\"></iframe>\n </div>\n } @else {\n <div class=\"mj-file-viewer-fallback\">\n <i class=\"fa-solid fa-file-pdf mj-file-fallback-icon\"></i>\n <h3>{{ record.Name }}</h3>\n <p>PDF preview could not be loaded.</p>\n </div>\n }\n }\n @case ('video') {\n @if (MediaUrl) {\n <div class=\"mj-file-media-video-box\" [class.mj-file-media--hidden]=\"!IsMediaLoaded\">\n <video controls autoplay [src]=\"MediaUrl\" (loadeddata)=\"OnMediaElementLoaded()\" (error)=\"OnMediaElementLoaded()\"></video>\n </div>\n } @else {\n <div class=\"mj-file-viewer-fallback\">\n <i class=\"fa-solid fa-file-video mj-file-fallback-icon\"></i>\n <h3>{{ record.Name }}</h3>\n <p>Video preview could not be loaded.</p>\n </div>\n }\n }\n @case ('audio') {\n @if (MediaUrl) {\n <div class=\"mj-file-media-audio-box\" [class.mj-file-media--hidden]=\"!IsMediaLoaded\">\n <div class=\"mj-file-audio-visual-icon\"><i class=\"fa-solid fa-headphones\"></i></div>\n <audio controls [src]=\"MediaUrl\" (loadeddata)=\"OnMediaElementLoaded()\" (error)=\"OnMediaElementLoaded()\"></audio>\n </div>\n } @else {\n <div class=\"mj-file-viewer-fallback\">\n <i class=\"fa-solid fa-file-audio mj-file-fallback-icon\"></i>\n <h3>{{ record.Name }}</h3>\n <p>Audio preview could not be loaded.</p>\n </div>\n }\n }\n @case ('text') {\n <div class=\"mj-file-media-text-box\">\n <pre><code>{{ TextContent || 'Loading text content...' }}</code></pre>\n </div>\n }\n @default {\n <div class=\"mj-file-viewer-fallback\">\n <i [class]=\"FileIconClass\" class=\"mj-file-fallback-icon\"></i>\n <h3>{{ record.Name }}</h3>\n <p class=\"mj-file-fallback-meta\">{{ record.ContentType || 'Document' }} &bull; {{ FormatFileSize(record.ContentLength) }}</p>\n <p class=\"mj-file-fallback-desc\">{{ record.Description || 'Preview is not available for this file type.' }}</p>\n @if (MediaUrl) {\n <button type=\"button\" mjButton variant=\"primary\" (click)=\"OpenInExternalTab()\">\n <i class=\"fa-solid fa-arrow-up-right-from-square\"></i>\n <span>Open in Browser</span>\n </button>\n }\n </div>\n }\n }\n </main>\n\n <!-- Details & Linked Records Sidebar -->\n @if (ShowDetailsSidebar) {\n <aside class=\"mj-file-viewer-sidebar\">\n <div class=\"mj-file-sidebar-header\">\n <h3>File Details & Links</h3>\n <button type=\"button\" class=\"mj-file-sidebar-close\" (click)=\"ToggleDetailsSidebar()\" title=\"Collapse Sidebar\">\n <i class=\"fa-solid fa-xmark\"></i>\n </button>\n </div>\n\n <div class=\"mj-file-sidebar-content\">\n <!-- Metadata Cards -->\n <div class=\"mj-file-sidebar-card\">\n <div class=\"mj-file-meta-row\">\n <span class=\"mj-file-meta-label\">File Name:</span>\n <span class=\"mj-file-meta-val font-semibold\">{{ record.Name }}</span>\n </div>\n @if (record.Description) {\n <div class=\"mj-file-meta-row\">\n <span class=\"mj-file-meta-label\">Description:</span>\n <span class=\"mj-file-meta-val\">{{ record.Description }}</span>\n </div>\n }\n <div class=\"mj-file-meta-row\">\n <span class=\"mj-file-meta-label\">MIME Type:</span>\n <span class=\"mj-file-meta-val font-mono\">{{ record.ContentType || 'Unknown' }}</span>\n </div>\n <div class=\"mj-file-meta-row\">\n <span class=\"mj-file-meta-label\">Size:</span>\n <span class=\"mj-file-meta-val\">{{ FormatFileSize(record.ContentLength) }}</span>\n </div>\n @if (record.Status) {\n <div class=\"mj-file-meta-row\">\n <span class=\"mj-file-meta-label\">Status:</span>\n <span class=\"mj-file-meta-val\">{{ record.Status }}</span>\n </div>\n }\n <div class=\"mj-file-meta-row\">\n <span class=\"mj-file-meta-label\">Created:</span>\n <span class=\"mj-file-meta-val\">{{ record.CreatedAt | date:'short' }}</span>\n </div>\n </div>\n\n <!-- Linked Records -->\n <div class=\"mj-file-sidebar-section\">\n <h4 class=\"mj-file-sidebar-section-title\">\n <i class=\"fa-solid fa-link\"></i>\n <span>Linked Records</span>\n </h4>\n <div class=\"mj-file-relationship-wrapper\">\n <mj-relationship-view \n [Params]=\"BuildRelationshipViewParamsByEntityName('MJ: File Entity Record Links', 'FileID')\"\n [NewRecordValues]=\"NewRecordValues('MJ: File Entity Record Links', 'FileID')\">\n </mj-relationship-view>\n </div>\n </div>\n </div>\n </aside>\n }\n </div>\n </div>\n} @else {\n <div class=\"mj-file-standard-form-wrapper\">\n <div class=\"mj-file-mode-switch-bar\">\n <button type=\"button\" mjButton variant=\"secondary\" size=\"sm\" (click)=\"ToggleViewMode()\">\n <i class=\"fa-solid fa-arrow-left\"></i>\n <span>Return to File Preview</span>\n </button>\n </div>\n\n <mj-record-form-container [Record]=\"record\" [FormComponent]=\"this\"\n (Navigate)=\"OnFormNavigate($event)\"\n (DeleteRequested)=\"OnDeleteRequested()\"\n (FavoriteToggled)=\"OnFavoriteToggled()\"\n (HistoryRequested)=\"OnHistoryRequested()\"\n (ListManagementRequested)=\"OnListManagementRequested()\">\n\n <mj-form-panel-slot Entity=\"{{record.EntityInfo.Name}}\" Slot=\"before-fields\" [Record]=\"record\" [FormComponent]=\"this\" [FormContext]=\"formContext\"></mj-form-panel-slot>\n\n <!-- File Basics Section -->\n <mj-collapsible-panel\n SectionKey=\"fileBasics\"\n SectionName=\"File Basics\"\n Icon=\"fa fa-file\"\n [Form]=\"this\"\n [FormContext]=\"formContext\">\n <mj-form-field \n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"Name\"\n Type=\"textbox\"\n [EditMode]=\"EditMode\"\n [FormContext]=\"formContext\"\n ></mj-form-field>\n <mj-form-field \n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"Description\"\n Type=\"textarea\"\n [EditMode]=\"EditMode\"\n [FormContext]=\"formContext\"\n ></mj-form-field>\n </mj-collapsible-panel>\n\n <!-- Classification & Status Section -->\n <mj-collapsible-panel\n SectionKey=\"classificationStatus\"\n SectionName=\"Classification & Status\"\n Icon=\"fa fa-tags\"\n [Form]=\"this\"\n [FormContext]=\"formContext\">\n <mj-form-field \n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"CategoryID\"\n Type=\"textbox\"\n [EditMode]=\"EditMode\"\n [FormContext]=\"formContext\"\n LinkType=\"Record\"\n ></mj-form-field>\n <mj-form-field \n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"Status\"\n Type=\"textbox\"\n [EditMode]=\"EditMode\"\n [FormContext]=\"formContext\"\n ></mj-form-field>\n </mj-collapsible-panel>\n\n <!-- Storage Details Section -->\n <mj-collapsible-panel\n SectionKey=\"storageDetails\"\n SectionName=\"Storage Details\"\n Icon=\"fa fa-database\"\n [Form]=\"this\"\n [FormContext]=\"formContext\">\n <mj-form-field \n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"ProviderID\"\n Type=\"textbox\"\n [EditMode]=\"EditMode\"\n [FormContext]=\"formContext\"\n LinkType=\"Record\"\n ></mj-form-field>\n <mj-form-field \n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"ProviderKey\"\n Type=\"textbox\"\n [EditMode]=\"EditMode\"\n [FormContext]=\"formContext\"\n ></mj-form-field>\n <mj-form-field \n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"ContentType\"\n Type=\"textbox\"\n [EditMode]=\"EditMode\"\n [FormContext]=\"formContext\"\n ></mj-form-field>\n <mj-form-field \n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"ContentLength\"\n Type=\"numeric\"\n [EditMode]=\"EditMode\"\n [FormContext]=\"formContext\"\n ></mj-form-field>\n </mj-collapsible-panel>\n\n <!-- Linked Records Section -->\n <mj-collapsible-panel\n SectionKey=\"mJFileEntityRecordLinks\"\n SectionName=\"File Entity Record Links\"\n Icon=\"fa fa-link\"\n [Form]=\"this\"\n [FormContext]=\"formContext\">\n <mj-relationship-view \n [Params]=\"BuildRelationshipViewParamsByEntityName('MJ: File Entity Record Links','FileID')\"\n [NewRecordValues]=\"NewRecordValues('MJ: File Entity Record Links','FileID')\">\n </mj-relationship-view>\n </mj-collapsible-panel>\n\n <mj-form-panel-slot Entity=\"{{record.EntityInfo.Name}}\" Slot=\"after-fields\" [Record]=\"record\" [FormComponent]=\"this\" [FormContext]=\"formContext\"></mj-form-panel-slot>\n </mj-record-form-container>\n </div>\n}\n"]}
1
+ {"version":3,"file":"file-form.component.js","sourceRoot":"","sources":["../../../../src/lib/custom/Files/file-form.component.ts","../../../../src/lib/custom/Files/file-form.component.html"],"names":[],"mappings":"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","sourcesContent":["import { Component, OnInit, OnDestroy, OnChanges, SimpleChanges, inject, ChangeDetectorRef } from '@angular/core';\nimport { DomSanitizer, SafeResourceUrl } from '@angular/platform-browser';\nimport { MJFileEntity, UserInfoEngine } from '@memberjunction/core-entities';\nimport { RegisterClass, UUIDsEqual } from '@memberjunction/global';\nimport { BaseFormComponent } from '@memberjunction/ng-base-forms';\nimport { GraphQLDataProvider, gql } from '@memberjunction/graphql-dataprovider';\nimport { MJNotificationService } from '@memberjunction/ng-notifications';\nimport { MJFileFormComponent } from '../../generated/Entities/MJFile/mjfile.form.component';\nimport { ClassifyFileMediaType, DescribeFileSize, MediaLoadsByElement, type FileMediaType } from './file-form.logic';\nimport { z } from 'zod';\n\nconst CreateMediaAccessTokenMutation = gql`\n mutation CreateMediaAccessToken($fileId: String!) {\n CreateMediaAccessToken(fileId: $fileId) {\n Success\n Token\n Url\n MimeType\n ErrorMessage\n }\n }\n`;\n\nconst CreateMediaAccessTokenMutationSchema = z.object({\n CreateMediaAccessToken: z.object({\n Success: z.boolean(),\n Token: z.string().optional().nullable(),\n Url: z.string().optional().nullable(),\n MimeType: z.string().optional().nullable(),\n ErrorMessage: z.string().optional().nullable(),\n }),\n});\n\nconst DownloadUrlMutation = gql`\n mutation DownloadUrl($fileId: String!) {\n DownloadUrl(fileId: $fileId) {\n Success\n ErrorMessage\n Url\n }\n }\n`;\n\nconst DownloadUrlMutationSchema = z.object({\n DownloadUrl: z.object({\n Success: z.boolean(),\n ErrorMessage: z.string().optional().nullable(),\n Url: z.string().optional().nullable(),\n }),\n});\n\n@RegisterClass(BaseFormComponent, 'MJ: Files', 100)\n@Component({\n standalone: false,\n selector: 'mj-file-form-extended',\n templateUrl: './file-form.component.html',\n styleUrls: ['../../../shared/form-styles.css', './file-form.component.css'],\n})\nexport class MJFileFormComponentExtended extends MJFileFormComponent implements OnInit, OnDestroy, OnChanges {\n public override record!: MJFileEntity;\n\n public static readonly PREF_SHOW_DETAILS = 'mj.fileViewer.showDetailsSidebar';\n\n public IsLoadingMedia: boolean = true;\n public IsMediaLoaded: boolean = false;\n public MediaUrl: string | null = null;\n public SafeMediaUrl: SafeResourceUrl | null = null;\n public TextContent: string | null = null;\n public ShowDetailsSidebar: boolean = true;\n public ViewStandardForm: boolean = false;\n\n private sanitizer = inject(DomSanitizer);\n private notifications = inject(MJNotificationService);\n private mediaTimer?: ReturnType<typeof setTimeout>;\n\n public override async ngOnInit(): Promise<void> {\n await super.ngOnInit();\n this.restoreUserPreferences();\n if (this.record?.ID) {\n void this.LoadMediaPreview();\n }\n }\n\n public async ngOnChanges(changes: SimpleChanges): Promise<void> {\n if (changes['record'] && this.record?.ID) {\n void this.LoadMediaPreview();\n }\n }\n\n public override ngOnDestroy(): void {\n if (this.mediaTimer) {\n clearTimeout(this.mediaTimer);\n }\n super.ngOnDestroy();\n }\n\n private restoreUserPreferences(): void {\n const saved = UserInfoEngine.Instance.GetSetting(MJFileFormComponentExtended.PREF_SHOW_DETAILS);\n if (saved !== undefined && saved !== null) {\n try {\n this.ShowDetailsSidebar = JSON.parse(saved) === true;\n } catch {\n this.ShowDetailsSidebar = saved === 'true';\n }\n }\n }\n\n /**\n * Loads the media streaming URL for inline viewing.\n */\n public async LoadMediaPreview(): Promise<void> {\n if (!this.record?.ID) return;\n\n this.IsLoadingMedia = true;\n this.IsMediaLoaded = false;\n this.MediaUrl = null;\n this.SafeMediaUrl = null;\n this.TextContent = null;\n this.cdr.markForCheck();\n\n try {\n // 1. Try CreateMediaAccessToken (supports Range headers and browser tab titles)\n const mediaResult = await GraphQLDataProvider.ExecuteGQL(\n CreateMediaAccessTokenMutation,\n { fileId: this.record.ID }\n );\n const parsedMedia = CreateMediaAccessTokenMutationSchema.safeParse(mediaResult);\n if (parsedMedia.success && parsedMedia.data.CreateMediaAccessToken.Success && parsedMedia.data.CreateMediaAccessToken.Url) {\n this.MediaUrl = parsedMedia.data.CreateMediaAccessToken.Url;\n this.SafeMediaUrl = this.sanitizer.bypassSecurityTrustResourceUrl(this.MediaUrl);\n } else {\n // 2. Fallback to DownloadUrl\n const downloadResult = await GraphQLDataProvider.ExecuteGQL(\n DownloadUrlMutation,\n { fileId: this.record.ID }\n );\n const parsedDownload = DownloadUrlMutationSchema.safeParse(downloadResult);\n if (parsedDownload.success && parsedDownload.data.DownloadUrl.Success && parsedDownload.data.DownloadUrl.Url) {\n this.MediaUrl = parsedDownload.data.DownloadUrl.Url;\n this.SafeMediaUrl = this.sanitizer.bypassSecurityTrustResourceUrl(this.MediaUrl);\n }\n }\n\n if (this.MediaUrl) {\n const mediaType = this.MediaType;\n if (mediaType === 'text') {\n try {\n const resp = await window.fetch(this.MediaUrl);\n if (resp.ok) {\n this.TextContent = await resp.text();\n }\n } catch {\n // fallback\n }\n this.IsMediaLoaded = true;\n } else if (!MediaLoadsByElement(mediaType)) {\n // No element will fire `load` for this type: the fallback card is the view, so it is loaded now.\n // Without this the overlay stayed on \"Loading…\" for every .zip and the like (MJ#4947).\n this.IsMediaLoaded = true;\n }\n } else {\n this.IsMediaLoaded = true;\n }\n } catch (err) {\n console.error('[MJFileFormComponentExtended] Error loading media preview:', err);\n this.IsMediaLoaded = true;\n } finally {\n this.IsLoadingMedia = false;\n this.cdr.markForCheck();\n }\n }\n\n public OnMediaElementLoaded(): void {\n if (this.mediaTimer) clearTimeout(this.mediaTimer);\n this.mediaTimer = setTimeout(() => {\n this.IsMediaLoaded = true;\n this.cdr.markForCheck();\n }, 350);\n }\n\n /** The viewer's category for the file, from its MIME type or its name (`ClassifyFileMediaType`). */\n public get MediaType(): FileMediaType {\n return ClassifyFileMediaType(this.record?.ContentType, this.record?.Name);\n }\n\n public get FileIconClass(): string {\n switch (this.MediaType) {\n case 'image': return 'fa-solid fa-file-image mj-file-color-image';\n case 'pdf': return 'fa-solid fa-file-pdf mj-file-color-pdf';\n case 'video': return 'fa-solid fa-file-video mj-file-color-video';\n case 'audio': return 'fa-solid fa-file-audio mj-file-color-audio';\n case 'text': return 'fa-solid fa-file-lines mj-file-color-text';\n case 'docx': return 'fa-solid fa-file-word mj-file-color-word';\n case 'xlsx': return 'fa-solid fa-file-excel mj-file-color-excel';\n default: return 'fa-solid fa-file mj-file-color-generic';\n }\n }\n\n /** The size badge's text, or null when no size is recorded: `MJ: Files` has no length column today. */\n public get FileSizeLabel(): string | null {\n const length = (this.record as unknown as { ContentLength?: number | null }).ContentLength;\n return DescribeFileSize(length);\n }\n\n public OpenInExternalTab(): void {\n if (this.MediaUrl) {\n window.open(this.MediaUrl, '_blank', 'noopener,noreferrer');\n } else {\n this.notifications.CreateSimpleNotification('File URL not ready', 'warning');\n }\n }\n\n public ToggleDetailsSidebar(): void {\n this.ShowDetailsSidebar = !this.ShowDetailsSidebar;\n UserInfoEngine.Instance.SetSettingDebounced(\n MJFileFormComponentExtended.PREF_SHOW_DETAILS,\n JSON.stringify(this.ShowDetailsSidebar)\n );\n }\n\n public ToggleViewMode(): void {\n this.ViewStandardForm = !this.ViewStandardForm;\n }\n}\n","@if (!ViewStandardForm) {\n <div class=\"mj-file-viewer-container\">\n <!-- Top Action & Info Header -->\n <header class=\"mj-file-viewer-header\">\n <div class=\"mj-file-viewer-header-left\">\n <div class=\"mj-file-viewer-icon-box\">\n <i [class]=\"FileIconClass\"></i>\n </div>\n <div class=\"mj-file-viewer-title-group\">\n <h1 class=\"mj-file-viewer-title\" [title]=\"record.Name\">{{ record.Name }}</h1>\n <div class=\"mj-file-viewer-badges\">\n <span class=\"mj-file-badge mj-file-badge--type\">{{ record.ContentType || 'Document' }}</span>\n @if (FileSizeLabel; as size) {\n <span class=\"mj-file-badge mj-file-badge--size\">{{ size }}</span>\n }\n @if (record.Status) {\n <span class=\"mj-file-badge mj-file-badge--status\">{{ record.Status }}</span>\n }\n </div>\n </div>\n </div>\n\n <div class=\"mj-file-viewer-header-right\">\n @if (MediaUrl) {\n <button type=\"button\" mjButton variant=\"secondary\" size=\"sm\" (click)=\"OpenInExternalTab()\" title=\"Open file in new browser tab\">\n <i class=\"fa-solid fa-arrow-up-right-from-square\"></i>\n <span>Open in New Tab</span>\n </button>\n }\n <button type=\"button\" mjButton variant=\"secondary\" size=\"sm\" (click)=\"ToggleDetailsSidebar()\" [title]=\"ShowDetailsSidebar ? 'Hide Details' : 'Show Details'\">\n <i class=\"fa-solid fa-circle-info\"></i>\n <span>{{ ShowDetailsSidebar ? 'Hide Details' : 'Details' }}</span>\n </button>\n @if (UserCanEdit) {\n <button type=\"button\" mjButton variant=\"tertiary\" size=\"sm\" (click)=\"ToggleViewMode()\" title=\"Switch to full record editor\">\n <i class=\"fa-solid fa-pen-to-square\"></i>\n <span>Edit Record</span>\n </button>\n }\n </div>\n </header>\n\n <!-- Body / Split Content Area -->\n <div class=\"mj-file-viewer-body\">\n <!-- Media Stage -->\n <main class=\"mj-file-viewer-stage\">\n @if (IsLoadingMedia || !IsMediaLoaded) {\n <div class=\"mj-file-viewer-loading-overlay\">\n <mj-loading [text]=\"'Loading ' + (record.Name || 'file') + '...'\"></mj-loading>\n </div>\n }\n\n @switch (MediaType) {\n @case ('image') {\n @if (MediaUrl) {\n <div class=\"mj-file-media-image-box\" [class.mj-file-media--hidden]=\"!IsMediaLoaded\">\n <img [src]=\"MediaUrl\" [alt]=\"record.Name\" (load)=\"OnMediaElementLoaded()\" (error)=\"OnMediaElementLoaded()\" />\n </div>\n } @else {\n <div class=\"mj-file-viewer-fallback\">\n <i class=\"fa-solid fa-file-image mj-file-fallback-icon\"></i>\n <h3>{{ record.Name }}</h3>\n <p>Image preview could not be loaded.</p>\n </div>\n }\n }\n @case ('pdf') {\n @if (SafeMediaUrl) {\n <div class=\"mj-file-media-frame-box\" [class.mj-file-media--hidden]=\"!IsMediaLoaded\">\n <iframe [src]=\"SafeMediaUrl\" title=\"Document Preview\" (load)=\"OnMediaElementLoaded()\"></iframe>\n </div>\n } @else {\n <div class=\"mj-file-viewer-fallback\">\n <i class=\"fa-solid fa-file-pdf mj-file-fallback-icon\"></i>\n <h3>{{ record.Name }}</h3>\n <p>PDF preview could not be loaded.</p>\n </div>\n }\n }\n @case ('video') {\n @if (MediaUrl) {\n <div class=\"mj-file-media-video-box\" [class.mj-file-media--hidden]=\"!IsMediaLoaded\">\n <video controls autoplay [src]=\"MediaUrl\" (loadeddata)=\"OnMediaElementLoaded()\" (error)=\"OnMediaElementLoaded()\"></video>\n </div>\n } @else {\n <div class=\"mj-file-viewer-fallback\">\n <i class=\"fa-solid fa-file-video mj-file-fallback-icon\"></i>\n <h3>{{ record.Name }}</h3>\n <p>Video preview could not be loaded.</p>\n </div>\n }\n }\n @case ('audio') {\n @if (MediaUrl) {\n <div class=\"mj-file-media-audio-box\" [class.mj-file-media--hidden]=\"!IsMediaLoaded\">\n <div class=\"mj-file-audio-visual-icon\"><i class=\"fa-solid fa-headphones\"></i></div>\n <audio controls [src]=\"MediaUrl\" (loadeddata)=\"OnMediaElementLoaded()\" (error)=\"OnMediaElementLoaded()\"></audio>\n </div>\n } @else {\n <div class=\"mj-file-viewer-fallback\">\n <i class=\"fa-solid fa-file-audio mj-file-fallback-icon\"></i>\n <h3>{{ record.Name }}</h3>\n <p>Audio preview could not be loaded.</p>\n </div>\n }\n }\n @case ('text') {\n <div class=\"mj-file-media-text-box\">\n <pre><code>{{ TextContent || 'Loading text content...' }}</code></pre>\n </div>\n }\n @case ('docx') {\n @if (MediaUrl) {\n <div class=\"mj-file-media-office-box\" [class.mj-file-media--hidden]=\"!IsMediaLoaded\">\n <mj-docx-preview [Url]=\"MediaUrl\" (Loaded)=\"OnMediaElementLoaded()\" (Failed)=\"OnMediaElementLoaded()\"></mj-docx-preview>\n </div>\n } @else {\n <div class=\"mj-file-viewer-fallback\">\n <i class=\"fa-solid fa-file-word mj-file-fallback-icon\"></i>\n <h3>{{ record.Name }}</h3>\n <p>Document preview could not be loaded.</p>\n </div>\n }\n }\n @case ('xlsx') {\n @if (MediaUrl) {\n <div class=\"mj-file-media-office-box\" [class.mj-file-media--hidden]=\"!IsMediaLoaded\">\n <mj-xlsx-preview [Url]=\"MediaUrl\" (Loaded)=\"OnMediaElementLoaded()\" (Failed)=\"OnMediaElementLoaded()\"></mj-xlsx-preview>\n </div>\n } @else {\n <div class=\"mj-file-viewer-fallback\">\n <i class=\"fa-solid fa-file-excel mj-file-fallback-icon\"></i>\n <h3>{{ record.Name }}</h3>\n <p>Workbook preview could not be loaded.</p>\n </div>\n }\n }\n @default {\n <div class=\"mj-file-viewer-fallback\">\n <i [class]=\"FileIconClass\" class=\"mj-file-fallback-icon\"></i>\n <h3>{{ record.Name }}</h3>\n <p class=\"mj-file-fallback-meta\">{{ record.ContentType || 'Document' }}@if (FileSizeLabel; as size) { &bull; {{ size }}}</p>\n <p class=\"mj-file-fallback-desc\">{{ record.Description || 'Preview is not available for this file type.' }}</p>\n @if (MediaUrl) {\n <button type=\"button\" mjButton variant=\"primary\" (click)=\"OpenInExternalTab()\">\n <i class=\"fa-solid fa-arrow-up-right-from-square\"></i>\n <span>Open in Browser</span>\n </button>\n }\n </div>\n }\n }\n </main>\n\n <!-- Details & Linked Records Sidebar -->\n @if (ShowDetailsSidebar) {\n <aside class=\"mj-file-viewer-sidebar\">\n <div class=\"mj-file-sidebar-header\">\n <h3>File Details & Links</h3>\n <button type=\"button\" class=\"mj-file-sidebar-close\" (click)=\"ToggleDetailsSidebar()\" title=\"Collapse Sidebar\">\n <i class=\"fa-solid fa-xmark\"></i>\n </button>\n </div>\n\n <div class=\"mj-file-sidebar-content\">\n <!-- Metadata Cards -->\n <div class=\"mj-file-sidebar-card\">\n <div class=\"mj-file-meta-row\">\n <span class=\"mj-file-meta-label\">File Name:</span>\n <span class=\"mj-file-meta-val font-semibold\">{{ record.Name }}</span>\n </div>\n @if (record.Description) {\n <div class=\"mj-file-meta-row\">\n <span class=\"mj-file-meta-label\">Description:</span>\n <span class=\"mj-file-meta-val\">{{ record.Description }}</span>\n </div>\n }\n <div class=\"mj-file-meta-row\">\n <span class=\"mj-file-meta-label\">MIME Type:</span>\n <span class=\"mj-file-meta-val font-mono\">{{ record.ContentType || 'Unknown' }}</span>\n </div>\n @if (FileSizeLabel; as size) {\n <div class=\"mj-file-meta-row\">\n <span class=\"mj-file-meta-label\">Size:</span>\n <span class=\"mj-file-meta-val\">{{ size }}</span>\n </div>\n }\n @if (record.Status) {\n <div class=\"mj-file-meta-row\">\n <span class=\"mj-file-meta-label\">Status:</span>\n <span class=\"mj-file-meta-val\">{{ record.Status }}</span>\n </div>\n }\n <div class=\"mj-file-meta-row\">\n <span class=\"mj-file-meta-label\">Created:</span>\n <span class=\"mj-file-meta-val\">{{ record.__mj_CreatedAt | date:'short' }}</span>\n </div>\n </div>\n\n <!-- Linked Records -->\n <div class=\"mj-file-sidebar-section\">\n <h4 class=\"mj-file-sidebar-section-title\">\n <i class=\"fa-solid fa-link\"></i>\n <span>Linked Records</span>\n </h4>\n <div class=\"mj-file-relationship-wrapper\">\n <mj-relationship-view \n [Params]=\"BuildRelationshipViewParamsByEntityName('MJ: File Entity Record Links', 'FileID')\"\n [NewRecordValues]=\"NewRecordValues('MJ: File Entity Record Links', 'FileID')\">\n </mj-relationship-view>\n </div>\n </div>\n </div>\n </aside>\n }\n </div>\n </div>\n} @else {\n <div class=\"mj-file-standard-form-wrapper\">\n <div class=\"mj-file-mode-switch-bar\">\n <button type=\"button\" mjButton variant=\"secondary\" size=\"sm\" (click)=\"ToggleViewMode()\">\n <i class=\"fa-solid fa-arrow-left\"></i>\n <span>Return to File Preview</span>\n </button>\n </div>\n\n <mj-record-form-container [Record]=\"record\" [FormComponent]=\"this\"\n (Navigate)=\"OnFormNavigate($event)\"\n (DeleteRequested)=\"OnDeleteRequested()\"\n (FavoriteToggled)=\"OnFavoriteToggled()\"\n (HistoryRequested)=\"OnHistoryRequested()\"\n (ListManagementRequested)=\"OnListManagementRequested()\">\n\n <mj-form-panel-slot Entity=\"{{record.EntityInfo.Name}}\" Slot=\"before-fields\" [Record]=\"record\" [FormComponent]=\"this\" [FormContext]=\"formContext\"></mj-form-panel-slot>\n\n <!-- File Basics Section -->\n <mj-collapsible-panel\n SectionKey=\"fileBasics\"\n SectionName=\"File Basics\"\n Icon=\"fa fa-file\"\n [Form]=\"this\"\n [FormContext]=\"formContext\">\n <mj-form-field \n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"Name\"\n Type=\"textbox\"\n [EditMode]=\"EditMode\"\n [FormContext]=\"formContext\"\n ></mj-form-field>\n <mj-form-field \n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"Description\"\n Type=\"textarea\"\n [EditMode]=\"EditMode\"\n [FormContext]=\"formContext\"\n ></mj-form-field>\n </mj-collapsible-panel>\n\n <!-- Classification & Status Section -->\n <mj-collapsible-panel\n SectionKey=\"classificationStatus\"\n SectionName=\"Classification & Status\"\n Icon=\"fa fa-tags\"\n [Form]=\"this\"\n [FormContext]=\"formContext\">\n <mj-form-field \n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"CategoryID\"\n Type=\"textbox\"\n [EditMode]=\"EditMode\"\n [FormContext]=\"formContext\"\n LinkType=\"Record\"\n ></mj-form-field>\n <mj-form-field \n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"Status\"\n Type=\"textbox\"\n [EditMode]=\"EditMode\"\n [FormContext]=\"formContext\"\n ></mj-form-field>\n </mj-collapsible-panel>\n\n <!-- Storage Details Section -->\n <mj-collapsible-panel\n SectionKey=\"storageDetails\"\n SectionName=\"Storage Details\"\n Icon=\"fa fa-database\"\n [Form]=\"this\"\n [FormContext]=\"formContext\">\n <mj-form-field \n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"ProviderID\"\n Type=\"textbox\"\n [EditMode]=\"EditMode\"\n [FormContext]=\"formContext\"\n LinkType=\"Record\"\n ></mj-form-field>\n <mj-form-field \n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"ProviderKey\"\n Type=\"textbox\"\n [EditMode]=\"EditMode\"\n [FormContext]=\"formContext\"\n ></mj-form-field>\n <mj-form-field \n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"ContentType\"\n Type=\"textbox\"\n [EditMode]=\"EditMode\"\n [FormContext]=\"formContext\"\n ></mj-form-field>\n </mj-collapsible-panel>\n\n <!-- Linked Records Section -->\n <mj-collapsible-panel\n SectionKey=\"mJFileEntityRecordLinks\"\n SectionName=\"File Entity Record Links\"\n Icon=\"fa fa-link\"\n [Form]=\"this\"\n [FormContext]=\"formContext\">\n <mj-relationship-view \n [Params]=\"BuildRelationshipViewParamsByEntityName('MJ: File Entity Record Links','FileID')\"\n [NewRecordValues]=\"NewRecordValues('MJ: File Entity Record Links','FileID')\">\n </mj-relationship-view>\n </mj-collapsible-panel>\n\n <mj-form-panel-slot Entity=\"{{record.EntityInfo.Name}}\" Slot=\"after-fields\" [Record]=\"record\" [FormComponent]=\"this\" [FormContext]=\"formContext\"></mj-form-panel-slot>\n </mj-record-form-container>\n </div>\n}\n"]}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Pure decisions for the Files form's viewer, kept out of the component so they can be tested on the node preset.
3
+ */
4
+ /** The viewer's media categories, from the file's MIME type or extension. */
5
+ export type FileMediaType = 'image' | 'pdf' | 'video' | 'audio' | 'text' | 'docx' | 'xlsx' | 'other';
6
+ /**
7
+ * Whether the viewer learns that a file has loaded from the element that shows it. Images, PDFs (in an iframe), video
8
+ * and audio fire `load`; the Word and Excel previews report `loaded` or `failed` themselves. Text is read by fetch, and
9
+ * any other type has no element at all: the viewer shows a fallback card for it, so the form has to mark it loaded
10
+ * itself once the URL is known, or the loading overlay never clears.
11
+ */
12
+ export declare function MediaLoadsByElement(mediaType: FileMediaType): boolean;
13
+ /**
14
+ * The viewer's category for a file, from its MIME type or its name. The name matters: the server stores anything it
15
+ * cannot stream inline as `application/octet-stream`, so a Word or Excel file is only recognisable by its extension.
16
+ * Legacy `.doc` is not `docx`: mammoth reads OOXML only, so it keeps the fallback card.
17
+ */
18
+ export declare function ClassifyFileMediaType(contentType: string | null | undefined, fileName: string | null | undefined): FileMediaType;
19
+ /**
20
+ * The size badge's text, or null when the size is not known. `MJ: Files` records no length today, so the badge is left
21
+ * out rather than reading "0 B" for every file.
22
+ */
23
+ export declare function DescribeFileSize(bytes: number | null | undefined): string | null;
24
+ //# sourceMappingURL=file-form.logic.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-form.logic.d.ts","sourceRoot":"","sources":["../../../../src/lib/custom/Files/file-form.logic.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,6EAA6E;AAC7E,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,KAAK,GAAG,OAAO,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AAErG;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,aAAa,GAAG,OAAO,CAErE;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,aAAa,CA0BhI;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAMhF"}
@@ -0,0 +1,57 @@
1
+ /**
2
+ * Pure decisions for the Files form's viewer, kept out of the component so they can be tested on the node preset.
3
+ */
4
+ /**
5
+ * Whether the viewer learns that a file has loaded from the element that shows it. Images, PDFs (in an iframe), video
6
+ * and audio fire `load`; the Word and Excel previews report `loaded` or `failed` themselves. Text is read by fetch, and
7
+ * any other type has no element at all: the viewer shows a fallback card for it, so the form has to mark it loaded
8
+ * itself once the URL is known, or the loading overlay never clears.
9
+ */
10
+ export function MediaLoadsByElement(mediaType) {
11
+ return mediaType === 'image' || mediaType === 'pdf' || mediaType === 'video' || mediaType === 'audio' || mediaType === 'docx' || mediaType === 'xlsx';
12
+ }
13
+ /**
14
+ * The viewer's category for a file, from its MIME type or its name. The name matters: the server stores anything it
15
+ * cannot stream inline as `application/octet-stream`, so a Word or Excel file is only recognisable by its extension.
16
+ * Legacy `.doc` is not `docx`: mammoth reads OOXML only, so it keeps the fallback card.
17
+ */
18
+ export function ClassifyFileMediaType(contentType, fileName) {
19
+ const mime = (contentType || '').toLowerCase().split(';')[0].trim();
20
+ const name = (fileName || '').toLowerCase();
21
+ if (mime.startsWith('image/') || /\.(png|jpe?g|gif|webp|svg|ico|bmp|avif)$/.test(name))
22
+ return 'image';
23
+ if (mime === 'application/pdf' || name.endsWith('.pdf'))
24
+ return 'pdf';
25
+ if (mime.startsWith('video/') || /\.(mp4|webm|ogg|mov|mkv|avi)$/.test(name))
26
+ return 'video';
27
+ if (mime.startsWith('audio/') || /\.(mp3|wav|aac|m4a|flac)$/.test(name))
28
+ return 'audio';
29
+ if (mime === 'application/vnd.openxmlformats-officedocument.wordprocessingml.document' || name.endsWith('.docx'))
30
+ return 'docx';
31
+ if (mime === 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' ||
32
+ mime === 'application/vnd.ms-excel' ||
33
+ /\.(xlsx|xlsm|xls)$/.test(name)) {
34
+ return 'xlsx';
35
+ }
36
+ if (mime.startsWith('text/') ||
37
+ mime.includes('json') ||
38
+ mime.includes('xml') ||
39
+ mime.includes('javascript') ||
40
+ /\.(txt|md|csv|json|xml|yaml|yml|js|ts|html|css|sql|sh|log)$/.test(name)) {
41
+ return 'text';
42
+ }
43
+ return 'other';
44
+ }
45
+ /**
46
+ * The size badge's text, or null when the size is not known. `MJ: Files` records no length today, so the badge is left
47
+ * out rather than reading "0 B" for every file.
48
+ */
49
+ export function DescribeFileSize(bytes) {
50
+ if (bytes == null || typeof bytes !== 'number' || !Number.isFinite(bytes) || bytes < 0)
51
+ return null;
52
+ const units = ['B', 'KB', 'MB', 'GB', 'TB'];
53
+ const idx = bytes === 0 ? 0 : Math.min(Math.floor(Math.log(bytes) / Math.log(1024)), units.length - 1);
54
+ const val = bytes / Math.pow(1024, idx);
55
+ return `${val.toFixed(idx === 0 ? 0 : 1)} ${units[idx]}`;
56
+ }
57
+ //# sourceMappingURL=file-form.logic.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-form.logic.js","sourceRoot":"","sources":["../../../../src/lib/custom/Files/file-form.logic.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB,CAAC,SAAwB;IAC1D,OAAO,SAAS,KAAK,OAAO,IAAI,SAAS,KAAK,KAAK,IAAI,SAAS,KAAK,OAAO,IAAI,SAAS,KAAK,OAAO,IAAI,SAAS,KAAK,MAAM,IAAI,SAAS,KAAK,MAAM,CAAC;AACxJ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,qBAAqB,CAAC,WAAsC,EAAE,QAAmC;IAC/G,MAAM,IAAI,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IACpE,MAAM,IAAI,GAAG,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;IAE5C,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,0CAA0C,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,OAAO,CAAC;IACvG,IAAI,IAAI,KAAK,iBAAiB,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;QAAE,OAAO,KAAK,CAAC;IACtE,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,+BAA+B,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,OAAO,CAAC;IAC5F,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,2BAA2B,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,OAAO,CAAC;IACxF,IAAI,IAAI,KAAK,yEAAyE,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;QAAE,OAAO,MAAM,CAAC;IAChI,IACE,IAAI,KAAK,mEAAmE;QAC5E,IAAI,KAAK,0BAA0B;QACnC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,EAC/B,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,IACE,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;QACxB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;QACrB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;QACpB,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC;QAC3B,6DAA6D,CAAC,IAAI,CAAC,IAAI,CAAC,EACxE,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAgC;IAC/D,IAAI,KAAK,IAAI,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IACpG,MAAM,KAAK,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IAC5C,MAAM,GAAG,GAAG,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACvG,MAAM,GAAG,GAAG,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IACxC,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;AAC3D,CAAC","sourcesContent":["/**\n * Pure decisions for the Files form's viewer, kept out of the component so they can be tested on the node preset.\n */\n\n/** The viewer's media categories, from the file's MIME type or extension. */\nexport type FileMediaType = 'image' | 'pdf' | 'video' | 'audio' | 'text' | 'docx' | 'xlsx' | 'other';\n\n/**\n * Whether the viewer learns that a file has loaded from the element that shows it. Images, PDFs (in an iframe), video\n * and audio fire `load`; the Word and Excel previews report `loaded` or `failed` themselves. Text is read by fetch, and\n * any other type has no element at all: the viewer shows a fallback card for it, so the form has to mark it loaded\n * itself once the URL is known, or the loading overlay never clears.\n */\nexport function MediaLoadsByElement(mediaType: FileMediaType): boolean {\n return mediaType === 'image' || mediaType === 'pdf' || mediaType === 'video' || mediaType === 'audio' || mediaType === 'docx' || mediaType === 'xlsx';\n}\n\n/**\n * The viewer's category for a file, from its MIME type or its name. The name matters: the server stores anything it\n * cannot stream inline as `application/octet-stream`, so a Word or Excel file is only recognisable by its extension.\n * Legacy `.doc` is not `docx`: mammoth reads OOXML only, so it keeps the fallback card.\n */\nexport function ClassifyFileMediaType(contentType: string | null | undefined, fileName: string | null | undefined): FileMediaType {\n const mime = (contentType || '').toLowerCase().split(';')[0].trim();\n const name = (fileName || '').toLowerCase();\n\n if (mime.startsWith('image/') || /\\.(png|jpe?g|gif|webp|svg|ico|bmp|avif)$/.test(name)) return 'image';\n if (mime === 'application/pdf' || name.endsWith('.pdf')) return 'pdf';\n if (mime.startsWith('video/') || /\\.(mp4|webm|ogg|mov|mkv|avi)$/.test(name)) return 'video';\n if (mime.startsWith('audio/') || /\\.(mp3|wav|aac|m4a|flac)$/.test(name)) return 'audio';\n if (mime === 'application/vnd.openxmlformats-officedocument.wordprocessingml.document' || name.endsWith('.docx')) return 'docx';\n if (\n mime === 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' ||\n mime === 'application/vnd.ms-excel' ||\n /\\.(xlsx|xlsm|xls)$/.test(name)\n ) {\n return 'xlsx';\n }\n if (\n mime.startsWith('text/') ||\n mime.includes('json') ||\n mime.includes('xml') ||\n mime.includes('javascript') ||\n /\\.(txt|md|csv|json|xml|yaml|yml|js|ts|html|css|sql|sh|log)$/.test(name)\n ) {\n return 'text';\n }\n return 'other';\n}\n\n/**\n * The size badge's text, or null when the size is not known. `MJ: Files` records no length today, so the badge is left\n * out rather than reading \"0 B\" for every file.\n */\nexport function DescribeFileSize(bytes: number | null | undefined): string | null {\n if (bytes == null || typeof bytes !== 'number' || !Number.isFinite(bytes) || bytes < 0) return null;\n const units = ['B', 'KB', 'MB', 'GB', 'TB'];\n const idx = bytes === 0 ? 0 : Math.min(Math.floor(Math.log(bytes) / Math.log(1024)), units.length - 1);\n const val = bytes / Math.pow(1024, idx);\n return `${val.toFixed(idx === 0 ? 0 : 1)} ${units[idx]}`;\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"list-form.component.d.ts","sourceRoot":"","sources":["../../../../src/lib/custom/Lists/list-form.component.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"list-form.component.d.ts","sourceRoot":"","sources":["../../../../src/lib/custom/Lists/list-form.component.ts"],"names":[],"mappings":"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"}
@@ -6,7 +6,7 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
6
6
  };
7
7
  import { Component, ChangeDetectionStrategy, inject } from '@angular/core';
8
8
  import { Subject, debounceTime, takeUntil } from 'rxjs';
9
- import { RegisterClass, UUIDsEqual, NormalizeUUID } from '@memberjunction/global';
9
+ import { IndexByUUID, RegisterClass, UUIDsEqual, NormalizeUUID } from '@memberjunction/global';
10
10
  import { BaseFormComponent } from '@memberjunction/ng-base-forms';
11
11
  import { SharedService } from '@memberjunction/ng-shared';
12
12
  import { MJListFormComponent } from '../../generated/Entities/MJList/mjlist.form.component';
@@ -1604,8 +1604,9 @@ let MJListFormComponentExtended = class MJListFormComponentExtended extends MJLi
1604
1604
  const tg = await this.metadata.CreateTransactionGroup();
1605
1605
  let queued = 0;
1606
1606
  let failedToQueue = 0;
1607
+ const itemsByID = IndexByUUID(this.ListItems, i => i.detail.ID);
1607
1608
  for (const id of this.SelectedItems) {
1608
- const item = this.ListItems.find(i => UUIDsEqual(i.detail.ID, id));
1609
+ const item = itemsByID.Get(id);
1609
1610
  if (item) {
1610
1611
  item.detail.TransactionGroup = tg;
1611
1612
  // With a TransactionGroup set, Delete() returns true once