<?xml version="1.0" encoding="UTF-8"?>

<!--
/*******************************************************************************
 * Copyright (c) 2000, 2005 IBM Corporation and others.
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v2.0
 * which accompanies this distribution, and is available at
 * https://www.eclipse.org/legal/epl-2.0/
 *
 * Contributors:
 *     IBM Corporation - initial API and implementation
 *******************************************************************************/
-->

<templates>

<template name="for" description="%Templates.for_array" id="org.eclipse.wst.jsdt.ui.templates.for_array" context="javaScript" enabled="true" autoinsert="false">for (var ${index} = 0; ${index} &lt; ${array}.length; ${index}++) {
	${line_selection}${cursor}
}</template>

<template name="for" description="%Templates.for_temp" id="org.eclipse.wst.jsdt.ui.templates.for_temp" context="javaScript" enabled="true" autoinsert="false">for (var ${index} = 0; ${index} &lt; ${array}.length; ${index}++) {
	var ${array_element} = ${array}[${index}];
	${cursor}
}</template>

<template name="forin" description="%Templates.for_iterable" id="org.eclipse.wst.jsdt.ui.templates.for_iterable" context="javaScript" enabled="true" autoinsert="false">for (var ${iterable_element} in ${iterable}) {
	${cursor}
}</template>

<template name="do" description="%Templates.do" id="org.eclipse.wst.jsdt.ui.templates.do" context="javaScript" enabled="true" autoinsert="false">do {
	${line_selection}${cursor}
} while (${condition});</template>

<template name="switch" description="%Templates.switch" id="org.eclipse.wst.jsdt.ui.templates.switch" context="javaScript" enabled="true" autoinsert="false">switch (${key}) {
	case ${value}:
		${cursor}
		break;

	default:
		break;
}</template>

<template name="if" description="%Templates.if" id="org.eclipse.wst.jsdt.ui.templates.if" context="javaScript" enabled="true" autoinsert="false">if (${condition}) {
	${line_selection}${cursor}
}</template>

<template name="ifelse" description="%Templates.ifelse" id="org.eclipse.wst.jsdt.ui.templates.ifelse" context="javaScript" enabled="true" autoinsert="false">if (${condition}) {
	${cursor}
} else {
	
}</template>

<template name="elseif" description="%Templates.elseif" id="org.eclipse.wst.jsdt.ui.templates.elseif" context="javaScript" enabled="true" autoinsert="false">else if (${condition}) {
	${cursor}
}</template>

<template name="else" description="%Templates.else" id="org.eclipse.wst.jsdt.ui.templates.else" context="javaScript" enabled="true" autoinsert="false">else {
	${cursor}
}</template>

<template name="try" description="%Templates.try" id="org.eclipse.wst.jsdt.ui.templates.try" context="javaScript" enabled="true" autoinsert="false">try {
	${line_selection}${cursor}
} catch (e) {
	// ${todo}: handle exception
}</template>

<template name="catch" description="%Templates.catch" id="org.eclipse.wst.jsdt.ui.templates.catch" context="javaScript" enabled="true" autoinsert="false">catch (e) {
	// ${todo}: handle exception${cursor}
}</template>

<template name="function" description="%Templates.public_method" id="org.eclipse.wst.jsdt.ui.templates.public_method" context="javaScript" enabled="true" autoinsert="false">function ${name}(${}) {
	${cursor}
}</template>

<template name="function" description="%Templates.anonymous_public_method" id="org.eclipse.wst.jsdt.ui.templates.anonymous_public_method" context="javaScript" enabled="true" autoinsert="false">function (${}) {
	${cursor}
}</template>

<template name="new" description="%Templates.new" id="org.eclipse.wst.jsdt.ui.templates.new" context="javaScript" enabled="true" autoinsert="false">var ${name} = new ${type}(${arguments});</template>

<template name="lazy" description="%Templates.lazy" id="org.eclipse.wst.jsdt.ui.templates.lazy" context="javaScript" enabled="true" autoinsert="false">if (${name:var} == null) {
	${name} = new ${type}(${arguments});
	${cursor}
}

