@memberjunction/ng-core-entity-forms 6.2.0-edge.2 → 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 (279) hide show
  1. package/dist/lib/custom/AIAgentCategories/ai-agent-category-header.panel.d.ts.map +1 -1
  2. package/dist/lib/custom/AIAgentCategories/ai-agent-category-header.panel.js +9 -5
  3. package/dist/lib/custom/AIAgentCategories/ai-agent-category-header.panel.js.map +1 -1
  4. package/dist/lib/custom/AIAgentCategories/ai-agent-category-overview.panel.d.ts +4 -0
  5. package/dist/lib/custom/AIAgentCategories/ai-agent-category-overview.panel.d.ts.map +1 -1
  6. package/dist/lib/custom/AIAgentCategories/ai-agent-category-overview.panel.js +67 -36
  7. package/dist/lib/custom/AIAgentCategories/ai-agent-category-overview.panel.js.map +1 -1
  8. package/dist/lib/custom/AIAgents/ai-agent-form.component.d.ts +5 -0
  9. package/dist/lib/custom/AIAgents/ai-agent-form.component.d.ts.map +1 -1
  10. package/dist/lib/custom/AIAgents/ai-agent-form.component.js +13 -9
  11. package/dist/lib/custom/AIAgents/ai-agent-form.component.js.map +1 -1
  12. package/dist/lib/custom/AIPromptRuns/ai-prompt-run-form.component.d.ts.map +1 -1
  13. package/dist/lib/custom/AIPromptRuns/ai-prompt-run-form.component.js +1 -0
  14. package/dist/lib/custom/AIPromptRuns/ai-prompt-run-form.component.js.map +1 -1
  15. package/dist/lib/custom/Companies/company-header.panel.d.ts.map +1 -1
  16. package/dist/lib/custom/Companies/company-header.panel.js +9 -5
  17. package/dist/lib/custom/Companies/company-header.panel.js.map +1 -1
  18. package/dist/lib/custom/Companies/company-overview.panel.d.ts +4 -0
  19. package/dist/lib/custom/Companies/company-overview.panel.d.ts.map +1 -1
  20. package/dist/lib/custom/Companies/company-overview.panel.js +68 -37
  21. package/dist/lib/custom/Companies/company-overview.panel.js.map +1 -1
  22. package/dist/lib/custom/Conversations/conversation-header.panel.d.ts.map +1 -1
  23. package/dist/lib/custom/Conversations/conversation-header.panel.js +9 -5
  24. package/dist/lib/custom/Conversations/conversation-header.panel.js.map +1 -1
  25. package/dist/lib/custom/Conversations/conversation-overview.panel.d.ts +25 -4
  26. package/dist/lib/custom/Conversations/conversation-overview.panel.d.ts.map +1 -1
  27. package/dist/lib/custom/Conversations/conversation-overview.panel.js +212 -90
  28. package/dist/lib/custom/Conversations/conversation-overview.panel.js.map +1 -1
  29. package/dist/lib/custom/Employees/employee-header.panel.d.ts.map +1 -1
  30. package/dist/lib/custom/Employees/employee-header.panel.js +9 -5
  31. package/dist/lib/custom/Employees/employee-header.panel.js.map +1 -1
  32. package/dist/lib/custom/Employees/employee-overview.panel.d.ts +4 -0
  33. package/dist/lib/custom/Employees/employee-overview.panel.d.ts.map +1 -1
  34. package/dist/lib/custom/Employees/employee-overview.panel.js +68 -37
  35. package/dist/lib/custom/Employees/employee-overview.panel.js.map +1 -1
  36. package/dist/lib/custom/Entities/entity-form.component.d.ts +8 -0
  37. package/dist/lib/custom/Entities/entity-form.component.d.ts.map +1 -1
  38. package/dist/lib/custom/Entities/entity-form.component.js +19 -4
  39. package/dist/lib/custom/Entities/entity-form.component.js.map +1 -1
  40. package/dist/lib/custom/Files/file-form.component.d.ts +5 -5
  41. package/dist/lib/custom/Files/file-form.component.d.ts.map +1 -1
  42. package/dist/lib/custom/Files/file-form.component.js +227 -157
  43. package/dist/lib/custom/Files/file-form.component.js.map +1 -1
  44. package/dist/lib/custom/Files/file-form.logic.d.ts +24 -0
  45. package/dist/lib/custom/Files/file-form.logic.d.ts.map +1 -0
  46. package/dist/lib/custom/Files/file-form.logic.js +57 -0
  47. package/dist/lib/custom/Files/file-form.logic.js.map +1 -0
  48. package/dist/lib/custom/HierarchyPanels/hierarchy-form-panels.d.ts.map +1 -1
  49. package/dist/lib/custom/HierarchyPanels/hierarchy-form-panels.js +60 -45
  50. package/dist/lib/custom/HierarchyPanels/hierarchy-form-panels.js.map +1 -1
  51. package/dist/lib/custom/Lists/list-form.component.d.ts.map +1 -1
  52. package/dist/lib/custom/Lists/list-form.component.js +4 -2
  53. package/dist/lib/custom/Lists/list-form.component.js.map +1 -1
  54. package/dist/lib/custom/Queries/query-form.component.d.ts.map +1 -1
  55. package/dist/lib/custom/Queries/query-form.component.js +3 -2
  56. package/dist/lib/custom/Queries/query-form.component.js.map +1 -1
  57. package/dist/lib/custom/Rubrics/rubric-form.component.js +1 -1
  58. package/dist/lib/custom/Rubrics/rubric-form.component.js.map +1 -1
  59. package/dist/lib/custom/SearchScopes/searchscope-form.component.d.ts.map +1 -1
  60. package/dist/lib/custom/SearchScopes/searchscope-form.component.js +1 -0
  61. package/dist/lib/custom/SearchScopes/searchscope-form.component.js.map +1 -1
  62. package/dist/lib/custom/Templates/templates-form.component.d.ts.map +1 -1
  63. package/dist/lib/custom/Templates/templates-form.component.js +3 -2
  64. package/dist/lib/custom/Templates/templates-form.component.js.map +1 -1
  65. package/dist/lib/custom/Tests/test-form.component.d.ts.map +1 -1
  66. package/dist/lib/custom/Tests/test-form.component.js +1 -0
  67. package/dist/lib/custom/Tests/test-form.component.js.map +1 -1
  68. package/dist/lib/custom/Tests/test-run-form.component.d.ts.map +1 -1
  69. package/dist/lib/custom/Tests/test-run-form.component.js +1 -0
  70. package/dist/lib/custom/Tests/test-run-form.component.js.map +1 -1
  71. package/dist/lib/custom/Tests/test-suite-form.component.d.ts.map +1 -1
  72. package/dist/lib/custom/Tests/test-suite-form.component.js +1 -0
  73. package/dist/lib/custom/Tests/test-suite-form.component.js.map +1 -1
  74. package/dist/lib/custom/Tests/test-suite-run-form.component.d.ts.map +1 -1
  75. package/dist/lib/custom/Tests/test-suite-run-form.component.js +1 -0
  76. package/dist/lib/custom/Tests/test-suite-run-form.component.js.map +1 -1
  77. package/dist/lib/custom/Users/user-header.panel.d.ts.map +1 -1
  78. package/dist/lib/custom/Users/user-header.panel.js +9 -5
  79. package/dist/lib/custom/Users/user-header.panel.js.map +1 -1
  80. package/dist/lib/custom/Users/user-overview.panel.d.ts +4 -0
  81. package/dist/lib/custom/Users/user-overview.panel.d.ts.map +1 -1
  82. package/dist/lib/custom/Users/user-overview.panel.js +64 -33
  83. package/dist/lib/custom/Users/user-overview.panel.js.map +1 -1
  84. package/dist/lib/custom/ai-agent-run/agent-run-cost-split.d.ts +34 -0
  85. package/dist/lib/custom/ai-agent-run/agent-run-cost-split.d.ts.map +1 -0
  86. package/dist/lib/custom/ai-agent-run/agent-run-cost-split.js +33 -0
  87. package/dist/lib/custom/ai-agent-run/agent-run-cost-split.js.map +1 -0
  88. package/dist/lib/custom/ai-agent-run/ai-agent-run-analytics.component.d.ts +3 -0
  89. package/dist/lib/custom/ai-agent-run/ai-agent-run-analytics.component.d.ts.map +1 -1
  90. package/dist/lib/custom/ai-agent-run/ai-agent-run-analytics.component.js +261 -242
  91. package/dist/lib/custom/ai-agent-run/ai-agent-run-analytics.component.js.map +1 -1
  92. package/dist/lib/custom/ai-agent-run/ai-agent-run.component.d.ts.map +1 -1
  93. package/dist/lib/custom/ai-agent-run/ai-agent-run.component.js +1 -0
  94. package/dist/lib/custom/ai-agent-run/ai-agent-run.component.js.map +1 -1
  95. package/dist/lib/custom/custom-forms.module.d.ts +35 -34
  96. package/dist/lib/custom/custom-forms.module.d.ts.map +1 -1
  97. package/dist/lib/custom/custom-forms.module.js +6 -2
  98. package/dist/lib/custom/custom-forms.module.js.map +1 -1
  99. package/dist/lib/generated/Entities/MJAIAgent/mjaiagent.form.component.d.ts.map +1 -1
  100. package/dist/lib/generated/Entities/MJAIAgent/mjaiagent.form.component.js +98 -44
  101. package/dist/lib/generated/Entities/MJAIAgent/mjaiagent.form.component.js.map +1 -1
  102. package/dist/lib/generated/Entities/MJAIAgentArtifactType/mjaiagentartifacttype.form.component.d.ts.map +1 -1
  103. package/dist/lib/generated/Entities/MJAIAgentArtifactType/mjaiagentartifacttype.form.component.js +5 -9
  104. package/dist/lib/generated/Entities/MJAIAgentArtifactType/mjaiagentartifacttype.form.component.js.map +1 -1
  105. package/dist/lib/generated/Entities/MJAIAgentNoteType/mjaiagentnotetype.form.component.d.ts.map +1 -1
  106. package/dist/lib/generated/Entities/MJAIAgentNoteType/mjaiagentnotetype.form.component.js +15 -18
  107. package/dist/lib/generated/Entities/MJAIAgentNoteType/mjaiagentnotetype.form.component.js.map +1 -1
  108. package/dist/lib/generated/Entities/MJAIAgentPrompt/mjaiagentprompt.form.component.d.ts.map +1 -1
  109. package/dist/lib/generated/Entities/MJAIAgentPrompt/mjaiagentprompt.form.component.js +5 -9
  110. package/dist/lib/generated/Entities/MJAIAgentPrompt/mjaiagentprompt.form.component.js.map +1 -1
  111. package/dist/lib/generated/Entities/MJAIAgentSession/mjaiagentsession.form.component.d.ts.map +1 -1
  112. package/dist/lib/generated/Entities/MJAIAgentSession/mjaiagentsession.form.component.js +27 -9
  113. package/dist/lib/generated/Entities/MJAIAgentSession/mjaiagentsession.form.component.js.map +1 -1
  114. package/dist/lib/generated/Entities/MJAIAgentSessionBridge/mjaiagentsessionbridge.form.component.js +17 -15
  115. package/dist/lib/generated/Entities/MJAIAgentSessionBridge/mjaiagentsessionbridge.form.component.js.map +1 -1
  116. package/dist/lib/generated/Entities/MJAIBridgeProvider/mjaibridgeprovider.form.component.d.ts.map +1 -1
  117. package/dist/lib/generated/Entities/MJAIBridgeProvider/mjaibridgeprovider.form.component.js +25 -7
  118. package/dist/lib/generated/Entities/MJAIBridgeProvider/mjaibridgeprovider.form.component.js.map +1 -1
  119. package/dist/lib/generated/Entities/MJAIResultCache/mjairesultcache.form.component.js +12 -14
  120. package/dist/lib/generated/Entities/MJAIResultCache/mjairesultcache.form.component.js.map +1 -1
  121. package/dist/lib/generated/Entities/MJCommunicationLog/mjcommunicationlog.form.component.d.ts.map +1 -1
  122. package/dist/lib/generated/Entities/MJCommunicationLog/mjcommunicationlog.form.component.js +5 -9
  123. package/dist/lib/generated/Entities/MJCommunicationLog/mjcommunicationlog.form.component.js.map +1 -1
  124. package/dist/lib/generated/Entities/MJCompanyIntegrationRunAPILog/mjcompanyintegrationrunapilog.form.component.d.ts.map +1 -1
  125. package/dist/lib/generated/Entities/MJCompanyIntegrationRunAPILog/mjcompanyintegrationrunapilog.form.component.js +5 -9
  126. package/dist/lib/generated/Entities/MJCompanyIntegrationRunAPILog/mjcompanyintegrationrunapilog.form.component.js.map +1 -1
  127. package/dist/lib/generated/Entities/MJComponent/mjcomponent.form.component.d.ts.map +1 -1
  128. package/dist/lib/generated/Entities/MJComponent/mjcomponent.form.component.js +26 -8
  129. package/dist/lib/generated/Entities/MJComponent/mjcomponent.form.component.js.map +1 -1
  130. package/dist/lib/generated/Entities/MJContentItemAttribute/mjcontentitemattribute.form.component.d.ts.map +1 -1
  131. package/dist/lib/generated/Entities/MJContentItemAttribute/mjcontentitemattribute.form.component.js +4 -7
  132. package/dist/lib/generated/Entities/MJContentItemAttribute/mjcontentitemattribute.form.component.js.map +1 -1
  133. package/dist/lib/generated/Entities/MJContentSourceParam/mjcontentsourceparam.form.component.d.ts.map +1 -1
  134. package/dist/lib/generated/Entities/MJContentSourceParam/mjcontentsourceparam.form.component.js +4 -7
  135. package/dist/lib/generated/Entities/MJContentSourceParam/mjcontentsourceparam.form.component.js.map +1 -1
  136. package/dist/lib/generated/Entities/MJConversation/mjconversation.form.component.d.ts.map +1 -1
  137. package/dist/lib/generated/Entities/MJConversation/mjconversation.form.component.js +49 -13
  138. package/dist/lib/generated/Entities/MJConversation/mjconversation.form.component.js.map +1 -1
  139. package/dist/lib/generated/Entities/MJConversationArtifactPermission/mjconversationartifactpermission.form.component.d.ts.map +1 -1
  140. package/dist/lib/generated/Entities/MJConversationArtifactPermission/mjconversationartifactpermission.form.component.js +5 -9
  141. package/dist/lib/generated/Entities/MJConversationArtifactPermission/mjconversationartifactpermission.form.component.js.map +1 -1
  142. package/dist/lib/generated/Entities/MJConversationBranch/mjconversationbranch.form.component.d.ts +10 -0
  143. package/dist/lib/generated/Entities/MJConversationBranch/mjconversationbranch.form.component.d.ts.map +1 -0
  144. package/dist/lib/generated/Entities/MJConversationBranch/mjconversationbranch.form.component.js +111 -0
  145. package/dist/lib/generated/Entities/MJConversationBranch/mjconversationbranch.form.component.js.map +1 -0
  146. package/dist/lib/generated/Entities/MJConversationDetail/mjconversationdetail.form.component.d.ts.map +1 -1
  147. package/dist/lib/generated/Entities/MJConversationDetail/mjconversationdetail.form.component.js +73 -75
  148. package/dist/lib/generated/Entities/MJConversationDetail/mjconversationdetail.form.component.js.map +1 -1
  149. package/dist/lib/generated/Entities/MJCredential/mjcredential.form.component.d.ts.map +1 -1
  150. package/dist/lib/generated/Entities/MJCredential/mjcredential.form.component.js +34 -16
  151. package/dist/lib/generated/Entities/MJCredential/mjcredential.form.component.js.map +1 -1
  152. package/dist/lib/generated/Entities/MJEmployeeRole/mjemployeerole.form.component.d.ts.map +1 -1
  153. package/dist/lib/generated/Entities/MJEmployeeRole/mjemployeerole.form.component.js +5 -9
  154. package/dist/lib/generated/Entities/MJEmployeeRole/mjemployeerole.form.component.js.map +1 -1
  155. package/dist/lib/generated/Entities/MJEntity/mjentity.form.component.d.ts.map +1 -1
  156. package/dist/lib/generated/Entities/MJEntity/mjentity.form.component.js +169 -97
  157. package/dist/lib/generated/Entities/MJEntity/mjentity.form.component.js.map +1 -1
  158. package/dist/lib/generated/Entities/MJEntityCommunicationField/mjentitycommunicationfield.form.component.d.ts.map +1 -1
  159. package/dist/lib/generated/Entities/MJEntityCommunicationField/mjentitycommunicationfield.form.component.js +8 -11
  160. package/dist/lib/generated/Entities/MJEntityCommunicationField/mjentitycommunicationfield.form.component.js.map +1 -1
  161. package/dist/lib/generated/Entities/MJEntityDocumentType/mjentitydocumenttype.form.component.d.ts.map +1 -1
  162. package/dist/lib/generated/Entities/MJEntityDocumentType/mjentitydocumenttype.form.component.js +15 -18
  163. package/dist/lib/generated/Entities/MJEntityDocumentType/mjentitydocumenttype.form.component.js.map +1 -1
  164. package/dist/lib/generated/Entities/MJEntityFormContribution/mjentityformcontribution.form.component.d.ts +10 -0
  165. package/dist/lib/generated/Entities/MJEntityFormContribution/mjentityformcontribution.form.component.d.ts.map +1 -0
  166. package/dist/lib/generated/Entities/MJEntityFormContribution/mjentityformcontribution.form.component.js +148 -0
  167. package/dist/lib/generated/Entities/MJEntityFormContribution/mjentityformcontribution.form.component.js.map +1 -0
  168. package/dist/lib/generated/Entities/MJEnvironment/mjenvironment.form.component.d.ts.map +1 -1
  169. package/dist/lib/generated/Entities/MJEnvironment/mjenvironment.form.component.js +53 -56
  170. package/dist/lib/generated/Entities/MJEnvironment/mjenvironment.form.component.js.map +1 -1
  171. package/dist/lib/generated/Entities/MJInteraction/mjinteraction.form.component.d.ts +10 -0
  172. package/dist/lib/generated/Entities/MJInteraction/mjinteraction.form.component.d.ts.map +1 -0
  173. package/dist/lib/generated/Entities/MJInteraction/mjinteraction.form.component.js +161 -0
  174. package/dist/lib/generated/Entities/MJInteraction/mjinteraction.form.component.js.map +1 -0
  175. package/dist/lib/generated/Entities/MJInteractionEvent/mjinteractionevent.form.component.d.ts +10 -0
  176. package/dist/lib/generated/Entities/MJInteractionEvent/mjinteractionevent.form.component.d.ts.map +1 -0
  177. package/dist/lib/generated/Entities/MJInteractionEvent/mjinteractionevent.form.component.js +78 -0
  178. package/dist/lib/generated/Entities/MJInteractionEvent/mjinteractionevent.form.component.js.map +1 -0
  179. package/dist/lib/generated/Entities/MJInteractionLink/mjinteractionlink.form.component.d.ts +10 -0
  180. package/dist/lib/generated/Entities/MJInteractionLink/mjinteractionlink.form.component.d.ts.map +1 -0
  181. package/dist/lib/generated/Entities/MJInteractionLink/mjinteractionlink.form.component.js +68 -0
  182. package/dist/lib/generated/Entities/MJInteractionLink/mjinteractionlink.form.component.js.map +1 -0
  183. package/dist/lib/generated/Entities/MJInteractionOffer/mjinteractionoffer.form.component.d.ts +10 -0
  184. package/dist/lib/generated/Entities/MJInteractionOffer/mjinteractionoffer.form.component.d.ts.map +1 -0
  185. package/dist/lib/generated/Entities/MJInteractionOffer/mjinteractionoffer.form.component.js +100 -0
  186. package/dist/lib/generated/Entities/MJInteractionOffer/mjinteractionoffer.form.component.js.map +1 -0
  187. package/dist/lib/generated/Entities/MJMeeting/mjmeeting.form.component.d.ts +10 -0
  188. package/dist/lib/generated/Entities/MJMeeting/mjmeeting.form.component.d.ts.map +1 -0
  189. package/dist/lib/generated/Entities/MJMeeting/mjmeeting.form.component.js +119 -0
  190. package/dist/lib/generated/Entities/MJMeeting/mjmeeting.form.component.js.map +1 -0
  191. package/dist/lib/generated/Entities/MJMeetingParticipant/mjmeetingparticipant.form.component.d.ts +10 -0
  192. package/dist/lib/generated/Entities/MJMeetingParticipant/mjmeetingparticipant.form.component.d.ts.map +1 -0
  193. package/dist/lib/generated/Entities/MJMeetingParticipant/mjmeetingparticipant.form.component.js +92 -0
  194. package/dist/lib/generated/Entities/MJMeetingParticipant/mjmeetingparticipant.form.component.js.map +1 -0
  195. package/dist/lib/generated/Entities/MJNumberPool/mjnumberpool.form.component.d.ts +10 -0
  196. package/dist/lib/generated/Entities/MJNumberPool/mjnumberpool.form.component.d.ts.map +1 -0
  197. package/dist/lib/generated/Entities/MJNumberPool/mjnumberpool.form.component.js +87 -0
  198. package/dist/lib/generated/Entities/MJNumberPool/mjnumberpool.form.component.js.map +1 -0
  199. package/dist/lib/generated/Entities/MJPhoneNumber/mjphonenumber.form.component.d.ts +10 -0
  200. package/dist/lib/generated/Entities/MJPhoneNumber/mjphonenumber.form.component.d.ts.map +1 -0
  201. package/dist/lib/generated/Entities/MJPhoneNumber/mjphonenumber.form.component.js +129 -0
  202. package/dist/lib/generated/Entities/MJPhoneNumber/mjphonenumber.form.component.js.map +1 -0
  203. package/dist/lib/generated/Entities/MJQueryPermission/mjquerypermission.form.component.d.ts.map +1 -1
  204. package/dist/lib/generated/Entities/MJQueryPermission/mjquerypermission.form.component.js +5 -9
  205. package/dist/lib/generated/Entities/MJQueryPermission/mjquerypermission.form.component.js.map +1 -1
  206. package/dist/lib/generated/Entities/MJRecommendationItem/mjrecommendationitem.form.component.d.ts.map +1 -1
  207. package/dist/lib/generated/Entities/MJRecommendationItem/mjrecommendationitem.form.component.js +8 -11
  208. package/dist/lib/generated/Entities/MJRecommendationItem/mjrecommendationitem.form.component.js.map +1 -1
  209. package/dist/lib/generated/Entities/MJResourceType/mjresourcetype.form.component.d.ts.map +1 -1
  210. package/dist/lib/generated/Entities/MJResourceType/mjresourcetype.form.component.js +36 -40
  211. package/dist/lib/generated/Entities/MJResourceType/mjresourcetype.form.component.js.map +1 -1
  212. package/dist/lib/generated/Entities/MJRole/mjrole.form.component.d.ts.map +1 -1
  213. package/dist/lib/generated/Entities/MJRole/mjrole.form.component.js +39 -21
  214. package/dist/lib/generated/Entities/MJRole/mjrole.form.component.js.map +1 -1
  215. package/dist/lib/generated/Entities/MJRowLevelSecurityFilter/mjrowlevelsecurityfilter.form.component.d.ts.map +1 -1
  216. package/dist/lib/generated/Entities/MJRowLevelSecurityFilter/mjrowlevelsecurityfilter.form.component.js +45 -48
  217. package/dist/lib/generated/Entities/MJRowLevelSecurityFilter/mjrowlevelsecurityfilter.form.component.js.map +1 -1
  218. package/dist/lib/generated/Entities/MJScopedNotificationConfig/mjscopednotificationconfig.form.component.d.ts +10 -0
  219. package/dist/lib/generated/Entities/MJScopedNotificationConfig/mjscopednotificationconfig.form.component.d.ts.map +1 -0
  220. package/dist/lib/generated/Entities/MJScopedNotificationConfig/mjscopednotificationconfig.form.component.js +106 -0
  221. package/dist/lib/generated/Entities/MJScopedNotificationConfig/mjscopednotificationconfig.form.component.js.map +1 -0
  222. package/dist/lib/generated/Entities/MJTemplateContentType/mjtemplatecontenttype.form.component.d.ts.map +1 -1
  223. package/dist/lib/generated/Entities/MJTemplateContentType/mjtemplatecontenttype.form.component.js +15 -18
  224. package/dist/lib/generated/Entities/MJTemplateContentType/mjtemplatecontenttype.form.component.js.map +1 -1
  225. package/dist/lib/generated/Entities/MJUser/mjuser.form.component.d.ts.map +1 -1
  226. package/dist/lib/generated/Entities/MJUser/mjuser.form.component.js +822 -676
  227. package/dist/lib/generated/Entities/MJUser/mjuser.form.component.js.map +1 -1
  228. package/dist/lib/generated/Entities/MJUserNotificationType/mjusernotificationtype.form.component.d.ts.map +1 -1
  229. package/dist/lib/generated/Entities/MJUserNotificationType/mjusernotificationtype.form.component.js +24 -6
  230. package/dist/lib/generated/Entities/MJUserNotificationType/mjusernotificationtype.form.component.js.map +1 -1
  231. package/dist/lib/generated/Entities/MJVersionLabelItem/mjversionlabelitem.form.component.d.ts.map +1 -1
  232. package/dist/lib/generated/Entities/MJVersionLabelItem/mjversionlabelitem.form.component.js +5 -9
  233. package/dist/lib/generated/Entities/MJVersionLabelItem/mjversionlabelitem.form.component.js.map +1 -1
  234. package/dist/lib/generated/Entities/MJWorkQueueDeduplication/mjworkqueuededuplication.form.component.d.ts +10 -0
  235. package/dist/lib/generated/Entities/MJWorkQueueDeduplication/mjworkqueuededuplication.form.component.d.ts.map +1 -0
  236. package/dist/lib/generated/Entities/MJWorkQueueDeduplication/mjworkqueuededuplication.form.component.js +64 -0
  237. package/dist/lib/generated/Entities/MJWorkQueueDeduplication/mjworkqueuededuplication.form.component.js.map +1 -0
  238. package/dist/lib/generated/Entities/MJWorkQueueDelivery/mjworkqueuedelivery.form.component.d.ts +10 -0
  239. package/dist/lib/generated/Entities/MJWorkQueueDelivery/mjworkqueuedelivery.form.component.d.ts.map +1 -0
  240. package/dist/lib/generated/Entities/MJWorkQueueDelivery/mjworkqueuedelivery.form.component.js +94 -0
  241. package/dist/lib/generated/Entities/MJWorkQueueDelivery/mjworkqueuedelivery.form.component.js.map +1 -0
  242. package/dist/lib/generated/Entities/MJWorkQueueMessage/mjworkqueuemessage.form.component.d.ts +10 -0
  243. package/dist/lib/generated/Entities/MJWorkQueueMessage/mjworkqueuemessage.form.component.d.ts.map +1 -0
  244. package/dist/lib/generated/Entities/MJWorkQueueMessage/mjworkqueuemessage.form.component.js +91 -0
  245. package/dist/lib/generated/Entities/MJWorkQueueMessage/mjworkqueuemessage.form.component.js.map +1 -0
  246. package/dist/lib/generated/Entities/MJWorkQueueSubscription/mjworkqueuesubscription.form.component.d.ts +10 -0
  247. package/dist/lib/generated/Entities/MJWorkQueueSubscription/mjworkqueuesubscription.form.component.d.ts.map +1 -0
  248. package/dist/lib/generated/Entities/MJWorkQueueSubscription/mjworkqueuesubscription.form.component.js +105 -0
  249. package/dist/lib/generated/Entities/MJWorkQueueSubscription/mjworkqueuesubscription.form.component.js.map +1 -0
  250. package/dist/lib/generated/Entities/MJWorkQueueTopic/mjworkqueuetopic.form.component.d.ts +10 -0
  251. package/dist/lib/generated/Entities/MJWorkQueueTopic/mjworkqueuetopic.form.component.d.ts.map +1 -0
  252. package/dist/lib/generated/Entities/MJWorkQueueTopic/mjworkqueuetopic.form.component.js +129 -0
  253. package/dist/lib/generated/Entities/MJWorkQueueTopic/mjworkqueuetopic.form.component.js.map +1 -0
  254. package/dist/lib/generated/Entities/MJWorkQueueTransport/mjworkqueuetransport.form.component.d.ts +10 -0
  255. package/dist/lib/generated/Entities/MJWorkQueueTransport/mjworkqueuetransport.form.component.d.ts.map +1 -0
  256. package/dist/lib/generated/Entities/MJWorkQueueTransport/mjworkqueuetransport.form.component.js +85 -0
  257. package/dist/lib/generated/Entities/MJWorkQueueTransport/mjworkqueuetransport.form.component.js.map +1 -0
  258. package/dist/lib/generated/Entities/MJWorkspace/mjworkspace.form.component.d.ts.map +1 -1
  259. package/dist/lib/generated/Entities/MJWorkspace/mjworkspace.form.component.js +17 -20
  260. package/dist/lib/generated/Entities/MJWorkspace/mjworkspace.form.component.js.map +1 -1
  261. package/dist/lib/generated/generated-forms.module.d.ts +448 -431
  262. package/dist/lib/generated/generated-forms.module.d.ts.map +1 -1
  263. package/dist/lib/generated/generated-forms.module.js +63 -12
  264. package/dist/lib/generated/generated-forms.module.js.map +1 -1
  265. package/dist/lib/panels/ai-agents/agent-realtime.panel.d.ts +7 -1
  266. package/dist/lib/panels/ai-agents/agent-realtime.panel.d.ts.map +1 -1
  267. package/dist/lib/panels/ai-agents/agent-realtime.panel.js +89 -43
  268. package/dist/lib/panels/ai-agents/agent-realtime.panel.js.map +1 -1
  269. package/dist/lib/panels/ai-skill-sharing/ai-skill-sharing-panel.component.js +3 -3
  270. package/dist/lib/panels/ai-skill-sharing/ai-skill-sharing-panel.component.js.map +1 -1
  271. package/dist/lib/panels/content-sources/tag-pipeline-configuration.panel.js +5 -5
  272. package/dist/lib/panels/content-sources/tag-pipeline-configuration.panel.js.map +1 -1
  273. package/dist/lib/panels/content-sources/website-crawler-settings.panel.js +4 -4
  274. package/dist/lib/panels/content-sources/website-crawler-settings.panel.js.map +1 -1
  275. package/dist/lib/panels/form-chrome/entity-relationship-form-role.panel.js +3 -3
  276. package/dist/lib/panels/form-chrome/entity-relationship-form-role.panel.js.map +1 -1
  277. package/dist/lib/panels/model-predictions/model-prediction.panel.js +4 -4
  278. package/dist/lib/panels/model-predictions/model-prediction.panel.js.map +1 -1
  279. package/package.json +48 -47
