From 16c788f9552559935728cd896a6ee96b52d9bb08 Mon Sep 17 00:00:00 2001 From: Rohit Date: Wed, 16 Jul 2025 00:17:49 +0530 Subject: [PATCH] feat: add isShadow field browser steps --- src/context/browserSteps.tsx | 45 ++++++++++++++++++++++++++---------- 1 file changed, 33 insertions(+), 12 deletions(-) diff --git a/src/context/browserSteps.tsx b/src/context/browserSteps.tsx index 8b4769aa..0931813e 100644 --- a/src/context/browserSteps.tsx +++ b/src/context/browserSteps.tsx @@ -5,8 +5,9 @@ export interface TextStep { type: 'text'; label: string; data: string; + isShadow?: boolean; selectorObj: SelectorObject; - actionId?: string; + actionId?: string; } interface ScreenshotStep { @@ -14,20 +15,22 @@ interface ScreenshotStep { type: 'screenshot'; fullPage: boolean; actionId?: string; - screenshotData?: string; + screenshotData?: string; } export interface ListStep { id: number; type: 'list'; listSelector: string; + isShadow?: boolean; fields: { [key: string]: TextStep }; pagination?: { type: string; selector: string; + isShadow?: boolean; }; limit?: number; - actionId?: string; + actionId?: string; } export type BrowserStep = TextStep | ScreenshotStep | ListStep; @@ -36,14 +39,14 @@ export interface SelectorObject { selector: string; tag?: string; attribute?: string; - shadow?: boolean; + isShadow?: boolean; [key: string]: any; } interface BrowserStepsContextType { browserSteps: BrowserStep[]; addTextStep: (label: string, data: string, selectorObj: SelectorObject, actionId: string) => void; - addListStep: (listSelector: string, fields: { [key: string]: TextStep }, listId: number, actionId: string, pagination?: { type: string; selector: string }, limit?: number) => void + addListStep: (listSelector: string, fields: { [key: string]: TextStep }, listId: number, actionId: string, pagination?: { type: string; selector: string, isShadow?: boolean }, limit?: number, isShadow?: boolean) => void addScreenshotStep: (fullPage: boolean, actionId: string) => void; deleteBrowserStep: (id: number) => void; updateBrowserTextStepLabel: (id: number, newLabel: string) => void; @@ -51,7 +54,7 @@ interface BrowserStepsContextType { updateListStepLimit: (listId: number, limit: number) => void; updateListStepData: (listId: number, extractedData: any[]) => void; removeListTextField: (listId: number, fieldKey: string) => void; - deleteStepsByActionId: (actionId: string) => void; + deleteStepsByActionId: (actionId: string) => void; updateScreenshotStepData: (id: number, screenshotData: string) => void; } @@ -68,14 +71,22 @@ export const BrowserStepsProvider: React.FC<{ children: React.ReactNode }> = ({ ]); }; - const addListStep = (listSelector: string, newFields: { [key: string]: TextStep }, listId: number, actionId: string, pagination?: { type: string; selector: string }, limit?: number) => { + const addListStep = ( + listSelector: string, + newFields: { [key: string]: TextStep }, + listId: number, + actionId: string, + pagination?: { type: string; selector: string; isShadow?: boolean }, + limit?: number, + isShadow?: boolean + ) => { setBrowserSteps(prevSteps => { const existingListStepIndex = prevSteps.findIndex(step => step.type === 'list' && step.id === listId); if (existingListStepIndex !== -1) { const updatedSteps = [...prevSteps]; const existingListStep = updatedSteps[existingListStepIndex] as ListStep; - + // Preserve existing labels for fields const mergedFields = Object.entries(newFields).reduce((acc, [key, field]) => { if (!discardedFields.has(`${listId}-${key}`)) { @@ -95,13 +106,14 @@ export const BrowserStepsProvider: React.FC<{ children: React.ReactNode }> = ({ } return acc; }, {} as { [key: string]: TextStep }); - + updatedSteps[existingListStepIndex] = { ...existingListStep, fields: mergedFields, pagination: pagination || existingListStep.pagination, limit: limit, - actionId + actionId, + isShadow: isShadow !== undefined ? isShadow : existingListStep.isShadow }; return updatedSteps; } else { @@ -115,7 +127,16 @@ export const BrowserStepsProvider: React.FC<{ children: React.ReactNode }> = ({ return [ ...prevSteps, - { id: listId, type: 'list', listSelector, fields: fieldsWithActionId, pagination, limit, actionId } + { + id: listId, + type: 'list', + listSelector, + fields: fieldsWithActionId, + pagination, + limit, + actionId, + isShadow + } ]; } }); @@ -236,7 +257,7 @@ export const BrowserStepsProvider: React.FC<{ children: React.ReactNode }> = ({ updateListStepLimit, updateListStepData, removeListTextField, - deleteStepsByActionId, + deleteStepsByActionId, updateScreenshotStepData, }}> {children}