@solidxai/core-ui 0.1.20-beta.1 → 0.1.21-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (180) hide show
  1. package/dist/components/common/FileReaderExt.d.ts.map +1 -1
  2. package/dist/components/common/FileReaderExt.js +22 -11
  3. package/dist/components/common/FileReaderExt.js.map +1 -1
  4. package/dist/components/common/FileReaderExt.tsx +27 -14
  5. package/dist/components/common/SocialMediaLogin.d.ts.map +1 -1
  6. package/dist/components/common/SocialMediaLogin.js +1 -1
  7. package/dist/components/common/SocialMediaLogin.js.map +1 -1
  8. package/dist/components/common/SocialMediaLogin.tsx +50 -19
  9. package/dist/components/common/solid-export.css +75 -0
  10. package/dist/components/core/common/SolidGenericImport/SolidImport.module.css +71 -0
  11. package/dist/components/core/form/SolidFormView.d.ts.map +1 -1
  12. package/dist/components/core/form/SolidFormView.js +14 -0
  13. package/dist/components/core/form/SolidFormView.js.map +1 -1
  14. package/dist/components/core/form/SolidFormView.tsx +13 -0
  15. package/dist/components/core/form/fields/SolidMediaMultipleField.js +3 -3
  16. package/dist/components/core/form/fields/SolidMediaMultipleField.js.map +1 -1
  17. package/dist/components/core/form/fields/SolidMediaMultipleField.tsx +3 -3
  18. package/dist/components/core/form/fields/SolidMediaSingleField.js +2 -2
  19. package/dist/components/core/form/fields/SolidMediaSingleField.js.map +1 -1
  20. package/dist/components/core/form/fields/SolidMediaSingleField.tsx +2 -2
  21. package/dist/components/core/list/columns/SolidMediaMultipleColumn.js +2 -2
  22. package/dist/components/core/list/columns/SolidMediaMultipleColumn.js.map +1 -1
  23. package/dist/components/core/list/columns/SolidMediaMultipleColumn.tsx +4 -4
  24. package/dist/components/core/list/columns/SolidMediaSingleColumn.js +1 -1
  25. package/dist/components/core/list/columns/SolidMediaSingleColumn.js.map +1 -1
  26. package/dist/components/core/list/columns/SolidMediaSingleColumn.tsx +3 -3
  27. package/dist/components/core/solid-agent/SolidAgentChat.d.ts +3 -1
  28. package/dist/components/core/solid-agent/SolidAgentChat.d.ts.map +1 -1
  29. package/dist/components/core/solid-agent/SolidAgentChat.js +150 -22
  30. package/dist/components/core/solid-agent/SolidAgentChat.js.map +1 -1
  31. package/dist/components/core/solid-agent/SolidAgentChat.tsx +76 -15
  32. package/dist/components/core/solid-agent/SolidAgentEmbedded.d.ts +2 -0
  33. package/dist/components/core/solid-agent/SolidAgentEmbedded.d.ts.map +1 -1
  34. package/dist/components/core/solid-agent/SolidAgentEmbedded.js +4 -4
  35. package/dist/components/core/solid-agent/SolidAgentEmbedded.js.map +1 -1
  36. package/dist/components/core/solid-agent/SolidAgentEmbedded.tsx +7 -1
  37. package/dist/components/core/solid-agent/SolidAgentHost.d.ts.map +1 -1
  38. package/dist/components/core/solid-agent/SolidAgentHost.js +79 -1
  39. package/dist/components/core/solid-agent/SolidAgentHost.js.map +1 -1
  40. package/dist/components/core/solid-agent/SolidAgentHost.tsx +69 -2
  41. package/dist/components/core/solid-agent/agentEvents.d.ts.map +1 -1
  42. package/dist/components/core/solid-agent/agentEvents.js +1 -3
  43. package/dist/components/core/solid-agent/agentEvents.js.map +1 -1
  44. package/dist/components/core/solid-agent/agentEvents.ts +5 -3
  45. package/dist/components/core/solid-agent/client/agentPublicEvents.d.ts +88 -0
  46. package/dist/components/core/solid-agent/client/agentPublicEvents.d.ts.map +1 -0
  47. package/dist/components/core/solid-agent/client/agentPublicEvents.js +26 -0
  48. package/dist/components/core/solid-agent/client/agentPublicEvents.js.map +1 -0
  49. package/dist/components/core/solid-agent/client/agentPublicEvents.ts +66 -0
  50. package/dist/components/core/solid-agent/client/agentRuntime.d.ts +18 -3
  51. package/dist/components/core/solid-agent/client/agentRuntime.d.ts.map +1 -1
  52. package/dist/components/core/solid-agent/client/agentRuntime.js +173 -31
  53. package/dist/components/core/solid-agent/client/agentRuntime.js.map +1 -1
  54. package/dist/components/core/solid-agent/client/agentRuntime.ts +126 -16
  55. package/dist/components/core/solid-agent/client/agentSocket.d.ts +3 -0
  56. package/dist/components/core/solid-agent/client/agentSocket.d.ts.map +1 -1
  57. package/dist/components/core/solid-agent/client/agentSocket.js +19 -1
  58. package/dist/components/core/solid-agent/client/agentSocket.js.map +1 -1
  59. package/dist/components/core/solid-agent/client/agentSocket.ts +11 -1
  60. package/dist/components/core/solid-agent/client/beforeUserMessageSend.d.ts +9 -0
  61. package/dist/components/core/solid-agent/client/beforeUserMessageSend.d.ts.map +1 -0
  62. package/dist/components/core/solid-agent/client/beforeUserMessageSend.js +53 -0
  63. package/dist/components/core/solid-agent/client/beforeUserMessageSend.js.map +1 -0
  64. package/dist/components/core/solid-agent/client/beforeUserMessageSend.ts +26 -0
  65. package/dist/components/core/solid-agent/embed/AgentEmbeddingPanel.d.ts.map +1 -1
  66. package/dist/components/core/solid-agent/embed/AgentEmbeddingPanel.js +4 -3
  67. package/dist/components/core/solid-agent/embed/AgentEmbeddingPanel.js.map +1 -1
  68. package/dist/components/core/solid-agent/embed/AgentEmbeddingPanel.tsx +4 -2
  69. package/dist/components/core/solid-agent/embed/agentEmbedProtocol.d.ts +29 -0
  70. package/dist/components/core/solid-agent/embed/agentEmbedProtocol.d.ts.map +1 -1
  71. package/dist/components/core/solid-agent/embed/agentEmbedProtocol.js +45 -2
  72. package/dist/components/core/solid-agent/embed/agentEmbedProtocol.js.map +1 -1
  73. package/dist/components/core/solid-agent/embed/agentEmbedProtocol.ts +49 -2
  74. package/dist/components/core/solid-agent/embed/agentEmbedSamples.d.ts +1 -0
  75. package/dist/components/core/solid-agent/embed/agentEmbedSamples.d.ts.map +1 -1
  76. package/dist/components/core/solid-agent/embed/agentEmbedSamples.js +2 -1
  77. package/dist/components/core/solid-agent/embed/agentEmbedSamples.js.map +1 -1
  78. package/dist/components/core/solid-agent/embed/agentEmbedSamples.ts +15 -1
  79. package/dist/components/core/solid-agent/types.d.ts +13 -0
  80. package/dist/components/core/solid-agent/types.d.ts.map +1 -1
  81. package/dist/components/core/solid-agent/types.js.map +1 -1
  82. package/dist/components/core/solid-agent/types.ts +8 -0
  83. package/dist/components/core/solid-agent/useAgentChat.d.ts +1 -1
  84. package/dist/components/core/solid-agent/useAgentChat.d.ts.map +1 -1
  85. package/dist/components/core/solid-agent/useAgentChat.js +7 -4
  86. package/dist/components/core/solid-agent/useAgentChat.js.map +1 -1
  87. package/dist/components/core/solid-agent/useAgentChat.ts +9 -5
  88. package/dist/components/core/solid-agent/widgets/DefaultUserMessageChatWidget.d.ts.map +1 -1
  89. package/dist/components/core/solid-agent/widgets/DefaultUserMessageChatWidget.js +12 -4
  90. package/dist/components/core/solid-agent/widgets/DefaultUserMessageChatWidget.js.map +1 -1
  91. package/dist/components/core/solid-agent/widgets/DefaultUserMessageChatWidget.tsx +18 -0
  92. package/dist/components/core/solid-agent/widgets/SolidNavigationIntentChatWidget.d.ts +4 -0
  93. package/dist/components/core/solid-agent/widgets/SolidNavigationIntentChatWidget.d.ts.map +1 -0
  94. package/dist/components/core/solid-agent/widgets/SolidNavigationIntentChatWidget.js +30 -0
  95. package/dist/components/core/solid-agent/widgets/SolidNavigationIntentChatWidget.js.map +1 -0
  96. package/dist/components/core/solid-agent/widgets/SolidNavigationIntentChatWidget.tsx +41 -0
  97. package/dist/components/core/solid-agent/widgets/solidChatWidgets.module.css +39 -0
  98. package/dist/components/shad-cn-ui/SolidCodeEditor.d.ts +2 -1
  99. package/dist/components/shad-cn-ui/SolidCodeEditor.d.ts.map +1 -1
  100. package/dist/components/shad-cn-ui/SolidCodeEditor.js +3 -2
  101. package/dist/components/shad-cn-ui/SolidCodeEditor.js.map +1 -1
  102. package/dist/components/shad-cn-ui/SolidCodeEditor.tsx +3 -0
  103. package/dist/helpers/adminViewRefresh.d.ts +13 -0
  104. package/dist/helpers/adminViewRefresh.d.ts.map +1 -0
  105. package/dist/helpers/adminViewRefresh.js +14 -0
  106. package/dist/helpers/adminViewRefresh.js.map +1 -0
  107. package/dist/helpers/adminViewRefresh.ts +26 -0
  108. package/dist/helpers/eventBus.d.ts +1 -0
  109. package/dist/helpers/eventBus.d.ts.map +1 -1
  110. package/dist/helpers/eventBus.js +1 -0
  111. package/dist/helpers/eventBus.js.map +1 -1
  112. package/dist/helpers/eventBus.ts +1 -0
  113. package/dist/helpers/fileTypeIcon.d.ts.map +1 -1
  114. package/dist/helpers/fileTypeIcon.js +4 -1
  115. package/dist/helpers/fileTypeIcon.js.map +1 -1
  116. package/dist/helpers/fileTypeIcon.tsx +15 -0
  117. package/dist/helpers/registry.d.ts.map +1 -1
  118. package/dist/helpers/registry.js +2 -0
  119. package/dist/helpers/registry.js.map +1 -1
  120. package/dist/helpers/registry.ts +2 -0
  121. package/dist/helpers/routePaths.d.ts +13 -0
  122. package/dist/helpers/routePaths.d.ts.map +1 -1
  123. package/dist/helpers/routePaths.js +39 -0
  124. package/dist/helpers/routePaths.js.map +1 -1
  125. package/dist/helpers/routePaths.ts +48 -0
  126. package/dist/redux/features/agentSlice.d.ts +2 -1
  127. package/dist/redux/features/agentSlice.d.ts.map +1 -1
  128. package/dist/redux/features/agentSlice.js +2 -2
  129. package/dist/redux/features/agentSlice.js.map +1 -1
  130. package/dist/redux/features/agentSlice.ts +8 -3
  131. package/dist/resources/solid-custom.css +42 -0
  132. package/dist/resources/solid-tailwind-generated.css +1 -1
  133. package/dist/routes/pages/admin/core/AgentHubModuleField.css +15 -0
  134. package/dist/routes/pages/admin/core/AgentHubModuleField.d.ts +22 -0
  135. package/dist/routes/pages/admin/core/AgentHubModuleField.d.ts.map +1 -0
  136. package/dist/routes/pages/admin/core/AgentHubModuleField.js +42 -0
  137. package/dist/routes/pages/admin/core/AgentHubModuleField.js.map +1 -0
  138. package/dist/routes/pages/admin/core/AgentHubModuleField.tsx +54 -0
  139. package/dist/routes/pages/admin/core/AgentHubTagsField.d.ts +3 -1
  140. package/dist/routes/pages/admin/core/AgentHubTagsField.d.ts.map +1 -1
  141. package/dist/routes/pages/admin/core/AgentHubTagsField.js +3 -3
  142. package/dist/routes/pages/admin/core/AgentHubTagsField.js.map +1 -1
  143. package/dist/routes/pages/admin/core/AgentHubTagsField.tsx +7 -3
  144. package/dist/routes/pages/admin/core/AgentRegistryEditorPage.d.ts.map +1 -1
  145. package/dist/routes/pages/admin/core/AgentRegistryEditorPage.js +37 -29
  146. package/dist/routes/pages/admin/core/AgentRegistryEditorPage.js.map +1 -1
  147. package/dist/routes/pages/admin/core/AgentRegistryEditorPage.tsx +12 -6
  148. package/dist/routes/pages/admin/core/AgentSkillRegistryEditorPage.d.ts.map +1 -1
  149. package/dist/routes/pages/admin/core/AgentSkillRegistryEditorPage.js +22 -15
  150. package/dist/routes/pages/admin/core/AgentSkillRegistryEditorPage.js.map +1 -1
  151. package/dist/routes/pages/admin/core/AgentSkillRegistryEditorPage.tsx +17 -7
  152. package/dist/routes/pages/admin/core/AgentToolRegistryEditorPage.d.ts.map +1 -1
  153. package/dist/routes/pages/admin/core/AgentToolRegistryEditorPage.js +21 -15
  154. package/dist/routes/pages/admin/core/AgentToolRegistryEditorPage.js.map +1 -1
  155. package/dist/routes/pages/admin/core/AgentToolRegistryEditorPage.tsx +16 -9
  156. package/dist/routes/pages/admin/core/ArchivedChatterMessagesPage.d.ts.map +1 -1
  157. package/dist/routes/pages/admin/core/ArchivedChatterMessagesPage.js +149 -37
  158. package/dist/routes/pages/admin/core/ArchivedChatterMessagesPage.js.map +1 -1
  159. package/dist/routes/pages/admin/core/ArchivedChatterMessagesPage.tsx +283 -73
  160. package/dist/routes/pages/admin/core/CardPage.d.ts.map +1 -1
  161. package/dist/routes/pages/admin/core/CardPage.js +9 -1
  162. package/dist/routes/pages/admin/core/CardPage.js.map +1 -1
  163. package/dist/routes/pages/admin/core/CardPage.tsx +9 -1
  164. package/dist/routes/pages/admin/core/KanbanPage.d.ts.map +1 -1
  165. package/dist/routes/pages/admin/core/KanbanPage.js +9 -1
  166. package/dist/routes/pages/admin/core/KanbanPage.js.map +1 -1
  167. package/dist/routes/pages/admin/core/KanbanPage.tsx +9 -1
  168. package/dist/routes/pages/admin/core/ListPage.d.ts.map +1 -1
  169. package/dist/routes/pages/admin/core/ListPage.js +10 -1
  170. package/dist/routes/pages/admin/core/ListPage.js.map +1 -1
  171. package/dist/routes/pages/admin/core/ListPage.tsx +10 -1
  172. package/dist/routes/pages/admin/core/TreePage.d.ts.map +1 -1
  173. package/dist/routes/pages/admin/core/TreePage.js +9 -1
  174. package/dist/routes/pages/admin/core/TreePage.js.map +1 -1
  175. package/dist/routes/pages/admin/core/TreePage.tsx +9 -1
  176. package/dist/routes/pages/embed/AgentEmbedPage.d.ts.map +1 -1
  177. package/dist/routes/pages/embed/AgentEmbedPage.js +67 -4
  178. package/dist/routes/pages/embed/AgentEmbedPage.js.map +1 -1
  179. package/dist/routes/pages/embed/AgentEmbedPage.tsx +61 -4
  180. package/package.json +1 -1
@@ -60,6 +60,8 @@ import {
60
60
  SolidDialogTitle
61
61
  } from "../../shad-cn-ui/SolidDialog";
62
62
  import { SolidHeaderRequestStatus } from "../../common/SolidHeaderRequestStatus";
63
+ import { eventBus } from "../../../helpers/eventBus";
64
+ import { ADMIN_VIEW_REFRESH_REQUESTED, isMatchingAdminViewRefresh, type AdminViewRefreshRequest } from "../../../helpers/adminViewRefresh";
63
65
 