@@ -13,13 +13,23 @@ import { BaseFormComponent } from '@memberjunction/ng-base-forms';
13
13
  import { GraphQLDataProvider, gql } from '@memberjunction/graphql-dataprovider';
14
14
  import { MJNotificationService } from '@memberjunction/ng-notifications';
15
15
  import { MJFileFormComponent } from '../../generated/Entities/MJFile/mjfile.form.component';
16
+ import { ClassifyFileMediaType, DescribeFileSize, MediaLoadsByElement } from './file-form.logic';
16
17
  import { z } from 'zod';
17
18
  import * as i0 from "@angular/core";
18
- import * as i1 from "@memberjunction/ng-ui-components";
19
- import * as i2 from "@memberjunction/ng-base-forms";
20
- import * as i3 from "@memberjunction/ng-shared-generic";
21
- import * as i4 from "@angular/common";
22
- function MJFileFormComponentExtended_Conditional_0_Conditional_13_Template(rf, ctx) { if (rf & 1) {
19
+ import * as i1 from "@memberjunction/ng-artifacts";
20
+ import * as i2 from "@memberjunction/ng-ui-components";
21
+ import * as i3 from "@memberjunction/ng-base-forms";
22
+ import * as i4 from "@memberjunction/ng-shared-generic";
23
+ import * as i5 from "@angular/common";
24
+ function MJFileFormComponentExtended_Conditional_0_Conditional_11_Template(rf, ctx) { if (rf & 1) {
25
+ i0.ɵɵelementStart(0, "span", 9);
26
+ i0.ɵɵtext(1);
27
+ i0.ɵɵelementEnd();
28
+ } if (rf & 2) {
29
+ i0.ɵɵadvance();
30
+ i0.ɵɵtextInterpolate(ctx);
31
+ } }
32
+ function MJFileFormComponentExtended_Conditional_0_Conditional_12_Template(rf, ctx) { if (rf & 1) {
23
33
  i0.ɵɵelementStart(0, "span", 10);
24
34
  i0.ɵɵtext(1);
25
35
  i0.ɵɵelementEnd();
@@ -28,25 +38,25 @@ function MJFileFormComponentExtended_Conditional_0_Conditional_13_Template(rf, c
28
38
  i0.ɵɵadvance();
29
39
  i0.ɵɵtextInterpolate(ctx_r1.record.Status);
30
40
  } }
31
- function MJFileFormComponentExtended_Conditional_0_Conditional_15_Template(rf, ctx) { if (rf & 1) {
41
+ function MJFileFormComponentExtended_Conditional_0_Conditional_14_Template(rf, ctx) { if (rf & 1) {
32
42
  const _r3 = i0.ɵɵgetCurrentView();
33
43
  i0.ɵɵelementStart(0, "button", 22);
34
- i0.ɵɵlistener("click", function MJFileFormComponentExtended_Conditional_0_Conditional_15_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.OpenInExternalTab()); });
44
+ i0.ɵɵlistener("click", function MJFileFormComponentExtended_Conditional_0_Conditional_14_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.OpenInExternalTab()); });
35
45
  i0.ɵɵelement(1, "i", 23);
36
46
  i0.ɵɵelementStart(2, "span");
37
47
  i0.ɵɵtext(3, "Open in New Tab");
38
48
  i0.ɵɵelementEnd()();
39
49
  } }
40
- function MJFileFormComponentExtended_Conditional_0_Conditional_20_Template(rf, ctx) { if (rf & 1) {
50
+ function MJFileFormComponentExtended_Conditional_0_Conditional_19_Template(rf, ctx) { if (rf & 1) {
41
51
  const _r4 = i0.ɵɵgetCurrentView();
42
52
  i0.ɵɵelementStart(0, "button", 24);
43
- i0.ɵɵlistener("click", function MJFileFormComponentExtended_Conditional_0_Conditional_20_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r4); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.ToggleViewMode()); });
53
+ i0.ɵɵlistener("click", function MJFileFormComponentExtended_Conditional_0_Conditional_19_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r4); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.ToggleViewMode()); });
44
54
  i0.ɵɵelement(1, "i", 25);
45
55
  i0.ɵɵelementStart(2, "span");
46
56
  i0.ɵɵtext(3, "Edit Record");
47
57
  i0.ɵɵelementEnd()();
48
58
  } }
