<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>groupInfo</key>
	<dict>
		<key>expandAfterMode</key>
		<integer>0</integer>
		<key>groupName</key>
		<string>JavaScript</string>
		<key>notes</key>
		<string></string>
	</dict>
	<key>snippetsTE2</key>
	<array>
		<dict>
			<key>abbreviation</key>
			<string>title</string>
			<key>abbreviationMode</key>
			<integer>1</integer>
			<key>creationDate</key>
			<date>2022-09-15T05:03:01Z</date>
			<key>label</key>
			<string>Convert clipboard to title case</string>
			<key>modificationDate</key>
			<date>2022-09-15T05:03:01Z</date>
			<key>plainText</key>
			<string>function capitalizeFirstLetter(input){
    return input.charAt(0).toUpperCase() + input.substring(1);
}

var lowerCaseWords = [
"a",
"an",
"the",
"for",
"and",
"nor",
"but",
"or",
"yet",
"so",
"such",
"as",
"at",
"around",
"by",
"after",
"along",
"for",
"from",
"of",
"on",
"to",
"with",
"without"
];

var words = TextExpander.pasteboardText.toLowerCase().split(" ");

for(var i = 0; i &lt; words.length; i++){
    if(!lowerCaseWords.includes(words[i]) || i == 0 || i == words.length-1) words[i] = capitalizeFirstLetter(words[i]);
}

words.join(" ");</string>
			<key>snippetType</key>
			<integer>4</integer>
			<key>uuidString</key>
			<string>E8FBADC3-51D6-4875-8A29-CFBA4A096C56</string>
		</dict>
		<dict>
			<key>abbreviation</key>
			<string>trimws</string>
			<key>abbreviationMode</key>
			<integer>1</integer>
			<key>creationDate</key>
			<date>2022-09-15T05:03:01Z</date>
			<key>label</key>
			<string>Trim whitespace from clipboard text</string>
			<key>modificationDate</key>
			<date>2022-09-15T05:03:01Z</date>
			<key>plainText</key>
			<string>var input = TextExpander.pasteboardText;

input.trim();</string>
			<key>snippetType</key>
			<integer>4</integer>
			<key>uuidString</key>
			<string>EFC7CC15-06E3-4263-B45D-C1B10E882002</string>
		</dict>
		<dict>
			<key>abbreviation</key>
			<string>ph2</string>
			<key>abbreviationMode</key>
			<integer>0</integer>
			<key>creationDate</key>
			<date>2022-09-15T05:03:01Z</date>
			<key>label</key>
			<string>Copy 10-digit phone number to clipboard | expands as (123) 456-7890</string>
			<key>modificationDate</key>
			<date>2022-09-15T05:03:01Z</date>
			<key>plainText</key>
			<string>var s2 = (""+TextExpander.pasteboardText).replace(/\D/g, '');
var m = s2.match(/^(\d{3})(\d{3})(\d{4})$/);
if(m) `(${m[1]}) ${m[2]}-${m[3]}`;
else "";</string>
			<key>snippetType</key>
			<integer>4</integer>
			<key>uuidString</key>
			<string>48BFAFF4-4BCF-4E26-8F84-7631FB5D7F51</string>
		</dict>
		<dict>
			<key>abbreviation</key>
			<string>ph1</string>
			<key>abbreviationMode</key>
			<integer>0</integer>
			<key>creationDate</key>
			<date>2022-09-15T05:03:01Z</date>
			<key>label</key>
			<string>Copy 10-digit phone number to clipboard | expands as 123.456.7890</string>
			<key>modificationDate</key>
			<date>2022-09-15T05:03:01Z</date>
			<key>plainText</key>
			<string>var s2 = (""+TextExpander.pasteboardText).replace(/\D/g, '');
var m = s2.match(/^(\d{3})(\d{3})(\d{4})$/);
if(m) m[1] + "." + m[2] + "." + m[3];
else "";</string>
			<key>snippetType</key>
			<integer>4</integer>
			<key>uuidString</key>
			<string>56D11F9C-1F40-4D80-B609-73473E80C58F</string>
		</dict>
		<dict>
			<key>abbreviation</key>
			<string>pretty</string>
			<key>abbreviationMode</key>
			<integer>0</integer>
			<key>creationDate</key>
			<date>2022-09-15T05:03:01Z</date>
			<key>label</key>
			<string></string>
			<key>modificationDate</key>
			<date>2022-09-15T05:03:01Z</date>
			<key>plainText</key>
			<string>JSON.stringify(%clipboard, null, 2);</string>
			<key>snippetType</key>
			<integer>4</integer>
			<key>uuidString</key>
			<string>553EC4D8-E635-450E-B9DD-EBD43D40D363</string>
		</dict>
		<dict>
			<key>abbreviation</key>
			<string>path</string>
			<key>abbreviationMode</key>
			<integer>0</integer>
			<key>creationDate</key>
			<date>2022-09-15T05:03:01Z</date>
			<key>label</key>
			<string>Get URL path from clipboard</string>
			<key>modificationDate</key>
			<date>2022-09-15T05:03:01Z</date>
			<key>plainText</key>
			<string>/************
Description: This snippet will paste the path of the url on the clipboard.

Instructions:

1. Copy a full url to the clipboard.
2. Expand snippet.

Sample Input:

https://stackoverflow.com/questions/6941533/get-protocol-domain-and-port-from-url

Output:

/questions/6941533/get-protocol-domain-and-port-from-url
*************/
// ht: https://stackoverflow.com/questions/6941533/get-protocol-domain-and-port-from-url
const url = new URL(TextExpander.pasteboardText);

url.pathname;
</string>
			<key>snippetType</key>
			<integer>4</integer>
			<key>uuidString</key>
			<string>5DE4A83C-D412-4888-BF44-3CBB2B5FC567</string>
		</dict>
		<dict>
			<key>abbreviation</key>
			<string>quotereply</string>
			<key>abbreviationMode</key>
			<integer>0</integer>
			<key>creationDate</key>
			<date>2022-09-15T05:03:01Z</date>
			<key>label</key>
			<string>Quote text on clipboard</string>
			<key>modificationDate</key>
			<date>2022-09-15T05:03:01Z</date>
			<key>plainText</key>
			<string>/************
Description: This snippet will use &gt;&gt; to quote reply text copied to your clipboard.

Instructions:

1. Copy the text you'd like to quote to your clipboard.
2. Expand snippet.

Sample Input:

Dictumst imperdiet porta lacinia. Blandit nec pellentesque himenaeos fames elementum leo sagittis. Dictum conubia viverra at nullam orci vivamus. Torquent accumsan etiam. Tempor accumsan suscipit. Integer nostra himenaeos praesent fermentum.

Output:

&gt;&gt;Dictumst imperdiet porta lacinia. Blandit nec pellentesque himenaeos fames elementum leo sagittis. Dictum conubia viverra
&gt;&gt;at nullam orci vivamus. Torquent accumsan etiam. Tempor accumsan suscipit. Integer nostra himenaeos praesent
&gt;&gt;fermentum.
*************/

