{"format":1,"manifest":{"name":"react-snippets","publisher":"vyloxi","version":"1.1.0","displayName":"React Snippets","description":"Components, hooks and common patterns for React in JavaScript and TypeScript.","engines":{"ferrum":"^0.1.0"},"categories":["Snippets"],"icon":"icon.png","repository":"https://github.com/voukengdongmofrankysteve/ferrum-market","license":"MIT","contributes":{"snippets":[{"language":"JavaScript","path":"snippets/javascript.json"},{"language":"TypeScript","path":"snippets/typescript.json"}]}},"files":{"icon.png":{"encoding":"base64","content":"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"},"snippets/javascript.json":{"encoding":"utf8","content":"{\n  \"Function component\": {\n    \"prefix\": \"rfc\",\n    \"body\": [\n      \"export default function ${1:Component}(${2:props}) {\",\n      \"\\treturn (\",\n      \"\\t\\t<div>$0</div>\",\n      \"\\t);\",\n      \"}\"\n    ],\n    \"description\": \"A function component\"\n  },\n  \"useState simple\": {\n    \"prefix\": \"ust\",\n    \"body\": [\n      \"const [${1:value}, ${2:setValue}] = useState(${3:null});\"\n    ],\n    \"description\": \"useState hook\"\n  },\n  \"useEffect\": {\n    \"prefix\": \"ue\",\n    \"body\": [\n      \"useEffect(() => {\",\n      \"\\t$0\",\n      \"\\treturn () => {};\",\n      \"}, [${1}]);\"\n    ],\n    \"description\": \"useEffect hook\"\n  },\n  \"useMemo\": {\n    \"prefix\": \"um\",\n    \"body\": [\n      \"const ${1:value} = useMemo(() => ${2:compute()}, [${3}]);\"\n    ],\n    \"description\": \"useMemo hook\"\n  },\n  \"useCallback\": {\n    \"prefix\": \"ucb\",\n    \"body\": [\n      \"const ${1:fn} = useCallback((${2:args}) => {\",\n      \"\\t$0\",\n      \"}, [${3}]);\"\n    ],\n    \"description\": \"useCallback hook\"\n  },\n  \"useRef\": {\n    \"prefix\": \"ur\",\n    \"body\": [\n      \"const ${1:ref} = useRef(${2:null});\"\n    ],\n    \"description\": \"useRef hook\"\n  },\n  \"useReducer\": {\n    \"prefix\": \"ured\",\n    \"body\": [\n      \"const [${1:state}, ${2:dispatch}] = useReducer(${3:reducer}, ${4:initialState});\"\n    ],\n    \"description\": \"useReducer hook\"\n  },\n  \"Context\": {\n    \"prefix\": \"ctx\",\n    \"body\": [\n      \"const ${1:Name}Context = createContext(${2:null});\"\n    ],\n    \"description\": \"createContext\"\n  },\n  \"Custom hook\": {\n    \"prefix\": \"hook\",\n    \"body\": [\n      \"export function use${1:Name}(${2:args}) {\",\n      \"\\t$0\",\n      \"\\treturn {};\",\n      \"}\"\n    ],\n    \"description\": \"A custom hook\"\n  },\n  \"Props interface (TS)\": {\n    \"prefix\": \"rprops\",\n    \"body\": [\n      \"interface ${1:Component}Props {\",\n      \"\\t${2:name}: ${3:string};\",\n      \"}\"\n    ],\n    \"description\": \"A props type\"\n  },\n  \"Map list\": {\n    \"prefix\": \"rmap\",\n    \"body\": [\n      \"{${1:items}.map((${2:item}) => (\",\n      \"\\t<li key={${2:item}.id}>$0</li>\",\n      \"))}\"\n    ],\n    \"description\": \"Render a list\"\n  },\n  \"Conditional render\": {\n    \"prefix\": \"rcond\",\n    \"body\": [\n      \"{${1:condition} && (\",\n      \"\\t$0\",\n      \")}\"\n    ],\n    \"description\": \"Render when true\"\n  },\n  \"Form submit\": {\n    \"prefix\": \"rform\",\n    \"body\": [\n      \"<form onSubmit={(e) => { e.preventDefault(); $0 }}>\",\n      \"\\t<input value={${1:value}} onChange={(e) => ${2:setValue}(e.target.value)} />\",\n      \"</form>\"\n    ],\n    \"description\": \"A controlled form\"\n  }\n}\n"},"snippets/typescript.json":{"encoding":"utf8","content":"{\n  \"Function component\": {\n    \"prefix\": \"rfc\",\n    \"body\": [\n      \"export default function ${1:Component}(${2:props}) {\",\n      \"\\treturn (\",\n      \"\\t\\t<div>$0</div>\",\n      \"\\t);\",\n      \"}\"\n    ],\n    \"description\": \"A function component\"\n  },\n  \"useState simple\": {\n    \"prefix\": \"ust\",\n    \"body\": [\n      \"const [${1:value}, ${2:setValue}] = useState(${3:null});\"\n    ],\n    \"description\": \"useState hook\"\n  },\n  \"useEffect\": {\n    \"prefix\": \"ue\",\n    \"body\": [\n      \"useEffect(() => {\",\n      \"\\t$0\",\n      \"\\treturn () => {};\",\n      \"}, [${1}]);\"\n    ],\n    \"description\": \"useEffect hook\"\n  },\n  \"useMemo\": {\n    \"prefix\": \"um\",\n    \"body\": [\n      \"const ${1:value} = useMemo(() => ${2:compute()}, [${3}]);\"\n    ],\n    \"description\": \"useMemo hook\"\n  },\n  \"useCallback\": {\n    \"prefix\": \"ucb\",\n    \"body\": [\n      \"const ${1:fn} = useCallback((${2:args}) => {\",\n      \"\\t$0\",\n      \"}, [${3}]);\"\n    ],\n    \"description\": \"useCallback hook\"\n  },\n  \"useRef\": {\n    \"prefix\": \"ur\",\n    \"body\": [\n      \"const ${1:ref} = useRef(${2:null});\"\n    ],\n    \"description\": \"useRef hook\"\n  },\n  \"useReducer\": {\n    \"prefix\": \"ured\",\n    \"body\": [\n      \"const [${1:state}, ${2:dispatch}] = useReducer(${3:reducer}, ${4:initialState});\"\n    ],\n    \"description\": \"useReducer hook\"\n  },\n  \"Context\": {\n    \"prefix\": \"ctx\",\n    \"body\": [\n      \"const ${1:Name}Context = createContext(${2:null});\"\n    ],\n    \"description\": \"createContext\"\n  },\n  \"Custom hook\": {\n    \"prefix\": \"hook\",\n    \"body\": [\n      \"export function use${1:Name}(${2:args}) {\",\n      \"\\t$0\",\n      \"\\treturn {};\",\n      \"}\"\n    ],\n    \"description\": \"A custom hook\"\n  },\n  \"Props interface (TS)\": {\n    \"prefix\": \"rprops\",\n    \"body\": [\n      \"interface ${1:Component}Props {\",\n      \"\\t${2:name}: ${3:string};\",\n      \"}\"\n    ],\n    \"description\": \"A props type\"\n  },\n  \"Map list\": {\n    \"prefix\": \"rmap\",\n    \"body\": [\n      \"{${1:items}.map((${2:item}) => (\",\n      \"\\t<li key={${2:item}.id}>$0</li>\",\n      \"))}\"\n    ],\n    \"description\": \"Render a list\"\n  },\n  \"Conditional render\": {\n    \"prefix\": \"rcond\",\n    \"body\": [\n      \"{${1:condition} && (\",\n      \"\\t$0\",\n      \")}\"\n    ],\n    \"description\": \"Render when true\"\n  },\n  \"Form submit\": {\n    \"prefix\": \"rform\",\n    \"body\": [\n      \"<form onSubmit={(e) => { e.preventDefault(); $0 }}>\",\n      \"\\t<input value={${1:value}} onChange={(e) => ${2:setValue}(e.target.value)} />\",\n      \"</form>\"\n    ],\n    \"description\": \"A controlled form\"\n  }\n}\n"},"README.md":{"encoding":"utf8","content":"# React Snippets\n\nComponents, hooks and common patterns for React in JavaScript and TypeScript.\n\nType a prefix and press Tab. 26 snippets.\n\n| Language | Prefix | What it inserts |\n| --- | --- | --- |\n| JavaScript | `rfc` | A function component |\n| JavaScript | `ust` | useState hook |\n| JavaScript | `ue` | useEffect hook |\n| JavaScript | `um` | useMemo hook |\n| JavaScript | `ucb` | useCallback hook |\n| JavaScript | `ur` | useRef hook |\n| JavaScript | `ured` | useReducer hook |\n| JavaScript | `ctx` | createContext |\n| JavaScript | `hook` | A custom hook |\n| JavaScript | `rprops` | A props type |\n| JavaScript | `rmap` | Render a list |\n| JavaScript | `rcond` | Render when true |\n| JavaScript | `rform` | A controlled form |\n| TypeScript | `rfc` | A function component |\n| TypeScript | `ust` | useState hook |\n| TypeScript | `ue` | useEffect hook |\n| TypeScript | `um` | useMemo hook |\n| TypeScript | `ucb` | useCallback hook |\n| TypeScript | `ur` | useRef hook |\n| TypeScript | `ured` | useReducer hook |\n| TypeScript | `ctx` | createContext |\n| TypeScript | `hook` | A custom hook |\n| TypeScript | `rprops` | A props type |\n| TypeScript | `rmap` | Render a list |\n| TypeScript | `rcond` | Render when true |\n| TypeScript | `rform` | A controlled form |\n\nThis extension runs no code and asks for no permissions.\n"}}}