From a6047d917f4ab803d8e7b20cf9615abf1c3428a2 Mon Sep 17 00:00:00 2001 From: karishmas6 Date: Sat, 3 Aug 2024 21:33:33 +0530 Subject: [PATCH] feat: use selector object instead of str --- src/context/browserSteps.tsx | 25 +++++++++++++++++++------ 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/src/context/browserSteps.tsx b/src/context/browserSteps.tsx index 1d3ba00b..fb21e02c 100644 --- a/src/context/browserSteps.tsx +++ b/src/context/browserSteps.tsx @@ -1,15 +1,22 @@ import React, { createContext, useContext, useState } from 'react'; +interface SelectorObject { + selector: string; + tag?: string; + // todo: allow for additional properties like what did user select for a, img, etc. + [key: string]: any; +} + interface BrowserStep { id: number; label: string; data: string; - selector: string; + selectorObj: SelectorObject; } interface BrowserStepsContextType { browserSteps: BrowserStep[]; - addBrowserStep: (label: string, data: string, selector: string) => void; + addBrowserStep: (label: string, data: string, selectorObj: SelectorObject) => void; deleteBrowserStep: (id: number) => void; updateBrowserStepLabel: (id: number, newLabel: string) => void; } @@ -19,10 +26,10 @@ const BrowserStepsContext = createContext(u export const BrowserStepsProvider: React.FC<{ children: React.ReactNode }> = ({ children }) => { const [browserSteps, setBrowserSteps] = useState([]); - const addBrowserStep = (label: string, data: string, selector: string) => { + const addBrowserStep = (label: string, data: string, selectorObj: SelectorObject) => { setBrowserSteps(prevSteps => [ ...prevSteps, - { id: Date.now(), label, data, selector } + { id: Date.now(), label, data, selectorObj } ]); }; @@ -38,8 +45,14 @@ export const BrowserStepsProvider: React.FC<{ children: React.ReactNode }> = ({ ); }; + return ( - + {children} ); @@ -51,4 +64,4 @@ export const useBrowserSteps = () => { throw new Error('useBrowserSteps must be used within a BrowserStepsProvider'); } return context; -}; +}; \ No newline at end of file