var theString = TextExpander.pasteboardText;

var theLines = theString.split("\n");

var output = "";

for(aLine of theLines){
    var theWords = aLine.split(" ");
    var ct = 0;
    if(theWords.length &gt; 1) output = output + "&gt;&gt;";
    for(aWord of theWords){
        if(ct &lt; 15) output = output + " " + aWord;
        else{
            output = output + "\n&gt;&gt;" + aWord;
            ct = 1;
			}
			ct++;
    }
    output = output + "\n";
}

output;</string>
			<key>snippetType</key>
			<integer>4</integer>
			<key>uuidString</key>
			<string>ADD17ADC-F45A-44C2-8CCE-ACAF5EF385D2</string>
		</dict>
		<dict>
			<key>abbreviation</key>
			<string>toCSV</string>
			<key>abbreviationMode</key>
			<integer>1</integer>
			<key>creationDate</key>
			<date>2022-09-15T05:03:01Z</date>
			<key>label</key>
			<string>Lines to CSV</string>
			<key>modificationDate</key>
			<date>2022-09-15T05:03:01Z</date>
			<key>plainText</key>
			<string>// Lines to CSV: Turns a regular list of elements to a list of comma separated elements (CSV)
// Courtesy of Guillermo Ermel
TextExpander.pasteboardText.replace(/(\n|\r)+\b/ig, ", ")</string>
			<key>snippetType</key>
			<integer>4</integer>
			<key>uuidString</key>
			<string>2B1C6AA0-6A13-41CA-BC22-341884247DA0</string>
		</dict>
		<dict>
			<key>abbreviation</key>
			<string>renumber</string>
			<key>abbreviationMode</key>
			<integer>0</integer>
			<key>creationDate</key>
			<date>2022-09-15T05:03:01Z</date>
			<key>label</key>
			<string>Renumber list on clipboard</string>
			<key>modificationDate</key>
			<date>2022-09-15T05:03:01Z</date>
			<key>plainText</key>
			<string>/************
Description: This snippet will renumber a list that is copied to your clipboard.

Instructions:

1. Copy an incorrectly numbered list to your clipboard.
2. Expand snippet.

Sample Input

1. item 1
3. item 2
2. item 3

Output:

1. item 1
2. item 2
3. item 3
*************/

inputString = "Line 0\n" + TextExpander.pasteboardText;

// attempt to remove zero width space
inputString = inputString.replace(/[\u200B-\u200D\uFEFF]/g, '');

var regExp = /\d+(.)/;
var matches = regExp.exec(inputString);
listDelimiter = matches[1];

var items = inputString.split(/[\r\n][0-9]+./);

var output = "";

for(var i = 1; i &lt; items.length; i++){
    output = output + i + listDelimiter + items[i];
    if(i != items.length-1) output = output + "\n";
}

output;</string>
			<key>snippetType</key>
			<integer>4</integer>
			<key>uuidString</key>
			<string>2C128540-E107-4FF9-B7DA-01A7614C180C</string>
		</dict>
		<dict>
			<key>abbreviation</key>
			<string>alpha</string>
			<key>abbreviationMode</key>
			<integer>1</integer>
			<key>creationDate</key>
			<date>2022-09-15T05:03:01Z</date>
			<key>label</key>
			<string>Alphabetize list on clipboard</string>
			<key>modificationDate</key>
			<date>2022-09-15T05:03:01Z</date>
			<key>plainText</key>
			<string>/************
Description: This snippet will alphabetize a list

Instructions:

1. Copy a list to your clipboard
2. Expand snippet.

Sample Input:

Banana
Orange
Apple


Output:

Apple
Banana
Orange
*************/

TextExpander.pasteboardText.split("\n").sort().join("\n");</string>
			<key>snippetType</key>
			<integer>4</integer>
			<key>uuidString</key>
			<string>7D113ED1-859D-4237-8EC7-369DFCC78323</string>
		</dict>
		<dict>
			<key>abbreviation</key>
			<string>makepopup</string>
			<key>abbreviationMode</key>
			<integer>2</integer>
			<key>creationDate</key>
			<date>2022-09-15T05:03:01Z</date>
			<key>label</key>
			<string>Create a popup menu from options on clipboard</string>
			<key>modificationDate</key>
			<date>2022-09-15T05:03:01Z</date>
			<key>plainText</key>
			<string>// This snippet expects one option per line

var options = TextExpander.pasteboardText.split(/\r\n|\n|\r/);

TextExpander.pasteboardText = "%" + "fillpopup:name=My Popup:" + options.join(":") + "%";

`The popup menu macro code is now on your clipboard. Please do the following:

1. Create a new snippet.
2. Set the content to AppleScript via the dropdown menu above the content.
3. Paste your clipboard into the content area.
4. Set the content to Plain text via the dropdown menu above the content.

Here is a brief video demonstration:

https://share.getcloudapp.com/2NuwB5yp
`</string>
			<key>snippetType</key>
			<integer>4</integer>
			<key>uuidString</key>
			<string>7D6E1B2C-E787-451D-80AB-92E1BCB2872A</string>
		</dict>
		<dict>
			<key>abbreviation</key>
			<string>all</string>
			<key>abbreviationMode</key>
			<integer>0</integer>
			<key>creationDate</key>
			<date>2022-09-15T05:03:01Z</date>
			<key>label</key>
			<string>Summary Snippet</string>
			<key>modificationDate</key>
			<date>2022-09-15T05:03:01Z</date>
			<key>plainText</key>
			<string>%fillpart:name=Convert clipboard to camel case%%snippet:camel%%fillpartend%