49
- function MJFileFormComponentExtended_Conditional_0_Conditional_23_Template(rf, ctx) { if (rf & 1) {
59
+ function MJFileFormComponentExtended_Conditional_0_Conditional_22_Template(rf, ctx) { if (rf & 1) {
50
60
  i0.ɵɵelementStart(0, "div", 18);
51
61
  i0.ɵɵelement(1, "mj-loading", 26);
52
62
  i0.ɵɵelementEnd();
@@ -55,10 +65,10 @@ function MJFileFormComponentExtended_Conditional_0_Conditional_23_Template(rf, c
55
65
  i0.ɵɵadvance();
56
66
  i0.ɵɵproperty("text", "Loading " + (ctx_r1.record.Name || "file") + "...");
57
67
  } }
58
- function MJFileFormComponentExtended_Conditional_0_Case_24_Conditional_0_Template(rf, ctx) { if (rf & 1) {
68
+ function MJFileFormComponentExtended_Conditional_0_Case_23_Conditional_0_Template(rf, ctx) { if (rf & 1) {
59
69
  const _r5 = i0.ɵɵgetCurrentView();
60
70
  i0.ɵɵelementStart(0, "div", 28)(1, "img", 29);
61
- i0.ɵɵlistener("load", function MJFileFormComponentExtended_Conditional_0_Case_24_Conditional_0_Template_img_load_1_listener() { i0.ɵɵrestoreView(_r5); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.OnMediaElementLoaded()); })("error", function MJFileFormComponentExtended_Conditional_0_Case_24_Conditional_0_Template_img_error_1_listener() { i0.ɵɵrestoreView(_r5); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.OnMediaElementLoaded()); });
71
+ i0.ɵɵlistener("load", function MJFileFormComponentExtended_Conditional_0_Case_23_Conditional_0_Template_img_load_1_listener() { i0.ɵɵrestoreView(_r5); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.OnMediaElementLoaded()); })("error", function MJFileFormComponentExtended_Conditional_0_Case_23_Conditional_0_Template_img_error_1_listener() { i0.ɵɵrestoreView(_r5); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.OnMediaElementLoaded()); });
62
72
  i0.ɵɵelementEnd()();
63
73
  } if (rf & 2) {
64
74
  const ctx_r1 = i0.ɵɵnextContext(3);
@@ -66,7 +76,7 @@ function MJFileFormComponentExtended_Conditional_0_Case_24_Conditional_0_Templat
66
76
  i0.ɵɵadvance();
67
77
  i0.ɵɵproperty("src", ctx_r1.MediaUrl, i0.ɵɵsanitizeUrl)("alt", ctx_r1.record.Name);
68
78
  } }
69
- function MJFileFormComponentExtended_Conditional_0_Case_24_Conditional_1_Template(rf, ctx) { if (rf & 1) {
79
+ function MJFileFormComponentExtended_Conditional_0_Case_23_Conditional_1_Template(rf, ctx) { if (rf & 1) {
70
80
  i0.ɵɵelementStart(0, "div", 20);
71
81
  i0.ɵɵelement(1, "i", 30);
72
82
  i0.ɵɵelementStart(2, "h3");
@@ -80,16 +90,16 @@ function MJFileFormComponentExtended_Conditional_0_Case_24_Conditional_1_Templat
80
90
  i0.ɵɵadvance(3);
81
91
  i0.ɵɵtextInterpolate(ctx_r1.record.Name);
82
92
  } }
83
- function MJFileFormComponentExtended_Conditional_0_Case_24_Template(rf, ctx) { if (rf & 1) {
84
- i0.ɵɵconditionalCreate(0, MJFileFormComponentExtended_Conditional_0_Case_24_Conditional_0_Template, 2, 4, "div", 27)(1, MJFileFormComponentExtended_Conditional_0_Case_24_Conditional_1_Template, 6, 1, "div", 20);
93
+ function MJFileFormComponentExtended_Conditional_0_Case_23_Template(rf, ctx) { if (rf & 1) {
94
+ i0.ɵɵconditionalCreate(0, MJFileFormComponentExtended_Conditional_0_Case_23_Conditional_0_Template, 2, 4, "div", 27)(1, MJFileFormComponentExtended_Conditional_0_Case_23_Conditional_1_Template, 6, 1, "div", 20);
85
95
  } if (rf & 2) {
86
96
  const ctx_r1 = i0.ɵɵnextContext(2);
87
97
  i0.ɵɵconditional(ctx_r1.MediaUrl ? 0 : 1);
88
98
  } }
89
- function MJFileFormComponentExtended_Conditional_0_Case_25_Conditional_0_Template(rf, ctx) { if (rf & 1) {
99
+ function MJFileFormComponentExtended_Conditional_0_Case_24_Conditional_0_Template(rf, ctx) { if (rf & 1) {
90
100
  const _r6 = i0.ɵɵgetCurrentView();
91
101
  i0.ɵɵelementStart(0, "div", 32)(1, "iframe", 33);
92
- i0.ɵɵlistener("load", function MJFileFormComponentExtended_Conditional_0_Case_25_Conditional_0_Template_iframe_load_1_listener() { i0.ɵɵrestoreView(_r6); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.OnMediaElementLoaded()); });
102
+ i0.ɵɵlistener("load", function MJFileFormComponentExtended_Conditional_0_Case_24_Conditional_0_Template_iframe_load_1_listener() { i0.ɵɵrestoreView(_r6); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.OnMediaElementLoaded()); });
93
103
  i0.ɵɵelementEnd()();
94
104
  } if (rf & 2) {
95
105
  const ctx_r1 = i0.ɵɵnextContext(3);
@@ -97,7 +107,7 @@ function MJFileFormComponentExtended_Conditional_0_Case_25_Conditional_0_Templat
97
107
  i0.ɵɵadvance();
98
108
  i0.ɵɵproperty("src", ctx_r1.SafeMediaUrl, i0.ɵɵsanitizeResourceUrl);
99
109
  } }
100
- function MJFileFormComponentExtended_Conditional_0_Case_25_Conditional_1_Template(rf, ctx) { if (rf & 1) {
110
+ function MJFileFormComponentExtended_Conditional_0_Case_24_Conditional_1_Template(rf, ctx) { if (rf & 1) {
101
111
  i0.ɵɵelementStart(0, "div", 20);
102
112
  i0.ɵɵelement(1, "i", 34);
103
113
  i0.ɵɵelementStart(2, "h3");
@@ -111,16 +121,16 @@ function MJFileFormComponentExtended_Conditional_0_Case_25_Conditional_1_Templat
111
121
  i0.ɵɵadvance(3);
112
122
  i0.ɵɵtextInterpolate(ctx_r1.record.Name);
113
123
  } }
114
- function MJFileFormComponentExtended_Conditional_0_Case_25_Template(rf, ctx) { if (rf & 1) {
115
- i0.ɵɵconditionalCreate(0, MJFileFormComponentExtended_Conditional_0_Case_25_Conditional_0_Template, 2, 3, "div", 31)(1, MJFileFormComponentExtended_Conditional_0_Case_25_Conditional_1_Template, 6, 1, "div", 20);
124
+ function MJFileFormComponentExtended_Conditional_0_Case_24_Template(rf, ctx) { if (rf & 1) {
125
+ i0.ɵɵconditionalCreate(0, MJFileFormComponentExtended_Conditional_0_Case_24_Conditional_0_Template, 2, 3, "div", 31)(1, MJFileFormComponentExtended_Conditional_0_Case_24_Conditional_1_Template, 6, 1, "div", 20);
116
126
  } if (rf & 2) {
117
127
  const ctx_r1 = i0.ɵɵnextContext(2);
118
128
  i0.ɵɵconditional(ctx_r1.SafeMediaUrl ? 0 : 1);
119
129
  } }
120
- function MJFileFormComponentExtended_Conditional_0_Case_26_Conditional_0_Template(rf, ctx) { if (rf & 1) {
130
+ function MJFileFormComponentExtended_Conditional_0_Case_25_Conditional_0_Template(rf, ctx) { if (rf & 1) {
121
131
  const _r7 = i0.ɵɵgetCurrentView();
122
132
  i0.ɵɵelementStart(0, "div", 36)(1, "video", 37);
123
- i0.ɵɵlistener("loadeddata", function MJFileFormComponentExtended_Conditional_0_Case_26_Conditional_0_Template_video_loadeddata_1_listener() { i0.ɵɵrestoreView(_r7); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.OnMediaElementLoaded()); })("error", function MJFileFormComponentExtended_Conditional_0_Case_26_Conditional_0_Template_video_error_1_listener() { i0.ɵɵrestoreView(_r7); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.OnMediaElementLoaded()); });
133
+ i0.ɵɵlistener("loadeddata", function MJFileFormComponentExtended_Conditional_0_Case_25_Conditional_0_Template_video_loadeddata_1_listener() { i0.ɵɵrestoreView(_r7); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.OnMediaElementLoaded()); })("error", function MJFileFormComponentExtended_Conditional_0_Case_25_Conditional_0_Template_video_error_1_listener() { i0.ɵɵrestoreView(_r7); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.OnMediaElementLoaded()); });
124
134
  i0.ɵɵelementEnd()();
125
135
  } if (rf & 2) {
126
136
  const ctx_r1 = i0.ɵɵnextContext(3);
@@ -128,7 +138,7 @@ function MJFileFormComponentExtended_Conditional_0_Case_26_Conditional_0_Templat
128
138
  i0.ɵɵadvance();
129
139
  i0.ɵɵproperty("src", ctx_r1.MediaUrl, i0.ɵɵsanitizeUrl);
130
140
  } }
131
- function MJFileFormComponentExtended_Conditional_0_Case_26_Conditional_1_Template(rf, ctx) { if (rf & 1) {
141
+ function MJFileFormComponentExtended_Conditional_0_Case_25_Conditional_1_Template(rf, ctx) { if (rf & 1) {
132
142
  i0.ɵɵelementStart(0, "div", 20);
133
143
  i0.ɵɵelement(1, "i", 38);
134
144
  i0.ɵɵelementStart(2, "h3");
@@ -142,19 +152,19 @@ function MJFileFormComponentExtended_Conditional_0_Case_26_Conditional_1_Templat
142
152
  i0.ɵɵadvance(3);
143
153
  i0.ɵɵtextInterpolate(ctx_r1.record.Name);
144
154
  } }
145
- function MJFileFormComponentExtended_Conditional_0_Case_26_Template(rf, ctx) { if (rf & 1) {
146
- i0.ɵɵconditionalCreate(0, MJFileFormComponentExtended_Conditional_0_Case_26_Conditional_0_Template, 2, 3, "div", 35)(1, MJFileFormComponentExtended_Conditional_0_Case_26_Conditional_1_Template, 6, 1, "div", 20);
155
+ function MJFileFormComponentExtended_Conditional_0_Case_25_Template(rf, ctx) { if (rf & 1) {
156
+ i0.ɵɵconditionalCreate(0, MJFileFormComponentExtended_Conditional_0_Case_25_Conditional_0_Template, 2, 3, "div", 35)(1, MJFileFormComponentExtended_Conditional_0_Case_25_Conditional_1_Template, 6, 1, "div", 20);
147
157
  } if (rf & 2) {
148
158
  const ctx_r1 = i0.ɵɵnextContext(2);
149
159
  i0.ɵɵconditional(ctx_r1.MediaUrl ? 0 : 1);
150
160
  } }
151
- function MJFileFormComponentExtended_Conditional_0_Case_27_Conditional_0_Template(rf, ctx) { if (rf & 1) {
161
+ function MJFileFormComponentExtended_Conditional_0_Case_26_Conditional_0_Template(rf, ctx) { if (rf & 1) {
152
162
  const _r8 = i0.ɵɵgetCurrentView();
153
163
  i0.ɵɵelementStart(0, "div", 40)(1, "div", 41);
154
164
  i0.ɵɵelement(2, "i", 42);
155
165
  i0.ɵɵelementEnd();
156
166
  i0.ɵɵelementStart(3, "audio", 43);
157
- i0.ɵɵlistener("loadeddata", function MJFileFormComponentExtended_Conditional_0_Case_27_Conditional_0_Template_audio_loadeddata_3_listener() { i0.ɵɵrestoreView(_r8); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.OnMediaElementLoaded()); })("error", function MJFileFormComponentExtended_Conditional_0_Case_27_Conditional_0_Template_audio_error_3_listener() { i0.ɵɵrestoreView(_r8); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.OnMediaElementLoaded()); });
167
+ i0.ɵɵlistener("loadeddata", function MJFileFormComponentExtended_Conditional_0_Case_26_Conditional_0_Template_audio_loadeddata_3_listener() { i0.ɵɵrestoreView(_r8); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.OnMediaElementLoaded()); })("error", function MJFileFormComponentExtended_Conditional_0_Case_26_Conditional_0_Template_audio_error_3_listener() { i0.ɵɵrestoreView(_r8); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.OnMediaElementLoaded()); });
158
168
  i0.ɵɵelementEnd()();
159
169
  } if (rf & 2) {
160
170
  const ctx_r1 = i0.ɵɵnextContext(3);
@@ -162,7 +172,7 @@ function MJFileFormComponentExtended_Conditional_0_Case_27_Conditional_0_Templat
162
172
  i0.ɵɵadvance(3);
163
173
  i0.ɵɵproperty("src", ctx_r1.MediaUrl);
164
174
  } }
165
- function MJFileFormComponentExtended_Conditional_0_Case_27_Conditional_1_Template(rf, ctx) { if (rf & 1) {
175
+ function MJFileFormComponentExtended_Conditional_0_Case_26_Conditional_1_Template(rf, ctx) { if (rf & 1) {
166
176
  i0.ɵɵelementStart(0, "div", 20);
167
177
  i0.ɵɵelement(1, "i", 44);
168
178
  i0.ɵɵelementStart(2, "h3");
@@ -176,13 +186,13 @@ function MJFileFormComponentExtended_Conditional_0_Case_27_Conditional_1_Templat
176
186
  i0.ɵɵadvance(3);
177
187
  i0.ɵɵtextInterpolate(ctx_r1.record.Name);
178
188
  } }
179
- function MJFileFormComponentExtended_Conditional_0_Case_27_Template(rf, ctx) { if (rf & 1) {
180
- i0.ɵɵconditionalCreate(0, MJFileFormComponentExtended_Conditional_0_Case_27_Conditional_0_Template, 4, 3, "div", 39)(1, MJFileFormComponentExtended_Conditional_0_Case_27_Conditional_1_Template, 6, 1, "div", 20);
189
+ function MJFileFormComponentExtended_Conditional_0_Case_26_Template(rf, ctx) { if (rf & 1) {
190
+ i0.ɵɵconditionalCreate(0, MJFileFormComponentExtended_Conditional_0_Case_26_Conditional_0_Template, 4, 3, "div", 39)(1, MJFileFormComponentExtended_Conditional_0_Case_26_Conditional_1_Template, 6, 1, "div", 20);
181
191
  } if (rf & 2) {
182
192
  const ctx_r1 = i0.ɵɵnextContext(2);
183
193
  i0.ɵɵconditional(ctx_r1.MediaUrl ? 0 : 1);
184
194
  } }
185
- function MJFileFormComponentExtended_Conditional_0_Case_28_Template(rf, ctx) { if (rf & 1) {
195
+ function MJFileFormComponentExtended_Conditional_0_Case_27_Template(rf, ctx) { if (rf & 1) {
186
196
  i0.ɵɵelementStart(0, "div", 19)(1, "pre")(2, "code");
187
197
  i0.ɵɵtext(3);
188
198
  i0.ɵɵelementEnd()()();
@@ -191,47 +201,118 @@ function MJFileFormComponentExtended_Conditional_0_Case_28_Template(rf, ctx) { i
191
201
  i0.ɵɵadvance(3);
192
202
  i0.ɵɵtextInterpolate(ctx_r1.TextContent || "Loading text content...");
193
203
  } }
194
- function MJFileFormComponentExtended_Conditional_0_Case_29_Conditional_8_Template(rf, ctx) { if (rf & 1) {
204
+ function MJFileFormComponentExtended_Conditional_0_Case_28_Conditional_0_Template(rf, ctx) { if (rf & 1) {
195
205
  const _r9 = i0.ɵɵgetCurrentView();
196
- i0.ɵɵelementStart(0, "button", 49);
197
- i0.ɵɵlistener("click", function MJFileFormComponentExtended_Conditional_0_Case_29_Conditional_8_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r9); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.OpenInExternalTab()); });
206
+ i0.ɵɵelementStart(0, "div", 46)(1, "mj-docx-preview", 47);
207
+ i0.ɵɵlistener("Loaded", function MJFileFormComponentExtended_Conditional_0_Case_28_Conditional_0_Template_mj_docx_preview_Loaded_1_listener() { i0.ɵɵrestoreView(_r9); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.OnMediaElementLoaded()); })("Failed", function MJFileFormComponentExtended_Conditional_0_Case_28_Conditional_0_Template_mj_docx_preview_Failed_1_listener() { i0.ɵɵrestoreView(_r9); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.OnMediaElementLoaded()); });
208
+ i0.ɵɵelementEnd()();
209
+ } if (rf & 2) {
210
+ const ctx_r1 = i0.ɵɵnextContext(3);
211
+ i0.ɵɵclassProp("mj-file-media--hidden", !ctx_r1.IsMediaLoaded);
212
+ i0.ɵɵadvance();
213
+ i0.ɵɵproperty("Url", ctx_r1.MediaUrl);
214
+ } }
215
+ function MJFileFormComponentExtended_Conditional_0_Case_28_Conditional_1_Template(rf, ctx) { if (rf & 1) {
216
+ i0.ɵɵelementStart(0, "div", 20);
217
+ i0.ɵɵelement(1, "i", 48);
218
+ i0.ɵɵelementStart(2, "h3");
219
+ i0.ɵɵtext(3);
220
+ i0.ɵɵelementEnd();
221
+ i0.ɵɵelementStart(4, "p");
222
+ i0.ɵɵtext(5, "Document preview could not be loaded.");
223
+ i0.ɵɵelementEnd()();
224
+ } if (rf & 2) {
225
+ const ctx_r1 = i0.ɵɵnextContext(3);
226
+ i0.ɵɵadvance(3);
227
+ i0.ɵɵtextInterpolate(ctx_r1.record.Name);
228
+ } }
229
+ function MJFileFormComponentExtended_Conditional_0_Case_28_Template(rf, ctx) { if (rf & 1) {
230
+ i0.ɵɵconditionalCreate(0, MJFileFormComponentExtended_Conditional_0_Case_28_Conditional_0_Template, 2, 3, "div", 45)(1, MJFileFormComponentExtended_Conditional_0_Case_28_Conditional_1_Template, 6, 1, "div", 20);
231
+ } if (rf & 2) {
232
+ const ctx_r1 = i0.ɵɵnextContext(2);
233
+ i0.ɵɵconditional(ctx_r1.MediaUrl ? 0 : 1);
234
+ } }
235
+ function MJFileFormComponentExtended_Conditional_0_Case_29_Conditional_0_Template(rf, ctx) { if (rf & 1) {
236
+ const _r10 = i0.ɵɵgetCurrentView();
237
+ i0.ɵɵelementStart(0, "div", 46)(1, "mj-xlsx-preview", 47);
238
+ i0.ɵɵlistener("Loaded", function MJFileFormComponentExtended_Conditional_0_Case_29_Conditional_0_Template_mj_xlsx_preview_Loaded_1_listener() { i0.ɵɵrestoreView(_r10); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.OnMediaElementLoaded()); })("Failed", function MJFileFormComponentExtended_Conditional_0_Case_29_Conditional_0_Template_mj_xlsx_preview_Failed_1_listener() { i0.ɵɵrestoreView(_r10); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.OnMediaElementLoaded()); });
239
+ i0.ɵɵelementEnd()();
240
+ } if (rf & 2) {
241
+ const ctx_r1 = i0.ɵɵnextContext(3);
242
+ i0.ɵɵclassProp("mj-file-media--hidden", !ctx_r1.IsMediaLoaded);
243
+ i0.ɵɵadvance();
244
+ i0.ɵɵproperty("Url", ctx_r1.MediaUrl);
245
+ } }
246
+ function MJFileFormComponentExtended_Conditional_0_Case_29_Conditional_1_Template(rf, ctx) { if (rf & 1) {
247
+ i0.ɵɵelementStart(0, "div", 20);
248
+ i0.ɵɵelement(1, "i", 49);
249
+ i0.ɵɵelementStart(2, "h3");
250
+ i0.ɵɵtext(3);
251
+ i0.ɵɵelementEnd();
252
+ i0.ɵɵelementStart(4, "p");
253
+ i0.ɵɵtext(5, "Workbook preview could not be loaded.");
254
+ i0.ɵɵelementEnd()();
255
+ } if (rf & 2) {
256
+ const ctx_r1 = i0.ɵɵnextContext(3);
257
+ i0.ɵɵadvance(3);
258
+ i0.ɵɵtextInterpolate(ctx_r1.record.Name);
259
+ } }
260
+ function MJFileFormComponentExtended_Conditional_0_Case_29_Template(rf, ctx) { if (rf & 1) {
261
+ i0.ɵɵconditionalCreate(0, MJFileFormComponentExtended_Conditional_0_Case_29_Conditional_0_Template, 2, 3, "div", 45)(1, MJFileFormComponentExtended_Conditional_0_Case_29_Conditional_1_Template, 6, 1, "div", 20);
262
+ } if (rf & 2) {
263
+ const ctx_r1 = i0.ɵɵnextContext(2);
264
+ i0.ɵɵconditional(ctx_r1.MediaUrl ? 0 : 1);
265
+ } }
266
+ function MJFileFormComponentExtended_Conditional_0_Case_30_Conditional_6_Template(rf, ctx) { if (rf & 1) {
267
+ i0.ɵɵtext(0);
268
+ } if (rf & 2) {
269
+ i0.ɵɵtextInterpolate1(" \u2022 ", ctx);
270
+ } }
271
+ function MJFileFormComponentExtended_Conditional_0_Case_30_Conditional_9_Template(rf, ctx) { if (rf & 1) {
272
+ const _r11 = i0.ɵɵgetCurrentView();
273
+ i0.ɵɵelementStart(0, "button", 54);
274
+ i0.ɵɵlistener("click", function MJFileFormComponentExtended_Conditional_0_Case_30_Conditional_9_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r11); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.OpenInExternalTab()); });
198
275
  i0.ɵɵelement(1, "i", 23);
199
276
  i0.ɵɵelementStart(2, "span");
200
277
  i0.ɵɵtext(3, "Open in Browser");
201
278
  i0.ɵɵelementEnd()();
202
279
  } }
203
- function MJFileFormComponentExtended_Conditional_0_Case_29_Template(rf, ctx) { if (rf & 1) {
280
+ function MJFileFormComponentExtended_Conditional_0_Case_30_Template(rf, ctx) { if (rf & 1) {
204
281
  i0.ɵɵelementStart(0, "div", 20);
205
- i0.ɵɵelement(1, "i", 45);
282
+ i0.ɵɵelement(1, "i", 50);
206
283
  i0.ɵɵelementStart(2, "h3");
207
284
  i0.ɵɵtext(3);
208
285
  i0.ɵɵelementEnd();
209
- i0.ɵɵelementStart(4, "p", 46);
286
+ i0.ɵɵelementStart(4, "p", 51);
210
287
  i0.ɵɵtext(5);
288
+ i0.ɵɵconditionalCreate(6, MJFileFormComponentExtended_Conditional_0_Case_30_Conditional_6_Template, 1, 1);
211
289
  i0.ɵɵelementEnd();
212
- i0.ɵɵelementStart(6, "p", 47);
213
- i0.ɵɵtext(7);
290
+ i0.ɵɵelementStart(7, "p", 52);
291
+ i0.ɵɵtext(8);
214
292
  i0.ɵɵelementEnd();
215
- i0.ɵɵconditionalCreate(8, MJFileFormComponentExtended_Conditional_0_Case_29_Conditional_8_Template, 4, 0, "button", 48);
293
+ i0.ɵɵconditionalCreate(9, MJFileFormComponentExtended_Conditional_0_Case_30_Conditional_9_Template, 4, 0, "button", 53);
216
294
  i0.ɵɵelementEnd();
217
295
  } if (rf & 2) {
296
+ let tmp_5_0;
218
297
  const ctx_r1 = i0.ɵɵnextContext(2);
219
298
  i0.ɵɵadvance();
220
299
  i0.ɵɵclassMap(ctx_r1.FileIconClass);
221
300
  i0.ɵɵadvance(2);
222
301
  i0.ɵɵtextInterpolate(ctx_r1.record.Name);
223
302
  i0.ɵɵadvance(2);
224
- i0.ɵɵtextInterpolate2("", ctx_r1.record.ContentType || "Document", " \u2022 ", ctx_r1.FormatFileSize(ctx_r1.record.ContentLength));
303
+ i0.ɵɵtextInterpolate(ctx_r1.record.ContentType || "Document");
304
+ i0.ɵɵadvance();
305
+ i0.ɵɵconditional((tmp_5_0 = ctx_r1.FileSizeLabel) ? 6 : -1, tmp_5_0);
225
306
  i0.ɵɵadvance(2);
226
307
  i0.ɵɵtextInterpolate(ctx_r1.record.Description || "Preview is not available for this file type.");
227
308
  i0.ɵɵadvance();
228
- i0.ɵɵconditional(ctx_r1.MediaUrl ? 8 : -1);
309
+ i0.ɵɵconditional(ctx_r1.MediaUrl ? 9 : -1);
229
310
  } }
230
- function MJFileFormComponentExtended_Conditional_0_Conditional_30_Conditional_13_Template(rf, ctx) { if (rf & 1) {
231
- i0.ɵɵelementStart(0, "div", 55)(1, "span", 56);
311
+ function MJFileFormComponentExtended_Conditional_0_Conditional_31_Conditional_13_Template(rf, ctx) { if (rf & 1) {
312
+ i0.ɵɵelementStart(0, "div", 60)(1, "span", 61);
232
313
  i0.ɵɵtext(2, "Description:");
233
314
  i0.ɵɵelementEnd();
234
- i0.ɵɵelementStart(3, "span", 59);
315
+ i0.ɵɵelementStart(3, "span", 64);
235
316
  i0.ɵɵtext(4);
236
317
  i0.ɵɵelementEnd()();
237
318
  } if (rf & 2) {
@@ -239,11 +320,22 @@ function MJFileFormComponentExtended_Conditional_0_Conditional_30_Conditional_13
239
320
  i0.ɵɵadvance(4);
240
321
  i0.ɵɵtextInterpolate(ctx_r1.record.Description);
241
322
  } }
242
- function MJFileFormComponentExtended_Conditional_0_Conditional_30_Conditional_24_Template(rf, ctx) { if (rf & 1) {
243
- i0.ɵɵelementStart(0, "div", 55)(1, "span", 56);
323
+ function MJFileFormComponentExtended_Conditional_0_Conditional_31_Conditional_19_Template(rf, ctx) { if (rf & 1) {
324
+ i0.ɵɵelementStart(0, "div", 60)(1, "span", 61);
325
+ i0.ɵɵtext(2, "Size:");
326
+ i0.ɵɵelementEnd();
327
+ i0.ɵɵelementStart(3, "span", 64);
328
+ i0.ɵɵtext(4);
329
+ i0.ɵɵelementEnd()();
330
+ } if (rf & 2) {
331
+ i0.ɵɵadvance(4);
332
+ i0.ɵɵtextInterpolate(ctx);
333
+ } }
334
+ function MJFileFormComponentExtended_Conditional_0_Conditional_31_Conditional_20_Template(rf, ctx) { if (rf & 1) {
335
+ i0.ɵɵelementStart(0, "div", 60)(1, "span", 61);
244
336
  i0.ɵɵtext(2, "Status:");
245
337
  i0.ɵɵelementEnd();
246
- i0.ɵɵelementStart(3, "span", 59);
338
+ i0.ɵɵelementStart(3, "span", 64);
247
339
  i0.ɵɵtext(4);
248
340
  i0.ɵɵelementEnd()();
249
341
  } if (rf & 2) {
@@ -251,51 +343,47 @@ function MJFileFormComponentExtended_Conditional_0_Conditional_30_Conditional_24
251
343
  i0.ɵɵadvance(4);
252
344
  i0.ɵɵtextInterpolate(ctx_r1.record.Status);
253
345
  } }
254
- function MJFileFormComponentExtended_Conditional_0_Conditional_30_Template(rf, ctx) { if (rf & 1) {
255
- const _r10 = i0.ɵɵgetCurrentView();
256
- i0.ɵɵelementStart(0, "aside", 21)(1, "div", 50)(2, "h3");
346
+ function MJFileFormComponentExtended_Conditional_0_Conditional_31_Template(rf, ctx) { if (rf & 1) {
347
+ const _r12 = i0.ɵɵgetCurrentView();
348
+ i0.ɵɵelementStart(0, "aside", 21)(1, "div", 55)(2, "h3");
257
349
  i0.ɵɵtext(3, "File Details & Links");
258
350
  i0.ɵɵelementEnd();
259
- i0.ɵɵelementStart(4, "button", 51);
260
- i0.ɵɵlistener("click", function MJFileFormComponentExtended_Conditional_0_Conditional_30_Template_button_click_4_listener() { i0.ɵɵrestoreView(_r10); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.ToggleDetailsSidebar()); });
261
- i0.ɵɵelement(5, "i", 52);
351
+ i0.ɵɵelementStart(4, "button", 56);
352
+ i0.ɵɵlistener("click", function MJFileFormComponentExtended_Conditional_0_Conditional_31_Template_button_click_4_listener() { i0.ɵɵrestoreView(_r12); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.ToggleDetailsSidebar()); });
353
+ i0.ɵɵelement(5, "i", 57);
262
354
  i0.ɵɵelementEnd()();
263
- i0.ɵɵelementStart(6, "div", 53)(7, "div", 54)(8, "div", 55)(9, "span", 56);
355
+ i0.ɵɵelementStart(6, "div", 58)(7, "div", 59)(8, "div", 60)(9, "span", 61);
264
356
  i0.ɵɵtext(10, "File Name:");
265
357
  i0.ɵɵelementEnd();
266
- i0.ɵɵelementStart(11, "span", 57);
358
+ i0.ɵɵelementStart(11, "span", 62);
267
359
  i0.ɵɵtext(12);
268
360
  i0.ɵɵelementEnd()();
269
- i0.ɵɵconditionalCreate(13, MJFileFormComponentExtended_Conditional_0_Conditional_30_Conditional_13_Template, 5, 1, "div", 55);
270
- i0.ɵɵelementStart(14, "div", 55)(15, "span", 56);
361
+ i0.ɵɵconditionalCreate(13, MJFileFormComponentExtended_Conditional_0_Conditional_31_Conditional_13_Template, 5, 1, "div", 60);
362
+ i0.ɵɵelementStart(14, "div", 60)(15, "span", 61);
271
363
  i0.ɵɵtext(16, "MIME Type:");
272
364
  i0.ɵɵelementEnd();
273
- i0.ɵɵelementStart(17, "span", 58);
365
+ i0.ɵɵelementStart(17, "span", 63);
274
366
  i0.ɵɵtext(18);
275
367
  i0.ɵɵelementEnd()();
276
- i0.ɵɵelementStart(19, "div", 55)(20, "span", 56);
277
- i0.ɵɵtext(21, "Size:");
368
+ i0.ɵɵconditionalCreate(19, MJFileFormComponentExtended_Conditional_0_Conditional_31_Conditional_19_Template, 5, 1, "div", 60);
369
+ i0.ɵɵconditionalCreate(20, MJFileFormComponentExtended_Conditional_0_Conditional_31_Conditional_20_Template, 5, 1, "div", 60);
370
+ i0.ɵɵelementStart(21, "div", 60)(22, "span", 61);
371
+ i0.ɵɵtext(23, "Created:");
278
372
  i0.ɵɵelementEnd();
279
- i0.ɵɵelementStart(22, "span", 59);
280
- i0.ɵɵtext(23);
281
- i0.ɵɵelementEnd()();
282
- i0.ɵɵconditionalCreate(24, MJFileFormComponentExtended_Conditional_0_Conditional_30_Conditional_24_Template, 5, 1, "div", 55);
283
- i0.ɵɵelementStart(25, "div", 55)(26, "span", 56);
284
- i0.ɵɵtext(27, "Created:");
285
- i0.ɵɵelementEnd();
286
- i0.ɵɵelementStart(28, "span", 59);
287
- i0.ɵɵtext(29);
288
- i0.ɵɵpipe(30, "date");
373
+ i0.ɵɵelementStart(24, "span", 64);
374
+ i0.ɵɵtext(25);
375
+ i0.ɵɵpipe(26, "date");
289
376
  i0.ɵɵelementEnd()()();
290
- i0.ɵɵelementStart(31, "div", 60)(32, "h4", 61);
291
- i0.ɵɵelement(33, "i", 62);
292
- i0.ɵɵelementStart(34, "span");
293
- i0.ɵɵtext(35, "Linked Records");
377
+ i0.ɵɵelementStart(27, "div", 65)(28, "h4", 66);
378
+ i0.ɵɵelement(29, "i", 67);
379
+ i0.ɵɵelementStart(30, "span");
380
+ i0.ɵɵtext(31, "Linked Records");
294
381
  i0.ɵɵelementEnd()();
295
- i0.ɵɵelementStart(36, "div", 63);
296
- i0.ɵɵelement(37, "mj-relationship-view", 64);
382
+ i0.ɵɵelementStart(32, "div", 68);
383
+ i0.ɵɵelement(33, "mj-relationship-view", 69);
297
384
  i0.ɵɵelementEnd()()()();
298
385
  } if (rf & 2) {
386
+ let tmp_5_0;
299
387
  const ctx_r1 = i0.ɵɵnextContext(2);
300
388
  i0.ɵɵadvance(12);
301
389
  i0.ɵɵtextInterpolate(ctx_r1.record.Name);
@@ -303,12 +391,12 @@ function MJFileFormComponentExtended_Conditional_0_Conditional_30_Template(rf, c
303
391
  i0.ɵɵconditional(ctx_r1.record.Description ? 13 : -1);
304
392
  i0.ɵɵadvance(5);
305
393
  i0.ɵɵtextInterpolate(ctx_r1.record.ContentType || "Unknown");
306
- i0.ɵɵadvance(5);
307
- i0.ɵɵtextInterpolate(ctx_r1.FormatFileSize(ctx_r1.record.ContentLength));
308
394
  i0.ɵɵadvance();
309
- i0.ɵɵconditional(ctx_r1.record.Status ? 24 : -1);
395
+ i0.ɵɵconditional((tmp_5_0 = ctx_r1.FileSizeLabel) ? 19 : -1, tmp_5_0);
396
+ i0.ɵɵadvance();
397
+ i0.ɵɵconditional(ctx_r1.record.Status ? 20 : -1);
310
398
  i0.ɵɵadvance(5);
311
- i0.ɵɵtextInterpolate(i0.ɵɵpipeBind2(30, 8, ctx_r1.record.CreatedAt, "short"));
399
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind2(26, 8, ctx_r1.record.__mj_CreatedAt, "short"));
312
400
  i0.ɵɵadvance(8);
313
401
  i0.ɵɵproperty("Params", ctx_r1.BuildRelationshipViewParamsByEntityName("MJ: File Entity Record Links", "FileID"))("NewRecordValues", ctx_r1.NewRecordValues("MJ: File Entity Record Links", "FileID"));
314
402
  } }
@@ -323,28 +411,27 @@ function MJFileFormComponentExtended_Conditional_0_Template(rf, ctx) { if (rf &
323
411
  i0.ɵɵelementStart(8, "div", 7)(9, "span", 8);
324
412
  i0.ɵɵtext(10);
325
413
  i0.ɵɵelementEnd();
326
- i0.ɵɵelementStart(11, "span", 9);
327
- i0.ɵɵtext(12);
328
- i0.ɵɵelementEnd();
329
- i0.ɵɵconditionalCreate(13, MJFileFormComponentExtended_Conditional_0_Conditional_13_Template, 2, 1, "span", 10);
414
+ i0.ɵɵconditionalCreate(11, MJFileFormComponentExtended_Conditional_0_Conditional_11_Template, 2, 1, "span", 9);
415
+ i0.ɵɵconditionalCreate(12, MJFileFormComponentExtended_Conditional_0_Conditional_12_Template, 2, 1, "span", 10);
330
416
  i0.ɵɵelementEnd()()();
331
- i0.ɵɵelementStart(14, "div", 11);
332
- i0.ɵɵconditionalCreate(15, MJFileFormComponentExtended_Conditional_0_Conditional_15_Template, 4, 0, "button", 12);
333
- i0.ɵɵelementStart(16, "button", 13);
334
- i0.ɵɵlistener("click", function MJFileFormComponentExtended_Conditional_0_Template_button_click_16_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.ToggleDetailsSidebar()); });
335
- i0.ɵɵelement(17, "i", 14);
336
- i0.ɵɵelementStart(18, "span");
337
- i0.ɵɵtext(19);
417
+ i0.ɵɵelementStart(13, "div", 11);
418
+ i0.ɵɵconditionalCreate(14, MJFileFormComponentExtended_Conditional_0_Conditional_14_Template, 4, 0, "button", 12);
419
+ i0.ɵɵelementStart(15, "button", 13);
420
+ i0.ɵɵlistener("click", function MJFileFormComponentExtended_Conditional_0_Template_button_click_15_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.ToggleDetailsSidebar()); });
421
+ i0.ɵɵelement(16, "i", 14);
422
+ i0.ɵɵelementStart(17, "span");
423
+ i0.ɵɵtext(18);
338
424
  i0.ɵɵelementEnd()();
339
- i0.ɵɵconditionalCreate(20, MJFileFormComponentExtended_Conditional_0_Conditional_20_Template, 4, 0, "button", 15);
425
+ i0.ɵɵconditionalCreate(19, MJFileFormComponentExtended_Conditional_0_Conditional_19_Template, 4, 0, "button", 15);
340
426
  i0.ɵɵelementEnd()();
341
- i0.ɵɵelementStart(21, "div", 16)(22, "main", 17);
342
- i0.ɵɵconditionalCreate(23, MJFileFormComponentExtended_Conditional_0_Conditional_23_Template, 2, 1, "div", 18);
343
- i0.ɵɵconditionalCreate(24, MJFileFormComponentExtended_Conditional_0_Case_24_Template, 2, 1)(25, MJFileFormComponentExtended_Conditional_0_Case_25_Template, 2, 1)(26, MJFileFormComponentExtended_Conditional_0_Case_26_Template, 2, 1)(27, MJFileFormComponentExtended_Conditional_0_Case_27_Template, 2, 1)(28, MJFileFormComponentExtended_Conditional_0_Case_28_Template, 4, 1, "div", 19)(29, MJFileFormComponentExtended_Conditional_0_Case_29_Template, 9, 7, "div", 20);
427
+ i0.ɵɵelementStart(20, "div", 16)(21, "main", 17);
428
+ i0.ɵɵconditionalCreate(22, MJFileFormComponentExtended_Conditional_0_Conditional_22_Template, 2, 1, "div", 18);
429
+ i0.ɵɵconditionalCreate(23, MJFileFormComponentExtended_Conditional_0_Case_23_Template, 2, 1)(24, MJFileFormComponentExtended_Conditional_0_Case_24_Template, 2, 1)(25, MJFileFormComponentExtended_Conditional_0_Case_25_Template, 2, 1)(26, MJFileFormComponentExtended_Conditional_0_Case_26_Template, 2, 1)(27, MJFileFormComponentExtended_Conditional_0_Case_27_Template, 4, 1, "div", 19)(28, MJFileFormComponentExtended_Conditional_0_Case_28_Template, 2, 1)(29, MJFileFormComponentExtended_Conditional_0_Case_29_Template, 2, 1)(30, MJFileFormComponentExtended_Conditional_0_Case_30_Template, 10, 7, "div", 20);
344
430
  i0.ɵɵelementEnd();
345
- i0.ɵɵconditionalCreate(30, MJFileFormComponentExtended_Conditional_0_Conditional_30_Template, 38, 11, "aside", 21);
431
+ i0.ɵɵconditionalCreate(31, MJFileFormComponentExtended_Conditional_0_Conditional_31_Template, 34, 11, "aside", 21);
346
432
  i0.ɵɵelementEnd()();
347
433
  } if (rf & 2) {
434
+ let tmp_5_0;
348
435
  let tmp_12_0;
349
436
  const ctx_r1 = i0.ɵɵnextContext();
350
437
  i0.ɵɵadvance(4);
@@ -355,49 +442,49 @@ function MJFileFormComponentExtended_Conditional_0_Template(rf, ctx) { if (rf &
355
442
  i0.ɵɵtextInterpolate(ctx_r1.record.Name);
356
443
  i0.ɵɵadvance(3);
357
444
  i0.ɵɵtextInterpolate(ctx_r1.record.ContentType || "Document");
358
- i0.ɵɵadvance(2);
359
- i0.ɵɵtextInterpolate(ctx_r1.FormatFileSize(ctx_r1.record.ContentLength));
360
445
  i0.ɵɵadvance();
361
- i0.ɵɵconditional(ctx_r1.record.Status ? 13 : -1);
446
+ i0.ɵɵconditional((tmp_5_0 = ctx_r1.FileSizeLabel) ? 11 : -1, tmp_5_0);
447
+ i0.ɵɵadvance();
448
+ i0.ɵɵconditional(ctx_r1.record.Status ? 12 : -1);
362
449
  i0.ɵɵadvance(2);
363
- i0.ɵɵconditional(ctx_r1.MediaUrl ? 15 : -1);
450
+ i0.ɵɵconditional(ctx_r1.MediaUrl ? 14 : -1);
364
451
  i0.ɵɵadvance();
365
452
  i0.ɵɵproperty("title", ctx_r1.ShowDetailsSidebar ? "Hide Details" : "Show Details");
366
453
  i0.ɵɵadvance(3);
367
454
  i0.ɵɵtextInterpolate(ctx_r1.ShowDetailsSidebar ? "Hide Details" : "Details");
368
455
  i0.ɵɵadvance();
369
- i0.ɵɵconditional(ctx_r1.UserCanEdit ? 20 : -1);
456
+ i0.ɵɵconditional(ctx_r1.UserCanEdit ? 19 : -1);
370
457
  i0.ɵɵadvance(3);
371
- i0.ɵɵconditional(ctx_r1.IsLoadingMedia || !ctx_r1.IsMediaLoaded ? 23 : -1);
458
+ i0.ɵɵconditional(ctx_r1.IsLoadingMedia || !ctx_r1.IsMediaLoaded ? 22 : -1);
372
459
  i0.ɵɵadvance();
373
- i0.ɵɵconditional((tmp_12_0 = ctx_r1.MediaType) === "image" ? 24 : tmp_12_0 === "pdf" ? 25 : tmp_12_0 === "video" ? 26 : tmp_12_0 === "audio" ? 27 : tmp_12_0 === "text" ? 28 : 29);
374
- i0.ɵɵadvance(6);
375
- i0.ɵɵconditional(ctx_r1.ShowDetailsSidebar ? 30 : -1);
460
+ i0.ɵɵconditional((tmp_12_0 = ctx_r1.MediaType) === "image" ? 23 : tmp_12_0 === "pdf" ? 24 : tmp_12_0 === "video" ? 25 : tmp_12_0 === "audio" ? 26 : tmp_12_0 === "text" ? 27 : tmp_12_0 === "docx" ? 28 : tmp_12_0 === "xlsx" ? 29 : 30);
461
+ i0.ɵɵadvance(8);
462
+ i0.ɵɵconditional(ctx_r1.ShowDetailsSidebar ? 31 : -1);
376
463
  } }
377
464
  function MJFileFormComponentExtended_Conditional_1_Template(rf, ctx) { if (rf & 1) {
378
- const _r11 = i0.ɵɵgetCurrentView();
379
- i0.ɵɵelementStart(0, "div", 1)(1, "div", 65)(2, "button", 66);
380
- i0.ɵɵlistener("click", function MJFileFormComponentExtended_Conditional_1_Template_button_click_2_listener() { i0.ɵɵrestoreView(_r11); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.ToggleViewMode()); });
381
- i0.ɵɵelement(3, "i", 67);
465
+ const _r13 = i0.ɵɵgetCurrentView();
466
+ i0.ɵɵelementStart(0, "div", 1)(1, "div", 70)(2, "button", 71);
467
+ i0.ɵɵlistener("click", function MJFileFormComponentExtended_Conditional_1_Template_button_click_2_listener() { i0.ɵɵrestoreView(_r13); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.ToggleViewMode()); });
468
+ i0.ɵɵelement(3, "i", 72);
382
469
  i0.ɵɵelementStart(4, "span");
383
470
  i0.ɵɵtext(5, "Return to File Preview");
384
471
  i0.ɵɵelementEnd()()();
385
- i0.ɵɵelementStart(6, "mj-record-form-container", 68);
386
- i0.ɵɵlistener("Navigate", function MJFileFormComponentExtended_Conditional_1_Template_mj_record_form_container_Navigate_6_listener($event) { i0.ɵɵrestoreView(_r11); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.OnFormNavigate($event)); })("DeleteRequested", function MJFileFormComponentExtended_Conditional_1_Template_mj_record_form_container_DeleteRequested_6_listener() { i0.ɵɵrestoreView(_r11); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.OnDeleteRequested()); })("FavoriteToggled", function MJFileFormComponentExtended_Conditional_1_Template_mj_record_form_container_FavoriteToggled_6_listener() { i0.ɵɵrestoreView(_r11); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.OnFavoriteToggled()); })("HistoryRequested", function MJFileFormComponentExtended_Conditional_1_Template_mj_record_form_container_HistoryRequested_6_listener() { i0.ɵɵrestoreView(_r11); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.OnHistoryRequested()); })("ListManagementRequested", function MJFileFormComponentExtended_Conditional_1_Template_mj_record_form_container_ListManagementRequested_6_listener() { i0.ɵɵrestoreView(_r11); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.OnListManagementRequested()); });
387
- i0.ɵɵelement(7, "mj-form-panel-slot", 69);
388
- i0.ɵɵelementStart(8, "mj-collapsible-panel", 70);
389
- i0.ɵɵelement(9, "mj-form-field", 71)(10, "mj-form-field", 72);
472
+ i0.ɵɵelementStart(6, "mj-record-form-container", 73);
473
+ i0.ɵɵlistener("Navigate", function MJFileFormComponentExtended_Conditional_1_Template_mj_record_form_container_Navigate_6_listener($event) { i0.ɵɵrestoreView(_r13); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.OnFormNavigate($event)); })("DeleteRequested", function MJFileFormComponentExtended_Conditional_1_Template_mj_record_form_container_DeleteRequested_6_listener() { i0.ɵɵrestoreView(_r13); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.OnDeleteRequested()); })("FavoriteToggled", function MJFileFormComponentExtended_Conditional_1_Template_mj_record_form_container_FavoriteToggled_6_listener() { i0.ɵɵrestoreView(_r13); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.OnFavoriteToggled()); })("HistoryRequested", function MJFileFormComponentExtended_Conditional_1_Template_mj_record_form_container_HistoryRequested_6_listener() { i0.ɵɵrestoreView(_r13); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.OnHistoryRequested()); })("ListManagementRequested", function MJFileFormComponentExtended_Conditional_1_Template_mj_record_form_container_ListManagementRequested_6_listener() { i0.ɵɵrestoreView(_r13); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.OnListManagementRequested()); });
474
+ i0.ɵɵelement(7, "mj-form-panel-slot", 74);
475
+ i0.ɵɵelementStart(8, "mj-collapsible-panel", 75);
476
+ i0.ɵɵelement(9, "mj-form-field", 76)(10, "mj-form-field", 77);
390
477
  i0.ɵɵelementEnd();
391
- i0.ɵɵelementStart(11, "mj-collapsible-panel", 73);
392
- i0.ɵɵelement(12, "mj-form-field", 74)(13, "mj-form-field", 75);
478
+ i0.ɵɵelementStart(11, "mj-collapsible-panel", 78);
479
+ i0.ɵɵelement(12, "mj-form-field", 79)(13, "mj-form-field", 80);
393
480
  i0.ɵɵelementEnd();
394
- i0.ɵɵelementStart(14, "mj-collapsible-panel", 76);
395
- i0.ɵɵelement(15, "mj-form-field", 77)(16, "mj-form-field", 78)(17, "mj-form-field", 79)(18, "mj-form-field", 80);
481
+ i0.ɵɵelementStart(14, "mj-collapsible-panel", 81);
482
+ i0.ɵɵelement(15, "mj-form-field", 82)(16, "mj-form-field", 83)(17, "mj-form-field", 84);
396
483
  i0.ɵɵelementEnd();
397
- i0.ɵɵelementStart(19, "mj-collapsible-panel", 81);
398
- i0.ɵɵelement(20, "mj-relationship-view", 64);
484
+ i0.ɵɵelementStart(18, "mj-collapsible-panel", 85);
485
+ i0.ɵɵelement(19, "mj-relationship-view", 69);
399
486
  i0.ɵɵelementEnd();
400
- i0.ɵɵelement(21, "mj-form-panel-slot", 82);
487
+ i0.ɵɵelement(20, "mj-form-panel-slot", 86);
401
488
  i0.ɵɵelementEnd()();
402
489
  } if (rf & 2) {
403
490
  const ctx_r1 = i0.ɵɵnextContext();
@@ -426,8 +513,6 @@ function MJFileFormComponentExtended_Conditional_1_Template(rf, ctx) { if (rf &
426
513
  i0.ɵɵadvance();
427
514
  i0.ɵɵproperty("Record", ctx_r1.record)("ShowLabel", true)("EditMode", ctx_r1.EditMode)("FormContext", ctx_r1.formContext);
428
515
  i0.ɵɵadvance();
429
- i0.ɵɵproperty("Record", ctx_r1.record)("ShowLabel", true)("EditMode", ctx_r1.EditMode)("FormContext", ctx_r1.formContext);
430
- i0.ɵɵadvance();
431
516
  i0.ɵɵproperty("Form", ctx_r1)("FormContext", ctx_r1.formContext);
432
517
  i0.ɵɵadvance();
433
518
  i0.ɵɵproperty("Params", ctx_r1.BuildRelationshipViewParamsByEntityName("MJ: File Entity Record Links", "FileID"))("NewRecordValues", ctx_r1.NewRecordValues("MJ: File Entity Record Links", "FileID"));
@@ -557,6 +642,11 @@ let MJFileFormComponentExtended = class MJFileFormComponentExtended extends MJFi
557
642
  }
558
643
  this.IsMediaLoaded = true;
559
644
  }
645
+ else if (!MediaLoadsByElement(mediaType)) {
646
+ // No element will fire `load` for this type: the fallback card is the view, so it is loaded now.
647
+ // Without this the overlay stayed on "Loading…" for every .zip and the like (MJ#4947).
648
+ this.IsMediaLoaded = true;
649
+ }
560
650
  }
561
651
  else {
562
652
  this.IsMediaLoaded = true;
@@ -579,28 +669,9 @@ let MJFileFormComponentExtended = class MJFileFormComponentExtended extends MJFi
579
669
  this.cdr.markForCheck();
580
670
  }, 350);
