@solidxai/core-ui 0.1.8-beta.7 → 0.1.8-beta.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/auth/AuthLayout.d.ts.map +1 -1
- package/dist/components/auth/AuthLayout.js +16 -32
- package/dist/components/auth/AuthLayout.js.map +1 -1
- package/dist/components/auth/AuthLayout.tsx +4 -20
- package/dist/components/auth/AuthTabs.d.ts.map +1 -1
- package/dist/components/auth/AuthTabs.js +9 -9
- package/dist/components/auth/AuthTabs.js.map +1 -1
- package/dist/components/auth/AuthTabs.tsx +14 -15
- package/dist/components/auth/SolidOTPVerify.d.ts +3 -0
- package/dist/components/auth/SolidOTPVerify.d.ts.map +1 -0
- package/dist/components/auth/SolidOTPVerify.js +67 -0
- package/dist/components/auth/SolidOTPVerify.js.map +1 -0
- package/dist/components/auth/SolidOTPVerify.tsx +133 -0
- package/dist/components/auth/SolidRegister.d.ts.map +1 -1
- package/dist/components/auth/SolidRegister.js +1 -1
- package/dist/components/auth/SolidRegister.js.map +1 -1
- package/dist/components/auth/SolidRegister.tsx +12 -5
- package/dist/components/common/AuthBanner.js.map +1 -1
- package/dist/components/common/GeneralSettings.d.ts.map +1 -1
- package/dist/components/common/GeneralSettings.js +41 -46
- package/dist/components/common/GeneralSettings.js.map +1 -1
- package/dist/components/common/GeneralSettings.tsx +0 -19
- package/dist/components/common/SolidThemeProvider.d.ts.map +1 -1
- package/dist/components/common/SolidThemeProvider.js +5 -21
- package/dist/components/common/SolidThemeProvider.js.map +1 -1
- package/dist/components/common/SolidThemeProvider.tsx +6 -24
- package/dist/components/core/common/LoadDynamicJsxComponent.d.ts +2 -0
- package/dist/components/core/common/LoadDynamicJsxComponent.d.ts.map +1 -0
- package/dist/components/core/common/LoadDynamicJsxComponent.js +50 -0
- package/dist/components/core/common/LoadDynamicJsxComponent.js.map +1 -0
- package/dist/components/core/common/LoadDynamicJsxComponent.tsx +70 -0
- package/dist/components/core/form/SolidFormView.js +42 -41
- package/dist/components/core/form/SolidFormView.js.map +1 -1
- package/dist/components/core/form/SolidFormView.tsx +16 -16
- package/dist/components/core/form/fields/widgets/SolidS3FileViewerWidget.d.ts +1 -1
- package/dist/components/core/form/fields/widgets/SolidS3FileViewerWidget.js +1 -1
- package/dist/components/core/form/fields/widgets/SolidS3FileViewerWidget.js.map +1 -1
- package/dist/components/core/form/fields/widgets/SolidS3FileViewerWidget.tsx +1 -1
- package/dist/components/core/kanban/SolidKanbanView.d.ts.map +1 -1
- package/dist/components/core/kanban/SolidKanbanView.js +41 -44
- package/dist/components/core/kanban/SolidKanbanView.js.map +1 -1
- package/dist/components/core/kanban/SolidKanbanView.tsx +16 -25
- package/dist/components/core/kanban/SolidManyToOneFilterElement.d.ts.map +1 -1
- package/dist/components/core/kanban/SolidManyToOneFilterElement.js.map +1 -1
- package/dist/components/core/kanban/SolidManyToOneFilterElement.tsx +2 -1
- package/dist/components/core/kanban/kanban-fields/SolidMediaMultipleKanbanField.d.ts.map +1 -1
- package/dist/components/core/kanban/kanban-fields/SolidMediaMultipleKanbanField.js +2 -2
- package/dist/components/core/kanban/kanban-fields/SolidMediaMultipleKanbanField.js.map +1 -1
- package/dist/components/core/kanban/kanban-fields/SolidMediaMultipleKanbanField.tsx +10 -21
- package/dist/components/core/kanban/kanban-fields/SolidMediaSingleKanbanField.d.ts.map +1 -1
- package/dist/components/core/kanban/kanban-fields/SolidMediaSingleKanbanField.js +2 -2
- package/dist/components/core/kanban/kanban-fields/SolidMediaSingleKanbanField.js.map +1 -1
- package/dist/components/core/kanban/kanban-fields/SolidMediaSingleKanbanField.tsx +10 -18
- package/dist/components/core/kanban/kanban-fields/SolidShortTextKanbanField.d.ts.map +1 -1
- package/dist/components/core/kanban/kanban-fields/SolidShortTextKanbanField.js +6 -3
- package/dist/components/core/kanban/kanban-fields/SolidShortTextKanbanField.js.map +1 -1
- package/dist/components/core/kanban/kanban-fields/SolidShortTextKanbanField.tsx +24 -30
- package/dist/components/core/kanban/kanban-fields/relations/SolidRelationManyToOneKanbanField.js.map +1 -1
- package/dist/components/core/kanban/kanban-fields/relations/SolidRelationManyToOneKanbanField.tsx +2 -2
- package/dist/components/core/list/SolidListView.d.ts.map +1 -1
- package/dist/components/core/list/SolidListView.js +3 -11
- package/dist/components/core/list/SolidListView.js.map +1 -1
- package/dist/components/core/list/SolidListView.tsx +27 -48
- package/dist/components/core/list/SolidListViewRowButtonContextMenu.d.ts +1 -1
- package/dist/components/core/list/SolidListViewRowButtonContextMenu.d.ts.map +1 -1
- package/dist/components/core/list/SolidListViewRowButtonContextMenu.js +7 -6
- package/dist/components/core/list/SolidListViewRowButtonContextMenu.js.map +1 -1
- package/dist/components/core/list/SolidListViewRowButtonContextMenu.tsx +10 -9
- package/dist/components/core/users/ApiKeysTab/ApiKeysTab.css +283 -9
- package/dist/components/core/users/ApiKeysTab/ApiKeysTab.d.ts.map +1 -1
- package/dist/components/core/users/ApiKeysTab/ApiKeysTab.js +35 -28
- package/dist/components/core/users/ApiKeysTab/ApiKeysTab.js.map +1 -1
- package/dist/components/core/users/ApiKeysTab/ApiKeysTab.tsx +64 -62
- package/dist/components/core/users/ApiKeysTab/GenerateApiKeyModal.d.ts +2 -1
- package/dist/components/core/users/ApiKeysTab/GenerateApiKeyModal.d.ts.map +1 -1
- package/dist/components/core/users/ApiKeysTab/GenerateApiKeyModal.js +4 -4
- package/dist/components/core/users/ApiKeysTab/GenerateApiKeyModal.js.map +1 -1
- package/dist/components/core/users/ApiKeysTab/GenerateApiKeyModal.tsx +17 -10
- package/dist/components/core/users/ApiKeysTab/RevealApiKeyModal.d.ts.map +1 -1
- package/dist/components/core/users/ApiKeysTab/RevealApiKeyModal.js +2 -19
- package/dist/components/core/users/ApiKeysTab/RevealApiKeyModal.js.map +1 -1
- package/dist/components/core/users/ApiKeysTab/RevealApiKeyModal.tsx +24 -43
- package/dist/components/core/users/CreateUser.css +114 -0
- package/dist/components/core/users/CreateUser.d.ts +1 -0
- package/dist/components/core/users/CreateUser.d.ts.map +1 -1
- package/dist/components/core/users/CreateUser.js +4 -3
- package/dist/components/core/users/CreateUser.js.map +1 -1
- package/dist/components/core/users/CreateUser.tsx +32 -26
- package/dist/components/layout/context/layoutcontext.js +2 -2
- package/dist/components/layout/context/layoutcontext.js.map +1 -1
- package/dist/components/layout/context/layoutcontext.tsx +2 -2
- package/dist/components/shad-cn-ui/SolidConfirmDialog.d.ts +6 -1
- package/dist/components/shad-cn-ui/SolidConfirmDialog.d.ts.map +1 -1
- package/dist/components/shad-cn-ui/SolidConfirmDialog.js +3 -3
- package/dist/components/shad-cn-ui/SolidConfirmDialog.js.map +1 -1
- package/dist/components/shad-cn-ui/SolidConfirmDialog.tsx +15 -3
- package/dist/components/shad-cn-ui/SolidTabs.d.ts.map +1 -1
- package/dist/components/shad-cn-ui/SolidTabs.js +2 -2
- package/dist/components/shad-cn-ui/SolidTabs.js.map +1 -1
- package/dist/components/shad-cn-ui/SolidTabs.tsx +0 -2
- package/dist/nextAuth/authProviders.d.ts +4 -0
- package/dist/nextAuth/authProviders.d.ts.map +1 -0
- package/dist/nextAuth/authProviders.js +198 -0
- package/dist/nextAuth/authProviders.js.map +1 -0
- package/dist/nextAuth/authProviders.tsx +232 -0
- package/dist/nextAuth/handleLogout.d.ts +2 -0
- package/dist/nextAuth/handleLogout.d.ts.map +1 -0
- package/dist/nextAuth/handleLogout.js +36 -0
- package/dist/nextAuth/handleLogout.js.map +1 -0
- package/dist/nextAuth/handleLogout.tsx +39 -0
- package/dist/nextAuth/refreshAccessToken.d.ts +2 -0
- package/dist/nextAuth/refreshAccessToken.d.ts.map +1 -0
- package/dist/nextAuth/refreshAccessToken.js +24 -0
- package/dist/nextAuth/refreshAccessToken.js.map +1 -0
- package/dist/nextAuth/refreshAccessToken.tsx +28 -0
- package/dist/redux/features/settingsSlice.d.ts +20 -0
- package/dist/redux/features/settingsSlice.d.ts.map +1 -0
- package/dist/redux/features/settingsSlice.js +39 -0
- package/dist/redux/features/settingsSlice.js.map +1 -0
- package/dist/redux/features/settingsSlice.ts +60 -0
- package/dist/resources/globals.css +97 -77
- package/dist/resources/shadcn-base.css +62 -304
- package/package.json +1 -1
- package/dist/components/core/list/SolidDataTablePagination.d.ts +0 -15
- package/dist/components/core/list/SolidDataTablePagination.d.ts.map +0 -1
- package/dist/components/core/list/SolidDataTablePagination.js +0 -22
- package/dist/components/core/list/SolidDataTablePagination.js.map +0 -1
- package/dist/components/core/list/SolidDataTablePagination.tsx +0 -71
- package/dist/components/solid-ui/SolidButton.d.ts +0 -14
- package/dist/components/solid-ui/SolidButton.d.ts.map +0 -1
- package/dist/components/solid-ui/SolidButton.js +0 -36
- package/dist/components/solid-ui/SolidButton.js.map +0 -1
- package/dist/components/solid-ui/SolidButton.tsx +0 -54
- package/dist/components/solid-ui/SolidTabs.d.ts +0 -18
- package/dist/components/solid-ui/SolidTabs.d.ts.map +0 -1
- package/dist/components/solid-ui/SolidTabs.js +0 -22
- package/dist/components/solid-ui/SolidTabs.js.map +0 -1
- package/dist/components/solid-ui/SolidTabs.tsx +0 -73
- package/dist/components/solid-ui/index.d.ts +0 -3
- package/dist/components/solid-ui/index.d.ts.map +0 -1
- package/dist/components/solid-ui/index.js +0 -3
- package/dist/components/solid-ui/index.js.map +0 -1
- package/dist/components/solid-ui/index.ts +0 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SolidKanbanView.js","sourceRoot":"","sources":["../../../../src/components/core/kanban/SolidKanbanView.tsx"],"names":[],"mappings":"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","sourcesContent":["import { permissionExpression } from \"../../../helpers/permissions\";\nimport { createSolidEntityApi } from \"../../../redux/api/solidEntityApi\";\nimport { useGetSolidViewLayoutQuery } from \"../../../redux/api/solidViewApi\";\nimport { useLazyCheckIfPermissionExistsQuery } from \"../../../redux/api/userApi\";\nimport { DropResult } from \"@hello-pangea/dnd\";\nimport qs from \"qs\";\nimport { useEffect, useRef, useState } from \"react\";\nimport { SolidCreateButton } from \"../common/SolidCreateButton\";\nimport { SolidGlobalSearchElement } from \"../common/SolidGlobalSearchElement\";\nimport KanbanBoard from \"./KanbanBoard\";\nimport CompactImage from '../../../resources/images/layout/images/compact.png';\nimport CozyImage from '../../../resources/images/layout/images/cozy.png';\nimport ComfortableImage from '../../../resources/images/layout/images/comfortable.png';\nimport { SolidLightbox } from \"../../shad-cn-ui/SolidLightbox\";\nimport type { SolidLightboxSlide } from \"../../shad-cn-ui/SolidLightbox\";\nimport { useRouter } from \"../../../hooks/useRouter\";\nimport { SolidKanbanViewConfigure } from \"./SolidKanbanViewConfigure\";\nimport { KanbanUserViewLayout } from \"./KanbanUserViewLayout\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { setFilterObjectToLocalStorage, getFilterObjectFromLocalStorage } from \"../list/SolidListView\";\nimport { ERROR_MESSAGES } from \"../../../constants/error-messages\";\nimport { showNavbar, toggleNavbar } from \"../../../redux/features/navbarSlice\";\nimport { normalizeSolidListTreeKanbanActionPath } from \"../../../helpers/routePaths\";\nimport { getMediaTypeFromUrl } from \"../../../helpers/mediaType\";\nimport { showToast } from \"../../../redux/features/toastSlice\";\nimport { usePathname } from \"../../../hooks/usePathname\";\nimport { useSearchParams } from \"../../../hooks/useSearchParams\";\nimport { SolidHeaderRequestStatus } from \"../../common/SolidHeaderRequestStatus\";\nimport {\n SolidButton,\n SolidDialog,\n SolidDialogBody,\n SolidDialogClose,\n SolidDialogFooter,\n SolidDialogHeader,\n SolidDialogSeparator,\n SolidDialogTitle,\n SolidIcon,\n} from \"../../shad-cn-ui\";\nimport { FilterMatchMode } from \"../filter/filterMatchMode\";\n\ntype SolidKanbanViewParams = {\n moduleName: string;\n modelName: string;\n embeded: boolean;\n};\n\n\nexport const SolidKanbanView = (params: SolidKanbanViewParams) => {\n\n const visibleNavbar = useSelector((state: any) => state.navbarState?.visibleNavbar);\n const dispatch = useDispatch()\n\n const solidGlobalSearchElementRef = useRef();\n const router = useRouter();\n const searchParams = useSearchParams();\n // TODO: The initial filter state will be created based on the fields which are present on this kanban view. \n const [filters, setFilters] = useState<any>();\n const [toPopulate, setToPopulate] = useState<string[]>([]);\n const [toPopulateMedia, setToPopulateMedia] = useState<string[]>([]);\n const [actionsAllowed, setActionsAllowed] = useState<string[]>([]);\n const [showGlobalSearchElement, setShowGlobalSearchElement] = useState<boolean>(false);\n const [showArchived, setShowArchived] = useState(false);\n const sizeOptions = [\n { label: 'Compact', value: 'small', image: CompactImage },\n { label: 'Cozy', value: 'normal', image: CozyImage },\n { label: 'Comfortable', value: 'large', image: ComfortableImage }\n ]\n const [size, setSize] = useState<string | any>(sizeOptions[1].value);\n const [viewModes, setViewModes] = useState<any>([]);\n const [groupByFieldName, setGroupByFieldName] = useState<string>(\"\");\n const [triggerCheckIfPermissionExists] = useLazyCheckIfPermissionExistsQuery();\n const [openLightbox, setOpenLightbox] = useState(false);\n const [lightboxUrls, setLightboxUrls] = useState<any[]>([]);\n const [filterQueryString, setFilterQueryString] = useState<any>();\n const [isLayoutDialogVisible, setLayoutDialogVisible] = useState(false);\n const lightboxSlides: SolidLightboxSlide[] = Array.isArray(lightboxUrls)\n ? lightboxUrls\n .map((item: any) => {\n const src = item?.src || item?.downloadUrl || \"\";\n if (!src) {\n return null;\n }\n const mediaType = getMediaTypeFromUrl(src);\n const slide: SolidLightboxSlide = { src };\n if (mediaType !== \"image\") {\n slide.type = mediaType;\n }\n return slide;\n })\n .filter((slide): slide is SolidLightboxSlide => !!slide)\n : [];\n\n const pushFiltersToRouter = (filterQueryString: any) => {\n // @ts-ignore\n router.push(`?${filterQueryString}`, undefined, { shallow: true });\n };\n\n useEffect(() => {\n if (filterQueryString) {\n pushFiltersToRouter(filterQueryString);\n }\n }, [filterQueryString]);\n\n\n\n useEffect(() => {\n const fetchPermissions = async () => {\n if (params.modelName) {\n const permissionNames = [\n permissionExpression(params.modelName, 'create'),\n permissionExpression(params.modelName, 'delete'),\n permissionExpression(params.modelName, 'update'),\n permissionExpression(params.modelName, 'findMany'),\n permissionExpression('importTransaction', 'create'),\n permissionExpression('exportTransaction', 'create'),\n permissionExpression('userViewMetadata', 'create'),\n permissionExpression('savedFilters', 'create')\n ]\n const queryData = {\n permissionNames: permissionNames\n };\n const queryString = qs.stringify(queryData, {\n encodeValuesOnly: true\n });\n const response = await triggerCheckIfPermissionExists(queryString);\n setActionsAllowed(response.data.data);\n }\n };\n fetchPermissions();\n }, [params.modelName]);\n\n\n // Create the RTK slices for this entity\n const entityApi = createSolidEntityApi(params.modelName);\n const {\n useDeleteMultipleSolidEntitiesMutation,\n useLazyGetSolidEntitiesQuery,\n usePatchUpdateSolidEntityMutation\n } = entityApi;\n\n const menuItemId = searchParams.get(\"menuItemId\");\n const menuItemName = searchParams.get(\"menuItemName\");\n const actionId = searchParams.get(\"actionId\");\n const actionName = searchParams.get(\"actionName\");\n\n // Get the kanban view layout & metadata first. \n const kanbanViewMetaDataQs = qs.stringify(\n {\n modelName: params.modelName,\n moduleName: params.moduleName,\n viewType: \"kanban\",\n menuItemId: menuItemId,\n menuItemName: menuItemName,\n actionId: actionId,\n actionName: actionName,\n },\n {\n encodeValuesOnly: true,\n }\n );\n const [kanbanViewMetaData, setKanbanViewMetaData] = useState<any>({});\n\n const {\n data: solidKanbanViewMetaData } = useGetSolidViewLayoutQuery(kanbanViewMetaDataQs);\n\n\n\n const initialFilterMethod = () => {\n\n const solidView = solidKanbanViewMetaData.data.solidView;\n const solidFieldsMetadata = solidKanbanViewMetaData.data.solidFieldsMetadata;\n\n const initialFilters: any = {};\n const toPopulate: string[] = [];\n const toPopulateMedia: string[] = [];\n function findCardNode(nodes: any[] = []): any {\n for (const node of nodes) {\n if (!node) continue;\n if (node.type === \"card\") return node;\n if (Array.isArray(node.children) && node.children.length > 0) {\n const nestedCard = findCardNode(node.children);\n if (nestedCard) return nestedCard;\n }\n }\n\n return null;\n }\n function extractFields(nodes: any, result: any = []) {\n if (!nodes) return result;\n if (Array.isArray(nodes)) {\n nodes.forEach((node: any) => extractFields(node, result));\n return result;\n }\n if (nodes.type === \"field\") {\n result.push(nodes);\n }\n if (nodes.children) {\n nodes.children.forEach((child: any) => extractFields(child, result));\n }\n return result;\n }\n\n const cardNode = findCardNode(solidView?.layout?.children || []);\n const fieldSource = cardNode?.children?.length ? cardNode.children : solidView.layout;\n const layoutFields = extractFields(fieldSource);\n\n for (let i = 0; i < layoutFields.length; i++) {\n const column = layoutFields[i];\n const fieldMetadata = solidFieldsMetadata[column.attrs.name];\n if (fieldMetadata) {\n\n // Form the initial filters after iterating over the columns and field metadata. \n if (['int', 'bigint', 'float', 'decimal'].includes(fieldMetadata.type)) {\n // initialFilters[column.attrs.name] = { operator: FilterOperator.OR, constraints: [{ value: null, matchMode: FilterMatchMode.EQUALS }] }\n initialFilters[column.attrs.name] = { value: null, matchMode: FilterMatchMode.EQUALS }\n }\n else if (['date', 'datetime', 'time', 'boolean'].includes(fieldMetadata.type)) {\n // initialFilters[column.attrs.name] = { operator: FilterOperator.OR, constraints: [{ value: null, matchMode: FilterMatchMode.DATE_IS }] }\n initialFilters[column.attrs.name] = { value: null, matchMode: FilterMatchMode.EQUALS }\n }\n else if (['relation', 'selectionStatic', 'selectionDynamic'].includes(fieldMetadata.type)) {\n initialFilters[column.attrs.name] = { value: null, matchMode: FilterMatchMode.IN }\n }\n else {\n // initialFilters[column.attrs.name] = { operator: FilterOperator.OR, constraints: [{ value: null, matchMode: FilterMatchMode.STARTS_WITH }] }\n initialFilters[column.attrs.name] = { value: null, matchMode: FilterMatchMode.STARTS_WITH }\n }\n\n if (column.attrs.name === 'id') {\n initialFilters[column.attrs.name] = { value: null, matchMode: FilterMatchMode.IN }\n }\n\n // Form the \"toPopulate\" array. \n if (fieldMetadata.type === 'relation') {\n toPopulate.push(fieldMetadata.name);\n }\n if (fieldMetadata.type === 'mediaSingle' || fieldMetadata.type === 'mediaMultiple') {\n toPopulateMedia.push(fieldMetadata.name);\n }\n }\n }\n\n // setFilters(initialFilters);\n const recordsInSwimlane = solidKanbanViewMetaData?.data?.solidView?.layout?.attrs?.recordsInSwimlane ? solidKanbanViewMetaData?.data?.solidView?.layout?.attrs?.recordsInSwimlane : 10;\n // setToPopulate(toPopulate);\n // setToPopulateMedia(toPopulateMedia);\n // setRecordsInSwimlane(recordsInSwimlane);\n // setToPopulate(toPopulate);\n // setToPopulateMedia(toPopulateMedia);\n return { recordsInSwimlane, toPopulate, toPopulateMedia }\n }\n\n\n // Initial Filter data \n useEffect(() => {\n\n if (solidKanbanViewMetaData) {\n setKanbanViewMetaData(solidKanbanViewMetaData);\n setViewModes(solidKanbanViewMetaData?.data?.viewModes);\n setGroupByFieldName(solidKanbanViewMetaData?.data?.solidView?.layout?.attrs?.groupBy || \"\");\n }\n }, [solidKanbanViewMetaData]);\n\n // All kanban view state.\n const [kanbanViewData, setKanbanViewData] = useState<any>([]);\n const [kanbanLoadMoreData, setKanbanLoadMoreData] = useState<any>({});\n const [recordsInSwimlane, setRecordsInSwimlane] = useState(10);\n const [selectedRecords, setSelectedRecords] = useState<any[]>([]);\n const [loading, setLoading] = useState<boolean>(true);\n const [isDialogVisible, setDialogVisible] = useState(false);\n const [createButtonUrl, setCreateButtonUrl] = useState<string>();\n const [editButtonUrl, setEditButtonUrl] = useState<string>();\n const [createActionQueryParams, setCreateActionQueryParams] = useState<Record<string, string>>({});\n const [editActionQueryParams, setEditActionQueryParams] = useState<Record<string, string>>({});\n const [columnsCount, setColumnsCount] = useState(5);\n const [swimLaneCurrentPageNumber, setSwimLaneCurrentPageNumber] = useState(1);\n const [queryDataLoaded, setQueryDataLoaded] = useState(false);\n const [showSaveFilterPopup, setShowSaveFilterPopup] = useState<boolean>(false);\n const [maxSwimLanesCount, setMaxSwimLanesCount] = useState<number>(0);\n const pathname = usePathname();\n // @ts-ignore\n const editBaseUrl = normalizeSolidListTreeKanbanActionPath(pathname, editButtonUrl || \"form\");\n // Get the kanban view data.\n // const [triggerGetSolidEntitiesForKanban, { data: solidEntityKanbanViewData, isLoading, error }] = useLazyGetSolidKanbanEntitiesQuery();\n const [triggerGetSolidEntities, { data: solidEntityKanbanViewData }] = useLazyGetSolidEntitiesQuery();\n\n // Delete mutation \n const [\n deleteManySolidEntities,\n {\n isLoading: isDeleteSolidEntitiesLoading,\n isSuccess: isDeleteSolidEntitiesSucess,\n },\n ] = useDeleteMultipleSolidEntitiesMutation();\n const [\n patchKanbanView,\n {\n isLoading: isPatchKanbanViewLoading,\n },\n ] = usePatchUpdateSolidEntityMutation();\n\n // After data is fetched populate the kanban view state so as to be able to render the data. \n useEffect(() => {\n if (solidEntityKanbanViewData) {\n // Merge groupRecords by groupName: update existing, add new\n setMaxSwimLanesCount(solidEntityKanbanViewData?.meta?.totalRecords || 0);\n const groupRecords = solidEntityKanbanViewData?.groupRecords || [];\n const groupMap = new Map((kanbanViewData || []).map((g: any) => [g.groupName, g]));\n groupRecords.forEach((newGroup: any) => {\n groupMap.set(newGroup.groupName, newGroup);\n });\n const latestKanbanGroupData = Array.from(groupMap.values());\n setKanbanViewData(latestKanbanGroupData);\n const loadmoredata = Object.entries(latestKanbanGroupData).reduce((acc: any, [, value]: any) => {\n acc[value.groupName] = {\n offset: (value.groupData.meta.currentPage - 1) * value.groupData.meta.perPage,\n limit: value.groupData.meta.perPage,\n count: value.groupData.meta.totalRecords\n };\n return acc;\n }, {});\n\n setKanbanLoadMoreData(loadmoredata)\n setLoading(false);\n }\n }, [solidEntityKanbanViewData]);\n\n useEffect(() => {\n if (solidKanbanViewMetaData) {\n const kanbanViewLayoutAttrs = solidKanbanViewMetaData?.data?.solidView?.layout?.attrs;\n const createActionUrl = kanbanViewLayoutAttrs?.createAction && kanbanViewLayoutAttrs?.createAction?.type === \"custom\" ? kanbanViewLayoutAttrs?.createAction?.customComponent : \"form/new\";\n const editActionUrl = kanbanViewLayoutAttrs?.editAction && kanbanViewLayoutAttrs?.editAction?.type === \"custom\" ? kanbanViewLayoutAttrs?.editAction?.customComponent : \"form\";\n\n if (kanbanViewLayoutAttrs?.createAction) {\n setCreateActionQueryParams({\n actionName: kanbanViewLayoutAttrs.createAction.name,\n actionType: kanbanViewLayoutAttrs.createAction.type,\n actionContext: kanbanViewLayoutAttrs.createAction.context,\n });\n }\n if (kanbanViewLayoutAttrs?.editAction) {\n setEditActionQueryParams({\n actionName: kanbanViewLayoutAttrs.editAction.name,\n actionType: kanbanViewLayoutAttrs.editAction.type,\n actionContext: kanbanViewLayoutAttrs.editAction.context,\n });\n }\n\n if (createActionUrl) {\n setCreateButtonUrl(createActionUrl)\n }\n if (editActionUrl) {\n setEditButtonUrl(editActionUrl)\n }\n }\n }, [solidKanbanViewMetaData])\n\n // Fetch data after toPopulate has been populated...\n useEffect(() => {\n\n if (solidKanbanViewMetaData) {\n\n const swimlanesCount = solidKanbanViewMetaData?.data.solidView?.layout?.attrs?.swimlanesCount || 5;\n if (groupByFieldName) {\n\n const queryObject = getFilterObjectFromLocalStorage();\n let queryString = \"\";\n if (queryObject) {\n const filters = {\n $and: []\n }\n if (queryObject.custom_filter_predicate) {\n // @ts-ignore\n filters.$and.push(queryObject.custom_filter_predicate);\n }\n if (queryObject.search_predicate) {\n // @ts-ignore\n filters.$and.push(queryObject.search_predicate);\n }\n // if (queryObject.saved_filter_predicate) {\n // filters.$and.push(queryObject.saved_filter_predicate);\n // }\n // if (queryObject.predefined_search_predicate) {\n // filters.$and.push(queryObject.predefined_search_predicate);\n // }\n\n const queryData = {\n offset: 0,\n limit: Number(queryObject.limit) + Number(queryObject.offset),\n // fields: queryObject.fields || [`${groupByFieldName}`, `count(${groupByFieldName})`],\n groupBy: queryObject.groupBy || groupByFieldName,\n // @ts-ignore\n populateMedia: queryObject.populateMedia || toPopulateMedia,\n populateGroup: queryObject.populateGroup || true,\n groupFilter: {\n limit: Number(queryObject.groupFilter.limit) + Number(queryObject.groupFilter.offset) || kanbanViewMetaData?.data?.solidView?.layout?.attrs?.recordsInSwimlane,\n offset: 0,\n filters: filters,\n // @ts-ignore\n populate: queryObject.groupFilter.populate || toPopulate,\n // @ts-ignore\n populateMedia: queryObject.groupFilter.populateMedia || toPopulateMedia\n }\n // sort: [`id:desc`],\n };\n\n\n const { recordsInSwimlane, toPopulate, toPopulateMedia } = initialFilterMethod();\n setToPopulate(toPopulate);\n setToPopulateMedia(toPopulateMedia);\n setRecordsInSwimlane(recordsInSwimlane);\n // setFilters(filters);\n setQueryDataLoaded(true);\n\n queryString = qs.stringify(queryData, {\n encodeValuesOnly: true\n });\n\n } else {\n const { recordsInSwimlane, toPopulate, toPopulateMedia } = initialFilterMethod();\n const queryData = {\n offset: 0,\n limit: swimlanesCount,\n // fields: [`${groupByFieldName}`, `count(${groupByFieldName})`],\n groupBy: groupByFieldName,\n populateMedia: toPopulateMedia,\n populateGroup: true,\n groupFilter: {\n limit: kanbanViewMetaData?.data?.solidView?.layout?.attrs?.recordsInSwimlane || 10,\n offset: 0,\n filters: filters,\n populate: toPopulate,\n populateMedia: toPopulateMedia\n }\n // sort: [`id:desc`],\n };\n setRecordsInSwimlane(recordsInSwimlane);\n setToPopulate(toPopulate);\n setToPopulateMedia(toPopulateMedia);\n\n // fields=status&groupBy=status&fields=count(status)&populateGroup=true\n queryString = qs.stringify(queryData, {\n encodeValuesOnly: true\n });\n\n setQueryDataLoaded(true)\n }\n\n // triggerGetSolidEntities(queryString);\n setSelectedRecords([]);\n }\n }\n }, [isDeleteSolidEntitiesSucess, groupByFieldName, solidKanbanViewMetaData]);\n\n // clickable link allowing one to open the detail / form view.\n\n // handle bulk deletion\n const deleteBulk = () => {\n let deleteList: any = [];\n selectedRecords.forEach((element: any) => {\n deleteList.push(element.id);\n });\n deleteManySolidEntities(deleteList);\n setDialogVisible(false);\n };\n\n // handle closing of the delete dialog...\n const onDeleteClose = () => {\n setDialogVisible(false);\n setSelectedRecords([]);\n }\n\n\n // Individual Swimlane Load More\n const handleLoadMore = async (groupByField: string) => {\n const { offset, limit } = kanbanLoadMoreData[groupByField];\n kanbanLoadMoreData[groupByField].offset = offset + limit;\n try {\n const queryData = {\n offset: offset + limit,\n limit: limit,\n populate: toPopulate,\n populateMedia: toPopulateMedia,\n populateGroup: true,\n filters: {\n [groupByFieldName]: {\n $in: [groupByField],\n },\n ...filters\n }\n }\n\n\n const queryString = qs.stringify(queryData, {\n encodeValuesOnly: true\n });\n // router.push(`?${queryString}`);\n const data: any = await triggerGetSolidEntities(queryString);\n const newRecords = data.data.records;\n const mergeData = (\n kanbanViewData: any[],\n newRecords: any[],\n groupByField: string\n ) => {\n // Find the group matching the specified groupByField\n const originalData = structuredClone(kanbanViewData);\n const targetGroup = originalData.find(\n (group: any) => group.groupName === groupByField\n );\n if (targetGroup) {\n const { groupData } = targetGroup;\n\n if (targetGroup.groupData) {\n // Extract existing records\n const existingRecords = targetGroup.groupData.records;\n const updatedRecords = [...existingRecords, ...newRecords];\n targetGroup.groupData.records = updatedRecords\n\n\n // Update the meta data (you can adjust this logic as needed)\n groupData.meta.prevPage = groupData.meta.currentPage\n groupData.meta.currentPage = groupData.meta.currentPage + 1\n groupData.meta.nextPage = groupData.meta.currentPage + 1\n }\n }\n return originalData;\n };\n\n\n const updatedData = mergeData(kanbanViewData, newRecords, groupByField);\n setKanbanViewData(updatedData);\n const loadmoredata = Object.entries(updatedData).reduce((acc: any, [, value]: any) => {\n acc[value.groupName] = {\n offset: (value.groupData.meta.currentPage - 1) * value.groupData.meta.perPage,\n limit: value.groupData.meta.perPage,\n count: value.groupData.meta.totalRecords\n };\n return acc;\n }, {});\n setKanbanLoadMoreData(loadmoredata)\n\n } catch (error) {\n console.error(ERROR_MESSAGES.LOAD_MORE_DATA, error);\n }\n };\n\n\n // Handle drag-and-drop functionality\n // @ts-ignore\n const onDragEnd = async (result: DropResult): void => {\n const { source, destination } = result;\n if (!destination) return;\n\n const sourceGroupName = source.droppableId;\n const destinationGroupName = destination.droppableId;\n\n // Find the source and destination groups\n const sourceGroupIndex = kanbanViewData.findIndex((group: any) => group.groupName === sourceGroupName);\n const destinationGroupIndex = kanbanViewData.findIndex((group: any) => group.groupName === destinationGroupName);\n\n if (sourceGroupIndex === -1 || destinationGroupIndex === -1) return;\n\n // If dragging within the same group\n if (sourceGroupName === destinationGroupName) {\n setKanbanViewData((prevData: typeof kanbanViewData) =>\n prevData.map((group: any) => {\n if (group.groupName === sourceGroupName) {\n const updatedRecords = [...group.groupData.records];\n const [movedItem] = updatedRecords.splice(source.index, 1); // Remove the item\n updatedRecords.splice(destination.index, 0, movedItem); // Insert at the new position\n\n return {\n ...group,\n groupData: {\n ...group.groupData,\n records: updatedRecords,\n },\n };\n }\n return group;\n })\n );\n return;\n }\n\n // Deep clone the source and destination groups\n const sourceGroup = JSON.parse(JSON.stringify(kanbanViewData[sourceGroupIndex]));\n const destinationGroup = JSON.parse(JSON.stringify(kanbanViewData[destinationGroupIndex]));\n\n // Clone the records for immutability\n const sourceRecords = [...sourceGroup.groupData.records];\n const destinationRecords = [...destinationGroup.groupData.records];\n\n // Remove the item from the source\n const [movedItem] = sourceRecords.splice(source.index, 1);\n\n // Create a mutable copy of the moved item\n const updatedItem = { ...movedItem, status: destinationGroupName };\n\n // Add the updated item to the destination\n destinationRecords.splice(destination.index, 0, updatedItem);\n\n // Update the group data\n sourceGroup.groupData.records = sourceRecords;\n destinationGroup.groupData.records = destinationRecords;\n\n // Update the kanbanViewData state\n const oldkanbanViewData = structuredClone(kanbanViewData);\n try {\n const formData = new FormData();\n formData.append(groupByFieldName, destinationGroupName);\n // Update the kanbanViewData state\n setKanbanViewData((prevData: typeof kanbanViewData) =>\n prevData.map((group: any) => {\n if (group.groupName === sourceGroupName) {\n return sourceGroup;\n }\n if (group.groupName === destinationGroupName) {\n return destinationGroup;\n }\n return group;\n })\n );\n const kanbanUpdateResponse = await patchKanbanView({ id: +movedItem.id, data: formData }).unwrap();\n\n if (kanbanUpdateResponse?.statusCode === 200) {\n dispatch(showToast({ severity: \"success\", summary: ERROR_MESSAGES.IS_SUCCESS, detail: ERROR_MESSAGES.KANBAN_UPDATED }));\n } else {\n dispatch(showToast({ severity: \"error\", summary: ERROR_MESSAGES.DUPLICATE_KEY, detail: kanbanUpdateResponse?.error }));\n // Update the kanbanViewData state\n setKanbanViewData(oldkanbanViewData);\n }\n } catch (error: any) {\n // 6. Handle 500 or network errors\n console.error(ERROR_MESSAGES.API_ERROR, error);\n dispatch(showToast({ severity: \"error\", summary: ERROR_MESSAGES.SOMETHING_WRONG, detail: error?.data?.message || ERROR_MESSAGES.SOMETHING_WRONG }));\n setKanbanViewData(oldkanbanViewData);\n }\n };\n\n\n // Handle SwimLane Pagination\n const handleSwimLanePagination = async () => {\n\n if (solidKanbanViewMetaData) {\n\n const swimlanesCount = solidKanbanViewMetaData?.data.solidView?.layout?.attrs?.swimlanesCount || 5;\n const queryData = {\n offset: swimLaneCurrentPageNumber * swimlanesCount,\n limit: swimlanesCount,\n // fields: [`${groupByFieldName}`, `count(${groupByFieldName})`],\n groupBy: groupByFieldName,\n populateMedia: toPopulateMedia,\n populate: toPopulate,\n populateGroup: true,\n groupFilter: {\n limit: recordsInSwimlane,\n offset: 0,\n filters: filters,\n populate: toPopulate,\n populateMedia: toPopulateMedia\n\n }\n // sort: [`id:desc`],\n };\n // fields=status&groupBy=status&fields=count(status)&populateGroup=true\n const queryString = qs.stringify(queryData, {\n encodeValuesOnly: true\n });\n\n const data: any = await triggerGetSolidEntities(queryString);\n if (data && data?.data?.groupRecords.length > 0) {\n const updatedData = [...kanbanViewData, ...data.data.groupRecords];\n setKanbanViewData(updatedData);\n }\n setSwimLaneCurrentPageNumber(swimLaneCurrentPageNumber + 1)\n }\n }\n\n\n // Handle the custom filter and Search Filter\n const handleApplyCustomFilter = async (filterPredicates: any, persistFilter: boolean = false) => {\n\n if (solidKanbanViewMetaData) {\n const queryfilter = {\n $and: [\n ]\n }\n\n if (filterPredicates.custom_filter_predicate) {\n // @ts-ignore\n queryfilter.$and.push(filterPredicates.custom_filter_predicate);\n }\n if (filterPredicates.search_predicate) {\n // @ts-ignore\n queryfilter.$and.push(filterPredicates.search_predicate);\n }\n if (filterPredicates.saved_filter_predicate) {\n // @ts-ignore\n queryfilter.$and.push(filterPredicates.saved_filter_predicate);\n }\n if (filterPredicates.predefined_search_predicate) {\n // @ts-ignore\n queryfilter.$and.push(filterPredicates.predefined_search_predicate);\n }\n\n const customFilter = filterPredicates;\n const updatedFilter = { ...(filters || {}), ...(queryfilter || {}) };\n\n // Then update state\n setFilters(updatedFilter);\n\n\n const swimlanesCount = solidKanbanViewMetaData?.data.solidView?.layout?.attrs?.swimlanesCount || 5;\n // const { toPopulate, toPopulateMedia } = initialFilterMethod();\n\n const queryData = {\n offset: 0,\n limit: swimlanesCount,\n // fields: [`${groupByFieldName}`, `count(${groupByFieldName})`],\n groupBy: groupByFieldName,\n populateMedia: toPopulateMedia,\n populateGroup: true,\n groupFilter: {\n limit: recordsInSwimlane,\n offset: 0,\n filters: updatedFilter,\n populate: toPopulate,\n populateMedia: toPopulateMedia\n }\n }\n const queryString = qs.stringify(queryData, {\n encodeValuesOnly: true\n });\n\n // s_filter and c_filter format that needs to be passed to the router\n // only present if handleCustomFilter is applied\n if (customFilter) {\n const urlData = structuredClone(queryData);\n // @ts-ignore\n delete urlData.filters;\n // urlData.s_filter = customFilter.s_filter || {};\n // urlData.c_filter = customFilter.c_filter || {};\n // @ts-ignore\n urlData.custom_filter_predicate = customFilter.custom_filter_predicate || {};\n // @ts-ignore\n urlData.search_predicate = customFilter.search_predicate || {};\n // @ts-ignore\n setFilterObjectToLocalStorage(urlData);\n }\n\n\n const data: any = await triggerGetSolidEntities(queryString);\n\n // Update the kanban view data with the new data based on filter\n setSwimLaneCurrentPageNumber(1);\n if (data && data?.data?.groupRecords.length > 0) {\n const updatedData = [...data.data.groupRecords];\n setKanbanViewData(updatedData);\n }\n setSelectedRecords([]);\n\n\n }\n\n }\n\n useEffect(() => {\n if (solidKanbanViewMetaData) {\n const createActionUrl = solidKanbanViewMetaData?.data?.solidView?.layout?.attrs?.createAction && solidKanbanViewMetaData?.data?.solidView?.layout?.attrs?.createAction?.type === \"custom\" ? solidKanbanViewMetaData?.data?.solidView?.layout?.attrs?.createAction?.customComponent : \"form/new\";\n const editActionUrl = solidKanbanViewMetaData?.data?.solidView?.layout?.attrs?.editAction && solidKanbanViewMetaData?.data?.solidView?.layout?.attrs?.editAction?.type === \"custom\" ? solidKanbanViewMetaData?.data?.solidView?.layout?.attrs?.editAction?.customComponent : \"form\";\n if (createActionUrl) {\n setCreateButtonUrl(createActionUrl)\n }\n if (editActionUrl) {\n setEditButtonUrl(editActionUrl)\n }\n }\n }, [solidKanbanViewMetaData])\n\n const kanbanViewTitle = solidKanbanViewMetaData?.data?.solidView?.displayName\n const headerRequestStatusLabel =\n isDeleteSolidEntitiesLoading\n ? \"Deleting...\"\n : isPatchKanbanViewLoading\n ? \"Updating...\"\n : loading || !queryDataLoaded\n ? \"Loading...\"\n : null;\n\n\n const toggleBothSidebars = () => {\n if (visibleNavbar) {\n dispatch(toggleNavbar()); // close both\n } else {\n dispatch(showNavbar()); // open both\n }\n };\n\n return (\n <div className=\"page-parent-wrapper solid-list-page-wrapper flex h-full min-h-0 overflow-hidden\">\n <div className=\"solid-list-content h-full flex flex-column flex-grow-1\">\n <div className=\"solid-list-surface solid-kanban-surface flex flex-column flex-1 min-h-0\">\n <div className=\"page-header solid-list-toolbar solid-kanban-toolbar flex-column lg:flex-row\">\n <div className=\"flex justify-content-between w-full\">\n <div className=\"flex gap-3 align-items-center w-full solid-list-toolbar-left\">\n {params.embeded !== true &&\n <div className=\"apps-icon block md:hidden cursor-pointer\" onClick={toggleBothSidebars}>\n <SolidIcon name=\"si-th-large\" aria-hidden />\n </div>\n }\n\n <p className=\"m-0 view-title solid-text-wrapper\">{kanbanViewTitle}</p>\n {solidKanbanViewMetaData?.data?.solidView?.layout?.attrs.enableGlobalSearch === true &&\n <div className=\"hidden lg:flex\">\n <SolidGlobalSearchElement viewType=\"kanban\" showSaveFilterPopup={showSaveFilterPopup} setShowSaveFilterPopup={setShowSaveFilterPopup} ref={solidGlobalSearchElementRef} viewData={solidKanbanViewMetaData} handleApplyCustomFilter={handleApplyCustomFilter} ></SolidGlobalSearchElement>\n </div>\n }\n </div>\n\n <div className=\"flex align-items-center solid-header-buttons-wrapper solid-list-toolbar-actions\">\n <SolidHeaderRequestStatus label={headerRequestStatusLabel} />\n {solidKanbanViewMetaData?.data?.solidView?.layout?.attrs.enableGlobalSearch === true &&\n <div className=\"flex lg:hidden\">\n <SolidButton\n type=\"button\"\n variant=\"outline\"\n size=\"sm\"\n className=\"solid-icon-button\"\n onClick={() => setShowGlobalSearchElement(!showGlobalSearchElement)}\n aria-label=\"Toggle search\"\n leftIcon={<SolidIcon name=\"si-search\" aria-hidden />}\n />\n </div>\n }\n\n {actionsAllowed.includes(`${permissionExpression(params.modelName, 'create')}`) && solidKanbanViewMetaData?.data?.solidView?.layout?.attrs.create !== false &&\n <SolidCreateButton createButtonUrl={createButtonUrl} createActionQueryParams={createActionQueryParams} responsiveIconOnly={true} />\n }\n\n {actionsAllowed.includes(`${permissionExpression(params.modelName, 'delete')}`) && solidKanbanViewMetaData?.data?.solidView?.layout?.attrs.delete !== false && selectedRecords.length > 0 && <SolidButton\n type=\"button\"\n variant=\"destructive\"\n size=\"sm\"\n onClick={() => setDialogVisible(true)}\n >\n Delete\n </SolidButton>}\n <SolidButton\n type=\"button\"\n variant=\"outline\"\n size=\"sm\"\n className=\"solid-icon-button\"\n onClick={() => {\n window.location.reload()\n }}\n aria-label=\"Refresh board\"\n leftIcon={<SolidIcon name=\"si-refresh\" aria-hidden />}\n />\n <SolidKanbanViewConfigure\n solidKanbanViewMetaData={solidKanbanViewMetaData}\n modelName={params.modelName}\n actionsAllowed={actionsAllowed}\n viewModes={viewModes}\n setLayoutDialogVisible={setLayoutDialogVisible}\n setShowSaveFilterPopup={setShowSaveFilterPopup}\n filters={filters}\n handleRefreshView={() => window.location.reload()}\n />\n </div>\n </div>\n {solidKanbanViewMetaData?.data?.solidView?.layout?.attrs.enableGlobalSearch === true && showGlobalSearchElement && (\n <div className=\"flex lg:hidden\">\n <SolidGlobalSearchElement viewType=\"kanban\" showSaveFilterPopup={showSaveFilterPopup} setShowSaveFilterPopup={setShowSaveFilterPopup} ref={solidGlobalSearchElementRef} viewData={solidKanbanViewMetaData} handleApplyCustomFilter={handleApplyCustomFilter} ></SolidGlobalSearchElement>\n </div>\n )}\n </div>\n\n <style>{`.p-datatable .p-datatable-loading-overlay {background-color: rgba(0, 0, 0, 0.0);}`}</style>\n {solidKanbanViewMetaData && kanbanViewData &&\n <KanbanBoard groupByFieldName={groupByFieldName} kanbanViewData={kanbanViewData} maxSwimLanesCount={maxSwimLanesCount} solidKanbanViewMetaData={solidKanbanViewMetaData?.data} setKanbanViewData={setKanbanViewData} handleLoadMore={handleLoadMore} onDragEnd={onDragEnd} handleSwimLanePagination={handleSwimLanePagination} setLightboxUrls={setLightboxUrls} setOpenLightbox={setOpenLightbox} editButtonUrl={editBaseUrl}></KanbanBoard>\n }\n </div>\n </div>\n\n <SolidDialog\n open={isDialogVisible}\n onOpenChange={(open) => {\n if (!open) {\n onDeleteClose();\n }\n }}\n className=\"solid-shadcn-confirm-dialog solid-delete-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 the selected records?</p>\n </SolidDialogBody>\n <SolidDialogFooter className=\"solid-shadcn-dialog-actions\">\n <SolidButton variant=\"destructive\" size=\"sm\" autoFocus onClick={deleteBulk}>\n Delete\n </SolidButton>\n <SolidButton variant=\"outline\" size=\"sm\" onClick={onDeleteClose}>\n Cancel\n </SolidButton>\n </SolidDialogFooter>\n </SolidDialog>\n {openLightbox && (\n <SolidLightbox\n open={openLightbox}\n slides={lightboxSlides}\n onClose={() => setOpenLightbox(false)}\n />\n )}\n <SolidDialog\n open={isLayoutDialogVisible}\n onOpenChange={setLayoutDialogVisible}\n className=\"solid-kanban-layout-dialog\"\n style={{ width: \"min(800px, calc(100vw - 32px))\" }}\n >\n <SolidDialogHeader>\n <SolidDialogTitle>Change Kanban Layout</SolidDialogTitle>\n <SolidDialogClose />\n </SolidDialogHeader>\n <SolidDialogSeparator />\n <SolidDialogBody className=\"solid-kanban-layout-dialog-body\">\n <KanbanUserViewLayout solidKanbanViewMetaData={solidKanbanViewMetaData} setLayoutDialogVisible={setLayoutDialogVisible} />\n </SolidDialogBody>\n </SolidDialog>\n </div>\n );\n};\n"]}
|
|
1
|
+
{"version":3,"file":"SolidKanbanView.js","sourceRoot":"","sources":["../../../../src/components/core/kanban/SolidKanbanView.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AACzE,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AAC7E,OAAO,EAAE,mCAAmC,EAAE,MAAM,4BAA4B,CAAC;AAEjF,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAAE,wBAAwB,EAAE,MAAM,oCAAoC,CAAC;AAC9E,OAAO,WAAW,MAAM,eAAe,CAAC;AACxC,OAAO,YAAY,MAAM,qDAAqD,CAAC;AAC/E,OAAO,SAAS,MAAM,kDAAkD,CAAC;AACzE,OAAO,gBAAgB,MAAM,yDAAyD,CAAC;AACvF,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAE/D,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AACrD,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AACvD,OAAO,EAAE,6BAA6B,EAAE,+BAA+B,EAAE,MAAM,uBAAuB,CAAC;AACvG,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AACnE,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,qCAAqC,CAAC;AAC/E,OAAO,EAAE,sCAAsC,EAAE,MAAM,6BAA6B,CAAC;AACrF,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,SAAS,EAAE,MAAM,oCAAoC,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,EAAE,wBAAwB,EAAE,MAAM,uCAAuC,CAAC;AACjF,OAAO,EACL,WAAW,EACX,kBAAkB,EAClB,WAAW,EACX,eAAe,EACf,gBAAgB,EAChB,iBAAiB,EACjB,oBAAoB,EACpB,gBAAgB,EAChB,SAAS,GACV,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAS5D,MAAM,CAAC,IAAM,eAAe,GAAG,UAAC,MAA6B;;IAE3D,IAAM,aAAa,GAAG,WAAW,CAAC,UAAC,KAAU,YAAK,OAAA,MAAA,KAAK,CAAC,WAAW,0CAAE,aAAa,CAAA,EAAA,CAAC,CAAC;IACpF,IAAM,QAAQ,GAAG,WAAW,EAAE,CAAA;IAE9B,IAAM,2BAA2B,GAAG,MAAM,EAAE,CAAC;IAC7C,IAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,IAAM,YAAY,GAAG,eAAe,EAAE,CAAC;IACvC,6GAA6G;IACvG,IAAA,KAAwB,QAAQ,EAAO,EAAtC,OAAO,QAAA,EAAE,UAAU,QAAmB,CAAC;IACxC,IAAA,KAA8B,QAAQ,CAAW,EAAE,CAAC,EAAnD,UAAU,QAAA,EAAE,aAAa,QAA0B,CAAC;IACrD,IAAA,KAAwC,QAAQ,CAAW,EAAE,CAAC,EAA7D,eAAe,QAAA,EAAE,kBAAkB,QAA0B,CAAC;IAC/D,IAAA,KAAsC,QAAQ,CAAW,EAAE,CAAC,EAA3D,cAAc,QAAA,EAAE,iBAAiB,QAA0B,CAAC;IAC7D,IAAA,KAAwD,QAAQ,CAAU,KAAK,CAAC,EAA/E,uBAAuB,QAAA,EAAE,0BAA0B,QAA4B,CAAC;IACjF,IAAA,KAAkC,QAAQ,CAAC,KAAK,CAAC,EAAhD,YAAY,QAAA,EAAE,eAAe,QAAmB,CAAC;IACxD,IAAM,WAAW,GAAG;QAClB,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE;QACzD,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE;QACpD,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,gBAAgB,EAAE;KAClE,CAAA;IACK,IAAA,KAAkB,QAAQ,CAAe,WAAW,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAA7D,IAAI,QAAA,EAAE,OAAO,QAAgD,CAAC;IAC/D,IAAA,KAA4B,QAAQ,CAAM,EAAE,CAAC,EAA5C,SAAS,QAAA,EAAE,YAAY,QAAqB,CAAC;IAC9C,IAAA,KAA0C,QAAQ,CAAS,EAAE,CAAC,EAA7D,gBAAgB,QAAA,EAAE,mBAAmB,QAAwB,CAAC;IAC9D,IAAA,8BAA8B,GAAI,mCAAmC,EAAE,GAAzC,CAA0C;IACzE,IAAA,KAAkC,QAAQ,CAAC,KAAK,CAAC,EAAhD,YAAY,QAAA,EAAE,eAAe,QAAmB,CAAC;IAClD,IAAA,KAAkC,QAAQ,CAAQ,EAAE,CAAC,EAApD,YAAY,QAAA,EAAE,eAAe,QAAuB,CAAC;IACtD,IAAA,KAA4C,QAAQ,EAAO,EAA1D,iBAAiB,QAAA,EAAE,oBAAoB,QAAmB,CAAC;IAC5D,IAAA,KAAkD,QAAQ,CAAC,KAAK,CAAC,EAAhE,qBAAqB,QAAA,EAAE,sBAAsB,QAAmB,CAAC;IACxE,IAAM,cAAc,GAAyB,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC;QACtE,CAAC,CAAC,YAAY;aACX,GAAG,CAAC,UAAC,IAAS;YACb,IAAM,GAAG,GAAG,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,GAAG,MAAI,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,WAAW,CAAA,IAAI,EAAE,CAAC;YACjD,IAAI,CAAC,GAAG,EAAE;gBACR,OAAO,IAAI,CAAC;aACb;YACD,IAAM,SAAS,GAAG,mBAAmB,CAAC,GAAG,CAAC,CAAC;YAC3C,IAAM,KAAK,GAAuB,EAAE,GAAG,KAAA,EAAE,CAAC;YAC1C,IAAI,SAAS,KAAK,OAAO,EAAE;gBACzB,KAAK,CAAC,IAAI,GAAG,SAAS,CAAC;aACxB;YACD,OAAO,KAAK,CAAC;QACf,CAAC,CAAC;aACD,MAAM,CAAC,UAAC,KAAK,IAAkC,OAAA,CAAC,CAAC,KAAK,EAAP,CAAO,CAAC;QAC1D,CAAC,CAAC,EAAE,CAAC;IAEP,IAAM,mBAAmB,GAAG,UAAC,iBAAsB;QACjD,aAAa;QACb,MAAM,CAAC,IAAI,CAAC,WAAI,iBAAiB,CAAE,EAAE,SAAS,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;IACrE,CAAC,CAAC;IAEF,SAAS,CAAC;QACR,IAAI,iBAAiB,EAAE;YACrB,mBAAmB,CAAC,iBAAiB,CAAC,CAAC;SACxC;IACH,CAAC,EAAE,CAAC,iBAAiB,CAAC,CAAC,CAAC;IAIxB,SAAS,CAAC;QACR,IAAM,gBAAgB,GAAG;;;;;6BACnB,MAAM,CAAC,SAAS,EAAhB,wBAAgB;wBACZ,eAAe,GAAG;4BACtB,oBAAoB,CAAC,MAAM,CAAC,SAAS,EAAE,QAAQ,CAAC;4BAChD,oBAAoB,CAAC,MAAM,CAAC,SAAS,EAAE,QAAQ,CAAC;4BAChD,oBAAoB,CAAC,MAAM,CAAC,SAAS,EAAE,QAAQ,CAAC;4BAChD,oBAAoB,CAAC,MAAM,CAAC,SAAS,EAAE,UAAU,CAAC;4BAClD,oBAAoB,CAAC,mBAAmB,EAAE,QAAQ,CAAC;4BACnD,oBAAoB,CAAC,mBAAmB,EAAE,QAAQ,CAAC;4BACnD,oBAAoB,CAAC,kBAAkB,EAAE,QAAQ,CAAC;4BAClD,oBAAoB,CAAC,cAAc,EAAE,QAAQ,CAAC;yBAC/C,CAAA;wBACK,SAAS,GAAG;4BAChB,eAAe,EAAE,eAAe;yBACjC,CAAC;wBACI,WAAW,GAAG,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE;4BAC1C,gBAAgB,EAAE,IAAI;yBACvB,CAAC,CAAC;wBACc,qBAAM,8BAA8B,CAAC,WAAW,CAAC,EAAA;;wBAA5D,QAAQ,GAAG,SAAiD;wBAClE,iBAAiB,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;;;;;aAEzC,CAAC;QACF,gBAAgB,EAAE,CAAC;IACrB,CAAC,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;IAGvB,wCAAwC;IACxC,IAAM,SAAS,GAAG,oBAAoB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAEvD,IAAA,sCAAsC,GAGpC,SAAS,uCAH2B,EACtC,4BAA4B,GAE1B,SAAS,6BAFiB,EAC5B,iCAAiC,GAC/B,SAAS,kCADsB,CACrB;IAEd,IAAM,UAAU,GAAG,YAAY,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IAClD,IAAM,YAAY,GAAG,YAAY,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IACtD,IAAM,QAAQ,GAAG,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAC9C,IAAM,UAAU,GAAG,YAAY,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IAElD,gDAAgD;IAChD,IAAM,oBAAoB,GAAG,EAAE,CAAC,SAAS,CACvC;QACE,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,UAAU,EAAE,MAAM,CAAC,UAAU;QAC7B,QAAQ,EAAE,QAAQ;QAClB,UAAU,EAAE,UAAU;QACtB,YAAY,EAAE,YAAY;QAC1B,QAAQ,EAAE,QAAQ;QAClB,UAAU,EAAE,UAAU;KACvB,EACD;QACE,gBAAgB,EAAE,IAAI;KACvB,CACF,CAAC;IACI,IAAA,KAA8C,QAAQ,CAAM,EAAE,CAAC,EAA9D,kBAAkB,QAAA,EAAE,qBAAqB,QAAqB,CAAC;IAGpE,IAAM,uBAAuB,GAAK,0BAA0B,CAAC,oBAAoB,CAAC,KAArD,CAAsD;IAIrF,IAAM,mBAAmB,GAAG;;QAE1B,IAAM,SAAS,GAAG,uBAAuB,CAAC,IAAI,CAAC,SAAS,CAAC;QACzD,IAAM,mBAAmB,GAAG,uBAAuB,CAAC,IAAI,CAAC,mBAAmB,CAAC;QAE7E,IAAM,cAAc,GAAQ,EAAE,CAAC;QAC/B,IAAM,UAAU,GAAa,EAAE,CAAC;QAChC,IAAM,eAAe,GAAa,EAAE,CAAC;QACrC,SAAS,YAAY,CAAC,KAAiB;YAAjB,sBAAA,EAAA,UAAiB;YACrC,KAAmB,UAAK,EAAL,eAAK,EAAL,mBAAK,EAAL,IAAK,EAAE;gBAArB,IAAM,IAAI,cAAA;gBACb,IAAI,CAAC,IAAI;oBAAE,SAAS;gBACpB,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM;oBAAE,OAAO,IAAI,CAAC;gBACtC,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;oBAC5D,IAAM,UAAU,GAAG,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;oBAC/C,IAAI,UAAU;wBAAE,OAAO,UAAU,CAAC;iBACnC;aACF;YAED,OAAO,IAAI,CAAC;QACd,CAAC;QACD,SAAS,aAAa,CAAC,KAAU,EAAE,MAAgB;YAAhB,uBAAA,EAAA,WAAgB;YACjD,IAAI,CAAC,KAAK;gBAAE,OAAO,MAAM,CAAC;YAC1B,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;gBACxB,KAAK,CAAC,OAAO,CAAC,UAAC,IAAS,IAAK,OAAA,aAAa,CAAC,IAAI,EAAE,MAAM,CAAC,EAA3B,CAA2B,CAAC,CAAC;gBAC1D,OAAO,MAAM,CAAC;aACf;YACD,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE;gBAC1B,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aACpB;YACD,IAAI,KAAK,CAAC,QAAQ,EAAE;gBAClB,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAC,KAAU,IAAK,OAAA,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC,EAA5B,CAA4B,CAAC,CAAC;aACtE;YACD,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,IAAM,QAAQ,GAAG,YAAY,CAAC,CAAA,MAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,MAAM,0CAAE,QAAQ,KAAI,EAAE,CAAC,CAAC;QACjE,IAAM,WAAW,GAAG,CAAA,MAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,QAAQ,0CAAE,MAAM,EAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC;QACtF,IAAM,YAAY,GAAG,aAAa,CAAC,WAAW,CAAC,CAAC;QAEhD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAC5C,IAAM,MAAM,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;YAC/B,IAAM,aAAa,GAAG,mBAAmB,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC7D,IAAI,aAAa,EAAE;gBAEjB,iFAAiF;gBACjF,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE;oBACtE,yIAAyI;oBACzI,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,eAAe,CAAC,MAAM,EAAE,CAAA;iBACvF;qBACI,IAAI,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE;oBAC7E,0IAA0I;oBAC1I,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,eAAe,CAAC,MAAM,EAAE,CAAA;iBACvF;qBACI,IAAI,CAAC,UAAU,EAAE,iBAAiB,EAAE,kBAAkB,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE;oBACzF,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,eAAe,CAAC,EAAE,EAAE,CAAA;iBACnF;qBACI;oBACH,8IAA8I;oBAC9I,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,eAAe,CAAC,WAAW,EAAE,CAAA;iBAC5F;gBAED,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,EAAE;oBAC9B,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,eAAe,CAAC,EAAE,EAAE,CAAA;iBACnF;gBAED,gCAAgC;gBAChC,IAAI,aAAa,CAAC,IAAI,KAAK,UAAU,EAAE;oBACrC,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;iBACrC;gBACD,IAAI,aAAa,CAAC,IAAI,KAAK,aAAa,IAAI,aAAa,CAAC,IAAI,KAAK,eAAe,EAAE;oBAClF,eAAe,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;iBAC1C;aACF;SACF;QAED,8BAA8B;QAC9B,IAAM,iBAAiB,GAAG,CAAA,MAAA,MAAA,MAAA,MAAA,uBAAuB,aAAvB,uBAAuB,uBAAvB,uBAAuB,CAAE,IAAI,0CAAE,SAAS,0CAAE,MAAM,0CAAE,KAAK,0CAAE,iBAAiB,EAAC,CAAC,CAAC,MAAA,MAAA,MAAA,MAAA,uBAAuB,aAAvB,uBAAuB,uBAAvB,uBAAuB,CAAE,IAAI,0CAAE,SAAS,0CAAE,MAAM,0CAAE,KAAK,0CAAE,iBAAiB,CAAC,CAAC,CAAC,EAAE,CAAC;QACvL,6BAA6B;QAC7B,uCAAuC;QACvC,2CAA2C;QAC3C,6BAA6B;QAC7B,uCAAuC;QACvC,OAAO,EAAE,iBAAiB,mBAAA,EAAE,UAAU,YAAA,EAAE,eAAe,iBAAA,EAAE,CAAA;IAC3D,CAAC,CAAA;IAGD,uBAAuB;IACvB,SAAS,CAAC;;QAER,IAAI,uBAAuB,EAAE;YAC3B,qBAAqB,CAAC,uBAAuB,CAAC,CAAC;YAC/C,YAAY,CAAC,MAAA,uBAAuB,aAAvB,uBAAuB,uBAAvB,uBAAuB,CAAE,IAAI,0CAAE,SAAS,CAAC,CAAC;YACvD,mBAAmB,CAAC,CAAA,MAAA,MAAA,MAAA,MAAA,uBAAuB,aAAvB,uBAAuB,uBAAvB,uBAAuB,CAAE,IAAI,0CAAE,SAAS,0CAAE,MAAM,0CAAE,KAAK,0CAAE,OAAO,KAAI,EAAE,CAAC,CAAC;SAC7F;IACH,CAAC,EAAE,CAAC,uBAAuB,CAAC,CAAC,CAAC;IAE9B,yBAAyB;IACnB,IAAA,MAAsC,QAAQ,CAAM,EAAE,CAAC,EAAtD,cAAc,SAAA,EAAE,iBAAiB,SAAqB,CAAC;IACxD,IAAA,MAA8C,QAAQ,CAAM,EAAE,CAAC,EAA9D,kBAAkB,SAAA,EAAE,qBAAqB,SAAqB,CAAC;IAChE,IAAA,MAA4C,QAAQ,CAAC,EAAE,CAAC,EAAvD,iBAAiB,SAAA,EAAE,oBAAoB,SAAgB,CAAC;IACzD,IAAA,MAAwC,QAAQ,CAAQ,EAAE,CAAC,EAA1D,eAAe,SAAA,EAAE,kBAAkB,SAAuB,CAAC;IAC5D,IAAA,MAAwB,QAAQ,CAAU,IAAI,CAAC,EAA9C,OAAO,SAAA,EAAE,UAAU,SAA2B,CAAC;IAChD,IAAA,MAAsC,QAAQ,CAAC,KAAK,CAAC,EAApD,eAAe,SAAA,EAAE,gBAAgB,SAAmB,CAAC;IACtD,IAAA,MAAwC,QAAQ,EAAU,EAAzD,eAAe,SAAA,EAAE,kBAAkB,SAAsB,CAAC;IAC3D,IAAA,MAAoC,QAAQ,EAAU,EAArD,aAAa,SAAA,EAAE,gBAAgB,SAAsB,CAAC;IACvD,IAAA,MAAwD,QAAQ,CAAyB,EAAE,CAAC,EAA3F,uBAAuB,SAAA,EAAE,0BAA0B,SAAwC,CAAC;IAC7F,IAAA,MAAoD,QAAQ,CAAyB,EAAE,CAAC,EAAvF,qBAAqB,SAAA,EAAE,wBAAwB,SAAwC,CAAC;IACzF,IAAA,MAAkC,QAAQ,CAAC,CAAC,CAAC,EAA5C,YAAY,SAAA,EAAE,eAAe,SAAe,CAAC;IAC9C,IAAA,MAA4D,QAAQ,CAAC,CAAC,CAAC,EAAtE,yBAAyB,SAAA,EAAE,4BAA4B,SAAe,CAAC;IACxE,IAAA,MAAwC,QAAQ,CAAC,KAAK,CAAC,EAAtD,eAAe,SAAA,EAAE,kBAAkB,SAAmB,CAAC;IACxD,IAAA,MAAgD,QAAQ,CAAU,KAAK,CAAC,EAAvE,mBAAmB,SAAA,EAAE,sBAAsB,SAA4B,CAAC;IACzE,IAAA,MAA4C,QAAQ,CAAS,CAAC,CAAC,EAA9D,iBAAiB,SAAA,EAAE,oBAAoB,SAAuB,CAAC;IACtE,IAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;IAC/B,aAAa;IACb,IAAM,WAAW,GAAG,sCAAsC,CAAC,QAAQ,EAAE,aAAa,IAAI,MAAM,CAAC,CAAC;IAC9F,4BAA4B;IAC5B,0IAA0I;IACpI,IAAA,MAAiE,4BAA4B,EAAE,EAA9F,uBAAuB,SAAA,EAAU,yBAAyB,cAAoC,CAAC;IAEtG,mBAAmB;IACb,IAAA,MAMF,sCAAsC,EAAE,EAL1C,uBAAuB,SAAA,EACvB,YAGC,EAFY,4BAA4B,gBAAA,EAC5B,2BAA2B,gBAEE,CAAC;IACvC,IAAA,MAKF,iCAAiC,EAAE,EAJrC,eAAe,SAAA,EAEF,wBAAwB,mBAEA,CAAC;IAExC,6FAA6F;IAC7F,SAAS,CAAC;;QACR,IAAI,yBAAyB,EAAE;YAC7B,4DAA4D;YAC5D,oBAAoB,CAAC,CAAA,MAAA,yBAAyB,aAAzB,yBAAyB,uBAAzB,yBAAyB,CAAE,IAAI,0CAAE,YAAY,KAAI,CAAC,CAAC,CAAC;YACzE,IAAM,YAAY,GAAG,CAAA,yBAAyB,aAAzB,yBAAyB,uBAAzB,yBAAyB,CAAE,YAAY,KAAI,EAAE,CAAC;YACnE,IAAM,UAAQ,GAAG,IAAI,GAAG,CAAC,CAAC,cAAc,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,UAAC,CAAM,IAAK,OAAA,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,EAAhB,CAAgB,CAAC,CAAC,CAAC;YACnF,YAAY,CAAC,OAAO,CAAC,UAAC,QAAa;gBACjC,UAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;YAC7C,CAAC,CAAC,CAAC;YACH,IAAM,qBAAqB,GAAG,KAAK,CAAC,IAAI,CAAC,UAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;YAC5D,iBAAiB,CAAC,qBAAqB,CAAC,CAAC;YACzC,IAAM,YAAY,GAAG,MAAM,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC,MAAM,CAAC,UAAC,GAAQ,EAAE,EAAc;oBAAX,KAAK,QAAA;gBACnF,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG;oBACrB,MAAM,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO;oBAC7E,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO;oBACnC,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY;iBACzC,CAAC;gBACF,OAAO,GAAG,CAAC;YACb,CAAC,EAAE,EAAE,CAAC,CAAC;YAEP,qBAAqB,CAAC,YAAY,CAAC,CAAA;YACnC,UAAU,CAAC,KAAK,CAAC,CAAC;SACnB;IACH,CAAC,EAAE,CAAC,yBAAyB,CAAC,CAAC,CAAC;IAEhC,SAAS,CAAC;;QACR,IAAI,uBAAuB,EAAE;YAC3B,IAAM,qBAAqB,GAAG,MAAA,MAAA,MAAA,uBAAuB,aAAvB,uBAAuB,uBAAvB,uBAAuB,CAAE,IAAI,0CAAE,SAAS,0CAAE,MAAM,0CAAE,KAAK,CAAC;YACtF,IAAM,eAAe,GAAG,CAAA,qBAAqB,aAArB,qBAAqB,uBAArB,qBAAqB,CAAE,YAAY,KAAI,CAAA,MAAA,qBAAqB,aAArB,qBAAqB,uBAArB,qBAAqB,CAAE,YAAY,0CAAE,IAAI,MAAK,QAAQ,CAAC,CAAC,CAAC,MAAA,qBAAqB,aAArB,qBAAqB,uBAArB,qBAAqB,CAAE,YAAY,0CAAE,eAAe,CAAC,CAAC,CAAC,UAAU,CAAC;YAC1L,IAAM,aAAa,GAAG,CAAA,qBAAqB,aAArB,qBAAqB,uBAArB,qBAAqB,CAAE,UAAU,KAAI,CAAA,MAAA,qBAAqB,aAArB,qBAAqB,uBAArB,qBAAqB,CAAE,UAAU,0CAAE,IAAI,MAAK,QAAQ,CAAC,CAAC,CAAC,MAAA,qBAAqB,aAArB,qBAAqB,uBAArB,qBAAqB,CAAE,UAAU,0CAAE,eAAe,CAAC,CAAC,CAAC,MAAM,CAAC;YAE9K,IAAI,qBAAqB,aAArB,qBAAqB,uBAArB,qBAAqB,CAAE,YAAY,EAAE;gBACvC,0BAA0B,CAAC;oBACzB,UAAU,EAAE,qBAAqB,CAAC,YAAY,CAAC,IAAI;oBACnD,UAAU,EAAE,qBAAqB,CAAC,YAAY,CAAC,IAAI;oBACnD,aAAa,EAAE,qBAAqB,CAAC,YAAY,CAAC,OAAO;iBAC1D,CAAC,CAAC;aACJ;YACD,IAAI,qBAAqB,aAArB,qBAAqB,uBAArB,qBAAqB,CAAE,UAAU,EAAE;gBACrC,wBAAwB,CAAC;oBACvB,UAAU,EAAE,qBAAqB,CAAC,UAAU,CAAC,IAAI;oBACjD,UAAU,EAAE,qBAAqB,CAAC,UAAU,CAAC,IAAI;oBACjD,aAAa,EAAE,qBAAqB,CAAC,UAAU,CAAC,OAAO;iBACxD,CAAC,CAAC;aACJ;YAED,IAAI,eAAe,EAAE;gBACnB,kBAAkB,CAAC,eAAe,CAAC,CAAA;aACpC;YACD,IAAI,aAAa,EAAE;gBACjB,gBAAgB,CAAC,aAAa,CAAC,CAAA;aAChC;SACF;IACH,CAAC,EAAE,CAAC,uBAAuB,CAAC,CAAC,CAAA;IAE7B,oDAAoD;IACpD,SAAS,CAAC;;QAER,IAAI,uBAAuB,EAAE;YAE3B,IAAM,cAAc,GAAG,CAAA,MAAA,MAAA,MAAA,uBAAuB,aAAvB,uBAAuB,uBAAvB,uBAAuB,CAAE,IAAI,CAAC,SAAS,0CAAE,MAAM,0CAAE,KAAK,0CAAE,cAAc,KAAI,CAAC,CAAC;YACnG,IAAI,gBAAgB,EAAE;gBAEpB,IAAM,WAAW,GAAG,+BAA+B,EAAE,CAAC;gBACtD,IAAI,WAAW,GAAG,EAAE,CAAC;gBACrB,IAAI,WAAW,EAAE;oBACf,IAAM,SAAO,GAAG;wBACd,IAAI,EAAE,EAAE;qBACT,CAAA;oBACD,IAAI,WAAW,CAAC,uBAAuB,EAAE;wBACvC,aAAa;wBACb,SAAO,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,uBAAuB,CAAC,CAAC;qBACxD;oBACD,IAAI,WAAW,CAAC,gBAAgB,EAAE;wBAChC,aAAa;wBACb,SAAO,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC;qBACjD;oBACD,4CAA4C;oBAC5C,2DAA2D;oBAC3D,IAAI;oBACJ,iDAAiD;oBACjD,gEAAgE;oBAChE,IAAI;oBAEJ,IAAM,SAAS,GAAG;wBAChB,MAAM,EAAE,CAAC;wBACT,KAAK,EAAE,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC;wBAC7D,uFAAuF;wBACvF,OAAO,EAAE,WAAW,CAAC,OAAO,IAAI,gBAAgB;wBAChD,aAAa;wBACb,aAAa,EAAE,WAAW,CAAC,aAAa,IAAI,iBAAe;wBAC3D,aAAa,EAAE,WAAW,CAAC,aAAa,IAAI,IAAI;wBAChD,WAAW,EAAE;4BACX,KAAK,EAAE,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,MAAM,CAAC,KAAI,MAAA,MAAA,MAAA,MAAA,kBAAkB,aAAlB,kBAAkB,uBAAlB,kBAAkB,CAAE,IAAI,0CAAE,SAAS,0CAAE,MAAM,0CAAE,KAAK,0CAAE,iBAAiB,CAAA;4BAC9J,MAAM,EAAE,CAAC;4BACT,OAAO,EAAE,SAAO;4BAChB,aAAa;4BACb,QAAQ,EAAE,WAAW,CAAC,WAAW,CAAC,QAAQ,IAAI,YAAU;4BACxD,aAAa;4BACb,aAAa,EAAE,WAAW,CAAC,WAAW,CAAC,aAAa,IAAI,iBAAe;yBACxE;wBACD,qBAAqB;qBACtB,CAAC;oBAGI,IAAA,KAAqD,mBAAmB,EAAE,EAAxE,mBAAiB,uBAAA,EAAE,YAAU,gBAAA,EAAE,iBAAe,qBAA0B,CAAC;oBACjF,aAAa,CAAC,YAAU,CAAC,CAAC;oBAC1B,kBAAkB,CAAC,iBAAe,CAAC,CAAC;oBACpC,oBAAoB,CAAC,mBAAiB,CAAC,CAAC;oBACxC,uBAAuB;oBACvB,kBAAkB,CAAC,IAAI,CAAC,CAAC;oBAEzB,WAAW,GAAG,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE;wBACpC,gBAAgB,EAAE,IAAI;qBACvB,CAAC,CAAC;iBAEJ;qBAAM;oBACC,IAAA,KAAqD,mBAAmB,EAAE,EAAxE,mBAAiB,uBAAA,EAAE,YAAU,gBAAA,EAAE,iBAAe,qBAA0B,CAAC;oBACjF,IAAM,SAAS,GAAG;wBAChB,MAAM,EAAE,CAAC;wBACT,KAAK,EAAE,cAAc;wBACrB,iEAAiE;wBACjE,OAAO,EAAE,gBAAgB;wBACzB,aAAa,EAAE,iBAAe;wBAC9B,aAAa,EAAE,IAAI;wBACnB,WAAW,EAAE;4BACX,KAAK,EAAE,CAAA,MAAA,MAAA,MAAA,MAAA,kBAAkB,aAAlB,kBAAkB,uBAAlB,kBAAkB,CAAE,IAAI,0CAAE,SAAS,0CAAE,MAAM,0CAAE,KAAK,0CAAE,iBAAiB,KAAI,EAAE;4BAClF,MAAM,EAAE,CAAC;4BACT,OAAO,EAAE,OAAO;4BAChB,QAAQ,EAAE,YAAU;4BACpB,aAAa,EAAE,iBAAe;yBAC/B;wBACD,qBAAqB;qBACtB,CAAC;oBACF,oBAAoB,CAAC,mBAAiB,CAAC,CAAC;oBACxC,aAAa,CAAC,YAAU,CAAC,CAAC;oBAC1B,kBAAkB,CAAC,iBAAe,CAAC,CAAC;oBAEpC,uEAAuE;oBACvE,WAAW,GAAG,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE;wBACpC,gBAAgB,EAAE,IAAI;qBACvB,CAAC,CAAC;oBAEH,kBAAkB,CAAC,IAAI,CAAC,CAAA;iBACzB;gBAED,wCAAwC;gBACxC,kBAAkB,CAAC,EAAE,CAAC,CAAC;aACxB;SACF;IACH,CAAC,EAAE,CAAC,2BAA2B,EAAE,gBAAgB,EAAE,uBAAuB,CAAC,CAAC,CAAC;IAE7E,8DAA8D;IAE9D,uBAAuB;IACvB,IAAM,UAAU,GAAG;QACjB,IAAI,UAAU,GAAQ,EAAE,CAAC;QACzB,eAAe,CAAC,OAAO,CAAC,UAAC,OAAY;YACnC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAC9B,CAAC,CAAC,CAAC;QACH,uBAAuB,CAAC,UAAU,CAAC,CAAC;QACpC,gBAAgB,CAAC,KAAK,CAAC,CAAC;IAC1B,CAAC,CAAC;IAEF,yCAAyC;IACzC,IAAM,aAAa,GAAG;QACpB,gBAAgB,CAAC,KAAK,CAAC,CAAC;QACxB,kBAAkB,CAAC,EAAE,CAAC,CAAC;IACzB,CAAC,CAAA;IAGD,gCAAgC;IAChC,IAAM,cAAc,GAAG,UAAO,YAAoB;;;;;;oBAC1C,KAAoB,kBAAkB,CAAC,YAAY,CAAC,EAAlD,MAAM,YAAA,EAAE,KAAK,WAAA,CAAsC;oBAC3D,kBAAkB,CAAC,YAAY,CAAC,CAAC,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC;;;;oBAEjD,SAAS,GAAG;wBAChB,MAAM,EAAE,MAAM,GAAG,KAAK;wBACtB,KAAK,EAAE,KAAK;wBACZ,QAAQ,EAAE,UAAU;wBACpB,aAAa,EAAE,eAAe;wBAC9B,aAAa,EAAE,IAAI;wBACnB,OAAO,wBACJ,gBAAgB,IAAG;4BAClB,GAAG,EAAE,CAAC,YAAY,CAAC;yBACpB,OACE,OAAO,CACX;qBACF,CAAA;oBAGK,WAAW,GAAG,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE;wBAC1C,gBAAgB,EAAE,IAAI;qBACvB,CAAC,CAAC;oBAEe,qBAAM,uBAAuB,CAAC,WAAW,CAAC,EAAA;;oBAAtD,IAAI,GAAQ,SAA0C;oBACtD,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;oBAC/B,SAAS,GAAG,UAChB,cAAqB,EACrB,UAAiB,EACjB,YAAoB;wBAEpB,qDAAqD;wBACrD,IAAM,YAAY,GAAG,eAAe,CAAC,cAAc,CAAC,CAAC;wBACrD,IAAM,WAAW,GAAG,YAAY,CAAC,IAAI,CACnC,UAAC,KAAU,IAAK,OAAA,KAAK,CAAC,SAAS,KAAK,YAAY,EAAhC,CAAgC,CACjD,CAAC;wBACF,IAAI,WAAW,EAAE;4BACP,IAAA,SAAS,GAAK,WAAW,UAAhB,CAAiB;4BAElC,IAAI,WAAW,CAAC,SAAS,EAAE;gCACzB,2BAA2B;gCAC3B,IAAM,eAAe,GAAG,WAAW,CAAC,SAAS,CAAC,OAAO,CAAC;gCACtD,IAAM,cAAc,mCAAO,eAAe,SAAK,UAAU,OAAC,CAAC;gCAC3D,WAAW,CAAC,SAAS,CAAC,OAAO,GAAG,cAAc,CAAA;gCAG9C,6DAA6D;gCAC7D,SAAS,CAAC,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,WAAW,CAAA;gCACpD,SAAS,CAAC,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC,IAAI,CAAC,WAAW,GAAG,CAAC,CAAA;gCAC3D,SAAS,CAAC,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,WAAW,GAAG,CAAC,CAAA;6BACzD;yBACF;wBACD,OAAO,YAAY,CAAC;oBACtB,CAAC,CAAC;oBAGI,WAAW,GAAG,SAAS,CAAC,cAAc,EAAE,UAAU,EAAE,YAAY,CAAC,CAAC;oBACxE,iBAAiB,CAAC,WAAW,CAAC,CAAC;oBACzB,YAAY,GAAG,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,UAAC,GAAQ,EAAE,EAAc;4BAAX,KAAK,QAAA;wBACzE,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG;4BACrB,MAAM,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO;4BAC7E,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO;4BACnC,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY;yBACzC,CAAC;wBACF,OAAO,GAAG,CAAC;oBACb,CAAC,EAAE,EAAE,CAAC,CAAC;oBACP,qBAAqB,CAAC,YAAY,CAAC,CAAA;;;;oBAGnC,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC,cAAc,EAAE,OAAK,CAAC,CAAC;;;;;SAEvD,CAAC;IAGF,qCAAqC;IACrC,aAAa;IACb,IAAM,SAAS,GAAG,UAAO,MAAkB;;;;;;oBACjC,MAAM,GAAkB,MAAM,OAAxB,EAAE,WAAW,GAAK,MAAM,YAAX,CAAY;oBACvC,IAAI,CAAC,WAAW;wBAAE,sBAAO;oBAEnB,eAAe,GAAG,MAAM,CAAC,WAAW,CAAC;oBACrC,oBAAoB,GAAG,WAAW,CAAC,WAAW,CAAC;oBAG/C,gBAAgB,GAAG,cAAc,CAAC,SAAS,CAAC,UAAC,KAAU,IAAK,OAAA,KAAK,CAAC,SAAS,KAAK,eAAe,EAAnC,CAAmC,CAAC,CAAC;oBACjG,qBAAqB,GAAG,cAAc,CAAC,SAAS,CAAC,UAAC,KAAU,IAAK,OAAA,KAAK,CAAC,SAAS,KAAK,oBAAoB,EAAxC,CAAwC,CAAC,CAAC;oBAEjH,IAAI,gBAAgB,KAAK,CAAC,CAAC,IAAI,qBAAqB,KAAK,CAAC,CAAC;wBAAE,sBAAO;oBAEpE,oCAAoC;oBACpC,IAAI,eAAe,KAAK,oBAAoB,EAAE;wBAC5C,iBAAiB,CAAC,UAAC,QAA+B;4BAChD,OAAA,QAAQ,CAAC,GAAG,CAAC,UAAC,KAAU;gCACtB,IAAI,KAAK,CAAC,SAAS,KAAK,eAAe,EAAE;oCACvC,IAAM,cAAc,qBAAO,KAAK,CAAC,SAAS,CAAC,OAAO,OAAC,CAAC;oCAC7C,IAAA,WAAS,GAAI,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,GAA1C,CAA2C,CAAC,kBAAkB;oCAC9E,cAAc,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC,EAAE,WAAS,CAAC,CAAC,CAAC,6BAA6B;oCAErF,6BACK,KAAK,KACR,SAAS,wBACJ,KAAK,CAAC,SAAS,KAClB,OAAO,EAAE,cAAc,OAEzB;iCACH;gCACD,OAAO,KAAK,CAAC;4BACf,CAAC,CAAC;wBAfF,CAeE,CACH,CAAC;wBACF,sBAAO;qBACR;oBAGK,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;oBAC3E,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;oBAGrF,aAAa,qBAAO,WAAW,CAAC,SAAS,CAAC,OAAO,OAAC,CAAC;oBACnD,kBAAkB,qBAAO,gBAAgB,CAAC,SAAS,CAAC,OAAO,OAAC,CAAC;oBAG5D,SAAS,GAAI,aAAa,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,GAAzC,CAA0C;oBAGpD,WAAW,yBAAQ,SAAS,KAAE,MAAM,EAAE,oBAAoB,GAAE,CAAC;oBAEnE,0CAA0C;oBAC1C,kBAAkB,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC,EAAE,WAAW,CAAC,CAAC;oBAE7D,wBAAwB;oBACxB,WAAW,CAAC,SAAS,CAAC,OAAO,GAAG,aAAa,CAAC;oBAC9C,gBAAgB,CAAC,SAAS,CAAC,OAAO,GAAG,kBAAkB,CAAC;oBAGlD,iBAAiB,GAAG,eAAe,CAAC,cAAc,CAAC,CAAC;;;;oBAElD,QAAQ,GAAG,IAAI,QAAQ,EAAE,CAAC;oBAChC,QAAQ,CAAC,MAAM,CAAC,gBAAgB,EAAE,oBAAoB,CAAC,CAAC;oBACxD,kCAAkC;oBAClC,iBAAiB,CAAC,UAAC,QAA+B;wBAChD,OAAA,QAAQ,CAAC,GAAG,CAAC,UAAC,KAAU;4BACtB,IAAI,KAAK,CAAC,SAAS,KAAK,eAAe,EAAE;gCACvC,OAAO,WAAW,CAAC;6BACpB;4BACD,IAAI,KAAK,CAAC,SAAS,KAAK,oBAAoB,EAAE;gCAC5C,OAAO,gBAAgB,CAAC;6BACzB;4BACD,OAAO,KAAK,CAAC;wBACf,CAAC,CAAC;oBARF,CAQE,CACH,CAAC;oBAC2B,qBAAM,eAAe,CAAC,EAAE,EAAE,EAAE,CAAC,SAAS,CAAC,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,EAAA;;oBAA5F,oBAAoB,GAAG,SAAqE;oBAElG,IAAI,CAAA,oBAAoB,aAApB,oBAAoB,uBAApB,oBAAoB,CAAE,UAAU,MAAK,GAAG,EAAE;wBAC5C,QAAQ,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,cAAc,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC;qBACzH;yBAAM;wBACL,QAAQ,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,cAAc,CAAC,aAAa,EAAE,MAAM,EAAE,oBAAoB,aAApB,oBAAoB,uBAApB,oBAAoB,CAAE,KAAK,EAAE,CAAC,CAAC,CAAC;wBACvH,kCAAkC;wBAClC,iBAAiB,CAAC,iBAAiB,CAAC,CAAC;qBACtC;;;;oBAED,kCAAkC;oBAClC,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC,SAAS,EAAE,OAAK,CAAC,CAAC;oBAC/C,QAAQ,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,cAAc,CAAC,eAAe,EAAE,MAAM,EAAE,CAAA,MAAA,OAAK,aAAL,OAAK,uBAAL,OAAK,CAAE,IAAI,0CAAE,OAAO,KAAI,cAAc,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC;oBACpJ,iBAAiB,CAAC,iBAAiB,CAAC,CAAC;;;;;SAExC,CAAC;IAGF,6BAA6B;IAC7B,IAAM,wBAAwB,GAAG;;;;;;yBAE3B,uBAAuB,EAAvB,wBAAuB;oBAEnB,cAAc,GAAG,CAAA,MAAA,MAAA,MAAA,uBAAuB,aAAvB,uBAAuB,uBAAvB,uBAAuB,CAAE,IAAI,CAAC,SAAS,0CAAE,MAAM,0CAAE,KAAK,0CAAE,cAAc,KAAI,CAAC,CAAC;oBAC7F,SAAS,GAAG;wBAChB,MAAM,EAAE,yBAAyB,GAAG,cAAc;wBAClD,KAAK,EAAE,cAAc;wBACrB,iEAAiE;wBACjE,OAAO,EAAE,gBAAgB;wBACzB,aAAa,EAAE,eAAe;wBAC9B,QAAQ,EAAE,UAAU;wBACpB,aAAa,EAAE,IAAI;wBACnB,WAAW,EAAE;4BACX,KAAK,EAAE,iBAAiB;4BACxB,MAAM,EAAE,CAAC;4BACT,OAAO,EAAE,OAAO;4BAChB,QAAQ,EAAE,UAAU;4BACpB,aAAa,EAAE,eAAe;yBAE/B;wBACD,qBAAqB;qBACtB,CAAC;oBAEI,WAAW,GAAG,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE;wBAC1C,gBAAgB,EAAE,IAAI;qBACvB,CAAC,CAAC;oBAEe,qBAAM,uBAAuB,CAAC,WAAW,CAAC,EAAA;;oBAAtD,IAAI,GAAQ,SAA0C;oBAC5D,IAAI,IAAI,IAAI,CAAA,MAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,IAAI,0CAAE,YAAY,CAAC,MAAM,IAAG,CAAC,EAAE;wBACzC,WAAW,mCAAO,cAAc,SAAK,IAAI,CAAC,IAAI,CAAC,YAAY,OAAC,CAAC;wBACnE,iBAAiB,CAAC,WAAW,CAAC,CAAC;qBAChC;oBACD,4BAA4B,CAAC,yBAAyB,GAAG,CAAC,CAAC,CAAA;;;;;SAE9D,CAAA;IAGD,6CAA6C;IAC7C,IAAM,uBAAuB,GAAG,UAAO,gBAAqB,EAAE,aAA8B;QAA9B,8BAAA,EAAA,qBAA8B;;;;;;;6BAEtF,uBAAuB,EAAvB,wBAAuB;wBACnB,WAAW,GAAG;4BAClB,IAAI,EAAE,EACL;yBACF,CAAA;wBAED,IAAI,gBAAgB,CAAC,uBAAuB,EAAE;4BAC5C,aAAa;4BACb,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,uBAAuB,CAAC,CAAC;yBACjE;wBACD,IAAI,gBAAgB,CAAC,gBAAgB,EAAE;4BACrC,aAAa;4BACb,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,CAAC;yBAC1D;wBACD,IAAI,gBAAgB,CAAC,sBAAsB,EAAE;4BAC3C,aAAa;4BACb,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,sBAAsB,CAAC,CAAC;yBAChE;wBACD,IAAI,gBAAgB,CAAC,2BAA2B,EAAE;4BAChD,aAAa;4BACb,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,2BAA2B,CAAC,CAAC;yBACrE;wBAEK,YAAY,GAAG,gBAAgB,CAAC;wBAChC,aAAa,yBAAQ,CAAC,OAAO,IAAI,EAAE,CAAC,GAAK,CAAC,WAAW,IAAI,EAAE,CAAC,CAAE,CAAC;wBAErE,oBAAoB;wBACpB,UAAU,CAAC,aAAa,CAAC,CAAC;wBAGpB,cAAc,GAAG,CAAA,MAAA,MAAA,MAAA,uBAAuB,aAAvB,uBAAuB,uBAAvB,uBAAuB,CAAE,IAAI,CAAC,SAAS,0CAAE,MAAM,0CAAE,KAAK,0CAAE,cAAc,KAAI,CAAC,CAAC;wBAG7F,SAAS,GAAG;4BAChB,MAAM,EAAE,CAAC;4BACT,KAAK,EAAE,cAAc;4BACrB,iEAAiE;4BACjE,OAAO,EAAE,gBAAgB;4BACzB,aAAa,EAAE,eAAe;4BAC9B,aAAa,EAAE,IAAI;4BACnB,WAAW,EAAE;gCACX,KAAK,EAAE,iBAAiB;gCACxB,MAAM,EAAE,CAAC;gCACT,OAAO,EAAE,aAAa;gCACtB,QAAQ,EAAE,UAAU;gCACpB,aAAa,EAAE,eAAe;6BAC/B;yBACF,CAAA;wBACK,WAAW,GAAG,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE;4BAC1C,gBAAgB,EAAE,IAAI;yBACvB,CAAC,CAAC;wBAEH,qEAAqE;wBACrE,gDAAgD;wBAChD,IAAI,YAAY,EAAE;4BACV,OAAO,GAAG,eAAe,CAAC,SAAS,CAAC,CAAC;4BAC3C,aAAa;4BACb,OAAO,OAAO,CAAC,OAAO,CAAC;4BACvB,kDAAkD;4BAClD,kDAAkD;4BAClD,aAAa;4BACb,OAAO,CAAC,uBAAuB,GAAG,YAAY,CAAC,uBAAuB,IAAI,EAAE,CAAC;4BAC7E,aAAa;4BACb,OAAO,CAAC,gBAAgB,GAAG,YAAY,CAAC,gBAAgB,IAAI,EAAE,CAAC;4BAC/D,aAAa;4BACb,6BAA6B,CAAC,OAAO,CAAC,CAAC;yBACxC;wBAGiB,qBAAM,uBAAuB,CAAC,WAAW,CAAC,EAAA;;wBAAtD,IAAI,GAAQ,SAA0C;wBAE5D,gEAAgE;wBAChE,4BAA4B,CAAC,CAAC,CAAC,CAAC;wBAChC,IAAI,IAAI,IAAI,CAAA,MAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,IAAI,0CAAE,YAAY,CAAC,MAAM,IAAG,CAAC,EAAE;4BACzC,WAAW,qBAAO,IAAI,CAAC,IAAI,CAAC,YAAY,OAAC,CAAC;4BAChD,iBAAiB,CAAC,WAAW,CAAC,CAAC;yBAChC;wBACD,kBAAkB,CAAC,EAAE,CAAC,CAAC;;;;;;KAK1B,CAAA;IAED,SAAS,CAAC;;QACR,IAAI,uBAAuB,EAAE;YAC3B,IAAM,eAAe,GAAG,CAAA,MAAA,MAAA,MAAA,MAAA,uBAAuB,aAAvB,uBAAuB,uBAAvB,uBAAuB,CAAE,IAAI,0CAAE,SAAS,0CAAE,MAAM,0CAAE,KAAK,0CAAE,YAAY,KAAI,CAAA,MAAA,MAAA,MAAA,MAAA,MAAA,uBAAuB,aAAvB,uBAAuB,uBAAvB,uBAAuB,CAAE,IAAI,0CAAE,SAAS,0CAAE,MAAM,0CAAE,KAAK,0CAAE,YAAY,0CAAE,IAAI,MAAK,QAAQ,CAAC,CAAC,CAAC,MAAA,MAAA,MAAA,MAAA,MAAA,uBAAuB,aAAvB,uBAAuB,uBAAvB,uBAAuB,CAAE,IAAI,0CAAE,SAAS,0CAAE,MAAM,0CAAE,KAAK,0CAAE,YAAY,0CAAE,eAAe,CAAC,CAAC,CAAC,UAAU,CAAC;YAChS,IAAM,aAAa,GAAG,CAAA,MAAA,MAAA,MAAA,MAAA,uBAAuB,aAAvB,uBAAuB,uBAAvB,uBAAuB,CAAE,IAAI,0CAAE,SAAS,0CAAE,MAAM,0CAAE,KAAK,0CAAE,UAAU,KAAI,CAAA,MAAA,MAAA,MAAA,MAAA,MAAA,uBAAuB,aAAvB,uBAAuB,uBAAvB,uBAAuB,CAAE,IAAI,0CAAE,SAAS,0CAAE,MAAM,0CAAE,KAAK,0CAAE,UAAU,0CAAE,IAAI,MAAK,QAAQ,CAAC,CAAC,CAAC,MAAA,MAAA,MAAA,MAAA,MAAA,uBAAuB,aAAvB,uBAAuB,uBAAvB,uBAAuB,CAAE,IAAI,0CAAE,SAAS,0CAAE,MAAM,0CAAE,KAAK,0CAAE,UAAU,0CAAE,eAAe,CAAC,CAAC,CAAC,MAAM,CAAC;YACpR,IAAI,eAAe,EAAE;gBACnB,kBAAkB,CAAC,eAAe,CAAC,CAAA;aACpC;YACD,IAAI,aAAa,EAAE;gBACjB,gBAAgB,CAAC,aAAa,CAAC,CAAA;aAChC;SACF;IACH,CAAC,EAAE,CAAC,uBAAuB,CAAC,CAAC,CAAA;IAE7B,IAAM,eAAe,GAAG,MAAA,MAAA,uBAAuB,aAAvB,uBAAuB,uBAAvB,uBAAuB,CAAE,IAAI,0CAAE,SAAS,0CAAE,WAAW,CAAA;IAC7E,IAAM,iBAAiB,GACrB,CAAA,MAAA,MAAA,MAAA,uBAAuB,aAAvB,uBAAuB,uBAAvB,uBAAuB,CAAE,IAAI,0CAAE,SAAS,0CAAE,KAAK,0CAAE,WAAW,KAAI,MAAM,CAAC,SAAS,CAAC;IACnF,IAAM,wBAAwB,GAC5B,4BAA4B;QAC1B,CAAC,CAAC,aAAa;QACf,CAAC,CAAC,wBAAwB;YACxB,CAAC,CAAC,aAAa;YACf,CAAC,CAAC,OAAO,IAAI,CAAC,eAAe;gBAC3B,CAAC,CAAC,YAAY;gBACd,CAAC,CAAC,IAAI,CAAC;IAGf,IAAM,kBAAkB,GAAG;QACzB,IAAI,aAAa,EAAE;YACjB,QAAQ,CAAC,YAAY,EAAE,CAAC,CAAC,CAAG,aAAa;SAC1C;aAAM;YACL,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC,CAAK,YAAY;SACzC;IACH,CAAC,CAAC;IAEF,OAAO,CACL,eAAK,SAAS,EAAC,iFAAiF,aAC9F,cAAK,SAAS,EAAC,wDAAwD,YACrE,eAAK,SAAS,EAAC,yEAAyE,aACtF,eAAK,SAAS,EAAC,6EAA6E,aAC1F,eAAK,SAAS,EAAC,qCAAqC,aAClD,eAAK,SAAS,EAAC,8DAA8D,aAC1E,MAAM,CAAC,OAAO,KAAK,IAAI;oDACtB,cAAK,SAAS,EAAC,0CAA0C,EAAC,OAAO,EAAE,kBAAkB,YACnF,KAAC,SAAS,IAAC,IAAI,EAAC,aAAa,wBAAe,GACxC,EAGR,YAAG,SAAS,EAAC,mCAAmC,YAAE,eAAe,GAAK,EACrE,CAAA,MAAA,MAAA,MAAA,uBAAuB,aAAvB,uBAAuB,uBAAvB,uBAAuB,CAAE,IAAI,0CAAE,SAAS,0CAAE,MAAM,0CAAE,KAAK,CAAC,kBAAkB,MAAK,IAAI;oDAClF,cAAK,SAAS,EAAC,gBAAgB,YAC7B,KAAC,wBAAwB,IAAC,QAAQ,EAAC,QAAQ,EAAC,mBAAmB,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,sBAAsB,EAAE,GAAG,EAAE,2BAA2B,EAAE,QAAQ,EAAE,uBAAuB,EAAE,uBAAuB,EAAE,uBAAuB,GAA+B,GACtR,IAEJ,EAEN,eAAK,SAAS,EAAC,iFAAiF,aAC9F,KAAC,wBAAwB,IAAC,KAAK,EAAE,wBAAwB,GAAI,EAC5D,CAAA,MAAA,MAAA,MAAA,uBAAuB,aAAvB,uBAAuB,uBAAvB,uBAAuB,CAAE,IAAI,0CAAE,SAAS,0CAAE,MAAM,0CAAE,KAAK,CAAC,kBAAkB,MAAK,IAAI;oDAClF,cAAK,SAAS,EAAC,gBAAgB,YAC7B,KAAC,WAAW,IACV,IAAI,EAAC,QAAQ,EACb,OAAO,EAAC,SAAS,EACjB,IAAI,EAAC,IAAI,EACT,SAAS,EAAC,mBAAmB,EAC7B,OAAO,EAAE,cAAM,OAAA,0BAA0B,CAAC,CAAC,uBAAuB,CAAC,EAApD,CAAoD,gBACxD,eAAe,EAC1B,QAAQ,EAAE,KAAC,SAAS,IAAC,IAAI,EAAC,WAAW,wBAAe,GACpD,GACE,EAGP,cAAc,CAAC,QAAQ,CAAC,UAAG,oBAAoB,CAAC,MAAM,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAE,CAAC,IAAI,CAAA,MAAA,MAAA,MAAA,uBAAuB,aAAvB,uBAAuB,uBAAvB,uBAAuB,CAAE,IAAI,0CAAE,SAAS,0CAAE,MAAM,0CAAE,KAAK,CAAC,MAAM,MAAK,KAAK;oDACzJ,KAAC,iBAAiB,IAAC,eAAe,EAAE,eAAe,EAAE,uBAAuB,EAAE,uBAAuB,EAAE,kBAAkB,EAAE,IAAI,GAAI,EAGpI,cAAc,CAAC,QAAQ,CAAC,UAAG,oBAAoB,CAAC,MAAM,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAE,CAAC,IAAI,CAAA,MAAA,MAAA,MAAA,uBAAuB,aAAvB,uBAAuB,uBAAvB,uBAAuB,CAAE,IAAI,0CAAE,SAAS,0CAAE,MAAM,0CAAE,KAAK,CAAC,MAAM,MAAK,KAAK,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,IAAI,KAAC,WAAW,IACvM,IAAI,EAAC,QAAQ,EACb,OAAO,EAAC,aAAa,EACrB,IAAI,EAAC,IAAI,EACT,OAAO,EAAE,cAAM,OAAA,gBAAgB,CAAC,IAAI,CAAC,EAAtB,CAAsB,uBAGzB,EACd,KAAC,WAAW,IACV,IAAI,EAAC,QAAQ,EACb,OAAO,EAAC,SAAS,EACjB,IAAI,EAAC,IAAI,EACT,SAAS,EAAC,mBAAmB,EAC7B,OAAO,EAAE;wDACP,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAA;oDAC1B,CAAC,gBACU,eAAe,EAC1B,QAAQ,EAAE,KAAC,SAAS,IAAC,IAAI,EAAC,YAAY,wBAAe,GACrD,EACF,KAAC,wBAAwB,IACvB,uBAAuB,EAAE,uBAAuB,EAChD,SAAS,EAAE,MAAM,CAAC,SAAS,EAC3B,cAAc,EAAE,cAAc,EAC9B,SAAS,EAAE,SAAS,EACpB,sBAAsB,EAAE,sBAAsB,EAC9C,sBAAsB,EAAE,sBAAsB,EAC9C,OAAO,EAAE,OAAO,EAChB,iBAAiB,EAAE,cAAM,OAAA,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAxB,CAAwB,GACjD,IACE,IACF,EACL,CAAA,MAAA,MAAA,MAAA,uBAAuB,aAAvB,uBAAuB,uBAAvB,uBAAuB,CAAE,IAAI,0CAAE,SAAS,0CAAE,MAAM,0CAAE,KAAK,CAAC,kBAAkB,MAAK,IAAI,IAAI,uBAAuB,IAAI,CACjH,cAAK,SAAS,EAAC,gBAAgB,YAC7B,KAAC,wBAAwB,IAAC,QAAQ,EAAC,QAAQ,EAAC,mBAAmB,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,sBAAsB,EAAE,GAAG,EAAE,2BAA2B,EAAE,QAAQ,EAAE,uBAAuB,EAAE,uBAAuB,EAAE,uBAAuB,GAA+B,GACtR,CACP,IACG,EAEN,0BAAQ,mFAAmF,GAAS,EACnG,uBAAuB,IAAI,cAAc;4BACxC,KAAC,WAAW,IAAC,gBAAgB,EAAE,gBAAgB,EAAE,cAAc,EAAE,cAAc,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,uBAAuB,aAAvB,uBAAuB,uBAAvB,uBAAuB,CAAE,IAAI,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,cAAc,EAAE,cAAc,EAAE,SAAS,EAAE,SAAS,EAAE,wBAAwB,EAAE,wBAAwB,EAAE,eAAe,EAAE,eAAe,EAAE,eAAe,EAAE,eAAe,EAAE,aAAa,EAAE,WAAW,GAAgB,IAE3a,GACF,EAEN,KAAC,kBAAkB,IACjB,IAAI,EAAE,eAAe,EACrB,QAAQ,EAAE,aAAa,EACvB,SAAS,EAAE,UAAU,EACrB,SAAS,EAAC,yDAAyD,EACnE,eAAe,EAAC,0BAA0B,EAC1C,aAAa,EAAC,0BAA0B,EACxC,eAAe,EAAC,6BAA6B,EAC7C,kBAAkB,EAAC,yBAAyB,EAC5C,aAAa,QACb,KAAK,EAAE,iBAAU,iBAAiB,CAAE,EACpC,OAAO,EAAE,YAAG,SAAS,EAAC,0BAA0B,YAAE,uDAAgD,iBAAiB,cAAW,GAAK,EACnI,YAAY,EAAC,QAAQ,EACrB,WAAW,EAAC,QAAQ,GACpB,EACD,YAAY,IAAI,CACf,KAAC,aAAa,IACZ,IAAI,EAAE,YAAY,EAClB,MAAM,EAAE,cAAc,EACtB,OAAO,EAAE,cAAM,OAAA,eAAe,CAAC,KAAK,CAAC,EAAtB,CAAsB,GACrC,CACH,EACD,MAAC,WAAW,IACV,IAAI,EAAE,qBAAqB,EAC3B,YAAY,EAAE,sBAAsB,EACpC,SAAS,EAAC,4BAA4B,EACtC,KAAK,EAAE,EAAE,KAAK,EAAE,gCAAgC,EAAE,aAElD,MAAC,iBAAiB,eAChB,KAAC,gBAAgB,uCAAwC,EACzD,KAAC,gBAAgB,KAAG,IACF,EACpB,KAAC,oBAAoB,KAAG,EACxB,KAAC,eAAe,IAAC,SAAS,EAAC,iCAAiC,YAC1D,KAAC,oBAAoB,IAAC,uBAAuB,EAAE,uBAAuB,EAAE,sBAAsB,EAAE,sBAAsB,GAAI,GAC1G,IACN,IACV,CACP,CAAC;AACJ,CAAC,CAAC","sourcesContent":["import { permissionExpression } from \"../../../helpers/permissions\";\nimport { createSolidEntityApi } from \"../../../redux/api/solidEntityApi\";\nimport { useGetSolidViewLayoutQuery } from \"../../../redux/api/solidViewApi\";\nimport { useLazyCheckIfPermissionExistsQuery } from \"../../../redux/api/userApi\";\nimport { DropResult } from \"@hello-pangea/dnd\";\nimport qs from \"qs\";\nimport { useEffect, useRef, useState } from \"react\";\nimport { SolidCreateButton } from \"../common/SolidCreateButton\";\nimport { SolidGlobalSearchElement } from \"../common/SolidGlobalSearchElement\";\nimport KanbanBoard from \"./KanbanBoard\";\nimport CompactImage from '../../../resources/images/layout/images/compact.png';\nimport CozyImage from '../../../resources/images/layout/images/cozy.png';\nimport ComfortableImage from '../../../resources/images/layout/images/comfortable.png';\nimport { SolidLightbox } from \"../../shad-cn-ui/SolidLightbox\";\nimport type { SolidLightboxSlide } from \"../../shad-cn-ui/SolidLightbox\";\nimport { useRouter } from \"../../../hooks/useRouter\";\nimport { SolidKanbanViewConfigure } from \"./SolidKanbanViewConfigure\";\nimport { KanbanUserViewLayout } from \"./KanbanUserViewLayout\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { setFilterObjectToLocalStorage, getFilterObjectFromLocalStorage } from \"../list/SolidListView\";\nimport { ERROR_MESSAGES } from \"../../../constants/error-messages\";\nimport { showNavbar, toggleNavbar } from \"../../../redux/features/navbarSlice\";\nimport { normalizeSolidListTreeKanbanActionPath } from \"../../../helpers/routePaths\";\nimport { getMediaTypeFromUrl } from \"../../../helpers/mediaType\";\nimport { showToast } from \"../../../redux/features/toastSlice\";\nimport { usePathname } from \"../../../hooks/usePathname\";\nimport { useSearchParams } from \"../../../hooks/useSearchParams\";\nimport { SolidHeaderRequestStatus } from \"../../common/SolidHeaderRequestStatus\";\nimport {\n SolidButton,\n SolidConfirmDialog,\n SolidDialog,\n SolidDialogBody,\n SolidDialogClose,\n SolidDialogHeader,\n SolidDialogSeparator,\n SolidDialogTitle,\n SolidIcon,\n} from \"../../shad-cn-ui\";\nimport { FilterMatchMode } from \"../filter/filterMatchMode\";\n\ntype SolidKanbanViewParams = {\n moduleName: string;\n modelName: string;\n embeded: boolean;\n};\n\n\nexport const SolidKanbanView = (params: SolidKanbanViewParams) => {\n\n const visibleNavbar = useSelector((state: any) => state.navbarState?.visibleNavbar);\n const dispatch = useDispatch()\n\n const solidGlobalSearchElementRef = useRef();\n const router = useRouter();\n const searchParams = useSearchParams();\n // TODO: The initial filter state will be created based on the fields which are present on this kanban view. \n const [filters, setFilters] = useState<any>();\n const [toPopulate, setToPopulate] = useState<string[]>([]);\n const [toPopulateMedia, setToPopulateMedia] = useState<string[]>([]);\n const [actionsAllowed, setActionsAllowed] = useState<string[]>([]);\n const [showGlobalSearchElement, setShowGlobalSearchElement] = useState<boolean>(false);\n const [showArchived, setShowArchived] = useState(false);\n const sizeOptions = [\n { label: 'Compact', value: 'small', image: CompactImage },\n { label: 'Cozy', value: 'normal', image: CozyImage },\n { label: 'Comfortable', value: 'large', image: ComfortableImage }\n ]\n const [size, setSize] = useState<string | any>(sizeOptions[1].value);\n const [viewModes, setViewModes] = useState<any>([]);\n const [groupByFieldName, setGroupByFieldName] = useState<string>(\"\");\n const [triggerCheckIfPermissionExists] = useLazyCheckIfPermissionExistsQuery();\n const [openLightbox, setOpenLightbox] = useState(false);\n const [lightboxUrls, setLightboxUrls] = useState<any[]>([]);\n const [filterQueryString, setFilterQueryString] = useState<any>();\n const [isLayoutDialogVisible, setLayoutDialogVisible] = useState(false);\n const lightboxSlides: SolidLightboxSlide[] = Array.isArray(lightboxUrls)\n ? lightboxUrls\n .map((item: any) => {\n const src = item?.src || item?.downloadUrl || \"\";\n if (!src) {\n return null;\n }\n const mediaType = getMediaTypeFromUrl(src);\n const slide: SolidLightboxSlide = { src };\n if (mediaType !== \"image\") {\n slide.type = mediaType;\n }\n return slide;\n })\n .filter((slide): slide is SolidLightboxSlide => !!slide)\n : [];\n\n const pushFiltersToRouter = (filterQueryString: any) => {\n // @ts-ignore\n router.push(`?${filterQueryString}`, undefined, { shallow: true });\n };\n\n useEffect(() => {\n if (filterQueryString) {\n pushFiltersToRouter(filterQueryString);\n }\n }, [filterQueryString]);\n\n\n\n useEffect(() => {\n const fetchPermissions = async () => {\n if (params.modelName) {\n const permissionNames = [\n permissionExpression(params.modelName, 'create'),\n permissionExpression(params.modelName, 'delete'),\n permissionExpression(params.modelName, 'update'),\n permissionExpression(params.modelName, 'findMany'),\n permissionExpression('importTransaction', 'create'),\n permissionExpression('exportTransaction', 'create'),\n permissionExpression('userViewMetadata', 'create'),\n permissionExpression('savedFilters', 'create')\n ]\n const queryData = {\n permissionNames: permissionNames\n };\n const queryString = qs.stringify(queryData, {\n encodeValuesOnly: true\n });\n const response = await triggerCheckIfPermissionExists(queryString);\n setActionsAllowed(response.data.data);\n }\n };\n fetchPermissions();\n }, [params.modelName]);\n\n\n // Create the RTK slices for this entity\n const entityApi = createSolidEntityApi(params.modelName);\n const {\n useDeleteMultipleSolidEntitiesMutation,\n useLazyGetSolidEntitiesQuery,\n usePatchUpdateSolidEntityMutation\n } = entityApi;\n\n const menuItemId = searchParams.get(\"menuItemId\");\n const menuItemName = searchParams.get(\"menuItemName\");\n const actionId = searchParams.get(\"actionId\");\n const actionName = searchParams.get(\"actionName\");\n\n // Get the kanban view layout & metadata first. \n const kanbanViewMetaDataQs = qs.stringify(\n {\n modelName: params.modelName,\n moduleName: params.moduleName,\n viewType: \"kanban\",\n menuItemId: menuItemId,\n menuItemName: menuItemName,\n actionId: actionId,\n actionName: actionName,\n },\n {\n encodeValuesOnly: true,\n }\n );\n const [kanbanViewMetaData, setKanbanViewMetaData] = useState<any>({});\n\n const {\n data: solidKanbanViewMetaData } = useGetSolidViewLayoutQuery(kanbanViewMetaDataQs);\n\n\n\n const initialFilterMethod = () => {\n\n const solidView = solidKanbanViewMetaData.data.solidView;\n const solidFieldsMetadata = solidKanbanViewMetaData.data.solidFieldsMetadata;\n\n const initialFilters: any = {};\n const toPopulate: string[] = [];\n const toPopulateMedia: string[] = [];\n function findCardNode(nodes: any[] = []): any {\n for (const node of nodes) {\n if (!node) continue;\n if (node.type === \"card\") return node;\n if (Array.isArray(node.children) && node.children.length > 0) {\n const nestedCard = findCardNode(node.children);\n if (nestedCard) return nestedCard;\n }\n }\n\n return null;\n }\n function extractFields(nodes: any, result: any = []) {\n if (!nodes) return result;\n if (Array.isArray(nodes)) {\n nodes.forEach((node: any) => extractFields(node, result));\n return result;\n }\n if (nodes.type === \"field\") {\n result.push(nodes);\n }\n if (nodes.children) {\n nodes.children.forEach((child: any) => extractFields(child, result));\n }\n return result;\n }\n\n const cardNode = findCardNode(solidView?.layout?.children || []);\n const fieldSource = cardNode?.children?.length ? cardNode.children : solidView.layout;\n const layoutFields = extractFields(fieldSource);\n\n for (let i = 0; i < layoutFields.length; i++) {\n const column = layoutFields[i];\n const fieldMetadata = solidFieldsMetadata[column.attrs.name];\n if (fieldMetadata) {\n\n // Form the initial filters after iterating over the columns and field metadata. \n if (['int', 'bigint', 'float', 'decimal'].includes(fieldMetadata.type)) {\n // initialFilters[column.attrs.name] = { operator: FilterOperator.OR, constraints: [{ value: null, matchMode: FilterMatchMode.EQUALS }] }\n initialFilters[column.attrs.name] = { value: null, matchMode: FilterMatchMode.EQUALS }\n }\n else if (['date', 'datetime', 'time', 'boolean'].includes(fieldMetadata.type)) {\n // initialFilters[column.attrs.name] = { operator: FilterOperator.OR, constraints: [{ value: null, matchMode: FilterMatchMode.DATE_IS }] }\n initialFilters[column.attrs.name] = { value: null, matchMode: FilterMatchMode.EQUALS }\n }\n else if (['relation', 'selectionStatic', 'selectionDynamic'].includes(fieldMetadata.type)) {\n initialFilters[column.attrs.name] = { value: null, matchMode: FilterMatchMode.IN }\n }\n else {\n // initialFilters[column.attrs.name] = { operator: FilterOperator.OR, constraints: [{ value: null, matchMode: FilterMatchMode.STARTS_WITH }] }\n initialFilters[column.attrs.name] = { value: null, matchMode: FilterMatchMode.STARTS_WITH }\n }\n\n if (column.attrs.name === 'id') {\n initialFilters[column.attrs.name] = { value: null, matchMode: FilterMatchMode.IN }\n }\n\n // Form the \"toPopulate\" array. \n if (fieldMetadata.type === 'relation') {\n toPopulate.push(fieldMetadata.name);\n }\n if (fieldMetadata.type === 'mediaSingle' || fieldMetadata.type === 'mediaMultiple') {\n toPopulateMedia.push(fieldMetadata.name);\n }\n }\n }\n\n // setFilters(initialFilters);\n const recordsInSwimlane = solidKanbanViewMetaData?.data?.solidView?.layout?.attrs?.recordsInSwimlane ? solidKanbanViewMetaData?.data?.solidView?.layout?.attrs?.recordsInSwimlane : 10;\n // setToPopulate(toPopulate);\n // setToPopulateMedia(toPopulateMedia);\n // setRecordsInSwimlane(recordsInSwimlane);\n // setToPopulate(toPopulate);\n // setToPopulateMedia(toPopulateMedia);\n return { recordsInSwimlane, toPopulate, toPopulateMedia }\n }\n\n\n // Initial Filter data \n useEffect(() => {\n\n if (solidKanbanViewMetaData) {\n setKanbanViewMetaData(solidKanbanViewMetaData);\n setViewModes(solidKanbanViewMetaData?.data?.viewModes);\n setGroupByFieldName(solidKanbanViewMetaData?.data?.solidView?.layout?.attrs?.groupBy || \"\");\n }\n }, [solidKanbanViewMetaData]);\n\n // All kanban view state.\n const [kanbanViewData, setKanbanViewData] = useState<any>([]);\n const [kanbanLoadMoreData, setKanbanLoadMoreData] = useState<any>({});\n const [recordsInSwimlane, setRecordsInSwimlane] = useState(10);\n const [selectedRecords, setSelectedRecords] = useState<any[]>([]);\n const [loading, setLoading] = useState<boolean>(true);\n const [isDialogVisible, setDialogVisible] = useState(false);\n const [createButtonUrl, setCreateButtonUrl] = useState<string>();\n const [editButtonUrl, setEditButtonUrl] = useState<string>();\n const [createActionQueryParams, setCreateActionQueryParams] = useState<Record<string, string>>({});\n const [editActionQueryParams, setEditActionQueryParams] = useState<Record<string, string>>({});\n const [columnsCount, setColumnsCount] = useState(5);\n const [swimLaneCurrentPageNumber, setSwimLaneCurrentPageNumber] = useState(1);\n const [queryDataLoaded, setQueryDataLoaded] = useState(false);\n const [showSaveFilterPopup, setShowSaveFilterPopup] = useState<boolean>(false);\n const [maxSwimLanesCount, setMaxSwimLanesCount] = useState<number>(0);\n const pathname = usePathname();\n // @ts-ignore\n const editBaseUrl = normalizeSolidListTreeKanbanActionPath(pathname, editButtonUrl || \"form\");\n // Get the kanban view data.\n // const [triggerGetSolidEntitiesForKanban, { data: solidEntityKanbanViewData, isLoading, error }] = useLazyGetSolidKanbanEntitiesQuery();\n const [triggerGetSolidEntities, { data: solidEntityKanbanViewData }] = useLazyGetSolidEntitiesQuery();\n\n // Delete mutation \n const [\n deleteManySolidEntities,\n {\n isLoading: isDeleteSolidEntitiesLoading,\n isSuccess: isDeleteSolidEntitiesSucess,\n },\n ] = useDeleteMultipleSolidEntitiesMutation();\n const [\n patchKanbanView,\n {\n isLoading: isPatchKanbanViewLoading,\n },\n ] = usePatchUpdateSolidEntityMutation();\n\n // After data is fetched populate the kanban view state so as to be able to render the data. \n useEffect(() => {\n if (solidEntityKanbanViewData) {\n // Merge groupRecords by groupName: update existing, add new\n setMaxSwimLanesCount(solidEntityKanbanViewData?.meta?.totalRecords || 0);\n const groupRecords = solidEntityKanbanViewData?.groupRecords || [];\n const groupMap = new Map((kanbanViewData || []).map((g: any) => [g.groupName, g]));\n groupRecords.forEach((newGroup: any) => {\n groupMap.set(newGroup.groupName, newGroup);\n });\n const latestKanbanGroupData = Array.from(groupMap.values());\n setKanbanViewData(latestKanbanGroupData);\n const loadmoredata = Object.entries(latestKanbanGroupData).reduce((acc: any, [, value]: any) => {\n acc[value.groupName] = {\n offset: (value.groupData.meta.currentPage - 1) * value.groupData.meta.perPage,\n limit: value.groupData.meta.perPage,\n count: value.groupData.meta.totalRecords\n };\n return acc;\n }, {});\n\n setKanbanLoadMoreData(loadmoredata)\n setLoading(false);\n }\n }, [solidEntityKanbanViewData]);\n\n useEffect(() => {\n if (solidKanbanViewMetaData) {\n const kanbanViewLayoutAttrs = solidKanbanViewMetaData?.data?.solidView?.layout?.attrs;\n const createActionUrl = kanbanViewLayoutAttrs?.createAction && kanbanViewLayoutAttrs?.createAction?.type === \"custom\" ? kanbanViewLayoutAttrs?.createAction?.customComponent : \"form/new\";\n const editActionUrl = kanbanViewLayoutAttrs?.editAction && kanbanViewLayoutAttrs?.editAction?.type === \"custom\" ? kanbanViewLayoutAttrs?.editAction?.customComponent : \"form\";\n\n if (kanbanViewLayoutAttrs?.createAction) {\n setCreateActionQueryParams({\n actionName: kanbanViewLayoutAttrs.createAction.name,\n actionType: kanbanViewLayoutAttrs.createAction.type,\n actionContext: kanbanViewLayoutAttrs.createAction.context,\n });\n }\n if (kanbanViewLayoutAttrs?.editAction) {\n setEditActionQueryParams({\n actionName: kanbanViewLayoutAttrs.editAction.name,\n actionType: kanbanViewLayoutAttrs.editAction.type,\n actionContext: kanbanViewLayoutAttrs.editAction.context,\n });\n }\n\n if (createActionUrl) {\n setCreateButtonUrl(createActionUrl)\n }\n if (editActionUrl) {\n setEditButtonUrl(editActionUrl)\n }\n }\n }, [solidKanbanViewMetaData])\n\n // Fetch data after toPopulate has been populated...\n useEffect(() => {\n\n if (solidKanbanViewMetaData) {\n\n const swimlanesCount = solidKanbanViewMetaData?.data.solidView?.layout?.attrs?.swimlanesCount || 5;\n if (groupByFieldName) {\n\n const queryObject = getFilterObjectFromLocalStorage();\n let queryString = \"\";\n if (queryObject) {\n const filters = {\n $and: []\n }\n if (queryObject.custom_filter_predicate) {\n // @ts-ignore\n filters.$and.push(queryObject.custom_filter_predicate);\n }\n if (queryObject.search_predicate) {\n // @ts-ignore\n filters.$and.push(queryObject.search_predicate);\n }\n // if (queryObject.saved_filter_predicate) {\n // filters.$and.push(queryObject.saved_filter_predicate);\n // }\n // if (queryObject.predefined_search_predicate) {\n // filters.$and.push(queryObject.predefined_search_predicate);\n // }\n\n const queryData = {\n offset: 0,\n limit: Number(queryObject.limit) + Number(queryObject.offset),\n // fields: queryObject.fields || [`${groupByFieldName}`, `count(${groupByFieldName})`],\n groupBy: queryObject.groupBy || groupByFieldName,\n // @ts-ignore\n populateMedia: queryObject.populateMedia || toPopulateMedia,\n populateGroup: queryObject.populateGroup || true,\n groupFilter: {\n limit: Number(queryObject.groupFilter.limit) + Number(queryObject.groupFilter.offset) || kanbanViewMetaData?.data?.solidView?.layout?.attrs?.recordsInSwimlane,\n offset: 0,\n filters: filters,\n // @ts-ignore\n populate: queryObject.groupFilter.populate || toPopulate,\n // @ts-ignore\n populateMedia: queryObject.groupFilter.populateMedia || toPopulateMedia\n }\n // sort: [`id:desc`],\n };\n\n\n const { recordsInSwimlane, toPopulate, toPopulateMedia } = initialFilterMethod();\n setToPopulate(toPopulate);\n setToPopulateMedia(toPopulateMedia);\n setRecordsInSwimlane(recordsInSwimlane);\n // setFilters(filters);\n setQueryDataLoaded(true);\n\n queryString = qs.stringify(queryData, {\n encodeValuesOnly: true\n });\n\n } else {\n const { recordsInSwimlane, toPopulate, toPopulateMedia } = initialFilterMethod();\n const queryData = {\n offset: 0,\n limit: swimlanesCount,\n // fields: [`${groupByFieldName}`, `count(${groupByFieldName})`],\n groupBy: groupByFieldName,\n populateMedia: toPopulateMedia,\n populateGroup: true,\n groupFilter: {\n limit: kanbanViewMetaData?.data?.solidView?.layout?.attrs?.recordsInSwimlane || 10,\n offset: 0,\n filters: filters,\n populate: toPopulate,\n populateMedia: toPopulateMedia\n }\n // sort: [`id:desc`],\n };\n setRecordsInSwimlane(recordsInSwimlane);\n setToPopulate(toPopulate);\n setToPopulateMedia(toPopulateMedia);\n\n // fields=status&groupBy=status&fields=count(status)&populateGroup=true\n queryString = qs.stringify(queryData, {\n encodeValuesOnly: true\n });\n\n setQueryDataLoaded(true)\n }\n\n // triggerGetSolidEntities(queryString);\n setSelectedRecords([]);\n }\n }\n }, [isDeleteSolidEntitiesSucess, groupByFieldName, solidKanbanViewMetaData]);\n\n // clickable link allowing one to open the detail / form view.\n\n // handle bulk deletion\n const deleteBulk = () => {\n let deleteList: any = [];\n selectedRecords.forEach((element: any) => {\n deleteList.push(element.id);\n });\n deleteManySolidEntities(deleteList);\n setDialogVisible(false);\n };\n\n // handle closing of the delete dialog...\n const onDeleteClose = () => {\n setDialogVisible(false);\n setSelectedRecords([]);\n }\n\n\n // Individual Swimlane Load More\n const handleLoadMore = async (groupByField: string) => {\n const { offset, limit } = kanbanLoadMoreData[groupByField];\n kanbanLoadMoreData[groupByField].offset = offset + limit;\n try {\n const queryData = {\n offset: offset + limit,\n limit: limit,\n populate: toPopulate,\n populateMedia: toPopulateMedia,\n populateGroup: true,\n filters: {\n [groupByFieldName]: {\n $in: [groupByField],\n },\n ...filters\n }\n }\n\n\n const queryString = qs.stringify(queryData, {\n encodeValuesOnly: true\n });\n // router.push(`?${queryString}`);\n const data: any = await triggerGetSolidEntities(queryString);\n const newRecords = data.data.records;\n const mergeData = (\n kanbanViewData: any[],\n newRecords: any[],\n groupByField: string\n ) => {\n // Find the group matching the specified groupByField\n const originalData = structuredClone(kanbanViewData);\n const targetGroup = originalData.find(\n (group: any) => group.groupName === groupByField\n );\n if (targetGroup) {\n const { groupData } = targetGroup;\n\n if (targetGroup.groupData) {\n // Extract existing records\n const existingRecords = targetGroup.groupData.records;\n const updatedRecords = [...existingRecords, ...newRecords];\n targetGroup.groupData.records = updatedRecords\n\n\n // Update the meta data (you can adjust this logic as needed)\n groupData.meta.prevPage = groupData.meta.currentPage\n groupData.meta.currentPage = groupData.meta.currentPage + 1\n groupData.meta.nextPage = groupData.meta.currentPage + 1\n }\n }\n return originalData;\n };\n\n\n const updatedData = mergeData(kanbanViewData, newRecords, groupByField);\n setKanbanViewData(updatedData);\n const loadmoredata = Object.entries(updatedData).reduce((acc: any, [, value]: any) => {\n acc[value.groupName] = {\n offset: (value.groupData.meta.currentPage - 1) * value.groupData.meta.perPage,\n limit: value.groupData.meta.perPage,\n count: value.groupData.meta.totalRecords\n };\n return acc;\n }, {});\n setKanbanLoadMoreData(loadmoredata)\n\n } catch (error) {\n console.error(ERROR_MESSAGES.LOAD_MORE_DATA, error);\n }\n };\n\n\n // Handle drag-and-drop functionality\n // @ts-ignore\n const onDragEnd = async (result: DropResult): void => {\n const { source, destination } = result;\n if (!destination) return;\n\n const sourceGroupName = source.droppableId;\n const destinationGroupName = destination.droppableId;\n\n // Find the source and destination groups\n const sourceGroupIndex = kanbanViewData.findIndex((group: any) => group.groupName === sourceGroupName);\n const destinationGroupIndex = kanbanViewData.findIndex((group: any) => group.groupName === destinationGroupName);\n\n if (sourceGroupIndex === -1 || destinationGroupIndex === -1) return;\n\n // If dragging within the same group\n if (sourceGroupName === destinationGroupName) {\n setKanbanViewData((prevData: typeof kanbanViewData) =>\n prevData.map((group: any) => {\n if (group.groupName === sourceGroupName) {\n const updatedRecords = [...group.groupData.records];\n const [movedItem] = updatedRecords.splice(source.index, 1); // Remove the item\n updatedRecords.splice(destination.index, 0, movedItem); // Insert at the new position\n\n return {\n ...group,\n groupData: {\n ...group.groupData,\n records: updatedRecords,\n },\n };\n }\n return group;\n })\n );\n return;\n }\n\n // Deep clone the source and destination groups\n const sourceGroup = JSON.parse(JSON.stringify(kanbanViewData[sourceGroupIndex]));\n const destinationGroup = JSON.parse(JSON.stringify(kanbanViewData[destinationGroupIndex]));\n\n // Clone the records for immutability\n const sourceRecords = [...sourceGroup.groupData.records];\n const destinationRecords = [...destinationGroup.groupData.records];\n\n // Remove the item from the source\n const [movedItem] = sourceRecords.splice(source.index, 1);\n\n // Create a mutable copy of the moved item\n const updatedItem = { ...movedItem, status: destinationGroupName };\n\n // Add the updated item to the destination\n destinationRecords.splice(destination.index, 0, updatedItem);\n\n // Update the group data\n sourceGroup.groupData.records = sourceRecords;\n destinationGroup.groupData.records = destinationRecords;\n\n // Update the kanbanViewData state\n const oldkanbanViewData = structuredClone(kanbanViewData);\n try {\n const formData = new FormData();\n formData.append(groupByFieldName, destinationGroupName);\n // Update the kanbanViewData state\n setKanbanViewData((prevData: typeof kanbanViewData) =>\n prevData.map((group: any) => {\n if (group.groupName === sourceGroupName) {\n return sourceGroup;\n }\n if (group.groupName === destinationGroupName) {\n return destinationGroup;\n }\n return group;\n })\n );\n const kanbanUpdateResponse = await patchKanbanView({ id: +movedItem.id, data: formData }).unwrap();\n\n if (kanbanUpdateResponse?.statusCode === 200) {\n dispatch(showToast({ severity: \"success\", summary: ERROR_MESSAGES.IS_SUCCESS, detail: ERROR_MESSAGES.KANBAN_UPDATED }));\n } else {\n dispatch(showToast({ severity: \"error\", summary: ERROR_MESSAGES.DUPLICATE_KEY, detail: kanbanUpdateResponse?.error }));\n // Update the kanbanViewData state\n setKanbanViewData(oldkanbanViewData);\n }\n } catch (error: any) {\n // 6. Handle 500 or network errors\n console.error(ERROR_MESSAGES.API_ERROR, error);\n dispatch(showToast({ severity: \"error\", summary: ERROR_MESSAGES.SOMETHING_WRONG, detail: error?.data?.message || ERROR_MESSAGES.SOMETHING_WRONG }));\n setKanbanViewData(oldkanbanViewData);\n }\n };\n\n\n // Handle SwimLane Pagination\n const handleSwimLanePagination = async () => {\n\n if (solidKanbanViewMetaData) {\n\n const swimlanesCount = solidKanbanViewMetaData?.data.solidView?.layout?.attrs?.swimlanesCount || 5;\n const queryData = {\n offset: swimLaneCurrentPageNumber * swimlanesCount,\n limit: swimlanesCount,\n // fields: [`${groupByFieldName}`, `count(${groupByFieldName})`],\n groupBy: groupByFieldName,\n populateMedia: toPopulateMedia,\n populate: toPopulate,\n populateGroup: true,\n groupFilter: {\n limit: recordsInSwimlane,\n offset: 0,\n filters: filters,\n populate: toPopulate,\n populateMedia: toPopulateMedia\n\n }\n // sort: [`id:desc`],\n };\n // fields=status&groupBy=status&fields=count(status)&populateGroup=true\n const queryString = qs.stringify(queryData, {\n encodeValuesOnly: true\n });\n\n const data: any = await triggerGetSolidEntities(queryString);\n if (data && data?.data?.groupRecords.length > 0) {\n const updatedData = [...kanbanViewData, ...data.data.groupRecords];\n setKanbanViewData(updatedData);\n }\n setSwimLaneCurrentPageNumber(swimLaneCurrentPageNumber + 1)\n }\n }\n\n\n // Handle the custom filter and Search Filter\n const handleApplyCustomFilter = async (filterPredicates: any, persistFilter: boolean = false) => {\n\n if (solidKanbanViewMetaData) {\n const queryfilter = {\n $and: [\n ]\n }\n\n if (filterPredicates.custom_filter_predicate) {\n // @ts-ignore\n queryfilter.$and.push(filterPredicates.custom_filter_predicate);\n }\n if (filterPredicates.search_predicate) {\n // @ts-ignore\n queryfilter.$and.push(filterPredicates.search_predicate);\n }\n if (filterPredicates.saved_filter_predicate) {\n // @ts-ignore\n queryfilter.$and.push(filterPredicates.saved_filter_predicate);\n }\n if (filterPredicates.predefined_search_predicate) {\n // @ts-ignore\n queryfilter.$and.push(filterPredicates.predefined_search_predicate);\n }\n\n const customFilter = filterPredicates;\n const updatedFilter = { ...(filters || {}), ...(queryfilter || {}) };\n\n // Then update state\n setFilters(updatedFilter);\n\n\n const swimlanesCount = solidKanbanViewMetaData?.data.solidView?.layout?.attrs?.swimlanesCount || 5;\n // const { toPopulate, toPopulateMedia } = initialFilterMethod();\n\n const queryData = {\n offset: 0,\n limit: swimlanesCount,\n // fields: [`${groupByFieldName}`, `count(${groupByFieldName})`],\n groupBy: groupByFieldName,\n populateMedia: toPopulateMedia,\n populateGroup: true,\n groupFilter: {\n limit: recordsInSwimlane,\n offset: 0,\n filters: updatedFilter,\n populate: toPopulate,\n populateMedia: toPopulateMedia\n }\n }\n const queryString = qs.stringify(queryData, {\n encodeValuesOnly: true\n });\n\n // s_filter and c_filter format that needs to be passed to the router\n // only present if handleCustomFilter is applied\n if (customFilter) {\n const urlData = structuredClone(queryData);\n // @ts-ignore\n delete urlData.filters;\n // urlData.s_filter = customFilter.s_filter || {};\n // urlData.c_filter = customFilter.c_filter || {};\n // @ts-ignore\n urlData.custom_filter_predicate = customFilter.custom_filter_predicate || {};\n // @ts-ignore\n urlData.search_predicate = customFilter.search_predicate || {};\n // @ts-ignore\n setFilterObjectToLocalStorage(urlData);\n }\n\n\n const data: any = await triggerGetSolidEntities(queryString);\n\n // Update the kanban view data with the new data based on filter\n setSwimLaneCurrentPageNumber(1);\n if (data && data?.data?.groupRecords.length > 0) {\n const updatedData = [...data.data.groupRecords];\n setKanbanViewData(updatedData);\n }\n setSelectedRecords([]);\n\n\n }\n\n }\n\n useEffect(() => {\n if (solidKanbanViewMetaData) {\n const createActionUrl = solidKanbanViewMetaData?.data?.solidView?.layout?.attrs?.createAction && solidKanbanViewMetaData?.data?.solidView?.layout?.attrs?.createAction?.type === \"custom\" ? solidKanbanViewMetaData?.data?.solidView?.layout?.attrs?.createAction?.customComponent : \"form/new\";\n const editActionUrl = solidKanbanViewMetaData?.data?.solidView?.layout?.attrs?.editAction && solidKanbanViewMetaData?.data?.solidView?.layout?.attrs?.editAction?.type === \"custom\" ? solidKanbanViewMetaData?.data?.solidView?.layout?.attrs?.editAction?.customComponent : \"form\";\n if (createActionUrl) {\n setCreateButtonUrl(createActionUrl)\n }\n if (editActionUrl) {\n setEditButtonUrl(editActionUrl)\n }\n }\n }, [solidKanbanViewMetaData])\n\n const kanbanViewTitle = solidKanbanViewMetaData?.data?.solidView?.displayName\n const entityDisplayName =\n solidKanbanViewMetaData?.data?.solidView?.model?.displayName || params.modelName;\n const headerRequestStatusLabel =\n isDeleteSolidEntitiesLoading\n ? \"Deleting...\"\n : isPatchKanbanViewLoading\n ? \"Updating...\"\n : loading || !queryDataLoaded\n ? \"Loading...\"\n : null;\n\n\n const toggleBothSidebars = () => {\n if (visibleNavbar) {\n dispatch(toggleNavbar()); // close both\n } else {\n dispatch(showNavbar()); // open both\n }\n };\n\n return (\n <div className=\"page-parent-wrapper solid-list-page-wrapper flex h-full min-h-0 overflow-hidden\">\n <div className=\"solid-list-content h-full flex flex-column flex-grow-1\">\n <div className=\"solid-list-surface solid-kanban-surface flex flex-column flex-1 min-h-0\">\n <div className=\"page-header solid-list-toolbar solid-kanban-toolbar flex-column lg:flex-row\">\n <div className=\"flex justify-content-between w-full\">\n <div className=\"flex gap-3 align-items-center w-full solid-list-toolbar-left\">\n {params.embeded !== true &&\n <div className=\"apps-icon block md:hidden cursor-pointer\" onClick={toggleBothSidebars}>\n <SolidIcon name=\"si-th-large\" aria-hidden />\n </div>\n }\n\n <p className=\"m-0 view-title solid-text-wrapper\">{kanbanViewTitle}</p>\n {solidKanbanViewMetaData?.data?.solidView?.layout?.attrs.enableGlobalSearch === true &&\n <div className=\"hidden lg:flex\">\n <SolidGlobalSearchElement viewType=\"kanban\" showSaveFilterPopup={showSaveFilterPopup} setShowSaveFilterPopup={setShowSaveFilterPopup} ref={solidGlobalSearchElementRef} viewData={solidKanbanViewMetaData} handleApplyCustomFilter={handleApplyCustomFilter} ></SolidGlobalSearchElement>\n </div>\n }\n </div>\n\n <div className=\"flex align-items-center solid-header-buttons-wrapper solid-list-toolbar-actions\">\n <SolidHeaderRequestStatus label={headerRequestStatusLabel} />\n {solidKanbanViewMetaData?.data?.solidView?.layout?.attrs.enableGlobalSearch === true &&\n <div className=\"flex lg:hidden\">\n <SolidButton\n type=\"button\"\n variant=\"outline\"\n size=\"sm\"\n className=\"solid-icon-button\"\n onClick={() => setShowGlobalSearchElement(!showGlobalSearchElement)}\n aria-label=\"Toggle search\"\n leftIcon={<SolidIcon name=\"si-search\" aria-hidden />}\n />\n </div>\n }\n\n {actionsAllowed.includes(`${permissionExpression(params.modelName, 'create')}`) && solidKanbanViewMetaData?.data?.solidView?.layout?.attrs.create !== false &&\n <SolidCreateButton createButtonUrl={createButtonUrl} createActionQueryParams={createActionQueryParams} responsiveIconOnly={true} />\n }\n\n {actionsAllowed.includes(`${permissionExpression(params.modelName, 'delete')}`) && solidKanbanViewMetaData?.data?.solidView?.layout?.attrs.delete !== false && selectedRecords.length > 0 && <SolidButton\n type=\"button\"\n variant=\"destructive\"\n size=\"sm\"\n onClick={() => setDialogVisible(true)}\n >\n Delete\n </SolidButton>}\n <SolidButton\n type=\"button\"\n variant=\"outline\"\n size=\"sm\"\n className=\"solid-icon-button\"\n onClick={() => {\n window.location.reload()\n }}\n aria-label=\"Refresh board\"\n leftIcon={<SolidIcon name=\"si-refresh\" aria-hidden />}\n />\n <SolidKanbanViewConfigure\n solidKanbanViewMetaData={solidKanbanViewMetaData}\n modelName={params.modelName}\n actionsAllowed={actionsAllowed}\n viewModes={viewModes}\n setLayoutDialogVisible={setLayoutDialogVisible}\n setShowSaveFilterPopup={setShowSaveFilterPopup}\n filters={filters}\n handleRefreshView={() => window.location.reload()}\n />\n </div>\n </div>\n {solidKanbanViewMetaData?.data?.solidView?.layout?.attrs.enableGlobalSearch === true && showGlobalSearchElement && (\n <div className=\"flex lg:hidden\">\n <SolidGlobalSearchElement viewType=\"kanban\" showSaveFilterPopup={showSaveFilterPopup} setShowSaveFilterPopup={setShowSaveFilterPopup} ref={solidGlobalSearchElementRef} viewData={solidKanbanViewMetaData} handleApplyCustomFilter={handleApplyCustomFilter} ></SolidGlobalSearchElement>\n </div>\n )}\n </div>\n\n <style>{`.p-datatable .p-datatable-loading-overlay {background-color: rgba(0, 0, 0, 0.0);}`}</style>\n {solidKanbanViewMetaData && kanbanViewData &&\n <KanbanBoard groupByFieldName={groupByFieldName} kanbanViewData={kanbanViewData} maxSwimLanesCount={maxSwimLanesCount} solidKanbanViewMetaData={solidKanbanViewMetaData?.data} setKanbanViewData={setKanbanViewData} handleLoadMore={handleLoadMore} onDragEnd={onDragEnd} handleSwimLanePagination={handleSwimLanePagination} setLightboxUrls={setLightboxUrls} setOpenLightbox={setOpenLightbox} editButtonUrl={editBaseUrl}></KanbanBoard>\n }\n </div>\n </div>\n\n <SolidConfirmDialog\n open={isDialogVisible}\n onCancel={onDeleteClose}\n onConfirm={deleteBulk}\n className=\"solid-shadcn-confirm-dialog solid-delete-confirm-dialog\"\n headerClassName=\"solid-shadcn-dialog-head\"\n bodyClassName=\"solid-shadcn-dialog-body\"\n footerClassName=\"solid-shadcn-dialog-actions\"\n separatorClassName=\"solid-shadcn-dialog-sep\"\n showSeparator\n title={`Delete ${entityDisplayName}`}\n message={<p className=\"solid-shadcn-dialog-text\">{`Are you sure you want to delete the selected ${entityDisplayName} records?`}</p>}\n confirmLabel=\"Delete\"\n cancelLabel=\"Cancel\"\n />\n {openLightbox && (\n <SolidLightbox\n open={openLightbox}\n slides={lightboxSlides}\n onClose={() => setOpenLightbox(false)}\n />\n )}\n <SolidDialog\n open={isLayoutDialogVisible}\n onOpenChange={setLayoutDialogVisible}\n className=\"solid-kanban-layout-dialog\"\n style={{ width: \"min(800px, calc(100vw - 32px))\" }}\n >\n <SolidDialogHeader>\n <SolidDialogTitle>Change Kanban Layout</SolidDialogTitle>\n <SolidDialogClose />\n </SolidDialogHeader>\n <SolidDialogSeparator />\n <SolidDialogBody className=\"solid-kanban-layout-dialog-body\">\n <KanbanUserViewLayout solidKanbanViewMetaData={solidKanbanViewMetaData} setLayoutDialogVisible={setLayoutDialogVisible} />\n </SolidDialogBody>\n </SolidDialog>\n </div>\n );\n};\n"]}
|
|
@@ -28,10 +28,10 @@ import { useSearchParams } from "../../../hooks/useSearchParams";
|
|
|
28
28
|
import { SolidHeaderRequestStatus } from "../../common/SolidHeaderRequestStatus";
|
|
29
29
|
import {
|
|
30
30
|
SolidButton,
|
|
31
|
+
SolidConfirmDialog,
|
|
31
32
|
SolidDialog,
|
|
32
33
|
SolidDialogBody,
|
|
33
34
|
SolidDialogClose,
|
|
34
|
-
SolidDialogFooter,
|
|
35
35
|
SolidDialogHeader,
|
|
36
36
|
SolidDialogSeparator,
|
|
37
37
|
SolidDialogTitle,
|
|
@@ -780,6 +780,8 @@ export const SolidKanbanView = (params: SolidKanbanViewParams) => {
|
|
|
780
780
|
}, [solidKanbanViewMetaData])
|
|
781
781
|
|
|
782
782
|
const kanbanViewTitle = solidKanbanViewMetaData?.data?.solidView?.displayName
|
|
783
|
+
const entityDisplayName =
|
|
784
|
+
solidKanbanViewMetaData?.data?.solidView?.model?.displayName || params.modelName;
|
|
783
785
|
const headerRequestStatusLabel =
|
|
784
786
|
isDeleteSolidEntitiesLoading
|
|
785
787
|
? "Deleting..."
|
|
@@ -884,32 +886,21 @@ export const SolidKanbanView = (params: SolidKanbanViewParams) => {
|
|
|
884
886
|
</div>
|
|
885
887
|
</div>
|
|
886
888
|
|
|
887
|
-
<
|
|
889
|
+
<SolidConfirmDialog
|
|
888
890
|
open={isDialogVisible}
|
|
889
|
-
|
|
890
|
-
|
|
891
|
-
onDeleteClose();
|
|
892
|
-
}
|
|
893
|
-
}}
|
|
891
|
+
onCancel={onDeleteClose}
|
|
892
|
+
onConfirm={deleteBulk}
|
|
894
893
|
className="solid-shadcn-confirm-dialog solid-delete-confirm-dialog"
|
|
895
|
-
|
|
896
|
-
|
|
897
|
-
|
|
898
|
-
|
|
899
|
-
|
|
900
|
-
|
|
901
|
-
<
|
|
902
|
-
|
|
903
|
-
|
|
904
|
-
|
|
905
|
-
<SolidButton variant="destructive" size="sm" autoFocus onClick={deleteBulk}>
|
|
906
|
-
Delete
|
|
907
|
-
</SolidButton>
|
|
908
|
-
<SolidButton variant="outline" size="sm" onClick={onDeleteClose}>
|
|
909
|
-
Cancel
|
|
910
|
-
</SolidButton>
|
|
911
|
-
</SolidDialogFooter>
|
|
912
|
-
</SolidDialog>
|
|
894
|
+
headerClassName="solid-shadcn-dialog-head"
|
|
895
|
+
bodyClassName="solid-shadcn-dialog-body"
|
|
896
|
+
footerClassName="solid-shadcn-dialog-actions"
|
|
897
|
+
separatorClassName="solid-shadcn-dialog-sep"
|
|
898
|
+
showSeparator
|
|
899
|
+
title={`Delete ${entityDisplayName}`}
|
|
900
|
+
message={<p className="solid-shadcn-dialog-text">{`Are you sure you want to delete the selected ${entityDisplayName} records?`}</p>}
|
|
901
|
+
confirmLabel="Delete"
|
|
902
|
+
cancelLabel="Cancel"
|
|
903
|
+
/>
|
|
913
904
|
{openLightbox && (
|
|
914
905
|
<SolidLightbox
|
|
915
906
|
open={openLightbox}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SolidManyToOneFilterElement.d.ts","sourceRoot":"","sources":["../../../../src/components/core/kanban/SolidManyToOneFilterElement.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"SolidManyToOneFilterElement.d.ts","sourceRoot":"","sources":["../../../../src/components/core/kanban/SolidManyToOneFilterElement.tsx"],"names":[],"mappings":"AAOA,eAAO,MAAM,2BAA2B,kDAAmD,GAAG,4CAmD7F,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SolidManyToOneFilterElement.js","sourceRoot":"","sources":["../../../../src/components/core/kanban/SolidManyToOneFilterElement.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;
|
|
1
|
+
{"version":3,"file":"SolidManyToOneFilterElement.js","sourceRoot":"","sources":["../../../../src/components/core/kanban/SolidManyToOneFilterElement.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AAEzE,OAAO,EAAE,YAAY,EAA6B,MAAM,yBAAyB,CAAC;AAClF,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACjC,OAAO,EAAE,MAAM,IAAI,CAAC;AAGpB,MAAM,CAAC,IAAM,2BAA2B,GAAG,UAAC,EAAkD;QAAhD,KAAK,WAAA,EAAE,YAAY,kBAAA,EAAE,KAAK,WAAA,EAAE,aAAa,mBAAA;IAEnF,IAAM,SAAS,GAAG,oBAAoB,CAAC,aAAa,CAAC,2BAA2B,CAAC,CAAC;IAC1E,IAAA,4BAA4B,GAAK,SAAS,6BAAd,CAAe;IAC5C,IAAA,uBAAuB,GAAI,4BAA4B,EAAE,GAAlC,CAAmC;IAE3D,IAAA,KAA4C,QAAQ,CAAC,EAAE,CAAC,EAAvD,iBAAiB,QAAA,EAAE,oBAAoB,QAAgB,CAAC;IAC/D,IAAM,kBAAkB,GAAG,UAAO,KAAgC;;;;;;;oBAGxD,SAAS,GAAG;wBACd,MAAM,EAAE,CAAC;wBACT,KAAK,EAAE,EAAE;wBACT,OAAO;4BACH,GAAC,MAAA,MAAA,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,aAAa,0CAAE,YAAY,0CAAE,IAAI,IAAG;gCAChD,UAAU,EAAE,KAAK,CAAC,KAAK;6BAC1B;+BACJ;qBACJ,CAAC;oBAEI,cAAc,GAAG,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE;wBAC3C,gBAAgB,EAAE,IAAI;qBACzB,CAAC,CAAC;oBAG0B,qBAAM,uBAAuB,CAAC,cAAc,CAAC,EAAA;;oBAApE,oBAAoB,GAAG,SAA6C;oBAGpE,gBAAgB,GAAG,oBAAoB,CAAC,IAAI,CAAC;oBAEnD,IAAI,gBAAgB,EAAE;wBACZ,sBAAoB,gBAAgB,CAAC,OAAO,CAAC,GAAG,CAAC,UAAC,IAAS;;4BAC7D,OAAO;gCACH,KAAK,EAAE,IAAI,CAAC,MAAA,MAAA,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,aAAa,0CAAE,YAAY,0CAAE,IAAI,CAAC;gCAC7D,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC;6BACpB,CAAA;wBACL,CAAC,CAAC,CAAC;wBACH,oBAAoB,CAAC,mBAAiB,CAAC,CAAC;qBAC3C;;;;SACJ,CAAA;IAED,OAAO,CACH,KAAC,YAAY,IACT,KAAK,EAAC,OAAO,EACb,KAAK,EAAE,KAAK,EACZ,WAAW,EAAE,iBAAiB,EAC9B,cAAc,EAAE,kBAAkB,EAClC,QAAQ,EAAE,UAAC,CAAC,IAAK,OAAA,YAAY,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,EAA5B,CAA4B,EAC7C,SAAS,EAAC,6BAA6B,GACzC,CACL,CAAA;AACL,CAAC,CAAA","sourcesContent":["import { createSolidEntityApi } from \"../../../redux/api/solidEntityApi\";\nimport { InputTypes } from \"./SolidVarInputsFilterElement\"\nimport { AutoComplete, AutoCompleteCompleteEvent } from \"primereact/autocomplete\";\nimport { useState } from \"react\";\nimport qs from \"qs\";\n\n\nexport const SolidManyToOneFilterElement = ({ value, updateInputs, index, fieldMetadata }: any) => {\n\n const entityApi = createSolidEntityApi(fieldMetadata.relationCoModelSingularName);\n const { useLazyGetSolidEntitiesQuery } = entityApi;\n const [triggerGetSolidEntities] = useLazyGetSolidEntitiesQuery();\n\n const [autoCompleteItems, setAutoCompleteItems] = useState([]);\n const autoCompleteSearch = async (event: AutoCompleteCompleteEvent) => {\n\n // Get the list view layout & metadata first. \n const queryData = {\n offset: 0,\n limit: 10,\n filters: {\n [fieldMetadata?.relationModel?.userKeyField?.name]: {\n $containsi: event.query\n }\n }\n };\n\n const autocompleteQs = qs.stringify(queryData, {\n encodeValuesOnly: true,\n });\n\n // TODO: do error handling here, possible errors like modelname is incorrect etc...\n const autocompleteResponse = await triggerGetSolidEntities(autocompleteQs);\n\n // TODO: if no data found then can we show no matching \"entities\", where entities can be replaced with the model plural name,\n const autocompleteData = autocompleteResponse.data;\n\n if (autocompleteData) {\n const autoCompleteItems = autocompleteData.records.map((item: any) => {\n return {\n label: item[fieldMetadata?.relationModel?.userKeyField?.name],\n value: item['id']\n }\n });\n setAutoCompleteItems(autoCompleteItems);\n }\n }\n\n return (\n <AutoComplete\n field=\"label\"\n value={value}\n suggestions={autoCompleteItems}\n completeMethod={autoCompleteSearch}\n onChange={(e) => updateInputs(index, e.value)}\n className=\"solid-standard-autocomplete\"\n />\n )\n}"]}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { createSolidEntityApi } from "../../../redux/api/solidEntityApi";
|
|
2
|
+
import { InputTypes } from "./SolidVarInputsFilterElement"
|
|
2
3
|
import { AutoComplete, AutoCompleteCompleteEvent } from "primereact/autocomplete";
|
|
3
4
|
import { useState } from "react";
|
|
4
5
|
import qs from "qs";
|
|
@@ -55,4 +56,4 @@ export const SolidManyToOneFilterElement = ({ value, updateInputs, index, fieldM
|
|
|
55
56
|
className="solid-standard-autocomplete"
|
|
56
57
|
/>
|
|
57
58
|
)
|
|
58
|
-
}
|
|
59
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SolidMediaMultipleKanbanField.d.ts","sourceRoot":"","sources":["../../../../../src/components/core/kanban/kanban-fields/SolidMediaMultipleKanbanField.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"SolidMediaMultipleKanbanField.d.ts","sourceRoot":"","sources":["../../../../../src/components/core/kanban/kanban-fields/SolidMediaMultipleKanbanField.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,2BAA2B,EAAE,MAAM,0BAA0B,CAAC;AAOvE,QAAA,MAAM,6BAA6B,oGAAqG,2BAA2B,4CA+HlK,CAAC;AAEF,eAAe,6BAA6B,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { useState } from 'react';
|
|
3
|
+
import { Dialog } from 'primereact/dialog';
|
|
3
4
|
import { Document, Page, pdfjs } from "react-pdf";
|
|
4
|
-
import { SolidDialog, SolidDialogBody, SolidDialogClose, SolidDialogHeader, SolidDialogTitle, } from "../../../shad-cn-ui";
|
|
5
5
|
pdfjs.GlobalWorkerOptions.workerSrc = "//unpkg.com/pdfjs-dist@".concat(pdfjs.version, "/build/pdf.worker.min.mjs");
|
|
6
6
|
var SolidMediaMultipleKanbanField = function (_a) {
|
|
7
7
|
var _b, _c, _d, _e, _f;
|
|
@@ -50,7 +50,7 @@ var SolidMediaMultipleKanbanField = function (_a) {
|
|
|
50
50
|
}
|
|
51
51
|
// **Render Other Files**
|
|
52
52
|
return (_jsxs("div", { className: 'flex align-items-end gap-2 my-2', children: [_jsx("a", { href: url, download: true, target: "_blank", rel: "noopener noreferrer", children: _jsxs("svg", { width: "36px", height: "36px", viewBox: "0 0 24 24", xmlns: "http://www.w3.org/2000/svg", fill: "#722ED1", stroke: "#722ED1", strokeWidth: "0.00024000000000000003", children: [_jsx("g", { id: "SVGRepo_bgCarrier", strokeWidth: "0" }), _jsx("g", { id: "SVGRepo_tracerCarrier", strokeLinecap: "round", strokeLinejoin: "round" }), _jsxs("g", { id: "SVGRepo_iconCarrier", children: [_jsx("path", { d: "M3 23h18V6.709L15.29 1H3zM15 2h.2L20 6.8V7h-5zM4 2h10v6h6v14H4z" }), _jsx("path", { fill: "none", d: "M0 0h24v24H0z" })] })] }) }), _jsxs("a", { href: url, download: true, target: "_blank", rel: "noopener noreferrer", className: 'text-color flex align-items-start gap-2', style: { textDecoration: 'none' }, children: [_jsx("p", { className: "text-sm mb-1", style: { wordWrap: 'break-word', overflowWrap: 'break-word' }, children: fileName }), _jsx("span", { className: 'pi pi-cloud-download' })] })] }, index));
|
|
53
|
-
}),
|
|
53
|
+
}), _jsx(Dialog, { header: "PDF Preview", visible: visible, style: { width: "" }, onHide: function () { return setVisible(false); }, modal: true, children: selectedPdf && (_jsx(Document, { file: selectedPdf, children: _jsx(Page, { pageNumber: 1 }) })) })] }));
|
|
54
54
|
};
|
|
55
55
|
export default SolidMediaMultipleKanbanField;
|
|
56
56
|
//# sourceMappingURL=SolidMediaMultipleKanbanField.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SolidMediaMultipleKanbanField.js","sourceRoot":"","sources":["../../../../../src/components/core/kanban/kanban-fields/SolidMediaMultipleKanbanField.tsx"],"names":[],"mappings":"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","sourcesContent":["\nimport React, { useState } from 'react';\nimport { SolidKanbanViewFieldsParams } from '../SolidKanbanViewFields';\nimport { Document, Page, pdfjs } from \"react-pdf\";\nimport {\n SolidDialog,\n SolidDialogBody,\n SolidDialogClose,\n SolidDialogHeader,\n SolidDialogTitle,\n} from \"../../../shad-cn-ui\";\n\npdfjs.GlobalWorkerOptions.workerSrc = `//unpkg.com/pdfjs-dist@${pdfjs.version}/build/pdf.worker.min.mjs`;\n\n\nconst SolidMediaMultipleKanbanField = ({ solidKanbanViewMetaData, fieldMetadata, fieldLayout, data, setLightboxUrls, setOpenLightbox }: SolidKanbanViewFieldsParams) => {\n // const filterable = column.attrs.filterable;\n const [visible, setVisible] = useState(false);\n const header = fieldMetadata.displayName;\n // const fileData = data && data._media[fieldMetadata.name].length > 0 && data._media[fieldMetadata.name].map((i: any) => {\n // const fileData = { mimeType: i.mimeType, url: i._full_url }\n // return fileData\n // }\n // );\n const [selectedPdf, setSelectedPdf] = useState(null);\n const mediaFiles = data?._media?.[fieldMetadata.name] || [];\n\n const firstImage = mediaFiles.find((file: any) => file.mimeType.includes(\"image/\"));\n\n // **Get all image URLs for the lightbox**\n const allImageUrls = mediaFiles\n .filter((file: any) => file.mimeType.includes(\"image/\"))\n .map((file: any) => ({ src: file._full_url }));\n\n\n return (\n <div className={`${fieldLayout?.attrs?.className ? ` ${fieldLayout.attrs.className}` : \"\"}`}>\n {firstImage && (\n <div className='my-2'>\n <img\n className={fieldLayout?.attrs?.kanbanImagePreviewClassname ? fieldLayout?.attrs?.kanbanImagePreviewClassname : 'kanban-image-preview'}\n src={firstImage._full_url}\n onClick={(event) => {\n event.stopPropagation();\n setLightboxUrls(allImageUrls);\n setOpenLightbox(true);\n }}\n alt={firstImage.originalFileName}\n />\n {fieldLayout?.attrs?.showLabel !== false &&\n\n <p className=\"text-sm\"\n style={{ wordWrap: 'break-word', overflowWrap: 'break-word' }}\n onClick={(event) => {\n event.stopPropagation();\n setLightboxUrls(allImageUrls);\n setOpenLightbox(true);\n }}\n >\n {firstImage.originalFileName}\n </p>\n }\n </div>\n )}\n\n {mediaFiles.map((file: any, index: number) => {\n const { _full_url: url, mimeType, originalFileName: fileName } = file;\n if (mimeType.includes(\"image/\")) return null;\n\n // **Render PDFs**\n if (mimeType.includes(\"pdf\")) {\n return (\n <div key={index} className='flex align-items-end gap-2 my-2'>\n <div\n onClick={() => {\n setSelectedPdf(url);\n setVisible(true);\n }}\n style={{ cursor: 'pointer' }}\n >\n <svg width=\"36px\" height=\"36px\" viewBox=\"-4 0 40 40\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" stroke=\"#000000\" strokeWidth=\"0.0004\"><g id=\"SVGRepo_bgCarrier\" strokeWidth=\"0\"></g><g id=\"SVGRepo_tracerCarrier\" strokeLinecap=\"round\" strokeLinejoin=\"round\"></g><g id=\"SVGRepo_iconCarrier\"> <path d=\"M25.6686 26.0962C25.1812 26.2401 24.4656 26.2563 23.6984 26.145C22.875 26.0256 22.0351 25.7739 21.2096 25.403C22.6817 25.1888 23.8237 25.2548 24.8005 25.6009C25.0319 25.6829 25.412 25.9021 25.6686 26.0962ZM17.4552 24.7459C17.3953 24.7622 17.3363 24.7776 17.2776 24.7939C16.8815 24.9017 16.4961 25.0069 16.1247 25.1005L15.6239 25.2275C14.6165 25.4824 13.5865 25.7428 12.5692 26.0529C12.9558 25.1206 13.315 24.178 13.6667 23.2564C13.9271 22.5742 14.193 21.8773 14.468 21.1894C14.6075 21.4198 14.7531 21.6503 14.9046 21.8814C15.5948 22.9326 16.4624 23.9045 17.4552 24.7459ZM14.8927 14.2326C14.958 15.383 14.7098 16.4897 14.3457 17.5514C13.8972 16.2386 13.6882 14.7889 14.2489 13.6185C14.3927 13.3185 14.5105 13.1581 14.5869 13.0744C14.7049 13.2566 14.8601 13.6642 14.8927 14.2326ZM9.63347 28.8054C9.38148 29.2562 9.12426 29.6782 8.86063 30.0767C8.22442 31.0355 7.18393 32.0621 6.64941 32.0621C6.59681 32.0621 6.53316 32.0536 6.44015 31.9554C6.38028 31.8926 6.37069 31.8476 6.37359 31.7862C6.39161 31.4337 6.85867 30.8059 7.53527 30.2238C8.14939 29.6957 8.84352 29.2262 9.63347 28.8054ZM27.3706 26.1461C27.2889 24.9719 25.3123 24.2186 25.2928 24.2116C24.5287 23.9407 23.6986 23.8091 22.7552 23.8091C21.7453 23.8091 20.6565 23.9552 19.2582 24.2819C18.014 23.3999 16.9392 22.2957 16.1362 21.0733C15.7816 20.5332 15.4628 19.9941 15.1849 19.4675C15.8633 17.8454 16.4742 16.1013 16.3632 14.1479C16.2737 12.5816 15.5674 11.5295 14.6069 11.5295C13.948 11.5295 13.3807 12.0175 12.9194 12.9813C12.0965 14.6987 12.3128 16.8962 13.562 19.5184C13.1121 20.5751 12.6941 21.6706 12.2895 22.7311C11.7861 24.0498 11.2674 25.4103 10.6828 26.7045C9.04334 27.3532 7.69648 28.1399 6.57402 29.1057C5.8387 29.7373 4.95223 30.7028 4.90163 31.7107C4.87693 32.1854 5.03969 32.6207 5.37044 32.9695C5.72183 33.3398 6.16329 33.5348 6.6487 33.5354C8.25189 33.5354 9.79489 31.3327 10.0876 30.8909C10.6767 30.0029 11.2281 29.0124 11.7684 27.8699C13.1292 27.3781 14.5794 27.011 15.985 26.6562L16.4884 26.5283C16.8668 26.4321 17.2601 26.3257 17.6635 26.2153C18.0904 26.0999 18.5296 25.9802 18.976 25.8665C20.4193 26.7844 21.9714 27.3831 23.4851 27.6028C24.7601 27.7883 25.8924 27.6807 26.6589 27.2811C27.3486 26.9219 27.3866 26.3676 27.3706 26.1461ZM30.4755 36.2428C30.4755 38.3932 28.5802 38.5258 28.1978 38.5301H3.74486C1.60224 38.5301 1.47322 36.6218 1.46913 36.2428L1.46884 3.75642C1.46884 1.6039 3.36763 1.4734 3.74457 1.46908H20.263L20.2718 1.4778V7.92396C20.2718 9.21763 21.0539 11.6669 24.0158 11.6669H30.4203L30.4753 11.7218L30.4755 36.2428ZM28.9572 10.1976H24.0169C21.8749 10.1976 21.7453 8.29969 21.7424 7.92417V2.95307L28.9572 10.1976ZM31.9447 36.2428V11.1157L21.7424 0.871022V0.823357H21.6936L20.8742 0H3.74491C2.44954 0 0 0.785336 0 3.75711V36.2435C0 37.5427 0.782956 40 3.74491 40H28.2001C29.4952 39.9997 31.9447 39.2143 31.9447 36.2428Z\" fill=\"#EB5757\"></path> </g></svg>\n </div>\n <p className=\"text-sm\"\n style={{ maxWidth: '70%', wordWrap: 'break-word', overflowWrap: 'break-word' }}\n onClick={() => {\n setSelectedPdf(url);\n setVisible(true);\n }}\n >\n {fileName}\n </p>\n </div>\n );\n }\n\n // **Render Excel Files**\n if (mimeType.includes(\"excel\") || mimeType.includes(\"spreadsheet\")) {\n return (\n <div key={index} className='flex align-items-end gap-2 my-2'>\n <a href={url} download target=\"_blank\" rel=\"noopener noreferrer\">\n <svg fill=\"#45B058\" height=\"36px\" width=\"36px\" version=\"1.1\" id=\"Layer_1\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"><g id=\"SVGRepo_bgCarrier\" strokeWidth=\"0\"></g><g id=\"SVGRepo_tracerCarrier\" strokeLinecap=\"round\" strokeLinejoin=\"round\"></g><g id=\"SVGRepo_iconCarrier\"> <g> <g> <g> <path d=\"M447.168,134.56c-0.535-1.288-1.318-2.459-2.304-3.445l-128-128c-2.003-1.988-4.709-3.107-7.531-3.115H74.667 C68.776,0,64,4.776,64,10.667v490.667C64,507.224,68.776,512,74.667,512h362.667c5.891,0,10.667-4.776,10.667-10.667V138.667 C447.997,137.256,447.714,135.86,447.168,134.56z M320,36.416L411.584,128H320V36.416z M426.667,490.667H85.333V21.333h213.333 v117.333c0,5.891,4.776,10.667,10.667,10.667h117.333V490.667z\"></path> <path d=\"M128,181.333v256c0,5.891,4.776,10.667,10.667,10.667h234.667c5.891,0,10.667-4.776,10.667-10.667v-256 c0-5.891-4.776-10.667-10.667-10.667H138.667C132.776,170.667,128,175.442,128,181.333z M320,192h42.667v42.667H320V192z M320,256h42.667v42.667H320V256z M320,320h42.667v42.667H320V320z M320,384h42.667v42.667H320V384z M213.333,192h85.333v42.667 h-85.333V192z M213.333,256h85.333v42.667h-85.333V256z M213.333,320h85.333v42.667h-85.333V320z M213.333,384h85.333v42.667 h-85.333V384z M149.333,192H192v42.667h-42.667V192z M149.333,256H192v42.667h-42.667V256z M149.333,320H192v42.667h-42.667V320z M149.333,384H192v42.667h-42.667V384z\"></path> </g> </g> </g> </g></svg>\n </a>\n <a href={url} download target=\"_blank\" rel=\"noopener noreferrer\"\n className='text-color flex align-items-start gap-2' style={{ textDecoration: 'none' }}>\n <p className=\"text-sm mb-1\" style={{ wordWrap: 'break-word', overflowWrap: 'break-word' }}>\n {fileName}\n </p>\n <span className='pi pi-cloud-download'></span>\n </a>\n </div>\n );\n }\n\n // **Render Other Files**\n return (\n <div key={index} className='flex align-items-end gap-2 my-2'>\n <a href={url} download target=\"_blank\" rel=\"noopener noreferrer\">\n <svg width=\"36px\" height=\"36px\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"#722ED1\" stroke=\"#722ED1\" strokeWidth=\"0.00024000000000000003\"><g id=\"SVGRepo_bgCarrier\" strokeWidth=\"0\"></g><g id=\"SVGRepo_tracerCarrier\" strokeLinecap=\"round\" strokeLinejoin=\"round\"></g><g id=\"SVGRepo_iconCarrier\"><path d=\"M3 23h18V6.709L15.29 1H3zM15 2h.2L20 6.8V7h-5zM4 2h10v6h6v14H4z\"></path><path fill=\"none\" d=\"M0 0h24v24H0z\"></path></g></svg>\n </a>\n <a href={url} download target=\"_blank\" rel=\"noopener noreferrer\"\n className='text-color flex align-items-start gap-2' style={{ textDecoration: 'none' }}>\n <p className=\"text-sm mb-1\" style={{ wordWrap: 'break-word', overflowWrap: 'break-word' }}>\n {fileName}\n </p>\n <span className='pi pi-cloud-download'></span>\n </a>\n </div>\n );\n\n })}\n\n {/* PDF Dialog */}\n <SolidDialog open={visible} onOpenChange={setVisible} className=\"solid-kanban-preview-dialog\">\n <SolidDialogHeader className=\"solid-kanban-preview-dialog-header\">\n <SolidDialogTitle>PDF Preview</SolidDialogTitle>\n <SolidDialogClose />\n </SolidDialogHeader>\n <SolidDialogBody className=\"solid-kanban-preview-dialog-body\">\n {selectedPdf && (\n <Document file={selectedPdf}>\n <Page pageNumber={1} />\n </Document>\n )}\n </SolidDialogBody>\n </SolidDialog>\n </div>\n );\n\n};\n\nexport default SolidMediaMultipleKanbanField;\n"]}
|
|
1
|
+
{"version":3,"file":"SolidMediaMultipleKanbanField.js","sourceRoot":"","sources":["../../../../../src/components/core/kanban/kanban-fields/SolidMediaMultipleKanbanField.tsx"],"names":[],"mappings":"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","sourcesContent":["\nimport React, { useState } from 'react';\nimport { Column } from \"primereact/column\";\nimport { SolidKanbanViewFieldsParams } from '../SolidKanbanViewFields';\nimport { Dialog } from 'primereact/dialog';\nimport { Document, Page, pdfjs } from \"react-pdf\";\n\npdfjs.GlobalWorkerOptions.workerSrc = `//unpkg.com/pdfjs-dist@${pdfjs.version}/build/pdf.worker.min.mjs`;\n\n\nconst SolidMediaMultipleKanbanField = ({ solidKanbanViewMetaData, fieldMetadata, fieldLayout, data, setLightboxUrls, setOpenLightbox }: SolidKanbanViewFieldsParams) => {\n // const filterable = column.attrs.filterable;\n const [visible, setVisible] = useState(false);\n const header = fieldMetadata.displayName;\n // const fileData = data && data._media[fieldMetadata.name].length > 0 && data._media[fieldMetadata.name].map((i: any) => {\n // const fileData = { mimeType: i.mimeType, url: i._full_url }\n // return fileData\n // }\n // );\n const [selectedPdf, setSelectedPdf] = useState(null);\n const mediaFiles = data?._media?.[fieldMetadata.name] || [];\n\n const firstImage = mediaFiles.find((file: any) => file.mimeType.includes(\"image/\"));\n\n // **Get all image URLs for the lightbox**\n const allImageUrls = mediaFiles\n .filter((file: any) => file.mimeType.includes(\"image/\"))\n .map((file: any) => ({ src: file._full_url }));\n\n\n return (\n <div className={`${fieldLayout?.attrs?.className ? ` ${fieldLayout.attrs.className}` : \"\"}`}>\n {firstImage && (\n <div className='my-2'>\n <img\n className={fieldLayout?.attrs?.kanbanImagePreviewClassname ? fieldLayout?.attrs?.kanbanImagePreviewClassname : 'kanban-image-preview'}\n src={firstImage._full_url}\n onClick={(event) => {\n event.stopPropagation();\n setLightboxUrls(allImageUrls);\n setOpenLightbox(true);\n }}\n alt={firstImage.originalFileName}\n />\n {fieldLayout?.attrs?.showLabel !== false &&\n\n <p className=\"text-sm\"\n style={{ wordWrap: 'break-word', overflowWrap: 'break-word' }}\n onClick={(event) => {\n event.stopPropagation();\n setLightboxUrls(allImageUrls);\n setOpenLightbox(true);\n }}\n >\n {firstImage.originalFileName}\n </p>\n }\n </div>\n )}\n\n {mediaFiles.map((file: any, index: number) => {\n const { _full_url: url, mimeType, originalFileName: fileName } = file;\n if (mimeType.includes(\"image/\")) return null;\n\n // **Render PDFs**\n if (mimeType.includes(\"pdf\")) {\n return (\n <div key={index} className='flex align-items-end gap-2 my-2'>\n <div\n onClick={() => {\n setSelectedPdf(url);\n setVisible(true);\n }}\n style={{ cursor: 'pointer' }}\n >\n <svg width=\"36px\" height=\"36px\" viewBox=\"-4 0 40 40\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" stroke=\"#000000\" strokeWidth=\"0.0004\"><g id=\"SVGRepo_bgCarrier\" strokeWidth=\"0\"></g><g id=\"SVGRepo_tracerCarrier\" strokeLinecap=\"round\" strokeLinejoin=\"round\"></g><g id=\"SVGRepo_iconCarrier\"> <path d=\"M25.6686 26.0962C25.1812 26.2401 24.4656 26.2563 23.6984 26.145C22.875 26.0256 22.0351 25.7739 21.2096 25.403C22.6817 25.1888 23.8237 25.2548 24.8005 25.6009C25.0319 25.6829 25.412 25.9021 25.6686 26.0962ZM17.4552 24.7459C17.3953 24.7622 17.3363 24.7776 17.2776 24.7939C16.8815 24.9017 16.4961 25.0069 16.1247 25.1005L15.6239 25.2275C14.6165 25.4824 13.5865 25.7428 12.5692 26.0529C12.9558 25.1206 13.315 24.178 13.6667 23.2564C13.9271 22.5742 14.193 21.8773 14.468 21.1894C14.6075 21.4198 14.7531 21.6503 14.9046 21.8814C15.5948 22.9326 16.4624 23.9045 17.4552 24.7459ZM14.8927 14.2326C14.958 15.383 14.7098 16.4897 14.3457 17.5514C13.8972 16.2386 13.6882 14.7889 14.2489 13.6185C14.3927 13.3185 14.5105 13.1581 14.5869 13.0744C14.7049 13.2566 14.8601 13.6642 14.8927 14.2326ZM9.63347 28.8054C9.38148 29.2562 9.12426 29.6782 8.86063 30.0767C8.22442 31.0355 7.18393 32.0621 6.64941 32.0621C6.59681 32.0621 6.53316 32.0536 6.44015 31.9554C6.38028 31.8926 6.37069 31.8476 6.37359 31.7862C6.39161 31.4337 6.85867 30.8059 7.53527 30.2238C8.14939 29.6957 8.84352 29.2262 9.63347 28.8054ZM27.3706 26.1461C27.2889 24.9719 25.3123 24.2186 25.2928 24.2116C24.5287 23.9407 23.6986 23.8091 22.7552 23.8091C21.7453 23.8091 20.6565 23.9552 19.2582 24.2819C18.014 23.3999 16.9392 22.2957 16.1362 21.0733C15.7816 20.5332 15.4628 19.9941 15.1849 19.4675C15.8633 17.8454 16.4742 16.1013 16.3632 14.1479C16.2737 12.5816 15.5674 11.5295 14.6069 11.5295C13.948 11.5295 13.3807 12.0175 12.9194 12.9813C12.0965 14.6987 12.3128 16.8962 13.562 19.5184C13.1121 20.5751 12.6941 21.6706 12.2895 22.7311C11.7861 24.0498 11.2674 25.4103 10.6828 26.7045C9.04334 27.3532 7.69648 28.1399 6.57402 29.1057C5.8387 29.7373 4.95223 30.7028 4.90163 31.7107C4.87693 32.1854 5.03969 32.6207 5.37044 32.9695C5.72183 33.3398 6.16329 33.5348 6.6487 33.5354C8.25189 33.5354 9.79489 31.3327 10.0876 30.8909C10.6767 30.0029 11.2281 29.0124 11.7684 27.8699C13.1292 27.3781 14.5794 27.011 15.985 26.6562L16.4884 26.5283C16.8668 26.4321 17.2601 26.3257 17.6635 26.2153C18.0904 26.0999 18.5296 25.9802 18.976 25.8665C20.4193 26.7844 21.9714 27.3831 23.4851 27.6028C24.7601 27.7883 25.8924 27.6807 26.6589 27.2811C27.3486 26.9219 27.3866 26.3676 27.3706 26.1461ZM30.4755 36.2428C30.4755 38.3932 28.5802 38.5258 28.1978 38.5301H3.74486C1.60224 38.5301 1.47322 36.6218 1.46913 36.2428L1.46884 3.75642C1.46884 1.6039 3.36763 1.4734 3.74457 1.46908H20.263L20.2718 1.4778V7.92396C20.2718 9.21763 21.0539 11.6669 24.0158 11.6669H30.4203L30.4753 11.7218L30.4755 36.2428ZM28.9572 10.1976H24.0169C21.8749 10.1976 21.7453 8.29969 21.7424 7.92417V2.95307L28.9572 10.1976ZM31.9447 36.2428V11.1157L21.7424 0.871022V0.823357H21.6936L20.8742 0H3.74491C2.44954 0 0 0.785336 0 3.75711V36.2435C0 37.5427 0.782956 40 3.74491 40H28.2001C29.4952 39.9997 31.9447 39.2143 31.9447 36.2428Z\" fill=\"#EB5757\"></path> </g></svg>\n </div>\n <p className=\"text-sm\"\n style={{ maxWidth: '70%', wordWrap: 'break-word', overflowWrap: 'break-word' }}\n onClick={() => {\n setSelectedPdf(url);\n setVisible(true);\n }}\n >\n {fileName}\n </p>\n </div>\n );\n }\n\n // **Render Excel Files**\n if (mimeType.includes(\"excel\") || mimeType.includes(\"spreadsheet\")) {\n return (\n <div key={index} className='flex align-items-end gap-2 my-2'>\n <a href={url} download target=\"_blank\" rel=\"noopener noreferrer\">\n <svg fill=\"#45B058\" height=\"36px\" width=\"36px\" version=\"1.1\" id=\"Layer_1\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"><g id=\"SVGRepo_bgCarrier\" strokeWidth=\"0\"></g><g id=\"SVGRepo_tracerCarrier\" strokeLinecap=\"round\" strokeLinejoin=\"round\"></g><g id=\"SVGRepo_iconCarrier\"> <g> <g> <g> <path d=\"M447.168,134.56c-0.535-1.288-1.318-2.459-2.304-3.445l-128-128c-2.003-1.988-4.709-3.107-7.531-3.115H74.667 C68.776,0,64,4.776,64,10.667v490.667C64,507.224,68.776,512,74.667,512h362.667c5.891,0,10.667-4.776,10.667-10.667V138.667 C447.997,137.256,447.714,135.86,447.168,134.56z M320,36.416L411.584,128H320V36.416z M426.667,490.667H85.333V21.333h213.333 v117.333c0,5.891,4.776,10.667,10.667,10.667h117.333V490.667z\"></path> <path d=\"M128,181.333v256c0,5.891,4.776,10.667,10.667,10.667h234.667c5.891,0,10.667-4.776,10.667-10.667v-256 c0-5.891-4.776-10.667-10.667-10.667H138.667C132.776,170.667,128,175.442,128,181.333z M320,192h42.667v42.667H320V192z M320,256h42.667v42.667H320V256z M320,320h42.667v42.667H320V320z M320,384h42.667v42.667H320V384z M213.333,192h85.333v42.667 h-85.333V192z M213.333,256h85.333v42.667h-85.333V256z M213.333,320h85.333v42.667h-85.333V320z M213.333,384h85.333v42.667 h-85.333V384z M149.333,192H192v42.667h-42.667V192z M149.333,256H192v42.667h-42.667V256z M149.333,320H192v42.667h-42.667V320z M149.333,384H192v42.667h-42.667V384z\"></path> </g> </g> </g> </g></svg>\n </a>\n <a href={url} download target=\"_blank\" rel=\"noopener noreferrer\"\n className='text-color flex align-items-start gap-2' style={{ textDecoration: 'none' }}>\n <p className=\"text-sm mb-1\" style={{ wordWrap: 'break-word', overflowWrap: 'break-word' }}>\n {fileName}\n </p>\n <span className='pi pi-cloud-download'></span>\n </a>\n </div>\n );\n }\n\n // **Render Other Files**\n return (\n <div key={index} className='flex align-items-end gap-2 my-2'>\n <a href={url} download target=\"_blank\" rel=\"noopener noreferrer\">\n <svg width=\"36px\" height=\"36px\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"#722ED1\" stroke=\"#722ED1\" strokeWidth=\"0.00024000000000000003\"><g id=\"SVGRepo_bgCarrier\" strokeWidth=\"0\"></g><g id=\"SVGRepo_tracerCarrier\" strokeLinecap=\"round\" strokeLinejoin=\"round\"></g><g id=\"SVGRepo_iconCarrier\"><path d=\"M3 23h18V6.709L15.29 1H3zM15 2h.2L20 6.8V7h-5zM4 2h10v6h6v14H4z\"></path><path fill=\"none\" d=\"M0 0h24v24H0z\"></path></g></svg>\n </a>\n <a href={url} download target=\"_blank\" rel=\"noopener noreferrer\"\n className='text-color flex align-items-start gap-2' style={{ textDecoration: 'none' }}>\n <p className=\"text-sm mb-1\" style={{ wordWrap: 'break-word', overflowWrap: 'break-word' }}>\n {fileName}\n </p>\n <span className='pi pi-cloud-download'></span>\n </a>\n </div>\n );\n\n })}\n\n {/* PDF Dialog */}\n <Dialog header=\"PDF Preview\" visible={visible} style={{ width: \"\" }} onHide={() => setVisible(false)} modal>\n {selectedPdf && (\n <Document file={selectedPdf}>\n <Page pageNumber={1} />\n </Document>\n )}\n </Dialog>\n </div>\n );\n\n};\n\nexport default SolidMediaMultipleKanbanField;"]}
|