%fillpart:name=Convert clipboard to title case%%snippet:title%%fillpartend%
%fillpart:name=Trim whitespace from clipboard text%%snippet:trimws%%fillpartend%
%fillpart:name=Copy 10-digit phone number to clipboard | expands as (123) 456-7890%%snippet:ph2%%fillpartend%
%fillpart:name=Copy 10-digit phone number to clipboard | expands as 123.456.7890%%snippet:ph1%%fillpartend%
%fillpart:name=Quote text%%snippet:quotereply%%fillpartend%
%fillpart:name=Get URL path from clipboard%%snippet:geturlpath%%fillpartend%
%fillpart:name=Renumber list%%snippet:renumber%%fillpartend%
%fillpart:name=Alphabetize list%%snippet:alpha%%fillpartend%
%fillpart:name=Reverse%%snippet:clip.reverse%%fillpartend%
%filltop%</string>
			<key>snippetType</key>
			<integer>0</integer>
			<key>uuidString</key>
			<string>A7180D71-FC53-40F0-865C-33FFA6369A71</string>
		</dict>
		<dict>
			<key>abbreviation</key>
			<string>reverse</string>
			<key>abbreviationMode</key>
			<integer>0</integer>
			<key>creationDate</key>
			<date>2022-09-15T05:03:01Z</date>
			<key>label</key>
			<string></string>
			<key>modificationDate</key>
			<date>2022-09-15T05:03:01Z</date>
			<key>plainText</key>
			<string>TextExpander.pasteboardText.split("").reverse().join("");</string>
			<key>snippetType</key>
			<integer>4</integer>
			<key>uuidString</key>
			<string>29BD66E0-1BF9-47B0-B1E4-94CE1B8FA109</string>
		</dict>
		<dict>
			<key>abbreviation</key>
			<string>camel</string>
			<key>abbreviationMode</key>
			<integer>1</integer>
			<key>creationDate</key>
			<date>2022-09-15T05:03:01Z</date>
			<key>label</key>
			<string>Convert clipboard to camel case</string>
			<key>modificationDate</key>
			<date>2022-09-15T05:03:01Z</date>
			<key>plainText</key>
			<string>// h/t: https://www.geeksforgeeks.org/how-to-convert-string-to-camel-case-in-javascript/
function toCamelCase(str) { 
    return str.replace(/(?:^\w|[A-Z]|\b\w)/g, function(word, index) { 
        return index == 0 ? word.toLowerCase() : word.toUpperCase();
        }).replace(/\s+/g, ''); 
} 

toCamelCase(TextExpander.pasteboardText);</string>
			<key>snippetType</key>
			<integer>4</integer>
			<key>uuidString</key>
			<string>1E96AB65-24A1-45A2-B1B9-6331251FDD2B</string>
		</dict>
		<dict>
			<key>abbreviation</key>
			<string>fandr</string>
			<key>abbreviationMode</key>
			<integer>1</integer>
			<key>creationDate</key>
			<date>2022-09-15T05:03:01Z</date>
			<key>label</key>
			<string>Find and replace on clipboard (this is case sensitive)</string>
			<key>modificationDate</key>
			<date>2022-09-15T05:03:01Z</date>
			<key>plainText</key>
			<string>// 
TextExpander.pasteboardText.replace(/%filltext:name=Find%/g,"%filltext:name=Replace%")%filltop%</string>
			<key>snippetType</key>
			<integer>4</integer>
			<key>uuidString</key>
			<string>D37FC638-01FC-4DC5-88AE-BDC64FFE7325</string>
		</dict>
		<dict>
			<key>abbreviation</key>
			<string>case</string>
			<key>abbreviationMode</key>
			<integer>1</integer>
			<key>creationDate</key>
			<date>2022-09-15T05:03:01Z</date>
			<key>label</key>
			<string>Fill-in for different case options | #skip</string>
			<key>modificationDate</key>
			<date>2022-09-15T05:03:01Z</date>
			<key>plainText</key>
			<string>%fillpart:name=Title Case:default=no%%snippet:titlecase%%fillpartend%
%fillpart:name=camelCase:default=no%%snippet:case-camel%%fillpartend%%filltop%</string>
			<key>snippetType</key>
			<integer>0</integer>
			<key>uuidString</key>
			<string>C02EBCF8-514A-4CB1-B519-5436C4CAAEC2</string>
		</dict>
		<dict>
			<key>abbreviation</key>
			<string>phx</string>
			<key>abbreviationMode</key>
			<integer>1</integer>
			<key>creationDate</key>
			<date>2022-09-15T05:03:01Z</date>
			<key>label</key>
			<string>Fill-in for different phone number options | #skip</string>
			<key>modificationDate</key>
			<date>2022-09-15T05:03:01Z</date>
			<key>plainText</key>
			<string>%fillpart:name=123.456.7890:default=no%%snippet:ph1%%fillpartend%
%fillpart:name=(123) 456-7890:default=no%%snippet:ph2%%fillpartend%%filltop%</string>
			<key>snippetType</key>
			<integer>0</integer>
			<key>uuidString</key>
			<string>A40020A8-D120-4842-88CE-D5DD76DED17D</string>
		</dict>
		<dict>
			<key>abbreviation</key>
			<string>toLines</string>
			<key>abbreviationMode</key>
			<integer>1</integer>
			<key>creationDate</key>
			<date>2022-09-15T05:03:01Z</date>
			<key>label</key>
			<string>CSV to Newline</string>
			<key>modificationDate</key>
			<date>2022-09-15T05:03:01Z</date>
			<key>plainText</key>
			<string>// CSV to Newline: Turns a list of comma separated elements (CSV) to a list with each element on its own line