64
66
  export type SolidFormViewProps = {
65
67
  moduleName: string;
@@ -1166,6 +1168,17 @@ const SolidFormView = (params: SolidFormViewProps) => {
1166
1168
  } = useGetSolidEntityByIdQuery({ id: params.id, qs: formViewDataQs }, {
1167
1169
  skip: params.id === 'new'
1168
1170
  });
1171
+ useEffect(() => eventBus.on<AdminViewRefreshRequest>(ADMIN_VIEW_REFRESH_REQUESTED, (request) => {
1172
+ if (params.id === 'new') return;
1173
+ if (isMatchingAdminViewRefresh(request, {
1174
+ moduleName: params.moduleName,
1175
+ modelName: params.modelName,
1176
+ viewName: "form",
1177
+ recordId: params.id,
1178
+ })) {
1179
+ void refetchSolidFormViewData();
1180
+ }
1181
+ }), [params.id, params.moduleName, params.modelName, refetchSolidFormViewData]);
1169
1182
  useEffect(() => {
1170
1183
  if (params.id !== 'new') {
1171
1184
  refetchSolidFormViewData()
@@ -407,7 +407,7 @@ export var DefaultMediaMultipleFormEditWidget = function (_a) {
407
407
  return (_jsxs("div", { style: readOnlyPermission === true ? { filter: 'opacity(50%)', pointerEvents: 'none' } : {}, children: [_jsxs("div", { className: "".concat(styles.fieldWrapper, " relative"), children: [showFieldLabel != false &&
408
408
  _jsxs("label", { htmlFor: fieldLayoutInfo.attrs.name, className: "".concat(styles.fieldLabel, " form-field-label"), children: [fieldLabel, fieldMetadata.required && _jsx("span", { className: "text-red-500", children: " *" }), _jsx(SolidFieldTooltip, { fieldContext: fieldContext })] }), _jsxs("div", { className: "relative", children: [_jsxs("div", __assign({}, getRootProps(), { className: "solid-dropzone-wrapper", children: [_jsx("input", __assign({}, getInputProps())), _jsx(DropzonePlaceholder, { mediaTypes: fieldMetadata.mediaTypes, mediaAllowedExtensions: fieldMetadata.mediaAllowedExtensions, mediaMaxSizeKb: fieldMetadata.mediaMaxSizeKb })] })), isFormFieldValid(formik, fieldLayoutInfo.attrs.name) && (_jsx("div", { className: "absolute mt-1", children: _jsx(SolidMessage, { severity: "error", text: (_p = formik === null || formik === void 0 ? void 0 : formik.errors[fieldLayoutInfo.attrs.name]) === null || _p === void 0 ? void 0 : _p.toString() }) }))] }), fileSizeError &&
409
409
  _jsx(SolidMessage, { severity: "error", text: fileSizeError === null || fileSizeError === void 0 ? void 0 : fileSizeError.toString() })] }), fileDetails.length > 0 &&
410
- _jsx("div", { className: "".concat(styles.mediaAttachmentCard, " mt-4"), children: _jsxs("div", { className: "".concat(styles.mediaAttachmentRow, " flex items-center md:gap-2"), children: [_jsx(FileReaderExt, { fileDetails: fileDetails[0] }), _jsxs("div", { className: "".concat(styles.mediaAttachmentMeta, " w-full"), children: [_jsxs("div", { className: "flex items-start justify-between gap-4", children: [_jsx("button", { type: "button", className: styles.mediaAttachmentName, onClick: function () { return handleFileView(fileDetails[0]); }, title: fileDetails[0].name, children: fileDetails[0].name }), _jsxs("div", { className: "".concat(styles.mediaAttachmentActions, " flex items-center gap-2"), children: [_jsx("button", { type: "button", className: "solid-file-icon-btn", disabled: isFieldDisabled || isFieldReadonly, "aria-label": "Download file", onClick: function (event) {
410
+ _jsx("div", { className: "".concat(styles.mediaAttachmentCard, " mt-4"), children: _jsxs("div", { className: "".concat(styles.mediaAttachmentRow, " flex items-center gap-2"), children: [_jsx(FileReaderExt, { fileDetails: fileDetails[0] }), _jsxs("div", { className: "".concat(styles.mediaAttachmentMeta, " w-full"), children: [_jsxs("div", { className: "flex items-start justify-between gap-4", children: [_jsx("button", { type: "button", className: styles.mediaAttachmentName, onClick: function () { return handleFileView(fileDetails[0]); }, title: fileDetails[0].name, children: fileDetails[0].name }), _jsxs("div", { className: "".concat(styles.mediaAttachmentActions, " flex items-center gap-2"), children: [_jsx("button", { type: "button", className: "solid-file-icon-btn", disabled: isFieldDisabled || isFieldReadonly, "aria-label": "Download file", onClick: function (event) {
411
411
  var _a, _b;
412
412
  event.preventDefault();
413
413
  event.stopPropagation();
@@ -416,7 +416,7 @@ export var DefaultMediaMultipleFormEditWidget = function (_a) {
416
416
  _jsxs("div", { className: "flex items-center mt-1", children: [_jsxs("p", { className: "m-0", children: [fileDetails.length - 1, " items"] }), _jsx("div", { children: _jsx(SolidButton, { type: "button", size: "sm", variant: "ghost", onClick: function () { return setShowAllFiles(true); }, children: "View" }) })] }), _jsxs(SolidDialog, { open: isShowAllFiles, onOpenChange: setShowAllFiles, style: { minWidth: 450 }, children: [_jsxs(SolidDialogHeader, { children: [_jsx(SolidDialogTitle, { children: "Items Uploaded" }), _jsx(SolidDialogClose, {})] }), _jsx(SolidDialogBody, { children: fileDetails.length > 1 &&
417
417
  fileDetails.map(function (file, index) {
418
418
  var fileId = file.fileKey;
419
- return (_jsx("div", { className: index === fileDetails.length - 1 ? "" : "mb-3", children: _jsx("div", { className: styles.mediaAttachmentCard, children: _jsxs("div", { className: "".concat(styles.mediaAttachmentRow, " flex items-center md:gap-2"), children: [_jsx(FileReaderExt, { fileDetails: file }), _jsxs("div", { className: "".concat(styles.mediaAttachmentMeta, " w-full"), children: [_jsxs("div", { className: "flex items-start justify-between gap-4", children: [_jsx("button", { type: "button", className: styles.mediaAttachmentName, onClick: function () { return handleFileView(file); }, title: file.name, children: file.name }), _jsxs("div", { className: "".concat(styles.mediaAttachmentActions, " flex items-center gap-2"), children: [_jsx("button", { type: "button", className: "solid-file-icon-btn", disabled: isFieldDisabled || isFieldReadonly, "aria-label": "Download file", onClick: function (event) {
419
+ return (_jsx("div", { className: index === fileDetails.length - 1 ? "" : "mb-3", children: _jsx("div", { className: styles.mediaAttachmentCard, children: _jsxs("div", { className: "".concat(styles.mediaAttachmentRow, " flex items-center gap-2"), children: [_jsx(FileReaderExt, { fileDetails: file }), _jsxs("div", { className: "".concat(styles.mediaAttachmentMeta, " w-full"), children: [_jsxs("div", { className: "flex items-start justify-between gap-4", children: [_jsx("button", { type: "button", className: styles.mediaAttachmentName, onClick: function () { return handleFileView(file); }, title: file.name, children: file.name }), _jsxs("div", { className: "".concat(styles.mediaAttachmentActions, " flex items-center gap-2"), children: [_jsx("button", { type: "button", className: "solid-file-icon-btn", disabled: isFieldDisabled || isFieldReadonly, "aria-label": "Download file", onClick: function (event) {
420
420
  event.preventDefault();
421
421
  event.stopPropagation();
422
422
  downloadMediaFile(file === null || file === void 0 ? void 0 : file.fileUrl, file === null || file === void 0 ? void 0 : file.name);
@@ -498,7 +498,7 @@ export var DefaultMediaMultipleFormViewWidget = function (_a) {
498
498
  };
499
499
  var renderMediaFileCard = function (file, className) {
500
500
  if (className === void 0) { className = ""; }
501
- return (_jsx("div", { className: "".concat(styles.mediaAttachmentCard, " ").concat(className).trim(), children: _jsxs("div", { className: "".concat(styles.mediaAttachmentRow, " flex items-center md:gap-2"), children: [_jsx(FileReaderExt, { fileDetails: file }), _jsxs("div", { className: "".concat(styles.mediaAttachmentMeta, " w-full"), children: [_jsxs("div", { className: "flex items-start justify-between gap-4", children: [_jsx("button", { type: "button", className: styles.mediaAttachmentName, onClick: function () { return handleFileView(file); }, title: file.name, children: file.name }), _jsx("div", { className: "".concat(styles.mediaAttachmentActions, " flex items-center md:gap-2"), children: _jsx("button", { type: "button", className: "solid-file-icon-btn", "aria-label": "Download file", onClick: function (event) {
501
+ return (_jsx("div", { className: "".concat(styles.mediaAttachmentCard, " ").concat(className).trim(), children: _jsxs("div", { className: "".concat(styles.mediaAttachmentRow, " flex items-center gap-2"), children: [_jsx(FileReaderExt, { fileDetails: file }), _jsxs("div", { className: "".concat(styles.mediaAttachmentMeta, " w-full"), children: [_jsxs("div", { className: "flex items-start justify-between gap-4", children: [_jsx("button", { type: "button", className: styles.mediaAttachmentName, onClick: function () { return handleFileView(file); }, title: file.name, children: file.name }), _jsx("div", { className: "".concat(styles.mediaAttachmentActions, " flex items-center md:gap-2"), children: _jsx("button", { type: "button", className: "solid-file-icon-btn", "aria-label": "Download file", onClick: function (event) {
502
502
  event.preventDefault();
503
503
  event.stopPropagation();
504
504
  downloadMediaFile(file === null || file === void 0 ? void 0 : file.fileUrl, file === null || file === void 0 ? void 0 : file.name);
@@ -1 +1 @@
1
- {"version":3,"file":"SolidMediaMultipleField.js","sourceRoot":"","sources":["../../../../../src/components/core/form/fields/SolidMediaMultipleField.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,mDAAmD,CAAC;AAExF,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AACxE,OAAO,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAC9D,OAAO,EACL,WAAW,EACX,eAAe,EACf,gBAAgB,EAChB,iBAAiB,EACjB,iBAAiB,EACjB,oBAAoB,EACpB,gBAAgB,GACjB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAEhE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,KAAK,GAAG,MAAM,KAAK,CAAC;AAE3B,OAAO,EAAE,aAAa,EAAE,MAAM,6CAA6C,CAAC;AAC5E,OAAO,oBAAoB,EAAE,EAAE,qCAAqC,EAAE,MAAM,0CAA0C,CAAC;AACvH,OAAO,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAC;AAC1E,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AAEzF,OAAO,EAAE,iBAAiB,EAAE,MAAM,iDAAiD,CAAC;AACpF,OAAO,EAAE,cAAc,EAAE,MAAM,sCAAsC,CAAC;AACtE,OAAO,EAAE,SAAS,EAAE,MAAM,uCAAuC,CAAC;AAClE,OAAO,MAAM,MAAM,0BAA0B,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAE5E;IAKI,iCAAY,YAA6B,EAAE,eAAwE,EAC/G,eAAyC;QAJrC;;;;;WAA8B;QAC9B;;;;;WAAyE;QACzE;;;;;WAA0C;QAG9C,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;QACvC,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;IAC3C,CAAC;;;;;eAED,UAAe,KAAU,EAAE,QAAkB;YACzC,IAAM,eAAe,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;YAChD,aAAa;YACb,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBACnC,aAAa;gBACb,IAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;gBACtB,IAAI,IAAI,YAAY,IAAI,EAAE;oBACtB,QAAQ,CAAC,MAAM,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;iBACrD;aACJ;QACL,CAAC;;;;;;eAED;YACI,IAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,UAAC,CAAM,IAAK,OAAA,CAAC,EAAD,CAAC,CAAC,CAAA;YACjK,OAAO,SAAS,CAAC;QACrB,CAAC;;;;;;eAED;;YAEI,IAAM,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC;YACtD,IAAM,eAAe,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;YAChD,IAAM,UAAU,GAAG,MAAA,eAAe,CAAC,KAAK,mCAAI,aAAa,CAAC,WAAW,CAAC;YAEtE,IAAI,MAA2C,CAAC,CAAE,sDAAsD;YACxG,IAAI,aAAa,CAAC,QAAQ,EAAE;gBACxB,kEAAkE;gBAClE,MAAM,GAAG,GAAG,CAAC,KAAK,EAAE;qBACf,EAAE,CACC,GAAG,CAAC,KAAK,EAAiB;qBACrB,QAAQ,CAAC,cAAc,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;qBACnD,IAAI,CACD,cAAc,CAAC,WAAW,EAC1B,cAAc,CAAC,mBAAmB,CAAC,UAAU,CAAC,EAC9C,UAAC,KAAK;oBACF,OAAA,KAAK,YAAY,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ;gBAAlD,CAAkD,CAAC,0BAA0B;iBACpF,CACR;qBACA,GAAG,CAAC,CAAC,EAAE,cAAc,CAAC,oBAAoB,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,qCAAqC;aACtG;iBAAM;gBACH,gEAAgE;gBAChE,MAAM,GAAG,GAAG,CAAC,KAAK,EAAE;qBACf,EAAE,CACC,GAAG,CAAC,KAAK,EAAiB;qBACrB,QAAQ,EAAE,CAAC,wBAAwB;qBACnC,IAAI,CACD,cAAc,CAAC,WAAW,EAC1B,cAAc,CAAC,mBAAmB,CAAC,UAAU,CAAC,EAC9C,UAAC,KAAK;oBACF,OAAA,KAAK,KAAK,IAAI,IAAI,aAAa;wBAC/B,KAAK,KAAK,SAAS,IAAI,kBAAkB;wBACzC,KAAK,YAAY,IAAI,IAAI,aAAa;wBACtC,OAAO,KAAK,KAAK,QAAQ;gBAHzB,CAGyB,CAAC,eAAe;iBAChD,CACR;qBACA,QAAQ,EAAE,CAAC,8BAA8B;qBACzC,IAAI,CACD,cAAc,CAAC,iBAAiB,EAChC,cAAc,CAAC,iCAAiC,CAAC,UAAU,CAAC,EAC5D,UAAC,KAAK,IAAK,OAAA,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAA7D,CAA6D,CAC3E,CAAC;aACT;YAGD,OAAO,MAAM,CAAC;QAClB,CAAC;;;;;;eAED,UAAO,MAAoB;;YACvB,IAAM,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC;YACtD,IAAM,eAAe,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;YAChD,IAAM,gBAAgB,GAAG,UAAC,MAAW,EAAE,SAAiB,IAAK,OAAA,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,EAArD,CAAqD,CAAC;YACnH,IAAM,SAAS,GAAG,CAAA,MAAA,eAAe,CAAC,KAAK,0CAAE,SAAS,KAAI,wBAAwB,CAAC;YAE/E,IAAI,UAAU,GAAG,eAAe,CAAC,KAAK,CAAC,UAAU,CAAC;YAClD,IAAI,UAAU,GAAG,eAAe,CAAC,KAAK,CAAC,UAAU,CAAC;YAClD,IAAI,CAAC,UAAU,EAAE;gBACb,UAAU,GAAG,oCAAoC,CAAC;aACrD;YACD,IAAI,CAAC,UAAU,EAAE;gBACb,UAAU,GAAG,oCAAoC,CAAC;aACrD;YACD,IAAM,QAAQ,GAAW,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC;YAGpD,OAAO,CACH,4BACI,eAAK,SAAS,EAAE,SAAS,aACpB,QAAQ,KAAK,MAAM;4BAChB,IAAI,CAAC,yBAAyB,CAAC,UAAU,EAAE,MAAM,CAAC,EAErD,QAAQ,KAAK,MAAM;4BAChB,4BACK,UAAU;oCACP,IAAI,CAAC,yBAAyB,CAAC,UAAU,EAAE,MAAM,CAAC,GAEvD,IAEL,GACP,CACN,CAAC;QACN,CAAC;;;;;;eAED,UAA0B,MAAc,EAAE,MAAoB;YAC1D,IAAI,aAAa,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC;YAClD,IAAM,WAAW,GAAmC;gBAChD,MAAM,EAAE,MAAM;gBACd,YAAY,EAAE,IAAI,CAAC,YAAY;gBAC/B,eAAe,EAAE,IAAI,CAAC,eAAe;gBACrC,eAAe,EAAE,IAAI,CAAC,eAAe;aACxC,CAAA;YACD,OAAO,CACH,4BACK,aAAa,IAAI,KAAC,aAAa,eAAK,WAAW,EAAI,GACrD,CACN,CAAA;QACL,CAAC;;IACL,8BAAC;AAAD,CAAC,AA/HD,IA+HC;;AAGD,MAAM,CAAC,IAAM,kCAAkC,GAAG,UAAC,EAA0F;;QAAxF,MAAM,YAAA,EAAE,YAAY,kBAAA,EAAE,eAAe,qBAAA,EAAE,eAAe,qBAAA;IAGvG,IAAM,aAAa,GAAG,YAAY,CAAC,aAAa,CAAC;IACjD,IAAM,eAAe,GAAG,YAAY,CAAC,KAAK,CAAC;IAC3C,IAAM,SAAS,GAAG,CAAA,MAAA,eAAe,CAAC,KAAK,0CAAE,SAAS,KAAI,wBAAwB,CAAC;IAC/E,IAAM,UAAU,GAAG,MAAA,eAAe,CAAC,KAAK,CAAC,KAAK,mCAAI,aAAa,CAAC,WAAW,CAAC;IAC5E,IAAM,QAAQ,GAAW,YAAY,CAAC,QAAQ,CAAC;IAC/C,IAAM,gBAAgB,GAAG,MAAA,eAAe,CAAC,KAAK,CAAC,WAAW,mCAAI,aAAa,CAAC,WAAW,CAAC;IACxF,IAAM,qBAAqB,GAAG,YAAY,CAAC,qBAAqB,CAAC;IACjE,IAAM,cAAc,GAAG,MAAA,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAE,KAAK,0CAAE,SAAS,CAAC;IACzD,IAAM,kBAAkB,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,QAAQ,CAAC;IAC1G,IAAM,aAAa,GAAG,MAAA,eAAe,CAAC,KAAK,0CAAE,QAAQ,CAAC;IACtD,IAAM,aAAa,GAAG,MAAA,eAAe,CAAC,KAAK,0CAAE,QAAQ,CAAC;IACtD,IAAM,YAAY,GAAG,MAAA,MAAA,MAAA,qBAAqB,CAAC,IAAI,CAAC,SAAS,0CAAE,MAAM,0CAAE,KAAK,0CAAE,QAAQ,CAAC;IACnF,IAAM,YAAY,GAAG,MAAA,MAAA,MAAA,qBAAqB,CAAC,IAAI,CAAC,SAAS,0CAAE,MAAM,0CAAE,KAAK,0CAAE,QAAQ,CAAC;IACnF,IAAM,eAAe,GAAG,YAAY,IAAI,aAAa,CAAC;IACtD,IAAM,eAAe,GAAG,YAAY,IAAI,aAAa,IAAI,kBAAkB,CAAC;IAEtE,IAAA,KAA4D,QAAQ,CAAC,KAAK,CAAC,EAA1E,0BAA0B,QAAA,EAAE,2BAA2B,QAAmB,CAAC;IAC5E,IAAA,KAAgC,QAAQ,CAAoB,EAAE,CAAC,EAA9D,WAAW,QAAA,EAAE,cAAc,QAAmC,CAAC;IAChE,IAAA,KAAsC,QAAQ,CAAgB,IAAI,CAAC,EAAlE,cAAc,QAAA,EAAE,iBAAiB,QAAiC,CAAC;IACpE,IAAA,KAAoC,QAAQ,CAAgB,IAAI,CAAC,EAAhE,aAAa,QAAA,EAAE,gBAAgB,QAAiC,CAAC;IACxE,IAAM,WAAW,GAAG,qBAAqB,aAArB,qBAAqB,uBAArB,qBAAqB,CAAE,IAAI,CAAC;IAEhD,IAAM,cAAc,GAAG,UAAC,IAAY;QAChC,OAAO,IAAI,IAAI,IAAI,GAAG,IAAI;YACtB,CAAC,CAAC,UAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAK;YAC3C,CAAC,CAAC,UAAG,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAK,CAAC;IAC3C,CAAC,CAAC;IACK,IAAA,WAAW,GAAI,sBAAsB,EAAE,GAA5B,CAA6B;IAC/C,IAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;IAC/B,SAAS,CAAC;QACN,IAAM,UAAU,GAAG,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,MAAM,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC9D,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE;YACvD,cAAc,CAAC,EAAE,CAAC,CAAC;YACnB,OAAO;SACV;QAED,IAAM,UAAU,GAAa,EAAE,CAAC;QAChC,IAAM,OAAO,GAAG,UAAU;aACrB,GAAG,CAAC,UAAC,IAAgB;YAClB,IAAI,IAAI,YAAY,IAAI,EAAE;gBACtB,IAAM,SAAO,GAAG,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;gBAC1C,UAAU,CAAC,IAAI,CAAC,SAAO,CAAC,CAAC;gBACzB,OAAO;oBACH,IAAI,EAAE,IAAI,CAAC,IAAI;oBACf,IAAI,EAAE,IAAI,CAAC,IAAI;oBACf,IAAI,EAAE,IAAI,CAAC,IAAI;oBACf,OAAO,EAAE,IAAI;oBACb,OAAO,EAAE,kBAAkB,CAAC,IAAI,CAAC;oBACjC,OAAO,WAAA;iBACV,CAAC;aACL;YAED,IAAM,OAAO,GAAG,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,SAAS,CAAC;YAChC,IAAI,CAAC,OAAO,EAAE;gBACV,OAAO,IAAI,CAAC;aACf;YAED,OAAO;gBACH,IAAI,EAAE,IAAI,CAAC,gBAAgB;gBAC3B,IAAI,EAAE,IAAI,CAAC,QAAQ;gBACnB,IAAI,EAAE,IAAI,CAAC,QAAQ;gBACnB,OAAO,EAAE,mBAAmB,CAAC,IAAI,CAAC;gBAClC,OAAO,EAAE,kBAAkB,CAAC,IAAI,CAAC;gBACjC,OAAO,SAAA;aACV,CAAC;QACN,CAAC,CAAC;aACD,MAAM,CAAC,UAAC,MAAM,IAAgC,OAAA,MAAM,KAAK,IAAI,EAAf,CAAe,CAAC,CAAC;QAEpE,cAAc,CAAC,OAAO,CAAC,CAAC;QAExB,OAAO;YACH,UAAU,CAAC,OAAO,CAAC,UAAC,OAAO,IAAK,OAAA,GAAG,CAAC,eAAe,CAAC,OAAO,CAAC,EAA5B,CAA4B,CAAC,CAAC;QAClE,CAAC,CAAC;IACN,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;IAEhD,IAAM,gBAAgB,GAAG,UAAC,aAAoB;QAC1C,IAAI,CAAC,aAAa,CAAC,MAAM;YAAE,OAAO;QAClC,gBAAgB,CAAC,IAAI,CAAC,CAAC;QACvB,IAAM,aAAa,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,MAAM,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC3E,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC;YAC3C,CAAC,CAAC,EAAE,CAAC;QACT,aAAa,CAAC,OAAO,CAAC,UAAC,IAAI;YACvB,IAAM,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;YAChC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;QAC/B,CAAC,CAAC,CAAC;QAEH,YAAY,CAAC,QAAQ,CACjB;YACI,MAAM,EAAE;gBACJ,IAAI,EAAE,eAAe,CAAC,KAAK,CAAC,IAAI;gBAChC,KAAK,kCAAM,aAAa,SAAK,aAAa,OAAC;gBAC3C,IAAI,EAAE,MAAM;aACf;SACG,EACR,eAAe,CAClB,CAAC;IACN,CAAC,CAAC;IAEF,IAAM,iBAAiB,GAAG,UAAC,MAAc;QACrC,iBAAiB,CAAC,MAAM,CAAC,CAAC;QAC1B,2BAA2B,CAAC,IAAI,CAAC,CAAC;IACtC,CAAC,CAAC;IAEF,IAAM,UAAU,GAAG;;;;;;oBACf,IAAI,CAAC,cAAc,EAAE;wBACjB,sBAAO;qBACV;oBAEK,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,MAAM,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;wBAC1E,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC;wBAC3C,CAAC,CAAC,EAAE,CAAC;oBACH,YAAY,GAAG,YAAY,CAAC,IAAI,CAAC,UAAC,IAAgB,IAAK,OAAA,kBAAkB,CAAC,IAAI,CAAC,KAAK,cAAc,EAA3C,CAA2C,CAAC,CAAC;oBAE1G,IAAI,CAAC,YAAY,EAAE;wBACf,2BAA2B,CAAC,KAAK,CAAC,CAAC;wBACnC,eAAe,CAAC,KAAK,CAAC,CAAC;wBACvB,iBAAiB,CAAC,IAAI,CAAC,CAAC;wBACxB,sBAAO;qBACV;;;;oBAGS,gBAAgB,GAAG,mBAAmB,CAAC,YAAY,CAAC,CAAC;yBACvD,CAAA,gBAAgB,KAAK,IAAI,CAAA,EAAzB,wBAAyB;oBACzB,qBAAM,WAAW,CAAC,gBAAgB,CAAC,CAAC,MAAM,EAAE,EAAA;;oBAA5C,SAA4C,CAAC;;;oBAG3C,SAAS,GAAG,YAAY,CAAC,MAAM,CAAC,UAAC,IAAgB,IAAK,OAAA,kBAAkB,CAAC,IAAI,CAAC,KAAK,cAAc,EAA3C,CAA2C,CAAC,CAAC;oBACzG,YAAY,CAAC,QAAQ,CACjB;wBACI,MAAM,EAAE;4BACJ,IAAI,EAAE,eAAe,CAAC,KAAK,CAAC,IAAI;4BAChC,KAAK,EAAE,SAAS;4BAChB,IAAI,EAAE,MAAM;yBACf;qBACG,EACR,eAAe,CAClB,CAAC;oBACF,cAAc,CAAC,UAAC,IAAI,IAAK,OAAA,IAAI,CAAC,MAAM,CAAC,UAAC,IAAI,IAAK,OAAA,IAAI,CAAC,OAAO,KAAK,cAAc,EAA/B,CAA+B,CAAC,EAAtD,CAAsD,CAAC,CAAC;;;;oBAEjF,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC,mBAAmB,EAAE,OAAK,CAAC,CAAC;oBACzD,QAAQ,CAAC,SAAS,CAAC;wBACf,QAAQ,EAAE,OAAO;wBACjB,OAAO,EAAE,eAAe;wBACxB,MAAM,EAAE,CAAA,MAAA,OAAK,aAAL,OAAK,uBAAL,OAAK,CAAE,IAAI,0CAAE,OAAO,MAAI,OAAK,aAAL,OAAK,uBAAL,OAAK,CAAE,OAAO,CAAA,IAAI,cAAc,CAAC,mBAAmB;wBACpF,IAAI,EAAE,IAAI;qBACb,CAAC,CAAC,CAAC;;;oBAGR,2BAA2B,CAAC,KAAK,CAAC,CAAC;oBACnC,eAAe,CAAC,KAAK,CAAC,CAAC;oBACvB,iBAAiB,CAAC,IAAI,CAAC,CAAC;;;;SAC3B,CAAC;IAEI,IAAA,KAIF,WAAW,CAAC;QACZ,MAAM,EAAE,gBAAgB;QACxB,cAAc,EAAE,UAAC,cAAc;;YAC3B,IAAM,SAAS,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC;YACpC,IAAM,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,UAAA,GAAG,IAAI,OAAA,GAAG,CAAC,IAAI,KAAK,gBAAgB,EAA7B,CAA6B,CAAC,CAAC;YAC9E,IAAI,SAAS,EAAE;gBACX,gBAAgB,CAAC,cAAc,CAAC,cAAc,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC,CAAC;aACjF;iBAAM;gBACH,IAAM,gBAAgB,GAAG,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,UAAC,KAAK,IAAK,OAAA,KAAK,CAAC,IAAI,KAAK,mBAAmB,EAAlC,CAAkC,CAAC,CAAC;gBAC9F,gBAAgB,CACZ,CAAC,gBAAgB,IAAI,qCAAqC,CAAC,aAAa,CAAC,sBAAsB,CAAC,CAAC;wBAC9F,MAAA,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,0CAAE,OAAO,CAAA;uBAC5B,cAAc,CAAC,eAAe,CACpC,CAAC;aACL;QACL,CAAC;QACD,MAAM,EAAE,oBAAoB,CAAC,aAAa,CAAC,UAAU,EAAE,aAAa,CAAC,sBAAsB,EAAE,WAAW,CAAC;QACzG,OAAO,EAAE,aAAa,CAAC,cAAc,GAAG,IAAI;KAC/C,CAAC,EArBE,YAAY,kBAAA,EACZ,aAAa,mBAAA,EACb,YAAY,kBAmBd,CAAC;IAEH,IAAM,gBAAgB,GAAG,UAAC,MAAW,EAAE,SAAiB,IAAK,OAAA,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,EAArD,CAAqD,CAAC;IAE7G,IAAA,KAAoC,QAAQ,CAAC,KAAK,CAAC,EAAlD,cAAc,QAAA,EAAE,eAAe,QAAmB,CAAC;IAC1D,IAAI,aAAa,GAAG,qBAAqB,CAAC,uCAAuC,CAAC,CAAC;IACnF,IAAM,WAAW,GAAG;QAChB,MAAM,EAAE,MAAM;QACd,YAAY,EAAE,YAAY;QAC1B,eAAe,EAAE,eAAe;QAChC,eAAe,EAAE,eAAe;KACnC,CAAA;IAED,IAAM,cAAc,GAAG,UAAC,GAAQ;QAC5B,IAAM,WAAW,GAAG,mBAAmB,CAAC;YACpC,GAAG,EAAE,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,OAAO;YACjB,QAAQ,EAAE,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,IAAI;YACnB,QAAQ,EAAE,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,IAAI;SACtB,CAAC,CAAC;QAEH,IAAI,mBAAmB,CAAC,WAAW,CAAC,EAAE;YAClC,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAG;gBACd;oBACI,GAAG,EAAE,GAAG,CAAC,OAAO;oBAChB,WAAW,EAAE,GAAG,CAAC,OAAO;oBACxB,IAAI,EAAE,WAAW,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS;iBACtD;aACJ,CAAC,CAAC;YACH,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAG,IAAI,CAAC,CAAC;YACxB,OAAO;SACV;QAED,iBAAiB,CAAC,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,OAAO,CAAC,CAAC;IACpC,CAAC,CAAA;IAGD,OAAO,CACH,eAAK,KAAK,EAAE,kBAAkB,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,aAC5F,eAAK,SAAS,EAAE,UAAG,MAAM,CAAC,YAAY,cAAW,aAC5C,cAAc,IAAI,KAAK;wBACpB,iBAAO,OAAO,EAAE,eAAe,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,EAAE,UAAG,MAAM,CAAC,UAAU,sBAAmB,aAAG,UAAU,EACtG,aAAa,CAAC,QAAQ,IAAI,eAAM,SAAS,EAAC,cAAc,mBAAU,EACnE,KAAC,iBAAiB,IAAC,YAAY,EAAE,YAAY,GAAI,IAE7C,EAEZ,eAAK,SAAS,EAAC,UAAU,aACrB,0BACQ,YAAY,EAAE,IAClB,SAAS,EAAC,wBAAwB,aAElC,2BAAW,aAAa,EAAE,EAAI,EAC9B,KAAC,mBAAmB,IAChB,UAAU,EAAE,aAAa,CAAC,UAAU,EACpC,sBAAsB,EAAE,aAAa,CAAC,sBAAsB,EAC5D,cAAc,EAAE,aAAa,CAAC,cAAc,GAC9C,KACA,EACL,gBAAgB,CAAC,MAAM,EAAE,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CACrD,cAAK,SAAS,EAAC,eAAe,YAC1B,KAAC,YAAY,IAAC,QAAQ,EAAC,OAAO,EAAC,IAAI,EAAE,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,MAAM,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,0CAAE,QAAQ,EAAE,GAAI,GAC7F,CACT,IACC,EAEF,aAAa;wBACb,KAAC,YAAY,IAAC,QAAQ,EAAC,OAAO,EAAC,IAAI,EAAE,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,QAAQ,EAAE,GAAI,IAEpE,EACL,WAAW,CAAC,MAAM,GAAG,CAAC;gBACnB,cAAK,SAAS,EAAE,UAAG,MAAM,CAAC,mBAAmB,UAAO,YAChD,eAAK,SAAS,EAAE,UAAG,MAAM,CAAC,kBAAkB,gCAA6B,aACrE,KAAC,aAAa,IAAC,WAAW,EAAE,WAAW,CAAC,CAAC,CAAC,GAAI,EAC9C,eAAK,SAAS,EAAE,UAAG,MAAM,CAAC,mBAAmB,YAAS,aAClD,eAAK,SAAS,EAAC,wCAAwC,aACnD,iBACI,IAAI,EAAC,QAAQ,EACb,SAAS,EAAE,MAAM,CAAC,mBAAmB,EACrC,OAAO,EAAE,cAAM,OAAA,cAAc,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAA9B,CAA8B,EAC7C,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,YAEzB,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,GACf,EACT,eAAK,SAAS,EAAE,UAAG,MAAM,CAAC,sBAAsB,6BAA0B,aAClE,iBACI,IAAI,EAAC,QAAQ,EACb,SAAS,EAAC,qBAAqB,EAC/B,QAAQ,EAAE,eAAe,IAAI,eAAe,gBACjC,eAAe,EAC1B,OAAO,EAAE,UAAC,KAAK;;4DACX,KAAK,CAAC,cAAc,EAAE,CAAC;4DACvB,KAAK,CAAC,eAAe,EAAE,CAAC;4DACxB,iBAAiB,CAAC,MAAA,WAAW,CAAC,CAAC,CAAC,0CAAE,OAAO,EAAE,MAAA,WAAW,CAAC,CAAC,CAAC,0CAAE,IAAI,CAAC,CAAC;wDACrE,CAAC,YAED,KAAC,SAAS,IAAC,IAAI,EAAC,aAAa,wBAAe,GACvC,EACb,iBACI,IAAI,EAAC,QAAQ,EACb,SAAS,EAAC,+BAA+B,EACzC,QAAQ,EAAE,eAAe,IAAI,eAAe,gBACjC,aAAa,EACxB,OAAO,EAAE,cAAM,OAAA,iBAAiB,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAzC,CAAyC,YAExD,KAAC,SAAS,IAAC,IAAI,EAAC,UAAU,wBAAe,GACpC,IACP,IACJ,EACN,cAAK,SAAS,EAAE,MAAM,CAAC,mBAAmB,YACrC,cAAc,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAClC,IACJ,IACJ,GACJ,EAGT,WAAW,CAAC,MAAM,GAAG,CAAC;gBACnB,eAAK,SAAS,EAAC,wBAAwB,aACnC,aAAG,SAAS,EAAC,KAAK,aACb,WAAW,CAAC,MAAM,GAAG,CAAC,cACvB,EACJ,wBACI,KAAC,WAAW,IAAC,IAAI,EAAC,QAAQ,EAAC,IAAI,EAAC,IAAI,EAAC,OAAO,EAAC,OAAO,EAAC,OAAO,EAAE,cAAM,OAAA,eAAe,CAAC,IAAI,CAAC,EAArB,CAAqB,qBAE3E,GACZ,IACJ,EAGV,MAAC,WAAW,IACR,IAAI,EAAE,cAAc,EACpB,YAAY,EAAE,eAAe,EAC7B,KAAK,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,aAExB,MAAC,iBAAiB,eACd,KAAC,gBAAgB,iCAAkC,EACnD,KAAC,gBAAgB,KAAG,IACJ,EACpB,KAAC,eAAe,cACf,WAAW,CAAC,MAAM,GAAG,CAAC;4BACnB,WAAW,CAAC,GAAG,CAAC,UAAC,IAAI,EAAE,KAAK;gCACxB,IAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC;gCAC5B,OAAO,CACH,cAAkB,SAAS,EAAE,KAAK,KAAK,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,YACvE,cAAK,SAAS,EAAE,MAAM,CAAC,mBAAmB,YACtC,eAAK,SAAS,EAAE,UAAG,MAAM,CAAC,kBAAkB,gCAA6B,aACrE,KAAC,aAAa,IAAC,WAAW,EAAE,IAAI,GAAI,EACpC,eAAK,SAAS,EAAE,UAAG,MAAM,CAAC,mBAAmB,YAAS,aAClD,eAAK,SAAS,EAAC,wCAAwC,aACnD,iBACI,IAAI,EAAC,QAAQ,EACb,SAAS,EAAE,MAAM,CAAC,mBAAmB,EACrC,OAAO,EAAE,cAAM,OAAA,cAAc,CAAC,IAAI,CAAC,EAApB,CAAoB,EACnC,KAAK,EAAE,IAAI,CAAC,IAAI,YAEf,IAAI,CAAC,IAAI,GACL,EACT,eAAK,SAAS,EAAE,UAAG,MAAM,CAAC,sBAAsB,6BAA0B,aACtE,iBACI,IAAI,EAAC,QAAQ,EACb,SAAS,EAAC,qBAAqB,EAC/B,QAAQ,EAAE,eAAe,IAAI,eAAe,gBACjC,eAAe,EAC1B,OAAO,EAAE,UAAC,KAAK;gFACX,KAAK,CAAC,cAAc,EAAE,CAAC;gFACvB,KAAK,CAAC,eAAe,EAAE,CAAC;gFACxB,iBAAiB,CAAC,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,OAAO,EAAE,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,IAAI,CAAC,CAAC;4EACjD,CAAC,YAED,KAAC,SAAS,IAAC,IAAI,EAAC,aAAa,wBAAe,GACvC,EACT,iBACI,IAAI,EAAC,QAAQ,EACb,SAAS,EAAC,+BAA+B,EACzC,QAAQ,EAAE,eAAe,IAAI,eAAe,gBACjC,aAAa,EACxB,OAAO,EAAE,cAAM,OAAA,iBAAiB,CAAC,MAAM,CAAC,EAAzB,CAAyB,YAExC,KAAC,SAAS,IAAC,IAAI,EAAC,UAAU,wBAAe,GACpC,IACP,IACJ,EACN,cAAK,SAAS,EAAE,MAAM,CAAC,mBAAmB,YACrC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,GACxB,IACJ,IACJ,GACJ,IA5CA,MAAM,CA6CV,CACT,CAAC;4BACN,CAAC,CAAC,GAEY,IACR,EACd,MAAC,WAAW,IACR,IAAI,EAAE,0BAA0B,EAChC,YAAY,EAAE,2BAA2B,EACzC,SAAS,EAAC,6BAA6B,aAEvC,MAAC,iBAAiB,IAAC,SAAS,EAAC,0BAA0B,aACnD,KAAC,gBAAgB,iCAAkC,EACnD,KAAC,gBAAgB,KAAG,IACJ,EACpB,KAAC,oBAAoB,IAAC,SAAS,EAAC,yBAAyB,GAAG,EAC5D,KAAC,eAAe,IAAC,SAAS,EAAC,0BAA0B,YACjD,YAAG,SAAS,EAAC,0BAA0B,2DAA+C,GACxE,EAClB,MAAC,iBAAiB,IAAC,SAAS,EAAC,6BAA6B,aACtD,KAAC,WAAW,IAAC,OAAO,EAAC,aAAa,EAAC,IAAI,EAAC,IAAI,EAAC,SAAS,QAAC,OAAO,EAAE,UAAU,uBAE5D,EACd,KAAC,WAAW,IAAC,OAAO,EAAC,SAAS,EAAC,IAAI,EAAC,IAAI,EAAC,OAAO,EAAE,cAAM,OAAA,2BAA2B,CAAC,KAAK,CAAC,EAAlC,CAAkC,uBAE5E,IACE,IACV,IACZ,CACT,CAAC;AACN,CAAC,CAAA;AAED,MAAM,CAAC,IAAM,kCAAkC,GAAG,UAAC,EAA0F;;QAAxF,MAAM,YAAA,EAAE,YAAY,kBAAA,EAAE,eAAe,qBAAA,EAAE,eAAe,qBAAA;IACjG,IAAA,KAAgC,QAAQ,CAAuF,EAAE,CAAC,EAAjI,WAAW,QAAA,EAAE,cAAc,QAAsG,CAAC;IACnI,IAAA,KAAoC,QAAQ,CAAC,KAAK,CAAC,EAAlD,cAAc,QAAA,EAAE,eAAe,QAAmB,CAAC;IAC1D,IAAM,aAAa,GAAG,YAAY,CAAC,aAAa,CAAC;IACjD,IAAM,eAAe,GAAG,YAAY,CAAC,KAAK,CAAC;IAC3C,IAAM,SAAS,GAAG,CAAA,MAAA,eAAe,CAAC,KAAK,0CAAE,SAAS,KAAI,wBAAwB,CAAC;IAC/E,IAAM,UAAU,GAAG,MAAA,eAAe,CAAC,KAAK,CAAC,KAAK,mCAAI,aAAa,CAAC,WAAW,CAAC;IAC5E,IAAM,cAAc,GAAG,MAAA,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAE,KAAK,0CAAE,SAAS,CAAC;IAEzD,qFAAqF;IAErF,IAAM,cAAc,GAAG,UAAC,IAAY;QAChC,OAAO,IAAI,IAAI,IAAI,GAAG,IAAI;YACtB,CAAC,CAAC,UAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAK;YAC3C,CAAC,CAAC,UAAG,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAK,CAAC;IAC3C,CAAC,CAAC;IAEF,SAAS,CAAC;QACN,IAAM,UAAU,GAAG,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,MAAM,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC9D,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE;YACvD,cAAc,CAAC,EAAE,CAAC,CAAC;YACnB,OAAO;SACV;QAED,IAAM,UAAU,GAAa,EAAE,CAAC;QAChC,IAAM,OAAO,GAAG,UAAU;aACrB,GAAG,CAAC,UAAC,IAAgB;YAClB,IAAI,IAAI,YAAY,IAAI,EAAE;gBACtB,IAAM,SAAO,GAAG,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;gBAC1C,UAAU,CAAC,IAAI,CAAC,SAAO,CAAC,CAAC;gBACzB,OAAO;oBACH,IAAI,EAAE,IAAI,CAAC,IAAI;oBACf,IAAI,EAAE,IAAI,CAAC,IAAI;oBACf,IAAI,EAAE,IAAI,CAAC,IAAI;oBACf,EAAE,EAAE,UAAG,IAAI,CAAC,IAAI,cAAI,IAAI,CAAC,IAAI,CAAE;oBAC/B,OAAO,WAAA;iBACV,CAAC;aACL;YAED,IAAM,OAAO,GAAG,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,SAAS,CAAC;YAChC,IAAI,CAAC,OAAO,EAAE;gBACV,OAAO,IAAI,CAAC;aACf;YAED,OAAO;gBACH,IAAI,EAAE,IAAI,CAAC,gBAAgB;gBAC3B,IAAI,EAAE,IAAI,CAAC,QAAQ;gBACnB,IAAI,EAAE,IAAI,CAAC,QAAQ;gBACnB,EAAE,EAAE,IAAI,CAAC,EAAE;gBACX,OAAO,SAAA;aACV,CAAC;QACN,CAAC,CAAC;aACD,MAAM,CAAC,OAAO,CAAyF,CAAC;QAE7G,cAAc,CAAC,OAAO,CAAC,CAAC;QAExB,OAAO;YACH,UAAU,CAAC,OAAO,CAAC,UAAC,OAAO,IAAK,OAAA,GAAG,CAAC,eAAe,CAAC,OAAO,CAAC,EAA5B,CAA4B,CAAC,CAAC;QAClE,CAAC,CAAC;IACN,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;IAEhD,IAAM,cAAc,GAAG,UAAC,GAAQ;QAC5B,IAAM,WAAW,GAAG,mBAAmB,CAAC;YACpC,GAAG,EAAE,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,OAAO;YACjB,QAAQ,EAAE,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,IAAI;YACnB,QAAQ,EAAE,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,IAAI;SACtB,CAAC,CAAC;QAEH,IAAI,mBAAmB,CAAC,WAAW,CAAC,EAAE;YAClC,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAG;gBACd;oBACI,GAAG,EAAE,GAAG,CAAC,OAAO;oBAChB,WAAW,EAAE,GAAG,CAAC,OAAO;oBACxB,IAAI,EAAE,WAAW,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS;iBACtD;aACJ,CAAC,CAAC;YACH,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAG,IAAI,CAAC,CAAC;YACxB,OAAO;SACV;QAED,iBAAiB,CAAC,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,OAAO,CAAC,CAAC;IACpC,CAAC,CAAA;IAED,IAAM,mBAAmB,GAAG,UAAC,IAAwF,EAAE,SAAc;QAAd,0BAAA,EAAA,cAAc;QAAK,OAAA,CACtI,cAAK,SAAS,EAAE,UAAG,MAAM,CAAC,mBAAmB,cAAI,SAAS,CAAE,CAAC,IAAI,EAAE,YAC/D,eAAK,SAAS,EAAE,UAAG,MAAM,CAAC,kBAAkB,gCAA6B,aACrE,KAAC,aAAa,IAAC,WAAW,EAAE,IAAI,GAAI,EACpC,eAAK,SAAS,EAAE,UAAG,MAAM,CAAC,mBAAmB,YAAS,aAClD,eAAK,SAAS,EAAC,wCAAwC,aACnD,iBACI,IAAI,EAAC,QAAQ,EACb,SAAS,EAAE,MAAM,CAAC,mBAAmB,EACrC,OAAO,EAAE,cAAM,OAAA,cAAc,CAAC,IAAI,CAAC,EAApB,CAAoB,EACnC,KAAK,EAAE,IAAI,CAAC,IAAI,YAEf,IAAI,CAAC,IAAI,GACL,EACT,cAAK,SAAS,EAAE,UAAG,MAAM,CAAC,sBAAsB,gCAA6B,YACzE,iBACI,IAAI,EAAC,QAAQ,EACb,SAAS,EAAC,qBAAqB,gBACpB,eAAe,EAC1B,OAAO,EAAE,UAAC,KAAK;gDACX,KAAK,CAAC,cAAc,EAAE,CAAC;gDACvB,KAAK,CAAC,eAAe,EAAE,CAAC;gDACxB,iBAAiB,CAAC,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,OAAO,EAAE,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,IAAI,CAAC,CAAC;4CACjD,CAAC,YAED,KAAC,SAAS,IAAC,IAAI,EAAC,aAAa,wBAAe,GACvC,GACP,IACJ,EACN,cAAK,SAAS,EAAE,MAAM,CAAC,mBAAmB,YACrC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,GACxB,IACJ,IACJ,GACJ,CACT;IAnCyI,CAmCzI,CAAC;IAEF,OAAO,CACH,eAAK,SAAS,EAAE,MAAM,CAAC,gBAAgB,aAClC,cAAc,IAAI,KAAK;gBACpB,aAAG,SAAS,EAAE,UAAG,MAAM,CAAC,cAAc,sBAAmB,aACpD,UAAU,EACX,KAAC,iBAAiB,IAAC,YAAY,EAAE,YAAY,GAAI,IACjD,EAEP,WAAW,CAAC,MAAM,GAAG,CAAC;gBACnB,mBAAmB,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,uBAAuB,CAAC,EAGtE,WAAW,CAAC,MAAM,GAAG,CAAC;gBACnB,eAAK,SAAS,EAAC,wBAAwB,aACnC,aAAG,SAAS,EAAC,KAAK,aACb,WAAW,CAAC,MAAM,GAAG,CAAC,cACvB,EACJ,wBACI,KAAC,WAAW,IAAC,IAAI,EAAC,QAAQ,EAAC,IAAI,EAAC,IAAI,EAAC,OAAO,EAAC,OAAO,EAAC,OAAO,EAAE,cAAM,OAAA,eAAe,CAAC,IAAI,CAAC,EAArB,CAAqB,qBAE3E,GACZ,IACJ,EAGV,MAAC,WAAW,IACR,IAAI,EAAE,cAAc,EACpB,YAAY,EAAE,eAAe,EAC7B,KAAK,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,aAExB,MAAC,iBAAiB,eACd,KAAC,gBAAgB,iCAAkC,EACnD,KAAC,gBAAgB,KAAG,IACJ,EACpB,KAAC,eAAe,cACf,WAAW,CAAC,MAAM,GAAG,CAAC;4BACnB,WAAW,CAAC,GAAG,CAAC,UAAC,IAAI,EAAE,KAAK;gCACxB,IAAM,MAAM,GAAG,UAAG,IAAI,CAAC,IAAI,cAAI,IAAI,CAAC,IAAI,CAAE,CAAC;gCAC3C,OAAO,CACH,cAAkB,SAAS,EAAE,KAAK,KAAK,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,YACtE,mBAAmB,CAAC,IAAI,CAAC,IADpB,MAAM,CAEV,CACT,CAAC;4BACN,CAAC,CAAC,GAEY,IACR,IAEZ,CACT,CAAC;AACN,CAAC,CAAA","sourcesContent":["\nimport { DropzonePlaceholder } from \"../../../../components/common/DropzonePlaceholder\";\nimport { DropzoneUpload } from \"../../../../components/common/DropzoneUpload\";\nimport { useDeleteMediaMutation } from \"../../../../redux/api/mediaApi\";\nimport { SolidButton } from \"../../../shad-cn-ui/SolidButton\";\nimport {\n SolidDialog,\n SolidDialogBody,\n SolidDialogClose,\n SolidDialogFooter,\n SolidDialogHeader,\n SolidDialogSeparator,\n SolidDialogTitle,\n} from \"../../../shad-cn-ui/SolidDialog\";\nimport { SolidMessage } from \"../../../shad-cn-ui/SolidMessage\";\nimport { SolidProgressBar } from \"../../../shad-cn-ui/SolidProgressBar\";\nimport { useEffect, useState } from \"react\";\nimport { useDispatch } from \"react-redux\";\nimport { useDropzone } from \"react-dropzone\";\nimport * as Yup from 'yup';\nimport { FormikObject, ISolidField, SolidFieldProps } from \"./ISolidField\";\nimport { FileReaderExt } from \"../../../../components/common/FileReaderExt\";\nimport getAcceptedFileTypes, { getAllowedMediaExtensionsErrorMessage } from \"../../../../helpers/getAcceptedFileTypes\";\nimport { downloadMediaFile } from \"../../../../helpers/downloadMediaFile\";\nimport { getExtensionComponent } from \"../../../../helpers/registry\";\nimport { openMediaInNewTab } from \"../../../../helpers/mediaUrl\";\nimport { getMediaPreviewKind, isLightboxMediaKind } from \"../../../../helpers/mediaType\";\nimport { SolidFormFieldWidgetProps, SolidMediaFormFieldWidgetProps } from \"../../../../types/solid-core\";\nimport { SolidFieldTooltip } from \"../../../../components/common/SolidFieldTooltip\";\nimport { ERROR_MESSAGES } from \"../../../../constants/error-messages\";\nimport { showToast } from \"../../../../redux/features/toastSlice\";\nimport styles from \"./solidFields.module.css\";\nimport { SolidIcon } from \"../../../shad-cn-ui\";\nimport { buildMediaFieldKey, getPersistedMediaId } from \"./mediaFieldUtils\";\n\nexport class SolidMediaMultipleField implements ISolidField {\n\n private fieldContext: SolidFieldProps;\n private setLightboxUrls?: (urls: { src: string; downloadUrl: string }[]) => void;\n private setOpenLightbox?: (open: boolean) => void;\n constructor(fieldContext: SolidFieldProps, setLightboxUrls?: (urls: { src: string; downloadUrl: string }[]) => void,\n setOpenLightbox?: (open: boolean) => void) {\n this.fieldContext = fieldContext;\n this.setLightboxUrls = setLightboxUrls;\n this.setOpenLightbox = setOpenLightbox;\n }\n\n updateFormData(value: any, formData: FormData): any {\n const fieldLayoutInfo = this.fieldContext.field;\n // @ts-ignore\n for (let i = 0; i < value.length; i++) {\n // @ts-ignore\n const file = value[i];\n if (file instanceof File) {\n formData.append(fieldLayoutInfo.attrs.name, file);\n }\n }\n }\n\n initialValue(): any {\n const mediaUrls = this.fieldContext.data && this.fieldContext.data._media && this.fieldContext.data._media[this.fieldContext.field.attrs.name].map((i: any) => i)\n return mediaUrls;\n }\n\n validationSchema(): Yup.Schema {\n\n const fieldMetadata = this.fieldContext.fieldMetadata;\n const fieldLayoutInfo = this.fieldContext.field;\n const fieldLabel = fieldLayoutInfo.label ?? fieldMetadata.displayName;\n\n let schema: Yup.ArraySchema<any, any, any, any>; // Correctly specifying type arguments for ArraySchema\n if (fieldMetadata.required) {\n // For required fields: disallow null, undefined, and empty arrays\n schema = Yup.array()\n .of(\n Yup.mixed<File | object>()\n .required(ERROR_MESSAGES.FIELD_REUQIRED(fieldLabel))\n .test(\n ERROR_MESSAGES.FILE_OBJECT,\n ERROR_MESSAGES.MUST_BE_FILE_OBJECT(fieldLabel),\n (value) =>\n value instanceof File || typeof value === \"object\" // Validate File or object\n )\n )\n .min(1, ERROR_MESSAGES.FIELD_MUST_HAVE_ITEM(fieldLabel)); // Ensure array has at least one item\n } else {\n // For optional fields: allow null, undefined, or an empty array\n schema = Yup.array()\n .of(\n Yup.mixed<File | object>()\n .nullable() // Allow null explicitly\n .test(\n ERROR_MESSAGES.FILE_OBJECT,\n ERROR_MESSAGES.MUST_BE_FILE_OBJECT(fieldLabel),\n (value) =>\n value === null || // Allow null\n value === undefined || // Allow undefined\n value instanceof File || // Allow File\n typeof value === \"object\" // Allow object\n )\n )\n .nullable() // Allow null array explicitly\n .test(\n ERROR_MESSAGES.EMPTY_VALID_ARRAY,\n ERROR_MESSAGES.CONTAIN_EMPTY_ARRAY_OR_FILE_OBECT(fieldLabel),\n (value) => value === null || value === undefined || Array.isArray(value)\n );\n }\n\n\n return schema;\n }\n\n render(formik: FormikObject) {\n const fieldMetadata = this.fieldContext.fieldMetadata;\n const fieldLayoutInfo = this.fieldContext.field;\n const isFormFieldValid = (formik: any, fieldName: string) => formik.touched[fieldName] && formik.errors[fieldName];\n const className = fieldLayoutInfo.attrs?.className || 'field w-full px-2 pt-2';\n\n let viewWidget = fieldLayoutInfo.attrs.viewWidget;\n let editWidget = fieldLayoutInfo.attrs.editWidget;\n if (!editWidget) {\n editWidget = 'DefaultMediaMultipleFormEditWidget';\n }\n if (!viewWidget) {\n viewWidget = 'DefaultMediaMultipleFormViewWidget';\n }\n const viewMode: string = this.fieldContext.viewMode;\n\n\n return (\n <>\n <div className={className}>\n {viewMode === \"view\" &&\n this.renderExtensionRenderMode(viewWidget, formik)\n }\n {viewMode === \"edit\" &&\n <>\n {editWidget &&\n this.renderExtensionRenderMode(editWidget, formik)\n }\n </>\n }\n </div>\n </>\n );\n }\n\n renderExtensionRenderMode(widget: string, formik: FormikObject) {\n let DynamicWidget = getExtensionComponent(widget);\n const widgetProps: SolidMediaFormFieldWidgetProps = {\n formik: formik,\n fieldContext: this.fieldContext,\n setLightboxUrls: this.setLightboxUrls,\n setOpenLightbox: this.setOpenLightbox\n }\n return (\n <>\n {DynamicWidget && <DynamicWidget {...widgetProps} />}\n </>\n )\n }\n}\n\n\nexport const DefaultMediaMultipleFormEditWidget = ({ formik, fieldContext, setLightboxUrls, setOpenLightbox }: SolidMediaFormFieldWidgetProps) => {\n type MediaFileDetail = { name: string; type: string; size: number; mediaId: number | string | null; fileKey: string; fileUrl: string };\n\n const fieldMetadata = fieldContext.fieldMetadata;\n const fieldLayoutInfo = fieldContext.field;\n const className = fieldLayoutInfo.attrs?.className || 'field w-full px-2 pt-2';\n const fieldLabel = fieldLayoutInfo.attrs.label ?? fieldMetadata.displayName;\n const viewMode: string = fieldContext.viewMode;\n const fieldDescription = fieldLayoutInfo.attrs.description ?? fieldMetadata.description;\n const solidFormViewMetaData = fieldContext.solidFormViewMetaData;\n const showFieldLabel = fieldLayoutInfo?.attrs?.showLabel;\n const readOnlyPermission = fieldContext.readOnly ? fieldContext.readOnly : fieldLayoutInfo.attrs.readonly;\n const fieldDisabled = fieldLayoutInfo.attrs?.disabled;\n const fieldReadonly = fieldLayoutInfo.attrs?.readonly;\n const formDisabled = solidFormViewMetaData.data.solidView?.layout?.attrs?.disabled;\n const formReadonly = solidFormViewMetaData.data.solidView?.layout?.attrs?.readonly;\n const isFieldDisabled = formDisabled || fieldDisabled;\n const isFieldReadonly = formReadonly || fieldReadonly || readOnlyPermission;\n\n const [isDeleteImageDialogVisible, setDeleteImageDialogVisible] = useState(false);\n const [fileDetails, setFileDetails] = useState<MediaFileDetail[]>([]);\n const [selectedFileId, setSelectedFileId] = useState<string | null>(null);\n const [fileSizeError, setFileSizeError] = useState<string | null>(null);\n const mediaConfig = solidFormViewMetaData?.data;\n\n const formatFileSize = (size: number) => {\n return size >= 1024 * 1024\n ? `${(size / (1024 * 1024)).toFixed(1)} MB`\n : `${(size / 1024).toFixed(1)} KB`;\n };\n const [deleteMedia] = useDeleteMediaMutation();\n const dispatch = useDispatch();\n useEffect(() => {\n const fieldValue = formik?.values[fieldLayoutInfo.attrs.name];\n if (!Array.isArray(fieldValue) || fieldValue.length === 0) {\n setFileDetails([]);\n return;\n }\n\n const objectUrls: string[] = [];\n const details = fieldValue\n .map((file: File | any): MediaFileDetail | null => {\n if (file instanceof File) {\n const fileUrl = URL.createObjectURL(file);\n objectUrls.push(fileUrl);\n return {\n name: file.name,\n type: file.type,\n size: file.size,\n mediaId: null,\n fileKey: buildMediaFieldKey(file),\n fileUrl,\n };\n }\n\n const fileUrl = file?._full_url;\n if (!fileUrl) {\n return null;\n }\n\n return {\n name: file.originalFileName,\n type: file.mimeType,\n size: file.fileSize,\n mediaId: getPersistedMediaId(file),\n fileKey: buildMediaFieldKey(file),\n fileUrl,\n };\n })\n .filter((detail): detail is MediaFileDetail => detail !== null);\n\n setFileDetails(details);\n\n return () => {\n objectUrls.forEach((fileUrl) => URL.revokeObjectURL(fileUrl));\n };\n }, [formik.values, fieldLayoutInfo.attrs.name]);\n\n const handleDropImages = (acceptedFiles: any[]) => {\n if (!acceptedFiles.length) return;\n setFileSizeError(null);\n const existingFiles = Array.isArray(formik?.values[fieldLayoutInfo.attrs.name])\n ? formik.values[fieldLayoutInfo.attrs.name]\n : [];\n acceptedFiles.forEach((file) => {\n const reader = new FileReader();\n reader.readAsDataURL(file);\n });\n\n fieldContext.onChange(\n {\n target: {\n name: fieldLayoutInfo.attrs.name,\n value: [...existingFiles, ...acceptedFiles],\n type: \"text\",\n },\n } as any,\n \"onFieldChange\"\n );\n };\n\n const confirmDeleteFile = (fileId: string) => {\n setSelectedFileId(fileId);\n setDeleteImageDialogVisible(true);\n };\n\n const deleteFile = async () => {\n if (!selectedFileId) {\n return;\n }\n\n const currentFiles = Array.isArray(formik?.values[fieldLayoutInfo.attrs.name])\n ? formik.values[fieldLayoutInfo.attrs.name]\n : [];\n const fileToDelete = currentFiles.find((file: File | any) => buildMediaFieldKey(file) === selectedFileId);\n\n if (!fileToDelete) {\n setDeleteImageDialogVisible(false);\n setShowAllFiles(false);\n setSelectedFileId(null);\n return;\n }\n\n try {\n const persistedMediaId = getPersistedMediaId(fileToDelete);\n if (persistedMediaId !== null) {\n await deleteMedia(persistedMediaId).unwrap();\n }\n\n const nextValue = currentFiles.filter((file: File | any) => buildMediaFieldKey(file) !== selectedFileId);\n fieldContext.onChange(\n {\n target: {\n name: fieldLayoutInfo.attrs.name,\n value: nextValue,\n type: \"text\",\n },\n } as any,\n \"onFieldChange\"\n );\n setFileDetails((prev) => prev.filter((file) => file.fileKey !== selectedFileId));\n } catch (error: any) {\n console.error(ERROR_MESSAGES.ERROR_DELETING_FILE, error);\n dispatch(showToast({\n severity: \"error\",\n summary: \"Delete Failed\",\n detail: error?.data?.message || error?.message || ERROR_MESSAGES.ERROR_DELETING_FILE,\n life: 4000,\n }));\n }\n\n setDeleteImageDialogVisible(false);\n setShowAllFiles(false);\n setSelectedFileId(null);\n };\n\n const {\n getRootProps,\n getInputProps,\n isDragActive,\n } = useDropzone({\n onDrop: handleDropImages,\n onDropRejected: (fileRejections) => {\n const rejection = fileRejections[0];\n const sizeError = rejection.errors.find(err => err.code === 'file-too-large');\n if (sizeError) {\n setFileSizeError(ERROR_MESSAGES.FILE_TOO_LAREG(fieldMetadata.mediaMaxSizeKb));\n } else {\n const invalidTypeError = rejection.errors.find((error) => error.code === \"file-invalid-type\");\n setFileSizeError(\n (invalidTypeError && getAllowedMediaExtensionsErrorMessage(fieldMetadata.mediaAllowedExtensions))\n || rejection.errors[0]?.message\n || ERROR_MESSAGES.FILE_NOT_ACCEPT\n );\n }\n },\n accept: getAcceptedFileTypes(fieldMetadata.mediaTypes, fieldMetadata.mediaAllowedExtensions, mediaConfig),\n maxSize: fieldMetadata.mediaMaxSizeKb * 1024,\n });\n\n const isFormFieldValid = (formik: any, fieldName: string) => formik.touched[fieldName] && formik.errors[fieldName];\n\n const [isShowAllFiles, setShowAllFiles] = useState(false);\n let DynamicWidget = getExtensionComponent(\"SolidFormFieldViewMediaMultipleWidget\");\n const widgetProps = {\n formik: formik,\n fieldContext: fieldContext,\n setLightboxUrls: setLightboxUrls,\n setOpenLightbox: setOpenLightbox\n }\n\n const handleFileView = (url: any) => {\n const previewKind = getMediaPreviewKind({\n url: url?.fileUrl,\n fileName: url?.name,\n mimeType: url?.type,\n });\n\n if (isLightboxMediaKind(previewKind)) {\n setLightboxUrls?.([\n {\n src: url.fileUrl,\n downloadUrl: url.fileUrl,\n type: previewKind === \"video\" ? \"video\" : undefined\n },\n ]);\n setOpenLightbox?.(true);\n return;\n }\n\n openMediaInNewTab(url?.fileUrl);\n }\n\n\n return (\n <div style={readOnlyPermission === true ? { filter: 'opacity(50%)', pointerEvents: 'none' } : {}}>\n <div className={`${styles.fieldWrapper} relative`}>\n {showFieldLabel != false &&\n <label htmlFor={fieldLayoutInfo.attrs.name} className={`${styles.fieldLabel} form-field-label`}>{fieldLabel}\n {fieldMetadata.required && <span className=\"text-red-500\"> *</span>}\n <SolidFieldTooltip fieldContext={fieldContext} />\n {/* &nbsp; {fieldDescription && <span className=\"form_field_help\">({fieldDescription}) </span>} */}\n </label>\n }\n <div className=\"relative\">\n <div\n {...getRootProps()}\n className=\"solid-dropzone-wrapper\"\n >\n <input {...getInputProps()} />\n <DropzonePlaceholder\n mediaTypes={fieldMetadata.mediaTypes}\n mediaAllowedExtensions={fieldMetadata.mediaAllowedExtensions}\n mediaMaxSizeKb={fieldMetadata.mediaMaxSizeKb}\n />\n </div>\n {isFormFieldValid(formik, fieldLayoutInfo.attrs.name) && (\n <div className=\"absolute mt-1\">\n <SolidMessage severity=\"error\" text={formik?.errors[fieldLayoutInfo.attrs.name]?.toString()} />\n </div>\n )}\n </div>\n {\n fileSizeError &&\n <SolidMessage severity=\"error\" text={fileSizeError?.toString()} />\n }\n </div>\n {fileDetails.length > 0 &&\n <div className={`${styles.mediaAttachmentCard} mt-4`}>\n <div className={`${styles.mediaAttachmentRow} flex items-center md:gap-2`}>\n <FileReaderExt fileDetails={fileDetails[0]} />\n <div className={`${styles.mediaAttachmentMeta} w-full`}>\n <div className=\"flex items-start justify-between gap-4\">\n <button\n type=\"button\"\n className={styles.mediaAttachmentName}\n onClick={() => handleFileView(fileDetails[0])}\n title={fileDetails[0].name}\n >\n {fileDetails[0].name}\n </button>\n <div className={`${styles.mediaAttachmentActions} flex items-center gap-2`}>\n <button\n type=\"button\"\n className=\"solid-file-icon-btn\"\n disabled={isFieldDisabled || isFieldReadonly}\n aria-label=\"Download file\"\n onClick={(event) => {\n event.preventDefault();\n event.stopPropagation();\n downloadMediaFile(fileDetails[0]?.fileUrl, fileDetails[0]?.name);\n }}\n >\n <SolidIcon name=\"si-download\" aria-hidden />\n </button>\n <button\n type=\"button\"\n className=\"solid-file-icon-btn is-danger\"\n disabled={isFieldDisabled || isFieldReadonly}\n aria-label=\"Remove file\"\n onClick={() => confirmDeleteFile(fileDetails[0].fileKey)}\n >\n <SolidIcon name=\"si-times\" aria-hidden />\n </button>\n </div>\n </div>\n <div className={styles.mediaAttachmentSize}>\n {formatFileSize(fileDetails[0].size)}\n </div>\n </div>\n </div>\n </div>\n }\n\n {fileDetails.length > 1 &&\n <div className=\"flex items-center mt-1\">\n <p className=\"m-0\">\n {fileDetails.length - 1} items\n </p>\n <div>\n <SolidButton type=\"button\" size=\"sm\" variant=\"ghost\" onClick={() => setShowAllFiles(true)}>\n View\n </SolidButton>\n </div>\n </div>\n }\n\n <SolidDialog\n open={isShowAllFiles}\n onOpenChange={setShowAllFiles}\n style={{ minWidth: 450 }}\n >\n <SolidDialogHeader>\n <SolidDialogTitle>Items Uploaded</SolidDialogTitle>\n <SolidDialogClose />\n </SolidDialogHeader>\n <SolidDialogBody>\n {fileDetails.length > 1 &&\n fileDetails.map((file, index) => {\n const fileId = file.fileKey;\n return (\n <div key={fileId} className={index === fileDetails.length - 1 ? \"\" : \"mb-3\"}>\n <div className={styles.mediaAttachmentCard}>\n <div className={`${styles.mediaAttachmentRow} flex items-center md:gap-2`}>\n <FileReaderExt fileDetails={file} />\n <div className={`${styles.mediaAttachmentMeta} w-full`}>\n <div className=\"flex items-start justify-between gap-4\">\n <button\n type=\"button\"\n className={styles.mediaAttachmentName}\n onClick={() => handleFileView(file)}\n title={file.name}\n >\n {file.name}\n </button>\n <div className={`${styles.mediaAttachmentActions} flex items-center gap-2`}>\n <button\n type=\"button\"\n className=\"solid-file-icon-btn\"\n disabled={isFieldDisabled || isFieldReadonly}\n aria-label=\"Download file\"\n onClick={(event) => {\n event.preventDefault();\n event.stopPropagation();\n downloadMediaFile(file?.fileUrl, file?.name);\n }}\n >\n <SolidIcon name=\"si-download\" aria-hidden />\n </button>\n <button\n type=\"button\"\n className=\"solid-file-icon-btn is-danger\"\n disabled={isFieldDisabled || isFieldReadonly}\n aria-label=\"Remove file\"\n onClick={() => confirmDeleteFile(fileId)}\n >\n <SolidIcon name=\"si-times\" aria-hidden />\n </button>\n </div>\n </div>\n <div className={styles.mediaAttachmentSize}>\n {formatFileSize(file.size)}\n </div>\n </div>\n </div>\n </div>\n </div>\n );\n })\n }\n </SolidDialogBody>\n </SolidDialog>\n <SolidDialog\n open={isDeleteImageDialogVisible}\n onOpenChange={setDeleteImageDialogVisible}\n className=\"solid-shadcn-confirm-dialog\"\n >\n <SolidDialogHeader className=\"solid-shadcn-dialog-head\">\n <SolidDialogTitle>Confirm Delete</SolidDialogTitle>\n <SolidDialogClose />\n </SolidDialogHeader>\n <SolidDialogSeparator className=\"solid-shadcn-dialog-sep\" />\n <SolidDialogBody className=\"solid-shadcn-dialog-body\">\n <p className=\"solid-shadcn-dialog-text\">Are you sure you want to delete this file?</p>\n </SolidDialogBody>\n <SolidDialogFooter className=\"solid-shadcn-dialog-actions\">\n <SolidButton variant=\"destructive\" size=\"sm\" autoFocus onClick={deleteFile}>\n Delete\n </SolidButton>\n <SolidButton variant=\"outline\" size=\"sm\" onClick={() => setDeleteImageDialogVisible(false)}>\n Cancel\n </SolidButton>\n </SolidDialogFooter>\n </SolidDialog>\n </div>\n );\n}\n\nexport const DefaultMediaMultipleFormViewWidget = ({ formik, fieldContext, setLightboxUrls, setOpenLightbox }: SolidMediaFormFieldWidgetProps) => {\n const [fileDetails, setFileDetails] = useState<{ name: string; type: string; size: number; id: number | string; fileUrl: string }[]>([]);\n const [isShowAllFiles, setShowAllFiles] = useState(false);\n const fieldMetadata = fieldContext.fieldMetadata;\n const fieldLayoutInfo = fieldContext.field;\n const className = fieldLayoutInfo.attrs?.className || 'field w-full px-2 pt-2';\n const fieldLabel = fieldLayoutInfo.attrs.label ?? fieldMetadata.displayName;\n const showFieldLabel = fieldLayoutInfo?.attrs?.showLabel;\n\n // useEffect(() => { formik.setFieldValue(fieldLayoutInfo.attrs.name, \"false\") }, [])\n\n const formatFileSize = (size: number) => {\n return size >= 1024 * 1024\n ? `${(size / (1024 * 1024)).toFixed(1)} MB`\n : `${(size / 1024).toFixed(1)} KB`;\n };\n\n useEffect(() => {\n const fieldValue = formik?.values[fieldLayoutInfo.attrs.name];\n if (!Array.isArray(fieldValue) || fieldValue.length === 0) {\n setFileDetails([]);\n return;\n }\n\n const objectUrls: string[] = [];\n const details = fieldValue\n .map((file: File | any) => {\n if (file instanceof File) {\n const fileUrl = URL.createObjectURL(file);\n objectUrls.push(fileUrl);\n return {\n name: file.name,\n type: file.type,\n size: file.size,\n id: `${file.name}-${file.size}`,\n fileUrl,\n };\n }\n\n const fileUrl = file?._full_url;\n if (!fileUrl) {\n return null;\n }\n\n return {\n name: file.originalFileName,\n type: file.mimeType,\n size: file.fileSize,\n id: file.id,\n fileUrl,\n };\n })\n .filter(Boolean) as { name: string; type: string; size: number; id: number | string; fileUrl: string }[];\n\n setFileDetails(details);\n\n return () => {\n objectUrls.forEach((fileUrl) => URL.revokeObjectURL(fileUrl));\n };\n }, [formik.values, fieldLayoutInfo.attrs.name]);\n\n const handleFileView = (url: any) => {\n const previewKind = getMediaPreviewKind({\n url: url?.fileUrl,\n fileName: url?.name,\n mimeType: url?.type,\n });\n\n if (isLightboxMediaKind(previewKind)) {\n setLightboxUrls?.([\n {\n src: url.fileUrl,\n downloadUrl: url.fileUrl,\n type: previewKind === \"video\" ? \"video\" : undefined\n },\n ]);\n setOpenLightbox?.(true);\n return;\n }\n\n openMediaInNewTab(url?.fileUrl);\n }\n\n const renderMediaFileCard = (file: { name: string; type: string; size: number; id: number | string; fileUrl: string }, className = \"\") => (\n <div className={`${styles.mediaAttachmentCard} ${className}`.trim()}>\n <div className={`${styles.mediaAttachmentRow} flex items-center md:gap-2`}>\n <FileReaderExt fileDetails={file} />\n <div className={`${styles.mediaAttachmentMeta} w-full`}>\n <div className=\"flex items-start justify-between gap-4\">\n <button\n type=\"button\"\n className={styles.mediaAttachmentName}\n onClick={() => handleFileView(file)}\n title={file.name}\n >\n {file.name}\n </button>\n <div className={`${styles.mediaAttachmentActions} flex items-center md:gap-2`}>\n <button\n type=\"button\"\n className=\"solid-file-icon-btn\"\n aria-label=\"Download file\"\n onClick={(event) => {\n event.preventDefault();\n event.stopPropagation();\n downloadMediaFile(file?.fileUrl, file?.name);\n }}\n >\n <SolidIcon name=\"si-download\" aria-hidden />\n </button>\n </div>\n </div>\n <div className={styles.mediaAttachmentSize}>\n {formatFileSize(file.size)}\n </div>\n </div>\n </div>\n </div>\n );\n\n return (\n <div className={styles.fieldViewWrapper}>\n {showFieldLabel != false &&\n <p className={`${styles.fieldViewLabel} form-field-label`}>\n {fieldLabel}\n <SolidFieldTooltip fieldContext={fieldContext} />\n </p>\n }\n {fileDetails.length > 0 &&\n renderMediaFileCard(fileDetails[0], styles.mediaAttachmentCardView)\n }\n\n {fileDetails.length > 1 &&\n <div className=\"flex items-center mt-1\">\n <p className=\"m-0\">\n {fileDetails.length - 1} items\n </p>\n <div>\n <SolidButton type=\"button\" size=\"sm\" variant=\"ghost\" onClick={() => setShowAllFiles(true)}>\n View\n </SolidButton>\n </div>\n </div>\n }\n\n <SolidDialog\n open={isShowAllFiles}\n onOpenChange={setShowAllFiles}\n style={{ minWidth: 450 }}\n >\n <SolidDialogHeader>\n <SolidDialogTitle>Items Uploaded</SolidDialogTitle>\n <SolidDialogClose />\n </SolidDialogHeader>\n <SolidDialogBody>\n {fileDetails.length > 1 &&\n fileDetails.map((file, index) => {\n const fileId = `${file.name}-${file.size}`;\n return (\n <div key={fileId} className={index === fileDetails.length - 1 ? \"\" : \"mb-3\"}>\n {renderMediaFileCard(file)}\n </div>\n );\n })\n }\n </SolidDialogBody>\n </SolidDialog>\n\n </div>\n );\n}\n"]}
1
+ {"version":3,"file":"SolidMediaMultipleField.js","sourceRoot":"","sources":["../../../../../src/components/core/form/fields/SolidMediaMultipleField.tsx"],"names":[],"mappings":"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","sourcesContent":["\nimport { DropzonePlaceholder } from \"../../../../components/common/DropzonePlaceholder\";\nimport { DropzoneUpload } from \"../../../../components/common/DropzoneUpload\";\nimport { useDeleteMediaMutation } from \"../../../../redux/api/mediaApi\";\nimport { SolidButton } from \"../../../shad-cn-ui/SolidButton\";\nimport {\n SolidDialog,\n SolidDialogBody,\n SolidDialogClose,\n SolidDialogFooter,\n SolidDialogHeader,\n SolidDialogSeparator,\n SolidDialogTitle,\n} from \"../../../shad-cn-ui/SolidDialog\";\nimport { SolidMessage } from \"../../../shad-cn-ui/SolidMessage\";\nimport { SolidProgressBar } from \"../../../shad-cn-ui/SolidProgressBar\";\nimport { useEffect, useState } from \"react\";\nimport { useDispatch } from \"react-redux\";\nimport { useDropzone } from \"react-dropzone\";\nimport * as Yup from 'yup';\nimport { FormikObject, ISolidField, SolidFieldProps } from \"./ISolidField\";\nimport { FileReaderExt } from \"../../../../components/common/FileReaderExt\";\nimport getAcceptedFileTypes, { getAllowedMediaExtensionsErrorMessage } from \"../../../../helpers/getAcceptedFileTypes\";\nimport { downloadMediaFile } from \"../../../../helpers/downloadMediaFile\";\nimport { getExtensionComponent } from \"../../../../helpers/registry\";\nimport { openMediaInNewTab } from \"../../../../helpers/mediaUrl\";\nimport { getMediaPreviewKind, isLightboxMediaKind } from \"../../../../helpers/mediaType\";\nimport { SolidFormFieldWidgetProps, SolidMediaFormFieldWidgetProps } from \"../../../../types/solid-core\";\nimport { SolidFieldTooltip } from \"../../../../components/common/SolidFieldTooltip\";\nimport { ERROR_MESSAGES } from \"../../../../constants/error-messages\";\nimport { showToast } from \"../../../../redux/features/toastSlice\";\nimport styles from \"./solidFields.module.css\";\nimport { SolidIcon } from \"../../../shad-cn-ui\";\nimport { buildMediaFieldKey, getPersistedMediaId } from \"./mediaFieldUtils\";\n\nexport class SolidMediaMultipleField implements ISolidField {\n\n private fieldContext: SolidFieldProps;\n private setLightboxUrls?: (urls: { src: string; downloadUrl: string }[]) => void;\n private setOpenLightbox?: (open: boolean) => void;\n constructor(fieldContext: SolidFieldProps, setLightboxUrls?: (urls: { src: string; downloadUrl: string }[]) => void,\n setOpenLightbox?: (open: boolean) => void) {\n this.fieldContext = fieldContext;\n this.setLightboxUrls = setLightboxUrls;\n this.setOpenLightbox = setOpenLightbox;\n }\n\n updateFormData(value: any, formData: FormData): any {\n const fieldLayoutInfo = this.fieldContext.field;\n // @ts-ignore\n for (let i = 0; i < value.length; i++) {\n // @ts-ignore\n const file = value[i];\n if (file instanceof File) {\n formData.append(fieldLayoutInfo.attrs.name, file);\n }\n }\n }\n\n initialValue(): any {\n const mediaUrls = this.fieldContext.data && this.fieldContext.data._media && this.fieldContext.data._media[this.fieldContext.field.attrs.name].map((i: any) => i)\n return mediaUrls;\n }\n\n validationSchema(): Yup.Schema {\n\n const fieldMetadata = this.fieldContext.fieldMetadata;\n const fieldLayoutInfo = this.fieldContext.field;\n const fieldLabel = fieldLayoutInfo.label ?? fieldMetadata.displayName;\n\n let schema: Yup.ArraySchema<any, any, any, any>; // Correctly specifying type arguments for ArraySchema\n if (fieldMetadata.required) {\n // For required fields: disallow null, undefined, and empty arrays\n schema = Yup.array()\n .of(\n Yup.mixed<File | object>()\n .required(ERROR_MESSAGES.FIELD_REUQIRED(fieldLabel))\n .test(\n ERROR_MESSAGES.FILE_OBJECT,\n ERROR_MESSAGES.MUST_BE_FILE_OBJECT(fieldLabel),\n (value) =>\n value instanceof File || typeof value === \"object\" // Validate File or object\n )\n )\n .min(1, ERROR_MESSAGES.FIELD_MUST_HAVE_ITEM(fieldLabel)); // Ensure array has at least one item\n } else {\n // For optional fields: allow null, undefined, or an empty array\n schema = Yup.array()\n .of(\n Yup.mixed<File | object>()\n .nullable() // Allow null explicitly\n .test(\n ERROR_MESSAGES.FILE_OBJECT,\n ERROR_MESSAGES.MUST_BE_FILE_OBJECT(fieldLabel),\n (value) =>\n value === null || // Allow null\n value === undefined || // Allow undefined\n value instanceof File || // Allow File\n typeof value === \"object\" // Allow object\n )\n )\n .nullable() // Allow null array explicitly\n .test(\n ERROR_MESSAGES.EMPTY_VALID_ARRAY,\n ERROR_MESSAGES.CONTAIN_EMPTY_ARRAY_OR_FILE_OBECT(fieldLabel),\n (value) => value === null || value === undefined || Array.isArray(value)\n );\n }\n\n\n return schema;\n }\n\n render(formik: FormikObject) {\n const fieldMetadata = this.fieldContext.fieldMetadata;\n const fieldLayoutInfo = this.fieldContext.field;\n const isFormFieldValid = (formik: any, fieldName: string) => formik.touched[fieldName] && formik.errors[fieldName];\n const className = fieldLayoutInfo.attrs?.className || 'field w-full px-2 pt-2';\n\n let viewWidget = fieldLayoutInfo.attrs.viewWidget;\n let editWidget = fieldLayoutInfo.attrs.editWidget;\n if (!editWidget) {\n editWidget = 'DefaultMediaMultipleFormEditWidget';\n }\n if (!viewWidget) {\n viewWidget = 'DefaultMediaMultipleFormViewWidget';\n }\n const viewMode: string = this.fieldContext.viewMode;\n\n\n return (\n <>\n <div className={className}>\n {viewMode === \"view\" &&\n this.renderExtensionRenderMode(viewWidget, formik)\n }\n {viewMode === \"edit\" &&\n <>\n {editWidget &&\n this.renderExtensionRenderMode(editWidget, formik)\n }\n </>\n }\n </div>\n </>\n );\n }\n\n renderExtensionRenderMode(widget: string, formik: FormikObject) {\n let DynamicWidget = getExtensionComponent(widget);\n const widgetProps: SolidMediaFormFieldWidgetProps = {\n formik: formik,\n fieldContext: this.fieldContext,\n setLightboxUrls: this.setLightboxUrls,\n setOpenLightbox: this.setOpenLightbox\n }\n return (\n <>\n {DynamicWidget && <DynamicWidget {...widgetProps} />}\n </>\n )\n }\n}\n\n\nexport const DefaultMediaMultipleFormEditWidget = ({ formik, fieldContext, setLightboxUrls, setOpenLightbox }: SolidMediaFormFieldWidgetProps) => {\n type MediaFileDetail = { name: string; type: string; size: number; mediaId: number | string | null; fileKey: string; fileUrl: string };\n\n const fieldMetadata = fieldContext.fieldMetadata;\n const fieldLayoutInfo = fieldContext.field;\n const className = fieldLayoutInfo.attrs?.className || 'field w-full px-2 pt-2';\n const fieldLabel = fieldLayoutInfo.attrs.label ?? fieldMetadata.displayName;\n const viewMode: string = fieldContext.viewMode;\n const fieldDescription = fieldLayoutInfo.attrs.description ?? fieldMetadata.description;\n const solidFormViewMetaData = fieldContext.solidFormViewMetaData;\n const showFieldLabel = fieldLayoutInfo?.attrs?.showLabel;\n const readOnlyPermission = fieldContext.readOnly ? fieldContext.readOnly : fieldLayoutInfo.attrs.readonly;\n const fieldDisabled = fieldLayoutInfo.attrs?.disabled;\n const fieldReadonly = fieldLayoutInfo.attrs?.readonly;\n const formDisabled = solidFormViewMetaData.data.solidView?.layout?.attrs?.disabled;\n const formReadonly = solidFormViewMetaData.data.solidView?.layout?.attrs?.readonly;\n const isFieldDisabled = formDisabled || fieldDisabled;\n const isFieldReadonly = formReadonly || fieldReadonly || readOnlyPermission;\n\n const [isDeleteImageDialogVisible, setDeleteImageDialogVisible] = useState(false);\n const [fileDetails, setFileDetails] = useState<MediaFileDetail[]>([]);\n const [selectedFileId, setSelectedFileId] = useState<string | null>(null);\n const [fileSizeError, setFileSizeError] = useState<string | null>(null);\n const mediaConfig = solidFormViewMetaData?.data;\n\n const formatFileSize = (size: number) => {\n return size >= 1024 * 1024\n ? `${(size / (1024 * 1024)).toFixed(1)} MB`\n : `${(size / 1024).toFixed(1)} KB`;\n };\n const [deleteMedia] = useDeleteMediaMutation();\n const dispatch = useDispatch();\n useEffect(() => {\n const fieldValue = formik?.values[fieldLayoutInfo.attrs.name];\n if (!Array.isArray(fieldValue) || fieldValue.length === 0) {\n setFileDetails([]);\n return;\n }\n\n const objectUrls: string[] = [];\n const details = fieldValue\n .map((file: File | any): MediaFileDetail | null => {\n if (file instanceof File) {\n const fileUrl = URL.createObjectURL(file);\n objectUrls.push(fileUrl);\n return {\n name: file.name,\n type: file.type,\n size: file.size,\n mediaId: null,\n fileKey: buildMediaFieldKey(file),\n fileUrl,\n };\n }\n\n const fileUrl = file?._full_url;\n if (!fileUrl) {\n return null;\n }\n\n return {\n name: file.originalFileName,\n type: file.mimeType,\n size: file.fileSize,\n mediaId: getPersistedMediaId(file),\n fileKey: buildMediaFieldKey(file),\n fileUrl,\n };\n })\n .filter((detail): detail is MediaFileDetail => detail !== null);\n\n setFileDetails(details);\n\n return () => {\n objectUrls.forEach((fileUrl) => URL.revokeObjectURL(fileUrl));\n };\n }, [formik.values, fieldLayoutInfo.attrs.name]);\n\n const handleDropImages = (acceptedFiles: any[]) => {\n if (!acceptedFiles.length) return;\n setFileSizeError(null);\n const existingFiles = Array.isArray(formik?.values[fieldLayoutInfo.attrs.name])\n ? formik.values[fieldLayoutInfo.attrs.name]\n : [];\n acceptedFiles.forEach((file) => {\n const reader = new FileReader();\n reader.readAsDataURL(file);\n });\n\n fieldContext.onChange(\n {\n target: {\n name: fieldLayoutInfo.attrs.name,\n value: [...existingFiles, ...acceptedFiles],\n type: \"text\",\n },\n } as any,\n \"onFieldChange\"\n );\n };\n\n const confirmDeleteFile = (fileId: string) => {\n setSelectedFileId(fileId);\n setDeleteImageDialogVisible(true);\n };\n\n const deleteFile = async () => {\n if (!selectedFileId) {\n return;\n }\n\n const currentFiles = Array.isArray(formik?.values[fieldLayoutInfo.attrs.name])\n ? formik.values[fieldLayoutInfo.attrs.name]\n : [];\n const fileToDelete = currentFiles.find((file: File | any) => buildMediaFieldKey(file) === selectedFileId);\n\n if (!fileToDelete) {\n setDeleteImageDialogVisible(false);\n setShowAllFiles(false);\n setSelectedFileId(null);\n return;\n }\n\n try {\n const persistedMediaId = getPersistedMediaId(fileToDelete);\n if (persistedMediaId !== null) {\n await deleteMedia(persistedMediaId).unwrap();\n }\n\n const nextValue = currentFiles.filter((file: File | any) => buildMediaFieldKey(file) !== selectedFileId);\n fieldContext.onChange(\n {\n target: {\n name: fieldLayoutInfo.attrs.name,\n value: nextValue,\n type: \"text\",\n },\n } as any,\n \"onFieldChange\"\n );\n setFileDetails((prev) => prev.filter((file) => file.fileKey !== selectedFileId));\n } catch (error: any) {\n console.error(ERROR_MESSAGES.ERROR_DELETING_FILE, error);\n dispatch(showToast({\n severity: \"error\",\n summary: \"Delete Failed\",\n detail: error?.data?.message || error?.message || ERROR_MESSAGES.ERROR_DELETING_FILE,\n life: 4000,\n }));\n }\n\n setDeleteImageDialogVisible(false);\n setShowAllFiles(false);\n setSelectedFileId(null);\n };\n\n const {\n getRootProps,\n getInputProps,\n isDragActive,\n } = useDropzone({\n onDrop: handleDropImages,\n onDropRejected: (fileRejections) => {\n const rejection = fileRejections[0];\n const sizeError = rejection.errors.find(err => err.code === 'file-too-large');\n if (sizeError) {\n setFileSizeError(ERROR_MESSAGES.FILE_TOO_LAREG(fieldMetadata.mediaMaxSizeKb));\n } else {\n const invalidTypeError = rejection.errors.find((error) => error.code === \"file-invalid-type\");\n setFileSizeError(\n (invalidTypeError && getAllowedMediaExtensionsErrorMessage(fieldMetadata.mediaAllowedExtensions))\n || rejection.errors[0]?.message\n || ERROR_MESSAGES.FILE_NOT_ACCEPT\n );\n }\n },\n accept: getAcceptedFileTypes(fieldMetadata.mediaTypes, fieldMetadata.mediaAllowedExtensions, mediaConfig),\n maxSize: fieldMetadata.mediaMaxSizeKb * 1024,\n });\n\n const isFormFieldValid = (formik: any, fieldName: string) => formik.touched[fieldName] && formik.errors[fieldName];\n\n const [isShowAllFiles, setShowAllFiles] = useState(false);\n let DynamicWidget = getExtensionComponent(\"SolidFormFieldViewMediaMultipleWidget\");\n const widgetProps = {\n formik: formik,\n fieldContext: fieldContext,\n setLightboxUrls: setLightboxUrls,\n setOpenLightbox: setOpenLightbox\n }\n\n const handleFileView = (url: any) => {\n const previewKind = getMediaPreviewKind({\n url: url?.fileUrl,\n fileName: url?.name,\n mimeType: url?.type,\n });\n\n if (isLightboxMediaKind(previewKind)) {\n setLightboxUrls?.([\n {\n src: url.fileUrl,\n downloadUrl: url.fileUrl,\n type: previewKind === \"video\" ? \"video\" : undefined\n },\n ]);\n setOpenLightbox?.(true);\n return;\n }\n\n openMediaInNewTab(url?.fileUrl);\n }\n\n\n return (\n <div style={readOnlyPermission === true ? { filter: 'opacity(50%)', pointerEvents: 'none' } : {}}>\n <div className={`${styles.fieldWrapper} relative`}>\n {showFieldLabel != false &&\n <label htmlFor={fieldLayoutInfo.attrs.name} className={`${styles.fieldLabel} form-field-label`}>{fieldLabel}\n {fieldMetadata.required && <span className=\"text-red-500\"> *</span>}\n <SolidFieldTooltip fieldContext={fieldContext} />\n {/* &nbsp; {fieldDescription && <span className=\"form_field_help\">({fieldDescription}) </span>} */}\n </label>\n }\n <div className=\"relative\">\n <div\n {...getRootProps()}\n className=\"solid-dropzone-wrapper\"\n >\n <input {...getInputProps()} />\n <DropzonePlaceholder\n mediaTypes={fieldMetadata.mediaTypes}\n mediaAllowedExtensions={fieldMetadata.mediaAllowedExtensions}\n mediaMaxSizeKb={fieldMetadata.mediaMaxSizeKb}\n />\n </div>\n {isFormFieldValid(formik, fieldLayoutInfo.attrs.name) && (\n <div className=\"absolute mt-1\">\n <SolidMessage severity=\"error\" text={formik?.errors[fieldLayoutInfo.attrs.name]?.toString()} />\n </div>\n )}\n </div>\n {\n fileSizeError &&\n <SolidMessage severity=\"error\" text={fileSizeError?.toString()} />\n }\n </div>\n {fileDetails.length > 0 &&\n <div className={`${styles.mediaAttachmentCard} mt-4`}>\n <div className={`${styles.mediaAttachmentRow} flex items-center gap-2`}>\n <FileReaderExt fileDetails={fileDetails[0]} />\n <div className={`${styles.mediaAttachmentMeta} w-full`}>\n <div className=\"flex items-start justify-between gap-4\">\n <button\n type=\"button\"\n className={styles.mediaAttachmentName}\n onClick={() => handleFileView(fileDetails[0])}\n title={fileDetails[0].name}\n >\n {fileDetails[0].name}\n </button>\n <div className={`${styles.mediaAttachmentActions} flex items-center gap-2`}>\n <button\n type=\"button\"\n className=\"solid-file-icon-btn\"\n disabled={isFieldDisabled || isFieldReadonly}\n aria-label=\"Download file\"\n onClick={(event) => {\n event.preventDefault();\n event.stopPropagation();\n downloadMediaFile(fileDetails[0]?.fileUrl, fileDetails[0]?.name);\n }}\n >\n <SolidIcon name=\"si-download\" aria-hidden />\n </button>\n <button\n type=\"button\"\n className=\"solid-file-icon-btn is-danger\"\n disabled={isFieldDisabled || isFieldReadonly}\n aria-label=\"Remove file\"\n onClick={() => confirmDeleteFile(fileDetails[0].fileKey)}\n >\n <SolidIcon name=\"si-times\" aria-hidden />\n </button>\n </div>\n </div>\n <div className={styles.mediaAttachmentSize}>\n {formatFileSize(fileDetails[0].size)}\n </div>\n </div>\n </div>\n </div>\n }\n\n {fileDetails.length > 1 &&\n <div className=\"flex items-center mt-1\">\n <p className=\"m-0\">\n {fileDetails.length - 1} items\n </p>\n <div>\n <SolidButton type=\"button\" size=\"sm\" variant=\"ghost\" onClick={() => setShowAllFiles(true)}>\n View\n </SolidButton>\n </div>\n </div>\n }\n\n <SolidDialog\n open={isShowAllFiles}\n onOpenChange={setShowAllFiles}\n style={{ minWidth: 450 }}\n >\n <SolidDialogHeader>\n <SolidDialogTitle>Items Uploaded</SolidDialogTitle>\n <SolidDialogClose />\n </SolidDialogHeader>\n <SolidDialogBody>\n {fileDetails.length > 1 &&\n fileDetails.map((file, index) => {\n const fileId = file.fileKey;\n return (\n <div key={fileId} className={index === fileDetails.length - 1 ? \"\" : \"mb-3\"}>\n <div className={styles.mediaAttachmentCard}>\n <div className={`${styles.mediaAttachmentRow} flex items-center gap-2`}>\n <FileReaderExt fileDetails={file} />\n <div className={`${styles.mediaAttachmentMeta} w-full`}>\n <div className=\"flex items-start justify-between gap-4\">\n <button\n type=\"button\"\n className={styles.mediaAttachmentName}\n onClick={() => handleFileView(file)}\n title={file.name}\n >\n {file.name}\n </button>\n <div className={`${styles.mediaAttachmentActions} flex items-center gap-2`}>\n <button\n type=\"button\"\n className=\"solid-file-icon-btn\"\n disabled={isFieldDisabled || isFieldReadonly}\n aria-label=\"Download file\"\n onClick={(event) => {\n event.preventDefault();\n event.stopPropagation();\n downloadMediaFile(file?.fileUrl, file?.name);\n }}\n >\n <SolidIcon name=\"si-download\" aria-hidden />\n </button>\n <button\n type=\"button\"\n className=\"solid-file-icon-btn is-danger\"\n disabled={isFieldDisabled || isFieldReadonly}\n aria-label=\"Remove file\"\n onClick={() => confirmDeleteFile(fileId)}\n >\n <SolidIcon name=\"si-times\" aria-hidden />\n </button>\n </div>\n </div>\n <div className={styles.mediaAttachmentSize}>\n {formatFileSize(file.size)}\n </div>\n </div>\n </div>\n </div>\n </div>\n );\n })\n }\n </SolidDialogBody>\n </SolidDialog>\n <SolidDialog\n open={isDeleteImageDialogVisible}\n onOpenChange={setDeleteImageDialogVisible}\n className=\"solid-shadcn-confirm-dialog\"\n >\n <SolidDialogHeader className=\"solid-shadcn-dialog-head\">\n <SolidDialogTitle>Confirm Delete</SolidDialogTitle>\n <SolidDialogClose />\n </SolidDialogHeader>\n <SolidDialogSeparator className=\"solid-shadcn-dialog-sep\" />\n <SolidDialogBody className=\"solid-shadcn-dialog-body\">\n <p className=\"solid-shadcn-dialog-text\">Are you sure you want to delete this file?</p>\n </SolidDialogBody>\n <SolidDialogFooter className=\"solid-shadcn-dialog-actions\">\n <SolidButton variant=\"destructive\" size=\"sm\" autoFocus onClick={deleteFile}>\n Delete\n </SolidButton>\n <SolidButton variant=\"outline\" size=\"sm\" onClick={() => setDeleteImageDialogVisible(false)}>\n Cancel\n </SolidButton>\n </SolidDialogFooter>\n </SolidDialog>\n </div>\n );\n}\n\nexport const DefaultMediaMultipleFormViewWidget = ({ formik, fieldContext, setLightboxUrls, setOpenLightbox }: SolidMediaFormFieldWidgetProps) => {\n const [fileDetails, setFileDetails] = useState<{ name: string; type: string; size: number; id: number | string; fileUrl: string }[]>([]);\n const [isShowAllFiles, setShowAllFiles] = useState(false);\n const fieldMetadata = fieldContext.fieldMetadata;\n const fieldLayoutInfo = fieldContext.field;\n const className = fieldLayoutInfo.attrs?.className || 'field w-full px-2 pt-2';\n const fieldLabel = fieldLayoutInfo.attrs.label ?? fieldMetadata.displayName;\n const showFieldLabel = fieldLayoutInfo?.attrs?.showLabel;\n\n // useEffect(() => { formik.setFieldValue(fieldLayoutInfo.attrs.name, \"false\") }, [])\n\n const formatFileSize = (size: number) => {\n return size >= 1024 * 1024\n ? `${(size / (1024 * 1024)).toFixed(1)} MB`\n : `${(size / 1024).toFixed(1)} KB`;\n };\n\n useEffect(() => {\n const fieldValue = formik?.values[fieldLayoutInfo.attrs.name];\n if (!Array.isArray(fieldValue) || fieldValue.length === 0) {\n setFileDetails([]);\n return;\n }\n\n const objectUrls: string[] = [];\n const details = fieldValue\n .map((file: File | any) => {\n if (file instanceof File) {\n const fileUrl = URL.createObjectURL(file);\n objectUrls.push(fileUrl);\n return {\n name: file.name,\n type: file.type,\n size: file.size,\n id: `${file.name}-${file.size}`,\n fileUrl,\n };\n }\n\n const fileUrl = file?._full_url;\n if (!fileUrl) {\n return null;\n }\n\n return {\n name: file.originalFileName,\n type: file.mimeType,\n size: file.fileSize,\n id: file.id,\n fileUrl,\n };\n })\n .filter(Boolean) as { name: string; type: string; size: number; id: number | string; fileUrl: string }[];\n\n setFileDetails(details);\n\n return () => {\n objectUrls.forEach((fileUrl) => URL.revokeObjectURL(fileUrl));\n };\n }, [formik.values, fieldLayoutInfo.attrs.name]);\n\n const handleFileView = (url: any) => {\n const previewKind = getMediaPreviewKind({\n url: url?.fileUrl,\n fileName: url?.name,\n mimeType: url?.type,\n });\n\n if (isLightboxMediaKind(previewKind)) {\n setLightboxUrls?.([\n {\n src: url.fileUrl,\n downloadUrl: url.fileUrl,\n type: previewKind === \"video\" ? \"video\" : undefined\n },\n ]);\n setOpenLightbox?.(true);\n return;\n }\n\n openMediaInNewTab(url?.fileUrl);\n }\n\n const renderMediaFileCard = (file: { name: string; type: string; size: number; id: number | string; fileUrl: string }, className = \"\") => (\n <div className={`${styles.mediaAttachmentCard} ${className}`.trim()}>\n <div className={`${styles.mediaAttachmentRow} flex items-center gap-2`}>\n <FileReaderExt fileDetails={file} />\n <div className={`${styles.mediaAttachmentMeta} w-full`}>\n <div className=\"flex items-start justify-between gap-4\">\n <button\n type=\"button\"\n className={styles.mediaAttachmentName}\n onClick={() => handleFileView(file)}\n title={file.name}\n >\n {file.name}\n </button>\n <div className={`${styles.mediaAttachmentActions} flex items-center md:gap-2`}>\n <button\n type=\"button\"\n className=\"solid-file-icon-btn\"\n aria-label=\"Download file\"\n onClick={(event) => {\n event.preventDefault();\n event.stopPropagation();\n downloadMediaFile(file?.fileUrl, file?.name);\n }}\n >\n <SolidIcon name=\"si-download\" aria-hidden />\n </button>\n </div>\n </div>\n <div className={styles.mediaAttachmentSize}>\n {formatFileSize(file.size)}\n </div>\n </div>\n </div>\n </div>\n );\n\n return (\n <div className={styles.fieldViewWrapper}>\n {showFieldLabel != false &&\n <p className={`${styles.fieldViewLabel} form-field-label`}>\n {fieldLabel}\n <SolidFieldTooltip fieldContext={fieldContext} />\n </p>\n }\n {fileDetails.length > 0 &&\n renderMediaFileCard(fileDetails[0], styles.mediaAttachmentCardView)\n }\n\n {fileDetails.length > 1 &&\n <div className=\"flex items-center mt-1\">\n <p className=\"m-0\">\n {fileDetails.length - 1} items\n </p>\n <div>\n <SolidButton type=\"button\" size=\"sm\" variant=\"ghost\" onClick={() => setShowAllFiles(true)}>\n View\n </SolidButton>\n </div>\n </div>\n }\n\n <SolidDialog\n open={isShowAllFiles}\n onOpenChange={setShowAllFiles}\n style={{ minWidth: 450 }}\n >\n <SolidDialogHeader>\n <SolidDialogTitle>Items Uploaded</SolidDialogTitle>\n <SolidDialogClose />\n </SolidDialogHeader>\n <SolidDialogBody>\n {fileDetails.length > 1 &&\n fileDetails.map((file, index) => {\n const fileId = `${file.name}-${file.size}`;\n return (\n <div key={fileId} className={index === fileDetails.length - 1 ? \"\" : \"mb-3\"}>\n {renderMediaFileCard(file)}\n </div>\n );\n })\n }\n </SolidDialogBody>\n </SolidDialog>\n\n </div>\n );\n}\n"]}
@@ -412,7 +412,7 @@ export const DefaultMediaMultipleFormEditWidget = ({ formik, fieldContext, setLi
412
412
  </div>
413
413
  {fileDetails.length > 0 &&
414
414
  <div className={`${styles.mediaAttachmentCard} mt-4`}>
415
- <div className={`${styles.mediaAttachmentRow} flex items-center md:gap-2`}>
415
+ <div className={`${styles.mediaAttachmentRow} flex items-center gap-2`}>
416
416
  <FileReaderExt fileDetails={fileDetails[0]} />
417
417
  <div className={`${styles.mediaAttachmentMeta} w-full`}>
418
418
  <div className="flex items-start justify-between gap-4">
@@ -486,7 +486,7 @@ export const DefaultMediaMultipleFormEditWidget = ({ formik, fieldContext, setLi
486
486
  return (
487
487
  <div key={fileId} className={index === fileDetails.length - 1 ? "" : "mb-3"}>
488
488
  <div className={styles.mediaAttachmentCard}>
489
- <div className={`${styles.mediaAttachmentRow} flex items-center md:gap-2`}>
489
+ <div className={`${styles.mediaAttachmentRow} flex items-center gap-2`}>
490
490
  <FileReaderExt fileDetails={file} />
491
491
  <div className={`${styles.mediaAttachmentMeta} w-full`}>
492
492
  <div className="flex items-start justify-between gap-4">
@@ -646,7 +646,7 @@ export const DefaultMediaMultipleFormViewWidget = ({ formik, fieldContext, setLi
646
646
 
647
647
  const renderMediaFileCard = (file: { name: string; type: string; size: number; id: number | string; fileUrl: string }, className = "") => (
648
648
  <div className={`${styles.mediaAttachmentCard} ${className}`.trim()}>
649
- <div className={`${styles.mediaAttachmentRow} flex items-center md:gap-2`}>
649
+ <div className={`${styles.mediaAttachmentRow} flex items-center gap-2`}>
650
650
  <FileReaderExt fileDetails={file} />
651
651
  <div className={`${styles.mediaAttachmentMeta} w-full`}>
652
652
  <div className="flex items-start justify-between gap-4">
@@ -425,7 +425,7 @@ export var DefaultMediaSingleFormEditWidget = function (_a) {
425
425
  };
426
426
  return (_jsxs("div", { style: (isFieldDisabled === true || isFieldReadonly === true) ? { filter: 'opacity(50%)', pointerEvents: 'none' } : {}, children: [_jsxs("div", { className: "".concat(styles.fieldWrapper, " relative"), children: [showFieldLabel != false &&
427
427
  _jsxs("label", { htmlFor: fieldLayoutInfo.attrs.name, className: "".concat(styles.fieldLabel, " form-field-label"), children: [fieldLabel, fieldMetadata.required && _jsx("span", { className: "text-red-500", children: " *" }), _jsx(SolidFieldTooltip, { fieldContext: fieldContext })] }), _jsxs("div", { className: "relative", children: [_jsxs("div", __assign({}, getRootProps(), { className: "solid-dropzone-wrapper", children: [_jsx("input", __assign({}, getInputProps())), _jsx(DropzonePlaceholder, { mediaTypes: fieldMetadata.mediaTypes, mediaAllowedExtensions: fieldMetadata.mediaAllowedExtensions, mediaMaxSizeKb: fieldMetadata.mediaMaxSizeKb })] })), isFormFieldValid(formik, fieldLayoutInfo.attrs.name) && (_jsx("div", { className: "absolute mt-1", children: _jsx(SolidMessage, { severity: "error", text: (_p = formik === null || formik === void 0 ? void 0 : formik.errors[fieldLayoutInfo.attrs.name]) === null || _p === void 0 ? void 0 : _p.toString() }) }))] }), fileSizeError &&
428
- _jsx(SolidMessage, { severity: "error", text: fileSizeError === null || fileSizeError === void 0 ? void 0 : fileSizeError.toString() }), fileDetails && (_jsx("div", { className: "".concat(styles.mediaAttachmentCard, " mt-4"), children: _jsxs("div", { className: "".concat(styles.mediaAttachmentRow, " flex items-center md:gap-2"), children: [_jsx(FileReaderExt, { fileDetails: fileDetails }), _jsxs("div", { className: "".concat(styles.mediaAttachmentMeta, " w-full"), children: [_jsxs("div", { className: "flex items-start justify-between gap-4", children: [_jsx("button", { type: "button", className: styles.mediaAttachmentName, onClick: function () { return handleFileView(fileDetails); }, title: fileDetails.name, children: fileDetails.name }), _jsxs("div", { className: "".concat(styles.mediaAttachmentActions, " flex items-center gap-2"), children: [_jsx("button", { type: "button", className: "solid-file-icon-btn", disabled: isFieldDisabled || isFieldReadonly, "aria-label": "Download file", onClick: function (event) {
428
+ _jsx(SolidMessage, { severity: "error", text: fileSizeError === null || fileSizeError === void 0 ? void 0 : fileSizeError.toString() }), fileDetails && (_jsx("div", { className: "".concat(styles.mediaAttachmentCard, " mt-4"), children: _jsxs("div", { className: "".concat(styles.mediaAttachmentRow, " flex items-center gap-2"), children: [_jsx(FileReaderExt, { fileDetails: fileDetails }), _jsxs("div", { className: "".concat(styles.mediaAttachmentMeta, " w-full"), children: [_jsxs("div", { className: "flex items-start justify-between gap-4", children: [_jsx("button", { type: "button", className: styles.mediaAttachmentName, onClick: function () { return handleFileView(fileDetails); }, title: fileDetails.name, children: fileDetails.name }), _jsxs("div", { className: "".concat(styles.mediaAttachmentActions, " flex items-center gap-2"), children: [_jsx("button", { type: "button", className: "solid-file-icon-btn", disabled: isFieldDisabled || isFieldReadonly, "aria-label": "Download file", onClick: function (event) {
429
429
  event.preventDefault();
430
430
  event.stopPropagation();
431
431
  downloadMediaFile(fileDetails === null || fileDetails === void 0 ? void 0 : fileDetails.fileUrl, fileDetails === null || fileDetails === void 0 ? void 0 : fileDetails.name);
@@ -495,7 +495,7 @@ export var DefaultMediaSingleFormViewWidget = function (_a) {
495
495
  openMediaInNewTab(url === null || url === void 0 ? void 0 : url.fileUrl);
496
496
  };
497
497
  return (_jsxs("div", { className: "".concat(styles.fieldViewWrapper, " relative"), children: [showFieldLabel != false &&
498
- _jsxs("label", { htmlFor: fieldLayoutInfo.attrs.name, className: "".concat(styles.fieldViewLabel, " form-field-label"), children: [fieldLabel, _jsx(SolidFieldTooltip, { fieldContext: fieldContext })] }), fileDetails && (_jsx("div", { className: "".concat(styles.mediaAttachmentCard, " ").concat(styles.mediaAttachmentCardView, " mt-4"), children: _jsxs("div", { className: "".concat(styles.mediaAttachmentRow, " flex items-center md:gap-2"), children: [_jsx(FileReaderExt, { fileDetails: fileDetails }), _jsxs("div", { className: "".concat(styles.mediaAttachmentMeta, " w-full"), children: [_jsxs("div", { className: "flex items-start justify-between gap-4", children: [_jsx("button", { type: "button", className: styles.mediaAttachmentName, onClick: function () { return handleFileView(fileDetails); }, title: fileDetails.name, children: fileDetails.name }), _jsx("div", { className: "".concat(styles.mediaAttachmentActions, " flex items-center md:gap-2"), children: _jsx("button", { type: "button", className: "solid-file-icon-btn", "aria-label": "Download file", onClick: function (event) {
498
+ _jsxs("label", { htmlFor: fieldLayoutInfo.attrs.name, className: "".concat(styles.fieldViewLabel, " form-field-label"), children: [fieldLabel, _jsx(SolidFieldTooltip, { fieldContext: fieldContext })] }), fileDetails && (_jsx("div", { className: "".concat(styles.mediaAttachmentCard, " ").concat(styles.mediaAttachmentCardView, " mt-4"), children: _jsxs("div", { className: "".concat(styles.mediaAttachmentRow, " flex items-center gap-2"), children: [_jsx(FileReaderExt, { fileDetails: fileDetails }), _jsxs("div", { className: "".concat(styles.mediaAttachmentMeta, " w-full"), children: [_jsxs("div", { className: "flex items-start justify-between gap-4", children: [_jsx("button", { type: "button", className: styles.mediaAttachmentName, onClick: function () { return handleFileView(fileDetails); }, title: fileDetails.name, children: fileDetails.name }), _jsx("div", { className: "".concat(styles.mediaAttachmentActions, " flex items-center md:gap-2"), children: _jsx("button", { type: "button", className: "solid-file-icon-btn", "aria-label": "Download file", onClick: function (event) {
499
499
  event.preventDefault();
500
500
  event.stopPropagation();
501
501
  downloadMediaFile(fileDetails === null || fileDetails === void 0 ? void 0 : fileDetails.fileUrl, fileDetails === null || fileDetails === void 0 ? void 0 : fileDetails.name);