581
671
  }
582
- /**
583
- * Determines media type category based on MIME type or file extension.
584
- */
672
+ /** The viewer's category for the file, from its MIME type or its name (`ClassifyFileMediaType`). */
585
673
  get MediaType() {
586
- const mime = (this.record?.ContentType || '').toLowerCase();
587
- const name = (this.record?.Name || '').toLowerCase();
588
- if (mime.startsWith('image/') || /\.(png|jpe?g|gif|webp|svg|ico|bmp|avif)$/.test(name))
589
- return 'image';
590
- if (mime === 'application/pdf' || name.endsWith('.pdf'))
591
- return 'pdf';
592
- if (mime.startsWith('video/') || /\.(mp4|webm|ogg|mov|mkv|avi)$/.test(name))
593
- return 'video';
594
- if (mime.startsWith('audio/') || /\.(mp3|wav|ogg|aac|m4a|flac)$/.test(name))
595
- return 'audio';
596
- if (mime.startsWith('text/') ||
597
- mime.includes('json') ||
598
- mime.includes('xml') ||
599
- mime.includes('javascript') ||
600
- /\.(txt|md|csv|json|xml|yaml|yml|js|ts|html|css|sql|sh|log)$/.test(name)) {
601
- return 'text';
602
- }
603
- return 'other';
674
+ return ClassifyFileMediaType(this.record?.ContentType, this.record?.Name);
604
675
  }