// Courtesy of Guillermo Ermel
TextExpander.pasteboardText.replace(/\s*\,\s*/gim, "\n")</string>
			<key>snippetType</key>
			<integer>4</integer>
			<key>uuidString</key>
			<string>6611361D-1DA5-47AC-8298-8A3ECBEC5249</string>
		</dict>
		<dict>
			<key>abbreviation</key>
			<string>,tmto</string>
			<key>abbreviationMode</key>
			<integer>0</integer>
			<key>creationDate</key>
			<date>2022-09-15T05:03:01Z</date>
			<key>label</key>
			<string>TweenMax.to</string>
			<key>modificationDate</key>
			<date>2022-09-15T05:03:01Z</date>
			<key>plainText</key>
			<string>TweenMax.to(%filltext:name=el%, %filltext:name=time:default=0.2%, {
  %|
});</string>
			<key>snippetType</key>
			<integer>0</integer>
			<key>uuidString</key>
			<string>1355DF55-81F5-4617-9EF3-A7B04E5B26E5</string>
		</dict>
		<dict>
			<key>abbreviation</key>
			<string>,siaf</string>
			<key>abbreviationMode</key>
			<integer>0</integer>
			<key>creationDate</key>
			<date>2022-09-15T05:03:01Z</date>
			<key>label</key>
			<string>selfInvokingFunction</string>
			<key>modificationDate</key>
			<date>2022-09-15T05:03:01Z</date>
			<key>plainText</key>
			<string>(function() {
  
}());</string>
			<key>snippetType</key>
			<integer>0</integer>
			<key>uuidString</key>
			<string>EEAD540A-34A9-4B91-9525-A02EF4DE9FEA</string>
		</dict>
		<dict>
			<key>abbreviation</key>
			<string>,usestrict</string>
			<key>abbreviationMode</key>
			<integer>0</integer>
			<key>creationDate</key>
			<date>2022-09-15T05:03:01Z</date>
			<key>label</key>
			<string>Use Strict</string>
			<key>modificationDate</key>
			<date>2022-09-15T05:03:01Z</date>
			<key>plainText</key>
			<string>'use strict';</string>
			<key>snippetType</key>
			<integer>0</integer>
			<key>uuidString</key>
			<string>1CFA6414-ABF8-4739-B9D1-27490372856D</string>
		</dict>
		<dict>
			<key>abbreviation</key>
			<string>,es6objtemplate</string>
			<key>abbreviationMode</key>
			<integer>0</integer>
			<key>creationDate</key>
			<date>2022-09-15T05:03:01Z</date>
			<key>label</key>
			<string>Object Template ES6</string>
			<key>modificationDate</key>
			<date>2022-09-15T05:03:01Z</date>
			<key>plainText</key>
			<string>var %| = {
  init() {
    this.cache();
    this.bindEvents();
  }

  cache() {
    
  }

  bindEvents() {
    
  }
}</string>
			<key>snippetType</key>
			<integer>0</integer>
			<key>uuidString</key>
			<string>F16A8D1F-12E5-4B67-BCDB-12DBB1A0D815</string>
		</dict>
		<dict>
			<key>abbreviation</key>
			<string>,eprevent</string>
			<key>abbreviationMode</key>
			<integer>0</integer>
			<key>creationDate</key>
			<date>2022-09-15T05:03:01Z</date>
			<key>label</key>
			<string>PreventDefault</string>
			<key>modificationDate</key>
			<date>2022-09-15T05:03:01Z</date>
			<key>plainText</key>
			<string>e.preventDefault();</string>
			<key>snippetType</key>
			<integer>0</integer>
			<key>uuidString</key>
			<string>C4D5C282-CB5F-465C-B532-C6878FEA8E38</string>
		</dict>
		<dict>
			<key>abbreviation</key>
			<string>,docready</string>
			<key>abbreviationMode</key>
			<integer>0</integer>
			<key>creationDate</key>
			<date>2022-09-15T05:03:01Z</date>
			<key>label</key>
			<string></string>
			<key>modificationDate</key>
			<date>2022-09-15T05:03:01Z</date>
			<key>plainText</key>
			<string>$(document).ready(function(){
	%|
});</string>
			<key>snippetType</key>
			<integer>0</integer>
			<key>uuidString</key>
			<string>484B69C1-83E6-43E0-8431-F7D5B549097F</string>
		</dict>
		<dict>
			<key>abbreviation</key>
			<string>,objtemplate</string>
			<key>abbreviationMode</key>
			<integer>0</integer>
			<key>creationDate</key>
			<date>2022-09-15T05:03:01Z</date>
			<key>label</key>
			<string>Object Template</string>
			<key>modificationDate</key>
			<date>2022-09-15T05:03:01Z</date>
			<key>plainText</key>
			<string>var obj = {
  init: function( config ) {
    this.config = config;

    this.cache();
    this.bindEvents();

    //...
  },

  cache: function() {
    // this.container = $('div');
  },

  bindEvents: function() {
    // on click/change/etc methods
  }
}</string>
			<key>snippetType</key>
			<integer>0</integer>
			<key>uuidString</key>
			<string>FF3F5558-6065-4756-8FF3-415073DBD372</string>
		</dict>
		<dict>
			<key>abbreviation</key>
			<string>,cconlog</string>
			<key>abbreviationMode</key>
			<integer>0</integer>
			<key>creationDate</key>
			<date>2022-09-15T05:03:01Z</date>
			<key>label</key>
			<string>console.log() Styled</string>
			<key>modificationDate</key>
			<date>2022-09-15T05:03:01Z</date>
			<key>plainText</key>
			<string>console.log('%c%|', 'color: blue;');</string>
			<key>snippetType</key>
			<integer>0</integer>
			<key>uuidString</key>
			<string>0CB0D1B4-328C-464F-ADB8-E7C443BE55C8</string>
		</dict>
		<dict>
			<key>abbreviation</key>
			<string>,Oconlog</string>
			<key>abbreviationMode</key>
			<integer>0</integer>
			<key>creationDate</key>
			<date>2022-09-15T05:03:01Z</date>
			<key>label</key>
			<string>console.log() JS object</string>
			<key>modificationDate</key>
			<date>2022-09-15T05:03:01Z</date>
			<key>plainText</key>
			<string>console.log('%O', %|);</string>
			<key>snippetType</key>
			<integer>0</integer>
			<key>uuidString</key>
			<string>31BE296B-1988-4B06-8B79-AF73E56F7590</string>
		</dict>
		<dict>
			<key>abbreviation</key>
			<string>,conlog</string>
			<key>abbreviationMode</key>
			<integer>0</integer>
			<key>creationDate</key>
			<date>2022-09-15T05:03:02Z</date>
			<key>label</key>
			<string>console.log()</string>
			<key>modificationDate</key>
			<date>2022-09-15T05:03:02Z</date>
			<key>plainText</key>
			<string>console.log('%|');</string>
			<key>snippetType</key>
			<integer>0</integer>
			<key>uuidString</key>
			<string>BD2FE80F-9947-4AC5-A379-8A12BE5DF1B0</string>
		</dict>
		<dict>
			<key>abbreviation</key>
			<string>,oconlog</string>
			<key>abbreviationMode</key>
			<integer>0</integer>
			<key>creationDate</key>
			<date>2022-09-15T05:03:02Z</date>
			<key>label</key>
			<string>console.log() DOM element</string>
			<key>modificationDate</key>
			<date>2022-09-15T05:03:02Z</date>
			<key>plainText</key>
			<string>console.log('%o', %|);</string>
			<key>snippetType</key>
			<integer>0</integer>
			<key>uuidString</key>
			<string>272F2D63-CD7B-469C-B790-D8E929211C8B</string>
		</dict>
		<dict>
			<key>abbreviation</key>
			<string>,conerror</string>
			<key>abbreviationMode</key>
			<integer>0</integer>
			<key>creationDate</key>
			<date>2022-09-15T05:03:02Z</date>
			<key>label</key>
			<string>console.error()</string>
			<key>modificationDate</key>
			<date>2022-09-15T05:03:02Z</date>
			<key>plainText</key>
			<string>console.error('%|');</string>
			<key>snippetType</key>
			<integer>0</integer>
			<key>uuidString</key>
			<string>32AE3B1F-9F9F-4EB8-9B0B-B9048DF22D56</string>
		</dict>
		<dict>
			<key>abbreviation</key>
			<string>,contime</string>
			<key>abbreviationMode</key>
			<integer>0</integer>
			<key>creationDate</key>
			<date>2022-09-15T05:03:02Z</date>
			<key>label</key>
			<string>console.time()</string>
			<key>modificationDate</key>
			<date>2022-09-15T05:03:02Z</date>
			<key>plainText</key>
			<string>console.time('%filltext:name=label%');
