{
	"if": {
		"body": [
			"if ($1) {",
			"\t$SELECTION$0",
			"}"
		],
		"triggerAssist": false,
		"prefix": "iff"
	},
	"if ... else": {
		"body": [
			"if ($1) {",
			"\t$SELECTION$0",
			"} else{",
			"\t",
			"}"
		],
		"triggerAssist": false,
		"prefix": "ife"
	},
	"if_compare": {
		"body": [
			"if ($1 \u003d\u003d ${2:true}) {",
			"\t$0",
			"} else{",
			"\t",
			"}"
		],
		"triggerAssist": false,
		"prefix": "ifc"
	},
	"ifiOS": {
		"body": [
			"if (uni.getSystemInfoSync().platform == \"ios\") {",
			"\t$1",
			"}"
		],
		"triggerAssist": false,
		"project": "uni-app",
		"prefix": "ifios"
	},
	"ifAndroid": {
		"body": [
			"if (uni.getSystemInfoSync().platform == \"android\") {",
			"\t$1",
			"}"
		],
		"triggerAssist": false,
		"project": "uni-app",
		"prefix": "ifandroid",
        "scope": "source$|(source ! meta.import & meta.block$)|(source !meta.definition.variable & meta.var$)&(!text.html.vue source.js.embedded.html source.js)"
	},
	"clog": {
		"prefix": "clog",
		"body": [
			"console.log($1);"
		],
		"description": "%clog.description%"
	},
	"clogvar": {
		"prefix": "clogvar",
		"body": [
			"console.log(\"$1: \",$1);"
		],
		"description": "%clogvar.description%"
	},
	"clogjson": {
		"prefix": "clogjson",
		"body": [
			"console.log(\"$1: \" + JSON.stringify($1));"
		],
		"description": "%clogjson.description%"
	},
	"console.dir": {
		"body": [
			"console.dir($1)"
		],
		"triggerAssist": true,
		"prefix": "cdir"
	},
	"function": {
		"body": [
			"function ${1:function_name} ($2) {",
			"\t$SELECTION$0",
			"}"
		],
		"triggerAssist": false,
		"prefix": "funn"
	},
	"function_anonymous": {
		"body": [
			"function ($1) {",
			"\t$0",
			"}"
		],
		"triggerAssist": false,
		"prefix": "funan"
	},
	"function*": {
		"body": [
			"function* ${1:name}($2) {",
			"\tyield $0;",
			"}"
		],
		"triggerAssist": false,
		"prefix": "fung"
	},
	"Arrow function": {
		"body": [
			"($1) \u003d\u003e {",
			"\t$0",
			"}"
		],
		"triggerAssist": false,
		"prefix": "arrow"
	},
	"function_closures": {
		"body": [
			"(function ($1) {",
			"\t$0",
			"})($2)"
		],
		"triggerAssist": false,
		"prefix": "funcl"
	},
	"async method_name(){}": {
		"prefix": "asyncm",
		"scope": "source.js meta.objectliteral.js",
		"body": [
			"async ${1:method_name}($2){",
			"\t$0",
			"}"
		]
	},
	"for (...) {...}": {
		"body": [
			"for ($1) {",
			"\t$SELECTION$0",
			"}"
		],
		"triggerAssist": false,
		"prefix": "forr"
	},
	"for let": {
		"body": [
			"for (let i \u003d 0; i \u003c ${1:Things}.length; i++) {",
			"\t${1:Things}[i]",
			"}"
		],
		"triggerAssist": false,
		"prefix": "forl"
	},
	"fori": {
		"body": [
			"for (var i \u003d 0; i \u003c ${1:Things}.length; i++) {",
			"\t${1:Things}[i]",
			"}"
		],
		"triggerAssist": false,
		"prefix": "fori"
	},
	"for...of": {
		"body": [
			"for (let ${1:s} of ${2:sequence}) {",
			"\t$0",
			"}"
		],
		"triggerAssist": false,
		"prefix": "forof"
	},
	"for let in": {
		"body": [
			"for (let ${1:var1} in ${2:var2}) {",
			"\t$0",
			"}"
		],
		"triggerAssist": false,
		"prefix": "forli"
	},
	"switch_case": {
		"body": [
			"switch (${1}){",
			"\tcase ${2:value}:",
			"\t\tbreak;",
			"\tdefault:",
			"\t\tbreak;",
			"}"
		],
		"triggerAssist": false,
		"prefix": "switchcase"
	},
	"try{}catch(e)": {
		"body": [
			"try{",
			"\t$SELECTION$0",
			"}catch(e){",
			"\t//TODO handle the exception",
			"}"
		],
		"triggerAssist": false,
		"prefix": "trycatch"
	},
	"Key:Value": {
		"body": [
			"${1:key} : ${2:value},"
		],
		"triggerAssist": false,
		"scope": "source meta.var.expr meta.objectliteral",
		"prefix": "kv"
	},
	"while": {
		"body": [
			"while (${1:condition}){",
			"\t$SELECTION$0",
			"}"
		],
		"triggerAssist": false,
		"prefix": "whilee"
	},
	"Class Extends": {
		"body": [
			"class ${1:name} extends ${2:AnotherClass} {",
			"\tconstructor(${3:arg}) {",
			"\t\t$0",
			"\t}",
			"\t",
			"}"
		],
		"triggerAssist": false,
		"prefix": "classextends"
	},
	"Export": {
		"body": [
			"export ${1:default} ${2:bar}"
		],
		"triggerAssist": false,
		"prefix": "export"
	},
	"export default": {
		"body": [
			"export default {",
			"\t$0",
			"}"
		],
		"triggerAssist": false,
		"prefix": "edefault"
	},
	"module.exports": {
		"body": [
			"module.exports \u003d {",
			"\t$0",
			"}"
		],
		"triggerAssist": false,
		"prefix": "mexports"
	},
	"Class": {
		"body": [
			"class ${1:name} {",
			"\tconstructor(${2:arg}) {",
			"\t\t$0",
			"\t}",
			"\t",
			"}"
		],
		"triggerAssist": false,
		"prefix": "class"
	},
	"Export Class": {
		"body": [
			"export class ${1:name} {",
			"\t$0",
			"}"
		],
		"triggerAssist": false,
		"prefix": "exportclass"
	},
	"Import": {
		"body": [
			"import ${1:foo} from \"${2:bar}\""
		],
		"triggerAssist": false,
		"prefix": "imfrom"
	},
	"typeof!": {
		"body": [
			"typeof($1)!\u003d\"${2:undefined}\""
		],
		"triggerAssist": false,
		"prefix": "typeof!"
	},
	"with": {
		"body": [
			"with ($1){",
			"\t$SELECTION$0",
			"}"
		],
		"triggerAssist": false,
		"prefix": "withh"
	},
	"return true": {
		"body": [
			"return true;"
		],
		"triggerAssist": false,
		"prefix": "rtrue"
	},
	"return false": {
		"body": [
			"return false;"
		],
		"triggerAssist": false,
		"prefix": "rfalse"
	},
	"var a\u003d[];": {
		"body": [
			"var ${1:a}\u003d[$2];"
		],
		"triggerAssist": false,
		"project": "",
		"prefix": "vara"
	},
	"var c \u003d canvas": {
		"body": [
			"var ${2:c} \u003d document.getElementById(\"$1\").getContext(\"2d\");"
		],
		"triggerAssist": true,
		"prefix": "varc"
	},
	"var i\u003d0;": {
		"body": [
			"var ${1:i}\u003d${2:0};"
		],
		"triggerAssist": false,
		"prefix": "vari"
	},
	"var xhr": {
		"body": [
			"var ${1:xhr} \u003d new XMLHttpRequest();",
			"xhr.open(\"${2:POST}\",\"$3\",${4:true});"
		],
		"triggerAssist": false,
		"prefix": "varxhr"
	},
	"var l\u003da.length;": {
		"body": [
			"var ${1:l}\u003d${2:a}.length;"
		],
		"triggerAssist": false,
		"prefix": "varl"
	},
	"var s\u003d\"\";": {
		"body": [
			"var ${1:s}\u003d\"$2\";"
		],
		"triggerAssist": false,
		"prefix": "vars"
	},
	"var currentWebview": {
		"body": [
			"var currentWebview = this.\\$scope.\\$getAppWebview()"
		],
		"triggerAssist": false,
		"project": "uni-app",
		"prefix": "varcw"
	},
	"setTimeout function": {
		"body": [
			"setTimeout(function() {$0}, ${1:10});"
		],
		"triggerAssist": false,
		"prefix": "settimeout"
	},
	"$ (document.getElementById)": {
		"body": [
			"document.getElementById(\"$1\")"
		],
		"triggerAssist": true,
		"project": "Web,App,Wap2App",
		"prefix": "$$$"
	},
	"document.getElementById": {
		"body": [
			"document.getElementById(\"$1\")"
		],
		"triggerAssist": true,
		"prefix": "dg"
	},
	"document.querySelectorAll": {
		"body": [
			"document.querySelectorAll(\"$1\")"
		],
		"triggerAssist": true,
		"prefix": "dqs"
	},
	"document.write": {
		"body": [
			"document.write(\"$1\")"
		],
		"triggerAssist": false,
		"prefix": "dw"
	},
	"navigator.userAgent;": {
		"body": [
			"navigator.userAgent"
		],
		"triggerAssist": false,
		"prefix": "nuser"
	},
	"$(\".\")": {
		"body": [
			"$(\".$1\")"
		],
		"triggerAssist": true,
		"project": "Web,App,Wap2App",
		"prefix": "dlclass"
	},
	"$(\"\")": {
		"body": [
			"$(\"$1\")"
		],
		"triggerAssist": true,
		"prefix": "dl"
	},
	"$(\"#\")": {
		"body": [
			"$(\"#$1\")"
		],
		"triggerAssist": true,
		"prefix": "dlid"
	},
	"plus.webview": {
		"body": [
			"plus.webview."
		],
		"triggerAssist": true,
		"project": "uni-app,App,Wap2App",
		"prefix": "pweb"
	},
	"plus.nativeUI.alert": {
		"body": [
			"plus.nativeUI.alert($1)"
		],
		"triggerAssist": false,
		"project": "uni-app,App,Wap2App",
		"prefix": "pnalert"
	},
	"@return": {
		"body": [
			"@return {${1:type}}"
		],
		"triggerAssist": false,
		"scope": "source.js comment.block.documentation.js | text.html.vue source.js.embedded.html comment.block.js",
		"prefix": "@return"
	},
	"@description": {
		"body": [
			"@description $0"
		],
		"triggerAssist": false,
		"scope": "source.js comment.block.documentation.js | text.html.vue source.js.embedded.html comment.block.js",
		"prefix": "@description"
	},
	"@example": {
		"body": [
			"@example $0"
		],
		"triggerAssist": false,
		"scope": "source.js comment.block.documentation.js | text.html.vue source.js.embedded.html comment.block.js",
		"prefix": "@example"
	},
	"@alias": {
		"body": [
			"@alias $0"
		],
		"triggerAssist": false,
		"scope": "source.js comment.block.documentation.js | text.html.vue source.js.embedded.html comment.block.js",
		"prefix": "@alias"
	},
	"@tutorial": {
		"body": [
			"@tutorial ${1:url}"
		],
		"triggerAssist": false,
		"scope": "source.js comment.block.documentation.js | text.html.vue source.js.embedded.html comment.block.js",
		"prefix": "@tutorial"
	},
	"@property": {
		"body": [
			"@property {${1:type}} ${2:prop_name} $0"
		],
		"triggerAssist": false,
		"scope": "source.js comment.block.documentation.js | text.html.vue source.js.embedded.html comment.block.js",
		"prefix": "@property"
	},
	"@property with values": {
		"body": [
			"@property {${1:type}} ${2:prop_name} = [${3:value}] $0"
		],
		"triggerAssist": false,
		"scope": "source.js comment.block.documentation.js | text.html.vue source.js.embedded.html comment.block.js",
		"prefix": "@propertyvalues"
	},
	"@event": {
		"body": [
			"@event {Function(${1})} ${2:name} $0"
		],
		"triggerAssist": false,
		"scope": "source.js comment.block.documentation.js | text.html.vue source.js.embedded.html comment.block.js",
		"prefix": "@event"
	},
	"@param": {
		"body": [
			"@param {${1:type}} ${2:$FN_PARAMS} $0"
		],
		"triggerAssist": false,
		"scope": "source.js comment.block.documentation.js | text.html.vue source.js.embedded.html comment.block.js",
		"prefix": "@param"
	},
	"@param with values": {
		"body": [
			"@param {${1:type}} ${2:$FN_PARAMS} = [${3:value}] $0"
		],
		"triggerAssist": false,
		"scope": "source.js comment.block.documentation.js | text.html.vue source.js.embedded.html comment.block.js",
		"prefix": "@paramvalues"
	},
	"@extends": {
		"body": [
			"@extends {${1:parent_type}}"
		],
		"triggerAssist": false,
		"scope": "source.js comment.block.documentation.js | text.html.vue source.js.embedded.html comment.block.js",
		"prefix": "@extends"
	},
	"@type": {
		"body": [
			"@type {${1:type}}"
		],
		"triggerAssist": false,
		"scope": "comment.doc.js",
		"prefix": "@type"
	},
	"Getter": {
		"body": [
			"get ${1:name}() {",
			"\t$0",
			"}"
		],
		"triggerAssist": false,
		"scope": "JS_INCLASSBODY",
		"prefix": "getter"
	},
	"Setter": {
		"body": [
			"set ${1:property}(${2:value}) {",
			"\t$0",
			"}"
		],
		"triggerAssist": false,
		"scope": "class.body.js",
		"prefix": "setter"
	},
	"typeof": {
		"body": [
			"typeof($1)\u003d\u003d\"${2:undefined}\""
		],
		"triggerAssist": false,
		"prefix": "typeoff"
	},
	"Prototype": {
		"body": [
			"${1:class_name}.prototype.${2:method_name} \u003d function(${3:first_argument}) {",
			"\t${0:// body...}",
			"};"
		],
		"triggerAssist": false,
		"prefix": "proto"
	},
	"Object Method": {
		"body": [
			"${1:method_name}: function(${2:attribute}){",
			"\t$0",
			"}${3:,}"
		],
		"triggerAssist": false,
		"prefix": ":f"
	},
	"Object key - key: \"value\"": {
		"body": [
			"${1:key}: ${2:\"${3:value}\"}${4:, }"
		],
		"triggerAssist": false,
		"prefix": ":"
	},
	"Object Value JS": {
		"body": [
			"${1:value_name}:${0:value},"
		],
		"triggerAssist": false,
		"prefix": ":,"
	},
	"Object Method String": {
		"body": [
			"\u0027${1:${2:#thing}:${3:click}}\u0027: function(element){",
			"\t$0",
			"}${4:,}"
		],
		"triggerAssist": false,
		"prefix": ":f"
	},
	"constructor": {
		"body": [
			"constructor(${1:arg}) {",
			"    $0",
			"}"
		],
		"triggerAssist": false,
		"scope": "class.body.js",
		"prefix": "cons"
	},
	"use strict": {
		"body": [
			"\"use strict\""
		],
		"triggerAssist": false,
		"prefix": "use"
	},
	"dbget": {
		"body": [
			"db.collection('$1')",
			"\t.get()",
			"\t.then((res) => {",
			"\t\t$2",
			"\t})",
			"\t.catch((err) => {",
			"\t\t$3",
			"\t})"
		],
		"description": "%dbget.description%",
		"prefix": "dbget"
	},
	"dbadd": {
		"body": [
			"db.collection('$1')",
			"\t.add($2)",
			"\t.then((res) => {",
			"\t\t$3",
			"\t})",
			"\t.catch((err) => {",
			"\t\t$4",
			"\t})"
		],
		"description": "%dbadd.description%",
		"prefix": "dbadd"
	},
	"dbupdate": {
		"body": [
			"db.collection('$1')",
			"\t.where($2)",
			"\t.update($3)",
			"\t.then((res) => {",
			"\t\t$4",
			"\t})",
			"\t.catch((err) => {",
			"\t\t$5",
			"\t})"
		],
		"description": "%dbupdate.description%",
		"prefix": "dbupdate"
	},
	"dbremove": {
		"body": [
			"db.collection('$1')",
			"\t.where($2)",
			"\t.remove($3)",
			"\t.then((res) => {",
			"\t\t$4",
			"\t})",
			"\t.catch((err) => {",
			"\t\t$5",
			"\t})"
		],
		"description": "%dbremove.description%",
		"prefix": "dbremove"
	}
}
