ant-design-vue/site/public/docsearch.min_2.6.3.js

7388 lines
272 KiB
JavaScript
Raw Permalink Blame History

/*! docsearch 2.6.3 | æŧ Algolia | github.com/algolia/docsearch */
(function webpackUniversalModuleDefinition(root, factory) {
if (typeof exports === 'object' && typeof module === 'object') module.exports = factory();
else if (typeof define === 'function' && define.amd) define([], factory);
else if (typeof exports === 'object') exports['docsearch'] = factory();
else root['docsearch'] = factory();
})(typeof self !== 'undefined' ? self : this, function () {
return (function (modules) {
var installedModules = {};
function __webpack_require__(moduleId) {
if (installedModules[moduleId]) {
return installedModules[moduleId].exports;
}
var module = (installedModules[moduleId] = { i: moduleId, l: false, exports: {} });
modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
module.l = true;
return module.exports;
}
__webpack_require__.m = modules;
__webpack_require__.c = installedModules;
__webpack_require__.d = function (exports, name, getter) {
if (!__webpack_require__.o(exports, name)) {
Object.defineProperty(exports, name, {
configurable: false,
enumerable: true,
get: getter,
});
}
};
__webpack_require__.n = function (module) {
var getter =
module && module.__esModule
? function getDefault() {
return module['default'];
}
: function getModuleExports() {
return module;
};
__webpack_require__.d(getter, 'a', getter);
return getter;
};
__webpack_require__.o = function (object, property) {
return Object.prototype.hasOwnProperty.call(object, property);
};
__webpack_require__.p = '';
return __webpack_require__((__webpack_require__.s = 22));
})([
function (module, exports, __webpack_require__) {
'use strict';
var DOM = __webpack_require__(1);
function escapeRegExp(str) {
return str.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, '\\$&');
}
module.exports = {
isArray: null,
isFunction: null,
isObject: null,
bind: null,
each: null,
map: null,
mixin: null,
isMsie: function (agentString) {
if (agentString === undefined) {
agentString = navigator.userAgent;
}
if (/(msie|trident)/i.test(agentString)) {
var match = agentString.match(/(msie |rv:)(\d+(.\d+)?)/i);
if (match) {
return match[2];
}
}
return false;
},
escapeRegExChars: function (str) {
return str.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, '\\$&');
},
isNumber: function (obj) {
return typeof obj === 'number';
},
toStr: function toStr(s) {
return s === undefined || s === null ? '' : s + '';
},
cloneDeep: function cloneDeep(obj) {
var clone = this.mixin({}, obj);
var self = this;
this.each(clone, function (value, key) {
if (value) {
if (self.isArray(value)) {
clone[key] = [].concat(value);
} else if (self.isObject(value)) {
clone[key] = self.cloneDeep(value);
}
}
});
return clone;
},
error: function (msg) {
throw new Error(msg);
},
every: function (obj, test) {
var result = true;
if (!obj) {
return result;
}
this.each(obj, function (val, key) {
if (result) {
result = test.call(null, val, key, obj) && result;
}
});
return !!result;
},
any: function (obj, test) {
var found = false;
if (!obj) {
return found;
}
this.each(obj, function (val, key) {
if (test.call(null, val, key, obj)) {
found = true;
return false;
}
});
return found;
},
getUniqueId: (function () {
var counter = 0;
return function () {
return counter++;
};
})(),
templatify: function templatify(obj) {
if (this.isFunction(obj)) {
return obj;
}
var $template = DOM.element(obj);
if ($template.prop('tagName') === 'SCRIPT') {
return function template() {
return $template.text();
};
}
return function template() {
return String(obj);
};
},
defer: function (fn) {
setTimeout(fn, 0);
},
noop: function () {},
formatPrefix: function (prefix, noPrefix) {
return noPrefix ? '' : prefix + '-';
},
className: function (prefix, clazz, skipDot) {
return (skipDot ? '' : '.') + prefix + clazz;
},
escapeHighlightedString: function (str, highlightPreTag, highlightPostTag) {
highlightPreTag = highlightPreTag || '<em>';
var pre = document.createElement('div');
pre.appendChild(document.createTextNode(highlightPreTag));
highlightPostTag = highlightPostTag || '</em>';
var post = document.createElement('div');
post.appendChild(document.createTextNode(highlightPostTag));
var div = document.createElement('div');
div.appendChild(document.createTextNode(str));
return div.innerHTML
.replace(RegExp(escapeRegExp(pre.innerHTML), 'g'), highlightPreTag)
.replace(RegExp(escapeRegExp(post.innerHTML), 'g'), highlightPostTag);
},
};
},
function (module, exports, __webpack_require__) {
'use strict';
module.exports = { element: null };
},
function (module, exports) {
var hasOwn = Object.prototype.hasOwnProperty;
var toString = Object.prototype.toString;
module.exports = function forEach(obj, fn, ctx) {
if (toString.call(fn) !== '[object Function]') {
throw new TypeError('iterator must be a function');
}
var l = obj.length;
if (l === +l) {
for (var i = 0; i < l; i++) {
fn.call(ctx, obj[i], i, obj);
}
} else {
for (var k in obj) {
if (hasOwn.call(obj, k)) {
fn.call(ctx, obj[k], k, obj);
}
}
}
};
},
function (module, exports) {
module.exports = function clone(obj) {
return JSON.parse(JSON.stringify(obj));
};
},
function (module, exports) {
var g;
g = (function () {
return this;
})();
try {
g = g || Function('return this')() || (1, eval)('this');
} catch (e) {
if (typeof window === 'object') g = window;
}
module.exports = g;
},
function (module, exports, __webpack_require__) {
'use strict';
var inherits = __webpack_require__(12);
function AlgoliaSearchError(message, extraProperties) {
var forEach = __webpack_require__(2);
var error = this;
if (typeof Error.captureStackTrace === 'function') {
Error.captureStackTrace(this, this.constructor);
} else {
error.stack = new Error().stack || 'Cannot get a stacktrace, browser is too old';
}
this.name = 'AlgoliaSearchError';
this.message = message || 'Unknown error';
if (extraProperties) {
forEach(extraProperties, function addToErrorObject(value, key) {
error[key] = value;
});
}
}
inherits(AlgoliaSearchError, Error);
function createCustomError(name, message) {
function AlgoliaSearchCustomError() {
var args = Array.prototype.slice.call(arguments, 0);
if (typeof args[0] !== 'string') {
args.unshift(message);
}
AlgoliaSearchError.apply(this, args);
this.name = 'AlgoliaSearch' + name + 'Error';
}
inherits(AlgoliaSearchCustomError, AlgoliaSearchError);
return AlgoliaSearchCustomError;
}
module.exports = {
AlgoliaSearchError: AlgoliaSearchError,
UnparsableJSON: createCustomError(
'UnparsableJSON',
'Could not parse the incoming response as JSON, see err.more for details',
),
RequestTimeout: createCustomError(
'RequestTimeout',
'Request timedout before getting a response',
),
Network: createCustomError('Network', 'Network issue, see err.more for details'),
JSONPScriptFail: createCustomError(
'JSONPScriptFail',
'<script> was loaded but did not call our provided callback',
),
JSONPScriptError: createCustomError(
'JSONPScriptError',
'<script> unable to load due to an `error` event on it',
),
Unknown: createCustomError('Unknown', 'Unknown error occured'),
};
},
function (module, exports) {
var toString = {}.toString;
module.exports =
Array.isArray ||
function (arr) {
return toString.call(arr) == '[object Array]';
};
},
function (module, exports, __webpack_require__) {
var foreach = __webpack_require__(2);
module.exports = function map(arr, fn) {
var newArr = [];
foreach(arr, function (item, itemIndex) {
newArr.push(fn(item, itemIndex, arr));
});
return newArr;
};
},
function (module, exports, __webpack_require__) {
(function (process) {
exports = module.exports = __webpack_require__(39);
exports.log = log;
exports.formatArgs = formatArgs;
exports.save = save;
exports.load = load;
exports.useColors = useColors;
exports.storage =
'undefined' != typeof chrome && 'undefined' != typeof chrome.storage
? chrome.storage.local
: localstorage();
exports.colors = [
'lightseagreen',
'forestgreen',
'goldenrod',
'dodgerblue',
'darkorchid',
'crimson',
];
function useColors() {
if (
typeof window !== 'undefined' &&
window.process &&
window.process.type === 'renderer'
) {
return true;
}
return (
(typeof document !== 'undefined' &&
document.documentElement &&
document.documentElement.style &&
document.documentElement.style.WebkitAppearance) ||
(typeof window !== 'undefined' &&
window.console &&
(window.console.firebug || (window.console.exception && window.console.table))) ||
(typeof navigator !== 'undefined' &&
navigator.userAgent &&
navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/) &&
parseInt(RegExp.$1, 10) >= 31) ||
(typeof navigator !== 'undefined' &&
navigator.userAgent &&
navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/))
);
}
exports.formatters.j = function (v) {
try {
return JSON.stringify(v);
} catch (err) {
return '[UnexpectedJSONParseError]: ' + err.message;
}
};
function formatArgs(args) {
var useColors = this.useColors;
args[0] =
(useColors ? '%c' : '') +
this.namespace +
(useColors ? ' %c' : ' ') +
args[0] +
(useColors ? '%c ' : ' ') +
'+' +
exports.humanize(this.diff);
if (!useColors) return;
var c = 'color: ' + this.color;
args.splice(1, 0, c, 'color: inherit');
var index = 0;
var lastC = 0;
args[0].replace(/%[a-zA-Z%]/g, function (match) {
if ('%%' === match) return;
index++;
if ('%c' === match) {
lastC = index;
}
});
args.splice(lastC, 0, c);
}
function log() {
return (
'object' === typeof console &&
console.log &&
Function.prototype.apply.call(console.log, console, arguments)
);
}
function save(namespaces) {
try {
if (null == namespaces) {
exports.storage.removeItem('debug');
} else {
exports.storage.debug = namespaces;
}
} catch (e) {}
}
function load() {
var r;
try {
r = exports.storage.debug;
} catch (e) {}
if (!r && typeof process !== 'undefined' && 'env' in process) {
r = Object({ NODE_ENV: 'production' }).DEBUG;
}
return r;
}
exports.enable(load());
function localstorage() {
try {
return window.localStorage;
} catch (e) {}
}
}).call(exports, __webpack_require__(9));
},
function (module, exports) {
var process = (module.exports = {});
var cachedSetTimeout;
var cachedClearTimeout;
function defaultSetTimout() {
throw new Error('setTimeout has not been defined');
}
function defaultClearTimeout() {
throw new Error('clearTimeout has not been defined');
}
(function () {
try {
if (typeof setTimeout === 'function') {
cachedSetTimeout = setTimeout;
} else {
cachedSetTimeout = defaultSetTimout;
}
} catch (e) {
cachedSetTimeout = defaultSetTimout;
}
try {
if (typeof clearTimeout === 'function') {
cachedClearTimeout = clearTimeout;
} else {
cachedClearTimeout = defaultClearTimeout;
}
} catch (e) {
cachedClearTimeout = defaultClearTimeout;
}
})();
function runTimeout(fun) {
if (cachedSetTimeout === setTimeout) {
return setTimeout(fun, 0);
}
if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {
cachedSetTimeout = setTimeout;
return setTimeout(fun, 0);
}
try {
return cachedSetTimeout(fun, 0);
} catch (e) {
try {
return cachedSetTimeout.call(null, fun, 0);
} catch (e) {
return cachedSetTimeout.call(this, fun, 0);
}
}
}
function runClearTimeout(marker) {
if (cachedClearTimeout === clearTimeout) {
return clearTimeout(marker);
}
if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {
cachedClearTimeout = clearTimeout;
return clearTimeout(marker);
}
try {
return cachedClearTimeout(marker);
} catch (e) {
try {
return cachedClearTimeout.call(null, marker);
} catch (e) {
return cachedClearTimeout.call(this, marker);
}
}
}
var queue = [];
var draining = false;
var currentQueue;
var queueIndex = -1;
function cleanUpNextTick() {
if (!draining || !currentQueue) {
return;
}
draining = false;
if (currentQueue.length) {
queue = currentQueue.concat(queue);
} else {
queueIndex = -1;
}
if (queue.length) {
drainQueue();
}
}
function drainQueue() {
if (draining) {
return;
}
var timeout = runTimeout(cleanUpNextTick);
draining = true;
var len = queue.length;
while (len) {
currentQueue = queue;
queue = [];
while (++queueIndex < len) {
if (currentQueue) {
currentQueue[queueIndex].run();
}
}
queueIndex = -1;
len = queue.length;
}
currentQueue = null;
draining = false;
runClearTimeout(timeout);
}
process.nextTick = function (fun) {
var args = new Array(arguments.length - 1);
if (arguments.length > 1) {
for (var i = 1; i < arguments.length; i++) {
args[i - 1] = arguments[i];
}
}
queue.push(new Item(fun, args));
if (queue.length === 1 && !draining) {
runTimeout(drainQueue);
}
};
function Item(fun, array) {
this.fun = fun;
this.array = array;
}
Item.prototype.run = function () {
this.fun.apply(null, this.array);
};
process.title = 'browser';
process.browser = true;
process.env = {};
process.argv = [];
process.version = '';
process.versions = {};
function noop() {}
process.on = noop;
process.addListener = noop;
process.once = noop;
process.off = noop;
process.removeListener = noop;
process.removeAllListeners = noop;
process.emit = noop;
process.prependListener = noop;
process.prependOnceListener = noop;
process.listeners = function (name) {
return [];
};
process.binding = function (name) {
throw new Error('process.binding is not supported');
};
process.cwd = function () {
return '/';
};
process.chdir = function (dir) {
throw new Error('process.chdir is not supported');
};
process.umask = function () {
return 0;
};
},
function (module, exports, __webpack_require__) {
'use strict';
var immediate = __webpack_require__(53);
var splitter = /\s+/;
module.exports = { onSync: onSync, onAsync: onAsync, off: off, trigger: trigger };
function on(method, types, cb, context) {
var type;
if (!cb) {
return this;
}
types = types.split(splitter);
cb = context ? bindContext(cb, context) : cb;
this._callbacks = this._callbacks || {};
while ((type = types.shift())) {
this._callbacks[type] = this._callbacks[type] || { sync: [], async: [] };
this._callbacks[type][method].push(cb);
}
return this;
}
function onAsync(types, cb, context) {
return on.call(this, 'async', types, cb, context);
}
function onSync(types, cb, context) {
return on.call(this, 'sync', types, cb, context);
}
function off(types) {
var type;
if (!this._callbacks) {
return this;
}
types = types.split(splitter);
while ((type = types.shift())) {
delete this._callbacks[type];
}
return this;
}
function trigger(types) {
var type;
var callbacks;
var args;
var syncFlush;
var asyncFlush;
if (!this._callbacks) {
return this;
}
types = types.split(splitter);
args = [].slice.call(arguments, 1);
while ((type = types.shift()) && (callbacks = this._callbacks[type])) {
syncFlush = getFlush(callbacks.sync, this, [type].concat(args));
asyncFlush = getFlush(callbacks.async, this, [type].concat(args));
if (syncFlush()) {
immediate(asyncFlush);
}
}
return this;
}
function getFlush(callbacks, context, args) {
return flush;
function flush() {
var cancelled;
for (var i = 0, len = callbacks.length; !cancelled && i < len; i += 1) {
cancelled = callbacks[i].apply(context, args) === false;
}
return !cancelled;
}
}
function bindContext(fn, context) {
return fn.bind
? fn.bind(context)
: function () {
fn.apply(context, [].slice.call(arguments, 0));
};
}
},
function (module, exports, __webpack_require__) {
'use strict';
var _ = __webpack_require__(0);
var css = {
wrapper: { position: 'relative', display: 'inline-block' },
hint: {
position: 'absolute',
top: '0',
left: '0',
borderColor: 'transparent',
boxShadow: 'none',
opacity: '1',
},
input: { position: 'relative', verticalAlign: 'top', backgroundColor: 'transparent' },
inputWithNoHint: { position: 'relative', verticalAlign: 'top' },
dropdown: { position: 'absolute', top: '100%', left: '0', zIndex: '100', display: 'none' },
suggestions: { display: 'block' },
suggestion: { whiteSpace: 'nowrap', cursor: 'pointer' },
suggestionChild: { whiteSpace: 'normal' },
ltr: { left: '0', right: 'auto' },
rtl: { left: 'auto', right: '0' },
defaultClasses: {
root: 'algolia-autocomplete',
prefix: 'aa',
noPrefix: false,
dropdownMenu: 'dropdown-menu',
input: 'input',
hint: 'hint',
suggestions: 'suggestions',
suggestion: 'suggestion',
cursor: 'cursor',
dataset: 'dataset',
empty: 'empty',
},
appendTo: {
wrapper: { position: 'absolute', zIndex: '100', display: 'none' },
input: {},
inputWithNoHint: {},
dropdown: { display: 'block' },
},
};
if (_.isMsie()) {
_.mixin(css.input, {
backgroundImage:
'url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)',
});
}
if (_.isMsie() && _.isMsie() <= 7) {
_.mixin(css.input, { marginTop: '-1px' });
}
module.exports = css;
},
function (module, exports) {
if (typeof Object.create === 'function') {
module.exports = function inherits(ctor, superCtor) {
ctor.super_ = superCtor;
ctor.prototype = Object.create(superCtor.prototype, {
constructor: { value: ctor, enumerable: false, writable: true, configurable: true },
});
};
} else {
module.exports = function inherits(ctor, superCtor) {
ctor.super_ = superCtor;
var TempCtor = function () {};
TempCtor.prototype = superCtor.prototype;
ctor.prototype = new TempCtor();
ctor.prototype.constructor = ctor;
};
}
},
function (module, exports, __webpack_require__) {
module.exports = buildSearchMethod;
var errors = __webpack_require__(5);
function buildSearchMethod(queryParam, url) {
return function search(query, args, callback) {
if (
(typeof query === 'function' && typeof args === 'object') ||
typeof callback === 'object'
) {
throw new errors.AlgoliaSearchError(
'index.search usage is index.search(query, params, cb)',
);
}
if (arguments.length === 0 || typeof query === 'function') {
callback = query;
query = '';
} else if (arguments.length === 1 || typeof args === 'function') {
callback = args;
args = undefined;
}
if (typeof query === 'object' && query !== null) {
args = query;
query = undefined;
} else if (query === undefined || query === null) {
query = '';
}
var params = '';
if (query !== undefined) {
params += queryParam + '=' + encodeURIComponent(query);
}
var additionalUA;
if (args !== undefined) {
if (args.additionalUA) {
additionalUA = args.additionalUA;
delete args.additionalUA;
}
params = this.as._getSearchParams(args, params);
}
return this._search(params, url, callback, additionalUA);
};
}
},
function (module, exports, __webpack_require__) {
module.exports = function omit(obj, test) {
var keys = __webpack_require__(36);
var foreach = __webpack_require__(2);
var filtered = {};
foreach(keys(obj), function doFilter(keyName) {
if (test(keyName) !== true) {
filtered[keyName] = obj[keyName];
}
});
return filtered;
};
},
function (module, exports) {
(function (global, factory) {
module.exports = factory(global);
})(window, function (window) {
var Zepto = (function () {
var undefined,
key,
$,
classList,
emptyArray = [],
concat = emptyArray.concat,
filter = emptyArray.filter,
slice = emptyArray.slice,
document = window.document,
elementDisplay = {},
classCache = {},
cssNumber = {
'column-count': 1,
columns: 1,
'font-weight': 1,
'line-height': 1,
opacity: 1,
'z-index': 1,
zoom: 1,
},
fragmentRE = /^\s*<(\w+|!)[^>]*>/,
singleTagRE = /^<(\w+)\s*\/?>(?:<\/\1>|)$/,
tagExpanderRE =
/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,
rootNodeRE = /^(?:body|html)$/i,
capitalRE = /([A-Z])/g,
methodAttributes = ['val', 'css', 'html', 'text', 'data', 'width', 'height', 'offset'],
adjacencyOperators = ['after', 'prepend', 'before', 'append'],
table = document.createElement('table'),
tableRow = document.createElement('tr'),
containers = {
tr: document.createElement('tbody'),
tbody: table,
thead: table,
tfoot: table,
td: tableRow,
th: tableRow,
'*': document.createElement('div'),
},
readyRE = /complete|loaded|interactive/,
simpleSelectorRE = /^[\w-]*$/,
class2type = {},
toString = class2type.toString,
zepto = {},
camelize,
uniq,
tempParent = document.createElement('div'),
propMap = {
tabindex: 'tabIndex',
readonly: 'readOnly',
for: 'htmlFor',
class: 'className',
maxlength: 'maxLength',
cellspacing: 'cellSpacing',
cellpadding: 'cellPadding',
rowspan: 'rowSpan',
colspan: 'colSpan',
usemap: 'useMap',
frameborder: 'frameBorder',
contenteditable: 'contentEditable',
},
isArray =
Array.isArray ||
function (object) {
return object instanceof Array;
};
zepto.matches = function (element, selector) {
if (!selector || !element || element.nodeType !== 1) return false;
var matchesSelector =
element.matches ||
element.webkitMatchesSelector ||
element.mozMatchesSelector ||
element.oMatchesSelector ||
element.matchesSelector;
if (matchesSelector) return matchesSelector.call(element, selector);
var match,
parent = element.parentNode,
temp = !parent;
if (temp) (parent = tempParent).appendChild(element);
match = ~zepto.qsa(parent, selector).indexOf(element);
temp && tempParent.removeChild(element);
return match;
};
function type(obj) {
return obj == null ? String(obj) : class2type[toString.call(obj)] || 'object';
}
function isFunction(value) {
return type(value) == 'function';
}
function isWindow(obj) {
return obj != null && obj == obj.window;
}
function isDocument(obj) {
return obj != null && obj.nodeType == obj.DOCUMENT_NODE;
}
function isObject(obj) {
return type(obj) == 'object';
}
function isPlainObject(obj) {
return (
isObject(obj) && !isWindow(obj) && Object.getPrototypeOf(obj) == Object.prototype
);
}
function likeArray(obj) {
var length = !!obj && 'length' in obj && obj.length,
type = $.type(obj);
return (
'function' != type &&
!isWindow(obj) &&
('array' == type ||
length === 0 ||
(typeof length == 'number' && length > 0 && length - 1 in obj))
);
}
function compact(array) {
return filter.call(array, function (item) {
return item != null;
});
}
function flatten(array) {
return array.length > 0 ? $.fn.concat.apply([], array) : array;
}
camelize = function (str) {
return str.replace(/-+(.)?/g, function (match, chr) {
return chr ? chr.toUpperCase() : '';
});
};
function dasherize(str) {
return str
.replace(/::/g, '/')
.replace(/([A-Z]+)([A-Z][a-z])/g, '$1_$2')
.replace(/([a-z\d])([A-Z])/g, '$1_$2')
.replace(/_/g, '-')
.toLowerCase();
}
uniq = function (array) {
return filter.call(array, function (item, idx) {
return array.indexOf(item) == idx;
});
};
function classRE(name) {
return name in classCache
? classCache[name]
: (classCache[name] = new RegExp('(^|\\s)' + name + '(\\s|$)'));
}
function maybeAddPx(name, value) {
return typeof value == 'number' && !cssNumber[dasherize(name)] ? value + 'px' : value;
}
function defaultDisplay(nodeName) {
var element, display;
if (!elementDisplay[nodeName]) {
element = document.createElement(nodeName);
document.body.appendChild(element);
display = getComputedStyle(element, '').getPropertyValue('display');
element.parentNode.removeChild(element);
display == 'none' && (display = 'block');
elementDisplay[nodeName] = display;
}
return elementDisplay[nodeName];
}
function children(element) {
return 'children' in element
? slice.call(element.children)
: $.map(element.childNodes, function (node) {
if (node.nodeType == 1) return node;
});
}
function Z(dom, selector) {
var i,
len = dom ? dom.length : 0;
for (i = 0; i < len; i++) this[i] = dom[i];
this.length = len;
this.selector = selector || '';
}
zepto.fragment = function (html, name, properties) {
var dom, nodes, container;
if (singleTagRE.test(html)) dom = $(document.createElement(RegExp.$1));
if (!dom) {
if (html.replace) html = html.replace(tagExpanderRE, '<$1></$2>');
if (name === undefined) name = fragmentRE.test(html) && RegExp.$1;
if (!(name in containers)) name = '*';
container = containers[name];
container.innerHTML = '' + html;
dom = $.each(slice.call(container.childNodes), function () {
container.removeChild(this);
});
}
if (isPlainObject(properties)) {
nodes = $(dom);
$.each(properties, function (key, value) {
if (methodAttributes.indexOf(key) > -1) nodes[key](value);
else nodes.attr(key, value);
});
}
return dom;
};
zepto.Z = function (dom, selector) {
return new Z(dom, selector);
};
zepto.isZ = function (object) {
return object instanceof zepto.Z;
};
zepto.init = function (selector, context) {
var dom;
if (!selector) return zepto.Z();
else if (typeof selector == 'string') {
selector = selector.trim();
if (selector[0] == '<' && fragmentRE.test(selector))
(dom = zepto.fragment(selector, RegExp.$1, context)), (selector = null);
else if (context !== undefined) return $(context).find(selector);
else dom = zepto.qsa(document, selector);
} else if (isFunction(selector)) return $(document).ready(selector);
else if (zepto.isZ(selector)) return selector;
else {
if (isArray(selector)) dom = compact(selector);
else if (isObject(selector)) (dom = [selector]), (selector = null);
else if (fragmentRE.test(selector))
(dom = zepto.fragment(selector.trim(), RegExp.$1, context)), (selector = null);
else if (context !== undefined) return $(context).find(selector);
else dom = zepto.qsa(document, selector);
}
return zepto.Z(dom, selector);
};
$ = function (selector, context) {
return zepto.init(selector, context);
};
function extend(target, source, deep) {
for (key in source)
if (deep && (isPlainObject(source[key]) || isArray(source[key]))) {
if (isPlainObject(source[key]) && !isPlainObject(target[key])) target[key] = {};
if (isArray(source[key]) && !isArray(target[key])) target[key] = [];
extend(target[key], source[key], deep);
} else if (source[key] !== undefined) target[key] = source[key];
}
$.extend = function (target) {
var deep,
args = slice.call(arguments, 1);
if (typeof target == 'boolean') {
deep = target;
target = args.shift();
}
args.forEach(function (arg) {
extend(target, arg, deep);
});
return target;
};
zepto.qsa = function (element, selector) {
var found,
maybeID = selector[0] == '#',
maybeClass = !maybeID && selector[0] == '.',
nameOnly = maybeID || maybeClass ? selector.slice(1) : selector,
isSimple = simpleSelectorRE.test(nameOnly);
return element.getElementById && isSimple && maybeID
? (found = element.getElementById(nameOnly))
? [found]
: []
: element.nodeType !== 1 && element.nodeType !== 9 && element.nodeType !== 11
? []
: slice.call(
isSimple && !maybeID && element.getElementsByClassName
? maybeClass
? element.getElementsByClassName(nameOnly)
: element.getElementsByTagName(selector)
: element.querySelectorAll(selector),
);
};
function filtered(nodes, selector) {
return selector == null ? $(nodes) : $(nodes).filter(selector);
}
$.contains = document.documentElement.contains
? function (parent, node) {
return parent !== node && parent.contains(node);
}
: function (parent, node) {
while (node && (node = node.parentNode)) if (node === parent) return true;
return false;
};
function funcArg(context, arg, idx, payload) {
return isFunction(arg) ? arg.call(context, idx, payload) : arg;
}
function setAttribute(node, name, value) {
value == null ? node.removeAttribute(name) : node.setAttribute(name, value);
}
function className(node, value) {
var klass = node.className || '',
svg = klass && klass.baseVal !== undefined;
if (value === undefined) return svg ? klass.baseVal : klass;
svg ? (klass.baseVal = value) : (node.className = value);
}
function deserializeValue(value) {
try {
return value
? value == 'true' ||
(value == 'false'
? false
: value == 'null'
? null
: +value + '' == value
? +value
: /^[\[\{]/.test(value)
? $.parseJSON(value)
: value)
: value;
} catch (e) {
return value;
}
}
$.type = type;
$.isFunction = isFunction;
$.isWindow = isWindow;
$.isArray = isArray;
$.isPlainObject = isPlainObject;
$.isEmptyObject = function (obj) {
var name;
for (name in obj) return false;
return true;
};
$.isNumeric = function (val) {
var num = Number(val),
type = typeof val;
return (
(val != null &&
type != 'boolean' &&
(type != 'string' || val.length) &&
!isNaN(num) &&
isFinite(num)) ||
false
);
};
$.inArray = function (elem, array, i) {
return emptyArray.indexOf.call(array, elem, i);
};
$.camelCase = camelize;
$.trim = function (str) {
return str == null ? '' : String.prototype.trim.call(str);
};
$.uuid = 0;
$.support = {};
$.expr = {};
$.noop = function () {};
$.map = function (elements, callback) {
var value,
values = [],
i,
key;
if (likeArray(elements))
for (i = 0; i < elements.length; i++) {
value = callback(elements[i], i);
if (value != null) values.push(value);
}
else
for (key in elements) {
value = callback(elements[key], key);
if (value != null) values.push(value);
}
return flatten(values);
};
$.each = function (elements, callback) {
var i, key;
if (likeArray(elements)) {
for (i = 0; i < elements.length; i++)
if (callback.call(elements[i], i, elements[i]) === false) return elements;
} else {
for (key in elements)
if (callback.call(elements[key], key, elements[key]) === false) return elements;
}
return elements;
};
$.grep = function (elements, callback) {
return filter.call(elements, callback);
};
if (window.JSON) $.parseJSON = JSON.parse;
$.each(
'Boolean Number String Function Array Date RegExp Object Error'.split(' '),
function (i, name) {
class2type['[object ' + name + ']'] = name.toLowerCase();
},
);
$.fn = {
constructor: zepto.Z,
length: 0,
forEach: emptyArray.forEach,
reduce: emptyArray.reduce,
push: emptyArray.push,
sort: emptyArray.sort,
splice: emptyArray.splice,
indexOf: emptyArray.indexOf,
concat: function () {
var i,
value,
args = [];
for (i = 0; i < arguments.length; i++) {
value = arguments[i];
args[i] = zepto.isZ(value) ? value.toArray() : value;
}
return concat.apply(zepto.isZ(this) ? this.toArray() : this, args);
},
map: function (fn) {
return $(
$.map(this, function (el, i) {
return fn.call(el, i, el);
}),
);
},
slice: function () {
return $(slice.apply(this, arguments));
},
ready: function (callback) {
if (readyRE.test(document.readyState) && document.body) callback($);
else
document.addEventListener(
'DOMContentLoaded',
function () {
callback($);
},
false,
);
return this;
},
get: function (idx) {
return idx === undefined
? slice.call(this)
: this[idx >= 0 ? idx : idx + this.length];
},
toArray: function () {
return this.get();
},
size: function () {
return this.length;
},
remove: function () {
return this.each(function () {
if (this.parentNode != null) this.parentNode.removeChild(this);
});
},
each: function (callback) {
emptyArray.every.call(this, function (el, idx) {
return callback.call(el, idx, el) !== false;
});
return this;
},
filter: function (selector) {
if (isFunction(selector)) return this.not(this.not(selector));
return $(
filter.call(this, function (element) {
return zepto.matches(element, selector);
}),
);
},
add: function (selector, context) {
return $(uniq(this.concat($(selector, context))));
},
is: function (selector) {
return this.length > 0 && zepto.matches(this[0], selector);
},
not: function (selector) {
var nodes = [];
if (isFunction(selector) && selector.call !== undefined)
this.each(function (idx) {
if (!selector.call(this, idx)) nodes.push(this);
});
else {
var excludes =
typeof selector == 'string'
? this.filter(selector)
: likeArray(selector) && isFunction(selector.item)
? slice.call(selector)
: $(selector);
this.forEach(function (el) {
if (excludes.indexOf(el) < 0) nodes.push(el);
});
}
return $(nodes);
},
has: function (selector) {
return this.filter(function () {
return isObject(selector)
? $.contains(this, selector)
: $(this).find(selector).size();
});
},
eq: function (idx) {
return idx === -1 ? this.slice(idx) : this.slice(idx, +idx + 1);
},
first: function () {
var el = this[0];
return el && !isObject(el) ? el : $(el);
},
last: function () {
var el = this[this.length - 1];
return el && !isObject(el) ? el : $(el);
},
find: function (selector) {
var result,
$this = this;
if (!selector) result = $();
else if (typeof selector == 'object')
result = $(selector).filter(function () {
var node = this;
return emptyArray.some.call($this, function (parent) {
return $.contains(parent, node);
});
});
else if (this.length == 1) result = $(zepto.qsa(this[0], selector));
else
result = this.map(function () {
return zepto.qsa(this, selector);
});
return result;
},
closest: function (selector, context) {
var nodes = [],
collection = typeof selector == 'object' && $(selector);
this.each(function (_, node) {
while (
node &&
!(collection ? collection.indexOf(node) >= 0 : zepto.matches(node, selector))
)
node = node !== context && !isDocument(node) && node.parentNode;
if (node && nodes.indexOf(node) < 0) nodes.push(node);
});
return $(nodes);
},
parents: function (selector) {
var ancestors = [],
nodes = this;
while (nodes.length > 0)
nodes = $.map(nodes, function (node) {
if (
(node = node.parentNode) &&
!isDocument(node) &&
ancestors.indexOf(node) < 0
) {
ancestors.push(node);
return node;
}
});
return filtered(ancestors, selector);
},
parent: function (selector) {
return filtered(uniq(this.pluck('parentNode')), selector);
},
children: function (selector) {
return filtered(
this.map(function () {
return children(this);
}),
selector,
);
},
contents: function () {
return this.map(function () {
return this.contentDocument || slice.call(this.childNodes);
});
},
siblings: function (selector) {
return filtered(
this.map(function (i, el) {
return filter.call(children(el.parentNode), function (child) {
return child !== el;
});
}),
selector,
);
},
empty: function () {
return this.each(function () {
this.innerHTML = '';
});
},
pluck: function (property) {
return $.map(this, function (el) {
return el[property];
});
},
show: function () {
return this.each(function () {
this.style.display == 'none' && (this.style.display = '');
if (getComputedStyle(this, '').getPropertyValue('display') == 'none')
this.style.display = defaultDisplay(this.nodeName);
});
},
replaceWith: function (newContent) {
return this.before(newContent).remove();
},
wrap: function (structure) {
var func = isFunction(structure);
if (this[0] && !func)
var dom = $(structure).get(0),
clone = dom.parentNode || this.length > 1;
return this.each(function (index) {
$(this).wrapAll(
func ? structure.call(this, index) : clone ? dom.cloneNode(true) : dom,
);
});
},
wrapAll: function (structure) {
if (this[0]) {
$(this[0]).before((structure = $(structure)));
var children;
while ((children = structure.children()).length) structure = children.first();
$(structure).append(this);
}
return this;
},
wrapInner: function (structure) {
var func = isFunction(structure);
return this.each(function (index) {
var self = $(this),
contents = self.contents(),
dom = func ? structure.call(this, index) : structure;
contents.length ? contents.wrapAll(dom) : self.append(dom);
});
},
unwrap: function () {
this.parent().each(function () {
$(this).replaceWith($(this).children());
});
return this;
},
clone: function () {
return this.map(function () {
return this.cloneNode(true);
});
},
hide: function () {
return this.css('display', 'none');
},
toggle: function (setting) {
return this.each(function () {
var el = $(this);
(setting === undefined ? el.css('display') == 'none' : setting)
? el.show()
: el.hide();
});
},
prev: function (selector) {
return $(this.pluck('previousElementSibling')).filter(selector || '*');
},
next: function (selector) {
return $(this.pluck('nextElementSibling')).filter(selector || '*');
},
html: function (html) {
return 0 in arguments
? this.each(function (idx) {
var originHtml = this.innerHTML;
$(this).empty().append(funcArg(this, html, idx, originHtml));
})
: 0 in this
? this[0].innerHTML
: null;
},
text: function (text) {
return 0 in arguments
? this.each(function (idx) {
var newText = funcArg(this, text, idx, this.textContent);
this.textContent = newText == null ? '' : '' + newText;
})
: 0 in this
? this.pluck('textContent').join('')
: null;
},
attr: function (name, value) {
var result;
return typeof name == 'string' && !(1 in arguments)
? 0 in this &&
this[0].nodeType == 1 &&
(result = this[0].getAttribute(name)) != null
? result
: undefined
: this.each(function (idx) {
if (this.nodeType !== 1) return;
if (isObject(name)) for (key in name) setAttribute(this, key, name[key]);
else
setAttribute(this, name, funcArg(this, value, idx, this.getAttribute(name)));
});
},
removeAttr: function (name) {
return this.each(function () {
this.nodeType === 1 &&
name.split(' ').forEach(function (attribute) {
setAttribute(this, attribute);
}, this);
});
},
prop: function (name, value) {
name = propMap[name] || name;
return 1 in arguments
? this.each(function (idx) {
this[name] = funcArg(this, value, idx, this[name]);
})
: this[0] && this[0][name];
},
removeProp: function (name) {
name = propMap[name] || name;
return this.each(function () {
delete this[name];
});
},
data: function (name, value) {
var attrName = 'data-' + name.replace(capitalRE, '-$1').toLowerCase();
var data = 1 in arguments ? this.attr(attrName, value) : this.attr(attrName);
return data !== null ? deserializeValue(data) : undefined;
},
val: function (value) {
if (0 in arguments) {
if (value == null) value = '';
return this.each(function (idx) {
this.value = funcArg(this, value, idx, this.value);
});
} else {
return (
this[0] &&
(this[0].multiple
? $(this[0])
.find('option')
.filter(function () {
return this.selected;
})
.pluck('value')
: this[0].value)
);
}
},
offset: function (coordinates) {
if (coordinates)
return this.each(function (index) {
var $this = $(this),
coords = funcArg(this, coordinates, index, $this.offset()),
parentOffset = $this.offsetParent().offset(),
props = {
top: coords.top - parentOffset.top,
left: coords.left - parentOffset.left,
};
if ($this.css('position') == 'static') props['position'] = 'relative';
$this.css(props);
});
if (!this.length) return null;
if (
document.documentElement !== this[0] &&
!$.contains(document.documentElement, this[0])
)
return { top: 0, left: 0 };
var obj = this[0].getBoundingClientRect();
return {
left: obj.left + window.pageXOffset,
top: obj.top + window.pageYOffset,
width: Math.round(obj.width),
height: Math.round(obj.height),
};
},
css: function (property, value) {
if (arguments.length < 2) {
var element = this[0];
if (typeof property == 'string') {
if (!element) return;
return (
element.style[camelize(property)] ||
getComputedStyle(element, '').getPropertyValue(property)
);
} else if (isArray(property)) {
if (!element) return;
var props = {};
var computedStyle = getComputedStyle(element, '');
$.each(property, function (_, prop) {
props[prop] =
element.style[camelize(prop)] || computedStyle.getPropertyValue(prop);
});
return props;
}
}
var css = '';
if (type(property) == 'string') {
if (!value && value !== 0)
this.each(function () {
this.style.removeProperty(dasherize(property));
});
else css = dasherize(property) + ':' + maybeAddPx(property, value);
} else {
for (key in property)
if (!property[key] && property[key] !== 0)
this.each(function () {
this.style.removeProperty(dasherize(key));
});
else css += dasherize(key) + ':' + maybeAddPx(key, property[key]) + ';';
}
return this.each(function () {
this.style.cssText += ';' + css;
});
},
index: function (element) {
return element
? this.indexOf($(element)[0])
: this.parent().children().indexOf(this[0]);
},
hasClass: function (name) {
if (!name) return false;
return emptyArray.some.call(
this,
function (el) {
return this.test(className(el));
},
classRE(name),
);
},
addClass: function (name) {
if (!name) return this;
return this.each(function (idx) {
if (!('className' in this)) return;
classList = [];
var cls = className(this),
newName = funcArg(this, name, idx, cls);
newName.split(/\s+/g).forEach(function (klass) {
if (!$(this).hasClass(klass)) classList.push(klass);
}, this);
classList.length && className(this, cls + (cls ? ' ' : '') + classList.join(' '));
});
},
removeClass: function (name) {
return this.each(function (idx) {
if (!('className' in this)) return;
if (name === undefined) return className(this, '');
classList = className(this);
funcArg(this, name, idx, classList)
.split(/\s+/g)
.forEach(function (klass) {
classList = classList.replace(classRE(klass), ' ');
});
className(this, classList.trim());
});
},
toggleClass: function (name, when) {
if (!name) return this;
return this.each(function (idx) {
var $this = $(this),
names = funcArg(this, name, idx, className(this));
names.split(/\s+/g).forEach(function (klass) {
(when === undefined ? !$this.hasClass(klass) : when)
? $this.addClass(klass)
: $this.removeClass(klass);
});
});
},
scrollTop: function (value) {
if (!this.length) return;
var hasScrollTop = 'scrollTop' in this[0];
if (value === undefined)
return hasScrollTop ? this[0].scrollTop : this[0].pageYOffset;
return this.each(
hasScrollTop
? function () {
this.scrollTop = value;
}
: function () {
this.scrollTo(this.scrollX, value);
},
);
},
scrollLeft: function (value) {
if (!this.length) return;
var hasScrollLeft = 'scrollLeft' in this[0];
if (value === undefined)
return hasScrollLeft ? this[0].scrollLeft : this[0].pageXOffset;
return this.each(
hasScrollLeft
? function () {
this.scrollLeft = value;
}
: function () {
this.scrollTo(value, this.scrollY);
},
);
},
position: function () {
if (!this.length) return;
var elem = this[0],
offsetParent = this.offsetParent(),
offset = this.offset(),
parentOffset = rootNodeRE.test(offsetParent[0].nodeName)
? { top: 0, left: 0 }
: offsetParent.offset();
offset.top -= parseFloat($(elem).css('margin-top')) || 0;
offset.left -= parseFloat($(elem).css('margin-left')) || 0;
parentOffset.top += parseFloat($(offsetParent[0]).css('border-top-width')) || 0;
parentOffset.left += parseFloat($(offsetParent[0]).css('border-left-width')) || 0;
return { top: offset.top - parentOffset.top, left: offset.left - parentOffset.left };
},
offsetParent: function () {
return this.map(function () {
var parent = this.offsetParent || document.body;
while (
parent &&
!rootNodeRE.test(parent.nodeName) &&
$(parent).css('position') == 'static'
)
parent = parent.offsetParent;
return parent;
});
},
};
$.fn.detach = $.fn.remove;
['width', 'height'].forEach(function (dimension) {
var dimensionProperty = dimension.replace(/./, function (m) {
return m[0].toUpperCase();
});
$.fn[dimension] = function (value) {
var offset,
el = this[0];
if (value === undefined)
return isWindow(el)
? el['inner' + dimensionProperty]
: isDocument(el)
? el.documentElement['scroll' + dimensionProperty]
: (offset = this.offset()) && offset[dimension];
else
return this.each(function (idx) {
el = $(this);
el.css(dimension, funcArg(this, value, idx, el[dimension]()));
});
};
});
function traverseNode(node, fun) {
fun(node);
for (var i = 0, len = node.childNodes.length; i < len; i++)
traverseNode(node.childNodes[i], fun);
}
adjacencyOperators.forEach(function (operator, operatorIndex) {
var inside = operatorIndex % 2;
$.fn[operator] = function () {
var argType,
nodes = $.map(arguments, function (arg) {
var arr = [];
argType = type(arg);
if (argType == 'array') {
arg.forEach(function (el) {
if (el.nodeType !== undefined) return arr.push(el);
else if ($.zepto.isZ(el)) return (arr = arr.concat(el.get()));
arr = arr.concat(zepto.fragment(el));
});
return arr;
}
return argType == 'object' || arg == null ? arg : zepto.fragment(arg);
}),
parent,
copyByClone = this.length > 1;
if (nodes.length < 1) return this;
return this.each(function (_, target) {
parent = inside ? target : target.parentNode;
target =
operatorIndex == 0
? target.nextSibling
: operatorIndex == 1
? target.firstChild
: operatorIndex == 2
? target
: null;
var parentInDocument = $.contains(document.documentElement, parent);
nodes.forEach(function (node) {
if (copyByClone) node = node.cloneNode(true);
else if (!parent) return $(node).remove();
parent.insertBefore(node, target);
if (parentInDocument)
traverseNode(node, function (el) {
if (
el.nodeName != null &&
el.nodeName.toUpperCase() === 'SCRIPT' &&
(!el.type || el.type === 'text/javascript') &&
!el.src
) {
var target = el.ownerDocument ? el.ownerDocument.defaultView : window;
target['eval'].call(target, el.innerHTML);
}
});
});
});
};
$.fn[inside ? operator + 'To' : 'insert' + (operatorIndex ? 'Before' : 'After')] =
function (html) {
$(html)[operator](this);
return this;
};
});
zepto.Z.prototype = Z.prototype = $.fn;
zepto.uniq = uniq;
zepto.deserializeValue = deserializeValue;
$.zepto = zepto;
return $;
})();
(function ($) {
var _zid = 1,
undefined,
slice = Array.prototype.slice,
isFunction = $.isFunction,
isString = function (obj) {
return typeof obj == 'string';
},
handlers = {},
specialEvents = {},
focusinSupported = 'onfocusin' in window,
focus = { focus: 'focusin', blur: 'focusout' },
hover = { mouseenter: 'mouseover', mouseleave: 'mouseout' };
specialEvents.click =
specialEvents.mousedown =
specialEvents.mouseup =
specialEvents.mousemove =
'MouseEvents';
function zid(element) {
return element._zid || (element._zid = _zid++);
}
function findHandlers(element, event, fn, selector) {
event = parse(event);
if (event.ns) var matcher = matcherFor(event.ns);
return (handlers[zid(element)] || []).filter(function (handler) {
return (
handler &&
(!event.e || handler.e == event.e) &&
(!event.ns || matcher.test(handler.ns)) &&
(!fn || zid(handler.fn) === zid(fn)) &&
(!selector || handler.sel == selector)
);
});
}
function parse(event) {
var parts = ('' + event).split('.');
return { e: parts[0], ns: parts.slice(1).sort().join(' ') };
}
function matcherFor(ns) {
return new RegExp('(?:^| )' + ns.replace(' ', ' .* ?') + '(?: |$)');
}
function eventCapture(handler, captureSetting) {
return (handler.del && !focusinSupported && handler.e in focus) || !!captureSetting;
}
function realEvent(type) {
return hover[type] || (focusinSupported && focus[type]) || type;
}
function add(element, events, fn, data, selector, delegator, capture) {
var id = zid(element),
set = handlers[id] || (handlers[id] = []);
events.split(/\s/).forEach(function (event) {
if (event == 'ready') return $(document).ready(fn);
var handler = parse(event);
handler.fn = fn;
handler.sel = selector;
if (handler.e in hover)
fn = function (e) {
var related = e.relatedTarget;
if (!related || (related !== this && !$.contains(this, related)))
return handler.fn.apply(this, arguments);
};
handler.del = delegator;
var callback = delegator || fn;
handler.proxy = function (e) {
e = compatible(e);
if (e.isImmediatePropagationStopped()) return;
try {
var dataPropDescriptor = Object.getOwnPropertyDescriptor(e, 'data');
if (!dataPropDescriptor || dataPropDescriptor.writable) e.data = data;
} catch (e) {}
var result = callback.apply(
element,
e._args == undefined ? [e] : [e].concat(e._args),
);
if (result === false) e.preventDefault(), e.stopPropagation();
return result;
};
handler.i = set.length;
set.push(handler);
if ('addEventListener' in element)
element.addEventListener(
realEvent(handler.e),
handler.proxy,
eventCapture(handler, capture),
);
});
}
function remove(element, events, fn, selector, capture) {
var id = zid(element);
(events || '').split(/\s/).forEach(function (event) {
findHandlers(element, event, fn, selector).forEach(function (handler) {
delete handlers[id][handler.i];
if ('removeEventListener' in element)
element.removeEventListener(
realEvent(handler.e),
handler.proxy,
eventCapture(handler, capture),
);
});
});
}
$.event = { add: add, remove: remove };
$.proxy = function (fn, context) {
var args = 2 in arguments && slice.call(arguments, 2);
if (isFunction(fn)) {
var proxyFn = function () {
return fn.apply(context, args ? args.concat(slice.call(arguments)) : arguments);
};
proxyFn._zid = zid(fn);
return proxyFn;
} else if (isString(context)) {
if (args) {
args.unshift(fn[context], fn);
return $.proxy.apply(null, args);
} else {
return $.proxy(fn[context], fn);
}
} else {
throw new TypeError('expected function');
}
};
$.fn.bind = function (event, data, callback) {
return this.on(event, data, callback);
};
$.fn.unbind = function (event, callback) {
return this.off(event, callback);
};
$.fn.one = function (event, selector, data, callback) {
return this.on(event, selector, data, callback, 1);
};
var returnTrue = function () {
return true;
},
returnFalse = function () {
return false;
},
ignoreProperties = /^([A-Z]|returnValue$|layer[XY]$|webkitMovement[XY]$)/,
eventMethods = {
preventDefault: 'isDefaultPrevented',
stopImmediatePropagation: 'isImmediatePropagationStopped',
stopPropagation: 'isPropagationStopped',
};
function compatible(event, source) {
if (source || !event.isDefaultPrevented) {
source || (source = event);
$.each(eventMethods, function (name, predicate) {
var sourceMethod = source[name];
event[name] = function () {
this[predicate] = returnTrue;
return sourceMethod && sourceMethod.apply(source, arguments);
};
event[predicate] = returnFalse;
});
event.timeStamp || (event.timeStamp = Date.now());
if (
source.defaultPrevented !== undefined
? source.defaultPrevented
: 'returnValue' in source
? source.returnValue === false
: source.getPreventDefault && source.getPreventDefault()
)
event.isDefaultPrevented = returnTrue;
}
return event;
}
function createProxy(event) {
var key,
proxy = { originalEvent: event };
for (key in event)
if (!ignoreProperties.test(key) && event[key] !== undefined) proxy[key] = event[key];
return compatible(proxy, event);
}
$.fn.delegate = function (selector, event, callback) {
return this.on(event, selector, callback);
};
$.fn.undelegate = function (selector, event, callback) {
return this.off(event, selector, callback);
};
$.fn.live = function (event, callback) {
$(document.body).delegate(this.selector, event, callback);
return this;
};
$.fn.die = function (event, callback) {
$(document.body).undelegate(this.selector, event, callback);
return this;
};
$.fn.on = function (event, selector, data, callback, one) {
var autoRemove,
delegator,
$this = this;
if (event && !isString(event)) {
$.each(event, function (type, fn) {
$this.on(type, selector, data, fn, one);
});
return $this;
}
if (!isString(selector) && !isFunction(callback) && callback !== false)
(callback = data), (data = selector), (selector = undefined);
if (callback === undefined || data === false) (callback = data), (data = undefined);
if (callback === false) callback = returnFalse;
return $this.each(function (_, element) {
if (one)
autoRemove = function (e) {
remove(element, e.type, callback);
return callback.apply(this, arguments);
};
if (selector)
delegator = function (e) {
var evt,
match = $(e.target).closest(selector, element).get(0);
if (match && match !== element) {
evt = $.extend(createProxy(e), { currentTarget: match, liveFired: element });
return (autoRemove || callback).apply(
match,
[evt].concat(slice.call(arguments, 1)),
);
}
};
add(element, event, callback, data, selector, delegator || autoRemove);
});
};
$.fn.off = function (event, selector, callback) {
var $this = this;
if (event && !isString(event)) {
$.each(event, function (type, fn) {
$this.off(type, selector, fn);
});
return $this;
}
if (!isString(selector) && !isFunction(callback) && callback !== false)
(callback = selector), (selector = undefined);
if (callback === false) callback = returnFalse;
return $this.each(function () {
remove(this, event, callback, selector);
});
};
$.fn.trigger = function (event, args) {
event = isString(event) || $.isPlainObject(event) ? $.Event(event) : compatible(event);
event._args = args;
return this.each(function () {
if (event.type in focus && typeof this[event.type] == 'function') this[event.type]();
else if ('dispatchEvent' in this) this.dispatchEvent(event);
else $(this).triggerHandler(event, args);
});
};
$.fn.triggerHandler = function (event, args) {
var e, result;
this.each(function (i, element) {
e = createProxy(isString(event) ? $.Event(event) : event);
e._args = args;
e.target = element;
$.each(findHandlers(element, event.type || event), function (i, handler) {
result = handler.proxy(e);
if (e.isImmediatePropagationStopped()) return false;
});
});
return result;
};
(
'focusin focusout focus blur load resize scroll unload click dblclick ' +
'mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave ' +
'change select keydown keypress keyup error'
)
.split(' ')
.forEach(function (event) {
$.fn[event] = function (callback) {
return 0 in arguments ? this.bind(event, callback) : this.trigger(event);
};
});
$.Event = function (type, props) {
if (!isString(type)) (props = type), (type = props.type);
var event = document.createEvent(specialEvents[type] || 'Events'),
bubbles = true;
if (props)
for (var name in props)
name == 'bubbles' ? (bubbles = !!props[name]) : (event[name] = props[name]);
event.initEvent(type, bubbles, true);
return compatible(event);
};
})(Zepto);
(function ($) {
var cache = [],
timeout;
$.fn.remove = function () {
return this.each(function () {
if (this.parentNode) {
if (this.tagName === 'IMG') {
cache.push(this);
this.src = 'data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=';
if (timeout) clearTimeout(timeout);
timeout = setTimeout(function () {
cache = [];
}, 6e4);
}
this.parentNode.removeChild(this);
}
});
};
})(Zepto);
(function ($) {
var data = {},
dataAttr = $.fn.data,
camelize = $.camelCase,
exp = ($.expando = 'Zepto' + +new Date()),
emptyArray = [];
function getData(node, name) {
var id = node[exp],
store = id && data[id];
if (name === undefined) return store || setData(node);
else {
if (store) {
if (name in store) return store[name];
var camelName = camelize(name);
if (camelName in store) return store[camelName];
}
return dataAttr.call($(node), name);
}
}
function setData(node, name, value) {
var id = node[exp] || (node[exp] = ++$.uuid),
store = data[id] || (data[id] = attributeData(node));
if (name !== undefined) store[camelize(name)] = value;
return store;
}
function attributeData(node) {
var store = {};
$.each(node.attributes || emptyArray, function (i, attr) {
if (attr.name.indexOf('data-') == 0)
store[camelize(attr.name.replace('data-', ''))] = $.zepto.deserializeValue(
attr.value,
);
});
return store;
}
$.fn.data = function (name, value) {
return value === undefined
? $.isPlainObject(name)
? this.each(function (i, node) {
$.each(name, function (key, value) {
setData(node, key, value);
});
})
: 0 in this
? getData(this[0], name)
: undefined
: this.each(function () {
setData(this, name, value);
});
};
$.data = function (elem, name, value) {
return $(elem).data(name, value);
};
$.hasData = function (elem) {
var id = elem[exp],
store = id && data[id];
return store ? !$.isEmptyObject(store) : false;
};
$.fn.removeData = function (names) {
if (typeof names == 'string') names = names.split(/\s+/);
return this.each(function () {
var id = this[exp],
store = id && data[id];
if (store)
$.each(names || store, function (key) {
delete store[names ? camelize(this) : key];
});
});
};
['remove', 'empty'].forEach(function (methodName) {
var origFn = $.fn[methodName];
$.fn[methodName] = function () {
var elements = this.find('*');
if (methodName === 'remove') elements = elements.add(this);
elements.removeData();
return origFn.call(this);
};
});
})(Zepto);
return Zepto;
});
},
function (module, exports, __webpack_require__) {
'use strict';
var namespace = 'autocomplete:';
var _ = __webpack_require__(0);
var DOM = __webpack_require__(1);
function EventBus(o) {
if (!o || !o.el) {
_.error('EventBus initialized without el');
}
this.$el = DOM.element(o.el);
}
_.mixin(EventBus.prototype, {
trigger: function (type, suggestion, dataset, context) {
var event = _.Event(namespace + type);
this.$el.trigger(event, [suggestion, dataset, context]);
return event;
},
});
module.exports = EventBus;
},
function (module, exports, __webpack_require__) {
'use strict';
module.exports = {
wrapper: '<span class="%ROOT%"></span>',
dropdown: '<span class="%PREFIX%%DROPDOWN_MENU%"></span>',
dataset: '<div class="%PREFIX%%DATASET%-%CLASS%"></div>',
suggestions: '<span class="%PREFIX%%SUGGESTIONS%"></span>',
suggestion: '<div class="%PREFIX%%SUGGESTION%"></div>',
};
},
function (module, exports) {
module.exports = '0.36.0';
},
function (module, exports, __webpack_require__) {
'use strict';
module.exports = function parseAlgoliaClientVersion(agent) {
var parsed = agent.match(/Algolia for vanilla JavaScript (\d+\.)(\d+\.)(\d+)/);
if (parsed) return [parsed[1], parsed[2], parsed[3]];
return undefined;
};
},
function (module, exports, __webpack_require__) {
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
var _zepto = __webpack_require__(15);
var _zepto2 = _interopRequireDefault(_zepto);
function _interopRequireDefault(obj) {
return obj && obj.__esModule ? obj : { default: obj };
}
exports.default = _zepto2.default;
},
function (module, exports, __webpack_require__) {
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
exports.default = '2.6.3';
},
function (module, exports, __webpack_require__) {
'use strict';
var _main = __webpack_require__(23);
var _main2 = _interopRequireDefault(_main);
function _interopRequireDefault(obj) {
return obj && obj.__esModule ? obj : { default: obj };
}
module.exports = _main2.default;
},
function (module, exports, __webpack_require__) {
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
var _toFactory = __webpack_require__(24);
var _toFactory2 = _interopRequireDefault(_toFactory);
var _DocSearch = __webpack_require__(25);
var _DocSearch2 = _interopRequireDefault(_DocSearch);
var _version = __webpack_require__(21);
var _version2 = _interopRequireDefault(_version);
function _interopRequireDefault(obj) {
return obj && obj.__esModule ? obj : { default: obj };
}
var docsearch = (0, _toFactory2.default)(_DocSearch2.default);
docsearch.version = _version2.default;
exports.default = docsearch;
},
function (module, exports, __webpack_require__) {
'use strict';
var _bind = Function.prototype.bind;
function toFactory(Class) {
var Factory = function Factory() {
for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
return new (_bind.apply(Class, [null].concat(args)))();
};
Factory.__proto__ = Class;
Factory.prototype = Class.prototype;
return Factory;
}
module.exports = toFactory;
},
function (module, exports, __webpack_require__) {
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
var _extends =
Object.assign ||
function (target) {
for (var i = 1; i < arguments.length; i++) {
var source = arguments[i];
for (var key in source) {
if (Object.prototype.hasOwnProperty.call(source, key)) {
target[key] = source[key];
}
}
}
return target;
};
var _createClass = (function () {
function defineProperties(target, props) {
for (var i = 0; i < props.length; i++) {
var descriptor = props[i];
descriptor.enumerable = descriptor.enumerable || false;
descriptor.configurable = true;
if ('value' in descriptor) descriptor.writable = true;
Object.defineProperty(target, descriptor.key, descriptor);
}
}
return function (Constructor, protoProps, staticProps) {
if (protoProps) defineProperties(Constructor.prototype, protoProps);
if (staticProps) defineProperties(Constructor, staticProps);
return Constructor;
};
})();
var _hogan = __webpack_require__(26);
var _hogan2 = _interopRequireDefault(_hogan);
var _lite = __webpack_require__(29);
var _lite2 = _interopRequireDefault(_lite);
var _autocomplete = __webpack_require__(49);
var _autocomplete2 = _interopRequireDefault(_autocomplete);
var _templates = __webpack_require__(64);
var _templates2 = _interopRequireDefault(_templates);
var _utils = __webpack_require__(65);
var _utils2 = _interopRequireDefault(_utils);
var _version = __webpack_require__(21);
var _version2 = _interopRequireDefault(_version);
var _zepto = __webpack_require__(20);
var _zepto2 = _interopRequireDefault(_zepto);
function _interopRequireDefault(obj) {
return obj && obj.__esModule ? obj : { default: obj };
}
function _classCallCheck(instance, Constructor) {
if (!(instance instanceof Constructor)) {
throw new TypeError('Cannot call a class as a function');
}
}
var usage =
'Usage:\n documentationSearch({\n apiKey,\n indexName,\n inputSelector,\n [ appId ],\n [ algoliaOptions.{hitsPerPage} ]\n [ autocompleteOptions.{hint,debug} ]\n})';
var DocSearch = (function () {
function DocSearch(_ref) {
var apiKey = _ref.apiKey,
indexName = _ref.indexName,
inputSelector = _ref.inputSelector,
_ref$appId = _ref.appId,
appId = _ref$appId === undefined ? 'BH4D9OD16A' : _ref$appId,
_ref$debug = _ref.debug,
debug = _ref$debug === undefined ? false : _ref$debug,
_ref$algoliaOptions = _ref.algoliaOptions,
algoliaOptions = _ref$algoliaOptions === undefined ? {} : _ref$algoliaOptions,
_ref$queryDataCallbac = _ref.queryDataCallback,
queryDataCallback = _ref$queryDataCallbac === undefined ? null : _ref$queryDataCallbac,
_ref$autocompleteOpti = _ref.autocompleteOptions,
autocompleteOptions =
_ref$autocompleteOpti === undefined
? { debug: false, hint: false, autoselect: true }
: _ref$autocompleteOpti,
_ref$transformData = _ref.transformData,
transformData = _ref$transformData === undefined ? false : _ref$transformData,
_ref$queryHook = _ref.queryHook,
queryHook = _ref$queryHook === undefined ? false : _ref$queryHook,
_ref$handleSelected = _ref.handleSelected,
handleSelected = _ref$handleSelected === undefined ? false : _ref$handleSelected,
_ref$enhancedSearchIn = _ref.enhancedSearchInput,
enhancedSearchInput =
_ref$enhancedSearchIn === undefined ? false : _ref$enhancedSearchIn,
_ref$layout = _ref.layout,
layout = _ref$layout === undefined ? 'collumns' : _ref$layout;
_classCallCheck(this, DocSearch);
DocSearch.checkArguments({
apiKey: apiKey,
indexName: indexName,
inputSelector: inputSelector,
debug: debug,
algoliaOptions: algoliaOptions,
queryDataCallback: queryDataCallback,
autocompleteOptions: autocompleteOptions,
transformData: transformData,
queryHook: queryHook,
handleSelected: handleSelected,
enhancedSearchInput: enhancedSearchInput,
layout: layout,
});
this.apiKey = apiKey;
this.appId = appId;
this.indexName = indexName;
this.input = DocSearch.getInputFromSelector(inputSelector);
this.algoliaOptions = _extends({ hitsPerPage: 5 }, algoliaOptions);
this.queryDataCallback = queryDataCallback || null;
var autocompleteOptionsDebug =
autocompleteOptions && autocompleteOptions.debug ? autocompleteOptions.debug : false;
autocompleteOptions.debug = debug || autocompleteOptionsDebug;
this.autocompleteOptions = autocompleteOptions;
this.autocompleteOptions.cssClasses = this.autocompleteOptions.cssClasses || {};
this.autocompleteOptions.cssClasses.prefix =
this.autocompleteOptions.cssClasses.prefix || 'ds';
var inputAriaLabel =
this.input && typeof this.input.attr === 'function' && this.input.attr('aria-label');
this.autocompleteOptions.ariaLabel =
this.autocompleteOptions.ariaLabel || inputAriaLabel || 'search input';
this.isSimpleLayout = layout === 'simple';
this.client = (0, _lite2.default)(this.appId, this.apiKey);
this.client.addAlgoliaAgent('docsearch.js ' + _version2.default);
if (enhancedSearchInput) {
this.input = DocSearch.injectSearchBox(this.input);
}
this.autocomplete = (0, _autocomplete2.default)(this.input, autocompleteOptions, [
{
source: this.getAutocompleteSource(transformData, queryHook),
templates: {
suggestion: DocSearch.getSuggestionTemplate(this.isSimpleLayout),
footer: _templates2.default.footer,
empty: DocSearch.getEmptyTemplate(),
},
},
]);
var customHandleSelected = handleSelected;
this.handleSelected = customHandleSelected || this.handleSelected;
if (customHandleSelected) {
(0, _zepto2.default)('.algolia-autocomplete').on(
'click',
'.ds-suggestions a',
function (event) {
event.preventDefault();
},
);
}
this.autocomplete.on(
'autocomplete:selected',
this.handleSelected.bind(null, this.autocomplete.autocomplete),
);
this.autocomplete.on('autocomplete:shown', this.handleShown.bind(null, this.input));
if (enhancedSearchInput) {
DocSearch.bindSearchBoxEvent();
}
}
_createClass(
DocSearch,
[
{
key: 'getAutocompleteSource',
value: function getAutocompleteSource(transformData, queryHook) {
var _this = this;
return function (query, callback) {
if (queryHook) {
query = queryHook(query) || query;
}
_this.client
.search([
{ indexName: _this.indexName, query: query, params: _this.algoliaOptions },
])
.then(function (data) {
if (_this.queryDataCallback && typeof _this.queryDataCallback == 'function') {
_this.queryDataCallback(data);
}
var hits = data.results[0].hits;
if (transformData) {
hits = transformData(hits) || hits;
}
callback(DocSearch.formatHits(hits));
});
};
},
},
{
key: 'handleSelected',
value: function handleSelected(input, event, suggestion, datasetNumber) {
var context =
arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {};
if (context.selectionMethod === 'click') {
return;
}
input.setVal('');
window.location.assign(suggestion.url);
},
},
{
key: 'handleShown',
value: function handleShown(input) {
var middleOfInput = input.offset().left + input.width() / 2;
var middleOfWindow = (0, _zepto2.default)(document).width() / 2;
if (isNaN(middleOfWindow)) {
middleOfWindow = 900;
}
var alignClass =
middleOfInput - middleOfWindow >= 0
? 'algolia-autocomplete-right'
: 'algolia-autocomplete-left';
var otherAlignClass =
middleOfInput - middleOfWindow < 0
? 'algolia-autocomplete-right'
: 'algolia-autocomplete-left';
var autocompleteWrapper = (0, _zepto2.default)('.algolia-autocomplete');
if (!autocompleteWrapper.hasClass(alignClass)) {
autocompleteWrapper.addClass(alignClass);
}
if (autocompleteWrapper.hasClass(otherAlignClass)) {
autocompleteWrapper.removeClass(otherAlignClass);
}
},
},
],
[
{
key: 'checkArguments',
value: function checkArguments(args) {
if (!args.apiKey || !args.indexName) {
throw new Error(usage);
}
if (typeof args.inputSelector !== 'string') {
throw new Error(
'Error: inputSelector:' +
args.inputSelector +
" must be a string. Each selector must match only one element and separated by ','",
);
}
if (!DocSearch.getInputFromSelector(args.inputSelector)) {
throw new Error(
'Error: No input element in the page matches ' + args.inputSelector,
);
}
},
},
{
key: 'injectSearchBox',
value: function injectSearchBox(input) {
input.before(_templates2.default.searchBox);
var newInput = input.prev().prev().find('input');
input.remove();
return newInput;
},
},
{
key: 'bindSearchBoxEvent',
value: function bindSearchBoxEvent() {
(0, _zepto2.default)('.searchbox [type="reset"]').on('click', function () {
(0, _zepto2.default)('input#docsearch').focus();
(0, _zepto2.default)(this).addClass('hide');
_autocomplete2.default.autocomplete.setVal('');
});
(0, _zepto2.default)('input#docsearch').on('keyup', function () {
var searchbox = document.querySelector('input#docsearch');
var reset = document.querySelector('.searchbox [type="reset"]');
reset.className = 'searchbox__reset';
if (searchbox.value.length === 0) {
reset.className += ' hide';
}
});
},
},
{
key: 'getInputFromSelector',
value: function getInputFromSelector(selector) {
var input = (0, _zepto2.default)(selector).filter('input');
return input.length ? (0, _zepto2.default)(input[0]) : null;
},
},
{
key: 'formatHits',
value: function formatHits(receivedHits) {
var clonedHits = _utils2.default.deepClone(receivedHits);
var hits = clonedHits.map(function (hit) {
if (hit._highlightResult) {
hit._highlightResult = _utils2.default.mergeKeyWithParent(
hit._highlightResult,
'hierarchy',
);
}
return _utils2.default.mergeKeyWithParent(hit, 'hierarchy');
});
var groupedHits = _utils2.default.groupBy(hits, 'lvl0');
_zepto2.default.each(groupedHits, function (level, collection) {
var groupedHitsByLvl1 = _utils2.default.groupBy(collection, 'lvl1');
var flattenedHits = _utils2.default.flattenAndFlagFirst(
groupedHitsByLvl1,
'isSubCategoryHeader',
);
groupedHits[level] = flattenedHits;
});
groupedHits = _utils2.default.flattenAndFlagFirst(groupedHits, 'isCategoryHeader');
return groupedHits.map(function (hit) {
var url = DocSearch.formatURL(hit);
var category = _utils2.default.getHighlightedValue(hit, 'lvl0');
var subcategory = _utils2.default.getHighlightedValue(hit, 'lvl1') || category;
var displayTitle = _utils2.default
.compact([
_utils2.default.getHighlightedValue(hit, 'lvl2') || subcategory,
_utils2.default.getHighlightedValue(hit, 'lvl3'),
_utils2.default.getHighlightedValue(hit, 'lvl4'),
_utils2.default.getHighlightedValue(hit, 'lvl5'),
_utils2.default.getHighlightedValue(hit, 'lvl6'),
])
.join(
'<span class="aa-suggestion-title-separator" aria-hidden="true"> éˆĨ<> </span>',
);
var text = _utils2.default.getSnippetedValue(hit, 'content');
var isTextOrSubcategoryNonEmpty =
(subcategory && subcategory !== '') || (displayTitle && displayTitle !== '');
var isLvl1EmptyOrDuplicate =
!subcategory || subcategory === '' || subcategory === category;
var isLvl2 = displayTitle && displayTitle !== '' && displayTitle !== subcategory;
var isLvl1 =
!isLvl2 && subcategory && subcategory !== '' && subcategory !== category;
var isLvl0 = !isLvl1 && !isLvl2;
return {
isLvl0: isLvl0,
isLvl1: isLvl1,
isLvl2: isLvl2,
isLvl1EmptyOrDuplicate: isLvl1EmptyOrDuplicate,
isCategoryHeader: hit.isCategoryHeader,
isSubCategoryHeader: hit.isSubCategoryHeader,
isTextOrSubcategoryNonEmpty: isTextOrSubcategoryNonEmpty,
category: category,
subcategory: subcategory,
title: displayTitle,
text: text,
url: url,
};
});
},
},
{
key: 'formatURL',
value: function formatURL(hit) {
var url = hit.url,
anchor = hit.anchor;
if (url) {
var containsAnchor = url.indexOf('#') !== -1;
if (containsAnchor) return url;
else if (anchor) return hit.url + '#' + hit.anchor;
return url;
} else if (anchor) return '#' + hit.anchor;
console.warn('no anchor nor url for : ', JSON.stringify(hit));
return null;
},
},
{
key: 'getEmptyTemplate',
value: function getEmptyTemplate() {
return function (args) {
return _hogan2.default.compile(_templates2.default.empty).render(args);
};
},
},
{
key: 'getSuggestionTemplate',
value: function getSuggestionTemplate(isSimpleLayout) {
var stringTemplate = isSimpleLayout
? _templates2.default.suggestionSimple
: _templates2.default.suggestion;
var template = _hogan2.default.compile(stringTemplate);
return function (suggestion) {
return template.render(suggestion);
};
},
},
],
);
return DocSearch;
})();
exports.default = DocSearch;
},
function (module, exports, __webpack_require__) {
var Hogan = __webpack_require__(27);
Hogan.Template = __webpack_require__(28).Template;
Hogan.template = Hogan.Template;
module.exports = Hogan;
},
function (module, exports, __webpack_require__) {
(function (Hogan) {
var rIsWhitespace = /\S/,
rQuot = /\"/g,
rNewline = /\n/g,
rCr = /\r/g,
rSlash = /\\/g,
rLineSep = /\u2028/,
rParagraphSep = /\u2029/;
Hogan.tags = {
'#': 1,
'^': 2,
'<': 3,
$: 4,
'/': 5,
'!': 6,
'>': 7,
'=': 8,
_v: 9,
'{': 10,
'&': 11,
_t: 12,
};
Hogan.scan = function scan(text, delimiters) {
var len = text.length,
IN_TEXT = 0,
IN_TAG_TYPE = 1,
IN_TAG = 2,
state = IN_TEXT,
tagType = null,
tag = null,
buf = '',
tokens = [],
seenTag = false,
i = 0,
lineStart = 0,
otag = '{{',
ctag = '}}';
function addBuf() {
if (buf.length > 0) {
tokens.push({ tag: '_t', text: new String(buf) });
buf = '';
}
}
function lineIsWhitespace() {
var isAllWhitespace = true;
for (var j = lineStart; j < tokens.length; j++) {
isAllWhitespace =
Hogan.tags[tokens[j].tag] < Hogan.tags['_v'] ||
(tokens[j].tag == '_t' && tokens[j].text.match(rIsWhitespace) === null);
if (!isAllWhitespace) {
return false;
}
}
return isAllWhitespace;
}
function filterLine(haveSeenTag, noNewLine) {
addBuf();
if (haveSeenTag && lineIsWhitespace()) {
for (var j = lineStart, next; j < tokens.length; j++) {
if (tokens[j].text) {
if ((next = tokens[j + 1]) && next.tag == '>') {
next.indent = tokens[j].text.toString();
}
tokens.splice(j, 1);
}
}
} else if (!noNewLine) {
tokens.push({ tag: '\n' });
}
seenTag = false;
lineStart = tokens.length;
}
function changeDelimiters(text, index) {
var close = '=' + ctag,
closeIndex = text.indexOf(close, index),
delimiters = trim(text.substring(text.indexOf('=', index) + 1, closeIndex)).split(
' ',
);
otag = delimiters[0];
ctag = delimiters[delimiters.length - 1];
return closeIndex + close.length - 1;
}
if (delimiters) {
delimiters = delimiters.split(' ');
otag = delimiters[0];
ctag = delimiters[1];
}
for (i = 0; i < len; i++) {
if (state == IN_TEXT) {
if (tagChange(otag, text, i)) {
--i;
addBuf();
state = IN_TAG_TYPE;
} else {
if (text.charAt(i) == '\n') {
filterLine(seenTag);
} else {
buf += text.charAt(i);
}
}
} else if (state == IN_TAG_TYPE) {
i += otag.length - 1;
tag = Hogan.tags[text.charAt(i + 1)];
tagType = tag ? text.charAt(i + 1) : '_v';
if (tagType == '=') {
i = changeDelimiters(text, i);
state = IN_TEXT;
} else {
if (tag) {
i++;
}
state = IN_TAG;
}
seenTag = i;
} else {
if (tagChange(ctag, text, i)) {
tokens.push({
tag: tagType,
n: trim(buf),
otag: otag,
ctag: ctag,
i: tagType == '/' ? seenTag - otag.length : i + ctag.length,
});
buf = '';
i += ctag.length - 1;
state = IN_TEXT;
if (tagType == '{') {
if (ctag == '}}') {
i++;
} else {
cleanTripleStache(tokens[tokens.length - 1]);
}
}
} else {
buf += text.charAt(i);
}
}
}
filterLine(seenTag, true);
return tokens;
};
function cleanTripleStache(token) {
if (token.n.substr(token.n.length - 1) === '}') {
token.n = token.n.substring(0, token.n.length - 1);
}
}
function trim(s) {
if (s.trim) {
return s.trim();
}
return s.replace(/^\s*|\s*$/g, '');
}
function tagChange(tag, text, index) {
if (text.charAt(index) != tag.charAt(0)) {
return false;
}
for (var i = 1, l = tag.length; i < l; i++) {
if (text.charAt(index + i) != tag.charAt(i)) {
return false;
}
}
return true;
}
var allowedInSuper = { _t: true, '\n': true, $: true, '/': true };
function buildTree(tokens, kind, stack, customTags) {
var instructions = [],
opener = null,
tail = null,
token = null;
tail = stack[stack.length - 1];
while (tokens.length > 0) {
token = tokens.shift();
if (tail && tail.tag == '<' && !(token.tag in allowedInSuper)) {
throw new Error('Illegal content in < super tag.');
}
if (Hogan.tags[token.tag] <= Hogan.tags['$'] || isOpener(token, customTags)) {
stack.push(token);
token.nodes = buildTree(tokens, token.tag, stack, customTags);
} else if (token.tag == '/') {
if (stack.length === 0) {
throw new Error('Closing tag without opener: /' + token.n);
}
opener = stack.pop();
if (token.n != opener.n && !isCloser(token.n, opener.n, customTags)) {
throw new Error('Nesting error: ' + opener.n + ' vs. ' + token.n);
}
opener.end = token.i;
return instructions;
} else if (token.tag == '\n') {
token.last = tokens.length == 0 || tokens[0].tag == '\n';
}
instructions.push(token);
}
if (stack.length > 0) {
throw new Error('missing closing tag: ' + stack.pop().n);
}
return instructions;
}
function isOpener(token, tags) {
for (var i = 0, l = tags.length; i < l; i++) {
if (tags[i].o == token.n) {
token.tag = '#';
return true;
}
}
}
function isCloser(close, open, tags) {
for (var i = 0, l = tags.length; i < l; i++) {
if (tags[i].c == close && tags[i].o == open) {
return true;
}
}
}
function stringifySubstitutions(obj) {
var items = [];
for (var key in obj) {
items.push('"' + esc(key) + '": function(c,p,t,i) {' + obj[key] + '}');
}
return '{ ' + items.join(',') + ' }';
}
function stringifyPartials(codeObj) {
var partials = [];
for (var key in codeObj.partials) {
partials.push(
'"' +
esc(key) +
'":{name:"' +
esc(codeObj.partials[key].name) +
'", ' +
stringifyPartials(codeObj.partials[key]) +
'}',
);
}
return (
'partials: {' + partials.join(',') + '}, subs: ' + stringifySubstitutions(codeObj.subs)
);
}
Hogan.stringify = function (codeObj, text, options) {
return (
'{code: function (c,p,i) { ' +
Hogan.wrapMain(codeObj.code) +
' },' +
stringifyPartials(codeObj) +
'}'
);
};
var serialNo = 0;
Hogan.generate = function (tree, text, options) {
serialNo = 0;
var context = { code: '', subs: {}, partials: {} };
Hogan.walk(tree, context);
if (options.asString) {
return this.stringify(context, text, options);
}
return this.makeTemplate(context, text, options);
};
Hogan.wrapMain = function (code) {
return 'var t=this;t.b(i=i||"");' + code + 'return t.fl();';
};
Hogan.template = Hogan.Template;
Hogan.makeTemplate = function (codeObj, text, options) {
var template = this.makePartials(codeObj);
template.code = new Function('c', 'p', 'i', this.wrapMain(codeObj.code));
return new this.template(template, text, this, options);
};
Hogan.makePartials = function (codeObj) {
var key,
template = { subs: {}, partials: codeObj.partials, name: codeObj.name };
for (key in template.partials) {
template.partials[key] = this.makePartials(template.partials[key]);
}
for (key in codeObj.subs) {
template.subs[key] = new Function('c', 'p', 't', 'i', codeObj.subs[key]);
}
return template;
};
function esc(s) {
return s
.replace(rSlash, '\\\\')
.replace(rQuot, '\\"')
.replace(rNewline, '\\n')
.replace(rCr, '\\r')
.replace(rLineSep, '\\u2028')
.replace(rParagraphSep, '\\u2029');
}
function chooseMethod(s) {
return ~s.indexOf('.') ? 'd' : 'f';
}
function createPartial(node, context) {
var prefix = '<' + (context.prefix || '');
var sym = prefix + node.n + serialNo++;
context.partials[sym] = { name: node.n, partials: {} };
context.code += 't.b(t.rp("' + esc(sym) + '",c,p,"' + (node.indent || '') + '"));';
return sym;
}
Hogan.codegen = {
'#': function (node, context) {
context.code +=
'if(t.s(t.' +
chooseMethod(node.n) +
'("' +
esc(node.n) +
'",c,p,1),' +
'c,p,0,' +
node.i +
',' +
node.end +
',"' +
node.otag +
' ' +
node.ctag +
'")){' +
't.rs(c,p,' +
'function(c,p,t){';
Hogan.walk(node.nodes, context);
context.code += '});c.pop();}';
},
'^': function (node, context) {
context.code +=
'if(!t.s(t.' + chooseMethod(node.n) + '("' + esc(node.n) + '",c,p,1),c,p,1,0,0,"")){';
Hogan.walk(node.nodes, context);
context.code += '};';
},
'>': createPartial,
'<': function (node, context) {
var ctx = { partials: {}, code: '', subs: {}, inPartial: true };
Hogan.walk(node.nodes, ctx);
var template = context.partials[createPartial(node, context)];
template.subs = ctx.subs;
template.partials = ctx.partials;
},
$: function (node, context) {
var ctx = { subs: {}, code: '', partials: context.partials, prefix: node.n };
Hogan.walk(node.nodes, ctx);
context.subs[node.n] = ctx.code;
if (!context.inPartial) {
context.code += 't.sub("' + esc(node.n) + '",c,p,i);';
}
},
'\n': function (node, context) {
context.code += write('"\\n"' + (node.last ? '' : ' + i'));
},
_v: function (node, context) {
context.code +=
't.b(t.v(t.' + chooseMethod(node.n) + '("' + esc(node.n) + '",c,p,0)));';
},
_t: function (node, context) {
context.code += write('"' + esc(node.text) + '"');
},
'{': tripleStache,
'&': tripleStache,
};
function tripleStache(node, context) {
context.code += 't.b(t.t(t.' + chooseMethod(node.n) + '("' + esc(node.n) + '",c,p,0)));';
}
function write(s) {
return 't.b(' + s + ');';
}
Hogan.walk = function (nodelist, context) {
var func;
for (var i = 0, l = nodelist.length; i < l; i++) {
func = Hogan.codegen[nodelist[i].tag];
func && func(nodelist[i], context);
}
return context;
};
Hogan.parse = function (tokens, text, options) {
options = options || {};
return buildTree(tokens, '', [], options.sectionTags || []);
};
Hogan.cache = {};
Hogan.cacheKey = function (text, options) {
return [
text,
!!options.asString,
!!options.disableLambda,
options.delimiters,
!!options.modelGet,
].join('||');
};
Hogan.compile = function (text, options) {
options = options || {};
var key = Hogan.cacheKey(text, options);
var template = this.cache[key];
if (template) {
var partials = template.partials;
for (var name in partials) {
delete partials[name].instance;
}
return template;
}
template = this.generate(
this.parse(this.scan(text, options.delimiters), text, options),
text,
options,
);
return (this.cache[key] = template);
};
})(true ? exports : Hogan);
},
function (module, exports, __webpack_require__) {
var Hogan = {};
(function (Hogan) {
Hogan.Template = function (codeObj, text, compiler, options) {
codeObj = codeObj || {};
this.r = codeObj.code || this.r;
this.c = compiler;
this.options = options || {};
this.text = text || '';
this.partials = codeObj.partials || {};
this.subs = codeObj.subs || {};
this.buf = '';
};
Hogan.Template.prototype = {
r: function (context, partials, indent) {
return '';
},
v: hoganEscape,
t: coerceToString,
render: function render(context, partials, indent) {
return this.ri([context], partials || {}, indent);
},
ri: function (context, partials, indent) {
return this.r(context, partials, indent);
},
ep: function (symbol, partials) {
var partial = this.partials[symbol];
var template = partials[partial.name];
if (partial.instance && partial.base == template) {
return partial.instance;
}
if (typeof template == 'string') {
if (!this.c) {
throw new Error('No compiler available.');
}
template = this.c.compile(template, this.options);
}
if (!template) {
return null;
}
this.partials[symbol].base = template;
if (partial.subs) {
if (!partials.stackText) partials.stackText = {};
for (key in partial.subs) {
if (!partials.stackText[key]) {
partials.stackText[key] =
this.activeSub !== undefined && partials.stackText[this.activeSub]
? partials.stackText[this.activeSub]
: this.text;
}
}
template = createSpecializedPartial(
template,
partial.subs,
partial.partials,
this.stackSubs,
this.stackPartials,
partials.stackText,
);
}
this.partials[symbol].instance = template;
return template;
},
rp: function (symbol, context, partials, indent) {
var partial = this.ep(symbol, partials);
if (!partial) {
return '';
}
return partial.ri(context, partials, indent);
},
rs: function (context, partials, section) {
var tail = context[context.length - 1];
if (!isArray(tail)) {
section(context, partials, this);
return;
}
for (var i = 0; i < tail.length; i++) {
context.push(tail[i]);
section(context, partials, this);
context.pop();
}
},
s: function (val, ctx, partials, inverted, start, end, tags) {
var pass;
if (isArray(val) && val.length === 0) {
return false;
}
if (typeof val == 'function') {
val = this.ms(val, ctx, partials, inverted, start, end, tags);
}
pass = !!val;
if (!inverted && pass && ctx) {
ctx.push(typeof val == 'object' ? val : ctx[ctx.length - 1]);
}
return pass;
},
d: function (key, ctx, partials, returnFound) {
var found,
names = key.split('.'),
val = this.f(names[0], ctx, partials, returnFound),
doModelGet = this.options.modelGet,
cx = null;
if (key === '.' && isArray(ctx[ctx.length - 2])) {
val = ctx[ctx.length - 1];
} else {
for (var i = 1; i < names.length; i++) {
found = findInScope(names[i], val, doModelGet);
if (found !== undefined) {
cx = val;
val = found;
} else {
val = '';
}
}
}
if (returnFound && !val) {
return false;
}
if (!returnFound && typeof val == 'function') {
ctx.push(cx);
val = this.mv(val, ctx, partials);
ctx.pop();
}
return val;
},
f: function (key, ctx, partials, returnFound) {
var val = false,
v = null,
found = false,
doModelGet = this.options.modelGet;
for (var i = ctx.length - 1; i >= 0; i--) {
v = ctx[i];
val = findInScope(key, v, doModelGet);
if (val !== undefined) {
found = true;
break;
}
}
if (!found) {
return returnFound ? false : '';
}
if (!returnFound && typeof val == 'function') {
val = this.mv(val, ctx, partials);
}
return val;
},
ls: function (func, cx, partials, text, tags) {
var oldTags = this.options.delimiters;
this.options.delimiters = tags;
this.b(this.ct(coerceToString(func.call(cx, text)), cx, partials));
this.options.delimiters = oldTags;
return false;
},
ct: function (text, cx, partials) {
if (this.options.disableLambda) {
throw new Error('Lambda features disabled.');
}
return this.c.compile(text, this.options).render(cx, partials);
},
b: function (s) {
this.buf += s;
},
fl: function () {
var r = this.buf;
this.buf = '';
return r;
},
ms: function (func, ctx, partials, inverted, start, end, tags) {
var textSource,
cx = ctx[ctx.length - 1],
result = func.call(cx);
if (typeof result == 'function') {
if (inverted) {
return true;
} else {
textSource =
this.activeSub && this.subsText && this.subsText[this.activeSub]
? this.subsText[this.activeSub]
: this.text;
return this.ls(result, cx, partials, textSource.substring(start, end), tags);
}
}
return result;
},
mv: function (func, ctx, partials) {
var cx = ctx[ctx.length - 1];
var result = func.call(cx);
if (typeof result == 'function') {
return this.ct(coerceToString(result.call(cx)), cx, partials);
}
return result;
},
sub: function (name, context, partials, indent) {
var f = this.subs[name];
if (f) {
this.activeSub = name;
f(context, partials, this, indent);
this.activeSub = false;
}
},
};
function findInScope(key, scope, doModelGet) {
var val;
if (scope && typeof scope == 'object') {
if (scope[key] !== undefined) {
val = scope[key];
} else if (doModelGet && scope.get && typeof scope.get == 'function') {
val = scope.get(key);
}
}
return val;
}
function createSpecializedPartial(
instance,
subs,
partials,
stackSubs,
stackPartials,
stackText,
) {
function PartialTemplate() {}
PartialTemplate.prototype = instance;
function Substitutions() {}
Substitutions.prototype = instance.subs;
var key;
var partial = new PartialTemplate();
partial.subs = new Substitutions();
partial.subsText = {};
partial.buf = '';
stackSubs = stackSubs || {};
partial.stackSubs = stackSubs;
partial.subsText = stackText;
for (key in subs) {
if (!stackSubs[key]) stackSubs[key] = subs[key];
}
for (key in stackSubs) {
partial.subs[key] = stackSubs[key];
}
stackPartials = stackPartials || {};
partial.stackPartials = stackPartials;
for (key in partials) {
if (!stackPartials[key]) stackPartials[key] = partials[key];
}
for (key in stackPartials) {
partial.partials[key] = stackPartials[key];
}
return partial;
}
var rAmp = /&/g,
rLt = /</g,
rGt = />/g,
rApos = /\'/g,
rQuot = /\"/g,
hChars = /[&<>\"\']/;
function coerceToString(val) {
return String(val === null || val === undefined ? '' : val);
}
function hoganEscape(str) {
str = coerceToString(str);
return hChars.test(str)
? str
.replace(rAmp, '&amp;')
.replace(rLt, '&lt;')
.replace(rGt, '&gt;')
.replace(rApos, '&#39;')
.replace(rQuot, '&quot;')
: str;
}
var isArray =
Array.isArray ||
function (a) {
return Object.prototype.toString.call(a) === '[object Array]';
};
})(true ? exports : Hogan);
},
function (module, exports, __webpack_require__) {
'use strict';
var AlgoliaSearchCore = __webpack_require__(30);
var createAlgoliasearch = __webpack_require__(41);
module.exports = createAlgoliasearch(AlgoliaSearchCore, '(lite) ');
},
function (module, exports, __webpack_require__) {
module.exports = AlgoliaSearchCore;
var errors = __webpack_require__(5);
var exitPromise = __webpack_require__(31);
var IndexCore = __webpack_require__(32);
var store = __webpack_require__(38);
var MAX_API_KEY_LENGTH = 500;
var RESET_APP_DATA_TIMER =
(Object({ NODE_ENV: 'production' }).RESET_APP_DATA_TIMER &&
parseInt(Object({ NODE_ENV: 'production' }).RESET_APP_DATA_TIMER, 10)) ||
60 * 2 * 1e3;
function AlgoliaSearchCore(applicationID, apiKey, opts) {
var debug = __webpack_require__(8)('algoliasearch');
var clone = __webpack_require__(3);
var isArray = __webpack_require__(6);
var map = __webpack_require__(7);
var usage = 'Usage: algoliasearch(applicationID, apiKey, opts)';
if (opts._allowEmptyCredentials !== true && !applicationID) {
throw new errors.AlgoliaSearchError('Please provide an application ID. ' + usage);
}
if (opts._allowEmptyCredentials !== true && !apiKey) {
throw new errors.AlgoliaSearchError('Please provide an API key. ' + usage);
}
this.applicationID = applicationID;
this.apiKey = apiKey;
this.hosts = { read: [], write: [] };
opts = opts || {};
this._timeouts = opts.timeouts || { connect: 1 * 1e3, read: 2 * 1e3, write: 30 * 1e3 };
if (opts.timeout) {
this._timeouts.connect = this._timeouts.read = this._timeouts.write = opts.timeout;
}
var protocol = opts.protocol || 'https:';
if (!/:$/.test(protocol)) {
protocol = protocol + ':';
}
if (protocol !== 'http:' && protocol !== 'https:') {
throw new errors.AlgoliaSearchError(
'protocol must be `http:` or `https:` (was `' + opts.protocol + '`)',
);
}
this._checkAppIdData();
if (!opts.hosts) {
var defaultHosts = map(this._shuffleResult, function (hostNumber) {
return applicationID + '-' + hostNumber + '.algolianet.com';
});
var mainSuffix = (opts.dsn === false ? '' : '-dsn') + '.algolia.net';
this.hosts.read = [this.applicationID + mainSuffix].concat(defaultHosts);
this.hosts.write = [this.applicationID + '.algolia.net'].concat(defaultHosts);
} else if (isArray(opts.hosts)) {
this.hosts.read = clone(opts.hosts);
this.hosts.write = clone(opts.hosts);
} else {
this.hosts.read = clone(opts.hosts.read);
this.hosts.write = clone(opts.hosts.write);
}
this.hosts.read = map(this.hosts.read, prepareHost(protocol));
this.hosts.write = map(this.hosts.write, prepareHost(protocol));
this.extraHeaders = {};
this.cache = opts._cache || {};
this._ua = opts._ua;
this._useCache = opts._useCache === undefined || opts._cache ? true : opts._useCache;
this._useRequestCache = this._useCache && opts._useRequestCache;
this._useFallback = opts.useFallback === undefined ? true : opts.useFallback;
this._setTimeout = opts._setTimeout;
debug('init done, %j', this);
}
AlgoliaSearchCore.prototype.initIndex = function (indexName) {
return new IndexCore(this, indexName);
};
AlgoliaSearchCore.prototype.setExtraHeader = function (name, value) {
this.extraHeaders[name.toLowerCase()] = value;
};
AlgoliaSearchCore.prototype.getExtraHeader = function (name) {
return this.extraHeaders[name.toLowerCase()];
};
AlgoliaSearchCore.prototype.unsetExtraHeader = function (name) {
delete this.extraHeaders[name.toLowerCase()];
};
AlgoliaSearchCore.prototype.addAlgoliaAgent = function (algoliaAgent) {
if (this._ua.indexOf(';' + algoliaAgent) === -1) {
this._ua += ';' + algoliaAgent;
}
};
AlgoliaSearchCore.prototype._jsonRequest = function (initialOpts) {
this._checkAppIdData();
var requestDebug = __webpack_require__(8)('algoliasearch:' + initialOpts.url);
var body;
var cacheID;
var additionalUA = initialOpts.additionalUA || '';
var cache = initialOpts.cache;
var client = this;
var tries = 0;
var usingFallback = false;
var hasFallback = client._useFallback && client._request.fallback && initialOpts.fallback;
var headers;
if (
this.apiKey.length > MAX_API_KEY_LENGTH &&
initialOpts.body !== undefined &&
(initialOpts.body.params !== undefined || initialOpts.body.requests !== undefined)
) {
initialOpts.body.apiKey = this.apiKey;
headers = this._computeRequestHeaders({
additionalUA: additionalUA,
withApiKey: false,
headers: initialOpts.headers,
});
} else {
headers = this._computeRequestHeaders({
additionalUA: additionalUA,
headers: initialOpts.headers,
});
}
if (initialOpts.body !== undefined) {
body = safeJSONStringify(initialOpts.body);
}
requestDebug('request start');
var debugData = [];
function doRequest(requester, reqOpts) {
client._checkAppIdData();
var startTime = new Date();
if (client._useCache && !client._useRequestCache) {
cacheID = initialOpts.url;
}
if (client._useCache && !client._useRequestCache && body) {
cacheID += '_body_' + reqOpts.body;
}
if (isCacheValidWithCurrentID(!client._useRequestCache, cache, cacheID)) {
requestDebug('serving response from cache');
var responseText = cache[cacheID];
return client._promise.resolve({
body: JSON.parse(responseText),
responseText: responseText,
});
}
if (tries >= client.hosts[initialOpts.hostType].length) {
if (!hasFallback || usingFallback) {
requestDebug('could not get any response');
return client._promise.reject(
new errors.AlgoliaSearchError(
'Cannot connect to the AlgoliaSearch API.' +
' Send an email to support@algolia.com to report and resolve the issue.' +
' Application id was: ' +
client.applicationID,
{ debugData: debugData },
),
);
}
requestDebug('switching to fallback');
tries = 0;
reqOpts.method = initialOpts.fallback.method;
reqOpts.url = initialOpts.fallback.url;
reqOpts.jsonBody = initialOpts.fallback.body;
if (reqOpts.jsonBody) {
reqOpts.body = safeJSONStringify(reqOpts.jsonBody);
}
headers = client._computeRequestHeaders({
additionalUA: additionalUA,
headers: initialOpts.headers,
});
reqOpts.timeouts = client._getTimeoutsForRequest(initialOpts.hostType);
client._setHostIndexByType(0, initialOpts.hostType);
usingFallback = true;
return doRequest(client._request.fallback, reqOpts);
}
var currentHost = client._getHostByType(initialOpts.hostType);
var url = currentHost + reqOpts.url;
var options = {
body: reqOpts.body,
jsonBody: reqOpts.jsonBody,
method: reqOpts.method,
headers: headers,
timeouts: reqOpts.timeouts,
debug: requestDebug,
forceAuthHeaders: reqOpts.forceAuthHeaders,
};
requestDebug(
'method: %s, url: %s, headers: %j, timeouts: %d',
options.method,
url,
options.headers,
options.timeouts,
);
if (requester === client._request.fallback) {
requestDebug('using fallback');
}
return requester.call(client, url, options).then(success, tryFallback);
function success(httpResponse) {
var status =
(httpResponse &&
httpResponse.body &&
httpResponse.body.message &&
httpResponse.body.status) ||
httpResponse.statusCode ||
(httpResponse && httpResponse.body && 200);
requestDebug(
'received response: statusCode: %s, computed statusCode: %d, headers: %j',
httpResponse.statusCode,
status,
httpResponse.headers,
);
var httpResponseOk = Math.floor(status / 100) === 2;
var endTime = new Date();
debugData.push({
currentHost: currentHost,
headers: removeCredentials(headers),
content: body || null,
contentLength: body !== undefined ? body.length : null,
method: reqOpts.method,
timeouts: reqOpts.timeouts,
url: reqOpts.url,
startTime: startTime,
endTime: endTime,
duration: endTime - startTime,
statusCode: status,
});
if (httpResponseOk) {
if (client._useCache && !client._useRequestCache && cache) {
cache[cacheID] = httpResponse.responseText;
}
return { responseText: httpResponse.responseText, body: httpResponse.body };
}
var shouldRetry = Math.floor(status / 100) !== 4;
if (shouldRetry) {
tries += 1;
return retryRequest();
}
requestDebug('unrecoverable error');
var unrecoverableError = new errors.AlgoliaSearchError(
httpResponse.body && httpResponse.body.message,
{ debugData: debugData, statusCode: status },
);
return client._promise.reject(unrecoverableError);
}
function tryFallback(err) {
requestDebug('error: %s, stack: %s', err.message, err.stack);
var endTime = new Date();
debugData.push({
currentHost: currentHost,
headers: removeCredentials(headers),
content: body || null,
contentLength: body !== undefined ? body.length : null,
method: reqOpts.method,
timeouts: reqOpts.timeouts,
url: reqOpts.url,
startTime: startTime,
endTime: endTime,
duration: endTime - startTime,
});
if (!(err instanceof errors.AlgoliaSearchError)) {
err = new errors.Unknown(err && err.message, err);
}
tries += 1;
if (
err instanceof errors.Unknown ||
err instanceof errors.UnparsableJSON ||
(tries >= client.hosts[initialOpts.hostType].length &&
(usingFallback || !hasFallback))
) {
err.debugData = debugData;
return client._promise.reject(err);
}
if (err instanceof errors.RequestTimeout) {
return retryRequestWithHigherTimeout();
}
return retryRequest();
}
function retryRequest() {
requestDebug('retrying request');
client._incrementHostIndex(initialOpts.hostType);
return doRequest(requester, reqOpts);
}
function retryRequestWithHigherTimeout() {
requestDebug('retrying request with higher timeout');
client._incrementHostIndex(initialOpts.hostType);
client._incrementTimeoutMultipler();
reqOpts.timeouts = client._getTimeoutsForRequest(initialOpts.hostType);
return doRequest(requester, reqOpts);
}
}
function isCacheValidWithCurrentID(useRequestCache, currentCache, currentCacheID) {
return (
client._useCache &&
useRequestCache &&
currentCache &&
currentCache[currentCacheID] !== undefined
);
}
function interopCallbackReturn(request, callback) {
if (isCacheValidWithCurrentID(client._useRequestCache, cache, cacheID)) {
request.catch(function () {
delete cache[cacheID];
});
}
if (typeof initialOpts.callback === 'function') {
request.then(
function okCb(content) {
exitPromise(function () {
initialOpts.callback(null, callback(content));
}, client._setTimeout || setTimeout);
},
function nookCb(err) {
exitPromise(function () {
initialOpts.callback(err);
}, client._setTimeout || setTimeout);
},
);
} else {
return request.then(callback);
}
}
if (client._useCache && client._useRequestCache) {
cacheID = initialOpts.url;
}
if (client._useCache && client._useRequestCache && body) {
cacheID += '_body_' + body;
}
if (isCacheValidWithCurrentID(client._useRequestCache, cache, cacheID)) {
requestDebug('serving request from cache');
var maybePromiseForCache = cache[cacheID];
var promiseForCache =
typeof maybePromiseForCache.then !== 'function'
? client._promise.resolve({ responseText: maybePromiseForCache })
: maybePromiseForCache;
return interopCallbackReturn(promiseForCache, function (content) {
return JSON.parse(content.responseText);
});
}
var request = doRequest(client._request, {
url: initialOpts.url,
method: initialOpts.method,
body: body,
jsonBody: initialOpts.body,
timeouts: client._getTimeoutsForRequest(initialOpts.hostType),
forceAuthHeaders: initialOpts.forceAuthHeaders,
});
if (client._useCache && client._useRequestCache && cache) {
cache[cacheID] = request;
}
return interopCallbackReturn(request, function (content) {
return content.body;
});
};
AlgoliaSearchCore.prototype._getSearchParams = function (args, params) {
if (args === undefined || args === null) {
return params;
}
for (var key in args) {
if (key !== null && args[key] !== undefined && args.hasOwnProperty(key)) {
params += params === '' ? '' : '&';
params +=
key +
'=' +
encodeURIComponent(
Object.prototype.toString.call(args[key]) === '[object Array]'
? safeJSONStringify(args[key])
: args[key],
);
}
}
return params;
};
AlgoliaSearchCore.prototype._computeRequestHeaders = function (options) {
var forEach = __webpack_require__(2);
var ua = options.additionalUA ? this._ua + ';' + options.additionalUA : this._ua;
var requestHeaders = {
'x-algolia-agent': ua,
'x-algolia-application-id': this.applicationID,
};
if (options.withApiKey !== false) {
requestHeaders['x-algolia-api-key'] = this.apiKey;
}
if (this.userToken) {
requestHeaders['x-algolia-usertoken'] = this.userToken;
}
if (this.securityTags) {
requestHeaders['x-algolia-tagfilters'] = this.securityTags;
}
forEach(this.extraHeaders, function addToRequestHeaders(value, key) {
requestHeaders[key] = value;
});
if (options.headers) {
forEach(options.headers, function addToRequestHeaders(value, key) {
requestHeaders[key] = value;
});
}
return requestHeaders;
};
AlgoliaSearchCore.prototype.search = function (queries, opts, callback) {
var isArray = __webpack_require__(6);
var map = __webpack_require__(7);
var usage = 'Usage: client.search(arrayOfQueries[, callback])';
if (!isArray(queries)) {
throw new Error(usage);
}
if (typeof opts === 'function') {
callback = opts;
opts = {};
} else if (opts === undefined) {
opts = {};
}
var client = this;
var postObj = {
requests: map(queries, function prepareRequest(query) {
var params = '';
if (query.query !== undefined) {
params += 'query=' + encodeURIComponent(query.query);
}
return {
indexName: query.indexName,
params: client._getSearchParams(query.params, params),
};
}),
};
var JSONPParams = map(postObj.requests, function prepareJSONPParams(request, requestId) {
return (
requestId +
'=' +
encodeURIComponent(
'/1/indexes/' + encodeURIComponent(request.indexName) + '?' + request.params,
)
);
}).join('&');
var url = '/1/indexes/*/queries';
if (opts.strategy !== undefined) {
postObj.strategy = opts.strategy;
}
return this._jsonRequest({
cache: this.cache,
method: 'POST',
url: url,
body: postObj,
hostType: 'read',
fallback: { method: 'GET', url: '/1/indexes/*', body: { params: JSONPParams } },
callback: callback,
});
};
AlgoliaSearchCore.prototype.searchForFacetValues = function (queries) {
var isArray = __webpack_require__(6);
var map = __webpack_require__(7);
var usage =
'Usage: client.searchForFacetValues([{indexName, params: {facetName, facetQuery, ...params}}, ...queries])';
if (!isArray(queries)) {
throw new Error(usage);
}
var client = this;
return client._promise.all(
map(queries, function performQuery(query) {
if (
!query ||
query.indexName === undefined ||
query.params.facetName === undefined ||
query.params.facetQuery === undefined
) {
throw new Error(usage);
}
var clone = __webpack_require__(3);
var omit = __webpack_require__(14);
var indexName = query.indexName;
var params = query.params;
var facetName = params.facetName;
var filteredParams = omit(clone(params), function (keyName) {
return keyName === 'facetName';
});
var searchParameters = client._getSearchParams(filteredParams, '');
return client._jsonRequest({
cache: client.cache,
method: 'POST',
url:
'/1/indexes/' +
encodeURIComponent(indexName) +
'/facets/' +
encodeURIComponent(facetName) +
'/query',
hostType: 'read',
body: { params: searchParameters },
});
}),
);
};
AlgoliaSearchCore.prototype.setSecurityTags = function (tags) {
if (Object.prototype.toString.call(tags) === '[object Array]') {
var strTags = [];
for (var i = 0; i < tags.length; ++i) {
if (Object.prototype.toString.call(tags[i]) === '[object Array]') {
var oredTags = [];
for (var j = 0; j < tags[i].length; ++j) {
oredTags.push(tags[i][j]);
}
strTags.push('(' + oredTags.join(',') + ')');
} else {
strTags.push(tags[i]);
}
}
tags = strTags.join(',');
}
this.securityTags = tags;
};
AlgoliaSearchCore.prototype.setUserToken = function (userToken) {
this.userToken = userToken;
};
AlgoliaSearchCore.prototype.clearCache = function () {
this.cache = {};
};
AlgoliaSearchCore.prototype.setRequestTimeout = function (milliseconds) {
if (milliseconds) {
this._timeouts.connect = this._timeouts.read = this._timeouts.write = milliseconds;
}
};
AlgoliaSearchCore.prototype.setTimeouts = function (timeouts) {
this._timeouts = timeouts;
};
AlgoliaSearchCore.prototype.getTimeouts = function () {
return this._timeouts;
};
AlgoliaSearchCore.prototype._getAppIdData = function () {
var data = store.get(this.applicationID);
if (data !== null) this._cacheAppIdData(data);
return data;
};
AlgoliaSearchCore.prototype._setAppIdData = function (data) {
data.lastChange = new Date().getTime();
this._cacheAppIdData(data);
return store.set(this.applicationID, data);
};
AlgoliaSearchCore.prototype._checkAppIdData = function () {
var data = this._getAppIdData();
var now = new Date().getTime();
if (data === null || now - data.lastChange > RESET_APP_DATA_TIMER) {
return this._resetInitialAppIdData(data);
}
return data;
};
AlgoliaSearchCore.prototype._resetInitialAppIdData = function (data) {
var newData = data || {};
newData.hostIndexes = { read: 0, write: 0 };
newData.timeoutMultiplier = 1;
newData.shuffleResult = newData.shuffleResult || shuffle([1, 2, 3]);
return this._setAppIdData(newData);
};
AlgoliaSearchCore.prototype._cacheAppIdData = function (data) {
this._hostIndexes = data.hostIndexes;
this._timeoutMultiplier = data.timeoutMultiplier;
this._shuffleResult = data.shuffleResult;
};
AlgoliaSearchCore.prototype._partialAppIdDataUpdate = function (newData) {
var foreach = __webpack_require__(2);
var currentData = this._getAppIdData();
foreach(newData, function (value, key) {
currentData[key] = value;
});
return this._setAppIdData(currentData);
};
AlgoliaSearchCore.prototype._getHostByType = function (hostType) {
return this.hosts[hostType][this._getHostIndexByType(hostType)];
};
AlgoliaSearchCore.prototype._getTimeoutMultiplier = function () {
return this._timeoutMultiplier;
};
AlgoliaSearchCore.prototype._getHostIndexByType = function (hostType) {
return this._hostIndexes[hostType];
};
AlgoliaSearchCore.prototype._setHostIndexByType = function (hostIndex, hostType) {
var clone = __webpack_require__(3);
var newHostIndexes = clone(this._hostIndexes);
newHostIndexes[hostType] = hostIndex;
this._partialAppIdDataUpdate({ hostIndexes: newHostIndexes });
return hostIndex;
};
AlgoliaSearchCore.prototype._incrementHostIndex = function (hostType) {
return this._setHostIndexByType(
(this._getHostIndexByType(hostType) + 1) % this.hosts[hostType].length,
hostType,
);
};
AlgoliaSearchCore.prototype._incrementTimeoutMultipler = function () {
var timeoutMultiplier = Math.max(this._timeoutMultiplier + 1, 4);
return this._partialAppIdDataUpdate({ timeoutMultiplier: timeoutMultiplier });
};
AlgoliaSearchCore.prototype._getTimeoutsForRequest = function (hostType) {
return {
connect: this._timeouts.connect * this._timeoutMultiplier,
complete: this._timeouts[hostType] * this._timeoutMultiplier,
};
};
function prepareHost(protocol) {
return function prepare(host) {
return protocol + '//' + host.toLowerCase();
};
}
function safeJSONStringify(obj) {
if (Array.prototype.toJSON === undefined) {
return JSON.stringify(obj);
}
var toJSON = Array.prototype.toJSON;
delete Array.prototype.toJSON;
var out = JSON.stringify(obj);
Array.prototype.toJSON = toJSON;
return out;
}
function shuffle(array) {
var currentIndex = array.length;
var temporaryValue;
var randomIndex;
while (currentIndex !== 0) {
randomIndex = Math.floor(Math.random() * currentIndex);
currentIndex -= 1;
temporaryValue = array[currentIndex];
array[currentIndex] = array[randomIndex];
array[randomIndex] = temporaryValue;
}
return array;
}
function removeCredentials(headers) {
var newHeaders = {};
for (var headerName in headers) {
if (Object.prototype.hasOwnProperty.call(headers, headerName)) {
var value;
if (headerName === 'x-algolia-api-key' || headerName === 'x-algolia-application-id') {
value = '**hidden for security purposes**';
} else {
value = headers[headerName];
}
newHeaders[headerName] = value;
}
}
return newHeaders;
}
},
function (module, exports) {
module.exports = function exitPromise(fn, _setTimeout) {
_setTimeout(fn, 0);
};
},
function (module, exports, __webpack_require__) {
var buildSearchMethod = __webpack_require__(13);
var deprecate = __webpack_require__(33);
var deprecatedMessage = __webpack_require__(34);
module.exports = IndexCore;
function IndexCore(algoliasearch, indexName) {
this.indexName = indexName;
this.as = algoliasearch;
this.typeAheadArgs = null;
this.typeAheadValueOption = null;
this.cache = {};
}
IndexCore.prototype.clearCache = function () {
this.cache = {};
};
IndexCore.prototype.search = buildSearchMethod('query');
IndexCore.prototype.similarSearch = buildSearchMethod('similarQuery');
IndexCore.prototype.browse = function (query, queryParameters, callback) {
var merge = __webpack_require__(35);
var indexObj = this;
var page;
var hitsPerPage;
if (
arguments.length === 0 ||
(arguments.length === 1 && typeof arguments[0] === 'function')
) {
page = 0;
callback = arguments[0];
query = undefined;
} else if (typeof arguments[0] === 'number') {
page = arguments[0];
if (typeof arguments[1] === 'number') {
hitsPerPage = arguments[1];
} else if (typeof arguments[1] === 'function') {
callback = arguments[1];
hitsPerPage = undefined;
}
query = undefined;
queryParameters = undefined;
} else if (typeof arguments[0] === 'object') {
if (typeof arguments[1] === 'function') {
callback = arguments[1];
}
queryParameters = arguments[0];
query = undefined;
} else if (typeof arguments[0] === 'string' && typeof arguments[1] === 'function') {
callback = arguments[1];
queryParameters = undefined;
}
queryParameters = merge({}, queryParameters || {}, {
page: page,
hitsPerPage: hitsPerPage,
query: query,
});
var params = this.as._getSearchParams(queryParameters, '');
return this.as._jsonRequest({
method: 'POST',
url: '/1/indexes/' + encodeURIComponent(indexObj.indexName) + '/browse',
body: { params: params },
hostType: 'read',
callback: callback,
});
};
IndexCore.prototype.browseFrom = function (cursor, callback) {
return this.as._jsonRequest({
method: 'POST',
url: '/1/indexes/' + encodeURIComponent(this.indexName) + '/browse',
body: { cursor: cursor },
hostType: 'read',
callback: callback,
});
};
IndexCore.prototype.searchForFacetValues = function (params, callback) {
var clone = __webpack_require__(3);
var omit = __webpack_require__(14);
var usage =
'Usage: index.searchForFacetValues({facetName, facetQuery, ...params}[, callback])';
if (params.facetName === undefined || params.facetQuery === undefined) {
throw new Error(usage);
}
var facetName = params.facetName;
var filteredParams = omit(clone(params), function (keyName) {
return keyName === 'facetName';
});
var searchParameters = this.as._getSearchParams(filteredParams, '');
return this.as._jsonRequest({
method: 'POST',
url:
'/1/indexes/' +
encodeURIComponent(this.indexName) +
'/facets/' +
encodeURIComponent(facetName) +
'/query',
hostType: 'read',
body: { params: searchParameters },
callback: callback,
});
};
IndexCore.prototype.searchFacet = deprecate(function (params, callback) {
return this.searchForFacetValues(params, callback);
}, deprecatedMessage(
'index.searchFacet(params[, callback])',
'index.searchForFacetValues(params[, callback])',
));
IndexCore.prototype._search = function (params, url, callback, additionalUA) {
return this.as._jsonRequest({
cache: this.cache,
method: 'POST',
url: url || '/1/indexes/' + encodeURIComponent(this.indexName) + '/query',
body: { params: params },
hostType: 'read',
fallback: {
method: 'GET',
url: '/1/indexes/' + encodeURIComponent(this.indexName),
body: { params: params },
},
callback: callback,
additionalUA: additionalUA,
});
};
IndexCore.prototype.getObject = function (objectID, attrs, callback) {
var indexObj = this;
if (arguments.length === 1 || typeof attrs === 'function') {
callback = attrs;
attrs = undefined;
}
var params = '';
if (attrs !== undefined) {
params = '?attributes=';
for (var i = 0; i < attrs.length; ++i) {
if (i !== 0) {
params += ',';
}
params += attrs[i];
}
}
return this.as._jsonRequest({
method: 'GET',
url:
'/1/indexes/' +
encodeURIComponent(indexObj.indexName) +
'/' +
encodeURIComponent(objectID) +
params,
hostType: 'read',
callback: callback,
});
};
IndexCore.prototype.getObjects = function (objectIDs, attributesToRetrieve, callback) {
var isArray = __webpack_require__(6);
var map = __webpack_require__(7);
var usage = 'Usage: index.getObjects(arrayOfObjectIDs[, callback])';
if (!isArray(objectIDs)) {
throw new Error(usage);
}
var indexObj = this;
if (arguments.length === 1 || typeof attributesToRetrieve === 'function') {
callback = attributesToRetrieve;
attributesToRetrieve = undefined;
}
var body = {
requests: map(objectIDs, function prepareRequest(objectID) {
var request = { indexName: indexObj.indexName, objectID: objectID };
if (attributesToRetrieve) {
request.attributesToRetrieve = attributesToRetrieve.join(',');
}
return request;
}),
};
return this.as._jsonRequest({
method: 'POST',
url: '/1/indexes/*/objects',
hostType: 'read',
body: body,
callback: callback,
});
};
IndexCore.prototype.as = null;
IndexCore.prototype.indexName = null;
IndexCore.prototype.typeAheadArgs = null;
IndexCore.prototype.typeAheadValueOption = null;
},
function (module, exports) {
module.exports = function deprecate(fn, message) {
var warned = false;
function deprecated() {
if (!warned) {
console.warn(message);
warned = true;
}
return fn.apply(this, arguments);
}
return deprecated;
};
},
function (module, exports) {
module.exports = function deprecatedMessage(previousUsage, newUsage) {
var githubAnchorLink = previousUsage.toLowerCase().replace(/[\.\(\)]/g, '');
return (
'algoliasearch: `' +
previousUsage +
'` was replaced by `' +
newUsage +
'`. Please see https://github.com/algolia/algoliasearch-client-javascript/wiki/Deprecated#' +
githubAnchorLink
);
};
},
function (module, exports, __webpack_require__) {
var foreach = __webpack_require__(2);
module.exports = function merge(destination) {
var sources = Array.prototype.slice.call(arguments);
foreach(sources, function (source) {
for (var keyName in source) {
if (source.hasOwnProperty(keyName)) {
if (typeof destination[keyName] === 'object' && typeof source[keyName] === 'object') {
destination[keyName] = merge({}, destination[keyName], source[keyName]);
} else if (source[keyName] !== undefined) {
destination[keyName] = source[keyName];
}
}
}
});
return destination;
};
},
function (module, exports, __webpack_require__) {
'use strict';
var has = Object.prototype.hasOwnProperty;
var toStr = Object.prototype.toString;
var slice = Array.prototype.slice;
var isArgs = __webpack_require__(37);
var isEnumerable = Object.prototype.propertyIsEnumerable;
var hasDontEnumBug = !isEnumerable.call({ toString: null }, 'toString');
var hasProtoEnumBug = isEnumerable.call(function () {}, 'prototype');
var dontEnums = [
'toString',
'toLocaleString',
'valueOf',
'hasOwnProperty',
'isPrototypeOf',
'propertyIsEnumerable',
'constructor',
];
var equalsConstructorPrototype = function (o) {
var ctor = o.constructor;
return ctor && ctor.prototype === o;
};
var excludedKeys = {
$applicationCache: true,
$console: true,
$external: true,
$frame: true,
$frameElement: true,
$frames: true,
$innerHeight: true,
$innerWidth: true,
$outerHeight: true,
$outerWidth: true,
$pageXOffset: true,
$pageYOffset: true,
$parent: true,
$scrollLeft: true,
$scrollTop: true,
$scrollX: true,
$scrollY: true,
$self: true,
$webkitIndexedDB: true,
$webkitStorageInfo: true,
$window: true,
};
var hasAutomationEqualityBug = (function () {
if (typeof window === 'undefined') {
return false;
}
for (var k in window) {
try {
if (
!excludedKeys['$' + k] &&
has.call(window, k) &&
window[k] !== null &&
typeof window[k] === 'object'
) {
try {
equalsConstructorPrototype(window[k]);
} catch (e) {
return true;
}
}
} catch (e) {
return true;
}
}
return false;
})();
var equalsConstructorPrototypeIfNotBuggy = function (o) {
if (typeof window === 'undefined' || !hasAutomationEqualityBug) {
return equalsConstructorPrototype(o);
}
try {
return equalsConstructorPrototype(o);
} catch (e) {
return false;
}
};
var keysShim = function keys(object) {
var isObject = object !== null && typeof object === 'object';
var isFunction = toStr.call(object) === '[object Function]';
var isArguments = isArgs(object);
var isString = isObject && toStr.call(object) === '[object String]';
var theKeys = [];
if (!isObject && !isFunction && !isArguments) {
throw new TypeError('Object.keys called on a non-object');
}
var skipProto = hasProtoEnumBug && isFunction;
if (isString && object.length > 0 && !has.call(object, 0)) {
for (var i = 0; i < object.length; ++i) {
theKeys.push(String(i));
}
}
if (isArguments && object.length > 0) {
for (var j = 0; j < object.length; ++j) {
theKeys.push(String(j));
}
} else {
for (var name in object) {
if (!(skipProto && name === 'prototype') && has.call(object, name)) {
theKeys.push(String(name));
}
}
}
if (hasDontEnumBug) {
var skipConstructor = equalsConstructorPrototypeIfNotBuggy(object);
for (var k = 0; k < dontEnums.length; ++k) {
if (
!(skipConstructor && dontEnums[k] === 'constructor') &&
has.call(object, dontEnums[k])
) {
theKeys.push(dontEnums[k]);
}
}
}
return theKeys;
};
keysShim.shim = function shimObjectKeys() {
if (Object.keys) {
var keysWorksWithArguments = (function () {
return (Object.keys(arguments) || '').length === 2;
})(1, 2);
if (!keysWorksWithArguments) {
var originalKeys = Object.keys;
Object.keys = function keys(object) {
if (isArgs(object)) {
return originalKeys(slice.call(object));
} else {
return originalKeys(object);
}
};
}
} else {
Object.keys = keysShim;
}
return Object.keys || keysShim;
};
module.exports = keysShim;
},
function (module, exports, __webpack_require__) {
'use strict';
var toStr = Object.prototype.toString;
module.exports = function isArguments(value) {
var str = toStr.call(value);
var isArgs = str === '[object Arguments]';
if (!isArgs) {
isArgs =
str !== '[object Array]' &&
value !== null &&
typeof value === 'object' &&
typeof value.length === 'number' &&
value.length >= 0 &&
toStr.call(value.callee) === '[object Function]';
}
return isArgs;
};
},
function (module, exports, __webpack_require__) {
(function (global) {
var debug = __webpack_require__(8)('algoliasearch:src/hostIndexState.js');
var localStorageNamespace = 'algoliasearch-client-js';
var store;
var moduleStore = {
state: {},
set: function (key, data) {
this.state[key] = data;
return this.state[key];
},
get: function (key) {
return this.state[key] || null;
},
};
var localStorageStore = {
set: function (key, data) {
moduleStore.set(key, data);
try {
var namespace = JSON.parse(global.localStorage[localStorageNamespace]);
namespace[key] = data;
global.localStorage[localStorageNamespace] = JSON.stringify(namespace);
return namespace[key];
} catch (e) {
return localStorageFailure(key, e);
}
},
get: function (key) {
try {
return JSON.parse(global.localStorage[localStorageNamespace])[key] || null;
} catch (e) {
return localStorageFailure(key, e);
}
},
};
function localStorageFailure(key, e) {
debug('localStorage failed with', e);
cleanup();
store = moduleStore;
return store.get(key);
}
store = supportsLocalStorage() ? localStorageStore : moduleStore;
module.exports = {
get: getOrSet,
set: getOrSet,
supportsLocalStorage: supportsLocalStorage,
};
function getOrSet(key, data) {
if (arguments.length === 1) {
return store.get(key);
}
return store.set(key, data);
}
function supportsLocalStorage() {
try {
if ('localStorage' in global && global.localStorage !== null) {
if (!global.localStorage[localStorageNamespace]) {
global.localStorage.setItem(localStorageNamespace, JSON.stringify({}));
}
return true;
}
return false;
} catch (_) {
return false;
}
}
function cleanup() {
try {
global.localStorage.removeItem(localStorageNamespace);
} catch (_) {}
}
}).call(exports, __webpack_require__(4));
},
function (module, exports, __webpack_require__) {
exports = module.exports = createDebug.debug = createDebug['default'] = createDebug;
exports.coerce = coerce;
exports.disable = disable;
exports.enable = enable;
exports.enabled = enabled;
exports.humanize = __webpack_require__(40);
exports.names = [];
exports.skips = [];
exports.formatters = {};
var prevTime;
function selectColor(namespace) {
var hash = 0,
i;
for (i in namespace) {
hash = (hash << 5) - hash + namespace.charCodeAt(i);
hash |= 0;
}
return exports.colors[Math.abs(hash) % exports.colors.length];
}
function createDebug(namespace) {
function debug() {
if (!debug.enabled) return;
var self = debug;
var curr = +new Date();
var ms = curr - (prevTime || curr);
self.diff = ms;
self.prev = prevTime;
self.curr = curr;
prevTime = curr;
var args = new Array(arguments.length);
for (var i = 0; i < args.length; i++) {
args[i] = arguments[i];
}
args[0] = exports.coerce(args[0]);
if ('string' !== typeof args[0]) {
args.unshift('%O');
}
var index = 0;
args[0] = args[0].replace(/%([a-zA-Z%])/g, function (match, format) {
if (match === '%%') return match;
index++;
var formatter = exports.formatters[format];
if ('function' === typeof formatter) {
var val = args[index];
match = formatter.call(self, val);
args.splice(index, 1);
index--;
}
return match;
});
exports.formatArgs.call(self, args);
var logFn = debug.log || exports.log || console.log.bind(console);
logFn.apply(self, args);
}
debug.namespace = namespace;
debug.enabled = exports.enabled(namespace);
debug.useColors = exports.useColors();
debug.color = selectColor(namespace);
if ('function' === typeof exports.init) {
exports.init(debug);
}
return debug;
}
function enable(namespaces) {
exports.save(namespaces);
exports.names = [];
exports.skips = [];
var split = (typeof namespaces === 'string' ? namespaces : '').split(/[\s,]+/);
var len = split.length;
for (var i = 0; i < len; i++) {
if (!split[i]) continue;
namespaces = split[i].replace(/\*/g, '.*?');
if (namespaces[0] === '-') {
exports.skips.push(new RegExp('^' + namespaces.substr(1) + '$'));
} else {
exports.names.push(new RegExp('^' + namespaces + '$'));
}
}
}
function disable() {
exports.enable('');
}
function enabled(name) {
var i, len;
for (i = 0, len = exports.skips.length; i < len; i++) {
if (exports.skips[i].test(name)) {
return false;
}
}
for (i = 0, len = exports.names.length; i < len; i++) {
if (exports.names[i].test(name)) {
return true;
}
}
return false;
}
function coerce(val) {
if (val instanceof Error) return val.stack || val.message;
return val;
}
},
function (module, exports) {
var s = 1e3;
var m = s * 60;
var h = m * 60;
var d = h * 24;
var y = d * 365.25;
module.exports = function (val, options) {
options = options || {};
var type = typeof val;
if (type === 'string' && val.length > 0) {
return parse(val);
} else if (type === 'number' && isNaN(val) === false) {
return options.long ? fmtLong(val) : fmtShort(val);
}
throw new Error(
'val is not a non-empty string or a valid number. val=' + JSON.stringify(val),
);
};
function parse(str) {
str = String(str);
if (str.length > 100) {
return;
}
var match =
/^((?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(
str,
);
if (!match) {
return;
}
var n = parseFloat(match[1]);
var type = (match[2] || 'ms').toLowerCase();
switch (type) {
case 'years':
case 'year':
case 'yrs':
case 'yr':
case 'y':
return n * y;
case 'days':
case 'day':
case 'd':
return n * d;
case 'hours':
case 'hour':
case 'hrs':
case 'hr':
case 'h':
return n * h;
case 'minutes':
case 'minute':
case 'mins':
case 'min':
case 'm':
return n * m;
case 'seconds':
case 'second':
case 'secs':
case 'sec':
case 's':
return n * s;
case 'milliseconds':
case 'millisecond':
case 'msecs':
case 'msec':
case 'ms':
return n;
default:
return undefined;
}
}
function fmtShort(ms) {
if (ms >= d) {
return Math.round(ms / d) + 'd';
}
if (ms >= h) {
return Math.round(ms / h) + 'h';
}
if (ms >= m) {
return Math.round(ms / m) + 'm';
}
if (ms >= s) {
return Math.round(ms / s) + 's';
}
return ms + 'ms';
}
function fmtLong(ms) {
return (
plural(ms, d, 'day') ||
plural(ms, h, 'hour') ||
plural(ms, m, 'minute') ||
plural(ms, s, 'second') ||
ms + ' ms'
);
}
function plural(ms, n, name) {
if (ms < n) {
return;
}
if (ms < n * 1.5) {
return Math.floor(ms / n) + ' ' + name;
}
return Math.ceil(ms / n) + ' ' + name + 's';
}
},
function (module, exports, __webpack_require__) {
'use strict';
var global = __webpack_require__(42);
var Promise = global.Promise || __webpack_require__(43).Promise;
module.exports = function createAlgoliasearch(AlgoliaSearch, uaSuffix) {
var inherits = __webpack_require__(12);
var errors = __webpack_require__(5);
var inlineHeaders = __webpack_require__(44);
var jsonpRequest = __webpack_require__(46);
var places = __webpack_require__(47);
uaSuffix = uaSuffix || '';
function algoliasearch(applicationID, apiKey, opts) {
var cloneDeep = __webpack_require__(3);
opts = cloneDeep(opts || {});
opts._ua = opts._ua || algoliasearch.ua;
return new AlgoliaSearchBrowser(applicationID, apiKey, opts);
}
algoliasearch.version = __webpack_require__(48);
algoliasearch.ua = 'Algolia for vanilla JavaScript ' + uaSuffix + algoliasearch.version;
algoliasearch.initPlaces = places(algoliasearch);
global.__algolia = { debug: __webpack_require__(8), algoliasearch: algoliasearch };
var support = {
hasXMLHttpRequest: 'XMLHttpRequest' in global,
hasXDomainRequest: 'XDomainRequest' in global,
};
if (support.hasXMLHttpRequest) {
support.cors = 'withCredentials' in new XMLHttpRequest();
}
function AlgoliaSearchBrowser() {
AlgoliaSearch.apply(this, arguments);
}
inherits(AlgoliaSearchBrowser, AlgoliaSearch);
AlgoliaSearchBrowser.prototype._request = function request(url, opts) {
return new Promise(function wrapRequest(resolve, reject) {
if (!support.cors && !support.hasXDomainRequest) {
reject(new errors.Network('CORS not supported'));
return;
}
url = inlineHeaders(url, opts.headers);
var body = opts.body;
var req = support.cors ? new XMLHttpRequest() : new XDomainRequest();
var reqTimeout;
var timedOut;
var connected = false;
reqTimeout = setTimeout(onTimeout, opts.timeouts.connect);
req.onprogress = onProgress;
if ('onreadystatechange' in req) req.onreadystatechange = onReadyStateChange;
req.onload = onLoad;
req.onerror = onError;
if (req instanceof XMLHttpRequest) {
req.open(opts.method, url, true);
if (opts.forceAuthHeaders) {
req.setRequestHeader(
'x-algolia-application-id',
opts.headers['x-algolia-application-id'],
);
req.setRequestHeader('x-algolia-api-key', opts.headers['x-algolia-api-key']);
}
} else {
req.open(opts.method, url);
}
if (support.cors) {
if (body) {
if (opts.method === 'POST') {
req.setRequestHeader('content-type', 'application/x-www-form-urlencoded');
} else {
req.setRequestHeader('content-type', 'application/json');
}
}
req.setRequestHeader('accept', 'application/json');
}
if (body) {
req.send(body);
} else {
req.send();
}
function onLoad() {
if (timedOut) {
return;
}
clearTimeout(reqTimeout);
var out;
try {
out = {
body: JSON.parse(req.responseText),
responseText: req.responseText,
statusCode: req.status,
headers: (req.getAllResponseHeaders && req.getAllResponseHeaders()) || {},
};
} catch (e) {
out = new errors.UnparsableJSON({ more: req.responseText });
}
if (out instanceof errors.UnparsableJSON) {
reject(out);
} else {
resolve(out);
}
}
function onError(event) {
if (timedOut) {
return;
}
clearTimeout(reqTimeout);
reject(new errors.Network({ more: event }));
}
function onTimeout() {
timedOut = true;
req.abort();
reject(new errors.RequestTimeout());
}
function onConnect() {
connected = true;
clearTimeout(reqTimeout);
reqTimeout = setTimeout(onTimeout, opts.timeouts.complete);
}
function onProgress() {
if (!connected) onConnect();
}
function onReadyStateChange() {
if (!connected && req.readyState > 1) onConnect();
}
});
};
AlgoliaSearchBrowser.prototype._request.fallback = function requestFallback(url, opts) {
url = inlineHeaders(url, opts.headers);
return new Promise(function wrapJsonpRequest(resolve, reject) {
jsonpRequest(url, opts, function jsonpRequestDone(err, content) {
if (err) {
reject(err);
return;
}
resolve(content);
});
});
};
AlgoliaSearchBrowser.prototype._promise = {
reject: function rejectPromise(val) {
return Promise.reject(val);
},
resolve: function resolvePromise(val) {
return Promise.resolve(val);
},
delay: function delayPromise(ms) {
return new Promise(function resolveOnTimeout(resolve) {
setTimeout(resolve, ms);
});
},
all: function all(promises) {
return Promise.all(promises);
},
};
return algoliasearch;
};
},
function (module, exports, __webpack_require__) {
(function (global) {
var win;
if (typeof window !== 'undefined') {
win = window;
} else if (typeof global !== 'undefined') {
win = global;
} else if (typeof self !== 'undefined') {
win = self;
} else {
win = {};
}
module.exports = win;
}).call(exports, __webpack_require__(4));
},
function (module, exports, __webpack_require__) {
(function (process, global) {
(function (global, factory) {
true
? (module.exports = factory())
: typeof define === 'function' && define.amd
? define(factory)
: (global.ES6Promise = factory());
})(this, function () {
'use strict';
function objectOrFunction(x) {
var type = typeof x;
return x !== null && (type === 'object' || type === 'function');
}
function isFunction(x) {
return typeof x === 'function';
}
var _isArray = void 0;
if (Array.isArray) {
_isArray = Array.isArray;
} else {
_isArray = function (x) {
return Object.prototype.toString.call(x) === '[object Array]';
};
}
var isArray = _isArray;
var len = 0;
var vertxNext = void 0;
var customSchedulerFn = void 0;
var asap = function asap(callback, arg) {
queue[len] = callback;
queue[len + 1] = arg;
len += 2;
if (len === 2) {
if (customSchedulerFn) {
customSchedulerFn(flush);
} else {
scheduleFlush();
}
}
};
function setScheduler(scheduleFn) {
customSchedulerFn = scheduleFn;
}
function setAsap(asapFn) {
asap = asapFn;
}
var browserWindow = typeof window !== 'undefined' ? window : undefined;
var browserGlobal = browserWindow || {};
var BrowserMutationObserver =
browserGlobal.MutationObserver || browserGlobal.WebKitMutationObserver;
var isNode =
typeof self === 'undefined' &&
typeof process !== 'undefined' &&
{}.toString.call(process) === '[object process]';
var isWorker =
typeof Uint8ClampedArray !== 'undefined' &&
typeof importScripts !== 'undefined' &&
typeof MessageChannel !== 'undefined';
function useNextTick() {
return function () {
return process.nextTick(flush);
};
}
function useVertxTimer() {
if (typeof vertxNext !== 'undefined') {
return function () {
vertxNext(flush);
};
}
return useSetTimeout();
}
function useMutationObserver() {
var iterations = 0;
var observer = new BrowserMutationObserver(flush);
var node = document.createTextNode('');
observer.observe(node, { characterData: true });
return function () {
node.data = iterations = ++iterations % 2;
};
}
function useMessageChannel() {
var channel = new MessageChannel();
channel.port1.onmessage = flush;
return function () {
return channel.port2.postMessage(0);
};
}
function useSetTimeout() {
var globalSetTimeout = setTimeout;
return function () {
return globalSetTimeout(flush, 1);
};
}
var queue = new Array(1e3);
function flush() {
for (var i = 0; i < len; i += 2) {
var callback = queue[i];
var arg = queue[i + 1];
callback(arg);
queue[i] = undefined;
queue[i + 1] = undefined;
}
len = 0;
}
function attemptVertx() {
try {
var vertx = Function('return this')().require('vertx');
vertxNext = vertx.runOnLoop || vertx.runOnContext;
return useVertxTimer();
} catch (e) {
return useSetTimeout();
}
}
var scheduleFlush = void 0;
if (isNode) {
scheduleFlush = useNextTick();
} else if (BrowserMutationObserver) {
scheduleFlush = useMutationObserver();
} else if (isWorker) {
scheduleFlush = useMessageChannel();
} else if (browserWindow === undefined && 'function' === 'function') {
scheduleFlush = attemptVertx();
} else {
scheduleFlush = useSetTimeout();
}
function then(onFulfillment, onRejection) {
var parent = this;
var child = new this.constructor(noop);
if (child[PROMISE_ID] === undefined) {
makePromise(child);
}
var _state = parent._state;
if (_state) {
var callback = arguments[_state - 1];
asap(function () {
return invokeCallback(_state, child, callback, parent._result);
});
} else {
subscribe(parent, child, onFulfillment, onRejection);
}
return child;
}
function resolve$1(object) {
var Constructor = this;
if (object && typeof object === 'object' && object.constructor === Constructor) {
return object;
}
var promise = new Constructor(noop);
resolve(promise, object);
return promise;
}
var PROMISE_ID = Math.random().toString(36).substring(2);
function noop() {}
var PENDING = void 0;
var FULFILLED = 1;
var REJECTED = 2;
var TRY_CATCH_ERROR = { error: null };
function selfFulfillment() {
return new TypeError('You cannot resolve a promise with itself');
}
function cannotReturnOwn() {
return new TypeError('A promises callback cannot return that same promise.');
}
function getThen(promise) {
try {
return promise.then;
} catch (error) {
TRY_CATCH_ERROR.error = error;
return TRY_CATCH_ERROR;
}
}
function tryThen(then$$1, value, fulfillmentHandler, rejectionHandler) {
try {
then$$1.call(value, fulfillmentHandler, rejectionHandler);
} catch (e) {
return e;
}
}
function handleForeignThenable(promise, thenable, then$$1) {
asap(function (promise) {
var sealed = false;
var error = tryThen(
then$$1,
thenable,
function (value) {
if (sealed) {
return;
}
sealed = true;
if (thenable !== value) {
resolve(promise, value);
} else {
fulfill(promise, value);
}
},
function (reason) {
if (sealed) {
return;
}
sealed = true;
reject(promise, reason);
},
'Settle: ' + (promise._label || ' unknown promise'),
);
if (!sealed && error) {
sealed = true;
reject(promise, error);
}
}, promise);
}
function handleOwnThenable(promise, thenable) {
if (thenable._state === FULFILLED) {
fulfill(promise, thenable._result);
} else if (thenable._state === REJECTED) {
reject(promise, thenable._result);
} else {
subscribe(
thenable,
undefined,
function (value) {
return resolve(promise, value);
},
function (reason) {
return reject(promise, reason);
},
);
}
}
function handleMaybeThenable(promise, maybeThenable, then$$1) {
if (
maybeThenable.constructor === promise.constructor &&
then$$1 === then &&
maybeThenable.constructor.resolve === resolve$1
) {
handleOwnThenable(promise, maybeThenable);
} else {
if (then$$1 === TRY_CATCH_ERROR) {
reject(promise, TRY_CATCH_ERROR.error);
TRY_CATCH_ERROR.error = null;
} else if (then$$1 === undefined) {
fulfill(promise, maybeThenable);
} else if (isFunction(then$$1)) {
handleForeignThenable(promise, maybeThenable, then$$1);
} else {
fulfill(promise, maybeThenable);
}
}
}
function resolve(promise, value) {
if (promise === value) {
reject(promise, selfFulfillment());
} else if (objectOrFunction(value)) {
handleMaybeThenable(promise, value, getThen(value));
} else {
fulfill(promise, value);
}
}
function publishRejection(promise) {
if (promise._onerror) {
promise._onerror(promise._result);
}
publish(promise);
}
function fulfill(promise, value) {
if (promise._state !== PENDING) {
return;
}
promise._result = value;
promise._state = FULFILLED;
if (promise._subscribers.length !== 0) {
asap(publish, promise);
}
}
function reject(promise, reason) {
if (promise._state !== PENDING) {
return;
}
promise._state = REJECTED;
promise._result = reason;
asap(publishRejection, promise);
}
function subscribe(parent, child, onFulfillment, onRejection) {
var _subscribers = parent._subscribers;
var length = _subscribers.length;
parent._onerror = null;
_subscribers[length] = child;
_subscribers[length + FULFILLED] = onFulfillment;
_subscribers[length + REJECTED] = onRejection;
if (length === 0 && parent._state) {
asap(publish, parent);
}
}
function publish(promise) {
var subscribers = promise._subscribers;
var settled = promise._state;
if (subscribers.length === 0) {
return;
}
var child = void 0,
callback = void 0,
detail = promise._result;
for (var i = 0; i < subscribers.length; i += 3) {
child = subscribers[i];
callback = subscribers[i + settled];
if (child) {
invokeCallback(settled, child, callback, detail);
} else {
callback(detail);
}
}
promise._subscribers.length = 0;
}
function tryCatch(callback, detail) {
try {
return callback(detail);
} catch (e) {
TRY_CATCH_ERROR.error = e;
return TRY_CATCH_ERROR;
}
}
function invokeCallback(settled, promise, callback, detail) {
var hasCallback = isFunction(callback),
value = void 0,
error = void 0,
succeeded = void 0,
failed = void 0;
if (hasCallback) {
value = tryCatch(callback, detail);
if (value === TRY_CATCH_ERROR) {
failed = true;
error = value.error;
value.error = null;
} else {
succeeded = true;
}
if (promise === value) {
reject(promise, cannotReturnOwn());
return;
}
} else {
value = detail;
succeeded = true;
}
if (promise._state !== PENDING) {
} else if (hasCallback && succeeded) {
resolve(promise, value);
} else if (failed) {
reject(promise, error);
} else if (settled === FULFILLED) {
fulfill(promise, value);
} else if (settled === REJECTED) {
reject(promise, value);
}
}
function initializePromise(promise, resolver) {
try {
resolver(
function resolvePromise(value) {
resolve(promise, value);
},
function rejectPromise(reason) {
reject(promise, reason);
},
);
} catch (e) {
reject(promise, e);
}
}
var id = 0;
function nextId() {
return id++;
}
function makePromise(promise) {
promise[PROMISE_ID] = id++;
promise._state = undefined;
promise._result = undefined;
promise._subscribers = [];
}
function validationError() {
return new Error('Array Methods must be provided an Array');
}
var Enumerator = (function () {
function Enumerator(Constructor, input) {
this._instanceConstructor = Constructor;
this.promise = new Constructor(noop);
if (!this.promise[PROMISE_ID]) {
makePromise(this.promise);
}
if (isArray(input)) {
this.length = input.length;
this._remaining = input.length;
this._result = new Array(this.length);
if (this.length === 0) {
fulfill(this.promise, this._result);
} else {
this.length = this.length || 0;
this._enumerate(input);
if (this._remaining === 0) {
fulfill(this.promise, this._result);
}
}
} else {
reject(this.promise, validationError());
}
}
Enumerator.prototype._enumerate = function _enumerate(input) {
for (var i = 0; this._state === PENDING && i < input.length; i++) {
this._eachEntry(input[i], i);
}
};
Enumerator.prototype._eachEntry = function _eachEntry(entry, i) {
var c = this._instanceConstructor;
var resolve$$1 = c.resolve;
if (resolve$$1 === resolve$1) {
var _then = getThen(entry);
if (_then === then && entry._state !== PENDING) {
this._settledAt(entry._state, i, entry._result);
} else if (typeof _then !== 'function') {
this._remaining--;
this._result[i] = entry;
} else if (c === Promise$1) {
var promise = new c(noop);
handleMaybeThenable(promise, entry, _then);
this._willSettleAt(promise, i);
} else {
this._willSettleAt(
new c(function (resolve$$1) {
return resolve$$1(entry);
}),
i,
);
}
} else {
this._willSettleAt(resolve$$1(entry), i);
}
};
Enumerator.prototype._settledAt = function _settledAt(state, i, value) {
var promise = this.promise;
if (promise._state === PENDING) {
this._remaining--;
if (state === REJECTED) {
reject(promise, value);
} else {
this._result[i] = value;
}
}
if (this._remaining === 0) {
fulfill(promise, this._result);
}
};
Enumerator.prototype._willSettleAt = function _willSettleAt(promise, i) {
var enumerator = this;
subscribe(
promise,
undefined,
function (value) {
return enumerator._settledAt(FULFILLED, i, value);
},
function (reason) {
return enumerator._settledAt(REJECTED, i, reason);
},
);
};
return Enumerator;
})();
function all(entries) {
return new Enumerator(this, entries).promise;
}
function race(entries) {
var Constructor = this;
if (!isArray(entries)) {
return new Constructor(function (_, reject) {
return reject(new TypeError('You must pass an array to race.'));
});
} else {
return new Constructor(function (resolve, reject) {
var length = entries.length;
for (var i = 0; i < length; i++) {
Constructor.resolve(entries[i]).then(resolve, reject);
}
});
}
}
function reject$1(reason) {
var Constructor = this;
var promise = new Constructor(noop);
reject(promise, reason);
return promise;
}
function needsResolver() {
throw new TypeError(
'You must pass a resolver function as the first argument to the promise constructor',
);
}
function needsNew() {
throw new TypeError(
"Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function.",
);
}
var Promise$1 = (function () {
function Promise(resolver) {
this[PROMISE_ID] = nextId();
this._result = this._state = undefined;
this._subscribers = [];
if (noop !== resolver) {
typeof resolver !== 'function' && needsResolver();
this instanceof Promise ? initializePromise(this, resolver) : needsNew();
}
}
Promise.prototype.catch = function _catch(onRejection) {
return this.then(null, onRejection);
};
Promise.prototype.finally = function _finally(callback) {
var promise = this;
var constructor = promise.constructor;
return promise.then(
function (value) {
return constructor.resolve(callback()).then(function () {
return value;
});
},
function (reason) {
return constructor.resolve(callback()).then(function () {
throw reason;
});
},
);
};
return Promise;
})();
Promise$1.prototype.then = then;
Promise$1.all = all;
Promise$1.race = race;
Promise$1.resolve = resolve$1;
Promise$1.reject = reject$1;
Promise$1._setScheduler = setScheduler;
Promise$1._setAsap = setAsap;
Promise$1._asap = asap;
function polyfill() {
var local = void 0;
if (typeof global !== 'undefined') {
local = global;
} else if (typeof self !== 'undefined') {
local = self;
} else {
try {
local = Function('return this')();
} catch (e) {
throw new Error(
'polyfill failed because global object is unavailable in this environment',
);
}
}
var P = local.Promise;
if (P) {
var promiseToString = null;
try {
promiseToString = Object.prototype.toString.call(P.resolve());
} catch (e) {}
if (promiseToString === '[object Promise]' && !P.cast) {
return;
}
}
local.Promise = Promise$1;
}
Promise$1.polyfill = polyfill;
Promise$1.Promise = Promise$1;
return Promise$1;
});
}).call(exports, __webpack_require__(9), __webpack_require__(4));
},
function (module, exports, __webpack_require__) {
'use strict';
module.exports = inlineHeaders;
var encode = __webpack_require__(45);
function inlineHeaders(url, headers) {
if (/\?/.test(url)) {
url += '&';
} else {
url += '?';
}
return url + encode(headers);
}
},
function (module, exports, __webpack_require__) {
'use strict';
var stringifyPrimitive = function (v) {
switch (typeof v) {
case 'string':
return v;
case 'boolean':
return v ? 'true' : 'false';
case 'number':
return isFinite(v) ? v : '';
default:
return '';
}
};
module.exports = function (obj, sep, eq, name) {
sep = sep || '&';
eq = eq || '=';
if (obj === null) {
obj = undefined;
}
if (typeof obj === 'object') {
return map(objectKeys(obj), function (k) {
var ks = encodeURIComponent(stringifyPrimitive(k)) + eq;
if (isArray(obj[k])) {
return map(obj[k], function (v) {
return ks + encodeURIComponent(stringifyPrimitive(v));
}).join(sep);
} else {
return ks + encodeURIComponent(stringifyPrimitive(obj[k]));
}
}).join(sep);
}
if (!name) return '';
return (
encodeURIComponent(stringifyPrimitive(name)) +
eq +
encodeURIComponent(stringifyPrimitive(obj))
);
};
var isArray =
Array.isArray ||
function (xs) {
return Object.prototype.toString.call(xs) === '[object Array]';
};
function map(xs, f) {
if (xs.map) return xs.map(f);
var res = [];
for (var i = 0; i < xs.length; i++) {
res.push(f(xs[i], i));
}
return res;
}
var objectKeys =
Object.keys ||
function (obj) {
var res = [];
for (var key in obj) {
if (Object.prototype.hasOwnProperty.call(obj, key)) res.push(key);
}
return res;
};
},
function (module, exports, __webpack_require__) {
'use strict';
module.exports = jsonpRequest;
var errors = __webpack_require__(5);
var JSONPCounter = 0;
function jsonpRequest(url, opts, cb) {
if (opts.method !== 'GET') {
cb(new Error('Method ' + opts.method + ' ' + url + ' is not supported by JSONP.'));
return;
}
opts.debug('JSONP: start');
var cbCalled = false;
var timedOut = false;
JSONPCounter += 1;
var head = document.getElementsByTagName('head')[0];
var script = document.createElement('script');
var cbName = 'algoliaJSONP_' + JSONPCounter;
var done = false;
window[cbName] = function (data) {
removeGlobals();
if (timedOut) {
opts.debug('JSONP: Late answer, ignoring');
return;
}
cbCalled = true;
clean();
cb(null, { body: data, responseText: JSON.stringify(data) });
};
url += '&callback=' + cbName;
if (opts.jsonBody && opts.jsonBody.params) {
url += '&' + opts.jsonBody.params;
}
var ontimeout = setTimeout(timeout, opts.timeouts.complete);
script.onreadystatechange = readystatechange;
script.onload = success;
script.onerror = error;
script.async = true;
script.defer = true;
script.src = url;
head.appendChild(script);
function success() {
opts.debug('JSONP: success');
if (done || timedOut) {
return;
}
done = true;
if (!cbCalled) {
opts.debug('JSONP: Fail. Script loaded but did not call the callback');
clean();
cb(new errors.JSONPScriptFail());
}
}
function readystatechange() {
if (this.readyState === 'loaded' || this.readyState === 'complete') {
success();
}
}
function clean() {
clearTimeout(ontimeout);
script.onload = null;
script.onreadystatechange = null;
script.onerror = null;
head.removeChild(script);
}
function removeGlobals() {
try {
delete window[cbName];
delete window[cbName + '_loaded'];
} catch (e) {
window[cbName] = window[cbName + '_loaded'] = undefined;
}
}
function timeout() {
opts.debug('JSONP: Script timeout');
timedOut = true;
clean();
cb(new errors.RequestTimeout());
}
function error() {
opts.debug('JSONP: Script error');
if (done || timedOut) {
return;
}
clean();
cb(new errors.JSONPScriptError());
}
}
},
function (module, exports, __webpack_require__) {
module.exports = createPlacesClient;
var buildSearchMethod = __webpack_require__(13);
function createPlacesClient(algoliasearch) {
return function places(appID, apiKey, opts) {
var cloneDeep = __webpack_require__(3);
opts = (opts && cloneDeep(opts)) || {};
opts.hosts = opts.hosts || [
'places-dsn.algolia.net',
'places-1.algolianet.com',
'places-2.algolianet.com',
'places-3.algolianet.com',
];
if (arguments.length === 0 || typeof appID === 'object' || appID === undefined) {
appID = '';
apiKey = '';
opts._allowEmptyCredentials = true;
}
var client = algoliasearch(appID, apiKey, opts);
var index = client.initIndex('places');
index.search = buildSearchMethod('query', '/1/places/query');
index.getObject = function (objectID, callback) {
return this.as._jsonRequest({
method: 'GET',
url: '/1/places/' + encodeURIComponent(objectID),
hostType: 'read',
callback: callback,
});
};
return index;
};
}
},
function (module, exports, __webpack_require__) {
'use strict';
module.exports = '3.30.0';
},
function (module, exports, __webpack_require__) {
'use strict';
module.exports = __webpack_require__(50);
},
function (module, exports, __webpack_require__) {
'use strict';
var zepto = __webpack_require__(15);
var DOM = __webpack_require__(1);
DOM.element = zepto;
var _ = __webpack_require__(0);
_.isArray = zepto.isArray;
_.isFunction = zepto.isFunction;
_.isObject = zepto.isPlainObject;
_.bind = zepto.proxy;
_.each = function (collection, cb) {
zepto.each(collection, reverseArgs);
function reverseArgs(index, value) {
return cb(value, index);
}
};
_.map = zepto.map;
_.mixin = zepto.extend;
_.Event = zepto.Event;
var typeaheadKey = 'aaAutocomplete';
var Typeahead = __webpack_require__(51);
var EventBus = __webpack_require__(16);
function autocomplete(selector, options, datasets, typeaheadObject) {
datasets = _.isArray(datasets) ? datasets : [].slice.call(arguments, 2);
var inputs = zepto(selector).each(function (i, input) {
var $input = zepto(input);
var eventBus = new EventBus({ el: $input });
var typeahead =
typeaheadObject ||
new Typeahead({
input: $input,
eventBus: eventBus,
dropdownMenuContainer: options.dropdownMenuContainer,
hint: options.hint === undefined ? true : !!options.hint,
minLength: options.minLength,
autoselect: options.autoselect,
autoselectOnBlur: options.autoselectOnBlur,
tabAutocomplete: options.tabAutocomplete,
openOnFocus: options.openOnFocus,
templates: options.templates,
debug: options.debug,
clearOnSelected: options.clearOnSelected,
cssClasses: options.cssClasses,
datasets: datasets,
keyboardShortcuts: options.keyboardShortcuts,
appendTo: options.appendTo,
autoWidth: options.autoWidth,
ariaLabel: options.ariaLabel || input.getAttribute('aria-label'),
});
$input.data(typeaheadKey, typeahead);
});
inputs.autocomplete = {};
_.each(['open', 'close', 'getVal', 'setVal', 'destroy', 'getWrapper'], function (method) {
inputs.autocomplete[method] = function () {
var methodArguments = arguments;
var result;
inputs.each(function (j, input) {
var typeahead = zepto(input).data(typeaheadKey);
result = typeahead[method].apply(typeahead, methodArguments);
});
return result;
};
});
return inputs;
}
autocomplete.sources = Typeahead.sources;
autocomplete.escapeHighlightedString = _.escapeHighlightedString;
var wasAutocompleteSet = 'autocomplete' in window;
var oldAutocomplete = window.autocomplete;
autocomplete.noConflict = function noConflict() {
if (wasAutocompleteSet) {
window.autocomplete = oldAutocomplete;
} else {
delete window.autocomplete;
}
return autocomplete;
};
module.exports = autocomplete;
},
function (module, exports, __webpack_require__) {
'use strict';
var attrsKey = 'aaAttrs';
var _ = __webpack_require__(0);
var DOM = __webpack_require__(1);
var EventBus = __webpack_require__(16);
var Input = __webpack_require__(52);
var Dropdown = __webpack_require__(59);
var html = __webpack_require__(17);
var css = __webpack_require__(11);
function Typeahead(o) {
var $menu;
var $hint;
o = o || {};
if (!o.input) {
_.error('missing input');
}
this.isActivated = false;
this.debug = !!o.debug;
this.autoselect = !!o.autoselect;
this.autoselectOnBlur = !!o.autoselectOnBlur;
this.openOnFocus = !!o.openOnFocus;
this.minLength = _.isNumber(o.minLength) ? o.minLength : 1;
this.autoWidth = o.autoWidth === undefined ? true : !!o.autoWidth;
this.clearOnSelected = !!o.clearOnSelected;
this.tabAutocomplete = o.tabAutocomplete === undefined ? true : !!o.tabAutocomplete;
o.hint = !!o.hint;
if (o.hint && o.appendTo) {
throw new Error(
"[autocomplete.js] hint and appendTo options can't be used at the same time",
);
}
this.css = o.css = _.mixin({}, css, o.appendTo ? css.appendTo : {});
this.cssClasses = o.cssClasses = _.mixin({}, css.defaultClasses, o.cssClasses || {});
this.cssClasses.prefix = o.cssClasses.formattedPrefix = _.formatPrefix(
this.cssClasses.prefix,
this.cssClasses.noPrefix,
);
this.listboxId = o.listboxId = [this.cssClasses.root, 'listbox', _.getUniqueId()].join('-');
var domElts = buildDom(o);
this.$node = domElts.wrapper;
var $input = (this.$input = domElts.input);
$menu = domElts.menu;
$hint = domElts.hint;
if (o.dropdownMenuContainer) {
DOM.element(o.dropdownMenuContainer)
.css('position', 'relative')
.append($menu.css('top', '0'));
}
$input.on('blur.aa', function ($e) {
var active = document.activeElement;
if (_.isMsie() && ($menu[0] === active || $menu[0].contains(active))) {
$e.preventDefault();
$e.stopImmediatePropagation();
_.defer(function () {
$input.focus();
});
}
});
$menu.on('mousedown.aa', function ($e) {
$e.preventDefault();
});
this.eventBus = o.eventBus || new EventBus({ el: $input });
this.dropdown = new Typeahead.Dropdown({
appendTo: o.appendTo,
wrapper: this.$node,
menu: $menu,
datasets: o.datasets,
templates: o.templates,
cssClasses: o.cssClasses,
minLength: this.minLength,
})
.onSync('suggestionClicked', this._onSuggestionClicked, this)
.onSync('cursorMoved', this._onCursorMoved, this)
.onSync('cursorRemoved', this._onCursorRemoved, this)
.onSync('opened', this._onOpened, this)
.onSync('closed', this._onClosed, this)
.onSync('shown', this._onShown, this)
.onSync('empty', this._onEmpty, this)
.onSync('redrawn', this._onRedrawn, this)
.onAsync('datasetRendered', this._onDatasetRendered, this);
this.input = new Typeahead.Input({ input: $input, hint: $hint })
.onSync('focused', this._onFocused, this)
.onSync('blurred', this._onBlurred, this)
.onSync('enterKeyed', this._onEnterKeyed, this)
.onSync('tabKeyed', this._onTabKeyed, this)
.onSync('escKeyed', this._onEscKeyed, this)
.onSync('upKeyed', this._onUpKeyed, this)
.onSync('downKeyed', this._onDownKeyed, this)
.onSync('leftKeyed', this._onLeftKeyed, this)
.onSync('rightKeyed', this._onRightKeyed, this)
.onSync('queryChanged', this._onQueryChanged, this)
.onSync('whitespaceChanged', this._onWhitespaceChanged, this);
this._bindKeyboardShortcuts(o);
this._setLanguageDirection();
}
_.mixin(Typeahead.prototype, {
_bindKeyboardShortcuts: function (options) {
if (!options.keyboardShortcuts) {
return;
}
var $input = this.$input;
var keyboardShortcuts = [];
_.each(options.keyboardShortcuts, function (key) {
if (typeof key === 'string') {
key = key.toUpperCase().charCodeAt(0);
}
keyboardShortcuts.push(key);
});
DOM.element(document).keydown(function (event) {
var elt = event.target || event.srcElement;
var tagName = elt.tagName;
if (
elt.isContentEditable ||
tagName === 'INPUT' ||
tagName === 'SELECT' ||
tagName === 'TEXTAREA'
) {
return;
}
var which = event.which || event.keyCode;
if (keyboardShortcuts.indexOf(which) === -1) {
return;
}
$input.focus();
event.stopPropagation();
event.preventDefault();
});
},
_onSuggestionClicked: function onSuggestionClicked(type, $el) {
var datum;
var context = { selectionMethod: 'click' };
if ((datum = this.dropdown.getDatumForSuggestion($el))) {
this._select(datum, context);
}
},
_onCursorMoved: function onCursorMoved(event, updateInput) {
var datum = this.dropdown.getDatumForCursor();
var currentCursorId = this.dropdown.getCurrentCursor().attr('id');
this.input.setActiveDescendant(currentCursorId);
if (datum) {
if (updateInput) {
this.input.setInputValue(datum.value, true);
}
this.eventBus.trigger('cursorchanged', datum.raw, datum.datasetName);
}
},
_onCursorRemoved: function onCursorRemoved() {
this.input.resetInputValue();
this._updateHint();
this.eventBus.trigger('cursorremoved');
},
_onDatasetRendered: function onDatasetRendered() {
this._updateHint();
this.eventBus.trigger('updated');
},
_onOpened: function onOpened() {
this._updateHint();
this.input.expand();
this.eventBus.trigger('opened');
},
_onEmpty: function onEmpty() {
this.eventBus.trigger('empty');
},
_onRedrawn: function onRedrawn() {
this.$node.css('top', 0 + 'px');
this.$node.css('left', 0 + 'px');
var inputRect = this.$input[0].getBoundingClientRect();
if (this.autoWidth) {
this.$node.css('width', inputRect.width + 'px');
}
var wrapperRect = this.$node[0].getBoundingClientRect();
var top = inputRect.bottom - wrapperRect.top;
this.$node.css('top', top + 'px');
var left = inputRect.left - wrapperRect.left;
this.$node.css('left', left + 'px');
this.eventBus.trigger('redrawn');
},
_onShown: function onShown() {
this.eventBus.trigger('shown');
if (this.autoselect) {
this.dropdown.cursorTopSuggestion();
}
},
_onClosed: function onClosed() {
this.input.clearHint();
this.input.removeActiveDescendant();
this.input.collapse();
this.eventBus.trigger('closed');
},
_onFocused: function onFocused() {
this.isActivated = true;
if (this.openOnFocus) {
var query = this.input.getQuery();
if (query.length >= this.minLength) {
this.dropdown.update(query);
} else {
this.dropdown.empty();
}
this.dropdown.open();
}
},
_onBlurred: function onBlurred() {
var cursorDatum;
var topSuggestionDatum;
cursorDatum = this.dropdown.getDatumForCursor();
topSuggestionDatum = this.dropdown.getDatumForTopSuggestion();
var context = { selectionMethod: 'blur' };
if (!this.debug) {
if (this.autoselectOnBlur && cursorDatum) {
this._select(cursorDatum, context);
} else if (this.autoselectOnBlur && topSuggestionDatum) {
this._select(topSuggestionDatum, context);
} else {
this.isActivated = false;
this.dropdown.empty();
this.dropdown.close();
}
}
},
_onEnterKeyed: function onEnterKeyed(type, $e) {
var cursorDatum;
var topSuggestionDatum;
cursorDatum = this.dropdown.getDatumForCursor();
topSuggestionDatum = this.dropdown.getDatumForTopSuggestion();
var context = { selectionMethod: 'enterKey' };
if (cursorDatum) {
this._select(cursorDatum, context);
$e.preventDefault();
} else if (this.autoselect && topSuggestionDatum) {
this._select(topSuggestionDatum, context);
$e.preventDefault();
}
},
_onTabKeyed: function onTabKeyed(type, $e) {
if (!this.tabAutocomplete) {
this.dropdown.close();
return;
}
var datum;
var context = { selectionMethod: 'tabKey' };
if ((datum = this.dropdown.getDatumForCursor())) {
this._select(datum, context);
$e.preventDefault();
} else {
this._autocomplete(true);
}
},
_onEscKeyed: function onEscKeyed() {
this.dropdown.close();
this.input.resetInputValue();
},
_onUpKeyed: function onUpKeyed() {
var query = this.input.getQuery();
if (this.dropdown.isEmpty && query.length >= this.minLength) {
this.dropdown.update(query);
} else {
this.dropdown.moveCursorUp();
}
this.dropdown.open();
},
_onDownKeyed: function onDownKeyed() {
var query = this.input.getQuery();
if (this.dropdown.isEmpty && query.length >= this.minLength) {
this.dropdown.update(query);
} else {
this.dropdown.moveCursorDown();
}
this.dropdown.open();
},
_onLeftKeyed: function onLeftKeyed() {
if (this.dir === 'rtl') {
this._autocomplete();
}
},
_onRightKeyed: function onRightKeyed() {
if (this.dir === 'ltr') {
this._autocomplete();
}
},
_onQueryChanged: function onQueryChanged(e, query) {
this.input.clearHintIfInvalid();
if (query.length >= this.minLength) {
this.dropdown.update(query);
} else {
this.dropdown.empty();
}
this.dropdown.open();
this._setLanguageDirection();
},
_onWhitespaceChanged: function onWhitespaceChanged() {
this._updateHint();
this.dropdown.open();
},
_setLanguageDirection: function setLanguageDirection() {
var dir = this.input.getLanguageDirection();
if (this.dir !== dir) {
this.dir = dir;
this.$node.css('direction', dir);
this.dropdown.setLanguageDirection(dir);
}
},
_updateHint: function updateHint() {
var datum;
var val;
var query;
var escapedQuery;
var frontMatchRegEx;
var match;
datum = this.dropdown.getDatumForTopSuggestion();
if (datum && this.dropdown.isVisible() && !this.input.hasOverflow()) {
val = this.input.getInputValue();
query = Input.normalizeQuery(val);
escapedQuery = _.escapeRegExChars(query);
frontMatchRegEx = new RegExp('^(?:' + escapedQuery + ')(.+$)', 'i');
match = frontMatchRegEx.exec(datum.value);
if (match) {
this.input.setHint(val + match[1]);
} else {
this.input.clearHint();
}
} else {
this.input.clearHint();
}
},
_autocomplete: function autocomplete(laxCursor) {
var hint;
var query;
var isCursorAtEnd;
var datum;
hint = this.input.getHint();
query = this.input.getQuery();
isCursorAtEnd = laxCursor || this.input.isCursorAtEnd();
if (hint && query !== hint && isCursorAtEnd) {
datum = this.dropdown.getDatumForTopSuggestion();
if (datum) {
this.input.setInputValue(datum.value);
}
this.eventBus.trigger('autocompleted', datum.raw, datum.datasetName);
}
},
_select: function select(datum, context) {
if (typeof datum.value !== 'undefined') {
this.input.setQuery(datum.value);
}
if (this.clearOnSelected) {
this.setVal('');
} else {
this.input.setInputValue(datum.value, true);
}
this._setLanguageDirection();
var event = this.eventBus.trigger('selected', datum.raw, datum.datasetName, context);
if (event.isDefaultPrevented() === false) {
this.dropdown.close();
_.defer(_.bind(this.dropdown.empty, this.dropdown));
}
},
open: function open() {
if (!this.isActivated) {
var query = this.input.getInputValue();
if (query.length >= this.minLength) {
this.dropdown.update(query);
} else {
this.dropdown.empty();
}
}
this.dropdown.open();
},
close: function close() {
this.dropdown.close();
},
setVal: function setVal(val) {
val = _.toStr(val);
if (this.isActivated) {
this.input.setInputValue(val);
} else {
this.input.setQuery(val);
this.input.setInputValue(val, true);
}
this._setLanguageDirection();
},
getVal: function getVal() {
return this.input.getQuery();
},
destroy: function destroy() {
this.input.destroy();
this.dropdown.destroy();
destroyDomStructure(this.$node, this.cssClasses);
this.$node = null;
},
getWrapper: function getWrapper() {
return this.dropdown.$container[0];
},
});
function buildDom(options) {
var $input;
var $wrapper;
var $dropdown;
var $hint;
$input = DOM.element(options.input);
$wrapper = DOM.element(html.wrapper.replace('%ROOT%', options.cssClasses.root)).css(
options.css.wrapper,
);
if (
!options.appendTo &&
$input.css('display') === 'block' &&
$input.parent().css('display') === 'table'
) {
$wrapper.css('display', 'table-cell');
}
var dropdownHtml = html.dropdown
.replace('%PREFIX%', options.cssClasses.prefix)
.replace('%DROPDOWN_MENU%', options.cssClasses.dropdownMenu);
$dropdown = DOM.element(dropdownHtml)
.css(options.css.dropdown)
.attr({ role: 'listbox', id: options.listboxId });
if (options.templates && options.templates.dropdownMenu) {
$dropdown.html(_.templatify(options.templates.dropdownMenu)());
}
$hint = $input.clone().css(options.css.hint).css(getBackgroundStyles($input));
$hint
.val('')
.addClass(_.className(options.cssClasses.prefix, options.cssClasses.hint, true))
.removeAttr('id name placeholder required')
.prop('readonly', true)
.attr({ 'aria-hidden': 'true', autocomplete: 'off', spellcheck: 'false', tabindex: -1 });
if ($hint.removeData) {
$hint.removeData();
}
$input.data(attrsKey, {
'aria-autocomplete': $input.attr('aria-autocomplete'),
'aria-expanded': $input.attr('aria-expanded'),
'aria-owns': $input.attr('aria-owns'),
autocomplete: $input.attr('autocomplete'),
dir: $input.attr('dir'),
role: $input.attr('role'),
spellcheck: $input.attr('spellcheck'),
style: $input.attr('style'),
type: $input.attr('type'),
});
$input
.addClass(_.className(options.cssClasses.prefix, options.cssClasses.input, true))
.attr({
autocomplete: 'off',
spellcheck: false,
role: 'combobox',
'aria-autocomplete':
options.datasets && options.datasets[0] && options.datasets[0].displayKey
? 'both'
: 'list',
'aria-expanded': 'false',
'aria-label': options.ariaLabel,
'aria-owns': options.listboxId,
})
.css(options.hint ? options.css.input : options.css.inputWithNoHint);
try {
if (!$input.attr('dir')) {
$input.attr('dir', 'auto');
}
} catch (e) {}
$wrapper = options.appendTo
? $wrapper.appendTo(DOM.element(options.appendTo).eq(0)).eq(0)
: $input.wrap($wrapper).parent();
$wrapper.prepend(options.hint ? $hint : null).append($dropdown);
return { wrapper: $wrapper, input: $input, hint: $hint, menu: $dropdown };
}
function getBackgroundStyles($el) {
return {
backgroundAttachment: $el.css('background-attachment'),
backgroundClip: $el.css('background-clip'),
backgroundColor: $el.css('background-color'),
backgroundImage: $el.css('background-image'),
backgroundOrigin: $el.css('background-origin'),
backgroundPosition: $el.css('background-position'),
backgroundRepeat: $el.css('background-repeat'),
backgroundSize: $el.css('background-size'),
};
}
function destroyDomStructure($node, cssClasses) {
var $input = $node.find(_.className(cssClasses.prefix, cssClasses.input));
_.each($input.data(attrsKey), function (val, key) {
if (val === undefined) {
$input.removeAttr(key);
} else {
$input.attr(key, val);
}
});
$input
.detach()
.removeClass(_.className(cssClasses.prefix, cssClasses.input, true))
.insertAfter($node);
if ($input.removeData) {
$input.removeData(attrsKey);
}
$node.remove();
}
Typeahead.Dropdown = Dropdown;
Typeahead.Input = Input;
Typeahead.sources = __webpack_require__(61);
module.exports = Typeahead;
},
function (module, exports, __webpack_require__) {
'use strict';
var specialKeyCodeMap;
specialKeyCodeMap = {
9: 'tab',
27: 'esc',
37: 'left',
39: 'right',
13: 'enter',
38: 'up',
40: 'down',
};
var _ = __webpack_require__(0);
var DOM = __webpack_require__(1);
var EventEmitter = __webpack_require__(10);
function Input(o) {
var that = this;
var onBlur;
var onFocus;
var onKeydown;
var onInput;
o = o || {};
if (!o.input) {
_.error('input is missing');
}
onBlur = _.bind(this._onBlur, this);
onFocus = _.bind(this._onFocus, this);
onKeydown = _.bind(this._onKeydown, this);
onInput = _.bind(this._onInput, this);
this.$hint = DOM.element(o.hint);
this.$input = DOM.element(o.input)
.on('blur.aa', onBlur)
.on('focus.aa', onFocus)
.on('keydown.aa', onKeydown);
if (this.$hint.length === 0) {
this.setHint = this.getHint = this.clearHint = this.clearHintIfInvalid = _.noop;
}
if (!_.isMsie()) {
this.$input.on('input.aa', onInput);
} else {
this.$input.on('keydown.aa keypress.aa cut.aa paste.aa', function ($e) {
if (specialKeyCodeMap[$e.which || $e.keyCode]) {
return;
}
_.defer(_.bind(that._onInput, that, $e));
});
}
this.query = this.$input.val();
this.$overflowHelper = buildOverflowHelper(this.$input);
}
Input.normalizeQuery = function (str) {
return (str || '').replace(/^\s*/g, '').replace(/\s{2,}/g, ' ');
};
_.mixin(Input.prototype, EventEmitter, {
_onBlur: function onBlur() {
this.resetInputValue();
this.$input.removeAttr('aria-activedescendant');
this.trigger('blurred');
},
_onFocus: function onFocus() {
this.trigger('focused');
},
_onKeydown: function onKeydown($e) {
var keyName = specialKeyCodeMap[$e.which || $e.keyCode];
this._managePreventDefault(keyName, $e);
if (keyName && this._shouldTrigger(keyName, $e)) {
this.trigger(keyName + 'Keyed', $e);
}
},
_onInput: function onInput() {
this._checkInputValue();
},
_managePreventDefault: function managePreventDefault(keyName, $e) {
var preventDefault;
var hintValue;
var inputValue;
switch (keyName) {
case 'tab':
hintValue = this.getHint();
inputValue = this.getInputValue();
preventDefault = hintValue && hintValue !== inputValue && !withModifier($e);
break;
case 'up':
case 'down':
preventDefault = !withModifier($e);
break;
default:
preventDefault = false;
}
if (preventDefault) {
$e.preventDefault();
}
},
_shouldTrigger: function shouldTrigger(keyName, $e) {
var trigger;
switch (keyName) {
case 'tab':
trigger = !withModifier($e);
break;
default:
trigger = true;
}
return trigger;
},
_checkInputValue: function checkInputValue() {
var inputValue;
var areEquivalent;
var hasDifferentWhitespace;
inputValue = this.getInputValue();
areEquivalent = areQueriesEquivalent(inputValue, this.query);
hasDifferentWhitespace =
areEquivalent && this.query ? this.query.length !== inputValue.length : false;
this.query = inputValue;
if (!areEquivalent) {
this.trigger('queryChanged', this.query);
} else if (hasDifferentWhitespace) {
this.trigger('whitespaceChanged', this.query);
}
},
focus: function focus() {
this.$input.focus();
},
blur: function blur() {
this.$input.blur();
},
getQuery: function getQuery() {
return this.query;
},
setQuery: function setQuery(query) {
this.query = query;
},
getInputValue: function getInputValue() {
return this.$input.val();
},
setInputValue: function setInputValue(value, silent) {
if (typeof value === 'undefined') {
value = this.query;
}
this.$input.val(value);
if (silent) {
this.clearHint();
} else {
this._checkInputValue();
}
},
expand: function expand() {
this.$input.attr('aria-expanded', 'true');
},
collapse: function collapse() {
this.$input.attr('aria-expanded', 'false');
},
setActiveDescendant: function setActiveDescendant(activedescendantId) {
this.$input.attr('aria-activedescendant', activedescendantId);
},
removeActiveDescendant: function removeActiveDescendant() {
this.$input.removeAttr('aria-activedescendant');
},
resetInputValue: function resetInputValue() {
this.setInputValue(this.query, true);
},
getHint: function getHint() {
return this.$hint.val();
},
setHint: function setHint(value) {
this.$hint.val(value);
},
clearHint: function clearHint() {
this.setHint('');
},
clearHintIfInvalid: function clearHintIfInvalid() {
var val;
var hint;
var valIsPrefixOfHint;
var isValid;
val = this.getInputValue();
hint = this.getHint();
valIsPrefixOfHint = val !== hint && hint.indexOf(val) === 0;
isValid = val !== '' && valIsPrefixOfHint && !this.hasOverflow();
if (!isValid) {
this.clearHint();
}
},
getLanguageDirection: function getLanguageDirection() {
return (this.$input.css('direction') || 'ltr').toLowerCase();
},
hasOverflow: function hasOverflow() {
var constraint = this.$input.width() - 2;
this.$overflowHelper.text(this.getInputValue());
return this.$overflowHelper.width() >= constraint;
},
isCursorAtEnd: function () {
var valueLength;
var selectionStart;
var range;
valueLength = this.$input.val().length;
selectionStart = this.$input[0].selectionStart;
if (_.isNumber(selectionStart)) {
return selectionStart === valueLength;
} else if (document.selection) {
range = document.selection.createRange();
range.moveStart('character', -valueLength);
return valueLength === range.text.length;
}
return true;
},
destroy: function destroy() {
this.$hint.off('.aa');
this.$input.off('.aa');
this.$hint = this.$input = this.$overflowHelper = null;
},
});
function buildOverflowHelper($input) {
return DOM.element('<pre aria-hidden="true"></pre>')
.css({
position: 'absolute',
visibility: 'hidden',
whiteSpace: 'pre',
fontFamily: $input.css('font-family'),
fontSize: $input.css('font-size'),
fontStyle: $input.css('font-style'),
fontVariant: $input.css('font-variant'),
fontWeight: $input.css('font-weight'),
wordSpacing: $input.css('word-spacing'),
letterSpacing: $input.css('letter-spacing'),
textIndent: $input.css('text-indent'),
textRendering: $input.css('text-rendering'),
textTransform: $input.css('text-transform'),
})
.insertAfter($input);
}
function areQueriesEquivalent(a, b) {
return Input.normalizeQuery(a) === Input.normalizeQuery(b);
}
function withModifier($e) {
return $e.altKey || $e.ctrlKey || $e.metaKey || $e.shiftKey;
}
module.exports = Input;
},
function (module, exports, __webpack_require__) {
'use strict';
var types = [
__webpack_require__(54),
__webpack_require__(55),
__webpack_require__(56),
__webpack_require__(57),
__webpack_require__(58),
];
var draining;
var currentQueue;
var queueIndex = -1;
var queue = [];
var scheduled = false;
function cleanUpNextTick() {
if (!draining || !currentQueue) {
return;
}
draining = false;
if (currentQueue.length) {
queue = currentQueue.concat(queue);
} else {
queueIndex = -1;
}
if (queue.length) {
nextTick();
}
}
function nextTick() {
if (draining) {
return;
}
scheduled = false;
draining = true;
var len = queue.length;
var timeout = setTimeout(cleanUpNextTick);
while (len) {
currentQueue = queue;
queue = [];
while (currentQueue && ++queueIndex < len) {
currentQueue[queueIndex].run();
}
queueIndex = -1;
len = queue.length;
}
currentQueue = null;
queueIndex = -1;
draining = false;
clearTimeout(timeout);
}
var scheduleDrain;
var i = -1;
var len = types.length;
while (++i < len) {
if (types[i] && types[i].test && types[i].test()) {
scheduleDrain = types[i].install(nextTick);
break;
}
}
function Item(fun, array) {
this.fun = fun;
this.array = array;
}
Item.prototype.run = function () {
var fun = this.fun;
var array = this.array;
switch (array.length) {
case 0:
return fun();
case 1:
return fun(array[0]);
case 2:
return fun(array[0], array[1]);
case 3:
return fun(array[0], array[1], array[2]);
default:
return fun.apply(null, array);
}
};
module.exports = immediate;
function immediate(task) {
var args = new Array(arguments.length - 1);
if (arguments.length > 1) {
for (var i = 1; i < arguments.length; i++) {
args[i - 1] = arguments[i];
}
}
queue.push(new Item(task, args));
if (!scheduled && !draining) {
scheduled = true;
scheduleDrain();
}
}
},
function (module, exports, __webpack_require__) {
'use strict';
(function (process) {
exports.test = function () {
return typeof process !== 'undefined' && !process.browser;
};
exports.install = function (func) {
return function () {
process.nextTick(func);
};
};
}).call(exports, __webpack_require__(9));
},
function (module, exports, __webpack_require__) {
'use strict';
(function (global) {
var Mutation = global.MutationObserver || global.WebKitMutationObserver;
exports.test = function () {
return Mutation;
};
exports.install = function (handle) {
var called = 0;
var observer = new Mutation(handle);
var element = global.document.createTextNode('');
observer.observe(element, { characterData: true });
return function () {
element.data = called = ++called % 2;
};
};
}).call(exports, __webpack_require__(4));
},
function (module, exports, __webpack_require__) {
'use strict';
(function (global) {
exports.test = function () {
if (global.setImmediate) {
return false;
}
return typeof global.MessageChannel !== 'undefined';
};
exports.install = function (func) {
var channel = new global.MessageChannel();
channel.port1.onmessage = func;
return function () {
channel.port2.postMessage(0);
};
};
}).call(exports, __webpack_require__(4));
},
function (module, exports, __webpack_require__) {
'use strict';
(function (global) {
exports.test = function () {
return (
'document' in global && 'onreadystatechange' in global.document.createElement('script')
);
};
exports.install = function (handle) {
return function () {
var scriptEl = global.document.createElement('script');
scriptEl.onreadystatechange = function () {
handle();
scriptEl.onreadystatechange = null;
scriptEl.parentNode.removeChild(scriptEl);
scriptEl = null;
};
global.document.documentElement.appendChild(scriptEl);
return handle;
};
};
}).call(exports, __webpack_require__(4));
},
function (module, exports, __webpack_require__) {
'use strict';
exports.test = function () {
return true;
};
exports.install = function (t) {
return function () {
setTimeout(t, 0);
};
};
},
function (module, exports, __webpack_require__) {
'use strict';
var _ = __webpack_require__(0);
var DOM = __webpack_require__(1);
var EventEmitter = __webpack_require__(10);
var Dataset = __webpack_require__(60);
var css = __webpack_require__(11);
function Dropdown(o) {
var that = this;
var onSuggestionClick;
var onSuggestionMouseEnter;
var onSuggestionMouseLeave;
o = o || {};
if (!o.menu) {
_.error('menu is required');
}
if (!_.isArray(o.datasets) && !_.isObject(o.datasets)) {
_.error('1 or more datasets required');
}
if (!o.datasets) {
_.error('datasets is required');
}
this.isOpen = false;
this.isEmpty = true;
this.minLength = o.minLength || 0;
this.templates = {};
this.appendTo = o.appendTo || false;
this.css = _.mixin({}, css, o.appendTo ? css.appendTo : {});
this.cssClasses = o.cssClasses = _.mixin({}, css.defaultClasses, o.cssClasses || {});
this.cssClasses.prefix =
o.cssClasses.formattedPrefix ||
_.formatPrefix(this.cssClasses.prefix, this.cssClasses.noPrefix);
onSuggestionClick = _.bind(this._onSuggestionClick, this);
onSuggestionMouseEnter = _.bind(this._onSuggestionMouseEnter, this);
onSuggestionMouseLeave = _.bind(this._onSuggestionMouseLeave, this);
var cssClass = _.className(this.cssClasses.prefix, this.cssClasses.suggestion);
this.$menu = DOM.element(o.menu)
.on('mouseenter.aa', cssClass, onSuggestionMouseEnter)
.on('mouseleave.aa', cssClass, onSuggestionMouseLeave)
.on('click.aa', cssClass, onSuggestionClick);
this.$container = o.appendTo ? o.wrapper : this.$menu;
if (o.templates && o.templates.header) {
this.templates.header = _.templatify(o.templates.header);
this.$menu.prepend(this.templates.header());
}
if (o.templates && o.templates.empty) {
this.templates.empty = _.templatify(o.templates.empty);
this.$empty = DOM.element(
'<div class="' +
_.className(this.cssClasses.prefix, this.cssClasses.empty, true) +
'">' +
'</div>',
);
this.$menu.append(this.$empty);
this.$empty.hide();
}
this.datasets = _.map(o.datasets, function (oDataset) {
return initializeDataset(that.$menu, oDataset, o.cssClasses);
});
_.each(this.datasets, function (dataset) {
var root = dataset.getRoot();
if (root && root.parent().length === 0) {
that.$menu.append(root);
}
dataset.onSync('rendered', that._onRendered, that);
});
if (o.templates && o.templates.footer) {
this.templates.footer = _.templatify(o.templates.footer);
this.$menu.append(this.templates.footer());
}
var self = this;
DOM.element(window).resize(function () {
self._redraw();
});
}
_.mixin(Dropdown.prototype, EventEmitter, {
_onSuggestionClick: function onSuggestionClick($e) {
this.trigger('suggestionClicked', DOM.element($e.currentTarget));
},
_onSuggestionMouseEnter: function onSuggestionMouseEnter($e) {
var elt = DOM.element($e.currentTarget);
if (elt.hasClass(_.className(this.cssClasses.prefix, this.cssClasses.cursor, true))) {
return;
}
this._removeCursor();
var suggestion = this;
setTimeout(function () {
suggestion._setCursor(elt, false);
}, 0);
},
_onSuggestionMouseLeave: function onSuggestionMouseLeave($e) {
if ($e.relatedTarget) {
var elt = DOM.element($e.relatedTarget);
if (
elt.closest('.' + _.className(this.cssClasses.prefix, this.cssClasses.cursor, true))
.length > 0
) {
return;
}
}
this._removeCursor();
this.trigger('cursorRemoved');
},
_onRendered: function onRendered(e, query) {
this.isEmpty = _.every(this.datasets, isDatasetEmpty);
if (this.isEmpty) {
if (query.length >= this.minLength) {
this.trigger('empty');
}
if (this.$empty) {
if (query.length < this.minLength) {
this._hide();
} else {
var html = this.templates.empty({
query: this.datasets[0] && this.datasets[0].query,
});
this.$empty.html(html);
this.$empty.show();
this._show();
}
} else if (_.any(this.datasets, hasEmptyTemplate)) {
if (query.length < this.minLength) {
this._hide();
} else {
this._show();
}
} else {
this._hide();
}
} else if (this.isOpen) {
if (this.$empty) {
this.$empty.empty();
this.$empty.hide();
}
if (query.length >= this.minLength) {
this._show();
} else {
this._hide();
}
}
this.trigger('datasetRendered');
function isDatasetEmpty(dataset) {
return dataset.isEmpty();
}
function hasEmptyTemplate(dataset) {
return dataset.templates && dataset.templates.empty;
}
},
_hide: function () {
this.$container.hide();
},
_show: function () {
this.$container.css('display', 'block');
this._redraw();
this.trigger('shown');
},
_redraw: function redraw() {
if (!this.isOpen || !this.appendTo) return;
this.trigger('redrawn');
},
_getSuggestions: function getSuggestions() {
return this.$menu.find(_.className(this.cssClasses.prefix, this.cssClasses.suggestion));
},
_getCursor: function getCursor() {
return this.$menu
.find(_.className(this.cssClasses.prefix, this.cssClasses.cursor))
.first();
},
_setCursor: function setCursor($el, updateInput) {
$el
.first()
.addClass(_.className(this.cssClasses.prefix, this.cssClasses.cursor, true))
.attr('aria-selected', 'true');
this.trigger('cursorMoved', updateInput);
},
_removeCursor: function removeCursor() {
this._getCursor()
.removeClass(_.className(this.cssClasses.prefix, this.cssClasses.cursor, true))
.removeAttr('aria-selected');
},
_moveCursor: function moveCursor(increment) {
var $suggestions;
var $oldCursor;
var newCursorIndex;
var $newCursor;
if (!this.isOpen) {
return;
}
$oldCursor = this._getCursor();
$suggestions = this._getSuggestions();
this._removeCursor();
newCursorIndex = $suggestions.index($oldCursor) + increment;
newCursorIndex = ((newCursorIndex + 1) % ($suggestions.length + 1)) - 1;
if (newCursorIndex === -1) {
this.trigger('cursorRemoved');
return;
} else if (newCursorIndex < -1) {
newCursorIndex = $suggestions.length - 1;
}
this._setCursor(($newCursor = $suggestions.eq(newCursorIndex)), true);
this._ensureVisible($newCursor);
},
_ensureVisible: function ensureVisible($el) {
var elTop;
var elBottom;
var menuScrollTop;
var menuHeight;
elTop = $el.position().top;
elBottom =
elTop +
$el.height() +
parseInt($el.css('margin-top'), 10) +
parseInt($el.css('margin-bottom'), 10);
menuScrollTop = this.$menu.scrollTop();
menuHeight =
this.$menu.height() +
parseInt(this.$menu.css('padding-top'), 10) +
parseInt(this.$menu.css('padding-bottom'), 10);
if (elTop < 0) {
this.$menu.scrollTop(menuScrollTop + elTop);
} else if (menuHeight < elBottom) {
this.$menu.scrollTop(menuScrollTop + (elBottom - menuHeight));
}
},
close: function close() {
if (this.isOpen) {
this.isOpen = false;
this._removeCursor();
this._hide();
this.trigger('closed');
}
},
open: function open() {
if (!this.isOpen) {
this.isOpen = true;
if (!this.isEmpty) {
this._show();
}
this.trigger('opened');
}
},
setLanguageDirection: function setLanguageDirection(dir) {
this.$menu.css(dir === 'ltr' ? this.css.ltr : this.css.rtl);
},
moveCursorUp: function moveCursorUp() {
this._moveCursor(-1);
},
moveCursorDown: function moveCursorDown() {
this._moveCursor(+1);
},
getDatumForSuggestion: function getDatumForSuggestion($el) {
var datum = null;
if ($el.length) {
datum = {
raw: Dataset.extractDatum($el),
value: Dataset.extractValue($el),
datasetName: Dataset.extractDatasetName($el),
};
}
return datum;
},
getCurrentCursor: function getCurrentCursor() {
return this._getCursor().first();
},
getDatumForCursor: function getDatumForCursor() {
return this.getDatumForSuggestion(this._getCursor().first());
},
getDatumForTopSuggestion: function getDatumForTopSuggestion() {
return this.getDatumForSuggestion(this._getSuggestions().first());
},
cursorTopSuggestion: function cursorTopSuggestion() {
this._setCursor(this._getSuggestions().first(), false);
},
update: function update(query) {
_.each(this.datasets, updateDataset);
function updateDataset(dataset) {
dataset.update(query);
}
},
empty: function empty() {
_.each(this.datasets, clearDataset);
this.isEmpty = true;
function clearDataset(dataset) {
dataset.clear();
}
},
isVisible: function isVisible() {
return this.isOpen && !this.isEmpty;
},
destroy: function destroy() {
this.$menu.off('.aa');
this.$menu = null;
_.each(this.datasets, destroyDataset);
function destroyDataset(dataset) {
dataset.destroy();
}
},
});
Dropdown.Dataset = Dataset;
function initializeDataset($menu, oDataset, cssClasses) {
return new Dropdown.Dataset(_.mixin({ $menu: $menu, cssClasses: cssClasses }, oDataset));
}
module.exports = Dropdown;
},
function (module, exports, __webpack_require__) {
'use strict';
var datasetKey = 'aaDataset';
var valueKey = 'aaValue';
var datumKey = 'aaDatum';
var _ = __webpack_require__(0);
var DOM = __webpack_require__(1);
var html = __webpack_require__(17);
var css = __webpack_require__(11);
var EventEmitter = __webpack_require__(10);
function Dataset(o) {
o = o || {};
o.templates = o.templates || {};
if (!o.source) {
_.error('missing source');
}
if (o.name && !isValidName(o.name)) {
_.error('invalid dataset name: ' + o.name);
}
this.query = null;
this._isEmpty = true;
this.highlight = !!o.highlight;
this.name = typeof o.name === 'undefined' || o.name === null ? _.getUniqueId() : o.name;
this.source = o.source;
this.displayFn = getDisplayFn(o.display || o.displayKey);
this.debounce = o.debounce;
this.cache = o.cache !== false;
this.templates = getTemplates(o.templates, this.displayFn);
this.css = _.mixin({}, css, o.appendTo ? css.appendTo : {});
this.cssClasses = o.cssClasses = _.mixin({}, css.defaultClasses, o.cssClasses || {});
this.cssClasses.prefix =
o.cssClasses.formattedPrefix ||
_.formatPrefix(this.cssClasses.prefix, this.cssClasses.noPrefix);
var clazz = _.className(this.cssClasses.prefix, this.cssClasses.dataset);
this.$el =
o.$menu && o.$menu.find(clazz + '-' + this.name).length > 0
? DOM.element(o.$menu.find(clazz + '-' + this.name)[0])
: DOM.element(
html.dataset
.replace('%CLASS%', this.name)
.replace('%PREFIX%', this.cssClasses.prefix)
.replace('%DATASET%', this.cssClasses.dataset),
);
this.$menu = o.$menu;
this.clearCachedSuggestions();
}
Dataset.extractDatasetName = function extractDatasetName(el) {
return DOM.element(el).data(datasetKey);
};
Dataset.extractValue = function extractValue(el) {
return DOM.element(el).data(valueKey);
};
Dataset.extractDatum = function extractDatum(el) {
var datum = DOM.element(el).data(datumKey);
if (typeof datum === 'string') {
datum = JSON.parse(datum);
}
return datum;
};
_.mixin(Dataset.prototype, EventEmitter, {
_render: function render(query, suggestions) {
if (!this.$el) {
return;
}
var that = this;
var hasSuggestions;
var renderArgs = [].slice.call(arguments, 2);
this.$el.empty();
hasSuggestions = suggestions && suggestions.length;
this._isEmpty = !hasSuggestions;
if (!hasSuggestions && this.templates.empty) {
this.$el
.html(getEmptyHtml.apply(this, renderArgs))
.prepend(that.templates.header ? getHeaderHtml.apply(this, renderArgs) : null)
.append(that.templates.footer ? getFooterHtml.apply(this, renderArgs) : null);
} else if (hasSuggestions) {
this.$el
.html(getSuggestionsHtml.apply(this, renderArgs))
.prepend(that.templates.header ? getHeaderHtml.apply(this, renderArgs) : null)
.append(that.templates.footer ? getFooterHtml.apply(this, renderArgs) : null);
} else if (suggestions && !Array.isArray(suggestions)) {
throw new TypeError('suggestions must be an array');
}
if (this.$menu) {
this.$menu
.addClass(
this.cssClasses.prefix + (hasSuggestions ? 'with' : 'without') + '-' + this.name,
)
.removeClass(
this.cssClasses.prefix + (hasSuggestions ? 'without' : 'with') + '-' + this.name,
);
}
this.trigger('rendered', query);
function getEmptyHtml() {
var args = [].slice.call(arguments, 0);
args = [{ query: query, isEmpty: true }].concat(args);
return that.templates.empty.apply(this, args);
}
function getSuggestionsHtml() {
var args = [].slice.call(arguments, 0);
var $suggestions;
var nodes;
var self = this;
var suggestionsHtml = html.suggestions
.replace('%PREFIX%', this.cssClasses.prefix)
.replace('%SUGGESTIONS%', this.cssClasses.suggestions);
$suggestions = DOM.element(suggestionsHtml).css(this.css.suggestions);
nodes = _.map(suggestions, getSuggestionNode);
$suggestions.append.apply($suggestions, nodes);
return $suggestions;
function getSuggestionNode(suggestion) {
var $el;
var suggestionHtml = html.suggestion
.replace('%PREFIX%', self.cssClasses.prefix)
.replace('%SUGGESTION%', self.cssClasses.suggestion);
$el = DOM.element(suggestionHtml)
.attr({ role: 'option', id: ['option', Math.floor(Math.random() * 1e8)].join('-') })
.append(that.templates.suggestion.apply(this, [suggestion].concat(args)));
$el.data(datasetKey, that.name);
$el.data(valueKey, that.displayFn(suggestion) || undefined);
$el.data(datumKey, JSON.stringify(suggestion));
$el.children().each(function () {
DOM.element(this).css(self.css.suggestionChild);
});
return $el;
}
}
function getHeaderHtml() {
var args = [].slice.call(arguments, 0);
args = [{ query: query, isEmpty: !hasSuggestions }].concat(args);
return that.templates.header.apply(this, args);
}
function getFooterHtml() {
var args = [].slice.call(arguments, 0);
args = [{ query: query, isEmpty: !hasSuggestions }].concat(args);
return that.templates.footer.apply(this, args);
}
},
getRoot: function getRoot() {
return this.$el;
},
update: function update(query) {
function handleSuggestions(suggestions) {
if (!this.canceled && query === this.query) {
var extraArgs = [].slice.call(arguments, 1);
this.cacheSuggestions(query, suggestions, extraArgs);
this._render.apply(this, [query, suggestions].concat(extraArgs));
}
}
this.query = query;
this.canceled = false;
if (this.shouldFetchFromCache(query)) {
handleSuggestions.apply(
this,
[this.cachedSuggestions].concat(this.cachedRenderExtraArgs),
);
} else {
var that = this;
var execSource = function () {
if (!that.canceled) {
that.source(query, handleSuggestions.bind(that));
}
};
if (this.debounce) {
var later = function () {
that.debounceTimeout = null;
execSource();
};
clearTimeout(this.debounceTimeout);
this.debounceTimeout = setTimeout(later, this.debounce);
} else {
execSource();
}
}
},
cacheSuggestions: function cacheSuggestions(query, suggestions, extraArgs) {
this.cachedQuery = query;
this.cachedSuggestions = suggestions;
this.cachedRenderExtraArgs = extraArgs;
},
shouldFetchFromCache: function shouldFetchFromCache(query) {
return (
this.cache &&
this.cachedQuery === query &&
this.cachedSuggestions &&
this.cachedSuggestions.length
);
},
clearCachedSuggestions: function clearCachedSuggestions() {
delete this.cachedQuery;
delete this.cachedSuggestions;
delete this.cachedRenderExtraArgs;
},
cancel: function cancel() {
this.canceled = true;
},
clear: function clear() {
this.cancel();
this.$el.empty();
this.trigger('rendered', '');
},
isEmpty: function isEmpty() {
return this._isEmpty;
},
destroy: function destroy() {
this.clearCachedSuggestions();
this.$el = null;
},
});
function getDisplayFn(display) {
display = display || 'value';
return _.isFunction(display) ? display : displayFn;
function displayFn(obj) {
return obj[display];
}
}
function getTemplates(templates, displayFn) {
return {
empty: templates.empty && _.templatify(templates.empty),
header: templates.header && _.templatify(templates.header),
footer: templates.footer && _.templatify(templates.footer),
suggestion: templates.suggestion || suggestionTemplate,
};
function suggestionTemplate(context) {
return '<p>' + displayFn(context) + '</p>';
}
}
function isValidName(str) {
return /^[_a-zA-Z0-9-]+$/.test(str);
}
module.exports = Dataset;
},
function (module, exports, __webpack_require__) {
'use strict';
module.exports = { hits: __webpack_require__(62), popularIn: __webpack_require__(63) };
},
function (module, exports, __webpack_require__) {
'use strict';
var _ = __webpack_require__(0);
var version = __webpack_require__(18);
var parseAlgoliaClientVersion = __webpack_require__(19);
module.exports = function search(index, params) {
var algoliaVersion = parseAlgoliaClientVersion(index.as._ua);
if (algoliaVersion && algoliaVersion[0] >= 3 && algoliaVersion[1] > 20) {
params = params || {};
params.additionalUA = 'autocomplete.js ' + version;
}
return sourceFn;
function sourceFn(query, cb) {
index.search(query, params, function (error, content) {
if (error) {
_.error(error.message);
return;
}
cb(content.hits, content);
});
}
};
},
function (module, exports, __webpack_require__) {
'use strict';
var _ = __webpack_require__(0);
var version = __webpack_require__(18);
var parseAlgoliaClientVersion = __webpack_require__(19);
module.exports = function popularIn(index, params, details, options) {
var algoliaVersion = parseAlgoliaClientVersion(index.as._ua);
if (algoliaVersion && algoliaVersion[0] >= 3 && algoliaVersion[1] > 20) {
params = params || {};
params.additionalUA = 'autocomplete.js ' + version;
}
if (!details.source) {
return _.error("Missing 'source' key");
}
var source = _.isFunction(details.source)
? details.source
: function (hit) {
return hit[details.source];
};
if (!details.index) {
return _.error("Missing 'index' key");
}
var detailsIndex = details.index;
options = options || {};
return sourceFn;
function sourceFn(query, cb) {
index.search(query, params, function (error, content) {
if (error) {
_.error(error.message);
return;
}
if (content.hits.length > 0) {
var first = content.hits[0];
var detailsParams = _.mixin({ hitsPerPage: 0 }, details);
delete detailsParams.source;
delete detailsParams.index;
var detailsAlgoliaVersion = parseAlgoliaClientVersion(detailsIndex.as._ua);
if (
detailsAlgoliaVersion &&
detailsAlgoliaVersion[0] >= 3 &&
detailsAlgoliaVersion[1] > 20
) {
params.additionalUA = 'autocomplete.js ' + version;
}
detailsIndex.search(source(first), detailsParams, function (error2, content2) {
if (error2) {
_.error(error2.message);
return;
}
var suggestions = [];
if (options.includeAll) {
var label = options.allTitle || 'All departments';
suggestions.push(
_.mixin(
{ facet: { value: label, count: content2.nbHits } },
_.cloneDeep(first),
),
);
}
_.each(content2.facets, function (values, facet) {
_.each(values, function (count, value) {
suggestions.push(
_.mixin(
{ facet: { facet: facet, value: value, count: count } },
_.cloneDeep(first),
),
);
});
});
for (var i = 1; i < content.hits.length; ++i) {
suggestions.push(content.hits[i]);
}
cb(suggestions, content);
});
return;
}
cb([]);
});
}
};
},
function (module, exports, __webpack_require__) {
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
var prefix = 'algolia-docsearch';
var suggestionPrefix = prefix + '-suggestion';
var footerPrefix = prefix + '-footer';
var templates = {
suggestion:
'\n <a class="' +
suggestionPrefix +
'\n {{#isCategoryHeader}}' +
suggestionPrefix +
'__main{{/isCategoryHeader}}\n {{#isSubCategoryHeader}}' +
suggestionPrefix +
'__secondary{{/isSubCategoryHeader}}\n "\n aria-label="Link to the result"\n href="{{{url}}}"\n >\n <div class="' +
suggestionPrefix +
'--category-header">\n <span class="' +
suggestionPrefix +
'--category-header-lvl0">{{{category}}}</span>\n </div>\n <div class="' +
suggestionPrefix +
'--wrapper">\n <div class="' +
suggestionPrefix +
'--subcategory-column">\n <span class="' +
suggestionPrefix +
'--subcategory-column-text">{{{subcategory}}}</span>\n </div>\n {{#isTextOrSubcategoryNonEmpty}}\n <div class="' +
suggestionPrefix +
'--content">\n <div class="' +
suggestionPrefix +
'--subcategory-inline">{{{subcategory}}}</div>\n <div class="' +
suggestionPrefix +
'--title">{{{title}}}</div>\n {{#text}}<div class="' +
suggestionPrefix +
'--text">{{{text}}}</div>{{/text}}\n </div>\n {{/isTextOrSubcategoryNonEmpty}}\n </div>\n </a>\n ',
suggestionSimple:
'\n <div class="' +
suggestionPrefix +
'\n {{#isCategoryHeader}}' +
suggestionPrefix +
'__main{{/isCategoryHeader}}\n {{#isSubCategoryHeader}}' +
suggestionPrefix +
'__secondary{{/isSubCategoryHeader}}\n suggestion-layout-simple\n ">\n <div class="' +
suggestionPrefix +
'--category-header">\n {{^isLvl0}}\n <span class="' +
suggestionPrefix +
'--category-header-lvl0 ' +
suggestionPrefix +
'--category-header-item">{{{category}}}</span>\n {{^isLvl1}}\n {{^isLvl1EmptyOrDuplicate}}\n <span class="' +
suggestionPrefix +
'--category-header-lvl1 ' +
suggestionPrefix +
'--category-header-item">\n {{{subcategory}}}\n </span>\n {{/isLvl1EmptyOrDuplicate}}\n {{/isLvl1}}\n {{/isLvl0}}\n <div class="' +
suggestionPrefix +
'--title ' +
suggestionPrefix +
'--category-header-item">\n {{#isLvl2}}\n {{{title}}}\n {{/isLvl2}}\n {{#isLvl1}}\n {{{subcategory}}}\n {{/isLvl1}}\n {{#isLvl0}}\n {{{category}}}\n {{/isLvl0}}\n </div>\n </div>\n <div class="' +
suggestionPrefix +
'--wrapper">\n {{#text}}\n <div class="' +
suggestionPrefix +
'--content">\n <div class="' +
suggestionPrefix +
'--text">{{{text}}}</div>\n </div>\n {{/text}}\n </div>\n </div>\n ',
footer:
'\n <div class="' +
footerPrefix +
'">\n Search by <a class="' +
footerPrefix +
'--logo" href="https://www.algolia.com/docsearch">Algolia</a>\n </div>\n ',
empty:
'\n <div class="' +
suggestionPrefix +
'">\n <div class="' +
suggestionPrefix +
'--wrapper">\n <div class="' +
suggestionPrefix +
'--content ' +
suggestionPrefix +
'--no-results">\n <div class="' +
suggestionPrefix +
'--title">\n <div class="' +
suggestionPrefix +
'--text">\n No results found for query <b>"{{query}}"</b>\n </div>\n </div>\n </div>\n </div>\n </div>\n ',
searchBox:
'\n <form novalidate="novalidate" onsubmit="return false;" class="searchbox">\n <div role="search" class="searchbox__wrapper">\n <input id="docsearch" type="search" name="search" placeholder="Search the docs" autocomplete="off" required="required" class="searchbox__input"/>\n <button type="submit" title="Submit your search query." class="searchbox__submit" >\n <svg width=12 height=12 role="img" aria-label="Search">\n <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#sbx-icon-search-13"></use>\n </svg>\n </button>\n <button type="reset" title="Clear the search query." class="searchbox__reset hide">\n <svg width=12 height=12 role="img" aria-label="Reset">\n <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#sbx-icon-clear-3"></use>\n </svg>\n </button>\n </div>\n</form>\n\n<div class="svg-icons" style="height: 0; width: 0; position: absolute; visibility: hidden">\n <svg xmlns="http://www.w3.org/2000/svg">\n <symbol id="sbx-icon-clear-3" viewBox="0 0 40 40"><path d="M16.228 20L1.886 5.657 0 3.772 3.772 0l1.885 1.886L20 16.228 34.343 1.886 36.228 0 40 3.772l-1.886 1.885L23.772 20l14.342 14.343L40 36.228 36.228 40l-1.885-1.886L20 23.772 5.657 38.114 3.772 40 0 36.228l1.886-1.885L16.228 20z" fill-rule="evenodd"></symbol>\n <symbol id="sbx-icon-search-13" viewBox="0 0 40 40"><path d="M26.806 29.012a16.312 16.312 0 0 1-10.427 3.746C7.332 32.758 0 25.425 0 16.378 0 7.334 7.333 0 16.38 0c9.045 0 16.378 7.333 16.378 16.38 0 3.96-1.406 7.593-3.746 10.426L39.547 37.34c.607.608.61 1.59-.004 2.203a1.56 1.56 0 0 1-2.202.004L26.807 29.012zm-10.427.627c7.322 0 13.26-5.938 13.26-13.26 0-7.324-5.938-13.26-13.26-13.26-7.324 0-13.26 5.936-13.26 13.26 0 7.322 5.936 13.26 13.26 13.26z" fill-rule="evenodd"></symbol>\n </svg>\n</div>\n ',
};
exports.default = templates;
},
function (module, exports, __webpack_require__) {
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
var _typeof =
typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol'
? function (obj) {
return typeof obj;
}
: function (obj) {
return obj &&
typeof Symbol === 'function' &&
obj.constructor === Symbol &&
obj !== Symbol.prototype
? 'symbol'
: typeof obj;
};
var _zepto = __webpack_require__(20);
var _zepto2 = _interopRequireDefault(_zepto);
function _interopRequireDefault(obj) {
return obj && obj.__esModule ? obj : { default: obj };
}
var utils = {
mergeKeyWithParent: function mergeKeyWithParent(object, property) {
if (object[property] === undefined) {
return object;
}
if (_typeof(object[property]) !== 'object') {
return object;
}
var newObject = _zepto2.default.extend({}, object, object[property]);
delete newObject[property];
return newObject;
},
groupBy: function groupBy(collection, property) {
var newCollection = {};
_zepto2.default.each(collection, function (index, item) {
if (item[property] === undefined) {
throw new Error('[groupBy]: Object has no key ' + property);
}
var key = item[property];
if (typeof key === 'string') {
key = key.toLowerCase();
}
if (!Object.prototype.hasOwnProperty.call(newCollection, key)) {
newCollection[key] = [];
}
newCollection[key].push(item);
});
return newCollection;
},
values: function values(object) {
return Object.keys(object).map(function (key) {
return object[key];
});
},
flatten: function flatten(array) {
var results = [];
array.forEach(function (value) {
if (!Array.isArray(value)) {
results.push(value);
return;
}
value.forEach(function (subvalue) {
results.push(subvalue);
});
});
return results;
},
flattenAndFlagFirst: function flattenAndFlagFirst(object, flag) {
var values = this.values(object).map(function (collection) {
return collection.map(function (item, index) {
item[flag] = index === 0;
return item;
});
});
return this.flatten(values);
},
compact: function compact(array) {
var results = [];
array.forEach(function (value) {
if (!value) {
return;
}
results.push(value);
});
return results;
},
getHighlightedValue: function getHighlightedValue(object, property) {
if (
object._highlightResult &&
object._highlightResult.hierarchy_camel &&
object._highlightResult.hierarchy_camel[property] &&
object._highlightResult.hierarchy_camel[property].matchLevel &&
object._highlightResult.hierarchy_camel[property].matchLevel !== 'none' &&
object._highlightResult.hierarchy_camel[property].value
) {
return object._highlightResult.hierarchy_camel[property].value;
}
if (
object._highlightResult &&
object._highlightResult &&
object._highlightResult[property] &&
object._highlightResult[property].value
) {
return object._highlightResult[property].value;
}
return object[property];
},
getSnippetedValue: function getSnippetedValue(object, property) {
if (
!object._snippetResult ||
!object._snippetResult[property] ||
!object._snippetResult[property].value
) {
return object[property];
}
var snippet = object._snippetResult[property].value;
if (snippet[0] !== snippet[0].toUpperCase()) {
snippet = 'éˆĨ<>' + snippet;
}
if (['.', '!', '?'].indexOf(snippet[snippet.length - 1]) === -1) {
snippet = snippet + 'éˆĨ<>';
}
return snippet;
},
deepClone: function deepClone(object) {
return JSON.parse(JSON.stringify(object));
},
};
exports.default = utils;
},
]);
});