// … %|
console.timeEnd('%filltext:name=label%');</string>
			<key>snippetType</key>
			<integer>0</integer>
			<key>uuidString</key>
			<string>228BB673-85FE-4516-A926-AE4E15925EFB</string>
		</dict>
		<dict>
			<key>abbreviation</key>
			<string>,conwarn</string>
			<key>abbreviationMode</key>
			<integer>0</integer>
			<key>creationDate</key>
			<date>2022-09-15T05:03:02Z</date>
			<key>label</key>
			<string>console.warn()</string>
			<key>modificationDate</key>
			<date>2022-09-15T05:03:02Z</date>
			<key>plainText</key>
			<string>console.warn('%|');</string>
			<key>snippetType</key>
			<integer>0</integer>
			<key>uuidString</key>
			<string>42ECB026-101C-4305-A22E-19072595A9AB</string>
		</dict>
		<dict>
			<key>abbreviation</key>
			<string></string>
			<key>abbreviationMode</key>
			<integer>0</integer>
			<key>creationDate</key>
			<date>2022-09-15T05:03:02Z</date>
			<key>label</key>
			<string>Remove Hover Styles on iOS</string>
			<key>modificationDate</key>
			<date>2022-09-15T05:03:02Z</date>
			<key>plainText</key>
			<string>if ('createTouch' in document)
{
    try
    {
        var ignore = /:hover/;
        for (var i=0; i&lt;document.styleSheets.length; i++)
        {
            var sheet = document.styleSheets[i];
            for (var j=sheet.cssRules.length-1; j&gt;=0; j--)
            {
                var rule = sheet.cssRules[j];
                if (rule.type === CSSRule.STYLE_RULE &amp;&amp; ignore.test(rule.selectorText))
                {
                    sheet.deleteRule(j);
                }
            }
        }
    }
    catch(e){}
}</string>
			<key>snippetType</key>
			<integer>0</integer>
			<key>uuidString</key>
			<string>9740BD24-BBF1-477B-BD4E-560D0759EAD1</string>
		</dict>
		<dict>
			<key>abbreviation</key>
			<string>,conassert</string>
			<key>abbreviationMode</key>
			<integer>0</integer>
			<key>creationDate</key>
			<date>2022-09-15T05:03:02Z</date>
			<key>label</key>
			<string>console.assert()</string>
			<key>modificationDate</key>
			<date>2022-09-15T05:03:02Z</date>
			<key>plainText</key>
			<string>console.assert(condition, '');</string>
			<key>snippetType</key>
			<integer>0</integer>
			<key>uuidString</key>
			<string>6576C01E-F8ED-44A3-B3D5-569EA0C34FDF</string>
		</dict>
		<dict>
			<key>abbreviation</key>
			<string>,jsidelem</string>
			<key>abbreviationMode</key>
			<integer>0</integer>
			<key>creationDate</key>
			<date>2022-09-15T05:03:02Z</date>
			<key>label</key>
			<string>getElementById</string>
			<key>modificationDate</key>
			<date>2022-09-15T05:03:02Z</date>
			<key>plainText</key>
			<string>document.getElementById('%|');</string>
			<key>snippetType</key>
			<integer>0</integer>
			<key>uuidString</key>
			<string>89029D3A-B335-4A2E-B3B0-4BC8788E3743</string>
		</dict>
		<dict>
			<key>abbreviation</key>
			<string>,congroup</string>
			<key>abbreviationMode</key>
			<integer>0</integer>
			<key>creationDate</key>
			<date>2022-09-15T05:03:02Z</date>
			<key>label</key>
			<string>console.group()</string>
			<key>modificationDate</key>
			<date>2022-09-15T05:03:02Z</date>
			<key>plainText</key>
			<string>console.group('%|');
// ...
console.groupEnd();</string>
			<key>snippetType</key>
			<integer>0</integer>
			<key>uuidString</key>
			<string>59C8FC6D-F167-4AE3-811F-8998864EB4E9</string>
		</dict>
		<dict>
			<key>abbreviation</key>
			<string>,jsnext</string>
			<key>abbreviationMode</key>
			<integer>0</integer>
			<key>creationDate</key>
			<date>2022-09-15T05:03:02Z</date>
			<key>label</key>
			<string>Next Sibling</string>
			<key>modificationDate</key>
			<date>2022-09-15T05:03:02Z</date>
			<key>plainText</key>
			<string>var next = document.querySelector('%|').nextSibling;