return ${name};</template>

<template name="&lt;code&gt;" description="%Templates.code_tag" id="org.eclipse.wst.jsdt.ui.templates.code_tag" context="jsdoc" enabled="true" autoinsert="true">&lt;code&gt;${word_selection}${}&lt;/code&gt;${cursor}</template>

<template name="null" description="%Templates.code_tag_null" id="org.eclipse.wst.jsdt.ui.templates.code_tag_null" context="jsdoc" enabled="true" autoinsert="true">&lt;code&gt;null&lt;/code&gt;</template>

<template name="true" description="%Templates.code_tag_true" id="org.eclipse.wst.jsdt.ui.templates.code_tag_true" context="jsdoc" enabled="true" autoinsert="true">&lt;code&gt;true&lt;/code&gt;</template>

<template name="false" description="%Templates.code_tag_false" id="org.eclipse.wst.jsdt.ui.templates.code_tag_false" context="jsdoc" enabled="true" autoinsert="true">&lt;code&gt;false&lt;/code&gt;</template>

<template name="&lt;pre&gt;" description="%Templates.pre_tag" id="org.eclipse.wst.jsdt.ui.templates.pre_tag" context="jsdoc" enabled="true" autoinsert="true">&lt;pre&gt;${word_selection}${}&lt;/pre&gt;${cursor}</template>

<template name="&lt;b&gt;" description="%Templates.b_tag" id="org.eclipse.wst.jsdt.ui.templates.b_tag" context="jsdoc" enabled="true" autoinsert="true">&lt;b&gt;${word_selection}${}&lt;/b&gt;${cursor}</template>

<template name="&lt;i&gt;" description="%Templates.i_tag" id="org.eclipse.wst.jsdt.ui.templates.i_tag" context="jsdoc" enabled="true" autoinsert="true">&lt;i&gt;${word_selection}${}&lt;/i&gt;${cursor}</template>

<template name="@author" description="%Templates.author" id="org.eclipse.wst.jsdt.ui.templates.author" context="jsdoc" enabled="true" autoinsert="true">@author ${user}</template>

<template name="while" description="%Templates.while_condition" id="org.eclipse.wst.jsdt.ui.templates.while_condition" context="javaScript" enabled="true" autoinsert="false">while (${condition}) {
	${line_selection}${cursor}
}</template>

<template name="class" description="%Templates.class" id="org.eclipse.wst.jsdt.ui.templates.class" context="javaScript" enabled="true" autoinsert="false">class ${ClassName} {
	constructor(${}) {
		${line_selection}${cursor}
	}
}</template>

<template name="forof" description="%Templates.forof" id="org.eclipse.wst.jsdt.ui.templates.forof" context="javaScript" enabled="true" autoinsert="false">for (let ${iterable_element} of ${iterable}) {
	${line_selection}${cursor}
}</template>

<template name="constructor" description="%Templates.constructor" id="org.eclipse.wst.jsdt.ui.templates.constructor" context="javaScript" enabled="true" autoinsert="false">constructor(${}) {
	${line_selection}${cursor}
}</template>

<template name="getter" description="%Templates.getter" id="org.eclipse.wst.jsdt.ui.templates.getter" context="javaScript" enabled="true" autoinsert="false">get ${field}() {
	return ${field};
}</template>

<template name="setter" description="%Templates.setter" id="org.eclipse.wst.jsdt.ui.templates.setter" context="javaScript" enabled="true" autoinsert="false">set ${propertyName}(${param}) {
	${propertyName} = ${param};
}</template>

<template name="staticfunction" description="%Templates.staticfunction" id="org.eclipse.wst.jsdt.ui.templates.staticfunction" context="javaScript" enabled="true" autoinsert="false">static ${name}(${}) {
	// ${todo}${cursor}
}</template>

<template name="generator" description="%Templates.generator" id="org.eclipse.wst.jsdt.ui.templates.generator" context="javaScript" enabled="true" autoinsert="false">function* ${name}(${}) {
	// ${todo}${cursor}
}</template>

