forked from Squatconf/Website
You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
543 lines
18 KiB
JavaScript
543 lines
18 KiB
JavaScript
10 years ago
|
(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({"/Users/jloi/code/Squatconf/website/node_modules/domready/ready.js":[function(require,module,exports){
|
||
|
/*!
|
||
|
* domready (c) Dustin Diaz 2014 - License MIT
|
||
|
*/
|
||
|
!function (name, definition) {
|
||
|
|
||
|
if (typeof module != 'undefined') module.exports = definition()
|
||
|
else if (typeof define == 'function' && typeof define.amd == 'object') define(definition)
|
||
|
else this[name] = definition()
|
||
|
|
||
|
}('domready', function () {
|
||
|
|
||
|
var fns = [], listener
|
||
|
, doc = document
|
||
|
, hack = doc.documentElement.doScroll
|
||
|
, domContentLoaded = 'DOMContentLoaded'
|
||
|
, loaded = (hack ? /^loaded|^c/ : /^loaded|^i|^c/).test(doc.readyState)
|
||
|
|
||
|
|
||
|
if (!loaded)
|
||
|
doc.addEventListener(domContentLoaded, listener = function () {
|
||
|
doc.removeEventListener(domContentLoaded, listener)
|
||
|
loaded = 1
|
||
|
while (listener = fns.shift()) listener()
|
||
|
})
|
||
|
|
||
|
return function (fn) {
|
||
|
loaded ? fn() : fns.push(fn)
|
||
|
}
|
||
|
|
||
|
});
|
||
|
|
||
|
},{}],"/Users/jloi/code/Squatconf/website/node_modules/load-svg/index.js":[function(require,module,exports){
|
||
|
var xhr = require('xhr');
|
||
|
|
||
|
module.exports = function (opts, cb) {
|
||
|
if (typeof opts === 'string') opts = { uri: opts };
|
||
|
|
||
|
xhr(opts, function (err, res, body) {
|
||
|
if (err) return cb(err);
|
||
|
if (!/^2/.test(res.statusCode)) {
|
||
|
return cb(new Error('http status code: ' + res.statusCode));
|
||
|
}
|
||
|
var div = document.createElement('div');
|
||
|
div.innerHTML = body;
|
||
|
var svg = div.querySelector('svg');
|
||
|
if (!svg) return cb(new Error('svg not present in resource'));
|
||
|
cb(null, svg);
|
||
|
});
|
||
|
};
|
||
|
|
||
|
},{"xhr":"/Users/jloi/code/Squatconf/website/node_modules/load-svg/node_modules/xhr/index.js"}],"/Users/jloi/code/Squatconf/website/node_modules/load-svg/node_modules/xhr/index.js":[function(require,module,exports){
|
||
|
var window = require("global/window")
|
||
|
var once = require("once")
|
||
|
var parseHeaders = require('parse-headers')
|
||
|
|
||
|
var messages = {
|
||
|
"0": "Internal XMLHttpRequest Error",
|
||
|
"4": "4xx Client Error",
|
||
|
"5": "5xx Server Error"
|
||
|
}
|
||
|
|
||
|
var XHR = window.XMLHttpRequest || noop
|
||
|
var XDR = "withCredentials" in (new XHR()) ? XHR : window.XDomainRequest
|
||
|
|
||
|
module.exports = createXHR
|
||
|
|
||
|
function createXHR(options, callback) {
|
||
|
if (typeof options === "string") {
|
||
|
options = { uri: options }
|
||
|
}
|
||
|
|
||
|
options = options || {}
|
||
|
callback = once(callback)
|
||
|
|
||
|
var xhr = options.xhr || null
|
||
|
|
||
|
if (!xhr) {
|
||
|
if (options.cors || options.useXDR) {
|
||
|
xhr = new XDR()
|
||
|
}else{
|
||
|
xhr = new XHR()
|
||
|
}
|
||
|
}
|
||
|
|
||
|
var uri = xhr.url = options.uri || options.url
|
||
|
var method = xhr.method = options.method || "GET"
|
||
|
var body = options.body || options.data
|
||
|
var headers = xhr.headers = options.headers || {}
|
||
|
var sync = !!options.sync
|
||
|
var isJson = false
|
||
|
var key
|
||
|
var load = options.response ? loadResponse : loadXhr
|
||
|
|
||
|
if ("json" in options) {
|
||
|
isJson = true
|
||
|
headers["Accept"] = "application/json"
|
||
|
if (method !== "GET" && method !== "HEAD") {
|
||
|
headers["Content-Type"] = "application/json"
|
||
|
body = JSON.stringify(options.json)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
xhr.onreadystatechange = readystatechange
|
||
|
xhr.onload = load
|
||
|
xhr.onerror = error
|
||
|
// IE9 must have onprogress be set to a unique function.
|
||
|
xhr.onprogress = function () {
|
||
|
// IE must die
|
||
|
}
|
||
|
// hate IE
|
||
|
xhr.ontimeout = noop
|
||
|
xhr.open(method, uri, !sync)
|
||
|
//backward compatibility
|
||
|
if (options.withCredentials || (options.cors && options.withCredentials !== false)) {
|
||
|
xhr.withCredentials = true
|
||
|
}
|
||
|
|
||
|
// Cannot set timeout with sync request
|
||
|
if (!sync) {
|
||
|
xhr.timeout = "timeout" in options ? options.timeout : 5000
|
||
|
}
|
||
|
|
||
|
if (xhr.setRequestHeader) {
|
||
|
for(key in headers){
|
||
|
if(headers.hasOwnProperty(key)){
|
||
|
xhr.setRequestHeader(key, headers[key])
|
||
|
}
|
||
|
}
|
||
|
} else if (options.headers) {
|
||
|
throw new Error("Headers cannot be set on an XDomainRequest object")
|
||
|
}
|
||
|
|
||
|
if ("responseType" in options) {
|
||
|
xhr.responseType = options.responseType
|
||
|
}
|
||
|
|
||
|
if ("beforeSend" in options &&
|
||
|
typeof options.beforeSend === "function"
|
||
|
) {
|
||
|
options.beforeSend(xhr)
|
||
|
}
|
||
|
|
||
|
xhr.send(body)
|
||
|
|
||
|
return xhr
|
||
|
|
||
|
function readystatechange() {
|
||
|
if (xhr.readyState === 4) {
|
||
|
load()
|
||
|
}
|
||
|
}
|
||
|
|
||
|
function getBody() {
|
||
|
// Chrome with requestType=blob throws errors arround when even testing access to responseText
|
||
|
var body = null
|
||
|
|
||
|
if (xhr.response) {
|
||
|
body = xhr.response
|
||
|
} else if (xhr.responseType === 'text' || !xhr.responseType) {
|
||
|
body = xhr.responseText || xhr.responseXML
|
||
|
}
|
||
|
|
||
|
if (isJson) {
|
||
|
try {
|
||
|
body = JSON.parse(body)
|
||
|
} catch (e) {}
|
||
|
}
|
||
|
|
||
|
return body
|
||
|
}
|
||
|
|
||
|
function getStatusCode() {
|
||
|
return xhr.status === 1223 ? 204 : xhr.status
|
||
|
}
|
||
|
|
||
|
// if we're getting a none-ok statusCode, build & return an error
|
||
|
function errorFromStatusCode(status) {
|
||
|
var error = null
|
||
|
if (status === 0 || (status >= 400 && status < 600)) {
|
||
|
var message = (typeof body === "string" ? body : false) ||
|
||
|
messages[String(status).charAt(0)]
|
||
|
error = new Error(message)
|
||
|
error.statusCode = status
|
||
|
}
|
||
|
|
||
|
return error
|
||
|
}
|
||
|
|
||
|
// will load the data & process the response in a special response object
|
||
|
function loadResponse() {
|
||
|
var status = getStatusCode()
|
||
|
var error = errorFromStatusCode(status)
|
||
|
var response = {
|
||
|
body: getBody(),
|
||
|
statusCode: status,
|
||
|
statusText: xhr.statusText,
|
||
|
raw: xhr
|
||
|
}
|
||
|
if(xhr.getAllResponseHeaders){ //remember xhr can in fact be XDR for CORS in IE
|
||
|
response.headers = parseHeaders(xhr.getAllResponseHeaders())
|
||
|
} else {
|
||
|
response.headers = {}
|
||
|
}
|
||
|
|
||
|
callback(error, response, response.body)
|
||
|
}
|
||
|
|
||
|
// will load the data and add some response properties to the source xhr
|
||
|
// and then respond with that
|
||
|
function loadXhr() {
|
||
|
var status = getStatusCode()
|
||
|
var error = errorFromStatusCode(status)
|
||
|
|
||
|
xhr.status = xhr.statusCode = status
|
||
|
xhr.body = getBody()
|
||
|
xhr.headers = parseHeaders(xhr.getAllResponseHeaders())
|
||
|
|
||
|
callback(error, xhr, xhr.body)
|
||
|
}
|
||
|
|
||
|
function error(evt) {
|
||
|
callback(evt, xhr)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
function noop() {}
|
||
|
|
||
|
},{"global/window":"/Users/jloi/code/Squatconf/website/node_modules/load-svg/node_modules/xhr/node_modules/global/window.js","once":"/Users/jloi/code/Squatconf/website/node_modules/load-svg/node_modules/xhr/node_modules/once/once.js","parse-headers":"/Users/jloi/code/Squatconf/website/node_modules/load-svg/node_modules/xhr/node_modules/parse-headers/parse-headers.js"}],"/Users/jloi/code/Squatconf/website/node_modules/load-svg/node_modules/xhr/node_modules/global/window.js":[function(require,module,exports){
|
||
|
(function (global){
|
||
|
if (typeof window !== "undefined") {
|
||
|
module.exports = window;
|
||
|
} else if (typeof global !== "undefined") {
|
||
|
module.exports = global;
|
||
|
} else {
|
||
|
module.exports = {};
|
||
|
}
|
||
|
|
||
|
}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
|
||
|
},{}],"/Users/jloi/code/Squatconf/website/node_modules/load-svg/node_modules/xhr/node_modules/once/once.js":[function(require,module,exports){
|
||
|
module.exports = once
|
||
|
|
||
|
once.proto = once(function () {
|
||
|
Object.defineProperty(Function.prototype, 'once', {
|
||
|
value: function () {
|
||
|
return once(this)
|
||
|
},
|
||
|
configurable: true
|
||
|
})
|
||
|
})
|
||
|
|
||
|
function once (fn) {
|
||
|
var called = false
|
||
|
return function () {
|
||
|
if (called) return
|
||
|
called = true
|
||
|
return fn.apply(this, arguments)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
},{}],"/Users/jloi/code/Squatconf/website/node_modules/load-svg/node_modules/xhr/node_modules/parse-headers/node_modules/for-each/index.js":[function(require,module,exports){
|
||
|
var isFunction = require('is-function')
|
||
|
|
||
|
module.exports = forEach
|
||
|
|
||
|
var toString = Object.prototype.toString
|
||
|
var hasOwnProperty = Object.prototype.hasOwnProperty
|
||
|
|
||
|
function forEach(list, iterator, context) {
|
||
|
if (!isFunction(iterator)) {
|
||
|
throw new TypeError('iterator must be a function')
|
||
|
}
|
||
|
|
||
|
if (arguments.length < 3) {
|
||
|
context = this
|
||
|
}
|
||
|
|
||
|
if (toString.call(list) === '[object Array]')
|
||
|
forEachArray(list, iterator, context)
|
||
|
else if (typeof list === 'string')
|
||
|
forEachString(list, iterator, context)
|
||
|
else
|
||
|
forEachObject(list, iterator, context)
|
||
|
}
|
||
|
|
||
|
function forEachArray(array, iterator, context) {
|
||
|
for (var i = 0, len = array.length; i < len; i++) {
|
||
|
if (hasOwnProperty.call(array, i)) {
|
||
|
iterator.call(context, array[i], i, array)
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
function forEachString(string, iterator, context) {
|
||
|
for (var i = 0, len = string.length; i < len; i++) {
|
||
|
// no such thing as a sparse string.
|
||
|
iterator.call(context, string.charAt(i), i, string)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
function forEachObject(object, iterator, context) {
|
||
|
for (var k in object) {
|
||
|
if (hasOwnProperty.call(object, k)) {
|
||
|
iterator.call(context, object[k], k, object)
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
},{"is-function":"/Users/jloi/code/Squatconf/website/node_modules/load-svg/node_modules/xhr/node_modules/parse-headers/node_modules/for-each/node_modules/is-function/index.js"}],"/Users/jloi/code/Squatconf/website/node_modules/load-svg/node_modules/xhr/node_modules/parse-headers/node_modules/for-each/node_modules/is-function/index.js":[function(require,module,exports){
|
||
|
module.exports = isFunction
|
||
|
|
||
|
var toString = Object.prototype.toString
|
||
|
|
||
|
function isFunction (fn) {
|
||
|
var string = toString.call(fn)
|
||
|
return string === '[object Function]' ||
|
||
|
(typeof fn === 'function' && string !== '[object RegExp]') ||
|
||
|
(typeof window !== 'undefined' &&
|
||
|
// IE8 and below
|
||
|
(fn === window.setTimeout ||
|
||
|
fn === window.alert ||
|
||
|
fn === window.confirm ||
|
||
|
fn === window.prompt))
|
||
|
};
|
||
|
|
||
|
},{}],"/Users/jloi/code/Squatconf/website/node_modules/load-svg/node_modules/xhr/node_modules/parse-headers/node_modules/trim/index.js":[function(require,module,exports){
|
||
|
|
||
|
exports = module.exports = trim;
|
||
|
|
||
|
function trim(str){
|
||
|
return str.replace(/^\s*|\s*$/g, '');
|
||
|
}
|
||
|
|
||
|
exports.left = function(str){
|
||
|
return str.replace(/^\s*/, '');
|
||
|
};
|
||
|
|
||
|
exports.right = function(str){
|
||
|
return str.replace(/\s*$/, '');
|
||
|
};
|
||
|
|
||
|
},{}],"/Users/jloi/code/Squatconf/website/node_modules/load-svg/node_modules/xhr/node_modules/parse-headers/parse-headers.js":[function(require,module,exports){
|
||
|
var trim = require('trim')
|
||
|
, forEach = require('for-each')
|
||
|
, isArray = function(arg) {
|
||
|
return Object.prototype.toString.call(arg) === '[object Array]';
|
||
|
}
|
||
|
|
||
|
module.exports = function (headers) {
|
||
|
if (!headers)
|
||
|
return {}
|
||
|
|
||
|
var result = {}
|
||
|
|
||
|
forEach(
|
||
|
trim(headers).split('\n')
|
||
|
, function (row) {
|
||
|
var index = row.indexOf(':')
|
||
|
, key = trim(row.slice(0, index)).toLowerCase()
|
||
|
, value = trim(row.slice(index + 1))
|
||
|
|
||
|
if (typeof(result[key]) === 'undefined') {
|
||
|
result[key] = value
|
||
|
} else if (isArray(result[key])) {
|
||
|
result[key].push(value)
|
||
|
} else {
|
||
|
result[key] = [ result[key], value ]
|
||
|
}
|
||
|
}
|
||
|
)
|
||
|
|
||
|
return result
|
||
|
}
|
||
|
},{"for-each":"/Users/jloi/code/Squatconf/website/node_modules/load-svg/node_modules/xhr/node_modules/parse-headers/node_modules/for-each/index.js","trim":"/Users/jloi/code/Squatconf/website/node_modules/load-svg/node_modules/xhr/node_modules/parse-headers/node_modules/trim/index.js"}],"/Users/jloi/code/Squatconf/website/node_modules/valid-email/index.js":[function(require,module,exports){
|
||
|
module.exports = require('./lib/valid-email');
|
||
|
},{"./lib/valid-email":"/Users/jloi/code/Squatconf/website/node_modules/valid-email/lib/valid-email.js"}],"/Users/jloi/code/Squatconf/website/node_modules/valid-email/lib/valid-email.js":[function(require,module,exports){
|
||
|
/*!
|
||
|
* Valid Email
|
||
|
* Copyright(c) 2013 John Henry
|
||
|
* MIT Licensed
|
||
|
*/
|
||
|
|
||
|
/**
|
||
|
* Valid-Email:
|
||
|
*
|
||
|
* An alternative to using a regular expression to validate email.
|
||
|
* Inspired by:
|
||
|
* http://stackoverflow.com/questions/997078/email-regular-expression
|
||
|
* http://stackoverflow.com/questions/201323/using-a-regular-expression-to-validate-an-email-address
|
||
|
*
|
||
|
* Examples:
|
||
|
* console.log(require('valid-email')('john@iamjohnhenry.com'))//#true
|
||
|
* console.log(require('valid-email')('iamjohnhenry.com'))//#false
|
||
|
*
|
||
|
* @param {String} email
|
||
|
* // potential email address
|
||
|
* @return {Boolean}
|
||
|
* @api public
|
||
|
*/
|
||
|
module.exports = function valid(email){
|
||
|
var at = email.search("@");
|
||
|
if (at <0) return false;
|
||
|
var user = email.substr(0, at);
|
||
|
var domain = email.substr(at+1);
|
||
|
var userLen = user.length;
|
||
|
var domainLen = domain.length;
|
||
|
if (userLen < 1 || userLen > 64) return false;// user part length exceeded
|
||
|
if (domainLen < 1 || domainLen > 255) return false;// domain part length exceeded
|
||
|
if (user.charAt(0) === '.' || user.charAt(userLen-1) === '.') return false;// user part starts or ends with '.'
|
||
|
if (user.match(/\.\./)) return false;// user part has two consecutive dots
|
||
|
if (!domain.match(/^[A-Za-z0-9.-]+$/)) return false;// character not valid in domain part
|
||
|
if (domain.match( /\\.\\./)) return false;// domain part has two consecutive dots
|
||
|
if (!user.replace("\\\\","").match(/^(\\\\.|[A-Za-z0-9!#%&`_=\\/$\'*+?^{}|~.-])+$/)) if (!user.replace("\\\\","").match(/^"(\\\\"|[^"])+"$/)) return false
|
||
|
return true;
|
||
|
}
|
||
|
},{}],"/Users/jloi/code/Squatconf/website/src/email-client.js":[function(require,module,exports){
|
||
|
(function (process){
|
||
|
var ready = require('domready')
|
||
|
, check_email = require('valid-email')
|
||
|
, loadsvg = require('load-svg')
|
||
|
|
||
|
process.nextTick(function() {
|
||
|
ready(function() {
|
||
|
|
||
|
var form = document.getElementById('signup-form')
|
||
|
, input_email = ''
|
||
|
, status_msg = document.getElementById('status-msg')
|
||
|
, logoCont = document.getElementById('logoCont')
|
||
|
|
||
|
loadsvg('/assets/img/squatconf_baguette.svg', function (err, svg) {
|
||
|
logoCont.appendChild(svg);
|
||
|
});
|
||
|
|
||
|
for (var n = 0, l = form.childNodes[1].childNodes.length; n < l; n++) {
|
||
|
var el = form.childNodes[1].childNodes[n]
|
||
|
if (el.nodeName === 'INPUT' && el.name === 'email')
|
||
|
input_email = el
|
||
|
}
|
||
|
|
||
|
document
|
||
|
.getElementById("signup-form")
|
||
|
.addEventListener("click", function(e) {
|
||
|
if (e.srcElement.nodeName === 'BUTTON') {
|
||
|
if (input_email && input_email.value) {
|
||
|
var is_valid = check_email(input_email.value)
|
||
|
if (is_valid) {
|
||
|
var progress = 0
|
||
|
, timerID = null
|
||
|
e.preventDefault()
|
||
|
status_msg.className = 'info'
|
||
|
status_msg.innerHTML = "Sending"
|
||
|
timerID = setInterval(function() {
|
||
|
if (++progress < 8) {
|
||
|
status_msg.innerHTML += "."
|
||
|
} else {
|
||
|
clearInterval(timerID)
|
||
|
form.submit()
|
||
|
}
|
||
|
}, 150)
|
||
|
} else {
|
||
|
e.preventDefault()
|
||
|
input_email.value = ''
|
||
|
status_msg.className = 'error'
|
||
|
status_msg.innerHTML = "that doesn't look like an email address,"
|
||
|
+ "<br />please try again..."
|
||
|
setTimeout(function() { status_msg.innerHTML = ' ' }, 2000)
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
})
|
||
|
})
|
||
|
})
|
||
|
|
||
|
|
||
|
}).call(this,require('_process'))
|
||
|
},{"_process":"/usr/local/lib/node_modules/watchify/node_modules/browserify/node_modules/process/browser.js","domready":"/Users/jloi/code/Squatconf/website/node_modules/domready/ready.js","load-svg":"/Users/jloi/code/Squatconf/website/node_modules/load-svg/index.js","valid-email":"/Users/jloi/code/Squatconf/website/node_modules/valid-email/index.js"}],"/usr/local/lib/node_modules/watchify/node_modules/browserify/node_modules/process/browser.js":[function(require,module,exports){
|
||
|
// shim for using process in browser
|
||
|
|
||
|
var process = module.exports = {};
|
||
|
|
||
|
process.nextTick = (function () {
|
||
|
var canSetImmediate = typeof window !== 'undefined'
|
||
|
&& window.setImmediate;
|
||
|
var canPost = typeof window !== 'undefined'
|
||
|
&& window.postMessage && window.addEventListener
|
||
|
;
|
||
|
|
||
|
if (canSetImmediate) {
|
||
|
return function (f) { return window.setImmediate(f) };
|
||
|
}
|
||
|
|
||
|
if (canPost) {
|
||
|
var queue = [];
|
||
|
window.addEventListener('message', function (ev) {
|
||
|
var source = ev.source;
|
||
|
if ((source === window || source === null) && ev.data === 'process-tick') {
|
||
|
ev.stopPropagation();
|
||
|
if (queue.length > 0) {
|
||
|
var fn = queue.shift();
|
||
|
fn();
|
||
|
}
|
||
|
}
|
||
|
}, true);
|
||
|
|
||
|
return function nextTick(fn) {
|
||
|
queue.push(fn);
|
||
|
window.postMessage('process-tick', '*');
|
||
|
};
|
||
|
}
|
||
|
|
||
|
return function nextTick(fn) {
|
||
|
setTimeout(fn, 0);
|
||
|
};
|
||
|
})();
|
||
|
|
||
|
process.title = 'browser';
|
||
|
process.browser = true;
|
||
|
process.env = {};
|
||
|
process.argv = [];
|
||
|
|
||
|
function noop() {}
|
||
|
|
||
|
process.on = noop;
|
||
|
process.addListener = noop;
|
||
|
process.once = noop;
|
||
|
process.off = noop;
|
||
|
process.removeListener = noop;
|
||
|
process.removeAllListeners = noop;
|
||
|
process.emit = noop;
|
||
|
|
||
|
process.binding = function (name) {
|
||
|
throw new Error('process.binding is not supported');
|
||
|
}
|
||
|
|
||
|
// TODO(shtylman)
|
||
|
process.cwd = function () { return '/' };
|
||
|
process.chdir = function (dir) {
|
||
|
throw new Error('process.chdir is not supported');
|
||
|
};
|
||
|
|
||
|
},{}]},{},["/Users/jloi/code/Squatconf/website/src/email-client.js"]);
|