while( next.nodeType &gt; 1 ) next = next.nextSibling</string>
			<key>snippetType</key>
			<integer>0</integer>
			<key>uuidString</key>
			<string>B4093B5A-0286-47BE-A7AB-6C5CA4CE7249</string>
		</dict>
		<dict>
			<key>abbreviation</key>
			<string>,jsquery</string>
			<key>abbreviationMode</key>
			<integer>0</integer>
			<key>creationDate</key>
			<date>2022-09-15T05:03:02Z</date>
			<key>label</key>
			<string>querySelectorAll</string>
			<key>modificationDate</key>
			<date>2022-09-15T05:03:02Z</date>
			<key>plainText</key>
			<string>document.querySelectorAll('%|');</string>
			<key>snippetType</key>
			<integer>0</integer>
			<key>uuidString</key>
			<string>BC67C422-F7FD-4CEA-82D7-BCF4DB03457F</string>
		</dict>
		<dict>
			<key>abbreviation</key>
			<string>,jsappend</string>
			<key>abbreviationMode</key>
			<integer>0</integer>
			<key>creationDate</key>
			<date>2022-09-15T05:03:02Z</date>
			<key>label</key>
			<string>Append Elem</string>
			<key>modificationDate</key>
			<date>2022-09-15T05:03:02Z</date>
			<key>plainText</key>
			<string>document.querySelector('%|').insertAdjacentHTML('beforeend', '&lt;div&gt;&lt;/div&gt;')</string>
			<key>snippetType</key>
			<integer>0</integer>
			<key>uuidString</key>
			<string>D5B92219-1B51-46FE-8D77-EE43983E1C68</string>
		</dict>
		<dict>
			<key>abbreviation</key>
			<string>,jsparent</string>
			<key>abbreviationMode</key>
			<integer>0</integer>
			<key>creationDate</key>
			<date>2022-09-15T05:03:02Z</date>
			<key>label</key>
			<string>Parent Node</string>
			<key>modificationDate</key>
			<date>2022-09-15T05:03:02Z</date>
			<key>plainText</key>
			<string>document.querySelector('%|').parentNode</string>
			<key>snippetType</key>
			<integer>0</integer>
			<key>uuidString</key>
			<string>5F937A64-65EA-42A8-834C-9349C07AF8EE</string>
		</dict>
		<dict>
			<key>abbreviation</key>
			<string>,jsbefore</string>
			<key>abbreviationMode</key>
			<integer>0</integer>
			<key>creationDate</key>
			<date>2022-09-15T05:03:02Z</date>
			<key>label</key>
			<string>Add Before Elem</string>
			<key>modificationDate</key>
			<date>2022-09-15T05:03:02Z</date>
			<key>plainText</key>
			<string>document.querySelector('%|').insertAdjacentHTML('beforebegin', '&lt;div&gt;&lt;/div&gt;')</string>
			<key>snippetType</key>
			<integer>0</integer>
			<key>uuidString</key>
			<string>A293CE31-6426-4EA6-A646-3F862194B201</string>
		</dict>
		<dict>
			<key>abbreviation</key>
			<string>,jstoggleclass</string>
			<key>abbreviationMode</key>
			<integer>0</integer>
			<key>creationDate</key>
			<date>2022-09-15T05:03:02Z</date>
			<key>label</key>
			<string>Toggle Class</string>
			<key>modificationDate</key>
			<date>2022-09-15T05:03:02Z</date>
			<key>plainText</key>
			<string>function toggleClass(elem, className) {
  var newClass = ' ' + elem.className.replace( /[\t\r\n]/g, ' ' ) + ' ';
  if (hasClass(elem, className)) {
    while (newClass.indexOf(' ' + className + ' ') &gt;= 0 ) {
      newClass = newClass.replace( ' ' + className + ' ' , ' ' );
    }
    elem.className = newClass.replace(/^\s+|\s+$/g, '');
  } else {
    elem.className += ' ' + className;
  }
}</string>
			<key>snippetType</key>
			<integer>0</integer>
			<key>uuidString</key>
			<string>CC47B39D-15FC-4A92-BD5C-2FD5769F47EC</string>
		</dict>
		<dict>
			<key>abbreviation</key>
			<string>,jsdelete</string>
			<key>abbreviationMode</key>
			<integer>0</integer>
			<key>creationDate</key>
			<date>2022-09-15T05:03:02Z</date>
			<key>label</key>
			<string>Remove Elem</string>
			<key>modificationDate</key>
			<date>2022-09-15T05:03:02Z</date>
			<key>plainText</key>
			<string>document.querySelector('%filltext:name=elem%').parentNode.removeChild(document.querySelector('%filltext:name=elem%'))</string>
			<key>snippetType</key>
			<integer>0</integer>
			<key>uuidString</key>
			<string>6DAA911D-033C-47A0-A9AF-2E35049D98A9</string>
		</dict>
		<dict>
			<key>abbreviation</key>
			<string>,jsprepend</string>
			<key>abbreviationMode</key>
			<integer>0</integer>
			<key>creationDate</key>
			<date>2022-09-15T05:03:02Z</date>
			<key>label</key>
			<string>Prepend Elem</string>
			<key>modificationDate</key>
			<date>2022-09-15T05:03:02Z</date>
			<key>plainText</key>
			<string>document.querySelector('%|').insertAdjacentHTML('afterbegin', '&lt;div&gt;&lt;/div&gt;')</string>
			<key>snippetType</key>
			<integer>0</integer>
			<key>uuidString</key>
			<string>D2041D32-39A0-4AC8-9BCA-17625B0A50FF</string>
		</dict>
		<dict>
			<key>abbreviation</key>
			<string>,jsafter</string>
			<key>abbreviationMode</key>
			<integer>0</integer>
			<key>creationDate</key>
			<date>2022-09-15T05:03:02Z</date>
			<key>label</key>
			<string>Add After Elem</string>
			<key>modificationDate</key>
			<date>2022-09-15T05:03:02Z</date>
			<key>plainText</key>
			<string>document.querySelector('%|').insertAdjacentHTML('afterend', '&lt;div&gt;&lt;/div&gt;')</string>
			<key>snippetType</key>
			<integer>0</integer>
			<key>uuidString</key>
			<string>B46CC3AF-2472-4953-83A8-DAB1F31497EF</string>
		</dict>
		<dict>
			<key>abbreviation</key>
			<string>,jstypeof</string>
			<key>abbreviationMode</key>
			<integer>0</integer>
			<key>creationDate</key>
			<date>2022-09-15T05:03:02Z</date>
			<key>label</key>
			<string>typeOf</string>
			<key>modificationDate</key>
			<date>2022-09-15T05:03:02Z</date>
			<key>plainText</key>
			<string>function typeOf(value) {
    var s = typeof value;
    if (s === 'object') {
        if (value) {
            if (value instanceof Array) {
                s = 'array';
            }
        } else {
            s = 'null';
        }
    }
    return s;
}</string>
			<key>snippetType</key>
			<integer>0</integer>
			<key>uuidString</key>
			<string>DF15BA55-62D3-4312-A666-B54826AD0094</string>
		</dict>
		<dict>
			<key>abbreviation</key>
			<string>,jsrect</string>
			<key>abbreviationMode</key>
			<integer>0</integer>
			<key>creationDate</key>
			<date>2022-09-15T05:03:02Z</date>
			<key>label</key>
			<string>Get el bounding rect</string>
			<key>modificationDate</key>
			<date>2022-09-15T05:03:02Z</date>
			<key>plainText</key>
			<string>var %filltext:name=elRect% = document.querySelector('%|').getBoundingClientRect();</string>
			<key>snippetType</key>
			<integer>0</integer>
			<key>uuidString</key>
			<string>548A6280-AF02-4E9B-9121-A902E8AE63F0</string>
		</dict>
		<dict>
			<key>abbreviation</key>
			<string>,jshintrc</string>
			<key>abbreviationMode</key>
			<integer>0</integer>
			<key>creationDate</key>
			<date>2022-09-15T05:03:02Z</date>
			<key>label</key>
			<string>JSHint Config File</string>
			<key>modificationDate</key>
			<date>2022-09-15T05:03:02Z</date>
			<key>plainText</key>
			<string>{
  // JSHint Default Configuration File (as on JSHint website)
  // See http://jshint.com/docs/ for more details

  "maxerr"        : 50,       // {int} Maximum error before stopping

  // Enforcing
  "bitwise"       : true,     // true: Prohibit bitwise operators (&amp;, |, ^, etc.)
  "camelcase"     : false,    // true: Identifiers must be in camelCase
  "curly"         : true,     // true: Require {} for every new block or scope
  "eqeqeq"        : true,     // true: Require triple equals (===) for comparison
  "forin"         : true,     // true: Require filtering for..in loops with obj.hasOwnProperty()
  "immed"         : false,    // true: Require immediate invocations to be wrapped in parens e.g. `(function () { } ());`
  "indent"        : 4,        // {int} Number of spaces to use for indentation
  "latedef"       : false,    // true: Require variables/functions to be defined before being used
  "newcap"        : false,    // true: Require capitalization of all constructor functions e.g. `new F()`
  "noarg"         : true,     // true: Prohibit use of `arguments.caller` and `arguments.callee`
  "noempty"       : true,     // true: Prohibit use of empty blocks
  "nonew"         : false,    // true: Prohibit use of constructors for side-effects (without assignment)
  "plusplus"      : false,    // true: Prohibit use of `++` &amp; `--`
  "quotmark"      : false,    // Quotation mark consistency:
                              //   false    : do nothing (default)
                              //   true     : ensure whatever is used is consistent
                              //   "single" : require single quotes
                              //   "double" : require double quotes
  "undef"         : true,     // true: Require all non-global variables to be declared (prevents global leaks)
  "unused"        : true,     // true: Require all defined variables be used
  "strict"        : true,     // true: Requires all functions run in ES5 Strict Mode
  "trailing"      : false,    // true: Prohibit trailing whitespaces
  "maxparams"     : false,    // {int} Max number of formal params allowed per function
  "maxdepth"      : false,    // {int} Max depth of nested blocks (within functions)
  "maxstatements" : false,    // {int} Max number statements per function
  "maxcomplexity" : false,    // {int} Max cyclomatic complexity per function
  "maxlen"        : false,    // {int} Max number of characters per line

  // Relaxing
  "asi"           : false,     // true: Tolerate Automatic Semicolon Insertion (no semicolons)
  "boss"          : false,     // true: Tolerate assignments where comparisons would be expected
  "debug"         : false,     // true: Allow debugger statements e.g. browser breakpoints.
  "eqnull"        : false,     // true: Tolerate use of `== null`
  "es5"           : false,     // true: Allow ES5 syntax (ex: getters and setters)
  "esnext"        : false,     // true: Allow ES.next (ES6) syntax (ex: `const`)
  "moz"           : false,     // true: Allow Mozilla specific syntax (extends and overrides esnext features)
                               // (ex: `for each`, multiple try/catch, function expression…)
  "evil"          : false,     // true: Tolerate use of `eval` and `new Function()`
  "expr"          : false,     // true: Tolerate `ExpressionStatement` as Programs
  "funcscope"     : false,     // true: Tolerate defining variables inside control statements"
  "globalstrict"  : false,     // true: Allow global "use strict" (also enables 'strict')
  "iterator"      : false,     // true: Tolerate using the `__iterator__` property
  "lastsemic"     : false,     // true: Tolerate omitting a semicolon for the last statement of a 1-line block
  "laxbreak"      : false,     // true: Tolerate possibly unsafe line breakings
  "laxcomma"      : false,     // true: Tolerate comma-first style coding
  "loopfunc"      : false,     // true: Tolerate functions being defined in loops
  "multistr"      : false,     // true: Tolerate multi-line strings
  "proto"         : false,     // true: Tolerate using the `__proto__` property
  "scripturl"     : false,     // true: Tolerate script-targeted URLs
  "smarttabs"     : false,     // true: Tolerate mixed tabs/spaces when used for alignment
  "shadow"        : false,     // true: Allows re-define variables later in code e.g. `var x=1; x=2;`
  "sub"           : false,     // true: Tolerate using `[]` notation when it can still be expressed in dot notation
  "supernew"      : false,     // true: Tolerate `new function () { ... };` and `new Object;`
  "validthis"     : false,     // true: Tolerate using this in a non-constructor function

  // Environments
  "browser"       : true,     // Web Browser (window, document, etc)
  "couch"         : false,    // CouchDB
  "devel"         : true,     // Development/debugging (alert, confirm, etc)
  "dojo"          : false,    // Dojo Toolkit
  "jquery"        : false,    // jQuery
  "mootools"      : false,    // MooTools
  "node"          : false,    // Node.js
  "nonstandard"   : false,    // Widely adopted globals (escape, unescape, etc)
  "prototypejs"   : false,    // Prototype and Scriptaculous
  "rhino"         : false,    // Rhino
  "worker"        : false,    // Web Workers
  "wsh"           : false,    // Windows Scripting Host
  "yui"           : false,    // Yahoo User Interface

  // Legacy
  "nomen"         : false,    // true: Prohibit dangling `_` in variables
  "onevar"        : false,    // true: Allow only one `var` statement per function
  "passfail"      : false,    // true: Stop on first error
  "white"         : false,    // true: Check against strict whitespace and indentation rules

  // Custom Globals
  "predef"        : [ ]       // additional predefined global variables
}</string>
			<key>snippetType</key>
			<integer>0</integer>
			<key>uuidString</key>
			<string>D8D26220-389C-488E-9CAD-28365662D31E</string>
		</dict>
		<dict>
			<key>abbreviation</key>
			<string>,keycheck</string>
			<key>abbreviationMode</key>
			<integer>0</integer>
			<key>creationDate</key>
			<date>2022-09-15T05:03:02Z</date>
			<key>label</key>
			<string>Key Check</string>
			<key>modificationDate</key>
			<date>2022-09-15T05:03:02Z</date>
			<key>plainText</key>
			<string>if("%filltext:name=Feature%" in navigator) {
    %|
}
</string>
			<key>snippetType</key>
			<integer>0</integer>
			<key>uuidString</key>
			<string>53902036-EC91-414B-8A29-07D745FA7C36</string>
		</dict>
		<dict>
			<key>abbreviation</key>
			<string>,jsevtdel</string>
			<key>abbreviationMode</key>
			<integer>0</integer>
			<key>creationDate</key>
			<date>2022-09-15T05:03:02Z</date>
			<key>label</key>
			<string>Event Delegation</string>
			<key>modificationDate</key>
			<date>2022-09-15T05:03:02Z</date>
			<key>plainText</key>
			<string>el.addEventListener("click",function(e) {
  if(e.target &amp;&amp; e.target.nodeName == "%|") {
    // ...
  }
});</string>
			<key>snippetType</key>
			<integer>0</integer>
			<key>uuidString</key>
			<string>7BEF0A89-938C-4335-AC80-15CA67F3F445</string>
		</dict>
		<dict>
			<key>abbreviation</key>
			<string>,jsajaxcache</string>
			<key>abbreviationMode</key>
			<integer>0</integer>
			<key>creationDate</key>
			<date>2022-09-15T05:03:02Z</date>
			<key>label</key>
			<string>jQuery Ajax Cache</string>
			<key>modificationDate</key>
			<date>2022-09-15T05:03:02Z</date>
			<key>plainText</key>
			<string>var ajaxCache = {};