605
676
  get FileIconClass() {
606
677
  switch (this.MediaType) {
@@ -609,16 +680,15 @@ let MJFileFormComponentExtended = class MJFileFormComponentExtended extends MJFi
609
680
  case 'video': return 'fa-solid fa-file-video mj-file-color-video';
610
681
  case 'audio': return 'fa-solid fa-file-audio mj-file-color-audio';
611
682
  case 'text': return 'fa-solid fa-file-lines mj-file-color-text';
683
+ case 'docx': return 'fa-solid fa-file-word mj-file-color-word';
684
+ case 'xlsx': return 'fa-solid fa-file-excel mj-file-color-excel';
612
685
  default: return 'fa-solid fa-file mj-file-color-generic';
613
686
  }
614
687
  }
615
- FormatFileSize(bytes) {
616
- if (bytes == null || isNaN(bytes) || bytes <= 0)
617
- return '0 B';
618
- const units = ['B', 'KB', 'MB', 'GB', 'TB'];
619
- const idx = Math.min(Math.floor(Math.log(bytes) / Math.log(1024)), units.length - 1);
620
- const val = bytes / Math.pow(1024, idx);
621
- return `${val.toFixed(idx === 0 ? 0 : 1)} ${units[idx]}`;
688
+ /** The size badge's text, or null when no size is recorded: `MJ: Files` has no length column today. */
689
+ get FileSizeLabel() {
690
+ const length = this.record.ContentLength;
691
+ return DescribeFileSize(length);
622
692
  }
623
693
  OpenInExternalTab() {
624
694
  if (this.MediaUrl) {
@@ -636,11 +706,11 @@ let MJFileFormComponentExtended = class MJFileFormComponentExtended extends MJFi
636
706
  this.ViewStandardForm = !this.ViewStandardForm;
637
707
  }
638
708
  static { this.ɵfac = /*@__PURE__*/ (() => { let ɵMJFileFormComponentExtended_BaseFactory; return function MJFileFormComponentExtended_Factory(__ngFactoryType__) { return (ɵMJFileFormComponentExtended_BaseFactory || (ɵMJFileFormComponentExtended_BaseFactory = i0.ɵɵgetInheritedFactory(MJFileFormComponentExtended)))(__ngFactoryType__ || MJFileFormComponentExtended); }; })(); }
639
- static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: MJFileFormComponentExtended, selectors: [["mj-file-form-extended"]], standalone: false, features: [i0.ɵɵInheritDefinitionFeature, i0.ɵɵNgOnChangesFeature], decls: 2, vars: 1, consts: [[1, "mj-file-viewer-container"], [1, "mj-file-standard-form-wrapper"], [1, "mj-file-viewer-header"], [1, "mj-file-viewer-header-left"], [1, "mj-file-viewer-icon-box"], [1, "mj-file-viewer-title-group"], [1, "mj-file-viewer-title", 3, "title"], [1, "mj-file-viewer-badges"], [1, "mj-file-badge", "mj-file-badge--type"], [1, "mj-file-badge", "mj-file-badge--size"], [1, "mj-file-badge", "mj-file-badge--status"], [1, "mj-file-viewer-header-right"], ["type", "button", "mjButton", "", "variant", "secondary", "size", "sm", "title", "Open file in new browser tab"], ["type", "button", "mjButton", "", "variant", "secondary", "size", "sm", 3, "click", "title"], [1, "fa-solid", "fa-circle-info"], ["type", "button", "mjButton", "", "variant", "tertiary", "size", "sm", "title", "Switch to full record editor"], [1, "mj-file-viewer-body"], [1, "mj-file-viewer-stage"], [1, "mj-file-viewer-loading-overlay"], [1, "mj-file-media-text-box"], [1, "mj-file-viewer-fallback"], [1, "mj-file-viewer-sidebar"], ["type", "button", "mjButton", "", "variant", "secondary", "size", "sm", "title", "Open file in new browser tab", 3, "click"], [1, "fa-solid", "fa-arrow-up-right-from-square"], ["type", "button", "mjButton", "", "variant", "tertiary", "size", "sm", "title", "Switch to full record editor", 3, "click"], [1, "fa-solid", "fa-pen-to-square"], [3, "text"], [1, "mj-file-media-image-box", 3, "mj-file-media--hidden"], [1, "mj-file-media-image-box"], [3, "load", "error", "src", "alt"], [1, "fa-solid", "fa-file-image", "mj-file-fallback-icon"], [1, "mj-file-media-frame-box", 3, "mj-file-media--hidden"], [1, "mj-file-media-frame-box"], ["title", "Document Preview", 3, "load", "src"], [1, "fa-solid", "fa-file-pdf", "mj-file-fallback-icon"], [1, "mj-file-media-video-box", 3, "mj-file-media--hidden"], [1, "mj-file-media-video-box"], ["controls", "", "autoplay", "", 3, "loadeddata", "error", "src"], [1, "fa-solid", "fa-file-video", "mj-file-fallback-icon"], [1, "mj-file-media-audio-box", 3, "mj-file-media--hidden"], [1, "mj-file-media-audio-box"], [1, "mj-file-audio-visual-icon"], [1, "fa-solid", "fa-headphones"], ["controls", "", 3, "loadeddata", "error", "src"], [1, "fa-solid", "fa-file-audio", "mj-file-fallback-icon"], [1, "mj-file-fallback-icon"], [1, "mj-file-fallback-meta"], [1, "mj-file-fallback-desc"], ["type", "button", "mjButton", "", "variant", "primary"], ["type", "button", "mjButton", "", "variant", "primary", 3, "click"], [1, "mj-file-sidebar-header"], ["type", "button", "title", "Collapse Sidebar", 1, "mj-file-sidebar-close", 3, "click"], [1, "fa-solid", "fa-xmark"], [1, "mj-file-sidebar-content"], [1, "mj-file-sidebar-card"], [1, "mj-file-meta-row"], [1, "mj-file-meta-label"], [1, "mj-file-meta-val", "font-semibold"], [1, "mj-file-meta-val", "font-mono"], [1, "mj-file-meta-val"], [1, "mj-file-sidebar-section"], [1, "mj-file-sidebar-section-title"], [1, "fa-solid", "fa-link"], [1, "mj-file-relationship-wrapper"], [3, "Params", "NewRecordValues"], [1, "mj-file-mode-switch-bar"], ["type", "button", "mjButton", "", "variant", "secondary", "size", "sm", 3, "click"], [1, "fa-solid", "fa-arrow-left"], [3, "Navigate", "DeleteRequested", "FavoriteToggled", "HistoryRequested", "ListManagementRequested", "Record", "FormComponent"], ["Slot", "before-fields", 3, "Entity", "Record", "FormComponent", "FormContext"], ["SectionKey", "fileBasics", "SectionName", "File Basics", "Icon", "fa fa-file", 3, "Form", "FormContext"], ["FieldName", "Name", "Type", "textbox", 3, "Record", "ShowLabel", "EditMode", "FormContext"], ["FieldName", "Description", "Type", "textarea", 3, "Record", "ShowLabel", "EditMode", "FormContext"], ["SectionKey", "classificationStatus", "SectionName", "Classification & Status", "Icon", "fa fa-tags", 3, "Form", "FormContext"], ["FieldName", "CategoryID", "Type", "textbox", "LinkType", "Record", 3, "Record", "ShowLabel", "EditMode", "FormContext"], ["FieldName", "Status", "Type", "textbox", 3, "Record", "ShowLabel", "EditMode", "FormContext"], ["SectionKey", "storageDetails", "SectionName", "Storage Details", "Icon", "fa fa-database", 3, "Form", "FormContext"], ["FieldName", "ProviderID", "Type", "textbox", "LinkType", "Record", 3, "Record", "ShowLabel", "EditMode", "FormContext"], ["FieldName", "ProviderKey", "Type", "textbox", 3, "Record", "ShowLabel", "EditMode", "FormContext"], ["FieldName", "ContentType", "Type", "textbox", 3, "Record", "ShowLabel", "EditMode", "FormContext"], ["FieldName", "ContentLength", "Type", "numeric", 3, "Record", "ShowLabel", "EditMode", "FormContext"], ["SectionKey", "mJFileEntityRecordLinks", "SectionName", "File Entity Record Links", "Icon", "fa fa-link", 3, "Form", "FormContext"], ["Slot", "after-fields", 3, "Entity", "Record", "FormComponent", "FormContext"]], template: function MJFileFormComponentExtended_Template(rf, ctx) { if (rf & 1) {
640
- i0.ɵɵconditionalCreate(0, MJFileFormComponentExtended_Conditional_0_Template, 31, 14, "div", 0)(1, MJFileFormComponentExtended_Conditional_1_Template, 22, 54, "div", 1);
709
+ static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: MJFileFormComponentExtended, selectors: [["mj-file-form-extended"]], standalone: false, features: [i0.ɵɵInheritDefinitionFeature, i0.ɵɵNgOnChangesFeature], decls: 2, vars: 1, consts: [[1, "mj-file-viewer-container"], [1, "mj-file-standard-form-wrapper"], [1, "mj-file-viewer-header"], [1, "mj-file-viewer-header-left"], [1, "mj-file-viewer-icon-box"], [1, "mj-file-viewer-title-group"], [1, "mj-file-viewer-title", 3, "title"], [1, "mj-file-viewer-badges"], [1, "mj-file-badge", "mj-file-badge--type"], [1, "mj-file-badge", "mj-file-badge--size"], [1, "mj-file-badge", "mj-file-badge--status"], [1, "mj-file-viewer-header-right"], ["type", "button", "mjButton", "", "variant", "secondary", "size", "sm", "title", "Open file in new browser tab"], ["type", "button", "mjButton", "", "variant", "secondary", "size", "sm", 3, "click", "title"], [1, "fa-solid", "fa-circle-info"], ["type", "button", "mjButton", "", "variant", "tertiary", "size", "sm", "title", "Switch to full record editor"], [1, "mj-file-viewer-body"], [1, "mj-file-viewer-stage"], [1, "mj-file-viewer-loading-overlay"], [1, "mj-file-media-text-box"], [1, "mj-file-viewer-fallback"], [1, "mj-file-viewer-sidebar"], ["type", "button", "mjButton", "", "variant", "secondary", "size", "sm", "title", "Open file in new browser tab", 3, "click"], [1, "fa-solid", "fa-arrow-up-right-from-square"], ["type", "button", "mjButton", "", "variant", "tertiary", "size", "sm", "title", "Switch to full record editor", 3, "click"], [1, "fa-solid", "fa-pen-to-square"], [3, "text"], [1, "mj-file-media-image-box", 3, "mj-file-media--hidden"], [1, "mj-file-media-image-box"], [3, "load", "error", "src", "alt"], [1, "fa-solid", "fa-file-image", "mj-file-fallback-icon"], [1, "mj-file-media-frame-box", 3, "mj-file-media--hidden"], [1, "mj-file-media-frame-box"], ["title", "Document Preview", 3, "load", "src"], [1, "fa-solid", "fa-file-pdf", "mj-file-fallback-icon"], [1, "mj-file-media-video-box", 3, "mj-file-media--hidden"], [1, "mj-file-media-video-box"], ["controls", "", "autoplay", "", 3, "loadeddata", "error", "src"], [1, "fa-solid", "fa-file-video", "mj-file-fallback-icon"], [1, "mj-file-media-audio-box", 3, "mj-file-media--hidden"], [1, "mj-file-media-audio-box"], [1, "mj-file-audio-visual-icon"], [1, "fa-solid", "fa-headphones"], ["controls", "", 3, "loadeddata", "error", "src"], [1, "fa-solid", "fa-file-audio", "mj-file-fallback-icon"], [1, "mj-file-media-office-box", 3, "mj-file-media--hidden"], [1, "mj-file-media-office-box"], [3, "Loaded", "Failed", "Url"], [1, "fa-solid", "fa-file-word", "mj-file-fallback-icon"], [1, "fa-solid", "fa-file-excel", "mj-file-fallback-icon"], [1, "mj-file-fallback-icon"], [1, "mj-file-fallback-meta"], [1, "mj-file-fallback-desc"], ["type", "button", "mjButton", "", "variant", "primary"], ["type", "button", "mjButton", "", "variant", "primary", 3, "click"], [1, "mj-file-sidebar-header"], ["type", "button", "title", "Collapse Sidebar", 1, "mj-file-sidebar-close", 3, "click"], [1, "fa-solid", "fa-xmark"], [1, "mj-file-sidebar-content"], [1, "mj-file-sidebar-card"], [1, "mj-file-meta-row"], [1, "mj-file-meta-label"], [1, "mj-file-meta-val", "font-semibold"], [1, "mj-file-meta-val", "font-mono"], [1, "mj-file-meta-val"], [1, "mj-file-sidebar-section"], [1, "mj-file-sidebar-section-title"], [1, "fa-solid", "fa-link"], [1, "mj-file-relationship-wrapper"], [3, "Params", "NewRecordValues"], [1, "mj-file-mode-switch-bar"], ["type", "button", "mjButton", "", "variant", "secondary", "size", "sm", 3, "click"], [1, "fa-solid", "fa-arrow-left"], [3, "Navigate", "DeleteRequested", "FavoriteToggled", "HistoryRequested", "ListManagementRequested", "Record", "FormComponent"], ["Slot", "before-fields", 3, "Entity", "Record", "FormComponent", "FormContext"], ["SectionKey", "fileBasics", "SectionName", "File Basics", "Icon", "fa fa-file", 3, "Form", "FormContext"], ["FieldName", "Name", "Type", "textbox", 3, "Record", "ShowLabel", "EditMode", "FormContext"], ["FieldName", "Description", "Type", "textarea", 3, "Record", "ShowLabel", "EditMode", "FormContext"], ["SectionKey", "classificationStatus", "SectionName", "Classification & Status", "Icon", "fa fa-tags", 3, "Form", "FormContext"], ["FieldName", "CategoryID", "Type", "textbox", "LinkType", "Record", 3, "Record", "ShowLabel", "EditMode", "FormContext"], ["FieldName", "Status", "Type", "textbox", 3, "Record", "ShowLabel", "EditMode", "FormContext"], ["SectionKey", "storageDetails", "SectionName", "Storage Details", "Icon", "fa fa-database", 3, "Form", "FormContext"], ["FieldName", "ProviderID", "Type", "textbox", "LinkType", "Record", 3, "Record", "ShowLabel", "EditMode", "FormContext"], ["FieldName", "ProviderKey", "Type", "textbox", 3, "Record", "ShowLabel", "EditMode", "FormContext"], ["FieldName", "ContentType", "Type", "textbox", 3, "Record", "ShowLabel", "EditMode", "FormContext"], ["SectionKey", "mJFileEntityRecordLinks", "SectionName", "File Entity Record Links", "Icon", "fa fa-link", 3, "Form", "FormContext"], ["Slot", "after-fields", 3, "Entity", "Record", "FormComponent", "FormContext"]], template: function MJFileFormComponentExtended_Template(rf, ctx) { if (rf & 1) {
710
+ i0.ɵɵconditionalCreate(0, MJFileFormComponentExtended_Conditional_0_Template, 32, 14, "div", 0)(1, MJFileFormComponentExtended_Conditional_1_Template, 21, 50, "div", 1);
641
711
  } if (rf & 2) {
642
712
  i0.ɵɵconditional(!ctx.ViewStandardForm ? 0 : 1);
643
- } }, dependencies: [i1.MJButtonDirective, i2.MjFormFieldComponent, i2.MjCollapsiblePanelComponent, i2.MjRecordFormContainerComponent, i2.FormPanelSlotComponent, i3.LoadingComponent, i4.DatePipe], styles: [".k-pane[_ngcontent-%COMP%] {\n background-color: var(--mj-bg-surface);\n}\n\n.content-margin[_ngcontent-%COMP%] {\n margin: 10px;\n}\n\n\na[_ngcontent-%COMP%] {\n font-size: 14px;\n font-weight: bolder;\n}\n\n.tab-header-icon[_ngcontent-%COMP%] {\n margin-right: 5px;\n}\n\n.record-form[_ngcontent-%COMP%] {\n display: block;\n flex-direction: column;\n background-color: var(--mj-bg-surface);\n padding: 0;\n min-height: 100vh;\n}\n\n.record-form-group[_ngcontent-%COMP%] {\n margin-top: 0px;\n background-color: var(--mj-bg-surface);\n}\n\nbutton[_ngcontent-%COMP%] {\n margin-right: 5px;\n}\n\n.record-form[_ngcontent-%COMP%] h2[_ngcontent-%COMP%] {\n margin-bottom: 10px;\n}\n\n.k-splitter[_ngcontent-%COMP%] {\n border-width: 0px;\n}\n\n.record-form-row[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: auto 1fr;\n align-items: start;\n gap: 10px;\n margin-bottom: 12px;\n padding-top: 5px;\n padding-bottom: 5px;\n}\n\n.record-form[_ngcontent-%COMP%] .record-form-row[_ngcontent-%COMP%] > [_ngcontent-%COMP%]:first-child {\n font-weight: bold;\n padding-right: 10px;\n}\n\n.record-form[_ngcontent-%COMP%] .record-form-row[_ngcontent-%COMP%] > span[_ngcontent-%COMP%] {\n white-space: pre-line;\n max-height: 300px;\n overflow: auto;\n}\n\n@media (min-width: 768px) {\n .record-form-row[_ngcontent-%COMP%] {\n flex-direction: row;\n align-items: center;\n }\n\n .record-form-row[_ngcontent-%COMP%] label[_ngcontent-%COMP%] {\n width: 240px;\n margin-bottom: 0;\n }\n}\n\n\n.form-panels-container[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 16px;\n padding: 16px;\n background-color: var(--mj-bg-surface);\n}\n\n\n.form-panels-container[_ngcontent-%COMP%] > .form-card[_ngcontent-%COMP%] {\n width: 100%;\n}\n\n\n.form-panels-container[_ngcontent-%COMP%] .related-entity-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: 1fr;\n gap: 16px;\n width: 100%;\n}\n\n\n@media (min-width: 1400px) {\n .form-panels-container[_ngcontent-%COMP%] .related-entity-grid[_ngcontent-%COMP%] {\n grid-template-columns: repeat(auto-fit, minmax(600px, 1fr));\n }\n}\n\n.form-card[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card);\n border-radius: 8px;\n box-shadow: 0 2px 4px var(--mj-shadow-sm);\n overflow: hidden;\n}\n\n.collapsible-card[_ngcontent-%COMP%] {\n overflow: hidden;\n}\n\n.collapsible-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 20px 24px;\n background: var(--mj-bg-surface-card);\n border-bottom: 2px solid var(--mj-border-default);\n cursor: pointer;\n user-select: none;\n transition: all 0.3s ease;\n}\n\n.collapsible-header[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-sunken);\n border-bottom-color: var(--mj-brand-primary);\n}\n\n.collapsible-title[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n flex: 1;\n}\n\n.collapsible-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 20px;\n color: var(--mj-brand-primary);\n}\n\n.collapsible-title[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 18px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.collapsible-header[_ngcontent-%COMP%] .collapse-icon[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n transition: transform 0.3s ease;\n}\n\n.collapsible-body[_ngcontent-%COMP%] {\n max-height: 2000px;\n overflow: hidden;\n transition: max-height 0.4s ease, padding 0.4s ease, opacity 0.3s ease;\n opacity: 1;\n}\n\n.collapsible-body.collapsed[_ngcontent-%COMP%] {\n max-height: 0;\n padding: 0;\n opacity: 0;\n}\n\n.form-body[_ngcontent-%COMP%] {\n padding: 24px;\n}\n\n\n.form-card.related-entity[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card);\n border-left: 3px solid var(--mj-brand-primary);\n}\n\n.form-card.related-entity[_ngcontent-%COMP%] .collapsible-header[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-sunken);\n}\n\n.form-card.related-entity[_ngcontent-%COMP%] .collapsible-header[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-card);\n border-bottom-color: var(--mj-brand-primary);\n}\n\n.form-card.related-entity[_ngcontent-%COMP%] .collapsible-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n}\n\n\n.form-section-controls[_ngcontent-%COMP%] {\n display: flex;\n gap: 10px;\n padding: 14px 18px;\n background: var(--mj-bg-surface-card);\n border-bottom: 2px solid var(--mj-border-default);\n align-items: center;\n flex-wrap: wrap;\n box-shadow: 0 1px 3px var(--mj-shadow-sm);\n}\n\n.form-section-controls[_ngcontent-%COMP%] .control-group[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n align-items: center;\n}\n\n.form-section-controls[_ngcontent-%COMP%] button[_ngcontent-%COMP%] {\n padding: 8px 14px;\n font-size: 13px;\n border: 1px solid var(--mj-border-strong);\n background: var(--mj-bg-surface-card);\n color: var(--mj-text-secondary);\n border-radius: 6px;\n cursor: pointer;\n transition: all 0.2s;\n margin-right: 0;\n display: inline-flex;\n align-items: center;\n gap: 6px;\n font-weight: 500;\n}\n\n.form-section-controls[_ngcontent-%COMP%] button[_ngcontent-%COMP%]:hover {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n border-color: var(--mj-brand-primary);\n transform: translateY(-1px);\n box-shadow: 0 2px 4px var(--mj-shadow-md);\n}\n\n.form-section-controls[_ngcontent-%COMP%] button[_ngcontent-%COMP%]:active {\n transform: translateY(0);\n}\n\n.form-section-controls[_ngcontent-%COMP%] button[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n margin-right: 0;\n font-size: 14px;\n}\n\n.form-section-controls[_ngcontent-%COMP%] .section-search[_ngcontent-%COMP%] {\n padding: 8px 14px;\n font-size: 13px;\n border: 1px solid var(--mj-border-strong);\n border-radius: 6px;\n width: 240px;\n transition: all 0.2s;\n background: var(--mj-bg-surface);\n color: var(--mj-text-primary);\n}\n\n.form-section-controls[_ngcontent-%COMP%] .section-search[_ngcontent-%COMP%]:focus {\n outline: none;\n border-color: var(--mj-brand-primary);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n}\n\n.form-section-controls[_ngcontent-%COMP%] .section-search[_ngcontent-%COMP%]::placeholder {\n color: var(--mj-text-muted);\n font-style: italic;\n}\n\n.form-section-controls[_ngcontent-%COMP%] .section-count[_ngcontent-%COMP%] {\n font-size: 13px;\n color: var(--mj-text-muted);\n margin-left: auto;\n font-weight: 500;\n}\n\n\n.form-card.search-hidden[_ngcontent-%COMP%] {\n display: none;\n}\n\n\n.section-count-badge[_ngcontent-%COMP%] {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n padding: 2px 8px;\n border-radius: 12px;\n font-size: 12px;\n font-weight: 600;\n}\n\n\n.collapsible-title[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] .search-highlight[_ngcontent-%COMP%] {\n background-color: var(--mj-status-warning);\n color: var(--mj-text-primary);\n padding: 2px 4px;\n border-radius: 3px;\n font-weight: 700;\n}\n\n\n.collapsible-title[_ngcontent-%COMP%] .row-count-badge[_ngcontent-%COMP%] {\n background: var(--mj-status-success);\n color: var(--mj-text-inverse);\n padding: 3px 6px 2px 6px;\n border-radius: 12px;\n font-size: 12px;\n font-weight: 600;\n margin-left: 8px;\n vertical-align: middle;\n position: relative;\n top: -2px;\n display: inline-block;\n line-height: 1;\n}\n\n\n.collapsible-title[_ngcontent-%COMP%] .row-count-badge.zero-rows[_ngcontent-%COMP%] {\n background: var(--mj-text-muted);\n}", ".mj-file-viewer-container[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n height: 100%;\n width: 100%;\n background: var(--mj-bg-surface);\n overflow: hidden;\n}\n\n\n.mj-file-viewer-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 12px 20px;\n background: var(--mj-bg-surface);\n border-bottom: 1px solid var(--mj-border-default);\n gap: 16px;\n flex-shrink: 0;\n}\n\n.mj-file-viewer-header-left[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 14px;\n min-width: 0;\n}\n\n.mj-file-viewer-icon-box[_ngcontent-%COMP%] {\n width: 38px;\n height: 38px;\n border-radius: var(--mj-radius-md, 8px);\n background: var(--mj-bg-surface-sunken, #f1f5f9);\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 1.25rem;\n flex-shrink: 0;\n}\n\n.mj-file-color-pdf[_ngcontent-%COMP%] { color: var(--mj-status-danger, #ef4444); }\n.mj-file-color-image[_ngcontent-%COMP%] { color: var(--mj-status-success, #10b981); }\n.mj-file-color-video[_ngcontent-%COMP%] { color: var(--mj-status-purple, #8b5cf6); }\n.mj-file-color-audio[_ngcontent-%COMP%] { color: var(--mj-status-warning, #f59e0b); }\n.mj-file-color-text[_ngcontent-%COMP%] { color: var(--mj-status-info, #3b82f6); }\n.mj-file-color-generic[_ngcontent-%COMP%] { color: var(--mj-text-muted, #94a3b8); }\n\n.mj-file-viewer-title-group[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n min-width: 0;\n}\n\n.mj-file-viewer-title[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 1.1rem;\n font-weight: 700;\n color: var(--mj-text-primary);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.mj-file-viewer-badges[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n margin-top: 3px;\n}\n\n.mj-file-badge[_ngcontent-%COMP%] {\n font-size: 0.72rem;\n font-weight: 600;\n padding: 2px 7px;\n border-radius: 9999px;\n}\n\n.mj-file-badge--type[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-sunken, #e2e8f0);\n color: var(--mj-text-secondary);\n}\n\n.mj-file-badge--size[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-sunken, #e2e8f0);\n color: var(--mj-text-secondary);\n}\n\n.mj-file-badge--status[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 12%, transparent);\n color: var(--mj-brand-primary);\n}\n\n.mj-file-viewer-header-right[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n flex-shrink: 0;\n}\n\n\n.mj-file-viewer-body[_ngcontent-%COMP%] {\n display: flex;\n flex: 1;\n overflow: hidden;\n position: relative;\n}\n\n\n.mj-file-viewer-stage[_ngcontent-%COMP%] {\n flex: 1;\n position: relative;\n overflow: auto;\n background: var(--mj-bg-surface-sunken, #0f172a);\n display: flex;\n align-items: center;\n justify-content: center;\n min-width: 0;\n}\n\n.mj-file-viewer-loading-overlay[_ngcontent-%COMP%] {\n position: absolute;\n inset: 0;\n z-index: 10;\n background: var(--mj-bg-surface-sunken, #0f172a);\n display: flex;\n align-items: center;\n justify-content: center;\n transition: opacity 0.3s ease;\n}\n\n.mj-file-media--hidden[_ngcontent-%COMP%] {\n opacity: 0;\n pointer-events: none;\n}\n\n.mj-file-media-image-box[_ngcontent-%COMP%] {\n width: 100%;\n height: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 24px;\n}\n\n.mj-file-media-image-box[_ngcontent-%COMP%] img[_ngcontent-%COMP%] {\n max-width: 100%;\n max-height: 100%;\n object-fit: contain;\n border-radius: var(--mj-radius-md, 8px);\n box-shadow: var(--mj-shadow-lg, 0 10px 15px -3px rgba(0, 0, 0, 0.2));\n}\n\n.mj-file-media-frame-box[_ngcontent-%COMP%] {\n width: 100%;\n height: 100%;\n}\n\n.mj-file-media-frame-box[_ngcontent-%COMP%] iframe[_ngcontent-%COMP%] {\n width: 100%;\n height: 100%;\n border: none;\n}\n\n.mj-file-media-video-box[_ngcontent-%COMP%] {\n width: 100%;\n height: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 24px;\n}\n\n.mj-file-media-video-box[_ngcontent-%COMP%] video[_ngcontent-%COMP%] {\n max-width: 100%;\n max-height: 100%;\n border-radius: var(--mj-radius-md, 8px);\n box-shadow: var(--mj-shadow-lg, 0 10px 15px -3px rgba(0, 0, 0, 0.2));\n}\n\n.mj-file-media-audio-box[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n gap: 20px;\n padding: 40px;\n background: var(--mj-bg-surface);\n border-radius: var(--mj-radius-lg, 12px);\n box-shadow: var(--mj-shadow-md, 0 4px 6px -1px rgba(0, 0, 0, 0.1));\n}\n\n.mj-file-audio-visual-icon[_ngcontent-%COMP%] {\n font-size: 3rem;\n color: var(--mj-status-warning, #f59e0b);\n}\n\n.mj-file-media-text-box[_ngcontent-%COMP%] {\n width: 100%;\n height: 100%;\n padding: 20px;\n overflow: auto;\n background: var(--mj-bg-surface);\n}\n\n.mj-file-media-text-box[_ngcontent-%COMP%] pre[_ngcontent-%COMP%] {\n margin: 0;\n font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;\n font-size: 0.85rem;\n line-height: 1.5;\n white-space: pre-wrap;\n word-break: break-word;\n}\n\n.mj-file-viewer-fallback[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n text-align: center;\n padding: 40px;\n background: var(--mj-bg-surface);\n border-radius: var(--mj-radius-lg, 12px);\n border: 1px solid var(--mj-border-default);\n max-width: 480px;\n}\n\n.mj-file-fallback-icon[_ngcontent-%COMP%] {\n font-size: 3.5rem;\n margin-bottom: 14px;\n}\n\n.mj-file-viewer-fallback[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n margin: 0 0 6px 0;\n font-size: 1.1rem;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.mj-file-fallback-meta[_ngcontent-%COMP%] {\n margin: 0 0 10px 0;\n font-size: 0.82rem;\n color: var(--mj-text-secondary);\n}\n\n.mj-file-fallback-desc[_ngcontent-%COMP%] {\n margin: 0 0 18px 0;\n font-size: 0.88rem;\n color: var(--mj-text-secondary);\n line-height: 1.4;\n}\n\n\n.mj-file-viewer-sidebar[_ngcontent-%COMP%] {\n width: 380px;\n flex-shrink: 0;\n border-left: 1px solid var(--mj-border-default);\n background: var(--mj-bg-surface);\n display: flex;\n flex-direction: column;\n overflow: hidden;\n}\n\n.mj-file-sidebar-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 14px 18px;\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.mj-file-sidebar-header[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 0.95rem;\n font-weight: 700;\n color: var(--mj-text-primary);\n}\n\n.mj-file-sidebar-close[_ngcontent-%COMP%] {\n background: none;\n border: none;\n font-size: 0.95rem;\n color: var(--mj-text-secondary);\n cursor: pointer;\n padding: 4px;\n}\n\n.mj-file-sidebar-close[_ngcontent-%COMP%]:hover {\n color: var(--mj-text-primary);\n}\n\n.mj-file-sidebar-content[_ngcontent-%COMP%] {\n flex: 1;\n overflow-y: auto;\n padding: 16px;\n display: flex;\n flex-direction: column;\n gap: 16px;\n}\n\n.mj-file-sidebar-card[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-sunken, #f8fafc);\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-md, 8px);\n padding: 12px 14px;\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.mj-file-meta-row[_ngcontent-%COMP%] {\n display: flex;\n align-items: flex-start;\n justify-content: space-between;\n font-size: 0.83rem;\n gap: 8px;\n}\n\n.mj-file-meta-label[_ngcontent-%COMP%] {\n color: var(--mj-text-secondary);\n font-weight: 500;\n flex-shrink: 0;\n}\n\n.mj-file-meta-val[_ngcontent-%COMP%] {\n color: var(--mj-text-primary);\n text-align: right;\n word-break: break-all;\n}\n\n.mj-file-sidebar-section[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 10px;\n}\n\n.mj-file-sidebar-section-title[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 0.88rem;\n font-weight: 700;\n color: var(--mj-text-primary);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.mj-file-relationship-wrapper[_ngcontent-%COMP%] {\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-md, 8px);\n overflow: hidden;\n min-height: 250px;\n}\n\n\n.mj-file-standard-form-wrapper[_ngcontent-%COMP%] {\n height: 100%;\n display: flex;\n flex-direction: column;\n overflow: auto;\n}\n\n.mj-file-mode-switch-bar[_ngcontent-%COMP%] {\n padding: 8px 16px;\n background: var(--mj-bg-surface);\n border-bottom: 1px solid var(--mj-border-default);\n}"] }); }
713
+ } }, dependencies: [i1.DocxPreviewComponent, i1.XlsxPreviewComponent, i2.MJButtonDirective, i3.MjFormFieldComponent, i3.MjCollapsiblePanelComponent, i3.MjRecordFormContainerComponent, i3.FormPanelSlotComponent, i4.LoadingComponent, i5.DatePipe], styles: [".k-pane[_ngcontent-%COMP%] {\n background-color: var(--mj-bg-surface);\n}\n\n.content-margin[_ngcontent-%COMP%] {\n margin: 10px;\n}\n\n\na[_ngcontent-%COMP%] {\n font-size: 14px;\n font-weight: bolder;\n}\n\n.tab-header-icon[_ngcontent-%COMP%] {\n margin-right: 5px;\n}\n\n.record-form[_ngcontent-%COMP%] {\n display: block;\n flex-direction: column;\n background-color: var(--mj-bg-surface);\n padding: 0;\n min-height: 100vh;\n}\n\n.record-form-group[_ngcontent-%COMP%] {\n margin-top: 0px;\n background-color: var(--mj-bg-surface);\n}\n\nbutton[_ngcontent-%COMP%] {\n margin-right: 5px;\n}\n\n.record-form[_ngcontent-%COMP%] h2[_ngcontent-%COMP%] {\n margin-bottom: 10px;\n}\n\n.k-splitter[_ngcontent-%COMP%] {\n border-width: 0px;\n}\n\n.record-form-row[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: auto 1fr;\n align-items: start;\n gap: 10px;\n margin-bottom: 12px;\n padding-top: 5px;\n padding-bottom: 5px;\n}\n\n.record-form[_ngcontent-%COMP%] .record-form-row[_ngcontent-%COMP%] > [_ngcontent-%COMP%]:first-child {\n font-weight: bold;\n padding-right: 10px;\n}\n\n.record-form[_ngcontent-%COMP%] .record-form-row[_ngcontent-%COMP%] > span[_ngcontent-%COMP%] {\n white-space: pre-line;\n max-height: 300px;\n overflow: auto;\n}\n\n@media (min-width: 768px) {\n .record-form-row[_ngcontent-%COMP%] {\n flex-direction: row;\n align-items: center;\n }\n\n .record-form-row[_ngcontent-%COMP%] label[_ngcontent-%COMP%] {\n width: 240px;\n margin-bottom: 0;\n }\n}\n\n\n.form-panels-container[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 16px;\n padding: 16px;\n background-color: var(--mj-bg-surface);\n}\n\n\n.form-panels-container[_ngcontent-%COMP%] > .form-card[_ngcontent-%COMP%] {\n width: 100%;\n}\n\n\n.form-panels-container[_ngcontent-%COMP%] .related-entity-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: 1fr;\n gap: 16px;\n width: 100%;\n}\n\n\n@media (min-width: 1400px) {\n .form-panels-container[_ngcontent-%COMP%] .related-entity-grid[_ngcontent-%COMP%] {\n grid-template-columns: repeat(auto-fit, minmax(600px, 1fr));\n }\n}\n\n.form-card[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card);\n border-radius: 8px;\n box-shadow: 0 2px 4px var(--mj-shadow-sm);\n overflow: hidden;\n}\n\n.collapsible-card[_ngcontent-%COMP%] {\n overflow: hidden;\n}\n\n.collapsible-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 20px 24px;\n background: var(--mj-bg-surface-card);\n border-bottom: 2px solid var(--mj-border-default);\n cursor: pointer;\n user-select: none;\n transition: all 0.3s ease;\n}\n\n.collapsible-header[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-sunken);\n border-bottom-color: var(--mj-brand-primary);\n}\n\n.collapsible-title[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n flex: 1;\n}\n\n.collapsible-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 20px;\n color: var(--mj-brand-primary);\n}\n\n.collapsible-title[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 18px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.collapsible-header[_ngcontent-%COMP%] .collapse-icon[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n transition: transform 0.3s ease;\n}\n\n.collapsible-body[_ngcontent-%COMP%] {\n max-height: 2000px;\n overflow: hidden;\n transition: max-height 0.4s ease, padding 0.4s ease, opacity 0.3s ease;\n opacity: 1;\n}\n\n.collapsible-body.collapsed[_ngcontent-%COMP%] {\n max-height: 0;\n padding: 0;\n opacity: 0;\n}\n\n.form-body[_ngcontent-%COMP%] {\n padding: 24px;\n}\n\n\n.form-card.related-entity[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card);\n border-left: 3px solid var(--mj-brand-primary);\n}\n\n.form-card.related-entity[_ngcontent-%COMP%] .collapsible-header[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-sunken);\n}\n\n.form-card.related-entity[_ngcontent-%COMP%] .collapsible-header[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-card);\n border-bottom-color: var(--mj-brand-primary);\n}\n\n.form-card.related-entity[_ngcontent-%COMP%] .collapsible-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n}\n\n\n.form-section-controls[_ngcontent-%COMP%] {\n display: flex;\n gap: 10px;\n padding: 14px 18px;\n background: var(--mj-bg-surface-card);\n border-bottom: 2px solid var(--mj-border-default);\n align-items: center;\n flex-wrap: wrap;\n box-shadow: 0 1px 3px var(--mj-shadow-sm);\n}\n\n.form-section-controls[_ngcontent-%COMP%] .control-group[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n align-items: center;\n}\n\n.form-section-controls[_ngcontent-%COMP%] button[_ngcontent-%COMP%] {\n padding: 8px 14px;\n font-size: 13px;\n border: 1px solid var(--mj-border-strong);\n background: var(--mj-bg-surface-card);\n color: var(--mj-text-secondary);\n border-radius: 6px;\n cursor: pointer;\n transition: all 0.2s;\n margin-right: 0;\n display: inline-flex;\n align-items: center;\n gap: 6px;\n font-weight: 500;\n}\n\n.form-section-controls[_ngcontent-%COMP%] button[_ngcontent-%COMP%]:hover {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n border-color: var(--mj-brand-primary);\n transform: translateY(-1px);\n box-shadow: 0 2px 4px var(--mj-shadow-md);\n}\n\n.form-section-controls[_ngcontent-%COMP%] button[_ngcontent-%COMP%]:active {\n transform: translateY(0);\n}\n\n.form-section-controls[_ngcontent-%COMP%] button[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n margin-right: 0;\n font-size: 14px;\n}\n\n.form-section-controls[_ngcontent-%COMP%] .section-search[_ngcontent-%COMP%] {\n padding: 8px 14px;\n font-size: 13px;\n border: 1px solid var(--mj-border-strong);\n border-radius: 6px;\n width: 240px;\n transition: all 0.2s;\n background: var(--mj-bg-surface);\n color: var(--mj-text-primary);\n}\n\n.form-section-controls[_ngcontent-%COMP%] .section-search[_ngcontent-%COMP%]:focus {\n outline: none;\n border-color: var(--mj-brand-primary);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n}\n\n.form-section-controls[_ngcontent-%COMP%] .section-search[_ngcontent-%COMP%]::placeholder {\n color: var(--mj-text-muted);\n font-style: italic;\n}\n\n.form-section-controls[_ngcontent-%COMP%] .section-count[_ngcontent-%COMP%] {\n font-size: 13px;\n color: var(--mj-text-muted);\n margin-left: auto;\n font-weight: 500;\n}\n\n\n.form-card.search-hidden[_ngcontent-%COMP%] {\n display: none;\n}\n\n\n.section-count-badge[_ngcontent-%COMP%] {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n padding: 2px 8px;\n border-radius: 12px;\n font-size: 12px;\n font-weight: 600;\n}\n\n\n.collapsible-title[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] .search-highlight[_ngcontent-%COMP%] {\n background-color: var(--mj-status-warning);\n color: var(--mj-text-primary);\n padding: 2px 4px;\n border-radius: 3px;\n font-weight: 700;\n}\n\n\n.collapsible-title[_ngcontent-%COMP%] .row-count-badge[_ngcontent-%COMP%] {\n background: var(--mj-status-success);\n color: var(--mj-text-inverse);\n padding: 3px 6px 2px 6px;\n border-radius: 12px;\n font-size: 12px;\n font-weight: 600;\n margin-left: 8px;\n vertical-align: middle;\n position: relative;\n top: -2px;\n display: inline-block;\n line-height: 1;\n}\n\n\n.collapsible-title[_ngcontent-%COMP%] .row-count-badge.zero-rows[_ngcontent-%COMP%] {\n background: var(--mj-text-muted);\n}", ".mj-file-viewer-container[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n height: 100%;\n width: 100%;\n background: var(--mj-bg-surface);\n overflow: hidden;\n}\n\n\n.mj-file-viewer-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 12px 20px;\n background: var(--mj-bg-surface);\n border-bottom: 1px solid var(--mj-border-default);\n gap: 16px;\n flex-shrink: 0;\n}\n\n.mj-file-viewer-header-left[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 14px;\n min-width: 0;\n}\n\n.mj-file-viewer-icon-box[_ngcontent-%COMP%] {\n width: 38px;\n height: 38px;\n border-radius: var(--mj-radius-md, 8px);\n background: var(--mj-bg-surface-sunken, #f1f5f9);\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 1.25rem;\n flex-shrink: 0;\n}\n\n.mj-file-color-pdf[_ngcontent-%COMP%] { color: var(--mj-status-danger, #ef4444); }\n.mj-file-color-image[_ngcontent-%COMP%] { color: var(--mj-status-success, #10b981); }\n.mj-file-color-video[_ngcontent-%COMP%] { color: var(--mj-status-purple, #8b5cf6); }\n.mj-file-color-audio[_ngcontent-%COMP%] { color: var(--mj-status-warning, #f59e0b); }\n.mj-file-color-text[_ngcontent-%COMP%] { color: var(--mj-status-info, #3b82f6); }\n.mj-file-color-generic[_ngcontent-%COMP%] { color: var(--mj-text-muted, #94a3b8); }\n.mj-file-color-word[_ngcontent-%COMP%] { color: var(--mj-status-info, #2b579a); }\n.mj-file-color-excel[_ngcontent-%COMP%] { color: var(--mj-status-success, #217346); }\n\n.mj-file-viewer-title-group[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n min-width: 0;\n}\n\n.mj-file-viewer-title[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 1.1rem;\n font-weight: 700;\n color: var(--mj-text-primary);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.mj-file-viewer-badges[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n margin-top: 3px;\n}\n\n.mj-file-badge[_ngcontent-%COMP%] {\n font-size: 0.72rem;\n font-weight: 600;\n padding: 2px 7px;\n border-radius: 9999px;\n}\n\n.mj-file-badge--type[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-sunken, #e2e8f0);\n color: var(--mj-text-secondary);\n}\n\n.mj-file-badge--size[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-sunken, #e2e8f0);\n color: var(--mj-text-secondary);\n}\n\n.mj-file-badge--status[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 12%, transparent);\n color: var(--mj-brand-primary);\n}\n\n.mj-file-viewer-header-right[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n flex-shrink: 0;\n}\n\n\n.mj-file-viewer-body[_ngcontent-%COMP%] {\n display: flex;\n flex: 1;\n overflow: hidden;\n position: relative;\n}\n\n\n.mj-file-viewer-stage[_ngcontent-%COMP%] {\n flex: 1;\n position: relative;\n overflow: auto;\n background: var(--mj-bg-surface-sunken, #f1f5f9);\n display: flex;\n align-items: center;\n justify-content: center;\n min-width: 0;\n}\n\n.mj-file-viewer-loading-overlay[_ngcontent-%COMP%] {\n position: absolute;\n inset: 0;\n z-index: 10;\n background: var(--mj-bg-surface-sunken, #f1f5f9);\n display: flex;\n align-items: center;\n justify-content: center;\n transition: opacity 0.3s ease;\n}\n\n.mj-file-media--hidden[_ngcontent-%COMP%] {\n opacity: 0;\n pointer-events: none;\n}\n\n.mj-file-media-image-box[_ngcontent-%COMP%] {\n width: 100%;\n height: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 24px;\n}\n\n.mj-file-media-image-box[_ngcontent-%COMP%] img[_ngcontent-%COMP%] {\n max-width: 100%;\n max-height: 100%;\n object-fit: contain;\n border-radius: var(--mj-radius-md, 8px);\n box-shadow: var(--mj-shadow-lg, 0 10px 15px -3px rgba(0, 0, 0, 0.2));\n}\n\n.mj-file-media-frame-box[_ngcontent-%COMP%] {\n width: 100%;\n height: 100%;\n}\n\n.mj-file-media-frame-box[_ngcontent-%COMP%] iframe[_ngcontent-%COMP%] {\n width: 100%;\n height: 100%;\n border: none;\n}\n\n.mj-file-media-video-box[_ngcontent-%COMP%] {\n width: 100%;\n height: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 24px;\n}\n\n.mj-file-media-video-box[_ngcontent-%COMP%] video[_ngcontent-%COMP%] {\n max-width: 100%;\n max-height: 100%;\n border-radius: var(--mj-radius-md, 8px);\n box-shadow: var(--mj-shadow-lg, 0 10px 15px -3px rgba(0, 0, 0, 0.2));\n}\n\n.mj-file-media-audio-box[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n gap: 20px;\n padding: 40px;\n background: var(--mj-bg-surface);\n border-radius: var(--mj-radius-lg, 12px);\n box-shadow: var(--mj-shadow-md, 0 4px 6px -1px rgba(0, 0, 0, 0.1));\n}\n\n.mj-file-audio-visual-icon[_ngcontent-%COMP%] {\n font-size: 3rem;\n color: var(--mj-status-warning, #f59e0b);\n}\n\n.mj-file-media-text-box[_ngcontent-%COMP%] {\n width: 100%;\n height: 100%;\n padding: 20px;\n overflow: auto;\n background: var(--mj-bg-surface);\n}\n\n.mj-file-media-text-box[_ngcontent-%COMP%] pre[_ngcontent-%COMP%] {\n margin: 0;\n font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;\n font-size: 0.85rem;\n line-height: 1.5;\n white-space: pre-wrap;\n word-break: break-word;\n}\n\n.mj-file-viewer-fallback[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n text-align: center;\n padding: 40px;\n background: var(--mj-bg-surface);\n border-radius: var(--mj-radius-lg, 12px);\n border: 1px solid var(--mj-border-default);\n max-width: 480px;\n}\n\n.mj-file-fallback-icon[_ngcontent-%COMP%] {\n font-size: 3.5rem;\n margin-bottom: 14px;\n}\n\n.mj-file-viewer-fallback[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n margin: 0 0 6px 0;\n font-size: 1.1rem;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.mj-file-fallback-meta[_ngcontent-%COMP%] {\n margin: 0 0 10px 0;\n font-size: 0.82rem;\n color: var(--mj-text-secondary);\n}\n\n.mj-file-fallback-desc[_ngcontent-%COMP%] {\n margin: 0 0 18px 0;\n font-size: 0.88rem;\n color: var(--mj-text-secondary);\n line-height: 1.4;\n}\n\n\n.mj-file-viewer-sidebar[_ngcontent-%COMP%] {\n width: 380px;\n flex-shrink: 0;\n border-left: 1px solid var(--mj-border-default);\n background: var(--mj-bg-surface);\n display: flex;\n flex-direction: column;\n overflow: hidden;\n}\n\n.mj-file-sidebar-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 14px 18px;\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.mj-file-sidebar-header[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 0.95rem;\n font-weight: 700;\n color: var(--mj-text-primary);\n}\n\n.mj-file-sidebar-close[_ngcontent-%COMP%] {\n background: none;\n border: none;\n font-size: 0.95rem;\n color: var(--mj-text-secondary);\n cursor: pointer;\n padding: 4px;\n}\n\n.mj-file-sidebar-close[_ngcontent-%COMP%]:hover {\n color: var(--mj-text-primary);\n}\n\n.mj-file-sidebar-content[_ngcontent-%COMP%] {\n flex: 1;\n overflow-y: auto;\n padding: 16px;\n display: flex;\n flex-direction: column;\n gap: 16px;\n}\n\n.mj-file-sidebar-card[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-sunken, #f8fafc);\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-md, 8px);\n padding: 12px 14px;\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.mj-file-meta-row[_ngcontent-%COMP%] {\n display: flex;\n align-items: flex-start;\n justify-content: space-between;\n font-size: 0.83rem;\n gap: 8px;\n}\n\n.mj-file-meta-label[_ngcontent-%COMP%] {\n color: var(--mj-text-secondary);\n font-weight: 500;\n flex-shrink: 0;\n}\n\n.mj-file-meta-val[_ngcontent-%COMP%] {\n color: var(--mj-text-primary);\n text-align: right;\n word-break: break-all;\n}\n\n.mj-file-sidebar-section[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 10px;\n}\n\n.mj-file-sidebar-section-title[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 0.88rem;\n font-weight: 700;\n color: var(--mj-text-primary);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.mj-file-relationship-wrapper[_ngcontent-%COMP%] {\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-md, 8px);\n overflow: hidden;\n min-height: 250px;\n}\n\n\n.mj-file-standard-form-wrapper[_ngcontent-%COMP%] {\n height: 100%;\n display: flex;\n flex-direction: column;\n overflow: auto;\n}\n\n.mj-file-mode-switch-bar[_ngcontent-%COMP%] {\n padding: 8px 16px;\n background: var(--mj-bg-surface);\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n\n.mj-file-media-office-box[_ngcontent-%COMP%] {\n position: absolute;\n inset: 0;\n display: flex;\n flex-direction: column;\n min-height: 0;\n}\n.mj-file-media-office-box[_ngcontent-%COMP%] > mj-docx-preview[_ngcontent-%COMP%], \n.mj-file-media-office-box[_ngcontent-%COMP%] > mj-xlsx-preview[_ngcontent-%COMP%] {\n flex: 1;\n min-height: 0;\n display: block;\n}"] }); }
644
714
  };