<template name="arrow" description="%Templates.arrow" id="org.eclipse.wst.jsdt.ui.templates.arrow" context="javaScript" enabled="true" autoinsert="false">${param} => ${output}</template>

<template name="import" description="%Templates.import" id="org.eclipse.wst.jsdt.ui.templates.import" context="javaScript" enabled="true" autoinsert="false">import ${portion} from ${module};</template>

<template name="importalias" description="%Templates.importalias" id="org.eclipse.wst.jsdt.ui.templates.importalias" context="javaScript" enabled="true" autoinsert="false">import * as ${alias} from ${module};</template>

<template name="arrowfunction" description="%Templates.arrowfunction" id="org.eclipse.wst.jsdt.ui.templates.arrowfunction" context="javaScript" enabled="true" autoinsert="false">(${params}) => {
	
}</template>

<template name="arrayforeach" description="%Templates.foreach" id="org.eclipse.wst.jsdt.ui.templates.foreach" context="javaScript" enabled="true" autoinsert="false">${array}.forEach(${currentItem} => {
	
});</template>

<template name="arraymap" description="%Templates.arraymap" id="org.eclipse.wst.jsdt.ui.templates.arraymap" context="javaScript" enabled="true" autoinsert="false">${array}.map(${currentItem} => {
	
});</template>

<template name="arrayfilter" description="%Templates.arrayfilter" id="org.eclipse.wst.jsdt.ui.templates.arrayfilter" context="javaScript" enabled="true" autoinsert="false">${array}.filter(${currentItem} =>
	${false}
);</template>

<template name="arrayevery" description="%Templates.arrayevery" id="org.eclipse.wst.jsdt.ui.templates.arrayevery" context="javaScript" enabled="true" autoinsert="false">${array}.every(${currentItem} =>
	${false}
);</template>

<template name="arraysome" description="%Templates.arraysome" id="org.eclipse.wst.jsdt.ui.templates.arraysome" context="javaScript" enabled="true" autoinsert="false">${array}.some(${currentItem} =>
	${false}
);</template>

<template name="arrayfind" description="%Templates.arrayfind" id="org.eclipse.wst.jsdt.ui.templates.arrayfind" context="javaScript" enabled="true" autoinsert="false">${array}.find(${currentItem} => {
	${line_selection}${cursor}
});</template>

<template name="arrayfindindex" description="%Templates.arrayfindindex" id="org.eclipse.wst.jsdt.ui.templates.arrayfindindex" context="javaScript" enabled="true" autoinsert="false">${array}.findIndex(${currentItem} => -1);</template>

<template name="arrayreduce" description="%Templates.arrayreduce" id="org.eclipse.wst.jsdt.ui.templates.arrayreduce" context="javaScript" enabled="true" autoinsert="false">${array}.reduce((${previousItem}, ${currentItem}) => {
	${line_selection}${cursor}
});</template>

<template name="promise" description="%Templates.promise" id="org.eclipse.wst.jsdt.ui.templates.promise" context="javaScript" enabled="true" autoinsert="false">new Promise(function(${resolve}, ${reject}) { ${line_selection}${cursor} });</template>

<template name="proxy" description="%Templates.proxy" id="org.eclipse.wst.jsdt.ui.templates.proxy" context="javaScript" enabled="true" autoinsert="false">new Proxy(${target}, ${handler});</template>

<template name="spread" description="%Templates.spread" id="org.eclipse.wst.jsdt.ui.templates.spread" context="javaScript" enabled="true" autoinsert="false">...${line_selection}${cursor}</template>

<template name="setinterval" description="%Templates.setinterval" id="org.eclipse.wst.jsdt.ui.templates.setinterval" context="javaScript" enabled="true" autoinsert="false">setInterval(() => {
	${line_selection}${cursor}
}, ${milliseconds});</template>

<template name="settimeout" description="%Templates.settimeout" id="org.eclipse.wst.jsdt.ui.templates.settimeout" context="javaScript" enabled="true" autoinsert="false">setTimeout(() => {
	${line_selection}${cursor}
}, ${milliseconds});</template>

</templates>