$('#ajaxForm').on('submit', function(e) {
  var key = $('#field').val(); // get a key to store/cache for lookup

  if ( !ajaxCache[key] ) {
    ajaxCache[key] = $.ajax({
      url: 'http://',
      dataType: 'jsonp',
      data: {},
      timeout: 15000
    });
  }
  ajaxCache[key].done().fail().always();

  e.preventDefault();
});</string>
			<key>snippetType</key>
			<integer>0</integer>
			<key>uuidString</key>
			<string>1DFF2E83-FF8E-48A3-ABB7-30927BCDE5AA</string>
		</dict>
		<dict>
			<key>abbreviation</key>
			<string>,jspreventhover</string>
			<key>abbreviationMode</key>
			<integer>0</integer>
			<key>creationDate</key>
			<date>2022-09-15T05:03:02Z</date>
			<key>label</key>
			<string>Prevent Hover On Scroll</string>
			<key>modificationDate</key>
			<date>2022-09-15T05:03:02Z</date>
			<key>plainText</key>
			<string>var body = document.body,
    scrollTimer;

window.addEventListener('scroll', function() {
  clearTimeout(scrollTimer);
  if(!body.classList.contains('disable-hover')) {
    body.classList.add('disable-hover');
  }
  
  scrollTimer = setTimeout(function(){
    body.classList.remove('disable-hover');
  }, 500);
}, false);

