| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563 |
- global !p
- def upperfirst(t):
- if len(t) < 2:
- return '' if len(t) < 1 else t.capitalize()
- return t[0].capitalize() + t[1:]
- def lowerdash(t):
- return '-'.join([ w.lower() for w in re.findall('[a-z]+|[A-Z]+[a-z]*', t) ])
- endglobal
- # Normal javascript snippets
- #
- snippet rc "require package that converts from camelCase or PascalCase to kebab-cased" b
- const $1 = require("$2`!p snip.rv=lowerdash(t[1])`");
- endsnippet
- snippet imp "import package that converts from camelCase or PascalCase to kebab-cased" b
- import $1 from "$2`!p snip.rv=lowerdash(t[1])`";
- endsnippet
- snippet impf "import File from './File'" b
- import $1 from "${2:./}${3:$1}";
- endsnippet
- snippet impn "import {nested} from" b
- import { $1 } from "$2";
- endsnippet
- snippet impa "import all from a package that converts from camelCase or PascalCase to kebab-cased" b
- import * as $1 from "$2`!p snip.rv=lowerdash(t[1])`";
- endsnippet
- snippet impp "import file without a declaration" b
- import "$1";
- endsnippet
- snippet icn "import classnames as cn" b
- import cn from "classnames";
- endsnippet
- snippet expf "export File from './File'" b
- export $1 from "${2:./}$1";
- endsnippet
- snippet expn "export nested" b
- export { $1 } from "$2";
- endsnippet
- snippet expd "export { default as File } from './File'" b
- export { default as $1 } from "${2:./}$1";
- endsnippet
- snippet expa "export * from" b
- export * from "$1";
- endsnippet
- snippet cl "console.log"
- console.log($1);
- endsnippet
- snippet clv "console.log variable"
- console.log("$1:", $1);
- endsnippet
- snippet ce "console.error"
- console.error($1);
- endsnippet
- snippet cw "console.warn"
- console.warn($1);
- endsnippet
- snippet ct "console.table"
- console.table($1);
- endsnippet
- # ==========================================
- # Test Snippets
- #
- snippet rtf "React Test File" b
- import React from "react";
- import { cleanup, render } from "react-testing-library";
- import ${1:`!v expand('%:t:r')`} from "../$1";
- afterEach(cleanup);
- describe("$1", () => {
- it("should $2", () => {
- $3
- });
- });
- endsnippet
- snippet rhtf "React Hooks Test File" b
- import {cleanup} from "react-testing-library";
- import {renderHook} from "react-hooks-testing-library";
- import $2 from "../${1:`!v expand('%:t:r')`}";
- afterEach(cleanup);
- describe("$1", () => {
- it("should $3", () => {
- $4
- });
- });
- endsnippet
- snippet desc "describe a test" b
- describe("$1", () => {
- it("should $2", () => {
- $3
- });
- });
- endsnippet
- snippet it "create a test block" b
- it("should $1", () => {
- $2
- });
- endsnippet
- snippet intf "create interface for file" b
- export interface ${1:`!v expand('%:t:r')`}$2 {
- }
- endsnippet
- # ==========================================
- # React Snippets
- #
- snippet rce "react class exported" b
- import React from "react";
- export default class ${1:`!v expand('%:t:r')`} extends React.Component {
- public render() {
- return ${2:null};$0
- }
- }
- endsnippet
- snippet rcep "react class exported (with prop interface)" b
- import React from "react";
- export interface $1Props {
- }
- export default class ${1:`!v expand('%:t:r')`} extends React.Component<$1Props> {
- public render() {
- return ${2:null};$0
- }
- }
- endsnippet
- snippet rceps "react class exported (with prop and state interfaces)" b
- import React from "react";
- export interface $1Props {
- }
- export interface $1State {
- }
- export default class ${1:`!v expand('%:t:r')`} extends React.Component<$1Props, $1State> {
- constructor(props: $1Props) {
- super(props);
- this.state = {};
- }
- public render() {
- return ${2:null};$0
- }
- }
- endsnippet
- snippet rcc "React class component" b
- class $1 extends React.Component {
- public render() {
- return null;$0
- }
- }
- endsnippet
- snippet rcon "React class constructor" b
- constructor(props: ${1:`!v expand('%:t:r')`}Props) {
- super(props);
- this.state = ${1:{}};$0
- }
- endsnippet
- snippet fce "function component export (with prop interface)" b
- import React from "react";
- export interface $1Props {
- $3
- }
- const ${1:`!v expand('%:t:r')`}: React.FC<$2$1Props> = props => {
- return ${4:null};$0
- };
- export default $1;
- endsnippet
- snippet sfce "simple function component export (no prop interface)" b
- import React from "react";
- const ${1:`!v expand('%:t:r')`}: React.FC = () => ${2:{
- return ${3:null};$0
- }};
- export default $1;
- endsnippet
- snippet fc "functional component" b
- const $1: React.FC$2 = ${3:props} => {
- return null;$0
- };
- endsnippet
- snippet rcf "react class function" b
- $1 = (${2:event}) => {
- $3
- };
- endsnippet
- # ==========================================
- # React.Component Specs and Lifecycle Section
- #
- snippet sdp "static default props" b
- public static defaultProps = {
- $2
- };
- endsnippet
- snippet sdpt "static default props (typed)" b
- public static defaultProps: DefaultProps = {
- $2
- };
- endsnippet
- snippet cdp "component default props" b
- ${1:`!v expand('%:t:r')`}.defaultProps = {
- $2
- };
- endsnippet
- snippet cdpt "component default props (typed)" b
- const defaultProps: $1DefaultProps = {
- $2
- };
- ${3:`!v expand('%:t:r')`}.defaultProps = defaultProps;
- endsnippet
- snippet spt "static prop types" b
- public static propTypes = {
- ${1:className}: ${2:PropTypes.string},$0
- };
- endsnippet
- snippet cpt "component prop types" b
- ${1:`!v expand('%:t:r')`}.propTypes = {
- ${2:className}: ${3:PropTypes.string},$0
- };
- endsnippet
- snippet gds "get derived state from props" b
- public static getDerivedStateFromProps(nextProps: ${1:`!v expand('%:t:r')`}Props, prevState: $1State) {
- return ${2:null};$0
- };
- endsnippet
- snippet gde "get derived state from props" b
- public static getDerivedStateFromError(error: Error) {
- return ${1:null};$0
- };
- endsnippet
- snippet cdm "component did mount" b
- public componentDidMount() {
- $1
- }
- endsnippet
- snippet scu "should component update" b
- public shouldComponentUpdate(nextProps: ${1:`!v expand('%:t:r')`}Props, nextState: $1State) {
- return ${1:true};$0
- }
- endsnippet
- snippet gsbu "get snapshot before update" b
- public getSnapshotBeforeUpdate(prevProps: ${1:`!v expand('%:t:r')`}Props, prevState: $1State) {
- return ${2:null};$0
- }
- endsnippet
- snippet cdu "component did update" b
- public componentDidUpdate(prevProps: ${1:`!v expand('%:t:r')`}Props, prevState: $1State, ${2:snapshot: any}) {
- $3
- }
- endsnippet
- snippet cdc "component did catch" b
- public componentDidCatch(error: Error, info: ErrorInfo) {
- $1
- }
- endsnippet
- snippet cwum "component will unmount" b
- public componentWillUnmount() {
- $1
- }
- endsnippet
- snippet r.me "React.MouseEvent" w
- React.MouseEvent$0
- endsnippet
- snippet r.te "React.TouchEvent" w
- React.TouchEvent$0
- endsnippet
- snippet r.ke "React.KeyboardEvent" w
- React.KeyboardEvent$0
- endsnippet
- snippet r.ce "React.ChangeEvent" w
- React.ChangeEvent$0
- endsnippet
- snippet r.fo "React.FocusEvent" w
- React.FocusEvent$0
- endsnippet
- snippet r.meh "React.MouseEventHandler" w
- React.MouseEventHandler$0
- endsnippet
- snippet r.teh "React.TouchEventHandler" w
- React.TouchEventHandler$0
- endsnippet
- snippet r.keh "React.KeyboardEventHandler" w
- React.KeyboardEventHandler$0
- endsnippet
- snippet r.ceh "React.ChangeEventHandler" w
- React.ChangeEventHandler$0
- endsnippet
- snippet r.foh "React.FocusEventHandler" w
- React.FocusEventHandler$0
- endsnippet
- # ==========================================
- # Hooks and effects
- #
- snippet useS "useState()" b
- const [$1, set$4`!p snip.rv=upperfirst(t[1])`] = useState$3($2);$0
- endsnippet
- snippet useE "useEffect()" b
- useEffect(() => {
- $1$0
- }$2);
- endsnippet
- snippet useC "useContext()" b
- ${5:const ${1:context} =} useContext$3($2);$0
- endsnippet
- priority -1
- snippet useC "useContext()" w
- useContext$2($1);
- endsnippet
- priority 0
- snippet useRed "useReducer(reducer, initialValue)" b
- const [${4:state}, ${5:dispatch}] = useReducer<typeof $2>(${2:reducer}, ${3:null});
- endsnippet
- snippet useRedUT "use reducer untyped" b
- const [${3:state}, ${4:dispatch}] = useReducer($1, ${2:{}});
- endsnippet
- snippet useCB "useCallback(fn, inputs)" b
- const ${1:callback} = useCallback(($2) => ${3:{
- $4
- }}, [$5]);
- endsnippet
- snippet useM "useMemo(fn, inputs)" b
- const ${1:memoized} = useMemo(() => ${2:{
- $3
- }}, [$4]);
- endsnippet
- snippet useR "useRef(defaultValue)" b
- const ${1:ref} = useRef$3(${2:null});$0
- endsnippet
- snippet useI "useImperitiveHandle(ref, createHandle, [inputs])" b
- useImperitiveHandle(${1:ref}, ${4:() => ({
- $2
- })}, ${5:[$3]})
- endsnippet
- snippet useL "useLayoutEffect()" b
- useLayoutEffect(() => {
- $1
- });
- endsnippet
- snippet useD "useDebugValue(value)" b
- useDebugValue(${1:null});
- endsnippet
- # ==========================================
- # Other useful react/redux snippets
- #
- snippet fref "React forward ref" b
- export default forwardRef<$2Element, $1Props>((props, ref) => <${1:`!v expand('%:t:r')`} {...props} ${3:forwardedRef}={ref} />);
- endsnippet
- priority -1
- snippet fref "React forward ref" w
- forwardRef<$2Element, $1Props>((props, ref) => <${1:`!v expand('%:t:r')`} {...props} ${3:forwardedRef}={ref} />);
- endsnippet
- priority 0
- snippet cc "React create context" b
- export const $1 = createContext$3($2);$0
- endsnippet
- # ==========================================
- # Prop Types Section (only for legacy)
- #
- # Inline prop types
- snippet pt.a "PropTypes.array" w
- PropTypes.array
- endsnippet
- snippet pt.ar "PropTypes.array.isRequired" w
- PropTypes.array.isRequired
- endsnippet
- snippet pt.b "PropTypes.bool" w
- PropTypes.bool
- endsnippet
- snippet pt.br "PropTypes.bool.isRequired" w
- PropTypes.bool.isRequired
- endsnippet
- snippet pt.f "PropTypes.func" w
- PropTypes.func
- endsnippet
- snippet pt.fr "PropTypes.func.isRequired" w
- PropTypes.func.isRequired
- endsnippet
- snippet pt.nu "PropTypes.number" w
- PropTypes.number
- endsnippet
- snippet pt.nur "PropTypes.number.isRequired" w
- PropTypes.number.isRequired
- endsnippet
- snippet pt.o "PropTypes.object" w
- PropTypes.object
- endsnippet
- snippet pt.or "PropTypes.object.isRequired" w
- PropTypes.object.isRequired
- endsnippet
- snippet pt.s "PropTyes.string" w
- PropTypes.string
- endsnippet
- snippet pt.sr "PropTyes.string.isRequired" w
- PropTypes.string.isRequired
- endsnippet
- snippet pt.no "PropTypes.node" w
- PropTypes.node
- endsnippet
- snippet pt.nor "PropTypes.node.isRequired" w
- PropTypes.node.isRequired
- endsnippet
- snippet pt.e "PropTypes.element" w
- PropTypes.element
- endsnippet
- snippet pt.er "PropTypes.element.isRequired" w
- PropTypes.element.isRequired
- endsnippet
- snippet pt.ao "PropTypes.arrayOf()" w
- PropTypes.arrayOf(${1:PropTypes.string})
- endsnippet
- snippet pt.aor "PropTypes.arrayOf().isRequired" w
- PropTypes.arrayOf(${1:PropTypes.string}).isRequired
- endsnippet
- snippet pt.io "PropTypes.instanceOf()" w
- PropTypes.instanceOf(${1:PropTypes.string})
- endsnippet
- snippet pt.ior "PropTypes.instanceOf().isRequired" w
- PropTypes.instanceOf(${1:PropTypes.string}).isRequired
- endsnippet
- snippet pt.oo "PropTypes.objectOf()" w
- PropTypes.objectOf(${1:PropTypes.string})
- endsnippet
- snippet pt.oor "PropTypes.objectOf().isRequired" w
- PropTypes.objectOf(${1:PropTypes.string}).isRequired
- endsnippet
- snippet pt.one "PropTypes.oneOf([])" w
- PropTypes.oneOf(["$1"$2])
- endsnippet
- snippet pt.oner "PropTypes.oneOf([]).isRequired" w
- PropTypes.oneOf(["$1"$2]).isRequired
- endsnippet
- snippet pt.onet "PropTYpes.oneOfType([])" w
- PropTypes.oneOfType([
- $1
- ])
- endsnippet
- snippet pt.onetr "PropTYpes.oneOfType([]).isRequired" w
- PropTypes.oneOfType([
- $1
- ]).isRequired
- endsnippet
- snippet pt.sh "PropTypes.shape" w
- PropTypes.shape({
- $1
- })
- endsnippet
- snippet pt.shr "PropTypes.shape.isRequired" w
- PropTypes.shape({
- $1
- }).isRequired
- endsnippet
|