@erpsquad/common 1.8.5 → 1.8.6
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.
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { jsx
|
|
1
|
+
import { jsx } from "react/jsx-runtime";
|
|
2
2
|
import { createContext, useState, useRef, useMemo, useCallback, useEffect } from "react";
|
|
3
3
|
import { useLocation } from "react-router-dom";
|
|
4
4
|
import { getV1PagesResource, getV1FormBuilderSchemaFieldsName, getV1FormBuilder, patchV1PagesPageId, getV1FilterResource } from "../../api-client/api.system-feature/api/index.esm.js";
|
|
@@ -327,9 +327,6 @@ const PageProvider = ({ children }) => {
|
|
|
327
327
|
setLoading(true);
|
|
328
328
|
};
|
|
329
329
|
}, [curPathName, JSON.stringify(defaultColumns), JSON.stringify(resources)]);
|
|
330
|
-
if ((loading || curPathName != currentPathnameRef.current) && resources) {
|
|
331
|
-
return /* @__PURE__ */ jsx(Fragment, {});
|
|
332
|
-
}
|
|
333
330
|
return /* @__PURE__ */ jsx(
|
|
334
331
|
PageContext.Provider,
|
|
335
332
|
{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.esm.js","sources":["../../../src/contexts/page-context.tsx"],"sourcesContent":["/* eslint-disable react-refresh/only-export-components */\n/* eslint-disable no-mixed-spaces-and-tabs */\n\nimport React, { createContext, useCallback, useEffect, useMemo, useState, useRef } from 'react';\nimport { useLocation } from 'react-router-dom';\nimport {\n\tgetV1FilterResource,\n\tgetV1FormBuilder,\n\tgetV1FormBuilderSchemaFieldsName,\n\tgetV1PagesResource,\n\tpatchV1PagesPageId\n} from '../api-client/api.system-feature/api';\nimport { IResources, routeToColumnsMap, routeToResourceMap } from '../constants/route-page-map'; // Removed - should be passed as props or configured by consuming app\nimport { getToken } from '../utils/common';\nimport { removeIdStaticIdsFromMongoObject } from '../utils/common';\nimport { RuleGroupType } from 'react-querybuilder';\nimport { MaterialTableColumnProps } from '../components/material-table/material-table';\nimport _ from 'lodash';\nimport { formatLabel } from '../utils/format-text';\nimport ErpLoader from '../components/loaders/erp-loader';\nimport { enqueueSnackbar } from 'notistack';\nimport { useTranslation } from 'react-i18next';\nimport { useAuth } from '../hooks/useAuth';\n// import { usePermissions } from '../hooks/use-permissions';\n\n/* Interfaces and types */\nexport type ViewType = 'Table' | 'Grid' | 'Kanban' | 'Calendar' | 'Gantt' | '';\n\ninterface SchemaFields {\n\tselect: string;\n\talias: string;\n\ttype: string;\n\tfilter_type?: string;\n\tfilter_name?: string;\n\trequired?: boolean;\n\tisOrderAllowed?: boolean;\n\tisDefault?: boolean;\n\tisFilterAllowed?: boolean;\n\tlabel?: string;\n\tkey: string;\n\taccessorKey?: string;\n\tjoinKey?: string;\n\tenum?: string | string[];\n}\nexport interface SavedViewType {\n\tlabel: ViewType;\n\tposition: number;\n}\nexport interface PageState {\n\t_id: string | number;\n\tname: string;\n\tpage_size: number;\n\tcolumn_order: string[];\n\tvisible_columns: MaterialTableColumnProps[];\n\tviews: SavedViewType[];\n\tactive_view: ViewType;\n\tfilters: RuleGroupType;\n\tfilterQueryString: string;\n\tsort: Record<any, any> | null;\n\tsearch: string;\n\tenabled_views: ViewType[];\n\tisShared: boolean;\n\tcolumn_sizes: Record<string, number>;\n}\n\nexport interface GeneratedColumnsState {\n\tcolumns: MaterialTableColumnProps[];\n\torderKeys: string[];\n}\n\nexport const initialFilter: RuleGroupType = { combinator: 'and', rules: [] };\n\ninterface PageContextValue {\n\tpageTemplateId: string;\n\tactivePage: PageState;\n\tupdatePageInfo: (updates: Partial<PageState>) => void;\n\tloading: boolean;\n\tisSaving: boolean;\n\terror: string | null;\n\tpages: any[];\n\tsavePages: () => void;\n\tsetActivePage: (data: any) => void;\n\tsetPages: React.Dispatch<any>;\n\tschemaFields: SchemaFields[];\n\tinitializeColumns: (columns: MaterialTableColumnProps[]) => void;\n\tgeneratedColumns: GeneratedColumnsState;\n\tsharedPages: any[];\n\tupdateGeneratedColumns: (updates: Partial<GeneratedColumnsState>) => void;\n\tformData:Record<string, any>\n\tsetFormData:(data:Record<string, any>) => void\n}\n\nexport const defaultPageState: PageState = {\n\t_id: '',\n\tname: '',\n\tpage_size: 10,\n\tcolumn_order: ['id'],\n\tvisible_columns: [],\n\tviews: [],\n\tactive_view: '',\n\tfilters: initialFilter,\n\tfilterQueryString: '',\n\tsort: null,\n\tsearch: '',\n\tenabled_views: ['Table', 'Grid', 'Kanban', 'Calendar', 'Gantt'],\n\tisShared: false,\n\tcolumn_sizes: {}\n};\ninterface PageProviderProps {\n\tchildren: React.ReactNode;\n}\n\nconst UpdatePageInfo = () => {};\nconst UpdateGeneratedColumns = () => {};\n\nexport const PageContext = createContext<PageContextValue>({\n\tpageTemplateId: '',\n\tactivePage: defaultPageState,\n\tupdatePageInfo: UpdatePageInfo,\n\tloading: false,\n\tisSaving: false,\n\terror: null,\n\tpages: [],\n\tsharedPages: [],\n\tsavePages: () => {},\n\tsetActivePage: () => {},\n\tsetPages: () => {},\n\tschemaFields: [],\n\tinitializeColumns: () => {},\n\tgeneratedColumns: { columns: [], orderKeys: [] },\n\tupdateGeneratedColumns: UpdateGeneratedColumns,\n});\n\nfunction mergeArraysKeepingOrder(array1: string[], array2: string[]): string[] {\n\t// Create a Set from the first array for efficient lookups\n\tconst array1Set = new Set(array1);\n\n\t// Filter the second array to find elements not in the first array\n\tconst elementsToAdd = array2.filter((item) => !array1Set.has(item));\n\n\t// Combine the original first array with the new elements\n\treturn [...array1, ...elementsToAdd];\n}\n\nconst generateColumnSchema = (\n\tdefaultColumns: MaterialTableColumnProps[],\n\tschemaFields: SchemaFields[],\n\tcolumnOrders: string[],\n\tdColumns?: any[],\n\tt?: any\n): { columns: MaterialTableColumnProps[]; orderKeys: string[] } => {\n\ttry {\n\t\tif(dColumns && dColumns?.length) {\n\t\t\tdefaultColumns = defaultColumns.map((column) => {\n\t\t\t\tconst f = dColumns.find((c) => c.accessorKey == column.accessorKey);\n\t\t\t\treturn f || column\n\t\t\t})\n\t\t}\n\t\tlet orderKeys = columnOrders.length\n\t\t\t? columnOrders\n\t\t\t: (defaultColumns.map((column) => column.accessorKey) as string[]);\n\t\tconst getAccesorKeyViaField = (field: SchemaFields) =>\n\t\t\t\t(field.type === 'object' || field?.join) ? `${field.alias}.${field.accessorKey}` : field.key;\n\t\t\t\n\t\t// Clean up schema fields by removing \"__replaceKey\" from the keys\n\t\tconst updatedFields = schemaFields.map((field) => ({\n\t\t\t...field,\n\t\t\tkey: field.key.replace('__replaceKey', '')\n\t\t})).filter((field)=>!field.is_inner_join);\n\n\t\tconst uniqueFields = _.differenceWith(\n\t\t\tupdatedFields,\n\t\t\tupdatedFields,\n\t\t\t(fieldA, fieldB) => fieldA.key === fieldB?.joinKey\n\t\t);\n\n\t\t// Find fields in schemaFields but not in defaultColumns based on accessorKey\n\t\tconst unmatchedFields = _.differenceWith(\n\t\t\tuniqueFields,\n\t\t\tdefaultColumns,\n\t\t\t(field, column) => getAccesorKeyViaField(field) === column.accessorKey\n\t\t);\n\n\t\t// Map unique fields to MaterialTableColumn structure\n\t\tconst additionalColumns: MaterialTableColumnProps[] = unmatchedFields.map(\n\t\t\t(field) => ({\n\t\t\t\theader: t ? formatLabel(t(field?.label)?.replace('_data', '') || '') : formatLabel(field?.label?.replace('_data', '') || ''),\n\t\t\t\taccessorKey: getAccesorKeyViaField(field),\n\t\t\t\tvisible: false,\n\t\t\t\ttype: field?.enum ? 'status' : field.type,\n\t\t\t\t...(field.type === 'array' && {typeArrayAccessorKey: field.accessorKey || ''}),\n\t\t\t\tenableSorting: (field.type === 'array' || field.type === 'object' || field?.join) ? false: true,\n\t\t\t\t...(field?.type === 'boolean' ? {\n\t\t\t\t\ttypeBooleanLabels: field?.values?.length ? _.mapValues( _.keyBy(\n\t\t\t\t\t\tfield?.values.map(item => ({\n\t\t\t\t\t\t\tkey: item.name,\n\t\t\t\t\t\t\tvalue: item.label\n\t\t\t\t\t\t})),\n\t\t\t\t\t\t'key'\n\t\t\t\t\t), 'value') : { 0: \"Inactive\", 1: \"Active\", false: \"Inactive\", true: \"Active\" }\n\t\t\t\t} : {})\n\t\t\t})\n\t\t);\n\n\t\tconst updatedDefaultColumns = defaultColumns?.map((column) => {\n\t\t\tconst field = schemaFields.find((field) => getAccesorKeyViaField(field) === column.accessorKey);\n\t\t\treturn {\n\t\t\t\t...column,\n\t\t\t\t...((field?.type === 'object' || field?.joinKey||column.enableSorting===false) ? { enableSorting: false } : {})\n\t\t\t};\n\t\t});\n\n\t\t// Combine default columns and additional columns\n\t\tconst columns = [...updatedDefaultColumns, ...additionalColumns];\n\n\t\t// Generate an array of column keys for ordering\n\t\tconst nOrderKeys = columns.map((column) => column.accessorKey) as string[];\n\n\t\torderKeys = mergeArraysKeepingOrder(orderKeys, nOrderKeys);\n\n\t\treturn { columns, orderKeys };\n\t} catch (error) {\n\t\treturn {\n\t\t\tcolumns: defaultColumns,\n\t\t\torderKeys: defaultColumns.map((column) => column.accessorKey) as string[]\n\t\t};\n\t}\n};\n\nexport const PageProvider: React.FC<PageProviderProps> = ({ children }) => {\n\tconst location = useLocation();\n\tconst [activePage, setActivePageData] = useState<PageState>(defaultPageState);\n\t// const permissions=usePermissions();\n\tconst [schemaFields, setSchemaFields] = useState<SchemaFields[]>([]);\n\tconst [loading, setLoading] = useState<boolean>(true);\n\tconst [isSaving, setIsSaving] = useState<boolean>(false);\n\tconst [error, setError] = useState<string | null>(null);\n\tconst [pages, setPages] = useState<any>([]);\n\tconst [sharedPages, setSharedPages] = useState<any>([]);\n\tconst [isChanged, setIsChanged] = useState<boolean>(false);\n\tconst [pageTemplateId, setPageTemplateId] = useState<string>('');\n\tconst [isInitialLoad, setIsInitialLoad] = useState<boolean>(true);\n\tconst [isCreatePage, setIsCreatePage] = useState<boolean>(false);\n\tconst [formData, setFormData] = useState<any>({});\n\tconst [generatedColumns, setGeneratedColumns] = useState<{\n\t\tcolumns: MaterialTableColumnProps[];\n\t\torderKeys: string[];\n\t}>({ columns: [], orderKeys: [] });\n\tconst {user} = useAuth()\n\t// Add ref to track current pathname for race condition prevention\n\tconst currentPathnameRef = useRef<string>(location.pathname);\n\tconst curPathName = useMemo(() => location.pathname, [location.pathname])\n\t\n\t// Get current page's default columns and resources\n\tconst defaultColumns: any[] = useMemo(() => {\n\t\tconst columns = routeToColumnsMap[curPathName]?.defaultColumns || [];\n\t\treturn columns;\n\t}, [curPathName]);\n\t\n\tconst resources: IResources = useMemo(() => {\n\t\tconst resource = routeToResourceMap[curPathName] || null;\n\t\treturn resource;\n\t}, [curPathName]);\n\n\t//Translation\n\tconst {t}=useTranslation()\n\n\t// eslint-disable-next-line unused-imports/no-unused-vars, @typescript-eslint/no-unused-vars\n\tconst initializeColumns = (columns: MaterialTableColumnProps[]) => {\n\t\t//! Remove the function if not needed\n\t};\n\n\t// Fetch page-related information from API\n\tconst fetchPageData = useCallback(\n\t\tasync (currentPath: string, currentDefaultColumns: any[], currentResources: IResources) => {\n\t\t\n\t\t\t// Check if this request is still valid (pathname hasn't changed)\n\t\t\tif (currentPathnameRef.current !== currentPath) {\n\t\t\t\tconsole.log('Aborting fetchPageData - pathname changed');\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tsetLoading(true);\n\t\t\tsetError(null);\n\t\t\t\n\t\t\ttry {\n\t\t\t\tif (currentDefaultColumns.length && currentResources) {\n\t\t\t\t\tconst { pageResource = '', fieldResource = '',formResource='' } = currentResources;\n\t\t\t\t\t\n\t\t\t\t\t// Double-check pathname hasn't changed before making API calls\n\t\t\t\t\tif (currentPathnameRef.current !== currentPath) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tconst [pageResponse, fieldResponse,formResponse] = await Promise.all([\n\t\t\t\t\t\tpageResource ? getV1PagesResource({ ...getToken(), resource: pageResource }): Promise.resolve(null),\n\n\t\t\t\t\t\tgetV1FormBuilderSchemaFieldsName({\n\t\t\t\t\t\t\tname: fieldResource,\n\t\t\t\t\t\t\t...getToken(),\n\t\t\t\t\t\t\tskip: 0,\n\t\t\t\t\t\t\tlimit: 999\n\t\t\t\t\t\t}),\n\t\t\t\t\t\t\tgetV1FormBuilder({\n\t\t\t\t\t\t\t...getToken(),\n\t\t\t\t\t\t\tfilters:`(resource.eq=${formResource}&company_id.eq=${user?.company_id})`,\n\t\t\t\t\t\t})\n\t\t\t\t\t]);\n\n\t\t\t\t\t// Final check - ensure pathname still matches\n\t\t\t\t\tif (currentPathnameRef.current !== currentPath) {\n\t\t\t\t\t\tconsole.log('Aborting fetchPageData - pathname changed after API call');\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst fields = fieldResponse?.data?.fields?.map(f => ({...f, label: !f?.label?.trim() ? formatLabel(f.key) : f.label}));\n\n\t\t\t\t\tconst gColumns = generateColumnSchema(currentDefaultColumns, fields, [], [], t);\n \n\t\t\t\t\tconst pages =\n\t\t\t\t\t\tpageResponse?.data?.pages?.map((p) => ({\n\t\t\t\t\t\t\t...defaultPageState,\n\t\t\t\t\t\t\t...p,\n\t\t\t\t\t\t\tvisible_columns: generateColumnSchema(\n\t\t\t\t\t\t\t\tp.visible_columns?.length ? p.visible_columns : currentDefaultColumns,\n\t\t\t\t\t\t\t\tfields,\n\t\t\t\t\t\t\t\tp.column_order || [],\n\t\t\t\t\t\t\t\tcurrentDefaultColumns,\n\t\t\t\t\t\t\t\tt\n\t\t\t\t\t\t\t).columns,\n\t\t\t\t\t\t\tcolumn_order: mergeArraysKeepingOrder(\n\t\t\t\t\t\t\t\tp.column_order || [],\n\t\t\t\t\t\t\t\t_.uniq(gColumns.orderKeys)\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t})) || [];\n\t\t\t\t\tconst sharedPages =\n\t\t\t\t\t\tpageResponse?.data?.shared_pages?.map((sPages) => ({\n\t\t\t\t\t\t\t...sPages.details,\n\t\t\t\t\t\t\tisShared: true,\n\t\t\t\t\t\t\towner: sPages.owner,\n\t\t\t\t\t\t\t_id: sPages.id\n\t\t\t\t\t\t})) || [];\n\n\t\t\t\t\tconst uPages = [...pages, ...sharedPages];\n\n\t\t\t\t\t// Only update state if we're still on the same path\n\t\t\t\t\tif (currentPathnameRef.current === currentPath) {\n\t\t\t\t\t\tawait Promise.all([\n\t\t\t\t\t\t\tsetSchemaFields(fields),\n\t\t\t\t\t\t\tsetGeneratedColumns(gColumns),\n\t\t\t\t\t\t\tsetPageTemplateId(pageResponse?.data?._id),\n\t\t\t\t\t\t\tsetSharedPages(sharedPages),\n\t\t\t\t\t\t\tsetPages(uPages || []),\n\t\t\t\t\t\t\tsetFormData(formResponse?.data?.form?.[0] || {}),\n\t\t\t\t\t\t\tsetActivePageData((prev) => ({\n\t\t\t\t\t\t\t\t...prev,\n\t\t\t\t\t\t\t\t...(pages?.[0] || {}) // Merge API response with current state\n\t\t\t\t\t\t\t}))\n\t\t\t\t\t\t]);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} catch (err) {\n\t\t\t\t// Only set error if we're still on the same path\n\t\t\t\tif (currentPathnameRef.current === currentPath) {\n\t\t\t\t\tsetError('Failed to load page data');\n\t\t\t\t}\n\t\t\t} finally {\n\t\t\t\t// Only update loading state if we're still on the same path\n\t\t\t\tif (currentPathnameRef.current === currentPath) {\n\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\tsetLoading(false);\n\t\t\t\t\t}, 1000);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t//eslint-disable-next-line react-hooks/exhaustive-deps\n\t\t[] // Remove dependencies to prevent stale closures\n\t);\n\n\t// Update page state dynamically\n\tconst updatePageInfo = (updates: Partial<PageState>) => {\n\t\tsetActivePageData((prev) => ({\n\t\t\t...prev,\n\t\t\t...updates\n\t\t}));\n\t\t!isInitialLoad && setIsChanged(true)\n\t\tsetIsInitialLoad(false)\n\t};\n\n\t// Update columns state dynamically\n\tconst updateGeneratedColumns = (updates: Partial<GeneratedColumnsState>) => {\n\t\tsetGeneratedColumns((prev) => ({\n\t\t\t...prev,\n\t\t\t...updates\n\t\t}));\n\t};\n\n\tconst setActivePage = (page: PageState) => {\n\t\tconst uPages = pages.map((p) =>\n\t\t\tp._id == activePage?._id ? activePage : p\n\t\t);\n\t\tsetPages(uPages);\n\t\tsetActivePageData(page);\n\t};\n\n\tconst savePages = async () => {\n\t\tsetError(null);\n\t\tsetIsSaving(true);\n\t\tawait addOrDeletePage()\n\t\tsetTimeout(() => {\n\t\t\tsetIsSaving(false);\n\t\t}, 1000);\n\t};\n\tconst fetchSavedFilters = async (): Promise<void> => {\n\n\t\tawait\tgetV1FilterResource({ ...getToken(), resource: resources?.pageResource || resources?.fieldResource })\n\t\t\t\n\t};\n\n\tconst addOrDeletePage=async(restPages?:any[])=>{\n\t\ttry {\n\t\t\tconst filteredPages =restPages?.length ? restPages : pages.filter((page) => !page.isShared);\n\t\t\tconst uPages = filteredPages.map((p) =>\n\t\t\t\t(p._id == activePage?._id && activePage.name==p.name) ? activePage : p\n\t\t\t);\n\t\t\tconst sanitizedPages = removeIdStaticIdsFromMongoObject(uPages);\n\n\t\t\tconst response = await patchV1PagesPageId({\n\t\t\t\t...getToken(),\n\t\t\t\t...{ page_id: pageTemplateId, pages: sanitizedPages }\n\t\t\t});\n\t\t\tif (response.status_code === 200) {\n\t\t\t\tconst updatedPages = response?.data?.pages || [];\n\t\t\t\tsetPages(updatedPages);\n \t\tfetchSavedFilters();\n\t\t\t\tsetActivePageData((prev) => ({\n\t\t\t\t\t...prev,\n\t\t\t\t\t...(updatedPages.find((p) => p.name == prev.name) || {})\n\t\t\t\t}));\n\t\t\t\tsetIsChanged(false);\n\t\t\t\tsetIsCreatePage(false);\n\t\t\t\tsetFormData(response?.data?.form?.[0] || {});\n\t\t\t\tconst msg=restPages?.length ? t('pages.msg.delete') : t('pages.msg.save')\n\t\t\t\tenqueueSnackbar(msg);\n\t\t\t}\n\t\t\treturn response\n\t\t} catch (err) {\n\t\t\tsetError('Failed to save page data');\n\t\t} \n\t}\n\t\n\tconst deletePage=async(pages:string)=>{\n\t\taddOrDeletePage(pages);\n\t}\n\n\t// Handle pathname changes\n\tuseEffect(() => {\n\t\t// Update the ref immediately\n\t\tcurrentPathnameRef.current = curPathName;\n\t\t\n\t\t// Reset state for new page\n\t\tsetLoading(true);\n\t\tsetIsSaving(false);\n\t\tsetActivePageData(defaultPageState);\n\t\tsetIsChanged(false);\n\t\tsetIsInitialLoad(true);\n\t\t\n\t\t// Clear previous data to prevent showing stale data\n\t\tsetSchemaFields([]);\n\t\tsetGeneratedColumns({ columns: [], orderKeys: [] });\n\t\tsetPages([]);\n\t\tsetSharedPages([]);\n\t\tsetPageTemplateId('');\n\t\tsetError(null);\n\t\t\n\t\t// Fetch data for new page with current values\n\t\tfetchPageData(curPathName, defaultColumns, resources);\n\n\t\treturn () => { setLoading(true) }\n\t\t//eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [curPathName, JSON.stringify(defaultColumns), JSON.stringify(resources)]); // Remove other dependencies to prevent issues\n\n\n\tif ((loading || curPathName != currentPathnameRef.current) && resources) {\n\t\treturn <></>; // Show loader before rendering anything else\n\t}\n\n\treturn (\n\t\t<PageContext.Provider\n\t\t\tvalue={{\n\t\t\t\tpageTemplateId,\n\t\t\t\tactivePage,\n\t\t\t\tpages,\n\t\t\t\tsharedPages,\n\t\t\t\tschemaFields,\n\t\t\t\tsetPages,\n\t\t\t\tupdatePageInfo,\n\t\t\t\tsavePages,\n\t\t\t\tsetActivePage,\n\t\t\t\tisSaving,\n\t\t\t\tloading,\n\t\t\t\terror,\n\t\t\t\tinitializeColumns,\n\t\t\t\tgeneratedColumns,\n\t\t\t\tupdateGeneratedColumns,\n\t\t\t\tisChanged,\n\t\t\t\tdeletePage,\n\t\t\t\tisCreatePage,\n\t\t\t\tsetIsCreatePage,\n\t\t\t\taddOrDeletePage,\n\t\t\t\tsetIsChanged,\n\t\t\t\tformData\n\t\t\t}}>\n\t\t\t{children}\n\t\t</PageContext.Provider>\n\t);\n};\n"],"names":["field","_a","pages","sharedPages"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.esm.js","sources":["../../../src/contexts/page-context.tsx"],"sourcesContent":["/* eslint-disable react-refresh/only-export-components */\n/* eslint-disable no-mixed-spaces-and-tabs */\n\nimport React, { createContext, useCallback, useEffect, useMemo, useState, useRef } from 'react';\nimport { useLocation } from 'react-router-dom';\nimport {\n\tgetV1FilterResource,\n\tgetV1FormBuilder,\n\tgetV1FormBuilderSchemaFieldsName,\n\tgetV1PagesResource,\n\tpatchV1PagesPageId\n} from '../api-client/api.system-feature/api';\nimport { IResources, routeToColumnsMap, routeToResourceMap } from '../constants/route-page-map'; // Removed - should be passed as props or configured by consuming app\nimport { getToken } from '../utils/common';\nimport { removeIdStaticIdsFromMongoObject } from '../utils/common';\nimport { RuleGroupType } from 'react-querybuilder';\nimport { MaterialTableColumnProps } from '../components/material-table/material-table';\nimport _ from 'lodash';\nimport { formatLabel } from '../utils/format-text';\nimport ErpLoader from '../components/loaders/erp-loader';\nimport { enqueueSnackbar } from 'notistack';\nimport { useTranslation } from 'react-i18next';\nimport { useAuth } from '../hooks/useAuth';\n// import { usePermissions } from '../hooks/use-permissions';\n\n/* Interfaces and types */\nexport type ViewType = 'Table' | 'Grid' | 'Kanban' | 'Calendar' | 'Gantt' | '';\n\ninterface SchemaFields {\n\tselect: string;\n\talias: string;\n\ttype: string;\n\tfilter_type?: string;\n\tfilter_name?: string;\n\trequired?: boolean;\n\tisOrderAllowed?: boolean;\n\tisDefault?: boolean;\n\tisFilterAllowed?: boolean;\n\tlabel?: string;\n\tkey: string;\n\taccessorKey?: string;\n\tjoinKey?: string;\n\tenum?: string | string[];\n}\nexport interface SavedViewType {\n\tlabel: ViewType;\n\tposition: number;\n}\nexport interface PageState {\n\t_id: string | number;\n\tname: string;\n\tpage_size: number;\n\tcolumn_order: string[];\n\tvisible_columns: MaterialTableColumnProps[];\n\tviews: SavedViewType[];\n\tactive_view: ViewType;\n\tfilters: RuleGroupType;\n\tfilterQueryString: string;\n\tsort: Record<any, any> | null;\n\tsearch: string;\n\tenabled_views: ViewType[];\n\tisShared: boolean;\n\tcolumn_sizes: Record<string, number>;\n}\n\nexport interface GeneratedColumnsState {\n\tcolumns: MaterialTableColumnProps[];\n\torderKeys: string[];\n}\n\nexport const initialFilter: RuleGroupType = { combinator: 'and', rules: [] };\n\ninterface PageContextValue {\n\tpageTemplateId: string;\n\tactivePage: PageState;\n\tupdatePageInfo: (updates: Partial<PageState>) => void;\n\tloading: boolean;\n\tisSaving: boolean;\n\terror: string | null;\n\tpages: any[];\n\tsavePages: () => void;\n\tsetActivePage: (data: any) => void;\n\tsetPages: React.Dispatch<any>;\n\tschemaFields: SchemaFields[];\n\tinitializeColumns: (columns: MaterialTableColumnProps[]) => void;\n\tgeneratedColumns: GeneratedColumnsState;\n\tsharedPages: any[];\n\tupdateGeneratedColumns: (updates: Partial<GeneratedColumnsState>) => void;\n\tformData:Record<string, any>\n\tsetFormData:(data:Record<string, any>) => void\n}\n\nexport const defaultPageState: PageState = {\n\t_id: '',\n\tname: '',\n\tpage_size: 10,\n\tcolumn_order: ['id'],\n\tvisible_columns: [],\n\tviews: [],\n\tactive_view: '',\n\tfilters: initialFilter,\n\tfilterQueryString: '',\n\tsort: null,\n\tsearch: '',\n\tenabled_views: ['Table', 'Grid', 'Kanban', 'Calendar', 'Gantt'],\n\tisShared: false,\n\tcolumn_sizes: {}\n};\ninterface PageProviderProps {\n\tchildren: React.ReactNode;\n}\n\nconst UpdatePageInfo = () => {};\nconst UpdateGeneratedColumns = () => {};\n\nexport const PageContext = createContext<PageContextValue>({\n\tpageTemplateId: '',\n\tactivePage: defaultPageState,\n\tupdatePageInfo: UpdatePageInfo,\n\tloading: false,\n\tisSaving: false,\n\terror: null,\n\tpages: [],\n\tsharedPages: [],\n\tsavePages: () => {},\n\tsetActivePage: () => {},\n\tsetPages: () => {},\n\tschemaFields: [],\n\tinitializeColumns: () => {},\n\tgeneratedColumns: { columns: [], orderKeys: [] },\n\tupdateGeneratedColumns: UpdateGeneratedColumns,\n});\n\nfunction mergeArraysKeepingOrder(array1: string[], array2: string[]): string[] {\n\t// Create a Set from the first array for efficient lookups\n\tconst array1Set = new Set(array1);\n\n\t// Filter the second array to find elements not in the first array\n\tconst elementsToAdd = array2.filter((item) => !array1Set.has(item));\n\n\t// Combine the original first array with the new elements\n\treturn [...array1, ...elementsToAdd];\n}\n\nconst generateColumnSchema = (\n\tdefaultColumns: MaterialTableColumnProps[],\n\tschemaFields: SchemaFields[],\n\tcolumnOrders: string[],\n\tdColumns?: any[],\n\tt?: any\n): { columns: MaterialTableColumnProps[]; orderKeys: string[] } => {\n\ttry {\n\t\tif(dColumns && dColumns?.length) {\n\t\t\tdefaultColumns = defaultColumns.map((column) => {\n\t\t\t\tconst f = dColumns.find((c) => c.accessorKey == column.accessorKey);\n\t\t\t\treturn f || column\n\t\t\t})\n\t\t}\n\t\tlet orderKeys = columnOrders.length\n\t\t\t? columnOrders\n\t\t\t: (defaultColumns.map((column) => column.accessorKey) as string[]);\n\t\tconst getAccesorKeyViaField = (field: SchemaFields) =>\n\t\t\t\t(field.type === 'object' || field?.join) ? `${field.alias}.${field.accessorKey}` : field.key;\n\t\t\t\n\t\t// Clean up schema fields by removing \"__replaceKey\" from the keys\n\t\tconst updatedFields = schemaFields.map((field) => ({\n\t\t\t...field,\n\t\t\tkey: field.key.replace('__replaceKey', '')\n\t\t})).filter((field)=>!field.is_inner_join);\n\n\t\tconst uniqueFields = _.differenceWith(\n\t\t\tupdatedFields,\n\t\t\tupdatedFields,\n\t\t\t(fieldA, fieldB) => fieldA.key === fieldB?.joinKey\n\t\t);\n\n\t\t// Find fields in schemaFields but not in defaultColumns based on accessorKey\n\t\tconst unmatchedFields = _.differenceWith(\n\t\t\tuniqueFields,\n\t\t\tdefaultColumns,\n\t\t\t(field, column) => getAccesorKeyViaField(field) === column.accessorKey\n\t\t);\n\n\t\t// Map unique fields to MaterialTableColumn structure\n\t\tconst additionalColumns: MaterialTableColumnProps[] = unmatchedFields.map(\n\t\t\t(field) => ({\n\t\t\t\theader: t ? formatLabel(t(field?.label)?.replace('_data', '') || '') : formatLabel(field?.label?.replace('_data', '') || ''),\n\t\t\t\taccessorKey: getAccesorKeyViaField(field),\n\t\t\t\tvisible: false,\n\t\t\t\ttype: field?.enum ? 'status' : field.type,\n\t\t\t\t...(field.type === 'array' && {typeArrayAccessorKey: field.accessorKey || ''}),\n\t\t\t\tenableSorting: (field.type === 'array' || field.type === 'object' || field?.join) ? false: true,\n\t\t\t\t...(field?.type === 'boolean' ? {\n\t\t\t\t\ttypeBooleanLabels: field?.values?.length ? _.mapValues( _.keyBy(\n\t\t\t\t\t\tfield?.values.map(item => ({\n\t\t\t\t\t\t\tkey: item.name,\n\t\t\t\t\t\t\tvalue: item.label\n\t\t\t\t\t\t})),\n\t\t\t\t\t\t'key'\n\t\t\t\t\t), 'value') : { 0: \"Inactive\", 1: \"Active\", false: \"Inactive\", true: \"Active\" }\n\t\t\t\t} : {})\n\t\t\t})\n\t\t);\n\n\t\tconst updatedDefaultColumns = defaultColumns?.map((column) => {\n\t\t\tconst field = schemaFields.find((field) => getAccesorKeyViaField(field) === column.accessorKey);\n\t\t\treturn {\n\t\t\t\t...column,\n\t\t\t\t...((field?.type === 'object' || field?.joinKey||column.enableSorting===false) ? { enableSorting: false } : {})\n\t\t\t};\n\t\t});\n\n\t\t// Combine default columns and additional columns\n\t\tconst columns = [...updatedDefaultColumns, ...additionalColumns];\n\n\t\t// Generate an array of column keys for ordering\n\t\tconst nOrderKeys = columns.map((column) => column.accessorKey) as string[];\n\n\t\torderKeys = mergeArraysKeepingOrder(orderKeys, nOrderKeys);\n\n\t\treturn { columns, orderKeys };\n\t} catch (error) {\n\t\treturn {\n\t\t\tcolumns: defaultColumns,\n\t\t\torderKeys: defaultColumns.map((column) => column.accessorKey) as string[]\n\t\t};\n\t}\n};\n\nexport const PageProvider: React.FC<PageProviderProps> = ({ children }) => {\n\tconst location = useLocation();\n\tconst [activePage, setActivePageData] = useState<PageState>(defaultPageState);\n\t// const permissions=usePermissions();\n\tconst [schemaFields, setSchemaFields] = useState<SchemaFields[]>([]);\n\tconst [loading, setLoading] = useState<boolean>(true);\n\tconst [isSaving, setIsSaving] = useState<boolean>(false);\n\tconst [error, setError] = useState<string | null>(null);\n\tconst [pages, setPages] = useState<any>([]);\n\tconst [sharedPages, setSharedPages] = useState<any>([]);\n\tconst [isChanged, setIsChanged] = useState<boolean>(false);\n\tconst [pageTemplateId, setPageTemplateId] = useState<string>('');\n\tconst [isInitialLoad, setIsInitialLoad] = useState<boolean>(true);\n\tconst [isCreatePage, setIsCreatePage] = useState<boolean>(false);\n\tconst [formData, setFormData] = useState<any>({});\n\tconst [generatedColumns, setGeneratedColumns] = useState<{\n\t\tcolumns: MaterialTableColumnProps[];\n\t\torderKeys: string[];\n\t}>({ columns: [], orderKeys: [] });\n\tconst {user} = useAuth()\n\t// Add ref to track current pathname for race condition prevention\n\tconst currentPathnameRef = useRef<string>(location.pathname);\n\tconst curPathName = useMemo(() => location.pathname, [location.pathname])\n\t\n\t// Get current page's default columns and resources\n\tconst defaultColumns: any[] = useMemo(() => {\n\t\tconst columns = routeToColumnsMap[curPathName]?.defaultColumns || [];\n\t\treturn columns;\n\t}, [curPathName]);\n\t\n\tconst resources: IResources = useMemo(() => {\n\t\tconst resource = routeToResourceMap[curPathName] || null;\n\t\treturn resource;\n\t}, [curPathName]);\n\n\t//Translation\n\tconst {t}=useTranslation()\n\n\t// eslint-disable-next-line unused-imports/no-unused-vars, @typescript-eslint/no-unused-vars\n\tconst initializeColumns = (columns: MaterialTableColumnProps[]) => {\n\t\t//! Remove the function if not needed\n\t};\n\n\t// Fetch page-related information from API\n\tconst fetchPageData = useCallback(\n\t\tasync (currentPath: string, currentDefaultColumns: any[], currentResources: IResources) => {\n\t\t\n\t\t\t// Check if this request is still valid (pathname hasn't changed)\n\t\t\tif (currentPathnameRef.current !== currentPath) {\n\t\t\t\tconsole.log('Aborting fetchPageData - pathname changed');\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tsetLoading(true);\n\t\t\tsetError(null);\n\t\t\t\n\t\t\ttry {\n\t\t\t\tif (currentDefaultColumns.length && currentResources) {\n\t\t\t\t\tconst { pageResource = '', fieldResource = '',formResource='' } = currentResources;\n\t\t\t\t\t\n\t\t\t\t\t// Double-check pathname hasn't changed before making API calls\n\t\t\t\t\tif (currentPathnameRef.current !== currentPath) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tconst [pageResponse, fieldResponse,formResponse] = await Promise.all([\n\t\t\t\t\t\tpageResource ? getV1PagesResource({ ...getToken(), resource: pageResource }): Promise.resolve(null),\n\n\t\t\t\t\t\tgetV1FormBuilderSchemaFieldsName({\n\t\t\t\t\t\t\tname: fieldResource,\n\t\t\t\t\t\t\t...getToken(),\n\t\t\t\t\t\t\tskip: 0,\n\t\t\t\t\t\t\tlimit: 999\n\t\t\t\t\t\t}),\n\t\t\t\t\t\t\tgetV1FormBuilder({\n\t\t\t\t\t\t\t...getToken(),\n\t\t\t\t\t\t\tfilters:`(resource.eq=${formResource}&company_id.eq=${user?.company_id})`,\n\t\t\t\t\t\t})\n\t\t\t\t\t]);\n\n\t\t\t\t\t// Final check - ensure pathname still matches\n\t\t\t\t\tif (currentPathnameRef.current !== currentPath) {\n\t\t\t\t\t\tconsole.log('Aborting fetchPageData - pathname changed after API call');\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst fields = fieldResponse?.data?.fields?.map(f => ({...f, label: !f?.label?.trim() ? formatLabel(f.key) : f.label}));\n\n\t\t\t\t\tconst gColumns = generateColumnSchema(currentDefaultColumns, fields, [], [], t);\n \n\t\t\t\t\tconst pages =\n\t\t\t\t\t\tpageResponse?.data?.pages?.map((p) => ({\n\t\t\t\t\t\t\t...defaultPageState,\n\t\t\t\t\t\t\t...p,\n\t\t\t\t\t\t\tvisible_columns: generateColumnSchema(\n\t\t\t\t\t\t\t\tp.visible_columns?.length ? p.visible_columns : currentDefaultColumns,\n\t\t\t\t\t\t\t\tfields,\n\t\t\t\t\t\t\t\tp.column_order || [],\n\t\t\t\t\t\t\t\tcurrentDefaultColumns,\n\t\t\t\t\t\t\t\tt\n\t\t\t\t\t\t\t).columns,\n\t\t\t\t\t\t\tcolumn_order: mergeArraysKeepingOrder(\n\t\t\t\t\t\t\t\tp.column_order || [],\n\t\t\t\t\t\t\t\t_.uniq(gColumns.orderKeys)\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t})) || [];\n\t\t\t\t\tconst sharedPages =\n\t\t\t\t\t\tpageResponse?.data?.shared_pages?.map((sPages) => ({\n\t\t\t\t\t\t\t...sPages.details,\n\t\t\t\t\t\t\tisShared: true,\n\t\t\t\t\t\t\towner: sPages.owner,\n\t\t\t\t\t\t\t_id: sPages.id\n\t\t\t\t\t\t})) || [];\n\n\t\t\t\t\tconst uPages = [...pages, ...sharedPages];\n\n\t\t\t\t\t// Only update state if we're still on the same path\n\t\t\t\t\tif (currentPathnameRef.current === currentPath) {\n\t\t\t\t\t\tawait Promise.all([\n\t\t\t\t\t\t\tsetSchemaFields(fields),\n\t\t\t\t\t\t\tsetGeneratedColumns(gColumns),\n\t\t\t\t\t\t\tsetPageTemplateId(pageResponse?.data?._id),\n\t\t\t\t\t\t\tsetSharedPages(sharedPages),\n\t\t\t\t\t\t\tsetPages(uPages || []),\n\t\t\t\t\t\t\tsetFormData(formResponse?.data?.form?.[0] || {}),\n\t\t\t\t\t\t\tsetActivePageData((prev) => ({\n\t\t\t\t\t\t\t\t...prev,\n\t\t\t\t\t\t\t\t...(pages?.[0] || {}) // Merge API response with current state\n\t\t\t\t\t\t\t}))\n\t\t\t\t\t\t]);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} catch (err) {\n\t\t\t\t// Only set error if we're still on the same path\n\t\t\t\tif (currentPathnameRef.current === currentPath) {\n\t\t\t\t\tsetError('Failed to load page data');\n\t\t\t\t}\n\t\t\t} finally {\n\t\t\t\t// Only update loading state if we're still on the same path\n\t\t\t\tif (currentPathnameRef.current === currentPath) {\n\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\tsetLoading(false);\n\t\t\t\t\t}, 1000);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t//eslint-disable-next-line react-hooks/exhaustive-deps\n\t\t[] // Remove dependencies to prevent stale closures\n\t);\n\n\t// Update page state dynamically\n\tconst updatePageInfo = (updates: Partial<PageState>) => {\n\t\tsetActivePageData((prev) => ({\n\t\t\t...prev,\n\t\t\t...updates\n\t\t}));\n\t\t!isInitialLoad && setIsChanged(true)\n\t\tsetIsInitialLoad(false)\n\t};\n\n\t// Update columns state dynamically\n\tconst updateGeneratedColumns = (updates: Partial<GeneratedColumnsState>) => {\n\t\tsetGeneratedColumns((prev) => ({\n\t\t\t...prev,\n\t\t\t...updates\n\t\t}));\n\t};\n\n\tconst setActivePage = (page: PageState) => {\n\t\tconst uPages = pages.map((p) =>\n\t\t\tp._id == activePage?._id ? activePage : p\n\t\t);\n\t\tsetPages(uPages);\n\t\tsetActivePageData(page);\n\t};\n\n\tconst savePages = async () => {\n\t\tsetError(null);\n\t\tsetIsSaving(true);\n\t\tawait addOrDeletePage()\n\t\tsetTimeout(() => {\n\t\t\tsetIsSaving(false);\n\t\t}, 1000);\n\t};\n\tconst fetchSavedFilters = async (): Promise<void> => {\n\n\t\tawait\tgetV1FilterResource({ ...getToken(), resource: resources?.pageResource || resources?.fieldResource })\n\t\t\t\n\t};\n\n\tconst addOrDeletePage=async(restPages?:any[])=>{\n\t\ttry {\n\t\t\tconst filteredPages =restPages?.length ? restPages : pages.filter((page) => !page.isShared);\n\t\t\tconst uPages = filteredPages.map((p) =>\n\t\t\t\t(p._id == activePage?._id && activePage.name==p.name) ? activePage : p\n\t\t\t);\n\t\t\tconst sanitizedPages = removeIdStaticIdsFromMongoObject(uPages);\n\n\t\t\tconst response = await patchV1PagesPageId({\n\t\t\t\t...getToken(),\n\t\t\t\t...{ page_id: pageTemplateId, pages: sanitizedPages }\n\t\t\t});\n\t\t\tif (response.status_code === 200) {\n\t\t\t\tconst updatedPages = response?.data?.pages || [];\n\t\t\t\tsetPages(updatedPages);\n \t\tfetchSavedFilters();\n\t\t\t\tsetActivePageData((prev) => ({\n\t\t\t\t\t...prev,\n\t\t\t\t\t...(updatedPages.find((p) => p.name == prev.name) || {})\n\t\t\t\t}));\n\t\t\t\tsetIsChanged(false);\n\t\t\t\tsetIsCreatePage(false);\n\t\t\t\tsetFormData(response?.data?.form?.[0] || {});\n\t\t\t\tconst msg=restPages?.length ? t('pages.msg.delete') : t('pages.msg.save')\n\t\t\t\tenqueueSnackbar(msg);\n\t\t\t}\n\t\t\treturn response\n\t\t} catch (err) {\n\t\t\tsetError('Failed to save page data');\n\t\t} \n\t}\n\t\n\tconst deletePage=async(pages:string)=>{\n\t\taddOrDeletePage(pages);\n\t}\n\n\t// Handle pathname changes\n\tuseEffect(() => {\n\t\t// Update the ref immediately\n\t\tcurrentPathnameRef.current = curPathName;\n\t\t\n\t\t// Reset state for new page\n\t\tsetLoading(true);\n\t\tsetIsSaving(false);\n\t\tsetActivePageData(defaultPageState);\n\t\tsetIsChanged(false);\n\t\tsetIsInitialLoad(true);\n\t\t\n\t\t// Clear previous data to prevent showing stale data\n\t\tsetSchemaFields([]);\n\t\tsetGeneratedColumns({ columns: [], orderKeys: [] });\n\t\tsetPages([]);\n\t\tsetSharedPages([]);\n\t\tsetPageTemplateId('');\n\t\tsetError(null);\n\t\t\n\t\t// Fetch data for new page with current values\n\t\tfetchPageData(curPathName, defaultColumns, resources);\n\n\t\treturn () => { setLoading(true) }\n\t\t//eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [curPathName, JSON.stringify(defaultColumns), JSON.stringify(resources)]); // Remove other dependencies to prevent issues\n\n\n\t// Removed loading check to prevent blank page during loading\n\n\treturn (\n\t\t<PageContext.Provider\n\t\t\tvalue={{\n\t\t\t\tpageTemplateId,\n\t\t\t\tactivePage,\n\t\t\t\tpages,\n\t\t\t\tsharedPages,\n\t\t\t\tschemaFields,\n\t\t\t\tsetPages,\n\t\t\t\tupdatePageInfo,\n\t\t\t\tsavePages,\n\t\t\t\tsetActivePage,\n\t\t\t\tisSaving,\n\t\t\t\tloading,\n\t\t\t\terror,\n\t\t\t\tinitializeColumns,\n\t\t\t\tgeneratedColumns,\n\t\t\t\tupdateGeneratedColumns,\n\t\t\t\tisChanged,\n\t\t\t\tdeletePage,\n\t\t\t\tisCreatePage,\n\t\t\t\tsetIsCreatePage,\n\t\t\t\taddOrDeletePage,\n\t\t\t\tsetIsChanged,\n\t\t\t\tformData\n\t\t\t}}>\n\t\t\t{children}\n\t\t</PageContext.Provider>\n\t);\n};\n"],"names":["field","_a","pages","sharedPages"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react/jsx-runtime"),a=require("react"),t=require("react-router-dom"),l=require("../../api-client/api.system-feature/api/index.js"),n=require("../../constants/route-page-map/index.js"),r=require("../../utils/common/index.js"),s=require("lodash"),o=require("../../utils/format-text/index.js"),i=require("../../node_modules/notistack/notistack.esm/index.js"),u=require("react-i18next"),d=require("../../hooks/useAuth/index.js");function c(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var m=/* @__PURE__ */c(s);const v={combinator:"and",rules:[]},g={_id:"",name:"",page_size:10,column_order:["id"],visible_columns:[],views:[],active_view:"",filters:v,filterQueryString:"",sort:null,search:"",enabled_views:["Table","Grid","Kanban","Calendar","Gantt"],isShared:!1,column_sizes:{}},p=a.createContext({pageTemplateId:"",activePage:g,updatePageInfo:()=>{},loading:!1,isSaving:!1,error:null,pages:[],sharedPages:[],savePages:()=>{},setActivePage:()=>{},setPages:()=>{},schemaFields:[],initializeColumns:()=>{},generatedColumns:{columns:[],orderKeys:[]},updateGeneratedColumns:()=>{}});function y(e,a){const t=new Set(e),l=a.filter(e=>!t.has(e));return[...e,...l]}const f=(e,a,t,l,n)=>{try{l&&(null==l?void 0:l.length)&&(e=e.map(e=>l.find(a=>a.accessorKey==e.accessorKey)||e));let r=t.length?t:e.map(e=>e.accessorKey);const s=e=>"object"===e.type||(null==e?void 0:e.join)?`${e.alias}.${e.accessorKey}`:e.key,i=a.map(e=>({...e,key:e.key.replace("__replaceKey","")})).filter(e=>!e.is_inner_join),u=m.default.differenceWith(i,i,(e,a)=>e.key===(null==a?void 0:a.joinKey)),d=m.default.differenceWith(u,e,(e,a)=>s(e)===a.accessorKey).map(e=>{var a,t,l;return{header:n?o.formatLabel((null==(a=n(null==e?void 0:e.label))?void 0:a.replace("_data",""))||""):o.formatLabel((null==(t=null==e?void 0:e.label)?void 0:t.replace("_data",""))||""),accessorKey:s(e),visible:!1,type:(null==e?void 0:e.enum)?"status":e.type,..."array"===e.type&&{typeArrayAccessorKey:e.accessorKey||""},enableSorting:"array"!==e.type&&"object"!==e.type&&!(null==e?void 0:e.join),..."boolean"===(null==e?void 0:e.type)?{typeBooleanLabels:(null==(l=null==e?void 0:e.values)?void 0:l.length)?m.default.mapValues(m.default.keyBy(null==e?void 0:e.values.map(e=>({key:e.name,value:e.label})),"key"),"value"):{0:"Inactive",1:"Active",false:"Inactive",true:"Active"}}:{}}}),c=[...null==e?void 0:e.map(e=>{const t=a.find(a=>s(a)===e.accessorKey);return{...e,..."object"===(null==t?void 0:t.type)||(null==t?void 0:t.joinKey)||!1===e.enableSorting?{enableSorting:!1}:{}}}),...d];return r=y(r,c.map(e=>e.accessorKey)),{columns:c,orderKeys:r}}catch(r){return{columns:e,orderKeys:e.map(e=>e.accessorKey)}}};exports.PageContext=p,exports.PageProvider=({children:s})=>{const c=t.useLocation(),[v,h]=a.useState(g),[_,b]=a.useState([]),[S,P]=a.useState(!0),[K,j]=a.useState(!1),[k,x]=a.useState(null),[C,q]=a.useState([]),[T,w]=a.useState([]),[F
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react/jsx-runtime"),a=require("react"),t=require("react-router-dom"),l=require("../../api-client/api.system-feature/api/index.js"),n=require("../../constants/route-page-map/index.js"),r=require("../../utils/common/index.js"),s=require("lodash"),o=require("../../utils/format-text/index.js"),i=require("../../node_modules/notistack/notistack.esm/index.js"),u=require("react-i18next"),d=require("../../hooks/useAuth/index.js");function c(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var m=/* @__PURE__ */c(s);const v={combinator:"and",rules:[]},g={_id:"",name:"",page_size:10,column_order:["id"],visible_columns:[],views:[],active_view:"",filters:v,filterQueryString:"",sort:null,search:"",enabled_views:["Table","Grid","Kanban","Calendar","Gantt"],isShared:!1,column_sizes:{}},p=a.createContext({pageTemplateId:"",activePage:g,updatePageInfo:()=>{},loading:!1,isSaving:!1,error:null,pages:[],sharedPages:[],savePages:()=>{},setActivePage:()=>{},setPages:()=>{},schemaFields:[],initializeColumns:()=>{},generatedColumns:{columns:[],orderKeys:[]},updateGeneratedColumns:()=>{}});function y(e,a){const t=new Set(e),l=a.filter(e=>!t.has(e));return[...e,...l]}const f=(e,a,t,l,n)=>{try{l&&(null==l?void 0:l.length)&&(e=e.map(e=>l.find(a=>a.accessorKey==e.accessorKey)||e));let r=t.length?t:e.map(e=>e.accessorKey);const s=e=>"object"===e.type||(null==e?void 0:e.join)?`${e.alias}.${e.accessorKey}`:e.key,i=a.map(e=>({...e,key:e.key.replace("__replaceKey","")})).filter(e=>!e.is_inner_join),u=m.default.differenceWith(i,i,(e,a)=>e.key===(null==a?void 0:a.joinKey)),d=m.default.differenceWith(u,e,(e,a)=>s(e)===a.accessorKey).map(e=>{var a,t,l;return{header:n?o.formatLabel((null==(a=n(null==e?void 0:e.label))?void 0:a.replace("_data",""))||""):o.formatLabel((null==(t=null==e?void 0:e.label)?void 0:t.replace("_data",""))||""),accessorKey:s(e),visible:!1,type:(null==e?void 0:e.enum)?"status":e.type,..."array"===e.type&&{typeArrayAccessorKey:e.accessorKey||""},enableSorting:"array"!==e.type&&"object"!==e.type&&!(null==e?void 0:e.join),..."boolean"===(null==e?void 0:e.type)?{typeBooleanLabels:(null==(l=null==e?void 0:e.values)?void 0:l.length)?m.default.mapValues(m.default.keyBy(null==e?void 0:e.values.map(e=>({key:e.name,value:e.label})),"key"),"value"):{0:"Inactive",1:"Active",false:"Inactive",true:"Active"}}:{}}}),c=[...null==e?void 0:e.map(e=>{const t=a.find(a=>s(a)===e.accessorKey);return{...e,..."object"===(null==t?void 0:t.type)||(null==t?void 0:t.joinKey)||!1===e.enableSorting?{enableSorting:!1}:{}}}),...d];return r=y(r,c.map(e=>e.accessorKey)),{columns:c,orderKeys:r}}catch(r){return{columns:e,orderKeys:e.map(e=>e.accessorKey)}}};exports.PageContext=p,exports.PageProvider=({children:s})=>{const c=t.useLocation(),[v,h]=a.useState(g),[_,b]=a.useState([]),[S,P]=a.useState(!0),[K,j]=a.useState(!1),[k,x]=a.useState(null),[C,q]=a.useState([]),[T,w]=a.useState([]),[I,F]=a.useState(!1),[R,A]=a.useState(""),[M,V]=a.useState(!0),[L,O]=a.useState(!1),[z,B]=a.useState({}),[G,$]=a.useState({columns:[],orderKeys:[]}),{user:N}=d.useAuth(),D=a.useRef(c.pathname),J=a.useMemo(()=>c.pathname,[c.pathname]),W=a.useMemo(()=>{var e;return(null==(e=n.routeToColumnsMap[J])?void 0:e.defaultColumns)||[]},[J]),E=a.useMemo(()=>n.routeToResourceMap[J]||null,[J]),{t:Q}=u.useTranslation(),H=a.useCallback(async(e,a,t)=>{var n,s,i,u,d,c,v,p,_;if(D.current===e){P(!0),x(null);try{if(a.length&&t){const{pageResource:S="",fieldResource:P="",formResource:K=""}=t;if(D.current!==e)return;const[j,k,x]=await Promise.all([S?l.getV1PagesResource({...r.getToken(),resource:S}):Promise.resolve(null),l.getV1FormBuilderSchemaFieldsName({name:P,...r.getToken()}),l.getV1FormBuilder({...r.getToken(),filters:`(resource.eq=${K}&company_id.eq=${null==N?void 0:N.company_id})`})]);if(D.current!==e)return;const C=null==(s=null==(n=null==k?void 0:k.data)?void 0:n.fields)?void 0:s.map(e=>{var a;return{...e,label:(null==(a=null==e?void 0:e.label)?void 0:a.trim())?e.label:o.formatLabel(e.key)}}),T=f(a,C,[],[],Q),I=(null==(u=null==(i=null==j?void 0:j.data)?void 0:i.pages)?void 0:u.map(e=>{var t;return{...g,...e,visible_columns:f((null==(t=e.visible_columns)?void 0:t.length)?e.visible_columns:a,C,e.column_order||[],a,Q).columns,column_order:y(e.column_order||[],m.default.uniq(T.orderKeys))}}))||[],F=(null==(c=null==(d=null==j?void 0:j.data)?void 0:d.shared_pages)?void 0:c.map(e=>({...e.details,isShared:!0,owner:e.owner,_id:e.id})))||[],R=[...I,...F];D.current===e&&await Promise.all([b(C),$(T),A(null==(v=null==j?void 0:j.data)?void 0:v._id),w(F),q(R||[]),B((null==(_=null==(p=null==x?void 0:x.data)?void 0:p.form)?void 0:_[0])||{}),h(e=>({...e,...(null==I?void 0:I[0])||{}}))])}}catch(S){D.current===e&&x("Failed to load page data")}finally{D.current===e&&setTimeout(()=>{P(!1)},1e3)}}},[]),U=async e=>{var a,t,n;try{const s=((null==e?void 0:e.length)?e:C.filter(e=>!e.isShared)).map(e=>e._id==(null==v?void 0:v._id)&&v.name==e.name?v:e),o=r.removeIdStaticIdsFromMongoObject(s),u=await l.patchV1PagesPageId({...r.getToken(),page_id:R,pages:o});if(200===u.status_code){const s=(null==(a=null==u?void 0:u.data)?void 0:a.pages)||[];q(s),(async()=>{await l.getV1FilterResource({...r.getToken(),resource:(null==E?void 0:E.pageResource)||(null==E?void 0:E.fieldResource)})})(),h(e=>({...e,...s.find(a=>a.name==e.name)||{}})),F(!1),O(!1),B((null==(n=null==(t=null==u?void 0:u.data)?void 0:t.form)?void 0:n[0])||{});const o=(null==e?void 0:e.length)?Q("pages.msg.delete"):Q("pages.msg.save");i.enqueueSnackbar(o)}return u}catch(s){x("Failed to save page data")}};return a.useEffect(()=>(D.current=J,P(!0),j(!1),h(g),F(!1),V(!0),b([]),$({columns:[],orderKeys:[]}),q([]),w([]),A(""),x(null),H(J,W,E),()=>{P(!0)}),[J,JSON.stringify(W),JSON.stringify(E)]),/* @__PURE__ */e.jsx(p.Provider,{value:{pageTemplateId:R,activePage:v,pages:C,sharedPages:T,schemaFields:_,setPages:q,updatePageInfo:e=>{h(a=>({...a,...e})),!M&&F(!0),V(!1)},savePages:async()=>{x(null),j(!0),await U(),setTimeout(()=>{j(!1)},1e3)},setActivePage:e=>{const a=C.map(e=>e._id==(null==v?void 0:v._id)?v:e);q(a),h(e)},isSaving:K,loading:S,error:k,initializeColumns:e=>{},generatedColumns:G,updateGeneratedColumns:e=>{$(a=>({...a,...e}))},isChanged:I,deletePage:async e=>{U(e)},isCreatePage:L,setIsCreatePage:O,addOrDeletePage:U,setIsChanged:F,formData:z},children:s})},exports.defaultPageState=g,exports.initialFilter=v;
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../src/contexts/page-context.tsx"],"sourcesContent":["/* eslint-disable react-refresh/only-export-components */\n/* eslint-disable no-mixed-spaces-and-tabs */\n\nimport React, { createContext, useCallback, useEffect, useMemo, useState, useRef } from 'react';\nimport { useLocation } from 'react-router-dom';\nimport {\n\tgetV1FilterResource,\n\tgetV1FormBuilder,\n\tgetV1FormBuilderSchemaFieldsName,\n\tgetV1PagesResource,\n\tpatchV1PagesPageId\n} from '../api-client/api.system-feature/api';\nimport { IResources, routeToColumnsMap, routeToResourceMap } from '../constants/route-page-map'; // Removed - should be passed as props or configured by consuming app\nimport { getToken } from '../utils/common';\nimport { removeIdStaticIdsFromMongoObject } from '../utils/common';\nimport { RuleGroupType } from 'react-querybuilder';\nimport { MaterialTableColumnProps } from '../components/material-table/material-table';\nimport _ from 'lodash';\nimport { formatLabel } from '../utils/format-text';\nimport ErpLoader from '../components/loaders/erp-loader';\nimport { enqueueSnackbar } from 'notistack';\nimport { useTranslation } from 'react-i18next';\nimport { useAuth } from '../hooks/useAuth';\n// import { usePermissions } from '../hooks/use-permissions';\n\n/* Interfaces and types */\nexport type ViewType = 'Table' | 'Grid' | 'Kanban' | 'Calendar' | 'Gantt' | '';\n\ninterface SchemaFields {\n\tselect: string;\n\talias: string;\n\ttype: string;\n\tfilter_type?: string;\n\tfilter_name?: string;\n\trequired?: boolean;\n\tisOrderAllowed?: boolean;\n\tisDefault?: boolean;\n\tisFilterAllowed?: boolean;\n\tlabel?: string;\n\tkey: string;\n\taccessorKey?: string;\n\tjoinKey?: string;\n\tenum?: string | string[];\n}\nexport interface SavedViewType {\n\tlabel: ViewType;\n\tposition: number;\n}\nexport interface PageState {\n\t_id: string | number;\n\tname: string;\n\tpage_size: number;\n\tcolumn_order: string[];\n\tvisible_columns: MaterialTableColumnProps[];\n\tviews: SavedViewType[];\n\tactive_view: ViewType;\n\tfilters: RuleGroupType;\n\tfilterQueryString: string;\n\tsort: Record<any, any> | null;\n\tsearch: string;\n\tenabled_views: ViewType[];\n\tisShared: boolean;\n\tcolumn_sizes: Record<string, number>;\n}\n\nexport interface GeneratedColumnsState {\n\tcolumns: MaterialTableColumnProps[];\n\torderKeys: string[];\n}\n\nexport const initialFilter: RuleGroupType = { combinator: 'and', rules: [] };\n\ninterface PageContextValue {\n\tpageTemplateId: string;\n\tactivePage: PageState;\n\tupdatePageInfo: (updates: Partial<PageState>) => void;\n\tloading: boolean;\n\tisSaving: boolean;\n\terror: string | null;\n\tpages: any[];\n\tsavePages: () => void;\n\tsetActivePage: (data: any) => void;\n\tsetPages: React.Dispatch<any>;\n\tschemaFields: SchemaFields[];\n\tinitializeColumns: (columns: MaterialTableColumnProps[]) => void;\n\tgeneratedColumns: GeneratedColumnsState;\n\tsharedPages: any[];\n\tupdateGeneratedColumns: (updates: Partial<GeneratedColumnsState>) => void;\n\tformData:Record<string, any>\n\tsetFormData:(data:Record<string, any>) => void\n}\n\nexport const defaultPageState: PageState = {\n\t_id: '',\n\tname: '',\n\tpage_size: 10,\n\tcolumn_order: ['id'],\n\tvisible_columns: [],\n\tviews: [],\n\tactive_view: '',\n\tfilters: initialFilter,\n\tfilterQueryString: '',\n\tsort: null,\n\tsearch: '',\n\tenabled_views: ['Table', 'Grid', 'Kanban', 'Calendar', 'Gantt'],\n\tisShared: false,\n\tcolumn_sizes: {}\n};\ninterface PageProviderProps {\n\tchildren: React.ReactNode;\n}\n\nconst UpdatePageInfo = () => {};\nconst UpdateGeneratedColumns = () => {};\n\nexport const PageContext = createContext<PageContextValue>({\n\tpageTemplateId: '',\n\tactivePage: defaultPageState,\n\tupdatePageInfo: UpdatePageInfo,\n\tloading: false,\n\tisSaving: false,\n\terror: null,\n\tpages: [],\n\tsharedPages: [],\n\tsavePages: () => {},\n\tsetActivePage: () => {},\n\tsetPages: () => {},\n\tschemaFields: [],\n\tinitializeColumns: () => {},\n\tgeneratedColumns: { columns: [], orderKeys: [] },\n\tupdateGeneratedColumns: UpdateGeneratedColumns,\n});\n\nfunction mergeArraysKeepingOrder(array1: string[], array2: string[]): string[] {\n\t// Create a Set from the first array for efficient lookups\n\tconst array1Set = new Set(array1);\n\n\t// Filter the second array to find elements not in the first array\n\tconst elementsToAdd = array2.filter((item) => !array1Set.has(item));\n\n\t// Combine the original first array with the new elements\n\treturn [...array1, ...elementsToAdd];\n}\n\nconst generateColumnSchema = (\n\tdefaultColumns: MaterialTableColumnProps[],\n\tschemaFields: SchemaFields[],\n\tcolumnOrders: string[],\n\tdColumns?: any[],\n\tt?: any\n): { columns: MaterialTableColumnProps[]; orderKeys: string[] } => {\n\ttry {\n\t\tif(dColumns && dColumns?.length) {\n\t\t\tdefaultColumns = defaultColumns.map((column) => {\n\t\t\t\tconst f = dColumns.find((c) => c.accessorKey == column.accessorKey);\n\t\t\t\treturn f || column\n\t\t\t})\n\t\t}\n\t\tlet orderKeys = columnOrders.length\n\t\t\t? columnOrders\n\t\t\t: (defaultColumns.map((column) => column.accessorKey) as string[]);\n\t\tconst getAccesorKeyViaField = (field: SchemaFields) =>\n\t\t\t\t(field.type === 'object' || field?.join) ? `${field.alias}.${field.accessorKey}` : field.key;\n\t\t\t\n\t\t// Clean up schema fields by removing \"__replaceKey\" from the keys\n\t\tconst updatedFields = schemaFields.map((field) => ({\n\t\t\t...field,\n\t\t\tkey: field.key.replace('__replaceKey', '')\n\t\t})).filter((field)=>!field.is_inner_join);\n\n\t\tconst uniqueFields = _.differenceWith(\n\t\t\tupdatedFields,\n\t\t\tupdatedFields,\n\t\t\t(fieldA, fieldB) => fieldA.key === fieldB?.joinKey\n\t\t);\n\n\t\t// Find fields in schemaFields but not in defaultColumns based on accessorKey\n\t\tconst unmatchedFields = _.differenceWith(\n\t\t\tuniqueFields,\n\t\t\tdefaultColumns,\n\t\t\t(field, column) => getAccesorKeyViaField(field) === column.accessorKey\n\t\t);\n\n\t\t// Map unique fields to MaterialTableColumn structure\n\t\tconst additionalColumns: MaterialTableColumnProps[] = unmatchedFields.map(\n\t\t\t(field) => ({\n\t\t\t\theader: t ? formatLabel(t(field?.label)?.replace('_data', '') || '') : formatLabel(field?.label?.replace('_data', '') || ''),\n\t\t\t\taccessorKey: getAccesorKeyViaField(field),\n\t\t\t\tvisible: false,\n\t\t\t\ttype: field?.enum ? 'status' : field.type,\n\t\t\t\t...(field.type === 'array' && {typeArrayAccessorKey: field.accessorKey || ''}),\n\t\t\t\tenableSorting: (field.type === 'array' || field.type === 'object' || field?.join) ? false: true,\n\t\t\t\t...(field?.type === 'boolean' ? {\n\t\t\t\t\ttypeBooleanLabels: field?.values?.length ? _.mapValues( _.keyBy(\n\t\t\t\t\t\tfield?.values.map(item => ({\n\t\t\t\t\t\t\tkey: item.name,\n\t\t\t\t\t\t\tvalue: item.label\n\t\t\t\t\t\t})),\n\t\t\t\t\t\t'key'\n\t\t\t\t\t), 'value') : { 0: \"Inactive\", 1: \"Active\", false: \"Inactive\", true: \"Active\" }\n\t\t\t\t} : {})\n\t\t\t})\n\t\t);\n\n\t\tconst updatedDefaultColumns = defaultColumns?.map((column) => {\n\t\t\tconst field = schemaFields.find((field) => getAccesorKeyViaField(field) === column.accessorKey);\n\t\t\treturn {\n\t\t\t\t...column,\n\t\t\t\t...((field?.type === 'object' || field?.joinKey||column.enableSorting===false) ? { enableSorting: false } : {})\n\t\t\t};\n\t\t});\n\n\t\t// Combine default columns and additional columns\n\t\tconst columns = [...updatedDefaultColumns, ...additionalColumns];\n\n\t\t// Generate an array of column keys for ordering\n\t\tconst nOrderKeys = columns.map((column) => column.accessorKey) as string[];\n\n\t\torderKeys = mergeArraysKeepingOrder(orderKeys, nOrderKeys);\n\n\t\treturn { columns, orderKeys };\n\t} catch (error) {\n\t\treturn {\n\t\t\tcolumns: defaultColumns,\n\t\t\torderKeys: defaultColumns.map((column) => column.accessorKey) as string[]\n\t\t};\n\t}\n};\n\nexport const PageProvider: React.FC<PageProviderProps> = ({ children }) => {\n\tconst location = useLocation();\n\tconst [activePage, setActivePageData] = useState<PageState>(defaultPageState);\n\t// const permissions=usePermissions();\n\tconst [schemaFields, setSchemaFields] = useState<SchemaFields[]>([]);\n\tconst [loading, setLoading] = useState<boolean>(true);\n\tconst [isSaving, setIsSaving] = useState<boolean>(false);\n\tconst [error, setError] = useState<string | null>(null);\n\tconst [pages, setPages] = useState<any>([]);\n\tconst [sharedPages, setSharedPages] = useState<any>([]);\n\tconst [isChanged, setIsChanged] = useState<boolean>(false);\n\tconst [pageTemplateId, setPageTemplateId] = useState<string>('');\n\tconst [isInitialLoad, setIsInitialLoad] = useState<boolean>(true);\n\tconst [isCreatePage, setIsCreatePage] = useState<boolean>(false);\n\tconst [formData, setFormData] = useState<any>({});\n\tconst [generatedColumns, setGeneratedColumns] = useState<{\n\t\tcolumns: MaterialTableColumnProps[];\n\t\torderKeys: string[];\n\t}>({ columns: [], orderKeys: [] });\n\tconst {user} = useAuth()\n\t// Add ref to track current pathname for race condition prevention\n\tconst currentPathnameRef = useRef<string>(location.pathname);\n\tconst curPathName = useMemo(() => location.pathname, [location.pathname])\n\t\n\t// Get current page's default columns and resources\n\tconst defaultColumns: any[] = useMemo(() => {\n\t\tconst columns = routeToColumnsMap[curPathName]?.defaultColumns || [];\n\t\treturn columns;\n\t}, [curPathName]);\n\t\n\tconst resources: IResources = useMemo(() => {\n\t\tconst resource = routeToResourceMap[curPathName] || null;\n\t\treturn resource;\n\t}, [curPathName]);\n\n\t//Translation\n\tconst {t}=useTranslation()\n\n\t// eslint-disable-next-line unused-imports/no-unused-vars, @typescript-eslint/no-unused-vars\n\tconst initializeColumns = (columns: MaterialTableColumnProps[]) => {\n\t\t//! Remove the function if not needed\n\t};\n\n\t// Fetch page-related information from API\n\tconst fetchPageData = useCallback(\n\t\tasync (currentPath: string, currentDefaultColumns: any[], currentResources: IResources) => {\n\t\t\n\t\t\t// Check if this request is still valid (pathname hasn't changed)\n\t\t\tif (currentPathnameRef.current !== currentPath) {\n\t\t\t\tconsole.log('Aborting fetchPageData - pathname changed');\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tsetLoading(true);\n\t\t\tsetError(null);\n\t\t\t\n\t\t\ttry {\n\t\t\t\tif (currentDefaultColumns.length && currentResources) {\n\t\t\t\t\tconst { pageResource = '', fieldResource = '',formResource='' } = currentResources;\n\t\t\t\t\t\n\t\t\t\t\t// Double-check pathname hasn't changed before making API calls\n\t\t\t\t\tif (currentPathnameRef.current !== currentPath) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tconst [pageResponse, fieldResponse,formResponse] = await Promise.all([\n\t\t\t\t\t\tpageResource ? getV1PagesResource({ ...getToken(), resource: pageResource }): Promise.resolve(null),\n\n\t\t\t\t\t\tgetV1FormBuilderSchemaFieldsName({\n\t\t\t\t\t\t\tname: fieldResource,\n\t\t\t\t\t\t\t...getToken(),\n\t\t\t\t\t\t\tskip: 0,\n\t\t\t\t\t\t\tlimit: 999\n\t\t\t\t\t\t}),\n\t\t\t\t\t\t\tgetV1FormBuilder({\n\t\t\t\t\t\t\t...getToken(),\n\t\t\t\t\t\t\tfilters:`(resource.eq=${formResource}&company_id.eq=${user?.company_id})`,\n\t\t\t\t\t\t})\n\t\t\t\t\t]);\n\n\t\t\t\t\t// Final check - ensure pathname still matches\n\t\t\t\t\tif (currentPathnameRef.current !== currentPath) {\n\t\t\t\t\t\tconsole.log('Aborting fetchPageData - pathname changed after API call');\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst fields = fieldResponse?.data?.fields?.map(f => ({...f, label: !f?.label?.trim() ? formatLabel(f.key) : f.label}));\n\n\t\t\t\t\tconst gColumns = generateColumnSchema(currentDefaultColumns, fields, [], [], t);\n \n\t\t\t\t\tconst pages =\n\t\t\t\t\t\tpageResponse?.data?.pages?.map((p) => ({\n\t\t\t\t\t\t\t...defaultPageState,\n\t\t\t\t\t\t\t...p,\n\t\t\t\t\t\t\tvisible_columns: generateColumnSchema(\n\t\t\t\t\t\t\t\tp.visible_columns?.length ? p.visible_columns : currentDefaultColumns,\n\t\t\t\t\t\t\t\tfields,\n\t\t\t\t\t\t\t\tp.column_order || [],\n\t\t\t\t\t\t\t\tcurrentDefaultColumns,\n\t\t\t\t\t\t\t\tt\n\t\t\t\t\t\t\t).columns,\n\t\t\t\t\t\t\tcolumn_order: mergeArraysKeepingOrder(\n\t\t\t\t\t\t\t\tp.column_order || [],\n\t\t\t\t\t\t\t\t_.uniq(gColumns.orderKeys)\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t})) || [];\n\t\t\t\t\tconst sharedPages =\n\t\t\t\t\t\tpageResponse?.data?.shared_pages?.map((sPages) => ({\n\t\t\t\t\t\t\t...sPages.details,\n\t\t\t\t\t\t\tisShared: true,\n\t\t\t\t\t\t\towner: sPages.owner,\n\t\t\t\t\t\t\t_id: sPages.id\n\t\t\t\t\t\t})) || [];\n\n\t\t\t\t\tconst uPages = [...pages, ...sharedPages];\n\n\t\t\t\t\t// Only update state if we're still on the same path\n\t\t\t\t\tif (currentPathnameRef.current === currentPath) {\n\t\t\t\t\t\tawait Promise.all([\n\t\t\t\t\t\t\tsetSchemaFields(fields),\n\t\t\t\t\t\t\tsetGeneratedColumns(gColumns),\n\t\t\t\t\t\t\tsetPageTemplateId(pageResponse?.data?._id),\n\t\t\t\t\t\t\tsetSharedPages(sharedPages),\n\t\t\t\t\t\t\tsetPages(uPages || []),\n\t\t\t\t\t\t\tsetFormData(formResponse?.data?.form?.[0] || {}),\n\t\t\t\t\t\t\tsetActivePageData((prev) => ({\n\t\t\t\t\t\t\t\t...prev,\n\t\t\t\t\t\t\t\t...(pages?.[0] || {}) // Merge API response with current state\n\t\t\t\t\t\t\t}))\n\t\t\t\t\t\t]);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} catch (err) {\n\t\t\t\t// Only set error if we're still on the same path\n\t\t\t\tif (currentPathnameRef.current === currentPath) {\n\t\t\t\t\tsetError('Failed to load page data');\n\t\t\t\t}\n\t\t\t} finally {\n\t\t\t\t// Only update loading state if we're still on the same path\n\t\t\t\tif (currentPathnameRef.current === currentPath) {\n\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\tsetLoading(false);\n\t\t\t\t\t}, 1000);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t//eslint-disable-next-line react-hooks/exhaustive-deps\n\t\t[] // Remove dependencies to prevent stale closures\n\t);\n\n\t// Update page state dynamically\n\tconst updatePageInfo = (updates: Partial<PageState>) => {\n\t\tsetActivePageData((prev) => ({\n\t\t\t...prev,\n\t\t\t...updates\n\t\t}));\n\t\t!isInitialLoad && setIsChanged(true)\n\t\tsetIsInitialLoad(false)\n\t};\n\n\t// Update columns state dynamically\n\tconst updateGeneratedColumns = (updates: Partial<GeneratedColumnsState>) => {\n\t\tsetGeneratedColumns((prev) => ({\n\t\t\t...prev,\n\t\t\t...updates\n\t\t}));\n\t};\n\n\tconst setActivePage = (page: PageState) => {\n\t\tconst uPages = pages.map((p) =>\n\t\t\tp._id == activePage?._id ? activePage : p\n\t\t);\n\t\tsetPages(uPages);\n\t\tsetActivePageData(page);\n\t};\n\n\tconst savePages = async () => {\n\t\tsetError(null);\n\t\tsetIsSaving(true);\n\t\tawait addOrDeletePage()\n\t\tsetTimeout(() => {\n\t\t\tsetIsSaving(false);\n\t\t}, 1000);\n\t};\n\tconst fetchSavedFilters = async (): Promise<void> => {\n\n\t\tawait\tgetV1FilterResource({ ...getToken(), resource: resources?.pageResource || resources?.fieldResource })\n\t\t\t\n\t};\n\n\tconst addOrDeletePage=async(restPages?:any[])=>{\n\t\ttry {\n\t\t\tconst filteredPages =restPages?.length ? restPages : pages.filter((page) => !page.isShared);\n\t\t\tconst uPages = filteredPages.map((p) =>\n\t\t\t\t(p._id == activePage?._id && activePage.name==p.name) ? activePage : p\n\t\t\t);\n\t\t\tconst sanitizedPages = removeIdStaticIdsFromMongoObject(uPages);\n\n\t\t\tconst response = await patchV1PagesPageId({\n\t\t\t\t...getToken(),\n\t\t\t\t...{ page_id: pageTemplateId, pages: sanitizedPages }\n\t\t\t});\n\t\t\tif (response.status_code === 200) {\n\t\t\t\tconst updatedPages = response?.data?.pages || [];\n\t\t\t\tsetPages(updatedPages);\n \t\tfetchSavedFilters();\n\t\t\t\tsetActivePageData((prev) => ({\n\t\t\t\t\t...prev,\n\t\t\t\t\t...(updatedPages.find((p) => p.name == prev.name) || {})\n\t\t\t\t}));\n\t\t\t\tsetIsChanged(false);\n\t\t\t\tsetIsCreatePage(false);\n\t\t\t\tsetFormData(response?.data?.form?.[0] || {});\n\t\t\t\tconst msg=restPages?.length ? t('pages.msg.delete') : t('pages.msg.save')\n\t\t\t\tenqueueSnackbar(msg);\n\t\t\t}\n\t\t\treturn response\n\t\t} catch (err) {\n\t\t\tsetError('Failed to save page data');\n\t\t} \n\t}\n\t\n\tconst deletePage=async(pages:string)=>{\n\t\taddOrDeletePage(pages);\n\t}\n\n\t// Handle pathname changes\n\tuseEffect(() => {\n\t\t// Update the ref immediately\n\t\tcurrentPathnameRef.current = curPathName;\n\t\t\n\t\t// Reset state for new page\n\t\tsetLoading(true);\n\t\tsetIsSaving(false);\n\t\tsetActivePageData(defaultPageState);\n\t\tsetIsChanged(false);\n\t\tsetIsInitialLoad(true);\n\t\t\n\t\t// Clear previous data to prevent showing stale data\n\t\tsetSchemaFields([]);\n\t\tsetGeneratedColumns({ columns: [], orderKeys: [] });\n\t\tsetPages([]);\n\t\tsetSharedPages([]);\n\t\tsetPageTemplateId('');\n\t\tsetError(null);\n\t\t\n\t\t// Fetch data for new page with current values\n\t\tfetchPageData(curPathName, defaultColumns, resources);\n\n\t\treturn () => { setLoading(true) }\n\t\t//eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [curPathName, JSON.stringify(defaultColumns), JSON.stringify(resources)]); // Remove other dependencies to prevent issues\n\n\n\tif ((loading || curPathName != currentPathnameRef.current) && resources) {\n\t\treturn <></>; // Show loader before rendering anything else\n\t}\n\n\treturn (\n\t\t<PageContext.Provider\n\t\t\tvalue={{\n\t\t\t\tpageTemplateId,\n\t\t\t\tactivePage,\n\t\t\t\tpages,\n\t\t\t\tsharedPages,\n\t\t\t\tschemaFields,\n\t\t\t\tsetPages,\n\t\t\t\tupdatePageInfo,\n\t\t\t\tsavePages,\n\t\t\t\tsetActivePage,\n\t\t\t\tisSaving,\n\t\t\t\tloading,\n\t\t\t\terror,\n\t\t\t\tinitializeColumns,\n\t\t\t\tgeneratedColumns,\n\t\t\t\tupdateGeneratedColumns,\n\t\t\t\tisChanged,\n\t\t\t\tdeletePage,\n\t\t\t\tisCreatePage,\n\t\t\t\tsetIsCreatePage,\n\t\t\t\taddOrDeletePage,\n\t\t\t\tsetIsChanged,\n\t\t\t\tformData\n\t\t\t}}>\n\t\t\t{children}\n\t\t</PageContext.Provider>\n\t);\n};\n"],"names":["initialFilter","combinator","rules","defaultPageState","_id","name","page_size","column_order","visible_columns","views","active_view","filters","filterQueryString","sort","search","enabled_views","isShared","column_sizes","PageContext","createContext","pageTemplateId","activePage","updatePageInfo","loading","isSaving","error","pages","sharedPages","savePages","setActivePage","setPages","schemaFields","initializeColumns","generatedColumns","columns","orderKeys","updateGeneratedColumns","mergeArraysKeepingOrder","array1","array2","array1Set","Set","elementsToAdd","filter","item","has","generateColumnSchema","defaultColumns","columnOrders","dColumns","t","length","map","column","find","c","accessorKey","getAccesorKeyViaField","field","type","join","alias","key","updatedFields","replace","is_inner_join","uniqueFields","_","differenceWith","fieldA","fieldB","joinKey","additionalColumns","header","formatLabel","_a","label","_b","visible","enum","typeArrayAccessorKey","enableSorting","typeBooleanLabels","_c","values","mapValues","keyBy","value","false","true","children","location","useLocation","setActivePageData","useState","setSchemaFields","setLoading","setIsSaving","setError","setSharedPages","isChanged","setIsChanged","setPageTemplateId","isInitialLoad","setIsInitialLoad","isCreatePage","setIsCreatePage","formData","setFormData","setGeneratedColumns","user","useAuth","currentPathnameRef","useRef","pathname","curPathName","useMemo","routeToColumnsMap","resources","routeToResourceMap","useTranslation","fetchPageData","useCallback","async","currentPath","currentDefaultColumns","currentResources","current","pageResource","fieldResource","formResource","pageResponse","fieldResponse","formResponse","Promise","all","getV1PagesResource","getToken","resource","resolve","getV1FormBuilderSchemaFieldsName","getV1FormBuilder","company_id","fields","data","f","trim","gColumns","_d","p","uniq","_f","_e","shared_pages","sPages","details","owner","id","uPages","_g","_i","_h","form","prev","err","setTimeout","addOrDeletePage","restPages","page","sanitizedPages","removeIdStaticIdsFromMongoObject","response","patchV1PagesPageId","page_id","status_code","updatedPages","getV1FilterResource","fetchSavedFilters","msg","enqueueSnackbar","useEffect","JSON","stringify","jsx","Fragment","Provider","updates","deletePage"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/contexts/page-context.tsx"],"sourcesContent":["/* eslint-disable react-refresh/only-export-components */\n/* eslint-disable no-mixed-spaces-and-tabs */\n\nimport React, { createContext, useCallback, useEffect, useMemo, useState, useRef } from 'react';\nimport { useLocation } from 'react-router-dom';\nimport {\n\tgetV1FilterResource,\n\tgetV1FormBuilder,\n\tgetV1FormBuilderSchemaFieldsName,\n\tgetV1PagesResource,\n\tpatchV1PagesPageId\n} from '../api-client/api.system-feature/api';\nimport { IResources, routeToColumnsMap, routeToResourceMap } from '../constants/route-page-map'; // Removed - should be passed as props or configured by consuming app\nimport { getToken } from '../utils/common';\nimport { removeIdStaticIdsFromMongoObject } from '../utils/common';\nimport { RuleGroupType } from 'react-querybuilder';\nimport { MaterialTableColumnProps } from '../components/material-table/material-table';\nimport _ from 'lodash';\nimport { formatLabel } from '../utils/format-text';\nimport ErpLoader from '../components/loaders/erp-loader';\nimport { enqueueSnackbar } from 'notistack';\nimport { useTranslation } from 'react-i18next';\nimport { useAuth } from '../hooks/useAuth';\n// import { usePermissions } from '../hooks/use-permissions';\n\n/* Interfaces and types */\nexport type ViewType = 'Table' | 'Grid' | 'Kanban' | 'Calendar' | 'Gantt' | '';\n\ninterface SchemaFields {\n\tselect: string;\n\talias: string;\n\ttype: string;\n\tfilter_type?: string;\n\tfilter_name?: string;\n\trequired?: boolean;\n\tisOrderAllowed?: boolean;\n\tisDefault?: boolean;\n\tisFilterAllowed?: boolean;\n\tlabel?: string;\n\tkey: string;\n\taccessorKey?: string;\n\tjoinKey?: string;\n\tenum?: string | string[];\n}\nexport interface SavedViewType {\n\tlabel: ViewType;\n\tposition: number;\n}\nexport interface PageState {\n\t_id: string | number;\n\tname: string;\n\tpage_size: number;\n\tcolumn_order: string[];\n\tvisible_columns: MaterialTableColumnProps[];\n\tviews: SavedViewType[];\n\tactive_view: ViewType;\n\tfilters: RuleGroupType;\n\tfilterQueryString: string;\n\tsort: Record<any, any> | null;\n\tsearch: string;\n\tenabled_views: ViewType[];\n\tisShared: boolean;\n\tcolumn_sizes: Record<string, number>;\n}\n\nexport interface GeneratedColumnsState {\n\tcolumns: MaterialTableColumnProps[];\n\torderKeys: string[];\n}\n\nexport const initialFilter: RuleGroupType = { combinator: 'and', rules: [] };\n\ninterface PageContextValue {\n\tpageTemplateId: string;\n\tactivePage: PageState;\n\tupdatePageInfo: (updates: Partial<PageState>) => void;\n\tloading: boolean;\n\tisSaving: boolean;\n\terror: string | null;\n\tpages: any[];\n\tsavePages: () => void;\n\tsetActivePage: (data: any) => void;\n\tsetPages: React.Dispatch<any>;\n\tschemaFields: SchemaFields[];\n\tinitializeColumns: (columns: MaterialTableColumnProps[]) => void;\n\tgeneratedColumns: GeneratedColumnsState;\n\tsharedPages: any[];\n\tupdateGeneratedColumns: (updates: Partial<GeneratedColumnsState>) => void;\n\tformData:Record<string, any>\n\tsetFormData:(data:Record<string, any>) => void\n}\n\nexport const defaultPageState: PageState = {\n\t_id: '',\n\tname: '',\n\tpage_size: 10,\n\tcolumn_order: ['id'],\n\tvisible_columns: [],\n\tviews: [],\n\tactive_view: '',\n\tfilters: initialFilter,\n\tfilterQueryString: '',\n\tsort: null,\n\tsearch: '',\n\tenabled_views: ['Table', 'Grid', 'Kanban', 'Calendar', 'Gantt'],\n\tisShared: false,\n\tcolumn_sizes: {}\n};\ninterface PageProviderProps {\n\tchildren: React.ReactNode;\n}\n\nconst UpdatePageInfo = () => {};\nconst UpdateGeneratedColumns = () => {};\n\nexport const PageContext = createContext<PageContextValue>({\n\tpageTemplateId: '',\n\tactivePage: defaultPageState,\n\tupdatePageInfo: UpdatePageInfo,\n\tloading: false,\n\tisSaving: false,\n\terror: null,\n\tpages: [],\n\tsharedPages: [],\n\tsavePages: () => {},\n\tsetActivePage: () => {},\n\tsetPages: () => {},\n\tschemaFields: [],\n\tinitializeColumns: () => {},\n\tgeneratedColumns: { columns: [], orderKeys: [] },\n\tupdateGeneratedColumns: UpdateGeneratedColumns,\n});\n\nfunction mergeArraysKeepingOrder(array1: string[], array2: string[]): string[] {\n\t// Create a Set from the first array for efficient lookups\n\tconst array1Set = new Set(array1);\n\n\t// Filter the second array to find elements not in the first array\n\tconst elementsToAdd = array2.filter((item) => !array1Set.has(item));\n\n\t// Combine the original first array with the new elements\n\treturn [...array1, ...elementsToAdd];\n}\n\nconst generateColumnSchema = (\n\tdefaultColumns: MaterialTableColumnProps[],\n\tschemaFields: SchemaFields[],\n\tcolumnOrders: string[],\n\tdColumns?: any[],\n\tt?: any\n): { columns: MaterialTableColumnProps[]; orderKeys: string[] } => {\n\ttry {\n\t\tif(dColumns && dColumns?.length) {\n\t\t\tdefaultColumns = defaultColumns.map((column) => {\n\t\t\t\tconst f = dColumns.find((c) => c.accessorKey == column.accessorKey);\n\t\t\t\treturn f || column\n\t\t\t})\n\t\t}\n\t\tlet orderKeys = columnOrders.length\n\t\t\t? columnOrders\n\t\t\t: (defaultColumns.map((column) => column.accessorKey) as string[]);\n\t\tconst getAccesorKeyViaField = (field: SchemaFields) =>\n\t\t\t\t(field.type === 'object' || field?.join) ? `${field.alias}.${field.accessorKey}` : field.key;\n\t\t\t\n\t\t// Clean up schema fields by removing \"__replaceKey\" from the keys\n\t\tconst updatedFields = schemaFields.map((field) => ({\n\t\t\t...field,\n\t\t\tkey: field.key.replace('__replaceKey', '')\n\t\t})).filter((field)=>!field.is_inner_join);\n\n\t\tconst uniqueFields = _.differenceWith(\n\t\t\tupdatedFields,\n\t\t\tupdatedFields,\n\t\t\t(fieldA, fieldB) => fieldA.key === fieldB?.joinKey\n\t\t);\n\n\t\t// Find fields in schemaFields but not in defaultColumns based on accessorKey\n\t\tconst unmatchedFields = _.differenceWith(\n\t\t\tuniqueFields,\n\t\t\tdefaultColumns,\n\t\t\t(field, column) => getAccesorKeyViaField(field) === column.accessorKey\n\t\t);\n\n\t\t// Map unique fields to MaterialTableColumn structure\n\t\tconst additionalColumns: MaterialTableColumnProps[] = unmatchedFields.map(\n\t\t\t(field) => ({\n\t\t\t\theader: t ? formatLabel(t(field?.label)?.replace('_data', '') || '') : formatLabel(field?.label?.replace('_data', '') || ''),\n\t\t\t\taccessorKey: getAccesorKeyViaField(field),\n\t\t\t\tvisible: false,\n\t\t\t\ttype: field?.enum ? 'status' : field.type,\n\t\t\t\t...(field.type === 'array' && {typeArrayAccessorKey: field.accessorKey || ''}),\n\t\t\t\tenableSorting: (field.type === 'array' || field.type === 'object' || field?.join) ? false: true,\n\t\t\t\t...(field?.type === 'boolean' ? {\n\t\t\t\t\ttypeBooleanLabels: field?.values?.length ? _.mapValues( _.keyBy(\n\t\t\t\t\t\tfield?.values.map(item => ({\n\t\t\t\t\t\t\tkey: item.name,\n\t\t\t\t\t\t\tvalue: item.label\n\t\t\t\t\t\t})),\n\t\t\t\t\t\t'key'\n\t\t\t\t\t), 'value') : { 0: \"Inactive\", 1: \"Active\", false: \"Inactive\", true: \"Active\" }\n\t\t\t\t} : {})\n\t\t\t})\n\t\t);\n\n\t\tconst updatedDefaultColumns = defaultColumns?.map((column) => {\n\t\t\tconst field = schemaFields.find((field) => getAccesorKeyViaField(field) === column.accessorKey);\n\t\t\treturn {\n\t\t\t\t...column,\n\t\t\t\t...((field?.type === 'object' || field?.joinKey||column.enableSorting===false) ? { enableSorting: false } : {})\n\t\t\t};\n\t\t});\n\n\t\t// Combine default columns and additional columns\n\t\tconst columns = [...updatedDefaultColumns, ...additionalColumns];\n\n\t\t// Generate an array of column keys for ordering\n\t\tconst nOrderKeys = columns.map((column) => column.accessorKey) as string[];\n\n\t\torderKeys = mergeArraysKeepingOrder(orderKeys, nOrderKeys);\n\n\t\treturn { columns, orderKeys };\n\t} catch (error) {\n\t\treturn {\n\t\t\tcolumns: defaultColumns,\n\t\t\torderKeys: defaultColumns.map((column) => column.accessorKey) as string[]\n\t\t};\n\t}\n};\n\nexport const PageProvider: React.FC<PageProviderProps> = ({ children }) => {\n\tconst location = useLocation();\n\tconst [activePage, setActivePageData] = useState<PageState>(defaultPageState);\n\t// const permissions=usePermissions();\n\tconst [schemaFields, setSchemaFields] = useState<SchemaFields[]>([]);\n\tconst [loading, setLoading] = useState<boolean>(true);\n\tconst [isSaving, setIsSaving] = useState<boolean>(false);\n\tconst [error, setError] = useState<string | null>(null);\n\tconst [pages, setPages] = useState<any>([]);\n\tconst [sharedPages, setSharedPages] = useState<any>([]);\n\tconst [isChanged, setIsChanged] = useState<boolean>(false);\n\tconst [pageTemplateId, setPageTemplateId] = useState<string>('');\n\tconst [isInitialLoad, setIsInitialLoad] = useState<boolean>(true);\n\tconst [isCreatePage, setIsCreatePage] = useState<boolean>(false);\n\tconst [formData, setFormData] = useState<any>({});\n\tconst [generatedColumns, setGeneratedColumns] = useState<{\n\t\tcolumns: MaterialTableColumnProps[];\n\t\torderKeys: string[];\n\t}>({ columns: [], orderKeys: [] });\n\tconst {user} = useAuth()\n\t// Add ref to track current pathname for race condition prevention\n\tconst currentPathnameRef = useRef<string>(location.pathname);\n\tconst curPathName = useMemo(() => location.pathname, [location.pathname])\n\t\n\t// Get current page's default columns and resources\n\tconst defaultColumns: any[] = useMemo(() => {\n\t\tconst columns = routeToColumnsMap[curPathName]?.defaultColumns || [];\n\t\treturn columns;\n\t}, [curPathName]);\n\t\n\tconst resources: IResources = useMemo(() => {\n\t\tconst resource = routeToResourceMap[curPathName] || null;\n\t\treturn resource;\n\t}, [curPathName]);\n\n\t//Translation\n\tconst {t}=useTranslation()\n\n\t// eslint-disable-next-line unused-imports/no-unused-vars, @typescript-eslint/no-unused-vars\n\tconst initializeColumns = (columns: MaterialTableColumnProps[]) => {\n\t\t//! Remove the function if not needed\n\t};\n\n\t// Fetch page-related information from API\n\tconst fetchPageData = useCallback(\n\t\tasync (currentPath: string, currentDefaultColumns: any[], currentResources: IResources) => {\n\t\t\n\t\t\t// Check if this request is still valid (pathname hasn't changed)\n\t\t\tif (currentPathnameRef.current !== currentPath) {\n\t\t\t\tconsole.log('Aborting fetchPageData - pathname changed');\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tsetLoading(true);\n\t\t\tsetError(null);\n\t\t\t\n\t\t\ttry {\n\t\t\t\tif (currentDefaultColumns.length && currentResources) {\n\t\t\t\t\tconst { pageResource = '', fieldResource = '',formResource='' } = currentResources;\n\t\t\t\t\t\n\t\t\t\t\t// Double-check pathname hasn't changed before making API calls\n\t\t\t\t\tif (currentPathnameRef.current !== currentPath) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tconst [pageResponse, fieldResponse,formResponse] = await Promise.all([\n\t\t\t\t\t\tpageResource ? getV1PagesResource({ ...getToken(), resource: pageResource }): Promise.resolve(null),\n\n\t\t\t\t\t\tgetV1FormBuilderSchemaFieldsName({\n\t\t\t\t\t\t\tname: fieldResource,\n\t\t\t\t\t\t\t...getToken(),\n\t\t\t\t\t\t\tskip: 0,\n\t\t\t\t\t\t\tlimit: 999\n\t\t\t\t\t\t}),\n\t\t\t\t\t\t\tgetV1FormBuilder({\n\t\t\t\t\t\t\t...getToken(),\n\t\t\t\t\t\t\tfilters:`(resource.eq=${formResource}&company_id.eq=${user?.company_id})`,\n\t\t\t\t\t\t})\n\t\t\t\t\t]);\n\n\t\t\t\t\t// Final check - ensure pathname still matches\n\t\t\t\t\tif (currentPathnameRef.current !== currentPath) {\n\t\t\t\t\t\tconsole.log('Aborting fetchPageData - pathname changed after API call');\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst fields = fieldResponse?.data?.fields?.map(f => ({...f, label: !f?.label?.trim() ? formatLabel(f.key) : f.label}));\n\n\t\t\t\t\tconst gColumns = generateColumnSchema(currentDefaultColumns, fields, [], [], t);\n \n\t\t\t\t\tconst pages =\n\t\t\t\t\t\tpageResponse?.data?.pages?.map((p) => ({\n\t\t\t\t\t\t\t...defaultPageState,\n\t\t\t\t\t\t\t...p,\n\t\t\t\t\t\t\tvisible_columns: generateColumnSchema(\n\t\t\t\t\t\t\t\tp.visible_columns?.length ? p.visible_columns : currentDefaultColumns,\n\t\t\t\t\t\t\t\tfields,\n\t\t\t\t\t\t\t\tp.column_order || [],\n\t\t\t\t\t\t\t\tcurrentDefaultColumns,\n\t\t\t\t\t\t\t\tt\n\t\t\t\t\t\t\t).columns,\n\t\t\t\t\t\t\tcolumn_order: mergeArraysKeepingOrder(\n\t\t\t\t\t\t\t\tp.column_order || [],\n\t\t\t\t\t\t\t\t_.uniq(gColumns.orderKeys)\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t})) || [];\n\t\t\t\t\tconst sharedPages =\n\t\t\t\t\t\tpageResponse?.data?.shared_pages?.map((sPages) => ({\n\t\t\t\t\t\t\t...sPages.details,\n\t\t\t\t\t\t\tisShared: true,\n\t\t\t\t\t\t\towner: sPages.owner,\n\t\t\t\t\t\t\t_id: sPages.id\n\t\t\t\t\t\t})) || [];\n\n\t\t\t\t\tconst uPages = [...pages, ...sharedPages];\n\n\t\t\t\t\t// Only update state if we're still on the same path\n\t\t\t\t\tif (currentPathnameRef.current === currentPath) {\n\t\t\t\t\t\tawait Promise.all([\n\t\t\t\t\t\t\tsetSchemaFields(fields),\n\t\t\t\t\t\t\tsetGeneratedColumns(gColumns),\n\t\t\t\t\t\t\tsetPageTemplateId(pageResponse?.data?._id),\n\t\t\t\t\t\t\tsetSharedPages(sharedPages),\n\t\t\t\t\t\t\tsetPages(uPages || []),\n\t\t\t\t\t\t\tsetFormData(formResponse?.data?.form?.[0] || {}),\n\t\t\t\t\t\t\tsetActivePageData((prev) => ({\n\t\t\t\t\t\t\t\t...prev,\n\t\t\t\t\t\t\t\t...(pages?.[0] || {}) // Merge API response with current state\n\t\t\t\t\t\t\t}))\n\t\t\t\t\t\t]);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} catch (err) {\n\t\t\t\t// Only set error if we're still on the same path\n\t\t\t\tif (currentPathnameRef.current === currentPath) {\n\t\t\t\t\tsetError('Failed to load page data');\n\t\t\t\t}\n\t\t\t} finally {\n\t\t\t\t// Only update loading state if we're still on the same path\n\t\t\t\tif (currentPathnameRef.current === currentPath) {\n\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\tsetLoading(false);\n\t\t\t\t\t}, 1000);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t//eslint-disable-next-line react-hooks/exhaustive-deps\n\t\t[] // Remove dependencies to prevent stale closures\n\t);\n\n\t// Update page state dynamically\n\tconst updatePageInfo = (updates: Partial<PageState>) => {\n\t\tsetActivePageData((prev) => ({\n\t\t\t...prev,\n\t\t\t...updates\n\t\t}));\n\t\t!isInitialLoad && setIsChanged(true)\n\t\tsetIsInitialLoad(false)\n\t};\n\n\t// Update columns state dynamically\n\tconst updateGeneratedColumns = (updates: Partial<GeneratedColumnsState>) => {\n\t\tsetGeneratedColumns((prev) => ({\n\t\t\t...prev,\n\t\t\t...updates\n\t\t}));\n\t};\n\n\tconst setActivePage = (page: PageState) => {\n\t\tconst uPages = pages.map((p) =>\n\t\t\tp._id == activePage?._id ? activePage : p\n\t\t);\n\t\tsetPages(uPages);\n\t\tsetActivePageData(page);\n\t};\n\n\tconst savePages = async () => {\n\t\tsetError(null);\n\t\tsetIsSaving(true);\n\t\tawait addOrDeletePage()\n\t\tsetTimeout(() => {\n\t\t\tsetIsSaving(false);\n\t\t}, 1000);\n\t};\n\tconst fetchSavedFilters = async (): Promise<void> => {\n\n\t\tawait\tgetV1FilterResource({ ...getToken(), resource: resources?.pageResource || resources?.fieldResource })\n\t\t\t\n\t};\n\n\tconst addOrDeletePage=async(restPages?:any[])=>{\n\t\ttry {\n\t\t\tconst filteredPages =restPages?.length ? restPages : pages.filter((page) => !page.isShared);\n\t\t\tconst uPages = filteredPages.map((p) =>\n\t\t\t\t(p._id == activePage?._id && activePage.name==p.name) ? activePage : p\n\t\t\t);\n\t\t\tconst sanitizedPages = removeIdStaticIdsFromMongoObject(uPages);\n\n\t\t\tconst response = await patchV1PagesPageId({\n\t\t\t\t...getToken(),\n\t\t\t\t...{ page_id: pageTemplateId, pages: sanitizedPages }\n\t\t\t});\n\t\t\tif (response.status_code === 200) {\n\t\t\t\tconst updatedPages = response?.data?.pages || [];\n\t\t\t\tsetPages(updatedPages);\n \t\tfetchSavedFilters();\n\t\t\t\tsetActivePageData((prev) => ({\n\t\t\t\t\t...prev,\n\t\t\t\t\t...(updatedPages.find((p) => p.name == prev.name) || {})\n\t\t\t\t}));\n\t\t\t\tsetIsChanged(false);\n\t\t\t\tsetIsCreatePage(false);\n\t\t\t\tsetFormData(response?.data?.form?.[0] || {});\n\t\t\t\tconst msg=restPages?.length ? t('pages.msg.delete') : t('pages.msg.save')\n\t\t\t\tenqueueSnackbar(msg);\n\t\t\t}\n\t\t\treturn response\n\t\t} catch (err) {\n\t\t\tsetError('Failed to save page data');\n\t\t} \n\t}\n\t\n\tconst deletePage=async(pages:string)=>{\n\t\taddOrDeletePage(pages);\n\t}\n\n\t// Handle pathname changes\n\tuseEffect(() => {\n\t\t// Update the ref immediately\n\t\tcurrentPathnameRef.current = curPathName;\n\t\t\n\t\t// Reset state for new page\n\t\tsetLoading(true);\n\t\tsetIsSaving(false);\n\t\tsetActivePageData(defaultPageState);\n\t\tsetIsChanged(false);\n\t\tsetIsInitialLoad(true);\n\t\t\n\t\t// Clear previous data to prevent showing stale data\n\t\tsetSchemaFields([]);\n\t\tsetGeneratedColumns({ columns: [], orderKeys: [] });\n\t\tsetPages([]);\n\t\tsetSharedPages([]);\n\t\tsetPageTemplateId('');\n\t\tsetError(null);\n\t\t\n\t\t// Fetch data for new page with current values\n\t\tfetchPageData(curPathName, defaultColumns, resources);\n\n\t\treturn () => { setLoading(true) }\n\t\t//eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [curPathName, JSON.stringify(defaultColumns), JSON.stringify(resources)]); // Remove other dependencies to prevent issues\n\n\n\t// Removed loading check to prevent blank page during loading\n\n\treturn (\n\t\t<PageContext.Provider\n\t\t\tvalue={{\n\t\t\t\tpageTemplateId,\n\t\t\t\tactivePage,\n\t\t\t\tpages,\n\t\t\t\tsharedPages,\n\t\t\t\tschemaFields,\n\t\t\t\tsetPages,\n\t\t\t\tupdatePageInfo,\n\t\t\t\tsavePages,\n\t\t\t\tsetActivePage,\n\t\t\t\tisSaving,\n\t\t\t\tloading,\n\t\t\t\terror,\n\t\t\t\tinitializeColumns,\n\t\t\t\tgeneratedColumns,\n\t\t\t\tupdateGeneratedColumns,\n\t\t\t\tisChanged,\n\t\t\t\tdeletePage,\n\t\t\t\tisCreatePage,\n\t\t\t\tsetIsCreatePage,\n\t\t\t\taddOrDeletePage,\n\t\t\t\tsetIsChanged,\n\t\t\t\tformData\n\t\t\t}}>\n\t\t\t{children}\n\t\t</PageContext.Provider>\n\t);\n};\n"],"names":["initialFilter","combinator","rules","defaultPageState","_id","name","page_size","column_order","visible_columns","views","active_view","filters","filterQueryString","sort","search","enabled_views","isShared","column_sizes","PageContext","createContext","pageTemplateId","activePage","updatePageInfo","loading","isSaving","error","pages","sharedPages","savePages","setActivePage","setPages","schemaFields","initializeColumns","generatedColumns","columns","orderKeys","updateGeneratedColumns","mergeArraysKeepingOrder","array1","array2","array1Set","Set","elementsToAdd","filter","item","has","generateColumnSchema","defaultColumns","columnOrders","dColumns","t","length","map","column","find","c","accessorKey","getAccesorKeyViaField","field","type","join","alias","key","updatedFields","replace","is_inner_join","uniqueFields","_","differenceWith","fieldA","fieldB","joinKey","additionalColumns","header","formatLabel","_a","label","_b","visible","enum","typeArrayAccessorKey","enableSorting","typeBooleanLabels","_c","values","mapValues","keyBy","value","false","true","children","location","useLocation","setActivePageData","useState","setSchemaFields","setLoading","setIsSaving","setError","setSharedPages","isChanged","setIsChanged","setPageTemplateId","isInitialLoad","setIsInitialLoad","isCreatePage","setIsCreatePage","formData","setFormData","setGeneratedColumns","user","useAuth","currentPathnameRef","useRef","pathname","curPathName","useMemo","routeToColumnsMap","resources","routeToResourceMap","useTranslation","fetchPageData","useCallback","async","currentPath","currentDefaultColumns","currentResources","current","pageResource","fieldResource","formResource","pageResponse","fieldResponse","formResponse","Promise","all","getV1PagesResource","getToken","resource","resolve","getV1FormBuilderSchemaFieldsName","getV1FormBuilder","company_id","fields","data","f","trim","gColumns","_d","p","uniq","_f","_e","shared_pages","sPages","details","owner","id","uPages","_g","_i","_h","form","prev","err","setTimeout","addOrDeletePage","restPages","page","sanitizedPages","removeIdStaticIdsFromMongoObject","response","patchV1PagesPageId","page_id","status_code","updatedPages","getV1FilterResource","fetchSavedFilters","msg","enqueueSnackbar","useEffect","JSON","stringify","jsx","Provider","updates","deletePage"],"mappings":"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"}
|
package/dist/style.css
CHANGED
|
@@ -154,10 +154,10 @@
|
|
|
154
154
|
/*$vite$:1*/
|
|
155
155
|
._3_ygE{display:table;border-bottom:#e6e4e4 1px solid;border-top:#e6e4e4 1px solid;border-left:#e6e4e4 1px solid}._1nBOt{display:table-row;list-style:none}._2eZzQ{border-right:1px solid rgb(196,196,196);opacity:1;margin-left:-2px}._WuQ0f{display:table-cell;vertical-align:-webkit-baseline-middle;vertical-align:middle}._3ZbQT{display:table;border-bottom:#e6e4e4 1px solid;border-left:#e6e4e4 1px solid}._34SS0{display:table-row;text-overflow:ellipsis}._34SS0:nth-of-type(2n){background-color:#f5f5f5}._3lLk3{display:table-cell;vertical-align:middle;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}._nI1Xw{display:flex}._2QjE6{color:#565656;font-size:.6rem;padding:.15rem .2rem 0rem;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:pointer}._2TfEi{font-size:.6rem;padding-left:1rem;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}._3T42e{background:#fff;padding:12px;box-shadow:0 3px 6px #00000029,0 3px 6px #0000003b}._29NTg{font-size:12px;margin-bottom:6px;color:#666}._25P-K{position:absolute;display:flex;flex-shrink:0;pointer-events:none;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}._3gVAq{visibility:hidden;position:absolute;display:flex;pointer-events:none}._1eT-t{overflow:hidden auto;width:1rem;flex-shrink:0;scrollbar-width:thin}._1eT-t::-webkit-scrollbar{width:1.1rem;height:1.1rem}._1eT-t::-webkit-scrollbar-corner{background:transparent}._1eT-t::-webkit-scrollbar-thumb{border:6px solid transparent;background:#0003;background:var(--palette-black-alpha-20, rgba(0, 0, 0, .2));border-radius:10px;background-clip:padding-box}._1eT-t::-webkit-scrollbar-thumb:hover{border:4px solid transparent;background:#0000004d;background:var(--palette-black-alpha-30, rgba(0, 0, 0, .3));background-clip:padding-box}._2dZTy{fill:#fff}._2dZTy:nth-child(2n){fill:#f5f5f5}._3rUKi{stroke:#ebeff2}._RuwuK{stroke:#e6e4e4}._9w8d5{text-anchor:middle;fill:#333;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;pointer-events:none}._1rLuZ{stroke:#e6e4e4}._2q1Kt{text-anchor:middle;fill:#555;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;pointer-events:none}._35nLX{fill:#fff;stroke:#e0e0e0;stroke-width:1.4}._KxSXS{cursor:pointer;outline:none}._KxSXS:hover ._3w_5u{visibility:visible;opacity:1}._3w_5u{fill:#ddd;cursor:ew-resize;opacity:0;visibility:hidden}._31ERP{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;stroke-width:0}._RRr13{cursor:pointer;outline:none}._2P2B1{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}._1KJ6x{cursor:pointer;outline:none}._2RbVy{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;opacity:.6}._2pZMF{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}._3zRJQ{fill:#fff;text-anchor:middle;font-weight:lighter;dominant-baseline:central;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;pointer-events:none}._3KcaM{fill:#555;text-anchor:start;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;pointer-events:none}._CZjuD{overflow:hidden;font-size:0;margin:0;padding:0}._2B2zv{margin:0;padding:0;overflow:hidden}._3eULf{display:flex;padding:0;margin:0;list-style:none;outline:none;position:relative}._2k9Ys{overflow:auto;max-width:100%;scrollbar-width:thin;height:1.2rem}._2k9Ys::-webkit-scrollbar{width:1.1rem;height:1.1rem}._2k9Ys::-webkit-scrollbar-corner{background:transparent}._2k9Ys::-webkit-scrollbar-thumb{border:6px solid transparent;background:#0003;background:var(--palette-black-alpha-20, rgba(0, 0, 0, .2));border-radius:10px;background-clip:padding-box}._2k9Ys::-webkit-scrollbar-thumb:hover{border:4px solid transparent;background:#0000004d;background:var(--palette-black-alpha-30, rgba(0, 0, 0, .3));background-clip:padding-box}._19jgW{height:1px}
|
|
156
156
|
/*$vite$:1*/
|
|
157
|
-
.react-kanban-board{padding:5px}.react-kanban-card{border-radius:3px;background-color:#fff;padding:10px;margin-bottom:7px}.react-kanban-card-skeleton,.react-kanban-card,.react-kanban-card-adder-form{box-sizing:border-box;max-width:250px;min-width:250px}.react-kanban-card--dragging{box-shadow:2px 2px gray}.react-kanban-card__description{padding-top:10px}.react-kanban-card__title{border-bottom:1px solid #eee;padding-bottom:5px;font-weight:700;display:flex;justify-content:space-between}.react-kanban-column{padding:15px;border-radius:2px;background-color:#eee;margin:5px}.react-kanban-column input:focus{outline:none}.react-kanban-card-adder-form{border-radius:3px;background-color:#fff;padding:10px;margin-bottom:7px}.react-kanban-card-adder-form input{border:0px;font-family:inherit;font-size:inherit}.react-kanban-card-adder-button{width:100%;margin-top:5px;background-color:transparent;cursor:pointer;border:1px solid #ccc;transition:.3s;border-radius:3px;font-size:20px;margin-bottom:10px;font-weight:700}.react-kanban-card-adder-button:hover{background-color:#ccc}.react-kanban-card-adder-form__title{border-bottom:1px solid #eee;font-weight:700;display:flex;justify-content:space-between;width:100%;padding:0}.react-kanban-card-adder-form__title:focus{outline:none}.react-kanban-card-adder-form__description{width:100%;margin-top:10px}.react-kanban-card-adder-form__description:focus{outline:none}.react-kanban-card-adder-form__button{background-color:#eee;border:none;padding:5px;width:45%;margin-top:5px;border-radius:3px}.react-kanban-card-adder-form__button:hover{transition:.3s;cursor:pointer;background-color:#ccc}.react-kanban-column-header{padding-bottom:10px;font-weight:700}.react-kanban-column-header input:focus{outline:none}.react-kanban-column-header__button{color:#333;background-color:#fff;border-color:#ccc}.react-kanban-column-header__button:hover,.react-kanban-column-header__button:focus,.react-kanban-column-header__button:active{background-color:#e6e6e6}.react-kanban-column-adder-button{border:2px dashed #eee;height:132px;margin:5px}.react-kanban-column-adder-button:hover{cursor:pointer}
|
|
158
|
-
/*$vite$:1*/
|
|
159
157
|
.d1t1th9s{position:absolute;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;overflow:hidden;box-sizing:border-box;--overlay-top:var(--d1t1th9s-0);left:var(--d1t1th9s-1);top:var(--d1t1th9s-2);min-width:var(--d1t1th9s-3);min-height:var(--d1t1th9s-4);width:-webkit-max-content;width:-moz-max-content;width:max-content;max-width:400px;max-height:calc(100vh - var(--d1t1th9s-5));font-family:var(--gdg-font-family);font-size:var(--gdg-editor-font-size);text-align:start}@-webkit-keyframes glide_fade_in-d1t1th9s{0%{opacity:0%}to{opacity:100%}}@keyframes glide_fade_in-d1t1th9s{0%{opacity:0%}to{opacity:100%}}.d1t1th9s.gdg-style{border-radius:2px;background-color:var(--gdg-bg-cell);box-shadow:0 0 0 1px var(--gdg-accent-color),0 0 1px #3e415666,0 6px 12px #3e415626;-webkit-animation:glide_fade_in-d1t1th9s 60ms 1;animation:glide_fade_in-d1t1th9s 60ms 1}.d1t1th9s.pad{padding:var(--d1t1th9s-6) 8.5px 3px}.d1t1th9s .clip-region{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;overflow-y:auto;overflow-x:hidden;border-radius:2px;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1}.d1t1th9s .clip-region .gdg-growing-entry{height:100%}.d1t1th9s .clip-region input.gdg-input{width:100%;border:none;border-width:0;outline:none}.d1t1th9s .clip-region textarea.gdg-input{border:none;border-width:0;outline:none}.m15w2ly5{position:absolute;right:44px;bottom:44px;background-color:var(--gdg-bg-cell);background:linear-gradient(var(--gdg-bg-cell),var(--gdg-bg-cell-medium));border-radius:4px;z-index:1;box-shadow:0 0 0 1px var(--gdg-border-color),0 2px 5px #00000014;overflow:hidden}.m15w2ly5 .header{position:absolute;left:0;top:0;width:100%;height:4px;background-color:var(--gdg-bg-header);box-shadow:0 0 0 1px var(--gdg-border-color)}.m15w2ly5 .locationMarker{position:absolute;border:1px solid var(--gdg-accent-color);background-color:var(--gdg-accent-light)}.s1jz82f8 .dvn-scroller{overflow:var(--s1jz82f8-0);-webkit-transform:translate3d(0,0,0);-ms-transform:translate3d(0,0,0);transform:translateZ(0)}.s1jz82f8 .hidden{visibility:hidden}.s1jz82f8 .dvn-scroll-inner{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;pointer-events:none}.s1jz82f8 .dvn-scroll-inner>*{-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0}.s1jz82f8 .dvn-scroll-inner .dvn-spacer{-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1}.s1jz82f8 .dvn-scroll-inner .dvn-stack{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column}.s1jz82f8 .dvn-underlay>*{position:absolute;left:0;top:0}.s1jz82f8 canvas{outline:none}.s1jz82f8 canvas *{height:0}.sxep88s{position:absolute;top:4px;right:20px;background-color:var(--gdg-bg-cell);color:var(--gdg-text-dark);padding:8px;border:1px solid var(--gdg-border-color);border-radius:6px;font-size:var(--gdg-editor-font-size);-webkit-transform:translateX(var(--sxep88s-0));-ms-transform:translateX(var(--sxep88s-0));transform:translate(var(--sxep88s-0));-webkit-transition:-webkit-transform .15s;-webkit-transition:transform .15s;transition:transform .15s}.sxep88s .search-bar-inner{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.sxep88s .search-status{padding-top:4px;font-size:11px}.sxep88s .search-progress{position:absolute;height:4px;left:0;bottom:0;background-color:var(--gdg-text-light)}.sxep88s input{width:220px;color:var(--gdg-textDark);background-color:var(--gdg-bg-cell);border:none;border-width:0;outline:none}.sxep88s button{width:24px;height:24px;padding:0;border:none;outline:none;background:none;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;cursor:pointer;color:var(--gdg-text-medium)}.sxep88s button:hover{color:var(--gdg-text-dark)}.sxep88s button .button-icon{width:16px;height:16px}.sxep88s button:disabled{opacity:.4;pointer-events:none}.r1kzy40b{-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;border:none;outline:none;background-color:var(--gdg-bg-header-has-focus);border-radius:9px;padding:0 8px;box-shadow:0 0 0 1px var(--gdg-border-color);color:var(--gdg-text-group-header);min-height:var(--r1kzy40b-0);font:var(--gdg-header-font-style) var(--gdg-font-family)}.c1sqdbw3{padding:0 8px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;background-color:var(--gdg-bg-header)}.wzg2m5k{position:relative;min-width:10px;min-height:10px;max-width:100%;max-height:100%;width:var(--wzg2m5k-0);height:var(--wzg2m5k-1);overflow:hidden;overflow:clip;contain:strict;direction:ltr}.wzg2m5k>:first-child{position:absolute;left:0;top:0;width:100%;height:100%}.b1bqsp5z{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap}.b1bqsp5z .boe-bubble{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;border-radius:100px;padding:0 8px;height:20px;background-color:var(--gdg-bg-bubble);color:var(--gdg-text-dark);margin:2px}.b1bqsp5z textarea{position:absolute;top:0;left:0;width:0px;height:0px;opacity:0}.df2kt4a{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap}.df2kt4a .doe-bubble{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:0 8px;height:24px;background-color:var(--gdg-bg-cell);color:var(--gdg-text-dark);margin:2px;border-radius:6px;box-shadow:0 0 1px #3e415666,0 1px 3px #3e415666}.df2kt4a .doe-bubble img{height:16px;object-fit:contain;margin-right:4px}.df2kt4a textarea{position:absolute;top:0;left:0;width:0px;height:0px;opacity:0}.i1eozt10{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;height:100%}.i1eozt10 .centering-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;height:100%}.i1eozt10 .centering-container img,.i1eozt10 .centering-container canvas{max-height:calc(100vh - var(--overlay-top) - 20px);object-fit:contain;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.i1eozt10 .centering-container canvas{max-width:380px}.i1eozt10 .edit-icon{position:absolute;top:12px;right:0;width:48px;height:48px;color:var(--gdg-accent-color);cursor:pointer;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.i1eozt10 .edit-icon>*{width:24px;height:24px}.i1eozt10 textarea{position:absolute;top:0;left:0;width:0px;height:0px;opacity:0}.mlbeo71{word-break:break-word;-webkit-touch-callout:default;padding-top:6px}.mlbeo71>*{margin:0}.mlbeo71 *:last-child{margin-bottom:0}.mlbeo71 p img{width:100%}.ijuk0po{position:absolute;left:0;right:0;top:0;bottom:0;width:100%;height:100%;border-radius:0;resize:none;white-space:pre-wrap;min-width:100%;overflow:hidden;border:0;background-color:transparent;font-size:var(--gdg-editor-font-size);line-height:16px;font-family:var(--gdg-font-family);color:var(--gdg-text-dark);padding:0;margin:0}.ijuk0po::-webkit-input-placeholder{color:var(--gdg-text-light)}.ijuk0po::-moz-placeholder{color:var(--gdg-text-light)}.ijuk0po:-ms-input-placeholder{color:var(--gdg-text-light)}.ijuk0po::placeholder{color:var(--gdg-text-light)}.invalid .ijuk0po{-webkit-text-decoration:underline;text-decoration:underline;-webkit-text-decoration-color:#d60606;text-decoration-color:#d60606}.saq3p5l{visibility:hidden;white-space:pre-wrap;word-wrap:break-word;width:-webkit-max-content;width:-moz-max-content;width:max-content;max-width:100%;min-width:100%;font-size:var(--gdg-editor-font-size);line-height:16px;font-family:var(--gdg-font-family);color:var(--gdg-text-dark);padding:0 0 2px;margin:0}.gf8vzix{position:relative;margin-top:6px}.mdwzdl1{min-width:var(--mdwzdl1-0);width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:flex-start;-webkit-box-align:flex-start;-ms-flex-align:flex-start;align-items:flex-start;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;position:relative;color:var(--gdg-text-dark)}.mdwzdl1 .gf8vzix{-webkit-flex-shrink:1;-ms-flex-negative:1;flex-shrink:1;min-width:0}.mdwzdl1 .spacer{-webkit-flex:1;-ms-flex:1;flex:1}.mdwzdl1 .edit-icon{position:relative;cursor:pointer;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:var(--gdg-accent-color);padding:0;height:24px;width:24px;-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;-webkit-transition:all "0.125s ease";transition:all "0.125s ease";border-radius:6px}.mdwzdl1 .edit-icon>*{width:16px;height:16px}.mdwzdl1 .edit-hover:hover{background-color:var(--gdg-accent-light);-webkit-transition:background-color .15s;transition:background-color .15s}.mdwzdl1 .checkmark-hover:hover{color:#fff;background-color:var(--gdg-accent-color)}.mdwzdl1 .md-edit-textarea{position:relative;top:0;left:0;width:0px;height:0px;margin-top:25px;opacity:0;padding:0}.mdwzdl1 .ml-6{margin-left:6px}.n1czszh3{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;margin:6px 0 3px;color:var(--gdg-text-dark)}.n1czszh3>input{font-size:var(--gdg-editor-font-size);padding:0;font-family:var(--gdg-font-family);color:var(--gdg-text-dark);background-color:var(--gdg-bg-cell)}.uf0sjo8{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;min-height:21px}.uf0sjo8 .link-area{-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;-webkit-flex-shrink:1;-ms-flex-negative:1;flex-shrink:1;cursor:pointer;margin-right:8px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--gdg-link-color);-webkit-text-decoration:underline!important;text-decoration:underline!important}.uf0sjo8 .edit-icon{-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;width:32px;color:var(--gdg-accent-color);cursor:pointer;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.uf0sjo8 .edit-icon>*{width:24px;height:24px}.uf0sjo8 textarea{position:absolute;top:0;left:0;width:0px;height:0px;opacity:0}
|
|
160
158
|
/*$vite$:1*/
|
|
159
|
+
.react-kanban-board{padding:5px}.react-kanban-card{border-radius:3px;background-color:#fff;padding:10px;margin-bottom:7px}.react-kanban-card-skeleton,.react-kanban-card,.react-kanban-card-adder-form{box-sizing:border-box;max-width:250px;min-width:250px}.react-kanban-card--dragging{box-shadow:2px 2px gray}.react-kanban-card__description{padding-top:10px}.react-kanban-card__title{border-bottom:1px solid #eee;padding-bottom:5px;font-weight:700;display:flex;justify-content:space-between}.react-kanban-column{padding:15px;border-radius:2px;background-color:#eee;margin:5px}.react-kanban-column input:focus{outline:none}.react-kanban-card-adder-form{border-radius:3px;background-color:#fff;padding:10px;margin-bottom:7px}.react-kanban-card-adder-form input{border:0px;font-family:inherit;font-size:inherit}.react-kanban-card-adder-button{width:100%;margin-top:5px;background-color:transparent;cursor:pointer;border:1px solid #ccc;transition:.3s;border-radius:3px;font-size:20px;margin-bottom:10px;font-weight:700}.react-kanban-card-adder-button:hover{background-color:#ccc}.react-kanban-card-adder-form__title{border-bottom:1px solid #eee;font-weight:700;display:flex;justify-content:space-between;width:100%;padding:0}.react-kanban-card-adder-form__title:focus{outline:none}.react-kanban-card-adder-form__description{width:100%;margin-top:10px}.react-kanban-card-adder-form__description:focus{outline:none}.react-kanban-card-adder-form__button{background-color:#eee;border:none;padding:5px;width:45%;margin-top:5px;border-radius:3px}.react-kanban-card-adder-form__button:hover{transition:.3s;cursor:pointer;background-color:#ccc}.react-kanban-column-header{padding-bottom:10px;font-weight:700}.react-kanban-column-header input:focus{outline:none}.react-kanban-column-header__button{color:#333;background-color:#fff;border-color:#ccc}.react-kanban-column-header__button:hover,.react-kanban-column-header__button:focus,.react-kanban-column-header__button:active{background-color:#e6e6e6}.react-kanban-column-adder-button{border:2px dashed #eee;height:132px;margin:5px}.react-kanban-column-adder-button:hover{cursor:pointer}
|
|
160
|
+
/*$vite$:1*/
|
|
161
161
|
/**
|
|
162
162
|
* @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.
|
|
163
163
|
* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
|