@peak-ai/canvas 1.6.7 → 1.6.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"GrapesjsCanvas.js","names":["React","useEffect","useRef","useState","grapesjs","tailwind","TypesToRegister","toKebabCase","tailwindCompiledCss","datePickerCss","extractPageMetadata","getCurrentPage","mergeStyles","normalizeMultiPageJson","createGrapesjsShadcnGenericPlugin","StyledEditor","PageProvider","usePageContext","jsx","_jsx","jsxs","_jsxs","isEditorCanvasReady","editor","canvas","Canvas","canvasDoc","getDocument","canvasBody","body","_unused","safeStoreEditor","_x","_safeStoreEditor","apply","arguments","_asyncToGenerator","_regeneratorRuntime","mark","_callee6","_editor$Pages","wrapper","pages","wrap","_callee6$","_context6","prev","next","getWrapper","abrupt","Pages","getAll","length","store","sent","t0","console","warn","stop","setComponentProperties","isPreview","isStreaming","setPropertiesRecursively","comp","isMutable","set","editable","draggable","droppable","getName","selectable","hoverable","highlightable","copyable","resizable","removable","badgable","_extends","get","isEditable","attributes","command","components","forEach","find","runCommand","stopCommand","convertStyles","stylesArray","map","block","selectors","Array","isArray","join","declarations","Object","entries","style","_ref","prop","value","createActionCardConfig","action","icon","title","description","type","componentName","componentProps","headerContent","bodyContent","expandActions","node","_node$componentProps","actions","classes","concat","undefined","i","id","setInteracting","renderedComponents","inProgress","component","componentId","showLoader","gjsModel","interactionApiInProgress","expandActionsComponent","model","append","addClass","resetStreamingComponent","attrs","props","cleanedProps","data","rows","series","pagination","error","isMissing","loading","GrapejsCanvasInternal","_ref2","_pages$","json","_ref2$mode","mode","setEditor","performInteraction","downloadTable","_ref2$newDataNotifier","newDataNotifier","_ref2$setHasChanged","setHasChanged","_ref2$isModeChangeFro","isModeChangeFromToggle","_ref2$isTemplateView","isTemplateView","externalCurrentPageId","currentPageId","externalOnPageChange","onPageChange","onRequestPageData","pageContext","normalizedJson","effectiveCurrentPageId","editorRef","editorInstance","pageDataCache","currentPageIdRef","isStreamingRef","modeRef","isSystemUpdateRef","lastJsonRef","isEditorAliveRef","onRequestPageDataRef","rowNavigationContextRef","_useState","isTransitioning","setIsTransitioning","current","notificationHandler","compId","_props$newProps","newProps","_props$newAttributes","newAttributes","pageId","timestamp","Date","now","filteredProps","keys","key","name","parsedNewProps","isActionsComponent","hasValidActionsData","_model$components$at","isAlreadyExpanded","at","currentAttrs","hasRealValue","shouldStopLoading","view","render","handleNavigateToPage","targetPageId","rowContext","navigateToPage","downloadTableWrapper","_x2","_downloadTableWrapper","_callee4","updatedJson","_callee4$","_context4","performInteractionWrapper","_x3","_performInteractionWrapper","_callee5","payload","apiResponse","componentUpdates","_callee5$","_context5","affectedComponents","_ref8","errorMessage","Error","message","finish","destroy","currentMode","init","container","height","plugins","storageManager","richTextEditor","customBadgeLabel","tagName","injectionAttempts","injectStylesEarly","_editor$Canvas","iframeDoc","head","querySelector","createElement","fullCss","innerHTML","setAttribute","appendChild","requestAnimationFrame","checkDirty","_checkDirty","_callee2","stored","newJson","_callee2$","_context2","JSON","stringify","debouncedCheckDirty","timeout","clearTimeout","setTimeout","evt","on","includes","_callee","canvasHead","storeResult","_callee$","_context","_ref4","DomComponents","getType","addType","defaults","cleanup","_json$pages","_currentPage$frames","_editorInstance$curre3","pageNormalizedJson","currentPage","frames","raw","processed","_editorInstance$curre","setComponents","_editorInstance$curre2","domComponents","_domComponents$getWra","allComponents","findType","_comp$view","globalStyles","styles","pageStyles","mergedStyles","cssText","setStyle","_rowNavigationContext","isMultiPage","Boolean","cachedData","_ref5","updatedAttributes","cacheCheckInterval","setInterval","appliedAny","_ref6","clearInterval","_callee3","_callee3$","_context3","shadcnComponents","currentIsStreaming","prevIsStreaming","Fragment","children","ref","opacity","transition","GrapejsCanvas","_pages$2","existingContext","initialPageId"],"sources":["../src/GrapesjsCanvas.tsx"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport React, { useEffect, useRef, useState } from 'react';\n// eslint-disable-next-line import/no-named-as-default\nimport grapesjs, { Component, Editor } from 'grapesjs';\nimport 'grapesjs/dist/css/grapes.min.css';\nimport tailwind from 'grapesjs-tailwind';\n\nimport { TypesToRegister } from './constants';\nimport { toKebabCase } from './helpers';\nimport { tailwindCompiledCss } from './helpers/css';\nimport { datePickerCss } from './helpers/date-picker';\nimport {\n extractPageMetadata,\n getCurrentPage,\n mergeStyles,\n normalizeMultiPageJson,\n} from './helpers/page-utils';\nimport { createGrapesjsShadcnGenericPlugin } from './plugins/grapejs-plugin';\nimport { StyledEditor } from './index.styles';\nimport type { PageAwareProps } from './types/page';\nimport { PageProvider, usePageContext } from './contexts/PageContext';\n\ntype NotificationHandler = (newData: {\n componentId: string;\n newProps: Record<string, any>;\n newAttributes: Record<string, any>;\n}) => boolean;\n\ntype GrapesjsCanvasProps = {\n json: any;\n mode?: 'editor' | 'preview';\n setEditor: (editor: Editor) => void;\n performInteraction: (payload: Record<string, any>) => Promise<Record<string, any> | undefined>;\n downloadTable?: (data: {\n tableId: string;\n title: string;\n limit: number;\n json: any;\n headerMapper?: Record<string, string>;\n }) => Promise<void>;\n newDataNotifier: (notifHandler: NotificationHandler) => void;\n setHasChanged: (hasChanged: boolean) => void;\n isStreaming: boolean;\n isModeChangeFromToggle?: boolean;\n isTemplateView?: boolean;\n} & PageAwareProps;\n\nfunction isEditorCanvasReady(editor: Editor): boolean {\n try {\n const canvas = editor.Canvas;\n\n if (!canvas) {\n return false;\n }\n\n const canvasDoc = canvas.getDocument?.();\n\n if (!canvasDoc) {\n return false;\n }\n\n const canvasBody = canvasDoc.body;\n\n if (!canvasBody) {\n return false;\n }\n\n return true;\n } catch {\n return false;\n }\n}\n\nasync function safeStoreEditor(editor: Editor): Promise<any | null> {\n try {\n const wrapper = editor.getWrapper();\n\n if (!wrapper) {\n return null;\n }\n\n const pages = editor.Pages?.getAll?.() || [];\n\n if (pages.length === 0) {\n return null;\n }\n\n return await editor.store();\n } catch (error) {\n // eslint-disable-next-line no-console\n console.warn('Error during store operation:', error);\n\n return null;\n }\n}\n\nfunction setComponentProperties(editor: Editor, isPreview: boolean, isStreaming: boolean): void {\n if (!editor) {\n return;\n }\n\n function setPropertiesRecursively(comp: Component) {\n if (!comp) {\n return;\n }\n\n const isMutable = !isPreview && !isStreaming;\n\n comp.set({\n editable: isMutable,\n draggable: isMutable,\n droppable: isMutable && comp.getName() !== 'Shadcn-generic',\n selectable: isMutable,\n hoverable: isMutable,\n highlightable: isMutable,\n copyable: false,\n resizable: false,\n removable: isMutable,\n badgable: false,\n });\n\n comp.set('attributes', {\n ...(comp.get('attributes') || {}),\n isEditable: isMutable,\n });\n\n if (isMutable) {\n comp.set('toolbar', [\n { attributes: { class: 'fa fa-arrows' }, command: 'tlb-move' },\n { attributes: { class: 'fa fa-trash' }, command: 'tlb-delete' },\n ]);\n } else {\n comp.set('toolbar', []);\n }\n\n comp.components().forEach(setPropertiesRecursively);\n }\n\n const wrapper = editor.getWrapper();\n const components = wrapper?.find('*') || [];\n\n components.forEach(setPropertiesRecursively);\n\n if (isEditorCanvasReady(editor)) {\n if (isPreview) {\n editor.runCommand('core:preview');\n } else {\n editor.stopCommand('core:preview');\n }\n }\n}\n\nfunction convertStyles(stylesArray: any[]): string {\n return stylesArray\n .map((block) => {\n const selectors = Array.isArray(block.selectors)\n ? block.selectors.join(', ')\n : block.selectors;\n const declarations = Object.entries(block.style)\n .map(([prop, value]) => `${toKebabCase(prop)}: ${value};`)\n .join(' ');\n\n return `${selectors} { ${declarations} }`;\n })\n .join('\\n');\n}\n\nfunction createActionCardConfig(action: any): any {\n const { icon, title, description } = action;\n\n return {\n type: 'shadcn-generic',\n componentName: 'ActionCard',\n badgable: false,\n copyable: false,\n removable: true,\n draggable: true,\n componentProps: {\n icon,\n headerContent: title,\n bodyContent: description,\n },\n };\n}\n\nfunction expandActions(node: any): any {\n if (node.type === 'shadcn-generic' && node.componentName === 'Actions') {\n const actions = node.componentProps?.actions;\n\n if (Array.isArray(actions) && actions.length > 0) {\n return {\n ...node,\n type: 'div',\n classes: ['dashboard-cards', ...(node.classes || [])],\n componentName: undefined,\n componentProps: undefined,\n components: actions.map((action: any, i: number) => ({\n ...createActionCardConfig(action),\n id: `${node.id}--action-card-${i}`,\n })),\n };\n }\n\n return node;\n }\n\n if (Array.isArray(node.components)) {\n return {\n ...node,\n components: node.components.map(expandActions),\n };\n }\n\n return node;\n}\n\nfunction setInteracting(\n renderedComponents: Record<string, Component>,\n components: { componentId: string; showLoader: boolean }[],\n inProgress: boolean,\n) {\n components.forEach((component) => {\n const { componentId, showLoader } = component;\n\n if (!showLoader) {\n return;\n }\n\n const gjsModel = renderedComponents[componentId];\n\n if (gjsModel) {\n gjsModel.set('attributes', {\n ...gjsModel.get('attributes'),\n interactionApiInProgress: inProgress,\n });\n }\n });\n}\n\nfunction expandActionsComponent(model: Component, actions: any[]): void {\n model.components('');\n\n actions.forEach((action: any) => {\n model.append(createActionCardConfig(action));\n });\n\n model.set('type', 'div');\n model.addClass('dashboard-cards');\n model.set('componentName', undefined);\n model.set('componentProps', {});\n}\n\nfunction resetStreamingComponent(comp: Component): void {\n const attrs = comp.get('attributes') || {};\n const props = comp.get('componentProps') || {};\n\n const cleanedProps = { ...props };\n\n delete cleanedProps.bodyContent;\n delete cleanedProps.data;\n delete cleanedProps.rows;\n delete cleanedProps.series;\n delete cleanedProps.pagination;\n delete cleanedProps.error;\n delete cleanedProps.isMissing;\n\n comp.set({\n attributes: {\n ...attrs,\n loading: true,\n error: undefined,\n isMissing: undefined,\n },\n componentProps: cleanedProps,\n });\n}\n\nfunction GrapejsCanvasInternal({\n json,\n mode = 'preview',\n setEditor,\n performInteraction,\n downloadTable,\n newDataNotifier = () => {\n // no op\n },\n setHasChanged = () => {\n // no op\n },\n isStreaming,\n isModeChangeFromToggle = false,\n isTemplateView = false,\n currentPageId: externalCurrentPageId,\n onPageChange: externalOnPageChange, // eslint-disable-line @typescript-eslint/no-unused-vars\n onRequestPageData,\n}: GrapesjsCanvasProps) {\n const pageContext = usePageContext();\n\n const normalizedJson = normalizeMultiPageJson(json);\n const pages = normalizedJson.pages.map(extractPageMetadata);\n const effectiveCurrentPageId =\n externalCurrentPageId || pageContext?.currentPageId || pages[0]?.id || '';\n\n const editorRef = useRef<HTMLDivElement>(null);\n const editorInstance = useRef<Editor | null>(null);\n const renderedComponents = useRef<Record<string, Component>>({});\n const pageDataCache = useRef<Record<string, Record<string, any>>>({});\n const currentPageIdRef = useRef<string>(effectiveCurrentPageId);\n const isStreamingRef = useRef(isStreaming ?? false);\n const modeRef = useRef(mode);\n const isSystemUpdateRef = useRef(false);\n const lastJsonRef = useRef<string>('');\n const isEditorAliveRef = useRef(false);\n const onRequestPageDataRef = useRef(onRequestPageData);\n const rowNavigationContextRef = useRef<Record<string, any> | null>(null);\n const [isTransitioning, setIsTransitioning] = useState(false);\n\n useEffect(() => {\n currentPageIdRef.current = effectiveCurrentPageId;\n }, [effectiveCurrentPageId]);\n\n useEffect(() => {\n isStreamingRef.current = isStreaming ?? false;\n }, [isStreaming ?? false]);\n\n useEffect(() => {\n modeRef.current = mode;\n }, [mode]);\n\n useEffect(() => {\n onRequestPageDataRef.current = onRequestPageData;\n }, [onRequestPageData]);\n\n function notificationHandler(\n props: Parameters<NotificationHandler>[0],\n ): ReturnType<NotificationHandler> {\n if (!props) {\n return true;\n }\n\n const { componentId: compId, newProps = {}, newAttributes = {} } = props;\n\n const model = renderedComponents.current[compId];\n\n if (!model) {\n const pageId = currentPageIdRef.current;\n\n if (pageId) {\n if (!pageDataCache.current[pageId]) {\n pageDataCache.current[pageId] = {};\n }\n\n pageDataCache.current[pageId][compId] = {\n newProps,\n newAttributes,\n timestamp: Date.now(),\n };\n }\n\n return false;\n }\n\n // Filter out complex placeholder objects by setting them to null\n // This ensures placeholder values are properly cleared and don't cause stale data issues\n const filteredProps = { ...newProps };\n\n Object.keys(filteredProps).forEach((key) => {\n const value = filteredProps[key];\n\n if (value && typeof value === 'object' && value.name === '__peak_placeholder') {\n filteredProps[key] = null;\n }\n });\n\n const parsedNewProps = {\n ...filteredProps,\n };\n\n if (filteredProps.pagination) {\n parsedNewProps.pagination = {\n ...(model.get('componentProps').pagination || {}),\n ...filteredProps.pagination,\n };\n }\n\n // Handle Actions component: expand into ActionCards when data arrives via streaming\n const isActionsComponent = model.get('componentName') === 'Actions';\n const hasValidActionsData =\n parsedNewProps.actions &&\n parsedNewProps.actions !== null &&\n Array.isArray(parsedNewProps.actions) &&\n parsedNewProps.actions.length > 0;\n\n if (isActionsComponent && hasValidActionsData) {\n const isAlreadyExpanded =\n model.components().length > 0 &&\n model.components().at(0)?.get('componentName') === 'ActionCard';\n\n if (!isAlreadyExpanded && editorInstance.current && isEditorAliveRef.current) {\n expandActionsComponent(model, parsedNewProps.actions);\n\n return true;\n }\n }\n\n model.set('componentProps', {\n ...model.get('componentProps'),\n ...parsedNewProps,\n });\n\n const currentAttrs = model.get('attributes') || {};\n\n const hasRealValue =\n (parsedNewProps?.bodyContent !== undefined && parsedNewProps?.bodyContent !== null) ||\n (parsedNewProps?.data !== undefined && parsedNewProps?.data !== null) ||\n (parsedNewProps?.rows !== undefined && parsedNewProps?.rows !== null) ||\n (parsedNewProps?.series !== undefined && parsedNewProps?.series !== null);\n\n const shouldStopLoading = hasRealValue || newAttributes?.error || parsedNewProps?.isMissing;\n\n model.set('attributes', {\n ...currentAttrs,\n ...newAttributes,\n ...(shouldStopLoading ? { loading: false } : {}),\n });\n\n if (model.view) {\n model.view.render();\n }\n\n return true;\n }\n\n useEffect(() => {\n newDataNotifier(notificationHandler);\n }, []);\n\n function handleNavigateToPage(targetPageId: string, rowContext?: Record<string, any>) {\n rowNavigationContextRef.current = rowContext ?? null;\n\n if (externalOnPageChange) {\n externalOnPageChange(targetPageId, rowContext);\n }\n\n if (pageContext) {\n pageContext.navigateToPage(targetPageId, rowContext);\n }\n }\n\n async function downloadTableWrapper(data: {\n tableId: string;\n title: string;\n limit: number;\n headerMapper?: Record<string, string>;\n }) {\n if (!downloadTable) {\n return;\n }\n\n let updatedJson = null;\n\n if (editorInstance.current) {\n updatedJson = await safeStoreEditor(editorInstance.current);\n }\n\n await downloadTable({ ...data, json: updatedJson });\n }\n\n async function performInteractionWrapper(payload: Record<string, any>) {\n let updatedJson = null;\n\n if (editorInstance.current) {\n updatedJson = await safeStoreEditor(editorInstance.current);\n }\n\n setInteracting(renderedComponents.current, payload.affectedComponents, true);\n\n try {\n const apiResponse = await performInteraction({\n ...payload,\n json: updatedJson,\n });\n\n const componentUpdates = apiResponse || {};\n\n Object.entries(componentUpdates).forEach(([key, value]) => {\n const model = renderedComponents.current[key];\n\n if (model) {\n model.set('attributes', {\n ...model.get('attributes'),\n error: undefined,\n });\n\n model.set('componentProps', {\n ...model.get('componentProps'),\n ...value,\n error: undefined,\n isMissing: undefined,\n });\n }\n });\n\n return componentUpdates;\n } catch (error) {\n payload.affectedComponents.forEach((componentId: string) => {\n const model = renderedComponents.current[componentId];\n\n if (model) {\n const errorMessage =\n error instanceof Error ? error.message : 'Something went wrong. Please try again.';\n\n model.set('attributes', {\n ...model.get('attributes'),\n error: errorMessage,\n });\n\n model.set('componentProps', {\n ...model.get('componentProps'),\n error: errorMessage,\n isMissing: undefined,\n });\n }\n });\n\n throw error;\n } finally {\n setInteracting(renderedComponents.current, payload.affectedComponents, false);\n }\n }\n\n useEffect(() => {\n if (!editorRef.current) {\n return () => {\n // no op\n };\n }\n\n if (editorInstance.current) {\n editorInstance.current.destroy();\n editorInstance.current = null;\n isEditorAliveRef.current = false;\n }\n\n const currentMode = modeRef.current;\n\n const editor = grapesjs.init({\n container: editorRef.current,\n height: '100%',\n plugins: [\n tailwind,\n createGrapesjsShadcnGenericPlugin(\n modeRef,\n performInteractionWrapper,\n renderedComponents.current,\n setHasChanged,\n isTemplateView,\n isStreamingRef,\n handleNavigateToPage,\n downloadTableWrapper,\n ),\n ],\n storageManager: { type: 'none' },\n richTextEditor: {\n actions: ['bold', 'italic', 'underline', 'strikethrough'],\n },\n canvas: {\n customBadgeLabel: (component) => {\n const tagName = component.get('tagName');\n\n return tagName === 'body' ? '' : tagName || '';\n },\n },\n });\n\n isEditorAliveRef.current = true;\n\n let injectionAttempts = 0;\n\n function injectStylesEarly() {\n const iframeDoc = editor.Canvas?.getDocument?.();\n\n if (iframeDoc && iframeDoc.head) {\n if (!iframeDoc.head.querySelector('[data-grapesjs-styles]')) {\n const style = iframeDoc.createElement('style');\n const fullCss = `\n ${tailwindCompiledCss}\n ${datePickerCss}\n ::-webkit-scrollbar {\n width: 0px;\n height: 0px;\n }\n html, body {\n overflow: auto !important;\n -ms-overflow-style: none; /* IE and Edge */\n scrollbar-width: none; /* Firefox */\n }\n `;\n style.innerHTML = fullCss;\n style.setAttribute('type', 'text/css');\n style.setAttribute('data-grapesjs-styles', 'true');\n iframeDoc.head.appendChild(style);\n }\n } else if (injectionAttempts < 50) {\n injectionAttempts += 1;\n requestAnimationFrame(injectStylesEarly);\n }\n }\n\n requestAnimationFrame(injectStylesEarly);\n\n async function checkDirty() {\n if (isStreamingRef.current || isSystemUpdateRef.current) {\n return;\n }\n\n if (!isEditorAliveRef.current || !editorInstance.current) {\n return;\n }\n\n let stored = null;\n\n stored = await safeStoreEditor(editorInstance.current);\n\n if (!stored) {\n return;\n }\n\n const newJson = JSON.stringify(stored);\n\n if (newJson !== lastJsonRef.current) {\n setHasChanged(true);\n lastJsonRef.current = newJson;\n }\n }\n\n const debouncedCheckDirty = (() => {\n let timeout: NodeJS.Timeout | null = null;\n\n return () => {\n if (timeout) {\n clearTimeout(timeout);\n }\n\n timeout = setTimeout(checkDirty, 200);\n };\n })();\n\n [\n 'component:add',\n 'component:remove',\n 'component:update:content',\n 'style:update',\n 'component:drag:end',\n 'rte:change',\n ].forEach((evt) => {\n editor.on(evt, debouncedCheckDirty);\n });\n\n editor.on('component:update', (model, prop) => {\n if (['attributes', 'componentProps', 'content'].includes(prop)) {\n debouncedCheckDirty();\n }\n });\n\n // Tailwind CSS rules aren't fully added to our component\n // So, adding them from here!\n editor.on('load', async () => {\n const canvasDoc = editor.Canvas.getDocument();\n const canvasHead = canvasDoc.head;\n\n if (!canvasHead.querySelector('[data-grapesjs-styles]')) {\n const style = canvasDoc.createElement('style');\n const fullCss = `\n ${tailwindCompiledCss}\n ${datePickerCss}\n ::-webkit-scrollbar {\n width: 0px;\n height: 0px;\n }\n html, body {\n overflow: auto !important;\n -ms-overflow-style: none; /* IE and Edge */\n scrollbar-width: none; /* Firefox */\n }\n `;\n style.innerHTML = fullCss;\n style.setAttribute('type', 'text/css');\n style.setAttribute('data-grapesjs-styles', 'true');\n canvasHead.appendChild(style);\n }\n\n isSystemUpdateRef.current = true;\n const storeResult = await safeStoreEditor(editor);\n\n if (storeResult) {\n lastJsonRef.current = JSON.stringify(storeResult);\n }\n\n isSystemUpdateRef.current = false;\n\n setComponentProperties(editor, currentMode === 'preview', isStreamingRef.current);\n });\n\n editorInstance.current = editor;\n\n if (setEditor) {\n setEditor(editor);\n }\n\n TypesToRegister.forEach(({ type, tagName }) => {\n if (!editor.DomComponents.getType(type)) {\n editor.DomComponents.addType(type, {\n model: {\n defaults: { tagName },\n },\n view: {},\n });\n }\n });\n\n return function cleanup() {\n editor.destroy();\n isEditorAliveRef.current = false;\n };\n }, []);\n\n useEffect(() => {\n if (json && json.pages?.length > 0) {\n if (!isEditorAliveRef.current || !editorInstance.current) {\n return;\n }\n\n const pageNormalizedJson = normalizeMultiPageJson(json);\n\n const currentPage = getCurrentPage(pageNormalizedJson.pages, effectiveCurrentPageId);\n\n if (!currentPage || !currentPage.frames?.length) {\n return;\n }\n\n isSystemUpdateRef.current = true;\n const raw = currentPage.frames[0].component;\n const processed = expandActions(raw);\n\n try {\n editorInstance.current?.setComponents(processed);\n\n setTimeout(() => {\n if (editorInstance.current && isEditorAliveRef.current) {\n const domComponents = editorInstance.current?.DomComponents;\n\n if (domComponents) {\n const allComponents = domComponents?.getWrapper()?.findType('shadcn-generic');\n allComponents?.forEach((comp: any) => {\n if (comp.get('componentName') === 'Tabs') {\n comp.view?.render();\n }\n });\n }\n }\n }, 100);\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error('Error during component restoration:', error);\n }\n\n const globalStyles = pageNormalizedJson.styles || [];\n const pageStyles = currentPage.styles || [];\n const mergedStyles = mergeStyles(globalStyles, pageStyles);\n const cssText = convertStyles(mergedStyles);\n editorInstance.current?.setStyle(cssText);\n\n if (onRequestPageDataRef.current) {\n const isMultiPage = Boolean(pageNormalizedJson.isMultiPage);\n const pageId = isMultiPage ? currentPage.id : '';\n const rowContext = rowNavigationContextRef.current ?? undefined;\n\n onRequestPageDataRef.current(pageId, [], rowContext);\n rowNavigationContextRef.current = null;\n }\n\n if (editorInstance.current) {\n setComponentProperties(editorInstance.current, mode === 'preview', isStreaming);\n\n setTimeout(() => {\n if (editorInstance.current && isEditorAliveRef.current && mode === 'preview') {\n setComponentProperties(editorInstance.current, true, isStreaming);\n }\n }, 50);\n }\n\n setTimeout(() => {\n if (currentPage && pageDataCache.current[currentPage.id]) {\n const cachedData = pageDataCache.current[currentPage.id];\n\n Object.entries(cachedData).forEach(([componentId, data]) => {\n const model = renderedComponents.current[componentId];\n\n if (model && data) {\n if (data.newProps) {\n model.set('componentProps', {\n ...model.get('componentProps'),\n ...data.newProps,\n });\n }\n\n const updatedAttributes = {\n ...model.get('attributes'),\n ...(data.newAttributes || {}),\n };\n\n model.set('attributes', updatedAttributes);\n\n if (model.view) {\n model.view.render();\n }\n }\n });\n\n delete pageDataCache.current[currentPage.id];\n }\n }, 150);\n\n const cacheCheckInterval = setInterval(() => {\n if (!currentPage || !pageDataCache.current[currentPage.id]) {\n return;\n }\n\n const cachedData = pageDataCache.current[currentPage.id];\n let appliedAny = false;\n\n Object.entries(cachedData).forEach(([componentId, data]) => {\n const model = renderedComponents.current[componentId];\n\n if (model && data) {\n if (data.newProps) {\n model.set('componentProps', {\n ...model.get('componentProps'),\n ...data.newProps,\n });\n }\n\n const updatedAttributes = {\n ...model.get('attributes'),\n ...(data.newAttributes || {}),\n };\n\n model.set('attributes', updatedAttributes);\n\n if (model.view) {\n model.view.render();\n }\n\n appliedAny = true;\n }\n });\n\n if (appliedAny) {\n Object.keys(cachedData).forEach((componentId) => {\n if (renderedComponents.current[componentId]) {\n delete cachedData[componentId];\n }\n });\n\n if (Object.keys(cachedData).length === 0) {\n delete pageDataCache.current[currentPage.id];\n }\n }\n }, 100);\n\n setTimeout(() => {\n clearInterval(cacheCheckInterval);\n }, 5000);\n\n setTimeout(async () => {\n if (editorInstance.current && isEditorAliveRef.current) {\n const storeResult = await safeStoreEditor(editorInstance.current);\n\n if (storeResult) {\n lastJsonRef.current = JSON.stringify(storeResult);\n }\n\n isSystemUpdateRef.current = false;\n }\n }, 100);\n }\n }, [json, effectiveCurrentPageId]);\n\n useEffect(() => {\n const editor = editorInstance.current;\n\n if (!editor || !isEditorAliveRef.current) {\n return;\n }\n\n if (isModeChangeFromToggle) {\n setIsTransitioning(true);\n }\n\n setComponentProperties(\n editorInstance.current as Editor,\n mode === 'preview',\n isStreaming ?? false,\n );\n\n const wrapper = editor.getWrapper();\n const shadcnComponents = wrapper?.find('[data-gjs-type=\"shadcn-generic\"]') || [];\n\n shadcnComponents.forEach((comp: Component) => {\n if (comp.view && typeof comp.view.render === 'function') {\n comp.view.render();\n }\n });\n\n if (isModeChangeFromToggle) {\n requestAnimationFrame(() => {\n setIsTransitioning(false);\n });\n }\n }, [mode, isStreaming ?? false]);\n\n useEffect(() => {\n const editor = editorInstance.current;\n const currentIsStreaming = isStreaming ?? false;\n const prevIsStreaming = isStreamingRef.current;\n\n if (editor && isEditorAliveRef.current && currentIsStreaming && !prevIsStreaming) {\n const wrapper = editor.getWrapper();\n const shadcnComponents = wrapper?.findType('shadcn-generic') || [];\n\n shadcnComponents.forEach((comp: Component) => {\n resetStreamingComponent(comp);\n });\n }\n\n isStreamingRef.current = currentIsStreaming;\n }, [isStreaming]);\n\n return (\n <React.Fragment>\n <StyledEditor />\n <div\n ref={editorRef}\n id=\"grapesjs-editor\"\n style={{\n opacity: isTransitioning ? 0 : 1,\n transition: 'opacity 0.15s ease-in-out',\n }}\n />\n </React.Fragment>\n );\n}\n\nfunction GrapejsCanvas(props: GrapesjsCanvasProps) {\n const existingContext = usePageContext();\n\n if (existingContext) {\n return <GrapejsCanvasInternal {...props} />;\n }\n\n const normalizedJson = normalizeMultiPageJson(props.json);\n const pages = normalizedJson.pages.map(extractPageMetadata);\n const initialPageId = props.currentPageId || pages[0]?.id || '';\n\n return (\n <PageProvider pages={pages} initialPageId={initialPageId} onPageChange={props.onPageChange}>\n <GrapejsCanvasInternal {...props} />\n </PageProvider>\n );\n}\n\nexport default GrapejsCanvas;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"GrapesjsCanvas.js","names":["React","useEffect","useRef","useState","grapesjs","tailwind","TypesToRegister","toKebabCase","tailwindCompiledCss","datePickerCss","extractPageMetadata","getCurrentPage","mergeStyles","normalizeMultiPageJson","createGrapesjsShadcnGenericPlugin","StyledEditor","PageProvider","usePageContext","jsx","_jsx","jsxs","_jsxs","isEditorCanvasReady","editor","canvas","Canvas","canvasDoc","getDocument","canvasBody","body","_unused","safeStoreEditor","_x","_safeStoreEditor","apply","arguments","_asyncToGenerator","_regeneratorRuntime","mark","_callee6","_editor$Pages","wrapper","pages","wrap","_callee6$","_context6","prev","next","getWrapper","abrupt","Pages","getAll","length","store","sent","t0","console","warn","stop","setComponentProperties","isPreview","isStreaming","setPropertiesRecursively","comp","isMutable","set","editable","draggable","droppable","getName","selectable","hoverable","highlightable","copyable","resizable","removable","badgable","_extends","get","isEditable","attributes","command","components","forEach","find","runCommand","stopCommand","convertStyles","stylesArray","map","block","selectors","Array","isArray","join","declarations","Object","entries","style","_ref","prop","value","createActionCardConfig","action","icon","title","description","type","componentName","componentProps","headerContent","bodyContent","expandActions","node","_node$componentProps","actions","classes","concat","undefined","i","id","setInteracting","renderedComponents","inProgress","component","componentId","showLoader","gjsModel","interactionApiInProgress","expandActionsComponent","model","append","addClass","resetStreamingComponent","attrs","props","cleanedProps","data","rows","series","pagination","error","isMissing","loading","GrapejsCanvasInternal","_ref2","_pages$","json","_ref2$mode","mode","setEditor","performInteraction","downloadTable","_ref2$newDataNotifier","newDataNotifier","_ref2$setHasChanged","setHasChanged","_ref2$isModeChangeFro","isModeChangeFromToggle","_ref2$isTemplateView","isTemplateView","externalCurrentPageId","currentPageId","externalOnPageChange","onPageChange","onRequestPageData","pageContext","normalizedJson","effectiveCurrentPageId","editorRef","editorInstance","pageDataCache","currentPageIdRef","isStreamingRef","modeRef","isSystemUpdateRef","lastJsonRef","isEditorAliveRef","onRequestPageDataRef","rowNavigationContextRef","_useState","isTransitioning","setIsTransitioning","current","notificationHandler","compId","_props$newProps","newProps","_props$newAttributes","newAttributes","pageId","timestamp","Date","now","filteredProps","keys","key","name","parsedNewProps","isActionsComponent","hasValidActionsData","_model$components$at","isAlreadyExpanded","at","currentAttrs","hasRealValue","shouldStopLoading","view","render","handleNavigateToPage","targetPageId","rowContext","navigateToPage","downloadTableWrapper","_x2","_downloadTableWrapper","_callee4","updatedJson","_callee4$","_context4","performInteractionWrapper","_x3","_performInteractionWrapper","_callee5","payload","apiResponse","componentUpdates","_callee5$","_context5","affectedComponents","_ref8","errorMessage","Error","message","finish","destroy","currentMode","init","container","height","plugins","storageManager","richTextEditor","customBadgeLabel","tagName","injectionAttempts","injectStylesEarly","_editor$Canvas","iframeDoc","head","querySelector","createElement","fullCss","innerHTML","setAttribute","appendChild","requestAnimationFrame","checkDirty","_checkDirty","_callee2","stored","newJson","_callee2$","_context2","JSON","stringify","debouncedCheckDirty","timeout","clearTimeout","setTimeout","evt","on","includes","_callee","canvasHead","storeResult","_callee$","_context","_ref4","DomComponents","getType","addType","defaults","cleanup","_json$pages","_currentPage$frames","_editorInstance$curre3","pageNormalizedJson","currentPage","frames","raw","processed","_editorInstance$curre","setComponents","_editorInstance$curre2","domComponents","_domComponents$getWra","allComponents","findType","_comp$view","globalStyles","styles","pageStyles","mergedStyles","cssText","setStyle","_rowNavigationContext","isMultiPage","Boolean","cachedData","_ref5","updatedAttributes","cacheCheckInterval","setInterval","appliedAny","_ref6","clearInterval","_callee3","_callee3$","_context3","shadcnComponents","currentIsStreaming","prevIsStreaming","Fragment","children","ref","opacity","transition","GrapejsCanvas","_pages$2","existingContext","initialPageId"],"sources":["../src/GrapesjsCanvas.tsx"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport React, { useEffect, useRef, useState } from 'react';\n// eslint-disable-next-line import/no-named-as-default\nimport grapesjs, { Component, Editor } from 'grapesjs';\nimport 'grapesjs/dist/css/grapes.min.css';\nimport tailwind from 'grapesjs-tailwind';\n\nimport { TypesToRegister } from './constants';\nimport { toKebabCase } from './helpers';\nimport { tailwindCompiledCss } from './helpers/css';\nimport { datePickerCss } from './helpers/date-picker';\nimport {\n extractPageMetadata,\n getCurrentPage,\n mergeStyles,\n normalizeMultiPageJson,\n} from './helpers/page-utils';\nimport { createGrapesjsShadcnGenericPlugin } from './plugins/grapejs-plugin';\nimport { StyledEditor } from './index.styles';\nimport type { PageAwareProps } from './types/page';\nimport { PageProvider, usePageContext } from './contexts/PageContext';\n\ntype NotificationHandler = (newData: {\n componentId: string;\n newProps: Record<string, any>;\n newAttributes: Record<string, any>;\n}) => boolean;\n\ntype GrapesjsCanvasProps = {\n json: any;\n mode?: 'editor' | 'preview';\n setEditor: (editor: Editor) => void;\n performInteraction: (payload: Record<string, any>) => Promise<Record<string, any> | undefined>;\n downloadTable?: (data: {\n tableId: string;\n title: string;\n limit: number;\n json: any;\n headerMapper?: Record<string, string>;\n }) => Promise<void>;\n newDataNotifier: (notifHandler: NotificationHandler) => void;\n setHasChanged: (hasChanged: boolean) => void;\n isStreaming: boolean;\n isModeChangeFromToggle?: boolean;\n isTemplateView?: boolean;\n} & PageAwareProps;\n\nfunction isEditorCanvasReady(editor: Editor): boolean {\n try {\n const canvas = editor.Canvas;\n\n if (!canvas) {\n return false;\n }\n\n const canvasDoc = canvas.getDocument?.();\n\n if (!canvasDoc) {\n return false;\n }\n\n const canvasBody = canvasDoc.body;\n\n if (!canvasBody) {\n return false;\n }\n\n return true;\n } catch {\n return false;\n }\n}\n\nasync function safeStoreEditor(editor: Editor): Promise<any | null> {\n try {\n const wrapper = editor.getWrapper();\n\n if (!wrapper) {\n return null;\n }\n\n const pages = editor.Pages?.getAll?.() || [];\n\n if (pages.length === 0) {\n return null;\n }\n\n return await editor.store();\n } catch (error) {\n // eslint-disable-next-line no-console\n console.warn('Error during store operation:', error);\n\n return null;\n }\n}\n\nfunction setComponentProperties(editor: Editor, isPreview: boolean, isStreaming: boolean): void {\n if (!editor) {\n return;\n }\n\n function setPropertiesRecursively(comp: Component) {\n if (!comp) {\n return;\n }\n\n const isMutable = !isPreview && !isStreaming;\n\n comp.set({\n editable: isMutable,\n draggable: isMutable,\n droppable: isMutable && comp.getName() !== 'Shadcn-generic',\n selectable: isMutable,\n hoverable: isMutable,\n highlightable: isMutable,\n copyable: false,\n resizable: false,\n removable: isMutable,\n badgable: false,\n });\n\n comp.set('attributes', {\n ...(comp.get('attributes') || {}),\n isEditable: isMutable,\n });\n\n if (isMutable) {\n comp.set('toolbar', [\n { attributes: { class: 'fa fa-arrows' }, command: 'tlb-move' },\n { attributes: { class: 'fa fa-trash' }, command: 'tlb-delete' },\n ]);\n } else {\n comp.set('toolbar', []);\n }\n\n comp.components().forEach(setPropertiesRecursively);\n }\n\n const wrapper = editor.getWrapper();\n const components = wrapper?.find('*') || [];\n\n components.forEach(setPropertiesRecursively);\n\n if (isEditorCanvasReady(editor)) {\n if (isPreview) {\n editor.runCommand('core:preview');\n } else {\n editor.stopCommand('core:preview');\n }\n }\n}\n\nfunction convertStyles(stylesArray: any[]): string {\n return stylesArray\n .map((block) => {\n const selectors = Array.isArray(block.selectors)\n ? block.selectors.join(', ')\n : block.selectors;\n const declarations = Object.entries(block.style)\n .map(([prop, value]) => `${toKebabCase(prop)}: ${value};`)\n .join(' ');\n\n return `${selectors} { ${declarations} }`;\n })\n .join('\\n');\n}\n\nfunction createActionCardConfig(action: any): any {\n const { icon, title, description } = action;\n\n return {\n type: 'shadcn-generic',\n componentName: 'ActionCard',\n badgable: false,\n copyable: false,\n removable: true,\n draggable: true,\n componentProps: {\n icon,\n headerContent: title,\n bodyContent: description,\n },\n };\n}\n\nfunction expandActions(node: any): any {\n if (node.type === 'shadcn-generic' && node.componentName === 'Actions') {\n const actions = node.componentProps?.actions;\n\n if (Array.isArray(actions) && actions.length > 0) {\n return {\n ...node,\n type: 'div',\n classes: ['dashboard-cards', ...(node.classes || [])],\n componentName: undefined,\n componentProps: undefined,\n components: actions.map((action: any, i: number) => ({\n ...createActionCardConfig(action),\n id: `${node.id}--action-card-${i}`,\n })),\n };\n }\n\n return node;\n }\n\n if (Array.isArray(node.components)) {\n return {\n ...node,\n components: node.components.map(expandActions),\n };\n }\n\n return node;\n}\n\nfunction setInteracting(\n renderedComponents: Record<string, Component>,\n components: { componentId: string; showLoader: boolean }[],\n inProgress: boolean,\n) {\n components.forEach((component) => {\n const { componentId, showLoader } = component;\n\n if (!showLoader) {\n return;\n }\n\n const gjsModel = renderedComponents[componentId];\n\n if (gjsModel) {\n gjsModel.set('attributes', {\n ...gjsModel.get('attributes'),\n interactionApiInProgress: inProgress,\n });\n }\n });\n}\n\nfunction expandActionsComponent(model: Component, actions: any[]): void {\n model.components('');\n\n actions.forEach((action: any) => {\n model.append(createActionCardConfig(action));\n });\n\n model.set('type', 'div');\n model.addClass('dashboard-cards');\n model.set('componentName', undefined);\n model.set('componentProps', {});\n}\n\nfunction resetStreamingComponent(comp: Component): void {\n const attrs = comp.get('attributes') || {};\n const props = comp.get('componentProps') || {};\n\n const cleanedProps = { ...props };\n\n delete cleanedProps.bodyContent;\n delete cleanedProps.data;\n delete cleanedProps.rows;\n delete cleanedProps.series;\n delete cleanedProps.pagination;\n delete cleanedProps.error;\n delete cleanedProps.isMissing;\n\n comp.set({\n attributes: {\n ...attrs,\n loading: true,\n error: undefined,\n isMissing: undefined,\n },\n componentProps: cleanedProps,\n });\n}\n\nfunction GrapejsCanvasInternal({\n json,\n mode = 'preview',\n setEditor,\n performInteraction,\n downloadTable,\n newDataNotifier = () => {\n // no op\n },\n setHasChanged = () => {\n // no op\n },\n isStreaming,\n isModeChangeFromToggle = false,\n isTemplateView = false,\n currentPageId: externalCurrentPageId,\n onPageChange: externalOnPageChange, // eslint-disable-line @typescript-eslint/no-unused-vars\n onRequestPageData,\n}: GrapesjsCanvasProps) {\n const pageContext = usePageContext();\n\n const normalizedJson = normalizeMultiPageJson(json);\n const pages = normalizedJson.pages.map(extractPageMetadata);\n const effectiveCurrentPageId =\n externalCurrentPageId || pageContext?.currentPageId || pages[0]?.id || '';\n\n const editorRef = useRef<HTMLDivElement>(null);\n const editorInstance = useRef<Editor | null>(null);\n const renderedComponents = useRef<Record<string, Component>>({});\n const pageDataCache = useRef<Record<string, Record<string, any>>>({});\n const currentPageIdRef = useRef<string>(effectiveCurrentPageId);\n const isStreamingRef = useRef(isStreaming ?? false);\n const modeRef = useRef(mode);\n const isSystemUpdateRef = useRef(false);\n const lastJsonRef = useRef<string>('');\n const isEditorAliveRef = useRef(false);\n const onRequestPageDataRef = useRef(onRequestPageData);\n const rowNavigationContextRef = useRef<Record<string, any> | null>(null);\n const [isTransitioning, setIsTransitioning] = useState(false);\n\n useEffect(() => {\n currentPageIdRef.current = effectiveCurrentPageId;\n }, [effectiveCurrentPageId]);\n\n useEffect(() => {\n isStreamingRef.current = isStreaming ?? false;\n }, [isStreaming ?? false]);\n\n useEffect(() => {\n modeRef.current = mode;\n }, [mode]);\n\n useEffect(() => {\n onRequestPageDataRef.current = onRequestPageData;\n }, [onRequestPageData]);\n\n function notificationHandler(\n props: Parameters<NotificationHandler>[0],\n ): ReturnType<NotificationHandler> {\n if (!props) {\n return true;\n }\n\n const { componentId: compId, newProps = {}, newAttributes = {} } = props;\n\n const model = renderedComponents.current[compId];\n\n if (!model) {\n const pageId = currentPageIdRef.current;\n\n if (pageId) {\n if (!pageDataCache.current[pageId]) {\n pageDataCache.current[pageId] = {};\n }\n\n pageDataCache.current[pageId][compId] = {\n newProps,\n newAttributes,\n timestamp: Date.now(),\n };\n }\n\n return false;\n }\n\n // Filter out complex placeholder objects by setting them to null\n // This ensures placeholder values are properly cleared and don't cause stale data issues\n const filteredProps = { ...newProps };\n\n Object.keys(filteredProps).forEach((key) => {\n const value = filteredProps[key];\n\n if (value && typeof value === 'object' && value.name === '__peak_placeholder') {\n filteredProps[key] = null;\n }\n });\n\n const parsedNewProps = {\n ...filteredProps,\n };\n\n if (filteredProps.pagination) {\n parsedNewProps.pagination = {\n ...(model.get('componentProps').pagination || {}),\n ...filteredProps.pagination,\n };\n }\n\n // Handle Actions component: expand into ActionCards when data arrives via streaming\n const isActionsComponent = model.get('componentName') === 'Actions';\n const hasValidActionsData =\n parsedNewProps.actions &&\n parsedNewProps.actions !== null &&\n Array.isArray(parsedNewProps.actions) &&\n parsedNewProps.actions.length > 0;\n\n if (isActionsComponent && hasValidActionsData) {\n const isAlreadyExpanded =\n model.components().length > 0 &&\n model.components().at(0)?.get('componentName') === 'ActionCard';\n\n if (!isAlreadyExpanded && editorInstance.current && isEditorAliveRef.current) {\n expandActionsComponent(model, parsedNewProps.actions);\n\n return true;\n }\n }\n\n model.set('componentProps', {\n ...model.get('componentProps'),\n ...parsedNewProps,\n // headerMapper: model.get('componentProps')?.headerMapper || parsedNewProps.headerMapper,\n });\n\n const currentAttrs = model.get('attributes') || {};\n\n const hasRealValue =\n (parsedNewProps?.bodyContent !== undefined && parsedNewProps?.bodyContent !== null) ||\n (parsedNewProps?.data !== undefined && parsedNewProps?.data !== null) ||\n (parsedNewProps?.rows !== undefined && parsedNewProps?.rows !== null) ||\n (parsedNewProps?.series !== undefined && parsedNewProps?.series !== null);\n\n const shouldStopLoading = hasRealValue || newAttributes?.error || parsedNewProps?.isMissing;\n\n model.set('attributes', {\n ...currentAttrs,\n ...newAttributes,\n ...(shouldStopLoading ? { loading: false } : {}),\n });\n\n if (model.view) {\n model.view.render();\n }\n\n return true;\n }\n\n useEffect(() => {\n newDataNotifier(notificationHandler);\n }, []);\n\n function handleNavigateToPage(targetPageId: string, rowContext?: Record<string, any>) {\n rowNavigationContextRef.current = rowContext ?? null;\n\n if (externalOnPageChange) {\n externalOnPageChange(targetPageId, rowContext);\n }\n\n if (pageContext) {\n pageContext.navigateToPage(targetPageId, rowContext);\n }\n }\n\n async function downloadTableWrapper(data: {\n tableId: string;\n title: string;\n limit: number;\n headerMapper?: Record<string, string>;\n }) {\n if (!downloadTable) {\n return;\n }\n\n let updatedJson = null;\n\n if (editorInstance.current) {\n updatedJson = await safeStoreEditor(editorInstance.current);\n }\n\n await downloadTable({ ...data, json: updatedJson });\n }\n\n async function performInteractionWrapper(payload: Record<string, any>) {\n let updatedJson = null;\n\n if (editorInstance.current) {\n updatedJson = await safeStoreEditor(editorInstance.current);\n }\n\n setInteracting(renderedComponents.current, payload.affectedComponents, true);\n\n try {\n const apiResponse = await performInteraction({\n ...payload,\n json: updatedJson,\n });\n\n const componentUpdates = apiResponse || {};\n\n Object.entries(componentUpdates).forEach(([key, value]) => {\n const model = renderedComponents.current[key];\n\n if (model) {\n model.set('attributes', {\n ...model.get('attributes'),\n error: undefined,\n });\n\n model.set('componentProps', {\n ...model.get('componentProps'),\n ...value,\n error: undefined,\n isMissing: undefined,\n });\n }\n });\n\n return componentUpdates;\n } catch (error) {\n payload.affectedComponents.forEach((componentId: string) => {\n const model = renderedComponents.current[componentId];\n\n if (model) {\n const errorMessage =\n error instanceof Error ? error.message : 'Something went wrong. Please try again.';\n\n model.set('attributes', {\n ...model.get('attributes'),\n error: errorMessage,\n });\n\n model.set('componentProps', {\n ...model.get('componentProps'),\n error: errorMessage,\n isMissing: undefined,\n });\n }\n });\n\n throw error;\n } finally {\n setInteracting(renderedComponents.current, payload.affectedComponents, false);\n }\n }\n\n useEffect(() => {\n if (!editorRef.current) {\n return () => {\n // no op\n };\n }\n\n if (editorInstance.current) {\n editorInstance.current.destroy();\n editorInstance.current = null;\n isEditorAliveRef.current = false;\n }\n\n const currentMode = modeRef.current;\n\n const editor = grapesjs.init({\n container: editorRef.current,\n height: '100%',\n plugins: [\n tailwind,\n createGrapesjsShadcnGenericPlugin(\n modeRef,\n performInteractionWrapper,\n renderedComponents.current,\n setHasChanged,\n isTemplateView,\n isStreamingRef,\n handleNavigateToPage,\n downloadTableWrapper,\n ),\n ],\n storageManager: { type: 'none' },\n richTextEditor: {\n actions: ['bold', 'italic', 'underline', 'strikethrough'],\n },\n canvas: {\n customBadgeLabel: (component) => {\n const tagName = component.get('tagName');\n\n return tagName === 'body' ? '' : tagName || '';\n },\n },\n });\n\n isEditorAliveRef.current = true;\n\n let injectionAttempts = 0;\n\n function injectStylesEarly() {\n const iframeDoc = editor.Canvas?.getDocument?.();\n\n if (iframeDoc && iframeDoc.head) {\n if (!iframeDoc.head.querySelector('[data-grapesjs-styles]')) {\n const style = iframeDoc.createElement('style');\n const fullCss = `\n ${tailwindCompiledCss}\n ${datePickerCss}\n ::-webkit-scrollbar {\n width: 0px;\n height: 0px;\n }\n html, body {\n overflow: auto !important;\n -ms-overflow-style: none; /* IE and Edge */\n scrollbar-width: none; /* Firefox */\n }\n `;\n style.innerHTML = fullCss;\n style.setAttribute('type', 'text/css');\n style.setAttribute('data-grapesjs-styles', 'true');\n iframeDoc.head.appendChild(style);\n }\n } else if (injectionAttempts < 50) {\n injectionAttempts += 1;\n requestAnimationFrame(injectStylesEarly);\n }\n }\n\n requestAnimationFrame(injectStylesEarly);\n\n async function checkDirty() {\n if (isStreamingRef.current || isSystemUpdateRef.current) {\n return;\n }\n\n if (!isEditorAliveRef.current || !editorInstance.current) {\n return;\n }\n\n let stored = null;\n\n stored = await safeStoreEditor(editorInstance.current);\n\n if (!stored) {\n return;\n }\n\n const newJson = JSON.stringify(stored);\n\n if (newJson !== lastJsonRef.current) {\n setHasChanged(true);\n lastJsonRef.current = newJson;\n }\n }\n\n const debouncedCheckDirty = (() => {\n let timeout: NodeJS.Timeout | null = null;\n\n return () => {\n if (timeout) {\n clearTimeout(timeout);\n }\n\n timeout = setTimeout(checkDirty, 200);\n };\n })();\n\n [\n 'component:add',\n 'component:remove',\n 'component:update:content',\n 'style:update',\n 'component:drag:end',\n 'rte:change',\n ].forEach((evt) => {\n editor.on(evt, debouncedCheckDirty);\n });\n\n editor.on('component:update', (model, prop) => {\n if (['attributes', 'componentProps', 'content'].includes(prop)) {\n debouncedCheckDirty();\n }\n });\n\n // Tailwind CSS rules aren't fully added to our component\n // So, adding them from here!\n editor.on('load', async () => {\n const canvasDoc = editor.Canvas.getDocument();\n const canvasHead = canvasDoc.head;\n\n if (!canvasHead.querySelector('[data-grapesjs-styles]')) {\n const style = canvasDoc.createElement('style');\n const fullCss = `\n ${tailwindCompiledCss}\n ${datePickerCss}\n ::-webkit-scrollbar {\n width: 0px;\n height: 0px;\n }\n html, body {\n overflow: auto !important;\n -ms-overflow-style: none; /* IE and Edge */\n scrollbar-width: none; /* Firefox */\n }\n `;\n style.innerHTML = fullCss;\n style.setAttribute('type', 'text/css');\n style.setAttribute('data-grapesjs-styles', 'true');\n canvasHead.appendChild(style);\n }\n\n isSystemUpdateRef.current = true;\n const storeResult = await safeStoreEditor(editor);\n\n if (storeResult) {\n lastJsonRef.current = JSON.stringify(storeResult);\n }\n\n isSystemUpdateRef.current = false;\n\n setComponentProperties(editor, currentMode === 'preview', isStreamingRef.current);\n });\n\n editorInstance.current = editor;\n\n if (setEditor) {\n setEditor(editor);\n }\n\n TypesToRegister.forEach(({ type, tagName }) => {\n if (!editor.DomComponents.getType(type)) {\n editor.DomComponents.addType(type, {\n model: {\n defaults: { tagName },\n },\n view: {},\n });\n }\n });\n\n return function cleanup() {\n editor.destroy();\n isEditorAliveRef.current = false;\n };\n }, []);\n\n useEffect(() => {\n if (json && json.pages?.length > 0) {\n if (!isEditorAliveRef.current || !editorInstance.current) {\n return;\n }\n\n const pageNormalizedJson = normalizeMultiPageJson(json);\n\n const currentPage = getCurrentPage(pageNormalizedJson.pages, effectiveCurrentPageId);\n\n if (!currentPage || !currentPage.frames?.length) {\n return;\n }\n\n isSystemUpdateRef.current = true;\n const raw = currentPage.frames[0].component;\n const processed = expandActions(raw);\n\n try {\n editorInstance.current?.setComponents(processed);\n\n setTimeout(() => {\n if (editorInstance.current && isEditorAliveRef.current) {\n const domComponents = editorInstance.current?.DomComponents;\n\n if (domComponents) {\n const allComponents = domComponents?.getWrapper()?.findType('shadcn-generic');\n allComponents?.forEach((comp: any) => {\n if (comp.get('componentName') === 'Tabs') {\n comp.view?.render();\n }\n });\n }\n }\n }, 100);\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error('Error during component restoration:', error);\n }\n\n const globalStyles = pageNormalizedJson.styles || [];\n const pageStyles = currentPage.styles || [];\n const mergedStyles = mergeStyles(globalStyles, pageStyles);\n const cssText = convertStyles(mergedStyles);\n editorInstance.current?.setStyle(cssText);\n\n if (onRequestPageDataRef.current) {\n const isMultiPage = Boolean(pageNormalizedJson.isMultiPage);\n const pageId = isMultiPage ? currentPage.id : '';\n const rowContext = rowNavigationContextRef.current ?? undefined;\n\n onRequestPageDataRef.current(pageId, [], rowContext);\n rowNavigationContextRef.current = null;\n }\n\n if (editorInstance.current) {\n setComponentProperties(editorInstance.current, mode === 'preview', isStreaming);\n\n setTimeout(() => {\n if (editorInstance.current && isEditorAliveRef.current && mode === 'preview') {\n setComponentProperties(editorInstance.current, true, isStreaming);\n }\n }, 50);\n }\n\n setTimeout(() => {\n if (currentPage && pageDataCache.current[currentPage.id]) {\n const cachedData = pageDataCache.current[currentPage.id];\n\n Object.entries(cachedData).forEach(([componentId, data]) => {\n const model = renderedComponents.current[componentId];\n\n if (model && data) {\n if (data.newProps) {\n model.set('componentProps', {\n ...model.get('componentProps'),\n ...data.newProps,\n });\n }\n\n const updatedAttributes = {\n ...model.get('attributes'),\n ...(data.newAttributes || {}),\n };\n\n model.set('attributes', updatedAttributes);\n\n if (model.view) {\n model.view.render();\n }\n }\n });\n\n delete pageDataCache.current[currentPage.id];\n }\n }, 150);\n\n const cacheCheckInterval = setInterval(() => {\n if (!currentPage || !pageDataCache.current[currentPage.id]) {\n return;\n }\n\n const cachedData = pageDataCache.current[currentPage.id];\n let appliedAny = false;\n\n Object.entries(cachedData).forEach(([componentId, data]) => {\n const model = renderedComponents.current[componentId];\n\n if (model && data) {\n if (data.newProps) {\n model.set('componentProps', {\n ...model.get('componentProps'),\n ...data.newProps,\n });\n }\n\n const updatedAttributes = {\n ...model.get('attributes'),\n ...(data.newAttributes || {}),\n };\n\n model.set('attributes', updatedAttributes);\n\n if (model.view) {\n model.view.render();\n }\n\n appliedAny = true;\n }\n });\n\n if (appliedAny) {\n Object.keys(cachedData).forEach((componentId) => {\n if (renderedComponents.current[componentId]) {\n delete cachedData[componentId];\n }\n });\n\n if (Object.keys(cachedData).length === 0) {\n delete pageDataCache.current[currentPage.id];\n }\n }\n }, 100);\n\n setTimeout(() => {\n clearInterval(cacheCheckInterval);\n }, 5000);\n\n setTimeout(async () => {\n if (editorInstance.current && isEditorAliveRef.current) {\n const storeResult = await safeStoreEditor(editorInstance.current);\n\n if (storeResult) {\n lastJsonRef.current = JSON.stringify(storeResult);\n }\n\n isSystemUpdateRef.current = false;\n }\n }, 100);\n }\n }, [json, effectiveCurrentPageId]);\n\n useEffect(() => {\n const editor = editorInstance.current;\n\n if (!editor || !isEditorAliveRef.current) {\n return;\n }\n\n if (isModeChangeFromToggle) {\n setIsTransitioning(true);\n }\n\n setComponentProperties(\n editorInstance.current as Editor,\n mode === 'preview',\n isStreaming ?? false,\n );\n\n const wrapper = editor.getWrapper();\n const shadcnComponents = wrapper?.find('[data-gjs-type=\"shadcn-generic\"]') || [];\n\n shadcnComponents.forEach((comp: Component) => {\n if (comp.view && typeof comp.view.render === 'function') {\n comp.view.render();\n }\n });\n\n if (isModeChangeFromToggle) {\n requestAnimationFrame(() => {\n setIsTransitioning(false);\n });\n }\n }, [mode, isStreaming ?? false]);\n\n useEffect(() => {\n const editor = editorInstance.current;\n const currentIsStreaming = isStreaming ?? false;\n const prevIsStreaming = isStreamingRef.current;\n\n if (editor && isEditorAliveRef.current && currentIsStreaming && !prevIsStreaming) {\n const wrapper = editor.getWrapper();\n const shadcnComponents = wrapper?.findType('shadcn-generic') || [];\n\n shadcnComponents.forEach((comp: Component) => {\n resetStreamingComponent(comp);\n });\n }\n\n isStreamingRef.current = currentIsStreaming;\n }, [isStreaming]);\n\n return (\n <React.Fragment>\n <StyledEditor />\n <div\n ref={editorRef}\n id=\"grapesjs-editor\"\n style={{\n opacity: isTransitioning ? 0 : 1,\n transition: 'opacity 0.15s ease-in-out',\n }}\n />\n </React.Fragment>\n );\n}\n\nfunction GrapejsCanvas(props: GrapesjsCanvasProps) {\n const existingContext = usePageContext();\n\n if (existingContext) {\n return <GrapejsCanvasInternal {...props} />;\n }\n\n const normalizedJson = normalizeMultiPageJson(props.json);\n const pages = normalizedJson.pages.map(extractPageMetadata);\n const initialPageId = props.currentPageId || pages[0]?.id || '';\n\n return (\n <PageProvider pages={pages} initialPageId={initialPageId} onPageChange={props.onPageChange}>\n <GrapejsCanvasInternal {...props} />\n </PageProvider>\n );\n}\n\nexport default GrapejsCanvas;\n"],"mappings":"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","ignoreList":[]}
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@peak-ai/canvas",
3
3
  "author": "squad-builder-experience",
4
4
  "license": "UNLICENSED",
5
- "version": "1.6.7",
5
+ "version": "1.6.9",
6
6
  "description": "",
7
7
  "dependencies": {
8
8
  "@emotion/react": "^11.11.4",
@@ -28,6 +28,7 @@ export type DataTableProps = {
28
28
  onPageChange?: (pageNumber: number, pageSize: number) => void;
29
29
  onSort?: (column: string, direction: SortDirection) => void;
30
30
  sortConfig?: Record<string, SortDirection>;
31
+ sortable?: boolean;
31
32
  otherProps?: Record<string, any>;
32
33
  height?: string | number;
33
34
  decimalPrecision?: number;
@@ -40,5 +41,5 @@ export type DataTableProps = {
40
41
  title?: string;
41
42
  onDownload?: (limit: number) => Promise<void>;
42
43
  };
43
- export declare function DataTable({ data, headerMapper, className, actions, isEditable, pagination, isLoading, onRowAction, onPageChange, onSort, sortConfig, otherProps, height, decimalPrecision, columnWithChipClass, chipStylesMapping, navigateToPage, isBulkSelectionEnabled, selectedIndices, setSelectedIndices, title, onDownload, }: DataTableProps): import("react/jsx-runtime").JSX.Element;
44
+ export declare function DataTable({ data, headerMapper, className, actions, isEditable, pagination, isLoading, onRowAction, onPageChange, onSort, sortConfig, sortable: sortableGlobal, otherProps, height, decimalPrecision, columnWithChipClass, chipStylesMapping, navigateToPage, isBulkSelectionEnabled, selectedIndices, setSelectedIndices, title, onDownload, }: DataTableProps): import("react/jsx-runtime").JSX.Element;
44
45
  export {};
@@ -7,10 +7,10 @@ if(value===null||value===undefined){return""}var str=String(value);return str.tr
7
7
  * Generates a stable hash based on unique value sets per column.
8
8
  * This hash is order-independent - it only changes when the set of unique values changes,
9
9
  * not when rows are reordered (e.g., during sorting).
10
- */function getUniqueValuesHash(data,columnWithChipClass){if(!Array.isArray(data)||data.length===0){return""}var availableKeys=Object.keys(data[0]||{});var hashParts={};Object.keys(columnWithChipClass).forEach(function(columnKey){if(!availableKeys.includes(columnKey)){return}var chipMode=getChipMode(columnWithChipClass,columnKey);if(chipMode==="useRandom"){var uniqueNormalizedValues=new Set;data.forEach(function(row){var value=row[columnKey];var normalizedKey=normalizeValue(value);if(normalizedKey){uniqueNormalizedValues.add(normalizedKey)}});var sortedUniqueValues=Array.from(uniqueNormalizedValues).sort();hashParts[columnKey]=sortedUniqueValues}});return JSON.stringify(hashParts)}export function DataTable(_ref){var _ref2,_pagination$values$pa,_pagination$values,_ref3,_pagination$values$pa2,_pagination$values2,_pagination$totalCoun,_pagination$totalCoun2;var _ref$data=_ref.data,data=_ref$data===void 0?[]:_ref$data,_ref$headerMapper=_ref.headerMapper,headerMapper=_ref$headerMapper===void 0?{}:_ref$headerMapper,_ref$className=_ref.className,className=_ref$className===void 0?"":_ref$className,_ref$actions=_ref.actions,actions=_ref$actions===void 0?[]:_ref$actions,_ref$isEditable=_ref.isEditable,isEditable=_ref$isEditable===void 0?false:_ref$isEditable,pagination=_ref.pagination,_ref$isLoading=_ref.isLoading,isLoading=_ref$isLoading===void 0?false:_ref$isLoading,onRowAction=_ref.onRowAction,onPageChange=_ref.onPageChange,onSort=_ref.onSort,sortConfig=_ref.sortConfig,_ref$otherProps=_ref.otherProps,otherProps=_ref$otherProps===void 0?{}:_ref$otherProps,height=_ref.height,_ref$decimalPrecision=_ref.decimalPrecision,decimalPrecision=_ref$decimalPrecision===void 0?2:_ref$decimalPrecision,_ref$columnWithChipCl=_ref.columnWithChipClass,columnWithChipClass=_ref$columnWithChipCl===void 0?{}:_ref$columnWithChipCl,_ref$chipStylesMappin=_ref.chipStylesMapping,chipStylesMapping=_ref$chipStylesMappin===void 0?{}:_ref$chipStylesMappin,navigateToPage=_ref.navigateToPage,_ref$isBulkSelectionE=_ref.isBulkSelectionEnabled,isBulkSelectionEnabled=_ref$isBulkSelectionE===void 0?false:_ref$isBulkSelectionE,_ref$selectedIndices=_ref.selectedIndices,selectedIndices=_ref$selectedIndices===void 0?[]:_ref$selectedIndices,setSelectedIndices=_ref.setSelectedIndices,title=_ref.title,onDownload=_ref.onDownload;if(!data||data.length===0){return/*#__PURE__*/_jsx(Fragment,{children:/*#__PURE__*/_jsx("div",{className:"flex flex-col overflow-hidden",children:/*#__PURE__*/_jsx("div",{"data-slot":"table-container",className:"aspect-auto w-full",style:{height:"auto",minHeight:"180px"},children:isLoading?/*#__PURE__*/_jsx(TableLoader,{}):renderNoDataFallback()})})})}var _useState=useState(null),activeSortColumn=_useState[0],setActiveSortColumn=_useState[1];var _useState2=useState({}),sortDirections=_useState2[0],setSortDirections=_useState2[1];var _useState3=useState(null),activeRowIndex=_useState3[0],setActiveRowIndex=_useState3[1];var _useState4=useState(null),activeAction=_useState4[0],setActiveAction=_useState4[1];var _useState5=useState(false),isFormSubmitting=_useState5[0],setIsFormSubmitting=_useState5[1];var _useState6=useState(null),loadingActionKey=_useState6[0],setLoadingActionKey=_useState6[1];var _useState7=useState(Number((_ref2=(_pagination$values$pa=pagination==null||(_pagination$values=pagination.values)==null?void 0:_pagination$values.pageNumber)!=null?_pagination$values$pa:pagination==null?void 0:pagination.initialPage)!=null?_ref2:1)),pageNumber=_useState7[0],setPageNumber=_useState7[1];var _useState8=useState(Number((_ref3=(_pagination$values$pa2=pagination==null||(_pagination$values2=pagination.values)==null?void 0:_pagination$values2.pageSize)!=null?_pagination$values$pa2:pagination==null?void 0:pagination.initialPageSize)!=null?_ref3:10)),pageSize=_useState8[0],setPageSize=_useState8[1];var _useState9=useState(Math.ceil(((pagination==null?void 0:pagination.totalCount)||0)/pageSize)||1),totalPages=_useState9[0],setTotalPages=_useState9[1];var _useState10=useState({}),chipColorMap=_useState10[0],setChipColorMap=_useState10[1];var _useState11=useState(null),openDropdownIndex=_useState11[0],setOpenDropdownIndex=_useState11[1];var prevDataHashRef=useRef("");useEffect(function(){var _ref4,_pagination$values$pa3,_pagination$values3,_ref5,_pagination$values$pa4,_pagination$values4;setPageNumber(Number((_ref4=(_pagination$values$pa3=pagination==null||(_pagination$values3=pagination.values)==null?void 0:_pagination$values3.pageNumber)!=null?_pagination$values$pa3:pagination==null?void 0:pagination.initialPage)!=null?_ref4:1));setPageSize(Number((_ref5=(_pagination$values$pa4=pagination==null||(_pagination$values4=pagination.values)==null?void 0:_pagination$values4.pageSize)!=null?_pagination$values$pa4:pagination==null?void 0:pagination.initialPageSize)!=null?_ref5:25))},[pagination]);useEffect(function(){setTotalPages(Math.ceil(((pagination==null?void 0:pagination.totalCount)||0)/pageSize)||1)},[pagination==null?void 0:pagination.totalCount,pageSize]);useEffect(function(){if(sortConfig){setSortDirections(sortConfig);var first=Object.keys(sortConfig)[0];if(first){setActiveSortColumn(first)}}},[sortConfig]);useEffect(function(){if(sortConfig!=null&&sortConfig.sortColumn||sortConfig!=null&&sortConfig.sortDirection){sortConfig.sortColumn=null;sortConfig.sortDirection=null}setActiveSortColumn(null);setSortDirections({})},[]);var computedColorMap=useMemo(function(){if(!Array.isArray(data)||data.length===0){return{}}// Get available column keys from first row
10
+ */function getUniqueValuesHash(data,columnWithChipClass){if(!Array.isArray(data)||data.length===0){return""}var availableKeys=Object.keys(data[0]||{});var hashParts={};Object.keys(columnWithChipClass).forEach(function(columnKey){if(!availableKeys.includes(columnKey)){return}var chipMode=getChipMode(columnWithChipClass,columnKey);if(chipMode==="useRandom"){var uniqueNormalizedValues=new Set;data.forEach(function(row){var value=row[columnKey];var normalizedKey=normalizeValue(value);if(normalizedKey){uniqueNormalizedValues.add(normalizedKey)}});var sortedUniqueValues=Array.from(uniqueNormalizedValues).sort();hashParts[columnKey]=sortedUniqueValues}});return JSON.stringify(hashParts)}export function DataTable(_ref){var _ref2,_pagination$values$pa,_pagination$values,_ref3,_pagination$values$pa2,_pagination$values2,_pagination$totalCoun,_pagination$totalCoun2;var _ref$data=_ref.data,data=_ref$data===void 0?[]:_ref$data,_ref$headerMapper=_ref.headerMapper,headerMapper=_ref$headerMapper===void 0?{}:_ref$headerMapper,_ref$className=_ref.className,className=_ref$className===void 0?"":_ref$className,_ref$actions=_ref.actions,actions=_ref$actions===void 0?[]:_ref$actions,_ref$isEditable=_ref.isEditable,isEditable=_ref$isEditable===void 0?false:_ref$isEditable,pagination=_ref.pagination,_ref$isLoading=_ref.isLoading,isLoading=_ref$isLoading===void 0?false:_ref$isLoading,onRowAction=_ref.onRowAction,onPageChange=_ref.onPageChange,onSort=_ref.onSort,sortConfig=_ref.sortConfig,_ref$sortable=_ref.sortable,sortableGlobal=_ref$sortable===void 0?true:_ref$sortable,_ref$otherProps=_ref.otherProps,otherProps=_ref$otherProps===void 0?{}:_ref$otherProps,height=_ref.height,_ref$decimalPrecision=_ref.decimalPrecision,decimalPrecision=_ref$decimalPrecision===void 0?2:_ref$decimalPrecision,_ref$columnWithChipCl=_ref.columnWithChipClass,columnWithChipClass=_ref$columnWithChipCl===void 0?{}:_ref$columnWithChipCl,_ref$chipStylesMappin=_ref.chipStylesMapping,chipStylesMapping=_ref$chipStylesMappin===void 0?{}:_ref$chipStylesMappin,navigateToPage=_ref.navigateToPage,_ref$isBulkSelectionE=_ref.isBulkSelectionEnabled,isBulkSelectionEnabled=_ref$isBulkSelectionE===void 0?false:_ref$isBulkSelectionE,_ref$selectedIndices=_ref.selectedIndices,selectedIndices=_ref$selectedIndices===void 0?[]:_ref$selectedIndices,setSelectedIndices=_ref.setSelectedIndices,title=_ref.title,onDownload=_ref.onDownload;if(!data||data.length===0){return/*#__PURE__*/_jsx(Fragment,{children:/*#__PURE__*/_jsx("div",{className:"flex flex-col overflow-hidden",children:/*#__PURE__*/_jsx("div",{"data-slot":"table-container",className:"aspect-auto w-full",style:{height:"auto",minHeight:"180px"},children:isLoading?/*#__PURE__*/_jsx(TableLoader,{}):renderNoDataFallback()})})})}var _useState=useState(null),activeSortColumn=_useState[0],setActiveSortColumn=_useState[1];var _useState2=useState({}),sortDirections=_useState2[0],setSortDirections=_useState2[1];var _useState3=useState(null),activeRowIndex=_useState3[0],setActiveRowIndex=_useState3[1];var _useState4=useState(null),activeAction=_useState4[0],setActiveAction=_useState4[1];var _useState5=useState(false),isFormSubmitting=_useState5[0],setIsFormSubmitting=_useState5[1];var _useState6=useState(null),loadingActionKey=_useState6[0],setLoadingActionKey=_useState6[1];var _useState7=useState(Number((_ref2=(_pagination$values$pa=pagination==null||(_pagination$values=pagination.values)==null?void 0:_pagination$values.pageNumber)!=null?_pagination$values$pa:pagination==null?void 0:pagination.initialPage)!=null?_ref2:1)),pageNumber=_useState7[0],setPageNumber=_useState7[1];var _useState8=useState(Number((_ref3=(_pagination$values$pa2=pagination==null||(_pagination$values2=pagination.values)==null?void 0:_pagination$values2.pageSize)!=null?_pagination$values$pa2:pagination==null?void 0:pagination.initialPageSize)!=null?_ref3:10)),pageSize=_useState8[0],setPageSize=_useState8[1];var _useState9=useState(Math.ceil(((pagination==null?void 0:pagination.totalCount)||0)/pageSize)||1),totalPages=_useState9[0],setTotalPages=_useState9[1];var _useState10=useState({}),chipColorMap=_useState10[0],setChipColorMap=_useState10[1];var _useState11=useState(null),openDropdownIndex=_useState11[0],setOpenDropdownIndex=_useState11[1];var prevDataHashRef=useRef("");useEffect(function(){var _ref4,_pagination$values$pa3,_pagination$values3,_ref5,_pagination$values$pa4,_pagination$values4;setPageNumber(Number((_ref4=(_pagination$values$pa3=pagination==null||(_pagination$values3=pagination.values)==null?void 0:_pagination$values3.pageNumber)!=null?_pagination$values$pa3:pagination==null?void 0:pagination.initialPage)!=null?_ref4:1));setPageSize(Number((_ref5=(_pagination$values$pa4=pagination==null||(_pagination$values4=pagination.values)==null?void 0:_pagination$values4.pageSize)!=null?_pagination$values$pa4:pagination==null?void 0:pagination.initialPageSize)!=null?_ref5:25))},[pagination]);useEffect(function(){setTotalPages(Math.ceil(((pagination==null?void 0:pagination.totalCount)||0)/pageSize)||1)},[pagination==null?void 0:pagination.totalCount,pageSize]);useEffect(function(){if(sortConfig){setSortDirections(sortConfig);var first=Object.keys(sortConfig)[0];if(first){setActiveSortColumn(first)}}},[sortConfig]);useEffect(function(){if(sortConfig!=null&&sortConfig.sortColumn||sortConfig!=null&&sortConfig.sortDirection){sortConfig.sortColumn=null;sortConfig.sortDirection=null}setActiveSortColumn(null);setSortDirections({})},[]);var computedColorMap=useMemo(function(){if(!Array.isArray(data)||data.length===0){return{}}// Get available column keys from first row
11
11
  var availableKeys=Object.keys(data[0]||{});var newColorMap={};// Process each column that uses random chips
12
12
  Object.keys(columnWithChipClass).forEach(function(columnKey){// Validate column key exists in data
13
13
  if(!availableKeys.includes(columnKey)){return}var chipMode=getChipMode(columnWithChipClass,columnKey);if(chipMode==="useRandom"){if(!newColorMap[columnKey]){newColorMap[columnKey]={}}var uniqueNormalizedValues=new Set;data.forEach(function(row){var value=row[columnKey];var normalizedKey=normalizeValue(value);if(normalizedKey){uniqueNormalizedValues.add(normalizedKey)}});var sortedUniqueValues=Array.from(uniqueNormalizedValues).sort();sortedUniqueValues.forEach(function(normalizedKey,index){if(!newColorMap[columnKey][normalizedKey]){var colorIndex=index%RANDOM_CHIP_COLOR_PALETTE.length;newColorMap[columnKey][normalizedKey]=RANDOM_CHIP_COLOR_PALETTE[colorIndex]}})}});return newColorMap},[data,columnWithChipClass]);useEffect(function(){var uniqueValuesHash=getUniqueValuesHash(data,columnWithChipClass);// Only update if the set of unique values actually changed
14
14
  if(uniqueValuesHash!==prevDataHashRef.current){prevDataHashRef.current=uniqueValuesHash;setChipColorMap(function(prevMap){var merged=_extends({},prevMap);Object.keys(computedColorMap).forEach(function(columnKey){merged[columnKey]=_extends({},computedColorMap[columnKey],merged[columnKey])});return merged})}},[computedColorMap,data,columnWithChipClass]);useEffect(function(){setChipColorMap(function(prevMap){var cleaned=_extends({},prevMap);var hasChanges=false;Object.keys(cleaned).forEach(function(columnKey){var chipMode=getChipMode(columnWithChipClass,columnKey);if(!chipMode){delete cleaned[columnKey];hasChanges=true}});return hasChanges?cleaned:prevMap})},[columnWithChipClass]);var _useButtonForm=useButtonForm({formMapper:activeAction==null?void 0:activeAction.action.formMapper,formTitle:activeAction==null?void 0:activeAction.action.formTitle,formDescription:activeAction==null?void 0:activeAction.action.formDescription,formButtonText:activeAction==null?void 0:activeAction.action.formButtonText,isSubmitting:isFormSubmitting||isLoading,onClose:function onClose(){setActiveRowIndex(null);setActiveAction(null)},onSubmit:function(){var _onSubmit=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(formData){return _regeneratorRuntime.wrap(function _callee$(_context){while(1)switch(_context.prev=_context.next){case 0:if(!(activeRowIndex!==null&&activeAction)){_context.next=10;break}setIsFormSubmitting(true);_context.prev=2;_context.next=5;return onRowAction==null?void 0:onRowAction(activeRowIndex,activeAction.id,formData);case 5:_context.prev=5;setIsFormSubmitting(false);return _context.finish(5);case 8:setActiveAction(null);setActiveRowIndex(null);case 10:case"end":return _context.stop()}},_callee,null,[[2,,5,8]])}));function onSubmit(_x){return _onSubmit.apply(this,arguments)}return onSubmit}()}),FormDialog=_useButtonForm.FormDialog,openForm=_useButtonForm.openForm;function handleButtonClick(rowIndex,action){if(action.action.action==="navigateToPage"&&action.action.targetPageId){var rowContext=resolveRowContext(action.action.rowContext,data[rowIndex]);navigateToPage==null||navigateToPage(action.action.targetPageId,rowContext);return}if(action.action.type==="navigation"){var onClick=action.action.onClick;if((onClick==null?void 0:onClick.action)==="navigateToPage"&&onClick.targetPageId){var _rowContext=resolveRowContext(action.action.rowContext,data[rowIndex]);navigateToPage==null||navigateToPage(onClick.targetPageId,_rowContext);return}}if(action.action.formMapper&&Object.keys(action.action.formMapper).length>0){setActiveRowIndex(rowIndex);setActiveAction(action)}else{onRowAction==null||onRowAction(rowIndex,action.id)}}useEffect(function(){if(activeAction!=null&&activeAction.action.formMapper&&Object.keys(activeAction.action.formMapper).length>0){openForm()}},[activeAction]);var originalKeys=Object.keys(data[0]||{}).filter(function(key){return key in headerMapper});var headers=originalKeys.map(function(key){return headerMapper[key]});if(actions.length>0){headers.push("")}var rows=data.map(function(datum){return originalKeys.map(function(key){return datum[key]})});function handlePageChange(_x2,_x3){return _handlePageChange.apply(this,arguments)}function _handlePageChange(){_handlePageChange=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee3(newPage,newSize){return _regeneratorRuntime.wrap(function _callee3$(_context3){while(1)switch(_context3.prev=_context3.next){case 0:if(newPage===void 0){newPage=pageNumber}if(newSize===void 0){newSize=pageSize}setPageNumber(newPage);setPageSize(newSize);onPageChange==null||onPageChange(newPage,newSize);case 5:case"end":return _context3.stop()}},_callee3)}));return _handlePageChange.apply(this,arguments)}function handleSortClick(column,direction){setActiveSortColumn(direction?column:null);setSortDirections(function(prev){var _extends2;return _extends({},prev,(_extends2={},_extends2[column]=direction,_extends2))});onSort==null||onSort(column,direction)}function handleCheckboxClick(rowIndex){if(setSelectedIndices){if(selectedIndices.includes(rowIndex)){setSelectedIndices(selectedIndices.filter(function(idx){return idx!==rowIndex}))}else{setSelectedIndices([].concat(selectedIndices,[rowIndex]))}}}function ActionsDropdown(_ref6){var rowIndex=_ref6.rowIndex,rowActions=_ref6.rowActions;var isOpen=openDropdownIndex===rowIndex;var totalRows=rows.length;var isNearBottom=rowIndex>=totalRows-3;function handleActionClick(_x4){return _handleActionClick.apply(this,arguments)}function _handleActionClick(){_handleActionClick=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee2(action){var rowContext,onClick,_rowContext2,actionKey;return _regeneratorRuntime.wrap(function _callee2$(_context2){while(1)switch(_context2.prev=_context2.next){case 0:if(!(action.action.action==="navigateToPage"&&action.action.targetPageId)){_context2.next=5;break}rowContext=resolveRowContext(action.action.rowContext,data[rowIndex]);navigateToPage==null||navigateToPage(action.action.targetPageId,rowContext);setOpenDropdownIndex(null);return _context2.abrupt("return");case 5:if(!(action.action.type==="navigation")){_context2.next=12;break}onClick=action.action.onClick;if(!((onClick==null?void 0:onClick.action)==="navigateToPage"&&onClick.targetPageId)){_context2.next=12;break}_rowContext2=resolveRowContext(action.action.rowContext,data[rowIndex]);navigateToPage==null||navigateToPage(onClick.targetPageId,_rowContext2);setOpenDropdownIndex(null);return _context2.abrupt("return");case 12:// Handle form-based and API actions
15
- actionKey=rowIndex+"-"+action.id;if(!(action.action.formMapper&&Object.keys(action.action.formMapper).length>0)){_context2.next=19;break}setActiveRowIndex(rowIndex);setActiveAction(action);setOpenDropdownIndex(null);_context2.next=27;break;case 19:_context2.prev=19;setLoadingActionKey(actionKey);_context2.next=23;return onRowAction==null?void 0:onRowAction(rowIndex,action.id);case 23:_context2.prev=23;setLoadingActionKey(null);setOpenDropdownIndex(null);return _context2.finish(23);case 27:case"end":return _context2.stop()}},_callee2,null,[[19,,23,27]])}));return _handleActionClick.apply(this,arguments)}function toggleDropdown(){setOpenDropdownIndex(isOpen?null:rowIndex)}function handleBackdropClick(){if(!loadingActionKey){setOpenDropdownIndex(null)}}return/*#__PURE__*/_jsxs(_Fragment,{children:[isOpen&&/*#__PURE__*/_jsx("div",{className:"fixed inset-0 z-40",onClick:handleBackdropClick,style:{background:"transparent",cursor:"default"}}),/*#__PURE__*/_jsxs("div",{className:"relative",children:[/*#__PURE__*/_jsx(Button,{variant:"ghost",size:"icon",onClick:function onClick(e){e.stopPropagation();toggleDropdown()},disabled:isLoading,className:"h-8 w-8 relative z-50","data-dropdown-button":"true",children:/*#__PURE__*/_jsx(MoreVertical,{className:"h-4 w-4"})}),isOpen&&/*#__PURE__*/_jsx("div",{className:cn("absolute right-full mr-2 w-48 rounded-md shadow-lg bg-white ring-gray-400 ring-opacity-5 z-50",isNearBottom?"bottom-0":"top-0"),children:/*#__PURE__*/_jsx("div",{className:"py-1",role:"menu",children:rowActions.map(function(action){var actionKey=rowIndex+"-"+action.id;var isActionLoading=loadingActionKey===actionKey;return/*#__PURE__*/_jsxs("button",{onClick:function onClick(){return handleActionClick(action)},className:"block w-full text-left px-4 py-2 text-sm hover:bg-accent transition-colors font-semibold disabled:opacity-50 disabled:cursor-not-allowed flex items-center gap-2 focus:outline-none focus:bg-accent",disabled:isLoading||isActionLoading,role:"menuitem",children:[isActionLoading&&/*#__PURE__*/_jsx(Loader2,{className:"h-3 w-3 animate-spin"}),action.text]},action.id)})})})]})]})}function renderActions(rowIndex,rowActions){if(!actions.length){return null}return/*#__PURE__*/_jsx(TableCell,{className:"sticky right-0 bg-white overflow-visible",children:/*#__PURE__*/_jsx(ActionsDropdown,{rowIndex:rowIndex,rowActions:rowActions})})}var defaultClasses="aspect-auto w-full";var mergedClasses=className?cn(defaultClasses,className):defaultClasses;function getRandomColorForValue(columnKey,value){var _chipColorMap$columnK;var normalizedKey=normalizeValue(value);if((_chipColorMap$columnK=chipColorMap[columnKey])!=null&&_chipColorMap$columnK[normalizedKey]){return chipColorMap[columnKey][normalizedKey]}return"bg-gray-50 text-gray-900 shadow-sm"}function renderChip(columnKey,value){var chipMode=getChipMode(columnWithChipClass,columnKey);var formattedValue=formatValue(value,decimalPrecision);if(!chipMode){return/*#__PURE__*/_jsx(_Fragment,{children:formattedValue})}var chipClassName="";if(chipMode==="useMap"){var _chipStylesMapping$co;var valueStr=String(value);chipClassName=(_chipStylesMapping$co=chipStylesMapping[columnKey])==null?void 0:_chipStylesMapping$co[valueStr];if(!chipClassName){var valueLower=valueStr.toLowerCase().trim();chipClassName=SEMANTIC_CHIP_STYLES_MAP[valueLower]}if(!chipClassName){chipClassName="bg-gray-50 text-gray-900 shadow-sm"}}else if(chipMode==="useRandom"){chipClassName=getRandomColorForValue(columnKey,value)}return/*#__PURE__*/_jsx("span",{className:cn("inline-flex items-center rounded-md px-2 py-1 text-xs font-medium ring-1 ring-inset ring-gray-500/10",chipClassName),children:formattedValue})}function renderTableComponent(){if(isLoading||!data||data.length===0){return/*#__PURE__*/_jsx(TableLoader,{})}return/*#__PURE__*/_jsxs(Table,_extends({},otherProps,{className:"caption-bottom text-sm relative "+mergedClasses,"data-slot":"table",children:[/*#__PURE__*/_jsx(TableHeader,{"data-slot":"table-header",className:"sticky top-0 z-2",children:/*#__PURE__*/_jsxs(TableRow,{children:[isBulkSelectionEnabled&&/*#__PURE__*/_jsx(TableCell,{className:"p-2 w-10",children:/*#__PURE__*/_jsx(Checkbox,{checked:(selectedIndices==null?void 0:selectedIndices.length)===data.length,onCheckedChange:function onCheckedChange(){if(setSelectedIndices){if((selectedIndices==null?void 0:selectedIndices.length)===data.length){setSelectedIndices([])}else{setSelectedIndices(data.map(function(_,idx){return idx}))}}}})}),headers.map(function(head,idx){var isActionColumn=actions.length>0&&idx===headers.length-1;var originalKey=originalKeys[idx];if(isActionColumn){return/*#__PURE__*/_jsx(TableHead,{"data-slot":"table-header-"+idx,contentEditable:isEditable,className:"sticky right-0 bg-slate-100",children:head},idx)}return/*#__PURE__*/_jsx(TableHeadSortable,{"data-slot":"table-header-"+idx,sortDirection:sortDirections[originalKey]||"asc",isActive:activeSortColumn===originalKey,onSort:function onSort(direction){return handleSortClick(originalKey,direction)},sortable:!isLoading,isEditable:isEditable,children:head},idx)})]})}),/*#__PURE__*/_jsx(TableBody,{"data-slot":"table-body",children:rows.map(function(row,rIdx){return/*#__PURE__*/_jsxs(TableRow,{"data-slot":"row-"+rIdx,className:"hover:bg-muted/50 border-b transition-colors",children:[isBulkSelectionEnabled&&/*#__PURE__*/_jsx(TableCell,{className:"p-2 align-middle",children:/*#__PURE__*/_jsx(Checkbox,{checked:selectedIndices==null?void 0:selectedIndices.includes(rIdx),onCheckedChange:function onCheckedChange(){return handleCheckboxClick(rIdx)}})}),row.map(function(cell,cIdx){var columnKey=originalKeys[cIdx];var chipMode=columnKey?getChipMode(columnWithChipClass,columnKey):undefined;var shouldRenderChip=!!chipMode;return/*#__PURE__*/_jsx(TableCell,{"data-slot":"cell-"+rIdx+"-"+cIdx,className:"p-2 align-middle whitespace-nowrap",contentEditable:false,children:shouldRenderChip?renderChip(columnKey,cell):formatValue(cell,decimalPrecision)},cIdx)}),renderActions(rIdx,actions)]},rIdx)})})]}))}return/*#__PURE__*/_jsxs(Fragment,{children:[/*#__PURE__*/_jsx("div",{className:"flex flex-col h-full overflow-hidden",children:/*#__PURE__*/_jsxs(ScrollArea,_extends({"data-slot":"table-container",className:mergedClasses},height!==undefined&&{style:{height:height}},{children:[renderTableComponent(),/*#__PURE__*/_jsx(ScrollBar,{orientation:"horizontal"})]}))}),(((_pagination$totalCoun=pagination==null?void 0:pagination.totalCount)!=null?_pagination$totalCoun:0)>0||title&&!isEditable&&onDownload)&&/*#__PURE__*/_jsxs("div",{className:"flex-shrink-0 flex items-center justify-between mt-2 w-full overflow-x-auto border-t pt-2",children:[/*#__PURE__*/_jsx("div",{className:"flex items-center gap-2 flex-shrink-0",children:pagination&&pagination.totalCount>0&&/*#__PURE__*/_jsxs(_Fragment,{children:[/*#__PURE__*/_jsx("label",{htmlFor:"page-size-select",className:"text-sm whitespace-nowrap",children:"Rows per page:"}),/*#__PURE__*/_jsx("select",{id:"page-size-select",value:pageSize,onChange:function onChange(e){return handlePageChange(1,Number(e.target.value))},className:"border rounded px-2 py-1 text-sm cursor-pointer",disabled:isLoading,children:(pagination.pageSizeOptions||[10,20,50,100]).map(function(size){return/*#__PURE__*/_jsx("option",{value:size,children:size},size)})})]})}),/*#__PURE__*/_jsxs("div",{className:"flex items-center gap-2 flex-shrink-0",children:[title&&!isEditable&&onDownload&&/*#__PURE__*/_jsx(DownloadButton,{component:"table",title:title,onDownload:onDownload,dataCount:(_pagination$totalCoun2=pagination==null?void 0:pagination.totalCount)!=null?_pagination$totalCoun2:data.length}),pagination&&pagination.totalCount>0&&/*#__PURE__*/_jsxs(_Fragment,{children:[/*#__PURE__*/_jsxs("span",{className:"text-xs text-muted-foreground whitespace-nowrap ml-1.5",children:[(pageNumber-1)*pageSize+1,"\u2013",Math.min(pageNumber*pageSize,pagination.totalCount)," of ",pagination.totalCount]}),/*#__PURE__*/_jsx(Pagination,{children:/*#__PURE__*/_jsx(PaginationContent,{className:"gap-0.2 flex-shrink-0",children:renderPaginationArrows(pageNumber,totalPages,isLoading,handlePageChange)})})]})]})]}),FormDialog]})}
15
+ actionKey=rowIndex+"-"+action.id;if(!(action.action.formMapper&&Object.keys(action.action.formMapper).length>0)){_context2.next=19;break}setActiveRowIndex(rowIndex);setActiveAction(action);setOpenDropdownIndex(null);_context2.next=27;break;case 19:_context2.prev=19;setLoadingActionKey(actionKey);_context2.next=23;return onRowAction==null?void 0:onRowAction(rowIndex,action.id);case 23:_context2.prev=23;setLoadingActionKey(null);setOpenDropdownIndex(null);return _context2.finish(23);case 27:case"end":return _context2.stop()}},_callee2,null,[[19,,23,27]])}));return _handleActionClick.apply(this,arguments)}function toggleDropdown(){setOpenDropdownIndex(isOpen?null:rowIndex)}function handleBackdropClick(){if(!loadingActionKey){setOpenDropdownIndex(null)}}return/*#__PURE__*/_jsxs(_Fragment,{children:[isOpen&&/*#__PURE__*/_jsx("div",{className:"fixed inset-0 z-40",onClick:handleBackdropClick,style:{background:"transparent",cursor:"default"}}),/*#__PURE__*/_jsxs("div",{className:"relative",children:[/*#__PURE__*/_jsx(Button,{variant:"ghost",size:"icon",onClick:function onClick(e){e.stopPropagation();toggleDropdown()},disabled:isLoading,className:"h-8 w-8 relative z-50","data-dropdown-button":"true",children:/*#__PURE__*/_jsx(MoreVertical,{className:"h-4 w-4"})}),isOpen&&/*#__PURE__*/_jsx("div",{className:cn("absolute right-full mr-2 w-48 rounded-md shadow-lg bg-white ring-gray-400 ring-opacity-5 z-50",isNearBottom?"bottom-0":"top-0"),children:/*#__PURE__*/_jsx("div",{className:"py-1",role:"menu",children:rowActions.map(function(action){var actionKey=rowIndex+"-"+action.id;var isActionLoading=loadingActionKey===actionKey;return/*#__PURE__*/_jsxs("button",{onClick:function onClick(){return handleActionClick(action)},className:"block w-full text-left px-4 py-2 text-sm hover:bg-accent transition-colors font-semibold disabled:opacity-50 disabled:cursor-not-allowed flex items-center gap-2 focus:outline-none focus:bg-accent",disabled:isLoading||isActionLoading,role:"menuitem",children:[isActionLoading&&/*#__PURE__*/_jsx(Loader2,{className:"h-3 w-3 animate-spin"}),action.text]},action.id)})})})]})]})}function renderActions(rowIndex,rowActions){if(!actions.length){return null}return/*#__PURE__*/_jsx(TableCell,{className:"sticky right-0 bg-white overflow-visible",children:/*#__PURE__*/_jsx(ActionsDropdown,{rowIndex:rowIndex,rowActions:rowActions})})}var defaultClasses="aspect-auto w-full";var mergedClasses=className?cn(defaultClasses,className):defaultClasses;function getRandomColorForValue(columnKey,value){var _chipColorMap$columnK;var normalizedKey=normalizeValue(value);if((_chipColorMap$columnK=chipColorMap[columnKey])!=null&&_chipColorMap$columnK[normalizedKey]){return chipColorMap[columnKey][normalizedKey]}return"bg-gray-50 text-gray-900 shadow-sm"}function renderChip(columnKey,value){var chipMode=getChipMode(columnWithChipClass,columnKey);var formattedValue=formatValue(value,decimalPrecision);if(!chipMode){return/*#__PURE__*/_jsx(_Fragment,{children:formattedValue})}var chipClassName="";if(chipMode==="useMap"){var _chipStylesMapping$co;var valueStr=String(value);chipClassName=(_chipStylesMapping$co=chipStylesMapping[columnKey])==null?void 0:_chipStylesMapping$co[valueStr];if(!chipClassName){var valueLower=valueStr.toLowerCase().trim();chipClassName=SEMANTIC_CHIP_STYLES_MAP[valueLower]}if(!chipClassName){chipClassName="bg-gray-50 text-gray-900 shadow-sm"}}else if(chipMode==="useRandom"){chipClassName=getRandomColorForValue(columnKey,value)}return/*#__PURE__*/_jsx("span",{className:cn("inline-flex items-center rounded-md px-2 py-1 text-xs font-medium ring-1 ring-inset ring-gray-500/10",chipClassName),children:formattedValue})}function renderTableComponent(){if(isLoading||!data||data.length===0){return/*#__PURE__*/_jsx(TableLoader,{})}return/*#__PURE__*/_jsxs(Table,_extends({},otherProps,{className:"caption-bottom text-sm relative "+mergedClasses,"data-slot":"table",children:[/*#__PURE__*/_jsx(TableHeader,{"data-slot":"table-header",className:"sticky top-0 z-2",children:/*#__PURE__*/_jsxs(TableRow,{children:[isBulkSelectionEnabled&&/*#__PURE__*/_jsx(TableCell,{className:"p-2 w-10",children:/*#__PURE__*/_jsx(Checkbox,{checked:(selectedIndices==null?void 0:selectedIndices.length)===data.length,onCheckedChange:function onCheckedChange(){if(setSelectedIndices){if((selectedIndices==null?void 0:selectedIndices.length)===data.length){setSelectedIndices([])}else{setSelectedIndices(data.map(function(_,idx){return idx}))}}}})}),headers.map(function(head,idx){var isActionColumn=actions.length>0&&idx===headers.length-1;var originalKey=originalKeys[idx];if(isActionColumn){return/*#__PURE__*/_jsx(TableHead,{"data-slot":"table-header-"+idx,contentEditable:isEditable,className:"sticky right-0 bg-slate-100",children:head},idx)}return/*#__PURE__*/_jsx(TableHeadSortable,{"data-slot":"table-header-"+idx,sortDirection:sortDirections[originalKey]||"asc",isActive:activeSortColumn===originalKey,onSort:function onSort(direction){return handleSortClick(originalKey,direction)},sortable:sortableGlobal&&!isLoading,isEditable:isEditable,children:head},idx)})]})}),/*#__PURE__*/_jsx(TableBody,{"data-slot":"table-body",children:rows.map(function(row,rIdx){return/*#__PURE__*/_jsxs(TableRow,{"data-slot":"row-"+rIdx,className:"hover:bg-muted/50 border-b transition-colors",children:[isBulkSelectionEnabled&&/*#__PURE__*/_jsx(TableCell,{className:"p-2 align-middle",children:/*#__PURE__*/_jsx(Checkbox,{checked:selectedIndices==null?void 0:selectedIndices.includes(rIdx),onCheckedChange:function onCheckedChange(){return handleCheckboxClick(rIdx)}})}),row.map(function(cell,cIdx){var columnKey=originalKeys[cIdx];var chipMode=columnKey?getChipMode(columnWithChipClass,columnKey):undefined;var shouldRenderChip=!!chipMode;return/*#__PURE__*/_jsx(TableCell,{"data-slot":"cell-"+rIdx+"-"+cIdx,className:"p-2 align-middle whitespace-nowrap",contentEditable:false,children:shouldRenderChip?renderChip(columnKey,cell):formatValue(cell,decimalPrecision)},cIdx)}),renderActions(rIdx,actions)]},rIdx)})})]}))}return/*#__PURE__*/_jsxs(Fragment,{children:[/*#__PURE__*/_jsx("div",{className:"flex flex-col h-full overflow-hidden",children:/*#__PURE__*/_jsxs(ScrollArea,_extends({"data-slot":"table-container",className:mergedClasses},height!==undefined&&{style:{height:height}},{children:[renderTableComponent(),/*#__PURE__*/_jsx(ScrollBar,{orientation:"horizontal"})]}))}),(((_pagination$totalCoun=pagination==null?void 0:pagination.totalCount)!=null?_pagination$totalCoun:0)>0||title&&!isEditable&&onDownload)&&/*#__PURE__*/_jsxs("div",{className:"flex-shrink-0 flex items-center justify-between mt-2 w-full overflow-x-auto border-t pt-2",children:[/*#__PURE__*/_jsx("div",{className:"flex items-center gap-2 flex-shrink-0",children:pagination&&pagination.totalCount>0&&/*#__PURE__*/_jsxs(_Fragment,{children:[/*#__PURE__*/_jsx("label",{htmlFor:"page-size-select",className:"text-sm whitespace-nowrap",children:"Rows per page:"}),/*#__PURE__*/_jsx("select",{id:"page-size-select",value:pageSize,onChange:function onChange(e){return handlePageChange(1,Number(e.target.value))},className:"border rounded px-2 py-1 text-sm cursor-pointer",disabled:isLoading,children:(pagination.pageSizeOptions||[10,20,50,100]).map(function(size){return/*#__PURE__*/_jsx("option",{value:size,children:size},size)})})]})}),/*#__PURE__*/_jsxs("div",{className:"flex items-center gap-2 flex-shrink-0",children:[title&&!isEditable&&onDownload&&/*#__PURE__*/_jsx(DownloadButton,{component:"table",title:title,onDownload:onDownload,dataCount:(_pagination$totalCoun2=pagination==null?void 0:pagination.totalCount)!=null?_pagination$totalCoun2:data.length}),pagination&&pagination.totalCount>0&&/*#__PURE__*/_jsxs(_Fragment,{children:[/*#__PURE__*/_jsxs("span",{className:"text-xs text-muted-foreground whitespace-nowrap ml-1.5",children:[(pageNumber-1)*pageSize+1,"\u2013",Math.min(pageNumber*pageSize,pagination.totalCount)," of ",pagination.totalCount]}),/*#__PURE__*/_jsx(Pagination,{children:/*#__PURE__*/_jsx(PaginationContent,{className:"gap-0.2 flex-shrink-0",children:renderPaginationArrows(pageNumber,totalPages,isLoading,handlePageChange)})})]})]})]}),FormDialog]})}
16
16
  //# sourceMappingURL=data-table.js.map