645
715
  MJFileFormComponentExtended = MJFileFormComponentExtended_1 = __decorate([
646
716
  RegisterClass(BaseFormComponent, 'MJ: Files', 100)
@@ -648,7 +718,7 @@ MJFileFormComponentExtended = MJFileFormComponentExtended_1 = __decorate([
648
718
  export { MJFileFormComponentExtended };
649
719
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MJFileFormComponentExtended, [{
650
720
  type: Component,
651
- args: [{ standalone: false, selector: 'mj-file-form-extended', template: "@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", styles: [".k-pane {\n background-color: var(--mj-bg-surface);\n}\n\n.content-margin {\n margin: 10px;\n}\n\n\na {\n font-size: 14px;\n font-weight: bolder;\n}\n\n.tab-header-icon {\n margin-right: 5px;\n}\n\n.record-form {\n display: block;\n flex-direction: column;\n background-color: var(--mj-bg-surface);\n padding: 0;\n min-height: 100vh;\n}\n\n.record-form-group {\n margin-top: 0px;\n background-color: var(--mj-bg-surface);\n}\n\nbutton {\n margin-right: 5px;\n}\n\n.record-form h2 {\n margin-bottom: 10px;\n}\n\n.k-splitter {\n border-width: 0px;\n}\n\n.record-form-row {\n display: grid;\n grid-template-columns: auto 1fr;\n align-items: start;\n gap: 10px;\n margin-bottom: 12px;\n padding-top: 5px;\n padding-bottom: 5px;\n}\n\n.record-form .record-form-row > :first-child {\n font-weight: bold;\n padding-right: 10px;\n}\n\n.record-form .record-form-row > span {\n white-space: pre-line;\n max-height: 300px;\n overflow: auto;\n}\n\n@media (min-width: 768px) {\n .record-form-row {\n flex-direction: row;\n align-items: center;\n }\n\n .record-form-row label {\n width: 240px;\n margin-bottom: 0;\n }\n}\n\n/* Collapsible Panel Styles */\n.form-panels-container {\n display: flex;\n flex-direction: column;\n gap: 16px;\n padding: 16px;\n background-color: var(--mj-bg-surface);\n}\n\n/* All field sections take full width */\n.form-panels-container > .form-card {\n width: 100%;\n}\n\n/* Related entity grid container - responsive layout */\n.form-panels-container .related-entity-grid {\n display: grid;\n grid-template-columns: 1fr;\n gap: 16px;\n width: 100%;\n}\n\n/* Responsive multi-column layout for related entities on wider screens */\n@media (min-width: 1400px) {\n .form-panels-container .related-entity-grid {\n grid-template-columns: repeat(auto-fit, minmax(600px, 1fr));\n }\n}\n\n.form-card {\n background: var(--mj-bg-surface-card);\n border-radius: 8px;\n box-shadow: 0 2px 4px var(--mj-shadow-sm);\n overflow: hidden;\n}\n\n.collapsible-card {\n overflow: hidden;\n}\n\n.collapsible-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 20px 24px;\n background: var(--mj-bg-surface-card);\n border-bottom: 2px solid var(--mj-border-default);\n cursor: pointer;\n user-select: none;\n transition: all 0.3s ease;\n}\n\n.collapsible-header:hover {\n background: var(--mj-bg-surface-sunken);\n border-bottom-color: var(--mj-brand-primary);\n}\n\n.collapsible-title {\n display: flex;\n align-items: center;\n gap: 12px;\n flex: 1;\n}\n\n.collapsible-title i {\n font-size: 20px;\n color: var(--mj-brand-primary);\n}\n\n.collapsible-title h3 {\n margin: 0;\n font-size: 18px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.collapsible-header .collapse-icon {\n color: var(--mj-text-muted);\n transition: transform 0.3s ease;\n}\n\n.collapsible-body {\n max-height: 2000px;\n overflow: hidden;\n transition: max-height 0.4s ease, padding 0.4s ease, opacity 0.3s ease;\n opacity: 1;\n}\n\n.collapsible-body.collapsed {\n max-height: 0;\n padding: 0;\n opacity: 0;\n}\n\n.form-body {\n padding: 24px;\n}\n\n/* Related Entity Sections - Visual Distinction */\n.form-card.related-entity {\n background: var(--mj-bg-surface-card);\n border-left: 3px solid var(--mj-brand-primary);\n}\n\n.form-card.related-entity .collapsible-header {\n background: var(--mj-bg-surface-sunken);\n}\n\n.form-card.related-entity .collapsible-header:hover {\n background: var(--mj-bg-surface-card);\n border-bottom-color: var(--mj-brand-primary);\n}\n\n.form-card.related-entity .collapsible-title i {\n color: var(--mj-brand-primary);\n}\n\n/* Section Controls */\n.form-section-controls {\n display: flex;\n gap: 10px;\n padding: 14px 18px;\n background: var(--mj-bg-surface-card);\n border-bottom: 2px solid var(--mj-border-default);\n align-items: center;\n flex-wrap: wrap;\n box-shadow: 0 1px 3px var(--mj-shadow-sm);\n}\n\n.form-section-controls .control-group {\n display: flex;\n gap: 8px;\n align-items: center;\n}\n\n.form-section-controls button {\n padding: 8px 14px;\n font-size: 13px;\n border: 1px solid var(--mj-border-strong);\n background: var(--mj-bg-surface-card);\n color: var(--mj-text-secondary);\n border-radius: 6px;\n cursor: pointer;\n transition: all 0.2s;\n margin-right: 0;\n display: inline-flex;\n align-items: center;\n gap: 6px;\n font-weight: 500;\n}\n\n.form-section-controls button:hover {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n border-color: var(--mj-brand-primary);\n transform: translateY(-1px);\n box-shadow: 0 2px 4px var(--mj-shadow-md);\n}\n\n.form-section-controls button:active {\n transform: translateY(0);\n}\n\n.form-section-controls button i {\n margin-right: 0;\n font-size: 14px;\n}\n\n.form-section-controls .section-search {\n padding: 8px 14px;\n font-size: 13px;\n border: 1px solid var(--mj-border-strong);\n border-radius: 6px;\n width: 240px;\n transition: all 0.2s;\n background: var(--mj-bg-surface);\n color: var(--mj-text-primary);\n}\n\n.form-section-controls .section-search:focus {\n outline: none;\n border-color: var(--mj-brand-primary);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n}\n\n.form-section-controls .section-search::placeholder {\n color: var(--mj-text-muted);\n font-style: italic;\n}\n\n.form-section-controls .section-count {\n font-size: 13px;\n color: var(--mj-text-muted);\n margin-left: auto;\n font-weight: 500;\n}\n\n/* Hidden sections for search filter */\n.form-card.search-hidden {\n display: none;\n}\n\n/* Section count badge */\n.section-count-badge {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n padding: 2px 8px;\n border-radius: 12px;\n font-size: 12px;\n font-weight: 600;\n}\n\n/* Search highlighting in section names */\n.collapsible-title h3 .search-highlight {\n background-color: var(--mj-status-warning);\n color: var(--mj-text-primary);\n padding: 2px 4px;\n border-radius: 3px;\n font-weight: 700;\n}\n\n/* Row count badge in section headers */\n.collapsible-title .row-count-badge {\n background: var(--mj-status-success);\n color: var(--mj-text-inverse);\n padding: 3px 6px 2px 6px;\n border-radius: 12px;\n font-size: 12px;\n font-weight: 600;\n margin-left: 8px;\n vertical-align: middle;\n position: relative;\n top: -2px;\n display: inline-block;\n line-height: 1;\n}\n\n/* Gray badge for zero rows (loaded but empty) */\n.collapsible-title .row-count-badge.zero-rows {\n background: var(--mj-text-muted);\n}\n", ".mj-file-viewer-container {\n display: flex;\n flex-direction: column;\n height: 100%;\n width: 100%;\n background: var(--mj-bg-surface);\n overflow: hidden;\n}\n\n/* Header */\n.mj-file-viewer-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 12px 20px;\n background: var(--mj-bg-surface);\n border-bottom: 1px solid var(--mj-border-default);\n gap: 16px;\n flex-shrink: 0;\n}\n\n.mj-file-viewer-header-left {\n display: flex;\n align-items: center;\n gap: 14px;\n min-width: 0;\n}\n\n.mj-file-viewer-icon-box {\n width: 38px;\n height: 38px;\n border-radius: var(--mj-radius-md, 8px);\n background: var(--mj-bg-surface-sunken, #f1f5f9);\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 1.25rem;\n flex-shrink: 0;\n}\n\n.mj-file-color-pdf { color: var(--mj-status-danger, #ef4444); }\n.mj-file-color-image { color: var(--mj-status-success, #10b981); }\n.mj-file-color-video { color: var(--mj-status-purple, #8b5cf6); }\n.mj-file-color-audio { color: var(--mj-status-warning, #f59e0b); }\n.mj-file-color-text { color: var(--mj-status-info, #3b82f6); }\n.mj-file-color-generic { color: var(--mj-text-muted, #94a3b8); }\n\n.mj-file-viewer-title-group {\n display: flex;\n flex-direction: column;\n min-width: 0;\n}\n\n.mj-file-viewer-title {\n margin: 0;\n font-size: 1.1rem;\n font-weight: 700;\n color: var(--mj-text-primary);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.mj-file-viewer-badges {\n display: flex;\n align-items: center;\n gap: 8px;\n margin-top: 3px;\n}\n\n.mj-file-badge {\n font-size: 0.72rem;\n font-weight: 600;\n padding: 2px 7px;\n border-radius: 9999px;\n}\n\n.mj-file-badge--type {\n background: var(--mj-bg-surface-sunken, #e2e8f0);\n color: var(--mj-text-secondary);\n}\n\n.mj-file-badge--size {\n background: var(--mj-bg-surface-sunken, #e2e8f0);\n color: var(--mj-text-secondary);\n}\n\n.mj-file-badge--status {\n background: color-mix(in srgb, var(--mj-brand-primary) 12%, transparent);\n color: var(--mj-brand-primary);\n}\n\n.mj-file-viewer-header-right {\n display: flex;\n align-items: center;\n gap: 8px;\n flex-shrink: 0;\n}\n\n/* Body / Split View */\n.mj-file-viewer-body {\n display: flex;\n flex: 1;\n overflow: hidden;\n position: relative;\n}\n\n/* Stage (Media Preview) */\n.mj-file-viewer-stage {\n flex: 1;\n position: relative;\n overflow: auto;\n background: var(--mj-bg-surface-sunken, #0f172a);\n display: flex;\n align-items: center;\n justify-content: center;\n min-width: 0;\n}\n\n.mj-file-viewer-loading-overlay {\n position: absolute;\n inset: 0;\n z-index: 10;\n background: var(--mj-bg-surface-sunken, #0f172a);\n display: flex;\n align-items: center;\n justify-content: center;\n transition: opacity 0.3s ease;\n}\n\n.mj-file-media--hidden {\n opacity: 0;\n pointer-events: none;\n}\n\n.mj-file-media-image-box {\n width: 100%;\n height: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 24px;\n}\n\n.mj-file-media-image-box img {\n max-width: 100%;\n max-height: 100%;\n object-fit: contain;\n border-radius: var(--mj-radius-md, 8px);\n box-shadow: var(--mj-shadow-lg, 0 10px 15px -3px rgba(0, 0, 0, 0.2));\n}\n\n.mj-file-media-frame-box {\n width: 100%;\n height: 100%;\n}\n\n.mj-file-media-frame-box iframe {\n width: 100%;\n height: 100%;\n border: none;\n}\n\n.mj-file-media-video-box {\n width: 100%;\n height: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 24px;\n}\n\n.mj-file-media-video-box video {\n max-width: 100%;\n max-height: 100%;\n border-radius: var(--mj-radius-md, 8px);\n box-shadow: var(--mj-shadow-lg, 0 10px 15px -3px rgba(0, 0, 0, 0.2));\n}\n\n.mj-file-media-audio-box {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n gap: 20px;\n padding: 40px;\n background: var(--mj-bg-surface);\n border-radius: var(--mj-radius-lg, 12px);\n box-shadow: var(--mj-shadow-md, 0 4px 6px -1px rgba(0, 0, 0, 0.1));\n}\n\n.mj-file-audio-visual-icon {\n font-size: 3rem;\n color: var(--mj-status-warning, #f59e0b);\n}\n\n.mj-file-media-text-box {\n width: 100%;\n height: 100%;\n padding: 20px;\n overflow: auto;\n background: var(--mj-bg-surface);\n}\n\n.mj-file-media-text-box pre {\n margin: 0;\n font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;\n font-size: 0.85rem;\n line-height: 1.5;\n white-space: pre-wrap;\n word-break: break-word;\n}\n\n.mj-file-viewer-fallback {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n text-align: center;\n padding: 40px;\n background: var(--mj-bg-surface);\n border-radius: var(--mj-radius-lg, 12px);\n border: 1px solid var(--mj-border-default);\n max-width: 480px;\n}\n\n.mj-file-fallback-icon {\n font-size: 3.5rem;\n margin-bottom: 14px;\n}\n\n.mj-file-viewer-fallback h3 {\n margin: 0 0 6px 0;\n font-size: 1.1rem;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.mj-file-fallback-meta {\n margin: 0 0 10px 0;\n font-size: 0.82rem;\n color: var(--mj-text-secondary);\n}\n\n.mj-file-fallback-desc {\n margin: 0 0 18px 0;\n font-size: 0.88rem;\n color: var(--mj-text-secondary);\n line-height: 1.4;\n}\n\n/* Sidebar */\n.mj-file-viewer-sidebar {\n width: 380px;\n flex-shrink: 0;\n border-left: 1px solid var(--mj-border-default);\n background: var(--mj-bg-surface);\n display: flex;\n flex-direction: column;\n overflow: hidden;\n}\n\n.mj-file-sidebar-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 14px 18px;\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.mj-file-sidebar-header h3 {\n margin: 0;\n font-size: 0.95rem;\n font-weight: 700;\n color: var(--mj-text-primary);\n}\n\n.mj-file-sidebar-close {\n background: none;\n border: none;\n font-size: 0.95rem;\n color: var(--mj-text-secondary);\n cursor: pointer;\n padding: 4px;\n}\n\n.mj-file-sidebar-close:hover {\n color: var(--mj-text-primary);\n}\n\n.mj-file-sidebar-content {\n flex: 1;\n overflow-y: auto;\n padding: 16px;\n display: flex;\n flex-direction: column;\n gap: 16px;\n}\n\n.mj-file-sidebar-card {\n background: var(--mj-bg-surface-sunken, #f8fafc);\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-md, 8px);\n padding: 12px 14px;\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.mj-file-meta-row {\n display: flex;\n align-items: flex-start;\n justify-content: space-between;\n font-size: 0.83rem;\n gap: 8px;\n}\n\n.mj-file-meta-label {\n color: var(--mj-text-secondary);\n font-weight: 500;\n flex-shrink: 0;\n}\n\n.mj-file-meta-val {\n color: var(--mj-text-primary);\n text-align: right;\n word-break: break-all;\n}\n\n.mj-file-sidebar-section {\n display: flex;\n flex-direction: column;\n gap: 10px;\n}\n\n.mj-file-sidebar-section-title {\n margin: 0;\n font-size: 0.88rem;\n font-weight: 700;\n color: var(--mj-text-primary);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.mj-file-relationship-wrapper {\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-md, 8px);\n overflow: hidden;\n min-height: 250px;\n}\n\n/* Standard Form Wrapper */\n.mj-file-standard-form-wrapper {\n height: 100%;\n display: flex;\n flex-direction: column;\n overflow: auto;\n}\n\n.mj-file-mode-switch-bar {\n padding: 8px 16px;\n background: var(--mj-bg-surface);\n border-bottom: 1px solid var(--mj-border-default);\n}\n"] }]
721
+ args: [{ standalone: false, selector: 'mj-file-form-extended', template: "@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", styles: [".k-pane {\n background-color: var(--mj-bg-surface);\n}\n\n.content-margin {\n margin: 10px;\n}\n\n\na {\n font-size: 14px;\n font-weight: bolder;\n}\n\n.tab-header-icon {\n margin-right: 5px;\n}\n\n.record-form {\n display: block;\n flex-direction: column;\n background-color: var(--mj-bg-surface);\n padding: 0;\n min-height: 100vh;\n}\n\n.record-form-group {\n margin-top: 0px;\n background-color: var(--mj-bg-surface);\n}\n\nbutton {\n margin-right: 5px;\n}\n\n.record-form h2 {\n margin-bottom: 10px;\n}\n\n.k-splitter {\n border-width: 0px;\n}\n\n.record-form-row {\n display: grid;\n grid-template-columns: auto 1fr;\n align-items: start;\n gap: 10px;\n margin-bottom: 12px;\n padding-top: 5px;\n padding-bottom: 5px;\n}\n\n.record-form .record-form-row > :first-child {\n font-weight: bold;\n padding-right: 10px;\n}\n\n.record-form .record-form-row > span {\n white-space: pre-line;\n max-height: 300px;\n overflow: auto;\n}\n\n@media (min-width: 768px) {\n .record-form-row {\n flex-direction: row;\n align-items: center;\n }\n\n .record-form-row label {\n width: 240px;\n margin-bottom: 0;\n }\n}\n\n/* Collapsible Panel Styles */\n.form-panels-container {\n display: flex;\n flex-direction: column;\n gap: 16px;\n padding: 16px;\n background-color: var(--mj-bg-surface);\n}\n\n/* All field sections take full width */\n.form-panels-container > .form-card {\n width: 100%;\n}\n\n/* Related entity grid container - responsive layout */\n.form-panels-container .related-entity-grid {\n display: grid;\n grid-template-columns: 1fr;\n gap: 16px;\n width: 100%;\n}\n\n/* Responsive multi-column layout for related entities on wider screens */\n@media (min-width: 1400px) {\n .form-panels-container .related-entity-grid {\n grid-template-columns: repeat(auto-fit, minmax(600px, 1fr));\n }\n}\n\n.form-card {\n background: var(--mj-bg-surface-card);\n border-radius: 8px;\n box-shadow: 0 2px 4px var(--mj-shadow-sm);\n overflow: hidden;\n}\n\n.collapsible-card {\n overflow: hidden;\n}\n\n.collapsible-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 20px 24px;\n background: var(--mj-bg-surface-card);\n border-bottom: 2px solid var(--mj-border-default);\n cursor: pointer;\n user-select: none;\n transition: all 0.3s ease;\n}\n\n.collapsible-header:hover {\n background: var(--mj-bg-surface-sunken);\n border-bottom-color: var(--mj-brand-primary);\n}\n\n.collapsible-title {\n display: flex;\n align-items: center;\n gap: 12px;\n flex: 1;\n}\n\n.collapsible-title i {\n font-size: 20px;\n color: var(--mj-brand-primary);\n}\n\n.collapsible-title h3 {\n margin: 0;\n font-size: 18px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.collapsible-header .collapse-icon {\n color: var(--mj-text-muted);\n transition: transform 0.3s ease;\n}\n\n.collapsible-body {\n max-height: 2000px;\n overflow: hidden;\n transition: max-height 0.4s ease, padding 0.4s ease, opacity 0.3s ease;\n opacity: 1;\n}\n\n.collapsible-body.collapsed {\n max-height: 0;\n padding: 0;\n opacity: 0;\n}\n\n.form-body {\n padding: 24px;\n}\n\n/* Related Entity Sections - Visual Distinction */\n.form-card.related-entity {\n background: var(--mj-bg-surface-card);\n border-left: 3px solid var(--mj-brand-primary);\n}\n\n.form-card.related-entity .collapsible-header {\n background: var(--mj-bg-surface-sunken);\n}\n\n.form-card.related-entity .collapsible-header:hover {\n background: var(--mj-bg-surface-card);\n border-bottom-color: var(--mj-brand-primary);\n}\n\n.form-card.related-entity .collapsible-title i {\n color: var(--mj-brand-primary);\n}\n\n/* Section Controls */\n.form-section-controls {\n display: flex;\n gap: 10px;\n padding: 14px 18px;\n background: var(--mj-bg-surface-card);\n border-bottom: 2px solid var(--mj-border-default);\n align-items: center;\n flex-wrap: wrap;\n box-shadow: 0 1px 3px var(--mj-shadow-sm);\n}\n\n.form-section-controls .control-group {\n display: flex;\n gap: 8px;\n align-items: center;\n}\n\n.form-section-controls button {\n padding: 8px 14px;\n font-size: 13px;\n border: 1px solid var(--mj-border-strong);\n background: var(--mj-bg-surface-card);\n color: var(--mj-text-secondary);\n border-radius: 6px;\n cursor: pointer;\n transition: all 0.2s;\n margin-right: 0;\n display: inline-flex;\n align-items: center;\n gap: 6px;\n font-weight: 500;\n}\n\n.form-section-controls button:hover {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n border-color: var(--mj-brand-primary);\n transform: translateY(-1px);\n box-shadow: 0 2px 4px var(--mj-shadow-md);\n}\n\n.form-section-controls button:active {\n transform: translateY(0);\n}\n\n.form-section-controls button i {\n margin-right: 0;\n font-size: 14px;\n}\n\n.form-section-controls .section-search {\n padding: 8px 14px;\n font-size: 13px;\n border: 1px solid var(--mj-border-strong);\n border-radius: 6px;\n width: 240px;\n transition: all 0.2s;\n background: var(--mj-bg-surface);\n color: var(--mj-text-primary);\n}\n\n.form-section-controls .section-search:focus {\n outline: none;\n border-color: var(--mj-brand-primary);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n}\n\n.form-section-controls .section-search::placeholder {\n color: var(--mj-text-muted);\n font-style: italic;\n}\n\n.form-section-controls .section-count {\n font-size: 13px;\n color: var(--mj-text-muted);\n margin-left: auto;\n font-weight: 500;\n}\n\n/* Hidden sections for search filter */\n.form-card.search-hidden {\n display: none;\n}\n\n/* Section count badge */\n.section-count-badge {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n padding: 2px 8px;\n border-radius: 12px;\n font-size: 12px;\n font-weight: 600;\n}\n\n/* Search highlighting in section names */\n.collapsible-title h3 .search-highlight {\n background-color: var(--mj-status-warning);\n color: var(--mj-text-primary);\n padding: 2px 4px;\n border-radius: 3px;\n font-weight: 700;\n}\n\n/* Row count badge in section headers */\n.collapsible-title .row-count-badge {\n background: var(--mj-status-success);\n color: var(--mj-text-inverse);\n padding: 3px 6px 2px 6px;\n border-radius: 12px;\n font-size: 12px;\n font-weight: 600;\n margin-left: 8px;\n vertical-align: middle;\n position: relative;\n top: -2px;\n display: inline-block;\n line-height: 1;\n}\n\n/* Gray badge for zero rows (loaded but empty) */\n.collapsible-title .row-count-badge.zero-rows {\n background: var(--mj-text-muted);\n}\n", ".mj-file-viewer-container {\n display: flex;\n flex-direction: column;\n height: 100%;\n width: 100%;\n background: var(--mj-bg-surface);\n overflow: hidden;\n}\n\n/* Header */\n.mj-file-viewer-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 12px 20px;\n background: var(--mj-bg-surface);\n border-bottom: 1px solid var(--mj-border-default);\n gap: 16px;\n flex-shrink: 0;\n}\n\n.mj-file-viewer-header-left {\n display: flex;\n align-items: center;\n gap: 14px;\n min-width: 0;\n}\n\n.mj-file-viewer-icon-box {\n width: 38px;\n height: 38px;\n border-radius: var(--mj-radius-md, 8px);\n background: var(--mj-bg-surface-sunken, #f1f5f9);\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 1.25rem;\n flex-shrink: 0;\n}\n\n.mj-file-color-pdf { color: var(--mj-status-danger, #ef4444); }\n.mj-file-color-image { color: var(--mj-status-success, #10b981); }\n.mj-file-color-video { color: var(--mj-status-purple, #8b5cf6); }\n.mj-file-color-audio { color: var(--mj-status-warning, #f59e0b); }\n.mj-file-color-text { color: var(--mj-status-info, #3b82f6); }\n.mj-file-color-generic { color: var(--mj-text-muted, #94a3b8); }\n.mj-file-color-word { color: var(--mj-status-info, #2b579a); }\n.mj-file-color-excel { color: var(--mj-status-success, #217346); }\n\n.mj-file-viewer-title-group {\n display: flex;\n flex-direction: column;\n min-width: 0;\n}\n\n.mj-file-viewer-title {\n margin: 0;\n font-size: 1.1rem;\n font-weight: 700;\n color: var(--mj-text-primary);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.mj-file-viewer-badges {\n display: flex;\n align-items: center;\n gap: 8px;\n margin-top: 3px;\n}\n\n.mj-file-badge {\n font-size: 0.72rem;\n font-weight: 600;\n padding: 2px 7px;\n border-radius: 9999px;\n}\n\n.mj-file-badge--type {\n background: var(--mj-bg-surface-sunken, #e2e8f0);\n color: var(--mj-text-secondary);\n}\n\n.mj-file-badge--size {\n background: var(--mj-bg-surface-sunken, #e2e8f0);\n color: var(--mj-text-secondary);\n}\n\n.mj-file-badge--status {\n background: color-mix(in srgb, var(--mj-brand-primary) 12%, transparent);\n color: var(--mj-brand-primary);\n}\n\n.mj-file-viewer-header-right {\n display: flex;\n align-items: center;\n gap: 8px;\n flex-shrink: 0;\n}\n\n/* Body / Split View */\n.mj-file-viewer-body {\n display: flex;\n flex: 1;\n overflow: hidden;\n position: relative;\n}\n\n/* Stage (Media Preview) */\n.mj-file-viewer-stage {\n flex: 1;\n position: relative;\n overflow: auto;\n background: var(--mj-bg-surface-sunken, #f1f5f9);\n display: flex;\n align-items: center;\n justify-content: center;\n min-width: 0;\n}\n\n.mj-file-viewer-loading-overlay {\n position: absolute;\n inset: 0;\n z-index: 10;\n background: var(--mj-bg-surface-sunken, #f1f5f9);\n display: flex;\n align-items: center;\n justify-content: center;\n transition: opacity 0.3s ease;\n}\n\n.mj-file-media--hidden {\n opacity: 0;\n pointer-events: none;\n}\n\n.mj-file-media-image-box {\n width: 100%;\n height: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 24px;\n}\n\n.mj-file-media-image-box img {\n max-width: 100%;\n max-height: 100%;\n object-fit: contain;\n border-radius: var(--mj-radius-md, 8px);\n box-shadow: var(--mj-shadow-lg, 0 10px 15px -3px rgba(0, 0, 0, 0.2));\n}\n\n.mj-file-media-frame-box {\n width: 100%;\n height: 100%;\n}\n\n.mj-file-media-frame-box iframe {\n width: 100%;\n height: 100%;\n border: none;\n}\n\n.mj-file-media-video-box {\n width: 100%;\n height: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 24px;\n}\n\n.mj-file-media-video-box video {\n max-width: 100%;\n max-height: 100%;\n border-radius: var(--mj-radius-md, 8px);\n box-shadow: var(--mj-shadow-lg, 0 10px 15px -3px rgba(0, 0, 0, 0.2));\n}\n\n.mj-file-media-audio-box {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n gap: 20px;\n padding: 40px;\n background: var(--mj-bg-surface);\n border-radius: var(--mj-radius-lg, 12px);\n box-shadow: var(--mj-shadow-md, 0 4px 6px -1px rgba(0, 0, 0, 0.1));\n}\n\n.mj-file-audio-visual-icon {\n font-size: 3rem;\n color: var(--mj-status-warning, #f59e0b);\n}\n\n.mj-file-media-text-box {\n width: 100%;\n height: 100%;\n padding: 20px;\n overflow: auto;\n background: var(--mj-bg-surface);\n}\n\n.mj-file-media-text-box pre {\n margin: 0;\n font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;\n font-size: 0.85rem;\n line-height: 1.5;\n white-space: pre-wrap;\n word-break: break-word;\n}\n\n.mj-file-viewer-fallback {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n text-align: center;\n padding: 40px;\n background: var(--mj-bg-surface);\n border-radius: var(--mj-radius-lg, 12px);\n border: 1px solid var(--mj-border-default);\n max-width: 480px;\n}\n\n.mj-file-fallback-icon {\n font-size: 3.5rem;\n margin-bottom: 14px;\n}\n\n.mj-file-viewer-fallback h3 {\n margin: 0 0 6px 0;\n font-size: 1.1rem;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.mj-file-fallback-meta {\n margin: 0 0 10px 0;\n font-size: 0.82rem;\n color: var(--mj-text-secondary);\n}\n\n.mj-file-fallback-desc {\n margin: 0 0 18px 0;\n font-size: 0.88rem;\n color: var(--mj-text-secondary);\n line-height: 1.4;\n}\n\n/* Sidebar */\n.mj-file-viewer-sidebar {\n width: 380px;\n flex-shrink: 0;\n border-left: 1px solid var(--mj-border-default);\n background: var(--mj-bg-surface);\n display: flex;\n flex-direction: column;\n overflow: hidden;\n}\n\n.mj-file-sidebar-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 14px 18px;\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.mj-file-sidebar-header h3 {\n margin: 0;\n font-size: 0.95rem;\n font-weight: 700;\n color: var(--mj-text-primary);\n}\n\n.mj-file-sidebar-close {\n background: none;\n border: none;\n font-size: 0.95rem;\n color: var(--mj-text-secondary);\n cursor: pointer;\n padding: 4px;\n}\n\n.mj-file-sidebar-close:hover {\n color: var(--mj-text-primary);\n}\n\n.mj-file-sidebar-content {\n flex: 1;\n overflow-y: auto;\n padding: 16px;\n display: flex;\n flex-direction: column;\n gap: 16px;\n}\n\n.mj-file-sidebar-card {\n background: var(--mj-bg-surface-sunken, #f8fafc);\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-md, 8px);\n padding: 12px 14px;\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.mj-file-meta-row {\n display: flex;\n align-items: flex-start;\n justify-content: space-between;\n font-size: 0.83rem;\n gap: 8px;\n}\n\n.mj-file-meta-label {\n color: var(--mj-text-secondary);\n font-weight: 500;\n flex-shrink: 0;\n}\n\n.mj-file-meta-val {\n color: var(--mj-text-primary);\n text-align: right;\n word-break: break-all;\n}\n\n.mj-file-sidebar-section {\n display: flex;\n flex-direction: column;\n gap: 10px;\n}\n\n.mj-file-sidebar-section-title {\n margin: 0;\n font-size: 0.88rem;\n font-weight: 700;\n color: var(--mj-text-primary);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.mj-file-relationship-wrapper {\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-md, 8px);\n overflow: hidden;\n min-height: 250px;\n}\n\n/* Standard Form Wrapper */\n.mj-file-standard-form-wrapper {\n height: 100%;\n display: flex;\n flex-direction: column;\n overflow: auto;\n}\n\n.mj-file-mode-switch-bar {\n padding: 8px 16px;\n background: var(--mj-bg-surface);\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n/* Word and Excel previews fill the stage; the shared components scroll inside it */\n.mj-file-media-office-box {\n position: absolute;\n inset: 0;\n display: flex;\n flex-direction: column;\n min-height: 0;\n}\n.mj-file-media-office-box > mj-docx-preview,\n.mj-file-media-office-box > mj-xlsx-preview {\n flex: 1;\n min-height: 0;\n display: block;\n}\n"] }]
652
722
  }], null, null); })();
653
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(MJFileFormComponentExtended, { className: "MJFileFormComponentExtended", filePath: "src/lib/custom/Files/file-form.component.ts", lineNumber: 58 }); })();
723
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(MJFileFormComponentExtended, { className: "MJFileFormComponentExtended", filePath: "src/lib/custom/Files/file-form.component.ts", lineNumber: 59 }); })();
654
724
  //# sourceMappingURL=file-form.component.js.map