/*
.disable-hover,
.disable-hover * {
  pointer-events: none !important;
}
*/</string>
			<key>snippetType</key>
			<integer>0</integer>
			<key>uuidString</key>
			<string>863A9F78-78FD-4753-9818-32FD96FFFF02</string>
		</dict>
		<dict>
			<key>abbreviation</key>
			<string>,jsaddcssrule</string>
			<key>abbreviationMode</key>
			<integer>0</integer>
			<key>creationDate</key>
			<date>2022-09-15T05:03:02Z</date>
			<key>label</key>
			<string></string>
			<key>modificationDate</key>
			<date>2022-09-15T05:03:02Z</date>
			<key>plainText</key>
			<string>function addCssRule(sheet, selector, rules, index) {
  if(sheet.insertRule) {
    sheet.insertRule(selector + "{" + rules + "}", index);
  }
  else {
    sheet.addRule(selector, rules, index);
  }
}

// addCssRule(document.styleSheets[0], '', '');</string>
			<key>snippetType</key>
			<integer>0</integer>
			<key>uuidString</key>
			<string>33E27532-403C-4680-8CE6-C40286806AD5</string>
		</dict>
		<dict>
			<key>abbreviation</key>
			<string>,jsextend</string>
			<key>abbreviationMode</key>
			<integer>0</integer>
			<key>creationDate</key>
			<date>2022-09-15T05:03:02Z</date>
			<key>label</key>
			<string></string>
			<key>modificationDate</key>
			<date>2022-09-15T05:03:02Z</date>
			<key>plainText</key>
			<string>function extend(destination, source) {
    var toString = Object.prototype.toString,
        objTest = toString.call({});
    for (var property in source) {
        if (source[property] &amp;&amp; objTest == toString.call(source[property])) {
            destination[property] = destination[property] || {};
            extend(destination[property], source[property]);
        } else {
            destination[property] = source[property];
        }
    }
    return destination;
};</string>
			<key>snippetType</key>
			<integer>0</integer>
			<key>uuidString</key>
			<string>7F668AD7-4D8F-40E8-A9E6-16B8F710F26C</string>
		</dict>
	</array>
</dict>
</plist>
