yannstatic/static/2019/12/23/Blog-statique-jekyll-Yunohost-cinay.xyz.html

6218 lines
1022 KiB
HTML
Raw Normal View History

2024-10-31 20:18:37 +01:00
<!DOCTYPE html><html lang="fr">
<head><meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no"><title>Blog statique de type jekyll sur site cinay.xyz - YannStatic</title>
<meta name="description" content="Blog statique de type jekyll">
<link rel="canonical" href="https://static.rnmkcy.eu/2019/12/23/Blog-statique-jekyll-Yunohost-cinay.xyz.html"><link rel="alternate" type="application/rss+xml" title="YannStatic" href="/feed.xml">
<!-- - include head/favicon.html - -->
<link rel="shortcut icon" type="image/png" href="/assets/favicon/favicon.png"><link rel="stylesheet" href="/assets/css/main.css"><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.0.13/css/all.css" ><!-- start custom head snippets --><link rel="stylesheet" href="/assets/css/expand.css">
<!-- end custom head snippets --><script>(function() {
window.isArray = function(val) {
return Object.prototype.toString.call(val) === '[object Array]';
};
window.isString = function(val) {
return typeof val === 'string';
};
window.hasEvent = function(event) {
return 'on'.concat(event) in window.document;
};
window.isOverallScroller = function(node) {
return node === document.documentElement || node === document.body || node === window;
};
window.isFormElement = function(node) {
var tagName = node.tagName;
return tagName === 'INPUT' || tagName === 'SELECT' || tagName === 'TEXTAREA';
};
window.pageLoad = (function () {
var loaded = false, cbs = [];
window.addEventListener('load', function () {
var i;
loaded = true;
if (cbs.length > 0) {
for (i = 0; i < cbs.length; i++) {
cbs[i]();
}
}
});
return {
then: function(cb) {
cb && (loaded ? cb() : (cbs.push(cb)));
}
};
})();
})();
(function() {
window.throttle = function(func, wait) {
var args, result, thisArg, timeoutId, lastCalled = 0;
function trailingCall() {
lastCalled = new Date;
timeoutId = null;
result = func.apply(thisArg, args);
}
return function() {
var now = new Date,
remaining = wait - (now - lastCalled);
args = arguments;
thisArg = this;
if (remaining <= 0) {
clearTimeout(timeoutId);
timeoutId = null;
lastCalled = now;
result = func.apply(thisArg, args);
} else if (!timeoutId) {
timeoutId = setTimeout(trailingCall, remaining);
}
return result;
};
};
})();
(function() {
var Set = (function() {
var add = function(item) {
var i, data = this._data;
for (i = 0; i < data.length; i++) {
if (data[i] === item) {
return;
}
}
this.size ++;
data.push(item);
return data;
};
var Set = function(data) {
this.size = 0;
this._data = [];
var i;
if (data.length > 0) {
for (i = 0; i < data.length; i++) {
add.call(this, data[i]);
}
}
};
Set.prototype.add = add;
Set.prototype.get = function(index) { return this._data[index]; };
Set.prototype.has = function(item) {
var i, data = this._data;
for (i = 0; i < data.length; i++) {
if (this.get(i) === item) {
return true;
}
}
return false;
};
Set.prototype.is = function(map) {
if (map._data.length !== this._data.length) { return false; }
var i, j, flag, tData = this._data, mData = map._data;
for (i = 0; i < tData.length; i++) {
for (flag = false, j = 0; j < mData.length; j++) {
if (tData[i] === mData[j]) {
flag = true;
break;
}
}
if (!flag) { return false; }
}
return true;
};
Set.prototype.values = function() {
return this._data;
};
return Set;
})();
window.Lazyload = (function(doc) {
var queue = {js: [], css: []}, sources = {js: {}, css: {}}, context = this;
var createNode = function(name, attrs) {
var node = doc.createElement(name), attr;
for (attr in attrs) {
if (attrs.hasOwnProperty(attr)) {
node.setAttribute(attr, attrs[attr]);
}
}
return node;
};
var end = function(type, url) {
var s, q, qi, cbs, i, j, cur, val, flag;
if (type === 'js' || type ==='css') {
s = sources[type], q = queue[type];
s[url] = true;
for (i = 0; i < q.length; i++) {
cur = q[i];
if (cur.urls.has(url)) {
qi = cur, val = qi.urls.values();
qi && (cbs = qi.callbacks);
for (flag = true, j = 0; j < val.length; j++) {
cur = val[j];
if (!s[cur]) {
flag = false;
}
}
if (flag && cbs && cbs.length > 0) {
for (j = 0; j < cbs.length; j++) {
cbs[j].call(context);
}
qi.load = true;
}
}
}
}
};
var load = function(type, urls, callback) {
var s, q, qi, node, i, cur,
_urls = typeof urls === 'string' ? new Set([urls]) : new Set(urls), val, url;
if (type === 'js' || type ==='css') {
s = sources[type], q = queue[type];
for (i = 0; i < q.length; i++) {
cur = q[i];
if (_urls.is(cur.urls)) {
qi = cur;
break;
}
}
val = _urls.values();
if (qi) {
callback && (qi.load || qi.callbacks.push(callback));
callback && (qi.load && callback());
} else {
q.push({
urls: _urls,
callbacks: callback ? [callback] : [],
load: false
});
for (i = 0; i < val.length; i++) {
node = null, url = val[i];
if (s[url] === undefined) {
(type === 'js' ) && (node = createNode('script', { src: url }));
(type === 'css') && (node = createNode('link', { rel: 'stylesheet', href: url }));
if (node) {
node.onload = (function(type, url) {
return function() {
end(type, url);
};
})(type, url);
(doc.head || doc.body).appendChild(node);
s[url] = false;
}
}
}
}
}
};
return {
js: function(url, callback) {
load('js', url, callback);
},
css: function(url, callback) {
load('css', url, callback);
}
};
})(this.document);
})();
</script><script>
(function() {
var TEXT_VARIABLES = {
version: '2.2.6',
sources: {
font_awesome: 'https://use.fontawesome.com/releases/v5.0.13/css/all.css',
jquery: '/assets/js/jquery.min.js',
leancloud_js_sdk: '//cdn.jsdelivr.net/npm/leancloud-storage@3.13.2/dist/av-min.js',
chart: 'https://cdn.bootcss.com/Chart.js/2.7.2/Chart.bundle.min.js',
gitalk: {
js: 'https://cdn.bootcss.com/gitalk/1.2.2/gitalk.min.js',
css: 'https://cdn.bootcss.com/gitalk/1.2.2/gitalk.min.css'
},
valine: 'https://unpkg.com/valine/dist/Valine.min.js'
},
site: {
toc: {
selectors: 'h1,h2,h3'
}
},
paths: {
search_js: '/assets/search.js'
}
};
window.TEXT_VARIABLES = TEXT_VARIABLES;
})();
</script>
</head>
<body>
<div class="root" data-is-touch="false">
<div class="layout--page js-page-root"><!----><div class="page__main js-page-main page__viewport hide-footer has-aside has-aside cell cell--auto">
<div class="page__main-inner"><div class="page__header d-print-none"><header class="header"><div class="main">
<div class="header__title">
<div class="header__brand"><svg id="svg" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="400" height="478.9473684210526" viewBox="0, 0, 400,478.9473684210526"><g id="svgg"><path id="path0" d="M308.400 56.805 C 306.970 56.966,303.280 57.385,300.200 57.738 C 290.906 58.803,278.299 59.676,269.200 59.887 L 260.600 60.085 259.400 61.171 C 258.010 62.428,256.198 63.600,255.645 63.600 C 255.070 63.600,252.887 65.897,252.598 66.806 C 252.460 67.243,252.206 67.600,252.034 67.600 C 251.397 67.600,247.206 71.509,247.202 72.107 C 247.201 72.275,246.390 73.190,245.400 74.138 C 243.961 75.517,243.598 76.137,243.592 77.231 C 243.579 79.293,241.785 83.966,240.470 85.364 C 239.176 86.740,238.522 88.365,237.991 91.521 C 237.631 93.665,236.114 97.200,235.554 97.200 C 234.938 97.200,232.737 102.354,232.450 104.472 C 232.158 106.625,230.879 109.226,229.535 110.400 C 228.933 110.926,228.171 113.162,226.434 119.500 C 226.178 120.435,225.795 121.200,225.584 121.200 C 225.373 121.200,225.200 121.476,225.200 121.813 C 225.200 122.149,224.885 122.541,224.500 122.683 C 223.606 123.013,223.214 123.593,223.204 124.600 C 223.183 126.555,220.763 132.911,219.410 134.562 C 218.443 135.742,217.876 136.956,217.599 138.440 C 217.041 141.424,215.177 146.434,214.532 146.681 C 214.240 146.794,214.000 147.055,214.000 147.261 C 214.000 147.467,213.550 148.086,213.000 148.636 C 212.450 149.186,212.000 149.893,212.000 150.208 C 212.000 151.386,208.441 154.450,207.597 153.998 C 206.319 153.315,204.913 150.379,204.633 147.811 C 204.365 145.357,202.848 142.147,201.759 141.729 C 200.967 141.425,199.200 137.451,199.200 135.974 C 199.200 134.629,198.435 133.224,196.660 131.311 C 195.363 129.913,194.572 128.123,193.870 125.000 C 193.623 123.900,193.236 122.793,193.010 122.540 C 190.863 120.133,190.147 118.880,188.978 115.481 C 188.100 112.928,187.151 111.003,186.254 109.955 C 185.358 108.908,184.518 107.204,183.847 105.073 C 183.280 103.273,182.497 101.329,182.108 100.753 C 181.719 100.177,180.904 98.997,180.298 98.131 C 179.693 97.265,178.939 95.576,178.624 94.378 C 178.041 92.159,177.125 90.326,175.023 87.168 C 174.375 86.196,173.619 84.539,173.342 83.486 C 172.800 81.429,171.529 79.567,170.131 78.785 C 169.654 78.517,168.697 77.511,168.006 76.549 C 167.316 75.587,166.594 74.800,166.402 74.800 C 166.210 74.800,164.869 73.633,163.421 72.206 C 160.103 68.936,161.107 69.109,146.550 69.301 C 133.437 69.474,128.581 70.162,126.618 72.124 C 126.248 72.495,125.462 72.904,124.872 73.033 C 124.282 73.163,123.088 73.536,122.219 73.863 C 121.349 74.191,119.028 74.638,117.061 74.858 C 113.514 75.254,109.970 76.350,108.782 77.419 C 107.652 78.436,100.146 80.400,97.388 80.400 C 95.775 80.400,93.167 81.360,91.200 82.679 C 90.430 83.195,89.113 83.804,88.274 84.031 C 85.875 84.681,78.799 90.910,74.400 96.243 L 73.400 97.456 73.455 106.028 C 73.526 117.055,74.527 121.238,77.820 124.263 C 78.919 125.273,80.400 127.902,80.400 128.842 C 80.400 129.202,81.075 130.256,81.900 131.186 C 83.563 133.059,85.497 136.346,86.039 138.216 C 86.233 138.886,87.203 140.207,88.196 141.153 C 89.188 142.098,90.000 143.104,90.000 143.388 C 90.000 144.337,92.129 148.594,92.869 149.123 C 93.271 149.410,93.600 149.831,93.600 150.059 C 93.600 150.286,93.932 150.771,94.337 151.136 C 94.743 151.501,95.598 153.004,96.237 154.475 C 96.877 155.947,97.760 157.351,98.200 157.596 C 98.640 157.841,99.900 159.943,101.000 162.267 C 102.207 164.817,103.327 166.644,103.825 166.876 C 104.278 167.087,105.065 168.101,105.573 169.130 C 107.658 173.348,108.097 174.093,110.006 176.647 C 111.103 178.114,112.000 179.725,112.000 180.227 C 112.000 181.048,113.425 183.163,114.678 184.200 C 115.295 184.711,117.396 188.733,117.720 190.022 C 117.855 190.562,118.603 191.633,119.381 192.402 C 120.160 193.171,121.496 195.258,122.351 197.039 C 123.206 198.820,124.167 200.378,124.487 200.501 C 124.807 200.624,125.953 202.496,127.034 204.662 C 128.114 206.828,129.676 209.299,130.505 210.153 C 131.333 211.007,132.124 212.177,132.262 212.753 C 132.618 214.239,134.291 217.048,136.288 219.5
" href="/">YannStatic</a></div><!--<button class="button button--secondary button--circle search-button js-search-toggle"><i class="fas fa-search"></i></button>--><!-- <li><button class="button button--secondary button--circle search-button js-search-toggle"><i class="fas fa-search"></i></button></li> -->
<!-- Champ de recherche -->
<div id="searchbox" class="search search--dark" style="visibility: visible">
<div class="main">
<div class="search__header"></div>
<div class="search-bar">
<div class="search-box js-search-box">
<div class="search-box__icon-search"><i class="fas fa-search"></i></div>
<input id="search-input" type="text" />
<!-- <div class="search-box__icon-clear js-icon-clear">
<a><i class="fas fa-times"></i></a>
</div> -->
</div>
</div>
</div>
</div>
<!-- Script pointing to search-script.js -->
<script>/*!
* Simple-Jekyll-Search
* Copyright 2015-2020, Christian Fei
* Licensed under the MIT License.
*/
(function(){
'use strict'
var _$Templater_7 = {
compile: compile,
setOptions: setOptions
}
const options = {}
options.pattern = /\{(.*?)\}/g
options.template = ''
options.middleware = function () {}
function setOptions (_options) {
options.pattern = _options.pattern || options.pattern
options.template = _options.template || options.template
if (typeof _options.middleware === 'function') {
options.middleware = _options.middleware
}
}
function compile (data) {
return options.template.replace(options.pattern, function (match, prop) {
const value = options.middleware(prop, data[prop], options.template)
if (typeof value !== 'undefined') {
return value
}
return data[prop] || match
})
}
'use strict';
function fuzzysearch (needle, haystack) {
var tlen = haystack.length;
var qlen = needle.length;
if (qlen > tlen) {
return false;
}
if (qlen === tlen) {
return needle === haystack;
}
outer: for (var i = 0, j = 0; i < qlen; i++) {
var nch = needle.charCodeAt(i);
while (j < tlen) {
if (haystack.charCodeAt(j++) === nch) {
continue outer;
}
}
return false;
}
return true;
}
var _$fuzzysearch_1 = fuzzysearch;
'use strict'
/* removed: const _$fuzzysearch_1 = require('fuzzysearch') */;
var _$FuzzySearchStrategy_5 = new FuzzySearchStrategy()
function FuzzySearchStrategy () {
this.matches = function (string, crit) {
return _$fuzzysearch_1(crit.toLowerCase(), string.toLowerCase())
}
}
'use strict'
var _$LiteralSearchStrategy_6 = new LiteralSearchStrategy()
function LiteralSearchStrategy () {
this.matches = function (str, crit) {
if (!str) return false
str = str.trim().toLowerCase()
crit = crit.trim().toLowerCase()
return crit.split(' ').filter(function (word) {
return str.indexOf(word) >= 0
}).length === crit.split(' ').length
}
}
'use strict'
var _$Repository_4 = {
put: put,
clear: clear,
search: search,
setOptions: __setOptions_4
}
/* removed: const _$FuzzySearchStrategy_5 = require('./SearchStrategies/FuzzySearchStrategy') */;
/* removed: const _$LiteralSearchStrategy_6 = require('./SearchStrategies/LiteralSearchStrategy') */;
function NoSort () {
return 0
}
const data = []
let opt = {}
opt.fuzzy = false
opt.limit = 10
opt.searchStrategy = opt.fuzzy ? _$FuzzySearchStrategy_5 : _$LiteralSearchStrategy_6
opt.sort = NoSort
opt.exclude = []
function put (data) {
if (isObject(data)) {
return addObject(data)
}
if (isArray(data)) {
return addArray(data)
}
return undefined
}
function clear () {
data.length = 0
return data
}
function isObject (obj) {
return Boolean(obj) && Object.prototype.toString.call(obj) === '[object Object]'
}
function isArray (obj) {
return Boolean(obj) && Object.prototype.toString.call(obj) === '[object Array]'
}
function addObject (_data) {
data.push(_data)
return data
}
function addArray (_data) {
const added = []
clear()
for (let i = 0, len = _data.length; i < len; i++) {
if (isObject(_data[i])) {
added.push(addObject(_data[i]))
}
}
return added
}
function search (crit) {
if (!crit) {
return []
}
return findMatches(data, crit, opt.searchStrategy, opt).sort(opt.sort)
}
function __setOptions_4 (_opt) {
opt = _opt || {}
opt.fuzzy = _opt.fuzzy || false
opt.limit = _opt.limit || 10
opt.searchStrategy = _opt.fuzzy ? _$FuzzySearchStrategy_5 : _$LiteralSearchStrategy_6
opt.sort = _opt.sort || NoSort
opt.exclude = _opt.exclude || []
}
function findMatches (data, crit, strategy, opt) {
const matches = []
for (let i = 0; i < data.length && matches.length < opt.limit; i++) {
const match = findMatchesInObject(data[i], crit, strategy, opt)
if (match) {
matches.push(match)
}
}
return matches
}
function findMatchesInObject (obj, crit, strategy, opt) {
for (const key in obj) {
if (!isExcluded(obj[key], opt.exclude) && strategy.matches(obj[key], crit)) {
return obj
}
}
}
function isExcluded (term, excludedTerms) {
for (let i = 0, len = excludedTerms.length; i < len; i++) {
const excludedTerm = excludedTerms[i]
if (new RegExp(excludedTerm).test(term)) {
return true
}
}
return false
}
/* globals ActiveXObject:false */
'use strict'
var _$JSONLoader_2 = {
load: load
}
function load (location, callback) {
const xhr = getXHR()
xhr.open('GET', location, true)
xhr.onreadystatechange = createStateChangeListener(xhr, callback)
xhr.send()
}
function createStateChangeListener (xhr, callback) {
return function () {
if (xhr.readyState === 4 && xhr.status === 200) {
try {
callback(null, JSON.parse(xhr.responseText))
} catch (err) {
callback(err, null)
}
}
}
}
function getXHR () {
return window.XMLHttpRequest ? new window.XMLHttpRequest() : new ActiveXObject('Microsoft.XMLHTTP')
}
'use strict'
var _$OptionsValidator_3 = function OptionsValidator (params) {
if (!validateParams(params)) {
throw new Error('-- OptionsValidator: required options missing')
}
if (!(this instanceof OptionsValidator)) {
return new OptionsValidator(params)
}
const requiredOptions = params.required
this.getRequiredOptions = function () {
return requiredOptions
}
this.validate = function (parameters) {
const errors = []
requiredOptions.forEach(function (requiredOptionName) {
if (typeof parameters[requiredOptionName] === 'undefined') {
errors.push(requiredOptionName)
}
})
return errors
}
function validateParams (params) {
if (!params) {
return false
}
return typeof params.required !== 'undefined' && params.required instanceof Array
}
}
'use strict'
var _$utils_9 = {
merge: merge,
isJSON: isJSON
}
function merge (defaultParams, mergeParams) {
const mergedOptions = {}
for (const option in defaultParams) {
mergedOptions[option] = defaultParams[option]
if (typeof mergeParams[option] !== 'undefined') {
mergedOptions[option] = mergeParams[option]
}
}
return mergedOptions
}
function isJSON (json) {
try {
if (json instanceof Object && JSON.parse(JSON.stringify(json))) {
return true
}
return false
} catch (err) {
return false
}
}
var _$src_8 = {};
(function (window) {
'use strict'
let options = {
searchInput: null,
resultsContainer: null,
json: [],
success: Function.prototype,
searchResultTemplate: '<li><a href="{url}" title="{desc}">{title}</a></li>',
templateMiddleware: Function.prototype,
sortMiddleware: function () {
return 0
},
noResultsText: 'No results found',
limit: 10,
fuzzy: false,
debounceTime: null,
exclude: []
}
let debounceTimerHandle
const debounce = function (func, delayMillis) {
if (delayMillis) {
clearTimeout(debounceTimerHandle)
debounceTimerHandle = setTimeout(func, delayMillis)
} else {
func.call()
}
}
const requiredOptions = ['searchInput', 'resultsContainer', 'json']
/* removed: const _$Templater_7 = require('./Templater') */;
/* removed: const _$Repository_4 = require('./Repository') */;
/* removed: const _$JSONLoader_2 = require('./JSONLoader') */;
const optionsValidator = _$OptionsValidator_3({
required: requiredOptions
})
/* removed: const _$utils_9 = require('./utils') */;
window.SimpleJekyllSearch = function (_options) {
const errors = optionsValidator.validate(_options)
if (errors.length > 0) {
throwError('You must specify the following required options: ' + requiredOptions)
}
options = _$utils_9.merge(options, _options)
_$Templater_7.setOptions({
template: options.searchResultTemplate,
middleware: options.templateMiddleware
})
_$Repository_4.setOptions({
fuzzy: options.fuzzy,
limit: options.limit,
sort: options.sortMiddleware,
exclude: options.exclude
})
if (_$utils_9.isJSON(options.json)) {
initWithJSON(options.json)
} else {
initWithURL(options.json)
}
const rv = {
search: search
}
typeof options.success === 'function' && options.success.call(rv)
return rv
}
function initWithJSON (json) {
_$Repository_4.put(json)
registerInput()
}
function initWithURL (url) {
_$JSONLoader_2.load(url, function (err, json) {
if (err) {
throwError('failed to get JSON (' + url + ')')
}
initWithJSON(json)
})
}
function emptyResultsContainer () {
options.resultsContainer.innerHTML = ''
}
function appendToResultsContainer (text) {
options.resultsContainer.innerHTML += text
}
function registerInput () {
options.searchInput.addEventListener('input', function (e) {
if (isWhitelistedKey(e.which)) {
emptyResultsContainer()
debounce(function () { search(e.target.value) }, options.debounceTime)
}
})
}
function search (query) {
if (isValidQuery(query)) {
emptyResultsContainer()
render(_$Repository_4.search(query), query)
}
}
function render (results, query) {
const len = results.length
if (len === 0) {
return appendToResultsContainer(options.noResultsText)
}
for (let i = 0; i < len; i++) {
results[i].query = query
appendToResultsContainer(_$Templater_7.compile(results[i]))
}
}
function isValidQuery (query) {
return query && query.length > 0
}
function isWhitelistedKey (key) {
return [13, 16, 20, 37, 38, 39, 40, 91].indexOf(key) === -1
}
function throwError (message) {
throw new Error('SimpleJekyllSearch --- ' + message)
}
})(window)
}());
</script>
<!-- Configuration -->
<script>
SimpleJekyllSearch({
searchInput: document.getElementById('search-input'),
resultsContainer: document.getElementById('results-container'),
json: '/search.json',
//searchResultTemplate: '<li><a href="https://static.rnmkcy.eu{url}">{date}&nbsp;{title}</a></li>'
searchResultTemplate: '<li><a href="{url}">{date}&nbsp;{title}</a></li>'
})
</script>
<!-- Fin déclaration champ de recherche --></div><nav class="navigation">
<ul><li class="navigation__item"><a href="/archive.html">Etiquettes</a></li><li class="navigation__item"><a href="/htmldoc.html">Documents</a></li><li class="navigation__item"><a href="/liens_ttrss.html">Liens</a></li><li class="navigation__item"><a href="/aide-jekyll-text-theme.html">Aide</a></li></ul>
</nav></div>
</header>
</div><div class="page__content"><div class ="main"><div class="grid grid--reverse">
<div class="col-main cell cell--auto"><!-- start custom main top snippet --><div id="results-container" class="search-result js-search-result"></div><!-- end custom main top snippet -->
<article itemscope itemtype="http://schema.org/Article"><div class="article__header"><header><h1 style="color:Tomato;">Blog statique de type jekyll sur site cinay.xyz</h1></header></div><meta itemprop="headline" content="Blog statique de type jekyll sur site cinay.xyz"><div class="article__info clearfix"><ul class="left-col menu"><li>
<a class="button button--secondary button--pill button--sm"
href="/archive.html?tag=yunohost">yunohost</a>
</li></ul><ul class="right-col menu"><li>
<i class="far fa-calendar-alt"></i>&nbsp;<span title="Création" style="color:#FF00FF">23&nbsp;déc.&nbsp;&nbsp;2019</span>
<span title="Modification" style="color:#00FF7F">26&nbsp;déc.&nbsp;&nbsp;2019</span></li></ul></div><meta itemprop="datePublished" content="2019-12-26T00:00:00+01:00">
<meta itemprop="keywords" content="yunohost"><div class="js-article-content">
<div class="layout--article"><!-- start custom article top snippet -->
<style>
#myBtn {
display: none;
position: fixed;
bottom: 10px;
right: 10px;
z-index: 99;
font-size: 12px;
font-weight: bold;
border: none;
outline: none;
background-color: white;
color: black;
cursor: pointer;
padding: 5px;
border-radius: 4px;
}
#myBtn:hover {
background-color: #555;
}
</style>
<button onclick="topFunction()" id="myBtn" title="Haut de page">&#8679;</button>
<script>
//Get the button
var mybutton = document.getElementById("myBtn");
// When the user scrolls down 20px from the top of the document, show the button
window.onscroll = function() {scrollFunction()};
function scrollFunction() {
if (document.body.scrollTop > 20 || document.documentElement.scrollTop > 20) {
mybutton.style.display = "block";
} else {
mybutton.style.display = "none";
}
}
// When the user clicks on the button, scroll to the top of the document
function topFunction() {
document.body.scrollTop = 0;
document.documentElement.scrollTop = 0;
}
</script>
<!-- end custom article top snippet -->
<div class="article__content" itemprop="articleBody"><details>
<summary><b>Afficher/cacher Sommaire</b></summary>
<!-- affichage sommaire -->
<div class="toc-aside js-toc-root"></div>
</details><h2 id="blog-statique-de-type-jekyll">Blog statique de type jekyll</h2>
<blockquote>
<p>CLONER un <a href="https://jekyllthemes.io/jekyll-blog-themes">thème de blog jekyll</a> dans “basicblog”</p>
</blockquote>
<p>Les droits sur le dossier</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>sudo chown $USER. -R /srv/basicblog
</code></pre></div></div>
<p>Lancement “bundle” dans le dossier /srv/basicblog</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>cd /srv/basicblog
bundle install
</code></pre></div></div>
<p>En cas derreur <strong>“Following files may not be writable …“</strong></p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Using concurrent-ruby 1.1.5
Following files may not be writable, so sudo is needed:
/usr/local/bin
/var/lib/gems/2.3.0
/var/lib/gems/2.3.0/build_info
/var/lib/gems/2.3.0/cache
/var/lib/gems/2.3.0/doc
/var/lib/gems/2.3.0/extensions
/var/lib/gems/2.3.0/gems
/var/lib/gems/2.3.0/specifications
</code></pre></div></div>
<p>En cas derreur, il faut modifier les droits</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>sudo chown root.staff -R /var/lib/gems/2.3.0/
sudo chmod 775 -R /var/lib/gems/2.3.0/
sudo usermod -a -G staff $USER
</code></pre></div></div>
<p><strong>Créer service basicblog</strong><br />
Le script <strong>/srv/start_basicblog.sh</strong> contenu dans le service</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>#!/bin/sh
#lancement basicblog
cd /srv/basicblog/
# Attente et construction
/usr/local/bin/bundle exec jekyll build --watch
</code></pre></div></div>
<p>Droits sur le bash</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>sudo chown $USER. /srv/start_basicblog.sh
chmod +x /srv/start_basicblog.sh
</code></pre></div></div>
<blockquote>
<p>Pour lancer le serveur <strong>basicblog</strong> au démarrage, utilisation dun <u>service systemd</u><br />
<strong>ATTENTION!</strong> , remplacer <em>User=utilisateur</em> par votre nom dutilisateur (<strong>echo $USER</strong>)</p>
</blockquote>
<p>Création dun service basicblog sous systemd</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>sudo nano /etc/systemd/system/basicblog.service
</code></pre></div></div>
<p>Contenu du fichier</p>
<div class="language-ini highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nn">[Unit]</span>
<span class="py">Description</span><span class="p">=</span><span class="s">basicblog Service</span>
<span class="py">After</span><span class="p">=</span><span class="s">network.target</span>
<span class="nn">[Service]</span>
<span class="py">Type</span><span class="p">=</span><span class="s">simple</span>
<span class="py">User</span><span class="p">=</span><span class="s">debadm</span>
<span class="py">ExecStart</span><span class="p">=</span><span class="s">/bin/sh /srv/start_basicblog.sh</span>
<span class="py">Restart</span><span class="p">=</span><span class="s">on-abort</span>
<span class="nn">[Install]</span>
<span class="py">WantedBy</span><span class="p">=</span><span class="s">multi-user.target</span>
</code></pre></div></div>
<p>Lancer le service <strong>basicblog</strong> :</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>sudo systemctl daemon-reload
sudo systemctl start basicblog
# Valider le lancement du service basicblog au démarrage
sudo systemctl enable basicblog
#Vérifier
sudo systemctl status basicblog
</code></pre></div></div>
<blockquote>
<p>basicblog génére un dossier statique <strong>/srv/basicblog/_site</strong></p>
</blockquote>
<p>Pour un accès via le lien <a href="https://blog.cinay.xyz">https://blog.cinay.xyz</a>, il faut modifier le dossier “root” du site pour quil pointe sur **/srv/basicblog/<em>site** <br />
Le dossier “root” actuel est /var/www/webapp_yannick/blog.cinay.xyz</em>/<br />
On le déplace <code class="language-plaintext highlighter-rouge">sudo mv /var/www/webapp_yannick/blog.cinay.xyz_/ . </code> ou efface : <code class="language-plaintext highlighter-rouge">sudo rm -r /var/www/webapp_yannick/blog.cinay.xyz_/</code></p>
<p>Créer le lien avec le dossier <strong>/srv/basicblog/_site</strong> du site statique</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>sudo ln -s /srv/basicblog/_site /var/www/webapp_yannick/blog.cinay.xyz_
</code></pre></div></div>
<p><img src="/images/basicblog-web.png" alt="basicblog-web" width="400px" /><br />
Accès site statique <a href="https://blog.cinay.xyz">https://blog.cinay.xyz</a></p>
<p><strong>Changer de thème</strong><br />
Les différents thèmes jekyll qui seront testés doivent respecter la procédure suivante</p>
<ol>
<li>Si un thème présent, il faut le supprimer ou le sauvegarder<br />
<code class="language-plaintext highlighter-rouge">sudo rm -r /srv/basicblog</code> ou <code class="language-plaintext highlighter-rouge">sudo mv /srv/basicblog .</code>
<ul>
<li>Les thèmes seront “clonés” en /srv/basicblog<br />
ex: <code class="language-plaintext highlighter-rouge">git clone https://github.com/dbtek/dbyll.git /srv/basicblog</code></li>
<li>Aller au dossier : <code class="language-plaintext highlighter-rouge">cd /srv/basicblog</code></li>
<li>Effacer le .lock : <code class="language-plaintext highlighter-rouge">rm Gemfile.lock</code></li>
<li>Installer : <code class="language-plaintext highlighter-rouge">bundle install</code></li>
<li>Redémarrer le service <code class="language-plaintext highlighter-rouge">sudo systemctl restart basicblog</code></li>
</ul>
</li>
</ol>
<p><img src="/images/dbyll-theme.png" alt="basicblog-web" width="400px" /><br />
Tester le nouveau thème <a href="https://blog.cinay.xyz">https://blog.cinay.xyz</a></p>
<h2 id="personalisation-thème-style-et-plugins">Personalisation thème, style et plugins</h2>
<h3 id="favicon">favicon</h3>
<p>Image dans le répertoire “images”<br />
Définir une constante pour le fichier image <code class="language-plaintext highlighter-rouge">favicon_ico: ym01.png</code> dans le fichier <strong>_config.yml</strong><br />
Modifier le fichier <strong>_includes/default.html</strong></p>
<div class="language-html highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nt">&lt;link</span> <span class="na">rel=</span><span class="s">"icon"</span> <span class="na">type=</span><span class="s">"image/png"</span> <span class="na">href=</span><span class="s">"/images/"</span><span class="nt">&gt;</span>
</code></pre></div></div>
<h3 id="jekyll-toc">jekyll-toc</h3>
<p><a href="https://github.com/toshimaru/jekyll-toc">jekyll-toc</a> : Un plugin de filtrage pour <strong>Jekyll</strong> qui génère une table des matières.</p>
<p><strong>Installation</strong></p>
<p>Ajouter le plugin jekyll-toc dans le <strong>Gemfile</strong> de votre site.</p>
<div class="language-ruby highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">gem</span> <span class="n">install</span> <span class="n">jekyll</span><span class="o">-</span><span class="n">toc</span>
</code></pre></div></div>
<p>Ajouter la ligne suivante au fichier <strong>Gemfile</strong>:<br />
<code class="language-plaintext highlighter-rouge">gem 'jekyll-toc'</code></p>
<p>Et ajouter le jekyll-toc au fichier <strong>_config.yml</strong> de votre site.</p>
<div class="language-yml highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="na">plugins</span><span class="pi">:</span>
<span class="pi">-</span> <span class="s">jekyll-toc</span>
</code></pre></div></div>
<p>toc: true` dans vos publications (posts).</p>
<div class="language-yml highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nn">---</span>
<span class="na">layout</span><span class="pi">:</span> <span class="s">article</span>
<span class="na">title</span><span class="pi">:</span> <span class="s2">"</span><span class="s">Welcome</span><span class="nv"> </span><span class="s">to</span><span class="nv"> </span><span class="s">Jekyll!"</span>
<span class="na">toc</span><span class="pi">:</span> <span class="kc">true</span>
<span class="nn">---</span>
</code></pre></div></div>
<p>Ajouter en fin du fichier <strong>assets/css/style.css</strong></p>
<div class="language-css highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nc">.section-nav</span> <span class="p">{</span>
<span class="nl">background-color</span><span class="p">:</span> <span class="m">#FFF</span><span class="p">;</span>
<span class="nl">margin</span><span class="p">:</span> <span class="m">5px</span> <span class="m">0</span><span class="p">;</span>
<span class="nl">padding</span><span class="p">:</span> <span class="m">10px</span> <span class="m">30px</span><span class="p">;</span>
<span class="nl">border-radius</span><span class="p">:</span> <span class="m">3px</span><span class="p">;</span>
<span class="p">}</span>
<span class="nc">.toc-entry.toc-h1</span> <span class="p">{</span> <span class="nl">list-style-type</span><span class="p">:</span> <span class="nb">none</span><span class="p">;}</span>
<span class="nc">.toc-entry.toc-h2</span> <span class="p">{</span> <span class="nl">padding-left</span><span class="p">:</span> <span class="m">15px</span><span class="p">;</span> <span class="nl">list-style-type</span><span class="p">:</span> <span class="nb">none</span><span class="p">;}</span>
<span class="nc">.toc-entry.toc-h3</span> <span class="p">{</span> <span class="nl">padding-left</span><span class="p">:</span> <span class="m">30px</span><span class="p">;</span> <span class="nl">list-style-type</span><span class="p">:</span> <span class="nb">none</span><span class="p">;}</span>
<span class="nc">.toc-entry.toc-h4</span> <span class="p">{</span> <span class="nl">padding-left</span><span class="p">:</span> <span class="m">45px</span><span class="p">;</span> <span class="nl">list-style-type</span><span class="p">:</span> <span class="nb">none</span><span class="p">;}</span>
<span class="nc">.toc-entry.toc-h5</span> <span class="p">{</span> <span class="nl">padding-left</span><span class="p">:</span> <span class="m">60px</span><span class="p">;</span> <span class="nl">list-style-type</span><span class="p">:</span> <span class="nb">none</span><span class="p">;}</span>
<span class="nc">.toc-entry.toc-h6</span> <span class="p">{</span> <span class="nl">padding-left</span><span class="p">:</span> <span class="m">75px</span><span class="p">;</span> <span class="nl">list-style-type</span><span class="p">:</span> <span class="nb">none</span><span class="p">;}</span>
</code></pre></div></div>
<p>Actualiser linstallation</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>bundle update
</code></pre></div></div>
<p><strong>Usage</strong></p>
<p>Il y a trois filtres <strong>liquid</strong> disponibles aujourdhui, qui devraient tous être appliqué à un contenu HTML, par exemple le contenu de la variable <strong>liquid</strong> disponible dans les modèles de Jekyll.</p>
<p><strong>Utilisation de base (PAR DEFAUT)</strong></p>
<p><strong>filtre toc</strong></p>
<p>Remplacer {{ content }} par {{ content | toc }} dans le fichier <strong>_includes/post.html</strong></p>
<p>Ce filtre met la table des matières directement au-dessus du contenu.</p>
<p>Modifier la ligne 42 dans le fichier <strong>_includes/post.html</strong></p>
<div class="language-html highlighter-rouge"><div class="highlight"><pre class="highlight"><code>
...
<span class="nt">&lt;div</span> <span class="na">class=</span><span class="s">"article_body"</span><span class="nt">&gt;</span>
<span class="c">&lt;!-- {{ content | toc }} --&gt;</span>
<span class="nt">&lt;/div&gt;</span>
...
</code></pre></div></div>
<p>Relancer le service</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>sudo systemctl restart basicblog
</code></pre></div></div>
<p><strong>Utilisation avancée</strong></p>
<p>Si vous souhaitez séparer le TOC et son contenu, vous pouvez utiliser les filtres <code class="language-plaintext highlighter-rouge">toc_only</code> et <code class="language-plaintext highlighter-rouge">inject_anchors</code> .</p>
<p>**filtre **<code class="language-plaintext highlighter-rouge">toc_only</code></p>
<p>Génère le TOC lui-même comme décrit ci-dessous. Surtout utile dans les cas où la table des matières ne doit pas être placée immédiatement au-dessus du contenu, mais à un autre endroit de la page, à savoir un côté.</p>
<p><strong>filtre</strong> <code class="language-plaintext highlighter-rouge">inject_anchors</code></p>
<p>Injecte les “ancres” HTML dans le contenu sans réellement créer la table des matières elle-même. Ils sont de la forme:</p>
<div class="language-html highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nt">&lt;a</span> <span class="na">id=</span><span class="s">"heading11"</span> <span class="na">class=</span><span class="s">"anchor"</span> <span class="na">href=</span><span class="s">"#heading1-1"</span> <span class="na">aria-hidden=</span><span class="s">"true"</span><span class="nt">&gt;</span>
<span class="nt">&lt;span</span> <span class="na">class=</span><span class="s">"octicon octicon-link"</span><span class="nt">&gt;&lt;/span&gt;</span>
<span class="nt">&lt;/a&gt;</span>
</code></pre></div></div>
<p>Ceci est seulement utile lorsque le TOC lui-même doit être placé à un autre endroit avec le filtre <code class="language-plaintext highlighter-rouge">toc_only</code>.</p>
<h3 id="ajout-dun-champ-date-de-modification">Ajout dun champ date de modification</h3>
<p>Champ date de modification , ajouter la ligne suivante au fichier <strong>Gemfile</strong></p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>gem 'jekyll-last-modified-at'
</code></pre></div></div>
<p>Mise à jour</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>bundle update
</code></pre></div></div>
<p>Coder en dur <code class="language-plaintext highlighter-rouge">last_modified_at</code> sur chaque billet</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>---
layout: post
title: "An awesome blog post"
create: 2019-12-23
modif: 2019-03-25 8:30:00 +0000
---
</code></pre></div></div>
<p>Je veux seulement spécifier <code class="language-plaintext highlighter-rouge">last_modified_at</code> si le post est en cours de mise à jour. Lorsque jécris un nouveau message, je laisse ce champ vide. Afin de faire ce travail, jai ajouté une logique conditionnelle au modèle de publication.</p>
<p>Avec cette disposition en place, jai ajouté la logique conditionnelle:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>{%- assign date_format = site.minima.date_format | default: '%b %-d, %Y' -%}
{%- if page.last_modified_at -%}
{%- else -%}
{%- endif -%}
</code></pre></div></div>
<p>Si la publication a une date <code class="language-plaintext highlighter-rouge">last_modified_at</code> elle sera affichée, sinon elle affichera la date de publication dorigine.</p>
<p>Dans mon cas, je veux afficher la date last_modified_at en haut du post et avoir également la date de publication dorigine en bas. De cette façon, les lecteurs savent si le message a été mis à jour récemment et aussi la date de sa publication initiale. Mon fichier de disposition de publication ressemble à ceci:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>---
layout: default
---
&lt;article class="post h-entry" itemscope itemtype="http://schema.org/BlogPosting"&gt;
&lt;header class="post-header"&gt;
&lt;h1 class="post-title p-name" itemprop="name headline"&gt;{{ page.title | escape }}&lt;/h1&gt;
&lt;p class="post-meta"&gt;
&lt;time class="dt-published" datetime="{{ page.date | date_to_xmlschema }}" itemprop="datePublished"&gt;
{%- assign date_format = site.minima.date_format | default: '%b %-d, %Y' -%}
{%- if page.last_modified_at -%}
{%- else -%}
{%- endif -%}
&lt;/time&gt;
{%- if page.author -%}
&lt;span itemprop="author" itemscope itemtype="http://schema.org/Person"&gt;&lt;span class="p-author h-card" itemprop="name"&gt;{{ page.author | escape }}&lt;/span&gt;&lt;/span&gt;
{%- endif -%}
&lt;/header&gt;
&lt;div class="post-content e-content" itemprop="articleBody"&gt;
{{ content }}
&lt;/div&gt;
&lt;p class="post-meta"&gt;
&lt;time class="dt-published" datetime="{{ page.date | date_to_xmlschema }}" itemprop="datePublished"&gt;
&lt;/time&gt;
&lt;/p&gt;
{%- if site.disqus.shortname -%}
{%- include disqus_comments.html -%}
{%- endif -%}
&lt;a class="u-url" href="{{ page.url | relative_url }}" hidden&gt;&lt;/a&gt;
&lt;/article&gt;
</code></pre></div></div>
<h3 id="ajoutez-syntax-highlighting-à-votre-site-jekyll-avec-rouge">Ajoutez Syntax Highlighting à votre site Jekyll avec Rouge</h3>
<ul>
<li><a href="https://bnhr.xyz/2017/03/25/add-syntax-highlighting-to-your-jekyll-site-with-rouge.html">Add Syntax Highlighting to your Jekyll site with Rouge</a></li>
</ul>
<p>La mise en évidence de la syntaxe est importante (en particulier pour la programmation de blogs) car elle améliore la lisibilité des articles. Il permet aux lecteurs de localiser rapidement les extraits de code (qui sont généralement la raison pour laquelle les gens visitent votre page en premier lieu) dont ils ont besoin.</p>
<p>Rouge est un surligneur de syntaxe pur rubis et a été le surligneur par défaut pour Jekyll depuis Jekyll 3 (en remplacement des pygments). Vous pouvez ajouter la syntaxe highlihting en utilisant rouge à votre site Jekyll en quelques étapes seulement.</p>
<p>1 - Installez les gemmes kramdown et rouge<br />
Assurez-vous que les gemmes kramdown et rouge sont installées.</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>gem install kramdown rouge
</code></pre></div></div>
<p>2 - Modifiez vos paramètres <strong>_config.yml</strong> <br />
Ajoutez les lignes suivantes à votre fichier _config.yml si elles ne sy trouvent pas déjà.</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>markdown: kramdown
kramdown:
input: GFM
syntax_highlighter: rouge
</code></pre></div></div>
<p>Si cela ne fonctionne pas, vous pouvez essayer:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>markdown: kramdown
highlighter: rouge
</code></pre></div></div>
<p>Par expérience, mes temps de génération lors de lutilisation de la première option sont généralement plus rapides.</p>
<p>3 - Créez un fichier css pour le style de surbrillance que vous souhaitez</p>
<p>Rouge est intégré à <strong>rougify</strong> , un outil en ligne de commande qui convertit un thème de style en fichier css.</p>
<p>Vous pouvez voir les thèmes disponibles en entrant:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>rougify help style
</code></pre></div></div>
<p>Depuis rouge 1.11.1, les thèmes disponibles sont:<br />
<em>base16, base16.dark, base16.monokai, base16.monokai.light, base16.solarized, base16.solarized.dark, coloré, github, gruvbox, gruvbox.light, molokai, monokai, monokai.sublime, thankful_eyes</em></p>
<p>Par exemple, si vous souhaitez utiliser le thème <strong>monokai</strong>, vous devez dabord créer un fichier css dans votre dossier css à laide de rougify:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>rougify style monokai &gt; /path/to/css/file.css
</code></pre></div></div>
<p>Le répertoire habituel pour les fichiers css est assets / css tandis que le nom habituel pour le fichier css est syntax.css donc à partir de votre racine, vous pouvez taper:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>rougify style monokai &gt; assets/css/syntax.css
</code></pre></div></div>
<p>Noubliez pas ensuite dinclure la feuille de style dans votre modèle HTML (généralement dans <code class="language-plaintext highlighter-rouge">&lt;head&gt; &lt;/head&gt;</code>):</p>
<p><code class="language-plaintext highlighter-rouge">&lt;link href= "path-to-syntax-highlighter-stylesheet" rel= "stylesheet" &gt;</code></p>
<p>Si vous avez enregistré la feuille de style du surligneur de syntaxe en tant que <strong>assets/css/syntax.css</strong>, vous pouvez ajouter les éléments suivants dans votre modèle HTML nommé <strong>_include/default.html</strong>:</p>
<p><code class="language-plaintext highlighter-rouge">&lt;link href= "/assets/css/syntax.css" rel= "stylesheet" &gt;</code><br />
ou<br />
<code class="language-plaintext highlighter-rouge">&lt;link href="/assets/css/syntax.css" rel="stylesheet"&gt;</code></p>
<p>4 - Ajoutez une coloration syntaxique à vos articles</p>
<p>Si vous utilisez <strong>markdown</strong> pour créer vos publications, vous pouvez ajouter une coloration syntaxique en joignant lextrait de code précédé er suivi de <strong>trois backticks (<code class="language-plaintext highlighter-rouge"> </code>`` `)</strong>.<br />
De plus, vous pouvez définir la langue de lextrait de code après les trois backticks douverture.</p>
<p>Par exemple, si vous souhaitez mettre en évidence du code python</p>
<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">def</span> <span class="nf">function</span><span class="p">():</span>
<span class="nf">print</span><span class="p">(</span><span class="sh">'</span><span class="s">Yes</span><span class="sh">'</span><span class="p">)</span>
</code></pre></div></div>
<p>Vous pouvez vérifier les langues prises en charge en entrant:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>rougify list
</code></pre></div></div>
<p>5 - Que faire si je veux afficher (<code class="language-plaintext highlighter-rouge"> </code>`` `) dans mes blocs de code?</p>
<p>Disons que vous voulez afficher ` <code class="language-plaintext highlighter-rouge">` dans votre bloc de code
Ce que vous devez faire est de mettre en retrait le `</code> ` dans votre fichier markdown dau moins 4 espaces.</p>
<p>The line below is indented by at least 4 spaces.</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>```python
def function():
print('Yes')
```
</code></pre></div></div>
<ol>
<li>Comment puis-je faire fonctionner des blocs de code ou des extraits de code dans les listes GFM (Github Flavored Markdown)?</li>
</ol>
<p>Les blocs de code peuvent parfois casser des listes ordonnées (cest-à-dire que la liste revient toujours à 1). Pour éviter cela, vous pouvez procéder comme suit.</p>
<p>si vous ajoutez un saut de ligne après lélément de campagne, faites en sorte que le bloc de code soit en retrait dau moins 4 espaces de lélément de campagne.</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>1. Number 1
```python
print("Hello World")
```
2. Number 2
```ruby
puts 'Hello World'
```
3. Number 3
```c
printf("Hello World");
```
</code></pre></div></div>
<p>ce qui donne:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Numéro 1
print ( "Hello World" )
Numéro 2
puts 'Hello World'
Numéro 3
printf ( "Hello World" );
</code></pre></div></div>
<h3 id="position-des-éléments-barre-latéral-gauche">Position des éléments “barre latéral gauche”</h3>
<p>Contenu de la barre latérale alligné vers le haut (1% au lieu de 10%)<br />
Directive <code class="language-plaintext highlighter-rouge">.sidebar</code> , lattribut <code class="language-plaintext highlighter-rouge">padding-top: 10%;</code> passe à <code class="language-plaintext highlighter-rouge">padding-top: 1%;</code> dans le fichier <strong>assets/css/style.css</strong></p>
<h3 id="largeur-des-colonnes">Largeur des colonnes</h3>
<p>Modifier la largeur en respectant la proportionnalité , fichier <strong>_includes/default.html</strong> dans les lignes suivantes</p>
<div class="language-html highlighter-rouge"><div class="highlight"><pre class="highlight"><code>
...
<span class="nt">&lt;div</span> <span class="na">class=</span><span class="s">"col-sm-2 sidebar hidden-xs"</span> <span class="na">style=</span><span class="s">"{% if site.sidebar_background_image %}background: url({{site.sidebar_background_image}}) no-repeat center center !important;{% endif %}"</span><span class="nt">&gt;</span>
{% include sidebar.html %}
<span class="nt">&lt;/div&gt;</span>
<span class="nt">&lt;div</span> <span class="na">class=</span><span class="s">"col-sm-10 col-sm-offset-2"</span><span class="nt">&gt;</span>
...
</code></pre></div></div>
<h3 id="haut-de-page-sur-écran-en-bas-à-droite">Haut de page (sur écran en bas à droite)</h3>
<p>Dans le fichier <strong>_includes/default.html</strong> insérer les lignes suivantes avant <code class="language-plaintext highlighter-rouge">&lt;div class="col-sm-2 sidebar hidden-xs" </code> de la modification précédente</p>
<div class="language-html highlighter-rouge"><div class="highlight"><pre class="highlight"><code>
...
<span class="c">&lt;!-- nav-menu-haut --&gt;</span>
<span class="nt">&lt;div</span> <span class="na">id=</span><span class="s">"nav-haut-page"</span><span class="nt">&gt;</span>
<span class="nt">&lt;a</span> <span class="na">href=</span><span class="s">"#"</span> <span class="na">title=</span><span class="s">"Haut de Page"</span><span class="nt">&gt;&lt;i</span> <span class="na">class=</span><span class="s">"fa fa-arrow-circle-up fa-2x"</span><span class="nt">&gt;&lt;/i&gt;&lt;/a&gt;</span>
<span class="nt">&lt;/div&gt;</span>
...
</code></pre></div></div>
<h3 id="modifications-autres">Modifications autres</h3>
<p>Fichier <strong>tags.html</strong><br />
Ligne 4 -&gt; <strong>title: Etiquettes</strong><br />
Ligne 29 -&gt; <strong>Billets étiquettés</strong></p>
<p>Fichier <strong>_includes/default.html</strong><br />
Ligne 73 et 87 -&gt; <strong>Etiquettes</strong> remplace Mots clés</p>
<p>Fichier <strong>categories.html</strong><br />
Ligne 3 -&gt; <strong>Catégories</strong></p>
<h2 id="recherche-rapide-avec-fichier-json--et-lunrjs">Recherche rapide avec fichier json et lunr.js</h2>
<p><u>Actuellement</u> , à chaque recherche, il est généré des données indexées au format json qui représentent le contenu du site.Suivant le volume des données ,la durée de la génération peut être assez longue…</p>
<h3 id="fichier-basicblogjson">Fichier basicblog.json</h3>
<p>Pour rendre la recherche plus rapide , il faut utiliser un fichier json qui sera construit à chaque compilation.<br />
Créez un fichier <strong>/basicblog.json</strong> à la racine de votre site Jekyll <strong>/srv/basicblog/</strong>, et remplissez-le avec ce qui suit:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>---
layout: null
---
[
{% assign count = 0 %}
{% assign sortedPosts = site.posts | sort: 'date' %}
{% for post in sortedPosts %}
{
"id": {{count}},
"title": {{ post.title | jsonify }},
"url": {{ post.url | jsonify }},
"tags": "{% for tag in post.tags %}{{ tag }}{% unless forloop.last %}, {% endunless %}{% endfor %}",
"categories": "{% for category in post.categories %}{{ category }}{% unless forloop.last %}, {% endunless %}{% endfor %}",
"content" : {{post.content | strip_html | truncatewords: 20 | jsonify }}
}
{% unless forloop.last %},{% endunless %}
{% assign count = count | plus: 1 %}
{% endfor %}
]
</code></pre></div></div>
<p>Chaque fois que vous exécutez le processus de compilation de Jekyll, Jekyll utilisera <strong>/basicblog.json</strong> pour déterminer où chercher et ce quil faut saisir et il génèrera un fichier <strong>_site/basicblog.json</strong>.</p>
<h3 id="analyse-json-via-lunr">Analyse json via lunr</h3>
<p>Chargement et indexation du fichier pour la recherche , fichier javascript <strong>searchplus.js</strong> dans le dossier <strong>js/</strong></p>
<div class="language-js highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nf">$</span><span class="p">(</span><span class="nb">document</span><span class="p">).</span><span class="nf">ready</span><span class="p">(</span><span class="nf">function </span><span class="p">()</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">idx</span> <span class="p">;</span>
<span class="kd">var</span> <span class="nx">nbart</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
<span class="kd">var</span> <span class="nx">fichier_json</span> <span class="o">=</span> <span class="dl">'</span><span class="s1">basicblog.json</span><span class="dl">'</span><span class="p">;</span>
<span class="c1">//http://www.pureexample.com/jquery/get-json.html</span>
<span class="kd">function</span> <span class="nf">executerRequete</span><span class="p">(</span><span class="nx">callback</span><span class="p">)</span> <span class="p">{</span>
<span class="k">if </span><span class="p">(</span><span class="nx">nbart</span> <span class="o">===</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
<span class="cm">/* set no cache */</span>
<span class="nx">$</span><span class="p">.</span><span class="nf">ajaxSetup</span><span class="p">({</span> <span class="na">cache</span><span class="p">:</span> <span class="kc">false</span> <span class="p">});</span>
<span class="nx">idx</span> <span class="o">=</span> <span class="nf">lunr</span><span class="p">(</span><span class="nf">function </span><span class="p">()</span> <span class="p">{</span>
<span class="k">this</span><span class="p">.</span><span class="nf">field</span><span class="p">(</span><span class="dl">'</span><span class="s1">id</span><span class="dl">'</span><span class="p">);</span>
<span class="k">this</span><span class="p">.</span><span class="nf">field</span><span class="p">(</span><span class="dl">'</span><span class="s1">title</span><span class="dl">'</span><span class="p">);</span>
<span class="k">this</span><span class="p">.</span><span class="nf">field</span><span class="p">(</span><span class="dl">'</span><span class="s1">content</span><span class="dl">'</span><span class="p">,</span> <span class="p">{</span> <span class="na">boost</span><span class="p">:</span> <span class="mi">10</span> <span class="p">});</span>
<span class="k">this</span><span class="p">.</span><span class="nf">field</span><span class="p">(</span><span class="dl">'</span><span class="s1">url</span><span class="dl">'</span><span class="p">);</span>
<span class="k">this</span><span class="p">.</span><span class="nf">field</span><span class="p">(</span><span class="dl">'</span><span class="s1">date</span><span class="dl">'</span><span class="p">);</span>
<span class="k">this</span><span class="p">.</span><span class="nf">field</span><span class="p">(</span><span class="dl">'</span><span class="s1">modif</span><span class="dl">'</span><span class="p">);</span>
<span class="p">});</span>
<span class="kd">var</span> <span class="nx">html</span> <span class="o">=</span> <span class="p">[];</span>
<span class="c1">// Get the generated search_data.json file so lunr.js can search it locally.</span>
<span class="nx">datas</span> <span class="o">=</span> <span class="nx">$</span><span class="p">.</span><span class="nf">getJSON</span><span class="p">(</span><span class="nx">fichier_json</span><span class="p">);</span>
<span class="c1">// Wait for the data to load and add it to lunr</span>
<span class="nx">datas</span><span class="p">.</span><span class="nf">then</span><span class="p">(</span><span class="kd">function</span><span class="p">(</span><span class="nx">loaded_data</span><span class="p">){</span>
<span class="nx">$</span><span class="p">.</span><span class="nf">each</span><span class="p">(</span><span class="nx">loaded_data</span><span class="p">,</span> <span class="kd">function</span><span class="p">(</span><span class="nx">index</span><span class="p">,</span> <span class="nx">d</span><span class="p">){</span>
<span class="nx">idx</span><span class="p">.</span><span class="nf">add</span><span class="p">({</span>
<span class="na">id</span><span class="p">:</span> <span class="nx">index</span><span class="p">,</span>
<span class="na">title</span><span class="p">:</span> <span class="nx">d</span><span class="p">.</span><span class="nx">title</span><span class="p">,</span>
<span class="na">content</span><span class="p">:</span> <span class="nx">d</span><span class="p">.</span><span class="nx">content</span><span class="p">,</span>
<span class="na">url</span><span class="p">:</span> <span class="nx">d</span><span class="p">.</span><span class="nx">url</span><span class="p">,</span>
<span class="na">modif</span><span class="p">:</span> <span class="nx">d</span><span class="p">.</span><span class="nx">modif</span>
<span class="p">});</span>
<span class="nx">nbart</span><span class="o">=</span><span class="nx">nbart</span> <span class="o">+</span> <span class="mi">1</span><span class="p">;</span>
<span class="cm">/* //stockage item du fichier
html.push("Titre : ", d.title, ", ",
"URL : ", d.url, ", ",
"Catégorie : ", d.categories, "&lt;br&gt;");
// fin */</span>
<span class="p">});</span>
<span class="cm">/* // affichage des items
$("#div381").html(html.join('')).css("background-color", "orange");
*/</span>
<span class="c1">// on lance la fonction de callback, le json est chargé et indexé pour la recherche</span>
<span class="nf">callback</span><span class="p">();</span>
<span class="p">});</span>
<span class="nx">$</span><span class="p">.</span><span class="nf">error</span><span class="p">(</span><span class="kd">function</span><span class="p">(</span><span class="nx">jqXHR</span><span class="p">,</span> <span class="nx">textStatus</span><span class="p">,</span> <span class="nx">errorThrown</span><span class="p">){</span> <span class="cm">/* assign handler */</span>
<span class="cm">/* alert(jqXHR.responseText) */</span>
<span class="nf">alert</span><span class="p">(</span><span class="dl">"</span><span class="s2">error occurred!</span><span class="dl">"</span><span class="p">);</span>
<span class="p">});</span>
<span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
<span class="c1">// on lance la fonction de callback avec le json déjà récupéré précédemment</span>
<span class="nf">callback</span><span class="p">();</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="nf">$</span><span class="p">(</span><span class="dl">'</span><span class="s1">input#search</span><span class="dl">'</span><span class="p">).</span><span class="nf">focus</span><span class="p">();</span>
<span class="c1">// Event when the key</span>
<span class="nf">$</span><span class="p">(</span><span class="dl">'</span><span class="s1">input#search</span><span class="dl">'</span><span class="p">).</span><span class="nf">on</span><span class="p">(</span><span class="dl">'</span><span class="s1">keyup</span><span class="dl">'</span><span class="p">,</span> <span class="nf">function </span><span class="p">()</span> <span class="p">{</span>
<span class="c1">//event.preventDefault();</span>
<span class="c1">//var query = $("input#search").val(); // Get the value for the text field</span>
<span class="kd">var</span> <span class="nx">query</span> <span class="o">=</span> <span class="nf">$</span><span class="p">(</span><span class="k">this</span><span class="p">).</span><span class="nf">val</span><span class="p">();</span>
<span class="kd">var</span> <span class="nx">results</span> <span class="o">=</span> <span class="nx">idx</span><span class="p">.</span><span class="nf">search</span><span class="p">(</span><span class="nx">query</span><span class="p">);</span> <span class="c1">// Get lunr to perform a search</span>
<span class="nf">display_search_results</span><span class="p">(</span><span class="nx">results</span><span class="p">);</span> <span class="c1">// Hand the results off to be displayed</span>
<span class="p">});</span>
<span class="cm">/* fonction affichage des résultats */</span>
<span class="kd">function</span> <span class="nf">display_search_results</span><span class="p">(</span><span class="nx">results</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">$search_results</span> <span class="o">=</span> <span class="nf">$</span><span class="p">(</span><span class="dl">"</span><span class="s2">#results</span><span class="dl">"</span><span class="p">);</span>
<span class="c1">// Wait for data to load</span>
<span class="nx">datas</span><span class="p">.</span><span class="nf">then</span><span class="p">(</span><span class="kd">function</span><span class="p">(</span><span class="nx">loaded_data</span><span class="p">)</span> <span class="p">{</span>
<span class="c1">// Are there any results?</span>
<span class="k">if </span><span class="p">(</span><span class="nx">results</span><span class="p">.</span><span class="nx">length</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">$search_results</span><span class="p">.</span><span class="nf">empty</span><span class="p">();</span> <span class="c1">// Clear any old results</span>
<span class="c1">// Itération sur les résultats</span>
<span class="nx">results</span><span class="p">.</span><span class="nf">forEach</span><span class="p">(</span><span class="kd">function</span><span class="p">(</span><span class="nx">result</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">item</span> <span class="o">=</span> <span class="nx">loaded_data</span><span class="p">[</span><span class="nx">result</span><span class="p">.</span><span class="nx">ref</span><span class="p">];</span>
<span class="c1">// Création d'une chaîne HTML pour ce résultat</span>
<span class="k">if </span><span class="p">(</span><span class="nx">item</span><span class="p">.</span><span class="nx">modif</span> <span class="o">==</span> <span class="kc">null</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">datemodif</span><span class="o">=</span><span class="dl">''</span><span class="p">;</span> <span class="c1">// date de modification identique à la date de création du post , on ajoute rien</span>
<span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">datemodif</span><span class="o">=</span><span class="dl">'</span><span class="s1">&lt;span class="badge" style="background-color: #FF8C00;"&gt;&lt;small&gt;Modifié le </span><span class="dl">'</span><span class="o">+</span><span class="nx">item</span><span class="p">.</span><span class="nx">modif</span><span class="o">+</span><span class="dl">'</span><span class="s1">&lt;/small&gt;&lt;/span&gt;</span><span class="dl">'</span><span class="p">;</span> <span class="c1">// ajout date de modification</span>
<span class="p">}</span>
<span class="c1">//var appendString = '';</span>
<span class="kd">var</span> <span class="nx">appendString</span> <span class="o">=</span> <span class="dl">'</span><span class="s1">&lt;div class="result"&gt;&lt;div class="result-body"&gt;&lt;a href="</span><span class="dl">'</span><span class="o">+</span><span class="nx">item</span><span class="p">.</span><span class="nx">url</span><span class="o">+</span><span class="dl">'</span><span class="s1">" class="post-title"&gt;</span><span class="dl">'</span><span class="o">+</span><span class="nx">item</span><span class="p">.</span><span class="nx">title</span><span class="o">+</span><span class="dl">'</span><span class="s1">&lt;/a&gt;&amp;nbsp;&lt;span class="badge" style="background-color: #32CD32;"&gt;&lt;small&gt;</span><span class="dl">'</span><span class="o">+</span><span class="nx">item</span><span class="p">.</span><span class="nx">date</span><span class="o">+</span><span class="dl">'</span><span class="s1">&amp;nbsp;&lt;/small&gt;&lt;/span&gt;</span><span class="dl">'</span><span class="o">+</span><span class="nx">datemodif</span><span class="o">+</span><span class="dl">'</span><span class="s1">&lt;p&gt;</span><span class="dl">'</span><span class="o">+</span><span class="nx">item</span><span class="p">.</span><span class="nx">content</span><span class="o">+</span><span class="dl">'</span><span class="s1">&lt;/p&gt;&lt;/div&gt;</span><span class="dl">'</span>
<span class="c1">// Add the snippet to the collection of results.</span>
<span class="nx">$search_results</span><span class="p">.</span><span class="nf">append</span><span class="p">(</span><span class="nx">appendString</span><span class="p">);</span>
<span class="p">});</span>
<span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
<span class="c1">// Si aucun résultat dans la recherche ,on efface les résultats précédents </span>
<span class="nx">$search_results</span><span class="p">.</span><span class="nf">html</span><span class="p">(</span><span class="dl">''</span><span class="p">);</span>
<span class="p">}</span>
<span class="p">});</span>
<span class="p">}</span>
<span class="kd">function</span> <span class="nf">lecture</span><span class="p">()</span> <span class="p">{</span>
<span class="c1">//$("#nombre").html(nbart);</span>
<span class="p">}</span>
<span class="c1">// on initialise la lecture au premier élément</span>
<span class="nf">executerRequete</span><span class="p">(</span><span class="nx">lecture</span><span class="p">);</span>
<span class="p">});</span>
</code></pre></div></div>
<h3 id="ajouter-le-formulaire-de-recherche">Ajouter le formulaire de recherche</h3>
<p>Modifier le fichier <strong>_includes/default.html</strong> pour y inclure les 2 fichiers javascript lunr.min.js et searchplus.js sous js/</p>
<div class="language-html highlighter-rouge"><div class="highlight"><pre class="highlight"><code> <span class="nt">&lt;script </span><span class="na">src=</span><span class="s">"/js/lunr.min.js"</span><span class="nt">&gt;&lt;/script&gt;</span>
<span class="nt">&lt;script </span><span class="na">src=</span><span class="s">"/js/searchplus.js"</span><span class="nt">&gt;&lt;/script&gt;</span>
</code></pre></div></div>
<p>Le formulaire de recherche dans le fichier <strong>_includes/page.html</strong></p>
<div class="language-html highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nt">&lt;div</span> <span class="na">class=</span><span class="s">"page-header"</span><span class="nt">&gt;</span>
<span class="c">&lt;!-- &lt;span&gt;Blog statique de type jekyll sur site cinay.xyz &lt;/span&gt; --&gt;</span>
<span class="nt">&lt;div</span> <span class="na">class=</span><span class="s">"form-group"</span><span class="nt">&gt;</span>
<span class="nt">&lt;input</span> <span class="na">placeholder=</span><span class="s">"Rechercher"</span> <span class="na">type=</span><span class="s">"search"</span> <span class="na">id=</span><span class="s">"search"</span> <span class="na">class=</span><span class="s">"form-control input-lg"</span><span class="nt">&gt;</span>
<span class="nt">&lt;/div&gt;</span>
<span class="nt">&lt;div</span> <span class="na">class=</span><span class="s">"btn-group hidden-xs"</span> <span class="na">id=</span><span class="s">"nav-menu"</span><span class="nt">&gt;</span>
<span class="nt">&lt;button</span> <span class="na">type=</span><span class="s">"button"</span> <span class="na">class=</span><span class="s">"btn btn-default dropdown-toggle"</span> <span class="na">data-toggle=</span><span class="s">"dropdown"</span><span class="nt">&gt;</span>
<span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">"fa fa-bars"</span><span class="nt">&gt;&lt;/i&gt;</span>
<span class="nt">&lt;/button&gt;</span>
<span class="nt">&lt;ul</span> <span class="na">class=</span><span class="s">"dropdown-menu"</span> <span class="na">role=</span><span class="s">"menu"</span><span class="nt">&gt;</span>
<span class="nt">&lt;li&gt;&lt;a</span> <span class="na">href=</span><span class="s">"/"</span><span class="nt">&gt;&lt;i</span> <span class="na">class=</span><span class="s">"fa fa-home"</span><span class="nt">&gt;&lt;/i&gt;</span>Accueil<span class="nt">&lt;/a&gt;&lt;/li&gt;</span>
<span class="nt">&lt;li&gt;&lt;a</span> <span class="na">href=</span><span class="s">"/"</span><span class="nt">&gt;&lt;i</span> <span class="na">class=</span><span class="s">"fa fa-folder"</span><span class="nt">&gt;&lt;/i&gt;</span>Catégories<span class="nt">&lt;/a&gt;&lt;/li&gt;</span>
<span class="nt">&lt;li&gt;&lt;a</span> <span class="na">href=</span><span class="s">"/"</span><span class="nt">&gt;&lt;i</span> <span class="na">class=</span><span class="s">"fa fa-tags"</span><span class="nt">&gt;&lt;/i&gt;</span>Balises<span class="nt">&lt;/a&gt;&lt;/li&gt;</span>
<span class="nt">&lt;li</span> <span class="na">class=</span><span class="s">"divider"</span><span class="nt">&gt;&lt;/li&gt;</span>
<span class="nt">&lt;li&gt;&lt;a</span> <span class="na">href=</span><span class="s">"#"</span><span class="nt">&gt;&lt;i</span> <span class="na">class=</span><span class="s">"fa fa-arrow-up"</span><span class="nt">&gt;&lt;/i&gt;</span>Haut de la Page<span class="nt">&lt;/a&gt;&lt;/li&gt;</span>
<span class="nt">&lt;/ul&gt;</span>
<span class="nt">&lt;/div&gt;</span>
<span class="nt">&lt;div</span> <span class="na">id=</span><span class="s">"results"</span> <span class="na">class=</span><span class="s">"all-posts results"</span><span class="nt">&gt;&lt;/div&gt;</span>
<span class="nt">&lt;/div&gt;</span>
<span class="cp">&lt;!DOCTYPE html&gt;</span><span class="nt">&lt;html</span> <span class="na">lang=</span><span class="s">"fr"</span><span class="nt">&gt;</span>
<span class="nt">&lt;head&gt;&lt;meta</span> <span class="na">charset=</span><span class="s">"utf-8"</span><span class="nt">&gt;</span>
<span class="nt">&lt;meta</span> <span class="na">http-equiv=</span><span class="s">"X-UA-Compatible"</span> <span class="na">content=</span><span class="s">"IE=edge"</span><span class="nt">&gt;</span>
<span class="nt">&lt;meta</span> <span class="na">name=</span><span class="s">"viewport"</span> <span class="na">content=</span><span class="s">"width=device-width, initial-scale=1, user-scalable=no"</span><span class="nt">&gt;&lt;title&gt;</span>Nginx personnalisation des pages d'erreur - YannStatic<span class="nt">&lt;/title&gt;</span>
<span class="nt">&lt;meta</span> <span class="na">name=</span><span class="s">"description"</span> <span class="na">content=</span><span class="s">"Configurer Nginx pour utiliser des pages derreur personnalisées"</span><span class="nt">&gt;</span>
<span class="nt">&lt;link</span> <span class="na">rel=</span><span class="s">"canonical"</span> <span class="na">href=</span><span class="s">"https://static.rnmkcy.eu/2019/12/21/Nginx-personnalisation-page-erreur.html"</span><span class="nt">&gt;&lt;link</span> <span class="na">rel=</span><span class="s">"alternate"</span> <span class="na">type=</span><span class="s">"application/rss+xml"</span> <span class="na">title=</span><span class="s">"YannStatic"</span> <span class="na">href=</span><span class="s">"/feed.xml"</span><span class="nt">&gt;</span>
<span class="c">&lt;!-- - include head/favicon.html - --&gt;</span>
<span class="nt">&lt;link</span> <span class="na">rel=</span><span class="s">"shortcut icon"</span> <span class="na">type=</span><span class="s">"image/png"</span> <span class="na">href=</span><span class="s">"/assets/favicon/favicon.png"</span><span class="nt">&gt;&lt;link</span> <span class="na">rel=</span><span class="s">"stylesheet"</span> <span class="na">href=</span><span class="s">"/assets/css/main.css"</span><span class="nt">&gt;&lt;link</span> <span class="na">rel=</span><span class="s">"stylesheet"</span> <span class="na">href=</span><span class="s">"https://use.fontawesome.com/releases/v5.0.13/css/all.css"</span> <span class="nt">&gt;</span><span class="c">&lt;!-- start custom head snippets --&gt;</span><span class="nt">&lt;link</span> <span class="na">rel=</span><span class="s">"stylesheet"</span> <span class="na">href=</span><span class="s">"/assets/css/expand.css"</span><span class="nt">&gt;</span>
<span class="c">&lt;!-- end custom head snippets --&gt;</span><span class="nt">&lt;script&gt;</span><span class="p">(</span><span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
<span class="nb">window</span><span class="p">.</span><span class="nx">isArray</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">val</span><span class="p">)</span> <span class="p">{</span>
<span class="k">return</span> <span class="nb">Object</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">toString</span><span class="p">.</span><span class="nf">call</span><span class="p">(</span><span class="nx">val</span><span class="p">)</span> <span class="o">===</span> <span class="dl">'</span><span class="s1">[object Array]</span><span class="dl">'</span><span class="p">;</span>
<span class="p">};</span>
<span class="nb">window</span><span class="p">.</span><span class="nx">isString</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">val</span><span class="p">)</span> <span class="p">{</span>
<span class="k">return</span> <span class="k">typeof</span> <span class="nx">val</span> <span class="o">===</span> <span class="dl">'</span><span class="s1">string</span><span class="dl">'</span><span class="p">;</span>
<span class="p">};</span>
<span class="nb">window</span><span class="p">.</span><span class="nx">hasEvent</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">event</span><span class="p">)</span> <span class="p">{</span>
<span class="k">return</span> <span class="dl">'</span><span class="s1">on</span><span class="dl">'</span><span class="p">.</span><span class="nf">concat</span><span class="p">(</span><span class="nx">event</span><span class="p">)</span> <span class="k">in</span> <span class="nb">window</span><span class="p">.</span><span class="nb">document</span><span class="p">;</span>
<span class="p">};</span>
<span class="nb">window</span><span class="p">.</span><span class="nx">isOverallScroller</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">node</span><span class="p">)</span> <span class="p">{</span>
<span class="k">return</span> <span class="nx">node</span> <span class="o">===</span> <span class="nb">document</span><span class="p">.</span><span class="nx">documentElement</span> <span class="o">||</span> <span class="nx">node</span> <span class="o">===</span> <span class="nb">document</span><span class="p">.</span><span class="nx">body</span> <span class="o">||</span> <span class="nx">node</span> <span class="o">===</span> <span class="nb">window</span><span class="p">;</span>
<span class="p">};</span>
<span class="nb">window</span><span class="p">.</span><span class="nx">isFormElement</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">node</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">tagName</span> <span class="o">=</span> <span class="nx">node</span><span class="p">.</span><span class="nx">tagName</span><span class="p">;</span>
<span class="k">return</span> <span class="nx">tagName</span> <span class="o">===</span> <span class="dl">'</span><span class="s1">INPUT</span><span class="dl">'</span> <span class="o">||</span> <span class="nx">tagName</span> <span class="o">===</span> <span class="dl">'</span><span class="s1">SELECT</span><span class="dl">'</span> <span class="o">||</span> <span class="nx">tagName</span> <span class="o">===</span> <span class="dl">'</span><span class="s1">TEXTAREA</span><span class="dl">'</span><span class="p">;</span>
<span class="p">};</span>
<span class="nb">window</span><span class="p">.</span><span class="nx">pageLoad</span> <span class="o">=</span> <span class="p">(</span><span class="nf">function </span><span class="p">()</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">loaded</span> <span class="o">=</span> <span class="kc">false</span><span class="p">,</span> <span class="nx">cbs</span> <span class="o">=</span> <span class="p">[];</span>
<span class="nb">window</span><span class="p">.</span><span class="nf">addEventListener</span><span class="p">(</span><span class="dl">'</span><span class="s1">load</span><span class="dl">'</span><span class="p">,</span> <span class="nf">function </span><span class="p">()</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">i</span><span class="p">;</span>
<span class="nx">loaded</span> <span class="o">=</span> <span class="kc">true</span><span class="p">;</span>
<span class="k">if </span><span class="p">(</span><span class="nx">cbs</span><span class="p">.</span><span class="nx">length</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
<span class="k">for</span> <span class="p">(</span><span class="nx">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">i</span> <span class="o">&lt;</span> <span class="nx">cbs</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">cbs</span><span class="p">[</span><span class="nx">i</span><span class="p">]();</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="p">});</span>
<span class="k">return</span> <span class="p">{</span>
<span class="na">then</span><span class="p">:</span> <span class="kd">function</span><span class="p">(</span><span class="nx">cb</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">cb</span> <span class="o">&amp;&amp;</span> <span class="p">(</span><span class="nx">loaded</span> <span class="p">?</span> <span class="nf">cb</span><span class="p">()</span> <span class="p">:</span> <span class="p">(</span><span class="nx">cbs</span><span class="p">.</span><span class="nf">push</span><span class="p">(</span><span class="nx">cb</span><span class="p">)));</span>
<span class="p">}</span>
<span class="p">};</span>
<span class="p">})();</span>
<span class="p">})();</span>
<span class="p">(</span><span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
<span class="nb">window</span><span class="p">.</span><span class="nx">throttle</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">func</span><span class="p">,</span> <span class="nx">wait</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">args</span><span class="p">,</span> <span class="nx">result</span><span class="p">,</span> <span class="nx">thisArg</span><span class="p">,</span> <span class="nx">timeoutId</span><span class="p">,</span> <span class="nx">lastCalled</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
<span class="kd">function</span> <span class="nf">trailingCall</span><span class="p">()</span> <span class="p">{</span>
<span class="nx">lastCalled</span> <span class="o">=</span> <span class="k">new</span> <span class="nb">Date</span><span class="p">;</span>
<span class="nx">timeoutId</span> <span class="o">=</span> <span class="kc">null</span><span class="p">;</span>
<span class="nx">result</span> <span class="o">=</span> <span class="nx">func</span><span class="p">.</span><span class="nf">apply</span><span class="p">(</span><span class="nx">thisArg</span><span class="p">,</span> <span class="nx">args</span><span class="p">);</span>
<span class="p">}</span>
<span class="k">return</span> <span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">now</span> <span class="o">=</span> <span class="k">new</span> <span class="nb">Date</span><span class="p">,</span>
<span class="nx">remaining</span> <span class="o">=</span> <span class="nx">wait</span> <span class="o">-</span> <span class="p">(</span><span class="nx">now</span> <span class="o">-</span> <span class="nx">lastCalled</span><span class="p">);</span>
<span class="nx">args</span> <span class="o">=</span> <span class="nx">arguments</span><span class="p">;</span>
<span class="nx">thisArg</span> <span class="o">=</span> <span class="k">this</span><span class="p">;</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">remaining</span> <span class="o">&lt;=</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
<span class="nf">clearTimeout</span><span class="p">(</span><span class="nx">timeoutId</span><span class="p">);</span>
<span class="nx">timeoutId</span> <span class="o">=</span> <span class="kc">null</span><span class="p">;</span>
<span class="nx">lastCalled</span> <span class="o">=</span> <span class="nx">now</span><span class="p">;</span>
<span class="nx">result</span> <span class="o">=</span> <span class="nx">func</span><span class="p">.</span><span class="nf">apply</span><span class="p">(</span><span class="nx">thisArg</span><span class="p">,</span> <span class="nx">args</span><span class="p">);</span>
<span class="p">}</span> <span class="k">else</span> <span class="k">if </span><span class="p">(</span><span class="o">!</span><span class="nx">timeoutId</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">timeoutId</span> <span class="o">=</span> <span class="nf">setTimeout</span><span class="p">(</span><span class="nx">trailingCall</span><span class="p">,</span> <span class="nx">remaining</span><span class="p">);</span>
<span class="p">}</span>
<span class="k">return</span> <span class="nx">result</span><span class="p">;</span>
<span class="p">};</span>
<span class="p">};</span>
<span class="p">})();</span>
<span class="p">(</span><span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nb">Set</span> <span class="o">=</span> <span class="p">(</span><span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">add</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">item</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">i</span><span class="p">,</span> <span class="nx">data</span> <span class="o">=</span> <span class="k">this</span><span class="p">.</span><span class="nx">_data</span><span class="p">;</span>
<span class="k">for</span> <span class="p">(</span><span class="nx">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">i</span> <span class="o">&lt;</span> <span class="nx">data</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
<span class="k">if </span><span class="p">(</span><span class="nx">data</span><span class="p">[</span><span class="nx">i</span><span class="p">]</span> <span class="o">===</span> <span class="nx">item</span><span class="p">)</span> <span class="p">{</span>
<span class="k">return</span><span class="p">;</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="k">this</span><span class="p">.</span><span class="nx">size</span> <span class="o">++</span><span class="p">;</span>
<span class="nx">data</span><span class="p">.</span><span class="nf">push</span><span class="p">(</span><span class="nx">item</span><span class="p">);</span>
<span class="k">return</span> <span class="nx">data</span><span class="p">;</span>
<span class="p">};</span>
<span class="kd">var</span> <span class="nb">Set</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">data</span><span class="p">)</span> <span class="p">{</span>
<span class="k">this</span><span class="p">.</span><span class="nx">size</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
<span class="k">this</span><span class="p">.</span><span class="nx">_data</span> <span class="o">=</span> <span class="p">[];</span>
<span class="kd">var</span> <span class="nx">i</span><span class="p">;</span>
<span class="k">if </span><span class="p">(</span><span class="nx">data</span><span class="p">.</span><span class="nx">length</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
<span class="k">for</span> <span class="p">(</span><span class="nx">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">i</span> <span class="o">&lt;</span> <span class="nx">data</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">add</span><span class="p">.</span><span class="nf">call</span><span class="p">(</span><span class="k">this</span><span class="p">,</span> <span class="nx">data</span><span class="p">[</span><span class="nx">i</span><span class="p">]);</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="p">};</span>
<span class="nb">Set</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">add</span> <span class="o">=</span> <span class="nx">add</span><span class="p">;</span>
<span class="nb">Set</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="kd">get</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">index</span><span class="p">)</span> <span class="p">{</span> <span class="k">return</span> <span class="k">this</span><span class="p">.</span><span class="nx">_data</span><span class="p">[</span><span class="nx">index</span><span class="p">];</span> <span class="p">};</span>
<span class="nb">Set</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">has</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">item</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">i</span><span class="p">,</span> <span class="nx">data</span> <span class="o">=</span> <span class="k">this</span><span class="p">.</span><span class="nx">_data</span><span class="p">;</span>
<span class="k">for</span> <span class="p">(</span><span class="nx">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">i</span> <span class="o">&lt;</span> <span class="nx">data</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
<span class="k">if </span><span class="p">(</span><span class="k">this</span><span class="p">.</span><span class="nf">get</span><span class="p">(</span><span class="nx">i</span><span class="p">)</span> <span class="o">===</span> <span class="nx">item</span><span class="p">)</span> <span class="p">{</span>
<span class="k">return</span> <span class="kc">true</span><span class="p">;</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="k">return</span> <span class="kc">false</span><span class="p">;</span>
<span class="p">};</span>
<span class="nb">Set</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">is</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">map</span><span class="p">)</span> <span class="p">{</span>
<span class="k">if </span><span class="p">(</span><span class="nx">map</span><span class="p">.</span><span class="nx">_data</span><span class="p">.</span><span class="nx">length</span> <span class="o">!==</span> <span class="k">this</span><span class="p">.</span><span class="nx">_data</span><span class="p">.</span><span class="nx">length</span><span class="p">)</span> <span class="p">{</span> <span class="k">return</span> <span class="kc">false</span><span class="p">;</span> <span class="p">}</span>
<span class="kd">var</span> <span class="nx">i</span><span class="p">,</span> <span class="nx">j</span><span class="p">,</span> <span class="nx">flag</span><span class="p">,</span> <span class="nx">tData</span> <span class="o">=</span> <span class="k">this</span><span class="p">.</span><span class="nx">_data</span><span class="p">,</span> <span class="nx">mData</span> <span class="o">=</span> <span class="nx">map</span><span class="p">.</span><span class="nx">_data</span><span class="p">;</span>
<span class="k">for</span> <span class="p">(</span><span class="nx">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">i</span> <span class="o">&lt;</span> <span class="nx">tData</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
<span class="k">for</span> <span class="p">(</span><span class="nx">flag</span> <span class="o">=</span> <span class="kc">false</span><span class="p">,</span> <span class="nx">j</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">j</span> <span class="o">&lt;</span> <span class="nx">mData</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span> <span class="nx">j</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
<span class="k">if </span><span class="p">(</span><span class="nx">tData</span><span class="p">[</span><span class="nx">i</span><span class="p">]</span> <span class="o">===</span> <span class="nx">mData</span><span class="p">[</span><span class="nx">j</span><span class="p">])</span> <span class="p">{</span>
<span class="nx">flag</span> <span class="o">=</span> <span class="kc">true</span><span class="p">;</span>
<span class="k">break</span><span class="p">;</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="k">if </span><span class="p">(</span><span class="o">!</span><span class="nx">flag</span><span class="p">)</span> <span class="p">{</span> <span class="k">return</span> <span class="kc">false</span><span class="p">;</span> <span class="p">}</span>
<span class="p">}</span>
<span class="k">return</span> <span class="kc">true</span><span class="p">;</span>
<span class="p">};</span>
<span class="nb">Set</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">values</span> <span class="o">=</span> <span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
<span class="k">return</span> <span class="k">this</span><span class="p">.</span><span class="nx">_data</span><span class="p">;</span>
<span class="p">};</span>
<span class="k">return</span> <span class="nb">Set</span><span class="p">;</span>
<span class="p">})();</span>
<span class="nb">window</span><span class="p">.</span><span class="nx">Lazyload</span> <span class="o">=</span> <span class="p">(</span><span class="kd">function</span><span class="p">(</span><span class="nx">doc</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">queue</span> <span class="o">=</span> <span class="p">{</span><span class="na">js</span><span class="p">:</span> <span class="p">[],</span> <span class="na">css</span><span class="p">:</span> <span class="p">[]},</span> <span class="nx">sources</span> <span class="o">=</span> <span class="p">{</span><span class="na">js</span><span class="p">:</span> <span class="p">{},</span> <span class="na">css</span><span class="p">:</span> <span class="p">{}},</span> <span class="nx">context</span> <span class="o">=</span> <span class="k">this</span><span class="p">;</span>
<span class="kd">var</span> <span class="nx">createNode</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">name</span><span class="p">,</span> <span class="nx">attrs</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">node</span> <span class="o">=</span> <span class="nx">doc</span><span class="p">.</span><span class="nf">createElement</span><span class="p">(</span><span class="nx">name</span><span class="p">),</span> <span class="nx">attr</span><span class="p">;</span>
<span class="k">for </span><span class="p">(</span><span class="nx">attr</span> <span class="k">in</span> <span class="nx">attrs</span><span class="p">)</span> <span class="p">{</span>
<span class="k">if </span><span class="p">(</span><span class="nx">attrs</span><span class="p">.</span><span class="nf">hasOwnProperty</span><span class="p">(</span><span class="nx">attr</span><span class="p">))</span> <span class="p">{</span>
<span class="nx">node</span><span class="p">.</span><span class="nf">setAttribute</span><span class="p">(</span><span class="nx">attr</span><span class="p">,</span> <span class="nx">attrs</span><span class="p">[</span><span class="nx">attr</span><span class="p">]);</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="k">return</span> <span class="nx">node</span><span class="p">;</span>
<span class="p">};</span>
<span class="kd">var</span> <span class="nx">end</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">type</span><span class="p">,</span> <span class="nx">url</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">s</span><span class="p">,</span> <span class="nx">q</span><span class="p">,</span> <span class="nx">qi</span><span class="p">,</span> <span class="nx">cbs</span><span class="p">,</span> <span class="nx">i</span><span class="p">,</span> <span class="nx">j</span><span class="p">,</span> <span class="nx">cur</span><span class="p">,</span> <span class="nx">val</span><span class="p">,</span> <span class="nx">flag</span><span class="p">;</span>
<span class="k">if </span><span class="p">(</span><span class="nx">type</span> <span class="o">===</span> <span class="dl">'</span><span class="s1">js</span><span class="dl">'</span> <span class="o">||</span> <span class="nx">type</span> <span class="o">===</span><span class="dl">'</span><span class="s1">css</span><span class="dl">'</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">s</span> <span class="o">=</span> <span class="nx">sources</span><span class="p">[</span><span class="nx">type</span><span class="p">],</span> <span class="nx">q</span> <span class="o">=</span> <span class="nx">queue</span><span class="p">[</span><span class="nx">type</span><span class="p">];</span>
<span class="nx">s</span><span class="p">[</span><span class="nx">url</span><span class="p">]</span> <span class="o">=</span> <span class="kc">true</span><span class="p">;</span>
<span class="k">for</span> <span class="p">(</span><span class="nx">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">i</span> <span class="o">&lt;</span> <span class="nx">q</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">cur</span> <span class="o">=</span> <span class="nx">q</span><span class="p">[</span><span class="nx">i</span><span class="p">];</span>
<span class="k">if </span><span class="p">(</span><span class="nx">cur</span><span class="p">.</span><span class="nx">urls</span><span class="p">.</span><span class="nf">has</span><span class="p">(</span><span class="nx">url</span><span class="p">))</span> <span class="p">{</span>
<span class="nx">qi</span> <span class="o">=</span> <span class="nx">cur</span><span class="p">,</span> <span class="nx">val</span> <span class="o">=</span> <span class="nx">qi</span><span class="p">.</span><span class="nx">urls</span><span class="p">.</span><span class="nf">values</span><span class="p">();</span>
<span class="nx">qi</span> <span class="o">&amp;&amp;</span> <span class="p">(</span><span class="nx">cbs</span> <span class="o">=</span> <span class="nx">qi</span><span class="p">.</span><span class="nx">callbacks</span><span class="p">);</span>
<span class="k">for</span> <span class="p">(</span><span class="nx">flag</span> <span class="o">=</span> <span class="kc">true</span><span class="p">,</span> <span class="nx">j</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">j</span> <span class="o">&lt;</span> <span class="nx">val</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span> <span class="nx">j</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">cur</span> <span class="o">=</span> <span class="nx">val</span><span class="p">[</span><span class="nx">j</span><span class="p">];</span>
<span class="k">if </span><span class="p">(</span><span class="o">!</span><span class="nx">s</span><span class="p">[</span><span class="nx">cur</span><span class="p">])</span> <span class="p">{</span>
<span class="nx">flag</span> <span class="o">=</span> <span class="kc">false</span><span class="p">;</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="k">if </span><span class="p">(</span><span class="nx">flag</span> <span class="o">&amp;&amp;</span> <span class="nx">cbs</span> <span class="o">&amp;&amp;</span> <span class="nx">cbs</span><span class="p">.</span><span class="nx">length</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
<span class="k">for</span> <span class="p">(</span><span class="nx">j</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">j</span> <span class="o">&lt;</span> <span class="nx">cbs</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span> <span class="nx">j</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">cbs</span><span class="p">[</span><span class="nx">j</span><span class="p">].</span><span class="nf">call</span><span class="p">(</span><span class="nx">context</span><span class="p">);</span>
<span class="p">}</span>
<span class="nx">qi</span><span class="p">.</span><span class="nx">load</span> <span class="o">=</span> <span class="kc">true</span><span class="p">;</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="p">};</span>
<span class="kd">var</span> <span class="nx">load</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">type</span><span class="p">,</span> <span class="nx">urls</span><span class="p">,</span> <span class="nx">callback</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">s</span><span class="p">,</span> <span class="nx">q</span><span class="p">,</span> <span class="nx">qi</span><span class="p">,</span> <span class="nx">node</span><span class="p">,</span> <span class="nx">i</span><span class="p">,</span> <span class="nx">cur</span><span class="p">,</span>
<span class="nx">_urls</span> <span class="o">=</span> <span class="k">typeof</span> <span class="nx">urls</span> <span class="o">===</span> <span class="dl">'</span><span class="s1">string</span><span class="dl">'</span> <span class="p">?</span> <span class="k">new</span> <span class="nc">Set</span><span class="p">([</span><span class="nx">urls</span><span class="p">])</span> <span class="p">:</span> <span class="k">new</span> <span class="nc">Set</span><span class="p">(</span><span class="nx">urls</span><span class="p">),</span> <span class="nx">val</span><span class="p">,</span> <span class="nx">url</span><span class="p">;</span>
<span class="k">if </span><span class="p">(</span><span class="nx">type</span> <span class="o">===</span> <span class="dl">'</span><span class="s1">js</span><span class="dl">'</span> <span class="o">||</span> <span class="nx">type</span> <span class="o">===</span><span class="dl">'</span><span class="s1">css</span><span class="dl">'</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">s</span> <span class="o">=</span> <span class="nx">sources</span><span class="p">[</span><span class="nx">type</span><span class="p">],</span> <span class="nx">q</span> <span class="o">=</span> <span class="nx">queue</span><span class="p">[</span><span class="nx">type</span><span class="p">];</span>
<span class="k">for</span> <span class="p">(</span><span class="nx">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">i</span> <span class="o">&lt;</span> <span class="nx">q</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">cur</span> <span class="o">=</span> <span class="nx">q</span><span class="p">[</span><span class="nx">i</span><span class="p">];</span>
<span class="k">if </span><span class="p">(</span><span class="nx">_urls</span><span class="p">.</span><span class="nf">is</span><span class="p">(</span><span class="nx">cur</span><span class="p">.</span><span class="nx">urls</span><span class="p">))</span> <span class="p">{</span>
<span class="nx">qi</span> <span class="o">=</span> <span class="nx">cur</span><span class="p">;</span>
<span class="k">break</span><span class="p">;</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="nx">val</span> <span class="o">=</span> <span class="nx">_urls</span><span class="p">.</span><span class="nf">values</span><span class="p">();</span>
<span class="k">if </span><span class="p">(</span><span class="nx">qi</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">callback</span> <span class="o">&amp;&amp;</span> <span class="p">(</span><span class="nx">qi</span><span class="p">.</span><span class="nx">load</span> <span class="o">||</span> <span class="nx">qi</span><span class="p">.</span><span class="nx">callbacks</span><span class="p">.</span><span class="nf">push</span><span class="p">(</span><span class="nx">callback</span><span class="p">));</span>
<span class="nx">callback</span> <span class="o">&amp;&amp;</span> <span class="p">(</span><span class="nx">qi</span><span class="p">.</span><span class="nx">load</span> <span class="o">&amp;&amp;</span> <span class="nf">callback</span><span class="p">());</span>
<span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
<span class="nx">q</span><span class="p">.</span><span class="nf">push</span><span class="p">({</span>
<span class="na">urls</span><span class="p">:</span> <span class="nx">_urls</span><span class="p">,</span>
<span class="na">callbacks</span><span class="p">:</span> <span class="nx">callback</span> <span class="p">?</span> <span class="p">[</span><span class="nx">callback</span><span class="p">]</span> <span class="p">:</span> <span class="p">[],</span>
<span class="na">load</span><span class="p">:</span> <span class="kc">false</span>
<span class="p">});</span>
<span class="k">for</span> <span class="p">(</span><span class="nx">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">i</span> <span class="o">&lt;</span> <span class="nx">val</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">node</span> <span class="o">=</span> <span class="kc">null</span><span class="p">,</span> <span class="nx">url</span> <span class="o">=</span> <span class="nx">val</span><span class="p">[</span><span class="nx">i</span><span class="p">];</span>
<span class="k">if </span><span class="p">(</span><span class="nx">s</span><span class="p">[</span><span class="nx">url</span><span class="p">]</span> <span class="o">===</span> <span class="kc">undefined</span><span class="p">)</span> <span class="p">{</span>
<span class="p">(</span><span class="nx">type</span> <span class="o">===</span> <span class="dl">'</span><span class="s1">js</span><span class="dl">'</span> <span class="p">)</span> <span class="o">&amp;&amp;</span> <span class="p">(</span><span class="nx">node</span> <span class="o">=</span> <span class="nf">createNode</span><span class="p">(</span><span class="dl">'</span><span class="s1">script</span><span class="dl">'</span><span class="p">,</span> <span class="p">{</span> <span class="na">src</span><span class="p">:</span> <span class="nx">url</span> <span class="p">}));</span>
<span class="p">(</span><span class="nx">type</span> <span class="o">===</span> <span class="dl">'</span><span class="s1">css</span><span class="dl">'</span><span class="p">)</span> <span class="o">&amp;&amp;</span> <span class="p">(</span><span class="nx">node</span> <span class="o">=</span> <span class="nf">createNode</span><span class="p">(</span><span class="dl">'</span><span class="s1">link</span><span class="dl">'</span><span class="p">,</span> <span class="p">{</span> <span class="na">rel</span><span class="p">:</span> <span class="dl">'</span><span class="s1">stylesheet</span><span class="dl">'</span><span class="p">,</span> <span class="na">href</span><span class="p">:</span> <span class="nx">url</span> <span class="p">}));</span>
<span class="k">if </span><span class="p">(</span><span class="nx">node</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">node</span><span class="p">.</span><span class="nx">onload</span> <span class="o">=</span> <span class="p">(</span><span class="kd">function</span><span class="p">(</span><span class="nx">type</span><span class="p">,</span> <span class="nx">url</span><span class="p">)</span> <span class="p">{</span>
<span class="k">return</span> <span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
<span class="nf">end</span><span class="p">(</span><span class="nx">type</span><span class="p">,</span> <span class="nx">url</span><span class="p">);</span>
<span class="p">};</span>
<span class="p">})(</span><span class="nx">type</span><span class="p">,</span> <span class="nx">url</span><span class="p">);</span>
<span class="p">(</span><span class="nx">doc</span><span class="p">.</span><span class="nx">head</span> <span class="o">||</span> <span class="nx">doc</span><span class="p">.</span><span class="nx">body</span><span class="p">).</span><span class="nf">appendChild</span><span class="p">(</span><span class="nx">node</span><span class="p">);</span>
<span class="nx">s</span><span class="p">[</span><span class="nx">url</span><span class="p">]</span> <span class="o">=</span> <span class="kc">false</span><span class="p">;</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="p">};</span>
<span class="k">return</span> <span class="p">{</span>
<span class="na">js</span><span class="p">:</span> <span class="kd">function</span><span class="p">(</span><span class="nx">url</span><span class="p">,</span> <span class="nx">callback</span><span class="p">)</span> <span class="p">{</span>
<span class="nf">load</span><span class="p">(</span><span class="dl">'</span><span class="s1">js</span><span class="dl">'</span><span class="p">,</span> <span class="nx">url</span><span class="p">,</span> <span class="nx">callback</span><span class="p">);</span>
<span class="p">},</span>
<span class="na">css</span><span class="p">:</span> <span class="kd">function</span><span class="p">(</span><span class="nx">url</span><span class="p">,</span> <span class="nx">callback</span><span class="p">)</span> <span class="p">{</span>
<span class="nf">load</span><span class="p">(</span><span class="dl">'</span><span class="s1">css</span><span class="dl">'</span><span class="p">,</span> <span class="nx">url</span><span class="p">,</span> <span class="nx">callback</span><span class="p">);</span>
<span class="p">}</span>
<span class="p">};</span>
<span class="p">})(</span><span class="k">this</span><span class="p">.</span><span class="nb">document</span><span class="p">);</span>
<span class="p">})();</span>
<span class="nt">&lt;/script&gt;&lt;script&gt;</span>
<span class="p">(</span><span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">TEXT_VARIABLES</span> <span class="o">=</span> <span class="p">{</span>
<span class="na">version</span><span class="p">:</span> <span class="dl">'</span><span class="s1">2.2.6</span><span class="dl">'</span><span class="p">,</span>
<span class="na">sources</span><span class="p">:</span> <span class="p">{</span>
<span class="na">font_awesome</span><span class="p">:</span> <span class="dl">'</span><span class="s1">https://use.fontawesome.com/releases/v5.0.13/css/all.css</span><span class="dl">'</span><span class="p">,</span>
<span class="na">jquery</span><span class="p">:</span> <span class="dl">'</span><span class="s1">/assets/js/jquery.min.js</span><span class="dl">'</span><span class="p">,</span>
<span class="na">leancloud_js_sdk</span><span class="p">:</span> <span class="dl">'</span><span class="s1">//cdn.jsdelivr.net/npm/leancloud-storage@3.13.2/dist/av-min.js</span><span class="dl">'</span><span class="p">,</span>
<span class="na">chart</span><span class="p">:</span> <span class="dl">'</span><span class="s1">https://cdn.bootcss.com/Chart.js/2.7.2/Chart.bundle.min.js</span><span class="dl">'</span><span class="p">,</span>
<span class="na">gitalk</span><span class="p">:</span> <span class="p">{</span>
<span class="na">js</span><span class="p">:</span> <span class="dl">'</span><span class="s1">https://cdn.bootcss.com/gitalk/1.2.2/gitalk.min.js</span><span class="dl">'</span><span class="p">,</span>
<span class="na">css</span><span class="p">:</span> <span class="dl">'</span><span class="s1">https://cdn.bootcss.com/gitalk/1.2.2/gitalk.min.css</span><span class="dl">'</span>
<span class="p">},</span>
<span class="na">valine</span><span class="p">:</span> <span class="dl">'</span><span class="s1">https://unpkg.com/valine/dist/Valine.min.js</span><span class="dl">'</span>
<span class="p">},</span>
<span class="na">site</span><span class="p">:</span> <span class="p">{</span>
<span class="na">toc</span><span class="p">:</span> <span class="p">{</span>
<span class="na">selectors</span><span class="p">:</span> <span class="dl">'</span><span class="s1">h1,h2,h3</span><span class="dl">'</span>
<span class="p">}</span>
<span class="p">},</span>
<span class="na">paths</span><span class="p">:</span> <span class="p">{</span>
<span class="na">search_js</span><span class="p">:</span> <span class="dl">'</span><span class="s1">/assets/search.js</span><span class="dl">'</span>
<span class="p">}</span>
<span class="p">};</span>
<span class="nb">window</span><span class="p">.</span><span class="nx">TEXT_VARIABLES</span> <span class="o">=</span> <span class="nx">TEXT_VARIABLES</span><span class="p">;</span>
<span class="p">})();</span>
<span class="nt">&lt;/script&gt;</span>
<span class="nt">&lt;/head&gt;</span>
<span class="nt">&lt;body&gt;</span>
<span class="nt">&lt;div</span> <span class="na">class=</span><span class="s">"root"</span> <span class="na">data-is-touch=</span><span class="s">"false"</span><span class="nt">&gt;</span>
<span class="nt">&lt;div</span> <span class="na">class=</span><span class="s">"layout--page js-page-root"</span><span class="nt">&gt;</span><span class="c">&lt;!----&gt;</span><span class="nt">&lt;div</span> <span class="na">class=</span><span class="s">"page__main js-page-main page__viewport hide-footer has-aside has-aside cell cell--auto"</span><span class="nt">&gt;</span>
<span class="nt">&lt;div</span> <span class="na">class=</span><span class="s">"page__main-inner"</span><span class="nt">&gt;&lt;div</span> <span class="na">class=</span><span class="s">"page__header d-print-none"</span><span class="nt">&gt;&lt;header</span> <span class="na">class=</span><span class="s">"header"</span><span class="nt">&gt;&lt;div</span> <span class="na">class=</span><span class="s">"main"</span><span class="nt">&gt;</span>
<span class="nt">&lt;div</span> <span class="na">class=</span><span class="s">"header__title"</span><span class="nt">&gt;</span>
<span class="nt">&lt;div</span> <span class="na">class=</span><span class="s">"header__brand"</span><span class="nt">&gt;&lt;svg</span> <span class="na">id=</span><span class="s">"svg"</span> <span class="na">version=</span><span class="s">"1.1"</span> <span class="na">xmlns=</span><span class="s">"http://www.w3.org/2000/svg"</span> <span class="na">xmlns:xlink=</span><span class="s">"http://www.w3.org/1999/xlink"</span> <span class="na">width=</span><span class="s">"400"</span> <span class="na">height=</span><span class="s">"478.9473684210526"</span> <span class="na">viewBox=</span><span class="s">"0, 0, 400,478.9473684210526"</span><span class="nt">&gt;&lt;g</span> <span class="na">id=</span><span class="s">"svgg"</span><span class="nt">&gt;&lt;path</span> <span class="na">id=</span><span class="s">"path0"</span> <span class="na">d=</span><span class="s">"M308.400 56.805 C 306.970 56.966,303.280 57.385,300.200 57.738 C 290.906 58.803,278.299 59.676,269.200 59.887 L 260.600 60.085 259.400 61.171 C 258.010 62.428,256.198 63.600,255.645 63.600 C 255.070 63.600,252.887 65.897,252.598 66.806 C 252.460 67.243,252.206 67.600,252.034 67.600 C 251.397 67.600,247.206 71.509,247.202 72.107 C 247.201 72.275,246.390 73.190,245.400 74.138 C 243.961 75.517,243.598 76.137,243.592 77.231 C 243.579 79.293,241.785 83.966,240.470 85.364 C 239.176 86.740,238.522 88.365,237.991 91.521 C 237.631 93.665,236.114 97.200,235.554 97.200 C 234.938 97.200,232.737 102.354,232.450 104.472 C 232.158 106.625,230.879 109.226,229.535 110.400 C 228.933 110.926,228.171 113.162,226.434 119.500 C 226.178 120.435,225.795 121.200,225.584 121.200 C 225.373 121.200,225.200 121.476,225.200 121.813 C 225.200 122.149,224.885 122.541,224.500 122.683 C 223.606 123.013,223.214 123.593,223.204 124.600 C 223.183 126.555,220.763 132.911,219.410 134.562 C 218.443 135.742,217.876 136.956,217.599 138.440 C 217.041 141.424,215.177 146.434,214.532 146.681 C 214.240 146.794,214.000 147.055,214.000 147.261 C 214.000 147.467,213.550 148.086,213.000 148.636 C 212.450 149.186,212.000 149.893,212.000 150.208 C 212.000 151.386,208.441 154.450,207.597 153.998 C 206.319 153.315,204.913 150.379,204.633 147.811 C 204.365 145.357,202.848 142.147,201.759 141.729 C 200.967 141.425,199.200 137.451,199.200 135.974 C 199.200 134.629,198.435 133.224,196.660 131.311 C 195.363 129.913,194.572 128.123,193.870 125.000 C 193.623 123.900,193.236 122.793,193.010 122.540 C 190.863 120.133,190.147 118.880,188.978 115.481 C 188.100 112.928,187.151 111.003,186.254 109.955 C 185.358 108.908,184.518 107.204,183.847 105.073 C 183.280 103.273,182.497 101.329,182.108 100.753 C 181.719 100.177,180.904 98.997,180.298 98.131 C 179.693 97.265,178.939 95.576,178.624 94.378 C 178.041 92.159,177.125 90.326,175.023 87.168 C 174.375 86.196,173.619 84.539,173.342 83.486 C 172.800 81.429,171.529 79.567,170.131 78.785 C 169.654 78.517,168.697 77.511,168.006 76.549 C 167.316 75.587,166.594 74.800,166.402 74.800 C 166.210 74.800,164.869 73.633,163.421 72.206 C 160.103 68.936,161.107 69.109,146.550 69.301 C 133.437 69.474,128.581 70.162,126.618 72.124 C 126.248 72.495,125.462 72.904,124.872 73.033 C 124.282 73.163,123.088 73.536,122.219 73.863 C 121.349 74.191,119.028 74.638,117.061 74.858 C 113.514 75.254,109.970 76.350,108.782 77.419 C 107.652 78.436,100.146 80.400,97.388 80.400 C 95.775 80.400,93.167 81.360,91.200 82.679 C 90.430 83.195,89.113 83.804,88.274 84.031 C 85.875 84.681,78.799 90.910,74.400 96.243 L 73.400 97.456 73.455 106.028 C 73.526 117.055,74.527 121.238,77.820 124.263 C 78.919 125.273,80.400 127.902,80.400 128.842 C 80.400 129.202,81.075 130.256,81.900 131.186 C 83.563 133.059,85.497 136.346,86.039 138.216 C 86.233 138.886,87.203 140.207,88.196 141.153 C 89.188 142.098,90.000 143.104,90.000 143.388 C 90.000 144.337,92.129 148.594,92.869 149.123 C 93.271 149.410,93.600 149.831,93.600 150.059 C 93.600 150.286,93.932 150.771,94.337 151.136 C 94.743 151.501,95.598 153.004,96.237 154.475 C 96.877 155.947,97.760 157.351,98.200 157.596 C 98.640 157.841,99.900 159.943,101.000 162.267 C 102.207 164.817,10
"</span> <span class="na">href=</span><span class="s">"/"</span><span class="nt">&gt;</span>YannStatic<span class="nt">&lt;/a&gt;&lt;/div&gt;</span><span class="c">&lt;!--&lt;button class="button button--secondary button--circle search-button js-search-toggle"&gt;&lt;i class="fas fa-search"&gt;&lt;/i&gt;&lt;/button&gt;--&gt;&lt;!-- &lt;li&gt;&lt;button class="button button--secondary button--circle search-button js-search-toggle"&gt;&lt;i class="fas fa-search"&gt;&lt;/i&gt;&lt;/button&gt;&lt;/li&gt; --&gt;</span>
<span class="c">&lt;!-- Champ de recherche --&gt;</span>
<span class="nt">&lt;div</span> <span class="na">id=</span><span class="s">"searchbox"</span> <span class="na">class=</span><span class="s">"search search--dark"</span> <span class="na">style=</span><span class="s">"visibility: visible"</span><span class="nt">&gt;</span>
<span class="nt">&lt;div</span> <span class="na">class=</span><span class="s">"main"</span><span class="nt">&gt;</span>
<span class="nt">&lt;div</span> <span class="na">class=</span><span class="s">"search__header"</span><span class="nt">&gt;&lt;/div&gt;</span>
<span class="nt">&lt;div</span> <span class="na">class=</span><span class="s">"search-bar"</span><span class="nt">&gt;</span>
<span class="nt">&lt;div</span> <span class="na">class=</span><span class="s">"search-box js-search-box"</span><span class="nt">&gt;</span>
<span class="nt">&lt;div</span> <span class="na">class=</span><span class="s">"search-box__icon-search"</span><span class="nt">&gt;&lt;i</span> <span class="na">class=</span><span class="s">"fas fa-search"</span><span class="nt">&gt;&lt;/i&gt;&lt;/div&gt;</span>
<span class="nt">&lt;input</span> <span class="na">id=</span><span class="s">"search-input"</span> <span class="na">type=</span><span class="s">"text"</span> <span class="nt">/&gt;</span>
<span class="c">&lt;!-- &lt;div class="search-box__icon-clear js-icon-clear"&gt;
&lt;a&gt;&lt;i class="fas fa-times"&gt;&lt;/i&gt;&lt;/a&gt;
&lt;/div&gt; --&gt;</span>
<span class="nt">&lt;/div&gt;</span>
<span class="nt">&lt;/div&gt;</span>
<span class="nt">&lt;/div&gt;</span>
<span class="nt">&lt;/div&gt;</span>
<span class="c">&lt;!-- Script pointing to search-script.js --&gt;</span>
<span class="nt">&lt;script&gt;</span><span class="cm">/*!
* Simple-Jekyll-Search
* Copyright 2015-2020, Christian Fei
* Licensed under the MIT License.
*/</span>
<span class="p">(</span><span class="kd">function</span><span class="p">(){</span>
<span class="dl">'</span><span class="s1">use strict</span><span class="dl">'</span>
<span class="kd">var</span> <span class="nx">_$Templater_7</span> <span class="o">=</span> <span class="p">{</span>
<span class="na">compile</span><span class="p">:</span> <span class="nx">compile</span><span class="p">,</span>
<span class="na">setOptions</span><span class="p">:</span> <span class="nx">setOptions</span>
<span class="p">}</span>
<span class="kd">const</span> <span class="nx">options</span> <span class="o">=</span> <span class="p">{}</span>
<span class="nx">options</span><span class="p">.</span><span class="nx">pattern</span> <span class="o">=</span> <span class="sr">/</span><span class="se">\{(</span><span class="sr">.*</span><span class="se">?)\}</span><span class="sr">/g</span>
<span class="nx">options</span><span class="p">.</span><span class="nx">template</span> <span class="o">=</span> <span class="dl">''</span>
<span class="nx">options</span><span class="p">.</span><span class="nx">middleware</span> <span class="o">=</span> <span class="nf">function </span><span class="p">()</span> <span class="p">{}</span>
<span class="kd">function</span> <span class="nf">setOptions</span> <span class="p">(</span><span class="nx">_options</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">options</span><span class="p">.</span><span class="nx">pattern</span> <span class="o">=</span> <span class="nx">_options</span><span class="p">.</span><span class="nx">pattern</span> <span class="o">||</span> <span class="nx">options</span><span class="p">.</span><span class="nx">pattern</span>
<span class="nx">options</span><span class="p">.</span><span class="nx">template</span> <span class="o">=</span> <span class="nx">_options</span><span class="p">.</span><span class="nx">template</span> <span class="o">||</span> <span class="nx">options</span><span class="p">.</span><span class="nx">template</span>
<span class="k">if </span><span class="p">(</span><span class="k">typeof</span> <span class="nx">_options</span><span class="p">.</span><span class="nx">middleware</span> <span class="o">===</span> <span class="dl">'</span><span class="s1">function</span><span class="dl">'</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">options</span><span class="p">.</span><span class="nx">middleware</span> <span class="o">=</span> <span class="nx">_options</span><span class="p">.</span><span class="nx">middleware</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="kd">function</span> <span class="nf">compile</span> <span class="p">(</span><span class="nx">data</span><span class="p">)</span> <span class="p">{</span>
<span class="k">return</span> <span class="nx">options</span><span class="p">.</span><span class="nx">template</span><span class="p">.</span><span class="nf">replace</span><span class="p">(</span><span class="nx">options</span><span class="p">.</span><span class="nx">pattern</span><span class="p">,</span> <span class="nf">function </span><span class="p">(</span><span class="nx">match</span><span class="p">,</span> <span class="nx">prop</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">const</span> <span class="nx">value</span> <span class="o">=</span> <span class="nx">options</span><span class="p">.</span><span class="nf">middleware</span><span class="p">(</span><span class="nx">prop</span><span class="p">,</span> <span class="nx">data</span><span class="p">[</span><span class="nx">prop</span><span class="p">],</span> <span class="nx">options</span><span class="p">.</span><span class="nx">template</span><span class="p">)</span>
<span class="k">if </span><span class="p">(</span><span class="k">typeof</span> <span class="nx">value</span> <span class="o">!==</span> <span class="dl">'</span><span class="s1">undefined</span><span class="dl">'</span><span class="p">)</span> <span class="p">{</span>
<span class="k">return</span> <span class="nx">value</span>
<span class="p">}</span>
<span class="k">return</span> <span class="nx">data</span><span class="p">[</span><span class="nx">prop</span><span class="p">]</span> <span class="o">||</span> <span class="nx">match</span>
<span class="p">})</span>
<span class="p">}</span>
<span class="dl">'</span><span class="s1">use strict</span><span class="dl">'</span><span class="p">;</span>
<span class="kd">function</span> <span class="nf">fuzzysearch</span> <span class="p">(</span><span class="nx">needle</span><span class="p">,</span> <span class="nx">haystack</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">tlen</span> <span class="o">=</span> <span class="nx">haystack</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span>
<span class="kd">var</span> <span class="nx">qlen</span> <span class="o">=</span> <span class="nx">needle</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span>
<span class="k">if </span><span class="p">(</span><span class="nx">qlen</span> <span class="o">&gt;</span> <span class="nx">tlen</span><span class="p">)</span> <span class="p">{</span>
<span class="k">return</span> <span class="kc">false</span><span class="p">;</span>
<span class="p">}</span>
<span class="k">if </span><span class="p">(</span><span class="nx">qlen</span> <span class="o">===</span> <span class="nx">tlen</span><span class="p">)</span> <span class="p">{</span>
<span class="k">return</span> <span class="nx">needle</span> <span class="o">===</span> <span class="nx">haystack</span><span class="p">;</span>
<span class="p">}</span>
<span class="nl">outer</span><span class="p">:</span> <span class="k">for</span> <span class="p">(</span><span class="kd">var</span> <span class="nx">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span> <span class="nx">j</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">i</span> <span class="o">&lt;</span> <span class="nx">qlen</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">nch</span> <span class="o">=</span> <span class="nx">needle</span><span class="p">.</span><span class="nf">charCodeAt</span><span class="p">(</span><span class="nx">i</span><span class="p">);</span>
<span class="k">while</span> <span class="p">(</span><span class="nx">j</span> <span class="o">&lt;</span> <span class="nx">tlen</span><span class="p">)</span> <span class="p">{</span>
<span class="k">if </span><span class="p">(</span><span class="nx">haystack</span><span class="p">.</span><span class="nf">charCodeAt</span><span class="p">(</span><span class="nx">j</span><span class="o">++</span><span class="p">)</span> <span class="o">===</span> <span class="nx">nch</span><span class="p">)</span> <span class="p">{</span>
<span class="k">continue</span> <span class="nx">outer</span><span class="p">;</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="k">return</span> <span class="kc">false</span><span class="p">;</span>
<span class="p">}</span>
<span class="k">return</span> <span class="kc">true</span><span class="p">;</span>
<span class="p">}</span>
<span class="kd">var</span> <span class="nx">_$fuzzysearch_1</span> <span class="o">=</span> <span class="nx">fuzzysearch</span><span class="p">;</span>
<span class="dl">'</span><span class="s1">use strict</span><span class="dl">'</span>
<span class="cm">/* removed: const _$fuzzysearch_1 = require('fuzzysearch') */</span><span class="p">;</span>
<span class="kd">var</span> <span class="nx">_$FuzzySearchStrategy_5</span> <span class="o">=</span> <span class="k">new</span> <span class="nc">FuzzySearchStrategy</span><span class="p">()</span>
<span class="kd">function</span> <span class="nf">FuzzySearchStrategy</span> <span class="p">()</span> <span class="p">{</span>
<span class="k">this</span><span class="p">.</span><span class="nx">matches</span> <span class="o">=</span> <span class="nf">function </span><span class="p">(</span><span class="nx">string</span><span class="p">,</span> <span class="nx">crit</span><span class="p">)</span> <span class="p">{</span>
<span class="k">return</span> <span class="nx">_</span><span class="nf">$fuzzysearch_1</span><span class="p">(</span><span class="nx">crit</span><span class="p">.</span><span class="nf">toLowerCase</span><span class="p">(),</span> <span class="nx">string</span><span class="p">.</span><span class="nf">toLowerCase</span><span class="p">())</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="dl">'</span><span class="s1">use strict</span><span class="dl">'</span>
<span class="kd">var</span> <span class="nx">_$LiteralSearchStrategy_6</span> <span class="o">=</span> <span class="k">new</span> <span class="nc">LiteralSearchStrategy</span><span class="p">()</span>
<span class="kd">function</span> <span class="nf">LiteralSearchStrategy</span> <span class="p">()</span> <span class="p">{</span>
<span class="k">this</span><span class="p">.</span><span class="nx">matches</span> <span class="o">=</span> <span class="nf">function </span><span class="p">(</span><span class="nx">str</span><span class="p">,</span> <span class="nx">crit</span><span class="p">)</span> <span class="p">{</span>
<span class="k">if </span><span class="p">(</span><span class="o">!</span><span class="nx">str</span><span class="p">)</span> <span class="k">return</span> <span class="kc">false</span>
<span class="nx">str</span> <span class="o">=</span> <span class="nx">str</span><span class="p">.</span><span class="nf">trim</span><span class="p">().</span><span class="nf">toLowerCase</span><span class="p">()</span>
<span class="nx">crit</span> <span class="o">=</span> <span class="nx">crit</span><span class="p">.</span><span class="nf">trim</span><span class="p">().</span><span class="nf">toLowerCase</span><span class="p">()</span>
<span class="k">return</span> <span class="nx">crit</span><span class="p">.</span><span class="nf">split</span><span class="p">(</span><span class="dl">'</span><span class="s1"> </span><span class="dl">'</span><span class="p">).</span><span class="nf">filter</span><span class="p">(</span><span class="nf">function </span><span class="p">(</span><span class="nx">word</span><span class="p">)</span> <span class="p">{</span>
<span class="k">return</span> <span class="nx">str</span><span class="p">.</span><span class="nf">indexOf</span><span class="p">(</span><span class="nx">word</span><span class="p">)</span> <span class="o">&gt;=</span> <span class="mi">0</span>
<span class="p">}).</span><span class="nx">length</span> <span class="o">===</span> <span class="nx">crit</span><span class="p">.</span><span class="nf">split</span><span class="p">(</span><span class="dl">'</span><span class="s1"> </span><span class="dl">'</span><span class="p">).</span><span class="nx">length</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="dl">'</span><span class="s1">use strict</span><span class="dl">'</span>
<span class="kd">var</span> <span class="nx">_$Repository_4</span> <span class="o">=</span> <span class="p">{</span>
<span class="na">put</span><span class="p">:</span> <span class="nx">put</span><span class="p">,</span>
<span class="na">clear</span><span class="p">:</span> <span class="nx">clear</span><span class="p">,</span>
<span class="na">search</span><span class="p">:</span> <span class="nx">search</span><span class="p">,</span>
<span class="na">setOptions</span><span class="p">:</span> <span class="nx">__setOptions_4</span>
<span class="p">}</span>
<span class="cm">/* removed: const _$FuzzySearchStrategy_5 = require('./SearchStrategies/FuzzySearchStrategy') */</span><span class="p">;</span>
<span class="cm">/* removed: const _$LiteralSearchStrategy_6 = require('./SearchStrategies/LiteralSearchStrategy') */</span><span class="p">;</span>
<span class="kd">function</span> <span class="nf">NoSort</span> <span class="p">()</span> <span class="p">{</span>
<span class="k">return</span> <span class="mi">0</span>
<span class="p">}</span>
<span class="kd">const</span> <span class="nx">data</span> <span class="o">=</span> <span class="p">[]</span>
<span class="kd">let</span> <span class="nx">opt</span> <span class="o">=</span> <span class="p">{}</span>
<span class="nx">opt</span><span class="p">.</span><span class="nx">fuzzy</span> <span class="o">=</span> <span class="kc">false</span>
<span class="nx">opt</span><span class="p">.</span><span class="nx">limit</span> <span class="o">=</span> <span class="mi">10</span>
<span class="nx">opt</span><span class="p">.</span><span class="nx">searchStrategy</span> <span class="o">=</span> <span class="nx">opt</span><span class="p">.</span><span class="nx">fuzzy</span> <span class="p">?</span> <span class="nx">_$FuzzySearchStrategy_5</span> <span class="p">:</span> <span class="nx">_$LiteralSearchStrategy_6</span>
<span class="nx">opt</span><span class="p">.</span><span class="nx">sort</span> <span class="o">=</span> <span class="nx">NoSort</span>
<span class="nx">opt</span><span class="p">.</span><span class="nx">exclude</span> <span class="o">=</span> <span class="p">[]</span>
<span class="kd">function</span> <span class="nf">put</span> <span class="p">(</span><span class="nx">data</span><span class="p">)</span> <span class="p">{</span>
<span class="k">if </span><span class="p">(</span><span class="nf">isObject</span><span class="p">(</span><span class="nx">data</span><span class="p">))</span> <span class="p">{</span>
<span class="k">return</span> <span class="nf">addObject</span><span class="p">(</span><span class="nx">data</span><span class="p">)</span>
<span class="p">}</span>
<span class="k">if </span><span class="p">(</span><span class="nf">isArray</span><span class="p">(</span><span class="nx">data</span><span class="p">))</span> <span class="p">{</span>
<span class="k">return</span> <span class="nf">addArray</span><span class="p">(</span><span class="nx">data</span><span class="p">)</span>
<span class="p">}</span>
<span class="k">return</span> <span class="kc">undefined</span>
<span class="p">}</span>
<span class="kd">function</span> <span class="nf">clear</span> <span class="p">()</span> <span class="p">{</span>
<span class="nx">data</span><span class="p">.</span><span class="nx">length</span> <span class="o">=</span> <span class="mi">0</span>
<span class="k">return</span> <span class="nx">data</span>
<span class="p">}</span>
<span class="kd">function</span> <span class="nf">isObject</span> <span class="p">(</span><span class="nx">obj</span><span class="p">)</span> <span class="p">{</span>
<span class="k">return</span> <span class="nc">Boolean</span><span class="p">(</span><span class="nx">obj</span><span class="p">)</span> <span class="o">&amp;&amp;</span> <span class="nb">Object</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">toString</span><span class="p">.</span><span class="nf">call</span><span class="p">(</span><span class="nx">obj</span><span class="p">)</span> <span class="o">===</span> <span class="dl">'</span><span class="s1">[object Object]</span><span class="dl">'</span>
<span class="p">}</span>
<span class="kd">function</span> <span class="nf">isArray</span> <span class="p">(</span><span class="nx">obj</span><span class="p">)</span> <span class="p">{</span>
<span class="k">return</span> <span class="nc">Boolean</span><span class="p">(</span><span class="nx">obj</span><span class="p">)</span> <span class="o">&amp;&amp;</span> <span class="nb">Object</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">toString</span><span class="p">.</span><span class="nf">call</span><span class="p">(</span><span class="nx">obj</span><span class="p">)</span> <span class="o">===</span> <span class="dl">'</span><span class="s1">[object Array]</span><span class="dl">'</span>
<span class="p">}</span>
<span class="kd">function</span> <span class="nf">addObject</span> <span class="p">(</span><span class="nx">_data</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">data</span><span class="p">.</span><span class="nf">push</span><span class="p">(</span><span class="nx">_data</span><span class="p">)</span>
<span class="k">return</span> <span class="nx">data</span>
<span class="p">}</span>
<span class="kd">function</span> <span class="nf">addArray</span> <span class="p">(</span><span class="nx">_data</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">const</span> <span class="nx">added</span> <span class="o">=</span> <span class="p">[]</span>
<span class="nf">clear</span><span class="p">()</span>
<span class="k">for</span> <span class="p">(</span><span class="kd">let</span> <span class="nx">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span> <span class="nx">len</span> <span class="o">=</span> <span class="nx">_data</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span> <span class="nx">i</span> <span class="o">&lt;</span> <span class="nx">len</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
<span class="k">if </span><span class="p">(</span><span class="nf">isObject</span><span class="p">(</span><span class="nx">_data</span><span class="p">[</span><span class="nx">i</span><span class="p">]))</span> <span class="p">{</span>
<span class="nx">added</span><span class="p">.</span><span class="nf">push</span><span class="p">(</span><span class="nf">addObject</span><span class="p">(</span><span class="nx">_data</span><span class="p">[</span><span class="nx">i</span><span class="p">]))</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="k">return</span> <span class="nx">added</span>
<span class="p">}</span>
<span class="kd">function</span> <span class="nf">search</span> <span class="p">(</span><span class="nx">crit</span><span class="p">)</span> <span class="p">{</span>
<span class="k">if </span><span class="p">(</span><span class="o">!</span><span class="nx">crit</span><span class="p">)</span> <span class="p">{</span>
<span class="k">return</span> <span class="p">[]</span>
<span class="p">}</span>
<span class="k">return</span> <span class="nf">findMatches</span><span class="p">(</span><span class="nx">data</span><span class="p">,</span> <span class="nx">crit</span><span class="p">,</span> <span class="nx">opt</span><span class="p">.</span><span class="nx">searchStrategy</span><span class="p">,</span> <span class="nx">opt</span><span class="p">).</span><span class="nf">sort</span><span class="p">(</span><span class="nx">opt</span><span class="p">.</span><span class="nx">sort</span><span class="p">)</span>
<span class="p">}</span>
<span class="kd">function</span> <span class="nf">__setOptions_4</span> <span class="p">(</span><span class="nx">_opt</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">opt</span> <span class="o">=</span> <span class="nx">_opt</span> <span class="o">||</span> <span class="p">{}</span>
<span class="nx">opt</span><span class="p">.</span><span class="nx">fuzzy</span> <span class="o">=</span> <span class="nx">_opt</span><span class="p">.</span><span class="nx">fuzzy</span> <span class="o">||</span> <span class="kc">false</span>
<span class="nx">opt</span><span class="p">.</span><span class="nx">limit</span> <span class="o">=</span> <span class="nx">_opt</span><span class="p">.</span><span class="nx">limit</span> <span class="o">||</span> <span class="mi">10</span>
<span class="nx">opt</span><span class="p">.</span><span class="nx">searchStrategy</span> <span class="o">=</span> <span class="nx">_opt</span><span class="p">.</span><span class="nx">fuzzy</span> <span class="p">?</span> <span class="nx">_$FuzzySearchStrategy_5</span> <span class="p">:</span> <span class="nx">_$LiteralSearchStrategy_6</span>
<span class="nx">opt</span><span class="p">.</span><span class="nx">sort</span> <span class="o">=</span> <span class="nx">_opt</span><span class="p">.</span><span class="nx">sort</span> <span class="o">||</span> <span class="nx">NoSort</span>
<span class="nx">opt</span><span class="p">.</span><span class="nx">exclude</span> <span class="o">=</span> <span class="nx">_opt</span><span class="p">.</span><span class="nx">exclude</span> <span class="o">||</span> <span class="p">[]</span>
<span class="p">}</span>
<span class="kd">function</span> <span class="nf">findMatches</span> <span class="p">(</span><span class="nx">data</span><span class="p">,</span> <span class="nx">crit</span><span class="p">,</span> <span class="nx">strategy</span><span class="p">,</span> <span class="nx">opt</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">const</span> <span class="nx">matches</span> <span class="o">=</span> <span class="p">[]</span>
<span class="k">for</span> <span class="p">(</span><span class="kd">let</span> <span class="nx">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">i</span> <span class="o">&lt;</span> <span class="nx">data</span><span class="p">.</span><span class="nx">length</span> <span class="o">&amp;&amp;</span> <span class="nx">matches</span><span class="p">.</span><span class="nx">length</span> <span class="o">&lt;</span> <span class="nx">opt</span><span class="p">.</span><span class="nx">limit</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">const</span> <span class="nx">match</span> <span class="o">=</span> <span class="nf">findMatchesInObject</span><span class="p">(</span><span class="nx">data</span><span class="p">[</span><span class="nx">i</span><span class="p">],</span> <span class="nx">crit</span><span class="p">,</span> <span class="nx">strategy</span><span class="p">,</span> <span class="nx">opt</span><span class="p">)</span>
<span class="k">if </span><span class="p">(</span><span class="nx">match</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">matches</span><span class="p">.</span><span class="nf">push</span><span class="p">(</span><span class="nx">match</span><span class="p">)</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="k">return</span> <span class="nx">matches</span>
<span class="p">}</span>
<span class="kd">function</span> <span class="nf">findMatchesInObject</span> <span class="p">(</span><span class="nx">obj</span><span class="p">,</span> <span class="nx">crit</span><span class="p">,</span> <span class="nx">strategy</span><span class="p">,</span> <span class="nx">opt</span><span class="p">)</span> <span class="p">{</span>
<span class="k">for </span><span class="p">(</span><span class="kd">const</span> <span class="nx">key</span> <span class="k">in</span> <span class="nx">obj</span><span class="p">)</span> <span class="p">{</span>
<span class="k">if </span><span class="p">(</span><span class="o">!</span><span class="nf">isExcluded</span><span class="p">(</span><span class="nx">obj</span><span class="p">[</span><span class="nx">key</span><span class="p">],</span> <span class="nx">opt</span><span class="p">.</span><span class="nx">exclude</span><span class="p">)</span> <span class="o">&amp;&amp;</span> <span class="nx">strategy</span><span class="p">.</span><span class="nf">matches</span><span class="p">(</span><span class="nx">obj</span><span class="p">[</span><span class="nx">key</span><span class="p">],</span> <span class="nx">crit</span><span class="p">))</span> <span class="p">{</span>
<span class="k">return</span> <span class="nx">obj</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="kd">function</span> <span class="nf">isExcluded</span> <span class="p">(</span><span class="nx">term</span><span class="p">,</span> <span class="nx">excludedTerms</span><span class="p">)</span> <span class="p">{</span>
<span class="k">for</span> <span class="p">(</span><span class="kd">let</span> <span class="nx">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span> <span class="nx">len</span> <span class="o">=</span> <span class="nx">excludedTerms</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span> <span class="nx">i</span> <span class="o">&lt;</span> <span class="nx">len</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">const</span> <span class="nx">excludedTerm</span> <span class="o">=</span> <span class="nx">excludedTerms</span><span class="p">[</span><span class="nx">i</span><span class="p">]</span>
<span class="k">if </span><span class="p">(</span><span class="k">new</span> <span class="nc">RegExp</span><span class="p">(</span><span class="nx">excludedTerm</span><span class="p">).</span><span class="nf">test</span><span class="p">(</span><span class="nx">term</span><span class="p">))</span> <span class="p">{</span>
<span class="k">return</span> <span class="kc">true</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="k">return</span> <span class="kc">false</span>
<span class="p">}</span>
<span class="cm">/* globals ActiveXObject:false */</span>
<span class="dl">'</span><span class="s1">use strict</span><span class="dl">'</span>
<span class="kd">var</span> <span class="nx">_$JSONLoader_2</span> <span class="o">=</span> <span class="p">{</span>
<span class="na">load</span><span class="p">:</span> <span class="nx">load</span>
<span class="p">}</span>
<span class="kd">function</span> <span class="nf">load</span> <span class="p">(</span><span class="nx">location</span><span class="p">,</span> <span class="nx">callback</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">const</span> <span class="nx">xhr</span> <span class="o">=</span> <span class="nf">getXHR</span><span class="p">()</span>
<span class="nx">xhr</span><span class="p">.</span><span class="nf">open</span><span class="p">(</span><span class="dl">'</span><span class="s1">GET</span><span class="dl">'</span><span class="p">,</span> <span class="nx">location</span><span class="p">,</span> <span class="kc">true</span><span class="p">)</span>
<span class="nx">xhr</span><span class="p">.</span><span class="nx">onreadystatechange</span> <span class="o">=</span> <span class="nf">createStateChangeListener</span><span class="p">(</span><span class="nx">xhr</span><span class="p">,</span> <span class="nx">callback</span><span class="p">)</span>
<span class="nx">xhr</span><span class="p">.</span><span class="nf">send</span><span class="p">()</span>
<span class="p">}</span>
<span class="kd">function</span> <span class="nf">createStateChangeListener</span> <span class="p">(</span><span class="nx">xhr</span><span class="p">,</span> <span class="nx">callback</span><span class="p">)</span> <span class="p">{</span>
<span class="k">return</span> <span class="nf">function </span><span class="p">()</span> <span class="p">{</span>
<span class="k">if </span><span class="p">(</span><span class="nx">xhr</span><span class="p">.</span><span class="nx">readyState</span> <span class="o">===</span> <span class="mi">4</span> <span class="o">&amp;&amp;</span> <span class="nx">xhr</span><span class="p">.</span><span class="nx">status</span> <span class="o">===</span> <span class="mi">200</span><span class="p">)</span> <span class="p">{</span>
<span class="k">try</span> <span class="p">{</span>
<span class="nf">callback</span><span class="p">(</span><span class="kc">null</span><span class="p">,</span> <span class="nx">JSON</span><span class="p">.</span><span class="nf">parse</span><span class="p">(</span><span class="nx">xhr</span><span class="p">.</span><span class="nx">responseText</span><span class="p">))</span>
<span class="p">}</span> <span class="k">catch </span><span class="p">(</span><span class="nx">err</span><span class="p">)</span> <span class="p">{</span>
<span class="nf">callback</span><span class="p">(</span><span class="nx">err</span><span class="p">,</span> <span class="kc">null</span><span class="p">)</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="kd">function</span> <span class="nf">getXHR</span> <span class="p">()</span> <span class="p">{</span>
<span class="k">return</span> <span class="nb">window</span><span class="p">.</span><span class="nx">XMLHttpRequest</span> <span class="p">?</span> <span class="k">new</span> <span class="nb">window</span><span class="p">.</span><span class="nc">XMLHttpRequest</span><span class="p">()</span> <span class="p">:</span> <span class="k">new</span> <span class="nc">ActiveXObject</span><span class="p">(</span><span class="dl">'</span><span class="s1">Microsoft.XMLHTTP</span><span class="dl">'</span><span class="p">)</span>
<span class="p">}</span>
<span class="dl">'</span><span class="s1">use strict</span><span class="dl">'</span>
<span class="kd">var</span> <span class="nx">_$OptionsValidator_3</span> <span class="o">=</span> <span class="kd">function</span> <span class="nf">OptionsValidator</span> <span class="p">(</span><span class="nx">params</span><span class="p">)</span> <span class="p">{</span>
<span class="k">if </span><span class="p">(</span><span class="o">!</span><span class="nf">validateParams</span><span class="p">(</span><span class="nx">params</span><span class="p">))</span> <span class="p">{</span>
<span class="k">throw</span> <span class="k">new</span> <span class="nc">Error</span><span class="p">(</span><span class="dl">'</span><span class="s1">-- OptionsValidator: required options missing</span><span class="dl">'</span><span class="p">)</span>
<span class="p">}</span>
<span class="k">if </span><span class="p">(</span><span class="o">!</span><span class="p">(</span><span class="k">this</span> <span class="k">instanceof</span> <span class="nx">OptionsValidator</span><span class="p">))</span> <span class="p">{</span>
<span class="k">return</span> <span class="k">new</span> <span class="nc">OptionsValidator</span><span class="p">(</span><span class="nx">params</span><span class="p">)</span>
<span class="p">}</span>
<span class="kd">const</span> <span class="nx">requiredOptions</span> <span class="o">=</span> <span class="nx">params</span><span class="p">.</span><span class="nx">required</span>
<span class="k">this</span><span class="p">.</span><span class="nx">getRequiredOptions</span> <span class="o">=</span> <span class="nf">function </span><span class="p">()</span> <span class="p">{</span>
<span class="k">return</span> <span class="nx">requiredOptions</span>
<span class="p">}</span>
<span class="k">this</span><span class="p">.</span><span class="nx">validate</span> <span class="o">=</span> <span class="nf">function </span><span class="p">(</span><span class="nx">parameters</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">const</span> <span class="nx">errors</span> <span class="o">=</span> <span class="p">[]</span>
<span class="nx">requiredOptions</span><span class="p">.</span><span class="nf">forEach</span><span class="p">(</span><span class="nf">function </span><span class="p">(</span><span class="nx">requiredOptionName</span><span class="p">)</span> <span class="p">{</span>
<span class="k">if </span><span class="p">(</span><span class="k">typeof</span> <span class="nx">parameters</span><span class="p">[</span><span class="nx">requiredOptionName</span><span class="p">]</span> <span class="o">===</span> <span class="dl">'</span><span class="s1">undefined</span><span class="dl">'</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">errors</span><span class="p">.</span><span class="nf">push</span><span class="p">(</span><span class="nx">requiredOptionName</span><span class="p">)</span>
<span class="p">}</span>
<span class="p">})</span>
<span class="k">return</span> <span class="nx">errors</span>
<span class="p">}</span>
<span class="kd">function</span> <span class="nf">validateParams</span> <span class="p">(</span><span class="nx">params</span><span class="p">)</span> <span class="p">{</span>
<span class="k">if </span><span class="p">(</span><span class="o">!</span><span class="nx">params</span><span class="p">)</span> <span class="p">{</span>
<span class="k">return</span> <span class="kc">false</span>
<span class="p">}</span>
<span class="k">return</span> <span class="k">typeof</span> <span class="nx">params</span><span class="p">.</span><span class="nx">required</span> <span class="o">!==</span> <span class="dl">'</span><span class="s1">undefined</span><span class="dl">'</span> <span class="o">&amp;&amp;</span> <span class="nx">params</span><span class="p">.</span><span class="nx">required</span> <span class="k">instanceof</span> <span class="nb">Array</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="dl">'</span><span class="s1">use strict</span><span class="dl">'</span>
<span class="kd">var</span> <span class="nx">_$utils_9</span> <span class="o">=</span> <span class="p">{</span>
<span class="na">merge</span><span class="p">:</span> <span class="nx">merge</span><span class="p">,</span>
<span class="na">isJSON</span><span class="p">:</span> <span class="nx">isJSON</span>
<span class="p">}</span>
<span class="kd">function</span> <span class="nf">merge</span> <span class="p">(</span><span class="nx">defaultParams</span><span class="p">,</span> <span class="nx">mergeParams</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">const</span> <span class="nx">mergedOptions</span> <span class="o">=</span> <span class="p">{}</span>
<span class="k">for </span><span class="p">(</span><span class="kd">const</span> <span class="nx">option</span> <span class="k">in</span> <span class="nx">defaultParams</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">mergedOptions</span><span class="p">[</span><span class="nx">option</span><span class="p">]</span> <span class="o">=</span> <span class="nx">defaultParams</span><span class="p">[</span><span class="nx">option</span><span class="p">]</span>
<span class="k">if </span><span class="p">(</span><span class="k">typeof</span> <span class="nx">mergeParams</span><span class="p">[</span><span class="nx">option</span><span class="p">]</span> <span class="o">!==</span> <span class="dl">'</span><span class="s1">undefined</span><span class="dl">'</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">mergedOptions</span><span class="p">[</span><span class="nx">option</span><span class="p">]</span> <span class="o">=</span> <span class="nx">mergeParams</span><span class="p">[</span><span class="nx">option</span><span class="p">]</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="k">return</span> <span class="nx">mergedOptions</span>
<span class="p">}</span>
<span class="kd">function</span> <span class="nf">isJSON</span> <span class="p">(</span><span class="nx">json</span><span class="p">)</span> <span class="p">{</span>
<span class="k">try</span> <span class="p">{</span>
<span class="k">if </span><span class="p">(</span><span class="nx">json</span> <span class="k">instanceof</span> <span class="nb">Object</span> <span class="o">&amp;&amp;</span> <span class="nx">JSON</span><span class="p">.</span><span class="nf">parse</span><span class="p">(</span><span class="nx">JSON</span><span class="p">.</span><span class="nf">stringify</span><span class="p">(</span><span class="nx">json</span><span class="p">)))</span> <span class="p">{</span>
<span class="k">return</span> <span class="kc">true</span>
<span class="p">}</span>
<span class="k">return</span> <span class="kc">false</span>
<span class="p">}</span> <span class="k">catch </span><span class="p">(</span><span class="nx">err</span><span class="p">)</span> <span class="p">{</span>
<span class="k">return</span> <span class="kc">false</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="kd">var</span> <span class="nx">_$src_8</span> <span class="o">=</span> <span class="p">{};</span>
<span class="p">(</span><span class="nf">function </span><span class="p">(</span><span class="nb">window</span><span class="p">)</span> <span class="p">{</span>
<span class="dl">'</span><span class="s1">use strict</span><span class="dl">'</span>
<span class="kd">let</span> <span class="nx">options</span> <span class="o">=</span> <span class="p">{</span>
<span class="na">searchInput</span><span class="p">:</span> <span class="kc">null</span><span class="p">,</span>
<span class="na">resultsContainer</span><span class="p">:</span> <span class="kc">null</span><span class="p">,</span>
<span class="na">json</span><span class="p">:</span> <span class="p">[],</span>
<span class="na">success</span><span class="p">:</span> <span class="nb">Function</span><span class="p">.</span><span class="nx">prototype</span><span class="p">,</span>
<span class="na">searchResultTemplate</span><span class="p">:</span> <span class="dl">'</span><span class="s1">&lt;li&gt;&lt;a href="{url}" title="{desc}"&gt;{title}&lt;/a&gt;&lt;/li&gt;</span><span class="dl">'</span><span class="p">,</span>
<span class="na">templateMiddleware</span><span class="p">:</span> <span class="nb">Function</span><span class="p">.</span><span class="nx">prototype</span><span class="p">,</span>
<span class="na">sortMiddleware</span><span class="p">:</span> <span class="nf">function </span><span class="p">()</span> <span class="p">{</span>
<span class="k">return</span> <span class="mi">0</span>
<span class="p">},</span>
<span class="na">noResultsText</span><span class="p">:</span> <span class="dl">'</span><span class="s1">No results found</span><span class="dl">'</span><span class="p">,</span>
<span class="na">limit</span><span class="p">:</span> <span class="mi">10</span><span class="p">,</span>
<span class="na">fuzzy</span><span class="p">:</span> <span class="kc">false</span><span class="p">,</span>
<span class="na">debounceTime</span><span class="p">:</span> <span class="kc">null</span><span class="p">,</span>
<span class="na">exclude</span><span class="p">:</span> <span class="p">[]</span>
<span class="p">}</span>
<span class="kd">let</span> <span class="nx">debounceTimerHandle</span>
<span class="kd">const</span> <span class="nx">debounce</span> <span class="o">=</span> <span class="nf">function </span><span class="p">(</span><span class="nx">func</span><span class="p">,</span> <span class="nx">delayMillis</span><span class="p">)</span> <span class="p">{</span>
<span class="k">if </span><span class="p">(</span><span class="nx">delayMillis</span><span class="p">)</span> <span class="p">{</span>
<span class="nf">clearTimeout</span><span class="p">(</span><span class="nx">debounceTimerHandle</span><span class="p">)</span>
<span class="nx">debounceTimerHandle</span> <span class="o">=</span> <span class="nf">setTimeout</span><span class="p">(</span><span class="nx">func</span><span class="p">,</span> <span class="nx">delayMillis</span><span class="p">)</span>
<span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
<span class="nx">func</span><span class="p">.</span><span class="nf">call</span><span class="p">()</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="kd">const</span> <span class="nx">requiredOptions</span> <span class="o">=</span> <span class="p">[</span><span class="dl">'</span><span class="s1">searchInput</span><span class="dl">'</span><span class="p">,</span> <span class="dl">'</span><span class="s1">resultsContainer</span><span class="dl">'</span><span class="p">,</span> <span class="dl">'</span><span class="s1">json</span><span class="dl">'</span><span class="p">]</span>
<span class="cm">/* removed: const _$Templater_7 = require('./Templater') */</span><span class="p">;</span>
<span class="cm">/* removed: const _$Repository_4 = require('./Repository') */</span><span class="p">;</span>
<span class="cm">/* removed: const _$JSONLoader_2 = require('./JSONLoader') */</span><span class="p">;</span>
<span class="kd">const</span> <span class="nx">optionsValidator</span> <span class="o">=</span> <span class="nc">_$OptionsValidator_3</span><span class="p">({</span>
<span class="na">required</span><span class="p">:</span> <span class="nx">requiredOptions</span>
<span class="p">})</span>
<span class="cm">/* removed: const _$utils_9 = require('./utils') */</span><span class="p">;</span>
<span class="nb">window</span><span class="p">.</span><span class="nx">SimpleJekyllSearch</span> <span class="o">=</span> <span class="nf">function </span><span class="p">(</span><span class="nx">_options</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">const</span> <span class="nx">errors</span> <span class="o">=</span> <span class="nx">optionsValidator</span><span class="p">.</span><span class="nf">validate</span><span class="p">(</span><span class="nx">_options</span><span class="p">)</span>
<span class="k">if </span><span class="p">(</span><span class="nx">errors</span><span class="p">.</span><span class="nx">length</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
<span class="nf">throwError</span><span class="p">(</span><span class="dl">'</span><span class="s1">You must specify the following required options: </span><span class="dl">'</span> <span class="o">+</span> <span class="nx">requiredOptions</span><span class="p">)</span>
<span class="p">}</span>
<span class="nx">options</span> <span class="o">=</span> <span class="nx">_$utils_9</span><span class="p">.</span><span class="nf">merge</span><span class="p">(</span><span class="nx">options</span><span class="p">,</span> <span class="nx">_options</span><span class="p">)</span>
<span class="nx">_$Templater_7</span><span class="p">.</span><span class="nf">setOptions</span><span class="p">({</span>
<span class="na">template</span><span class="p">:</span> <span class="nx">options</span><span class="p">.</span><span class="nx">searchResultTemplate</span><span class="p">,</span>
<span class="na">middleware</span><span class="p">:</span> <span class="nx">options</span><span class="p">.</span><span class="nx">templateMiddleware</span>
<span class="p">})</span>
<span class="nx">_$Repository_4</span><span class="p">.</span><span class="nf">setOptions</span><span class="p">({</span>
<span class="na">fuzzy</span><span class="p">:</span> <span class="nx">options</span><span class="p">.</span><span class="nx">fuzzy</span><span class="p">,</span>
<span class="na">limit</span><span class="p">:</span> <span class="nx">options</span><span class="p">.</span><span class="nx">limit</span><span class="p">,</span>
<span class="na">sort</span><span class="p">:</span> <span class="nx">options</span><span class="p">.</span><span class="nx">sortMiddleware</span><span class="p">,</span>
<span class="na">exclude</span><span class="p">:</span> <span class="nx">options</span><span class="p">.</span><span class="nx">exclude</span>
<span class="p">})</span>
<span class="k">if </span><span class="p">(</span><span class="nx">_$utils_9</span><span class="p">.</span><span class="nf">isJSON</span><span class="p">(</span><span class="nx">options</span><span class="p">.</span><span class="nx">json</span><span class="p">))</span> <span class="p">{</span>
<span class="nf">initWithJSON</span><span class="p">(</span><span class="nx">options</span><span class="p">.</span><span class="nx">json</span><span class="p">)</span>
<span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
<span class="nf">initWithURL</span><span class="p">(</span><span class="nx">options</span><span class="p">.</span><span class="nx">json</span><span class="p">)</span>
<span class="p">}</span>
<span class="kd">const</span> <span class="nx">rv</span> <span class="o">=</span> <span class="p">{</span>
<span class="na">search</span><span class="p">:</span> <span class="nx">search</span>
<span class="p">}</span>
<span class="k">typeof</span> <span class="nx">options</span><span class="p">.</span><span class="nx">success</span> <span class="o">===</span> <span class="dl">'</span><span class="s1">function</span><span class="dl">'</span> <span class="o">&amp;&amp;</span> <span class="nx">options</span><span class="p">.</span><span class="nx">success</span><span class="p">.</span><span class="nf">call</span><span class="p">(</span><span class="nx">rv</span><span class="p">)</span>
<span class="k">return</span> <span class="nx">rv</span>
<span class="p">}</span>
<span class="kd">function</span> <span class="nf">initWithJSON</span> <span class="p">(</span><span class="nx">json</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">_$Repository_4</span><span class="p">.</span><span class="nf">put</span><span class="p">(</span><span class="nx">json</span><span class="p">)</span>
<span class="nf">registerInput</span><span class="p">()</span>
<span class="p">}</span>
<span class="kd">function</span> <span class="nf">initWithURL</span> <span class="p">(</span><span class="nx">url</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">_$JSONLoader_2</span><span class="p">.</span><span class="nf">load</span><span class="p">(</span><span class="nx">url</span><span class="p">,</span> <span class="nf">function </span><span class="p">(</span><span class="nx">err</span><span class="p">,</span> <span class="nx">json</span><span class="p">)</span> <span class="p">{</span>
<span class="k">if </span><span class="p">(</span><span class="nx">err</span><span class="p">)</span> <span class="p">{</span>
<span class="nf">throwError</span><span class="p">(</span><span class="dl">'</span><span class="s1">failed to get JSON (</span><span class="dl">'</span> <span class="o">+</span> <span class="nx">url</span> <span class="o">+</span> <span class="dl">'</span><span class="s1">)</span><span class="dl">'</span><span class="p">)</span>
<span class="p">}</span>
<span class="nf">initWithJSON</span><span class="p">(</span><span class="nx">json</span><span class="p">)</span>
<span class="p">})</span>
<span class="p">}</span>
<span class="kd">function</span> <span class="nf">emptyResultsContainer</span> <span class="p">()</span> <span class="p">{</span>
<span class="nx">options</span><span class="p">.</span><span class="nx">resultsContainer</span><span class="p">.</span><span class="nx">innerHTML</span> <span class="o">=</span> <span class="dl">''</span>
<span class="p">}</span>
<span class="kd">function</span> <span class="nf">appendToResultsContainer</span> <span class="p">(</span><span class="nx">text</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">options</span><span class="p">.</span><span class="nx">resultsContainer</span><span class="p">.</span><span class="nx">innerHTML</span> <span class="o">+=</span> <span class="nx">text</span>
<span class="p">}</span>
<span class="kd">function</span> <span class="nf">registerInput</span> <span class="p">()</span> <span class="p">{</span>
<span class="nx">options</span><span class="p">.</span><span class="nx">searchInput</span><span class="p">.</span><span class="nf">addEventListener</span><span class="p">(</span><span class="dl">'</span><span class="s1">input</span><span class="dl">'</span><span class="p">,</span> <span class="nf">function </span><span class="p">(</span><span class="nx">e</span><span class="p">)</span> <span class="p">{</span>
<span class="k">if </span><span class="p">(</span><span class="nf">isWhitelistedKey</span><span class="p">(</span><span class="nx">e</span><span class="p">.</span><span class="nx">which</span><span class="p">))</span> <span class="p">{</span>
<span class="nf">emptyResultsContainer</span><span class="p">()</span>
<span class="nf">debounce</span><span class="p">(</span><span class="nf">function </span><span class="p">()</span> <span class="p">{</span> <span class="nf">search</span><span class="p">(</span><span class="nx">e</span><span class="p">.</span><span class="nx">target</span><span class="p">.</span><span class="nx">value</span><span class="p">)</span> <span class="p">},</span> <span class="nx">options</span><span class="p">.</span><span class="nx">debounceTime</span><span class="p">)</span>
<span class="p">}</span>
<span class="p">})</span>
<span class="p">}</span>
<span class="kd">function</span> <span class="nf">search</span> <span class="p">(</span><span class="nx">query</span><span class="p">)</span> <span class="p">{</span>
<span class="k">if </span><span class="p">(</span><span class="nf">isValidQuery</span><span class="p">(</span><span class="nx">query</span><span class="p">))</span> <span class="p">{</span>
<span class="nf">emptyResultsContainer</span><span class="p">()</span>
<span class="nf">render</span><span class="p">(</span><span class="nx">_$Repository_4</span><span class="p">.</span><span class="nf">search</span><span class="p">(</span><span class="nx">query</span><span class="p">),</span> <span class="nx">query</span><span class="p">)</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="kd">function</span> <span class="nf">render</span> <span class="p">(</span><span class="nx">results</span><span class="p">,</span> <span class="nx">query</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">const</span> <span class="nx">len</span> <span class="o">=</span> <span class="nx">results</span><span class="p">.</span><span class="nx">length</span>
<span class="k">if </span><span class="p">(</span><span class="nx">len</span> <span class="o">===</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
<span class="k">return</span> <span class="nf">appendToResultsContainer</span><span class="p">(</span><span class="nx">options</span><span class="p">.</span><span class="nx">noResultsText</span><span class="p">)</span>
<span class="p">}</span>
<span class="k">for</span> <span class="p">(</span><span class="kd">let</span> <span class="nx">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">i</span> <span class="o">&lt;</span> <span class="nx">len</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">results</span><span class="p">[</span><span class="nx">i</span><span class="p">].</span><span class="nx">query</span> <span class="o">=</span> <span class="nx">query</span>
<span class="nf">appendToResultsContainer</span><span class="p">(</span><span class="nx">_$Templater_7</span><span class="p">.</span><span class="nf">compile</span><span class="p">(</span><span class="nx">results</span><span class="p">[</span><span class="nx">i</span><span class="p">]))</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="kd">function</span> <span class="nf">isValidQuery</span> <span class="p">(</span><span class="nx">query</span><span class="p">)</span> <span class="p">{</span>
<span class="k">return</span> <span class="nx">query</span> <span class="o">&amp;&amp;</span> <span class="nx">query</span><span class="p">.</span><span class="nx">length</span> <span class="o">&gt;</span> <span class="mi">0</span>
<span class="p">}</span>
<span class="kd">function</span> <span class="nf">isWhitelistedKey</span> <span class="p">(</span><span class="nx">key</span><span class="p">)</span> <span class="p">{</span>
<span class="k">return</span> <span class="p">[</span><span class="mi">13</span><span class="p">,</span> <span class="mi">16</span><span class="p">,</span> <span class="mi">20</span><span class="p">,</span> <span class="mi">37</span><span class="p">,</span> <span class="mi">38</span><span class="p">,</span> <span class="mi">39</span><span class="p">,</span> <span class="mi">40</span><span class="p">,</span> <span class="mi">91</span><span class="p">].</span><span class="nf">indexOf</span><span class="p">(</span><span class="nx">key</span><span class="p">)</span> <span class="o">===</span> <span class="o">-</span><span class="mi">1</span>
<span class="p">}</span>
<span class="kd">function</span> <span class="nf">throwError</span> <span class="p">(</span><span class="nx">message</span><span class="p">)</span> <span class="p">{</span>
<span class="k">throw</span> <span class="k">new</span> <span class="nc">Error</span><span class="p">(</span><span class="dl">'</span><span class="s1">SimpleJekyllSearch --- </span><span class="dl">'</span> <span class="o">+</span> <span class="nx">message</span><span class="p">)</span>
<span class="p">}</span>
<span class="p">})(</span><span class="nb">window</span><span class="p">)</span>
<span class="p">}());</span>
<span class="nt">&lt;/script&gt;</span>
<span class="c">&lt;!-- Configuration --&gt;</span>
<span class="nt">&lt;script&gt;</span>
<span class="nc">SimpleJekyllSearch</span><span class="p">({</span>
<span class="na">searchInput</span><span class="p">:</span> <span class="nb">document</span><span class="p">.</span><span class="nf">getElementById</span><span class="p">(</span><span class="dl">'</span><span class="s1">search-input</span><span class="dl">'</span><span class="p">),</span>
<span class="na">resultsContainer</span><span class="p">:</span> <span class="nb">document</span><span class="p">.</span><span class="nf">getElementById</span><span class="p">(</span><span class="dl">'</span><span class="s1">results-container</span><span class="dl">'</span><span class="p">),</span>
<span class="na">json</span><span class="p">:</span> <span class="dl">'</span><span class="s1">/search.json</span><span class="dl">'</span><span class="p">,</span>
<span class="c1">//searchResultTemplate: '</span><span class="o">&lt;</span><span class="nx">li</span><span class="o">&gt;&lt;</span><span class="nx">a</span> <span class="nx">href</span><span class="o">=</span><span class="dl">"</span><span class="s2">https://static.rnmkcy.eu{url}</span><span class="dl">"</span><span class="o">&gt;</span><span class="p">{</span><span class="nx">date</span><span class="p">}</span><span class="o">&amp;</span><span class="nx">nbsp</span><span class="p">;{</span><span class="nx">title</span><span class="p">}</span><span class="o">&lt;</span><span class="sr">/a&gt;&lt;/</span><span class="nx">li</span><span class="o">&gt;</span><span class="dl">'</span><span class="s1">
searchResultTemplate: </span><span class="dl">'</span><span class="o">&lt;</span><span class="nx">li</span><span class="o">&gt;&lt;</span><span class="nx">a</span> <span class="nx">href</span><span class="o">=</span><span class="dl">"</span><span class="s2">{url}</span><span class="dl">"</span><span class="o">&gt;</span><span class="p">{</span><span class="nx">date</span><span class="p">}</span><span class="o">&amp;</span><span class="nx">nbsp</span><span class="p">;{</span><span class="nx">title</span><span class="p">}</span><span class="o">&lt;</span><span class="sr">/a&gt;&lt;/</span><span class="nx">li</span><span class="o">&gt;</span><span class="dl">'</span><span class="s1">
})
</span><span class="nt">&lt;/script&gt;</span>
<span class="c">&lt;!-- Fin déclaration champ de recherche --&gt;</span><span class="nt">&lt;/div&gt;&lt;nav</span> <span class="na">class=</span><span class="s">"navigation"</span><span class="nt">&gt;</span>
<span class="nt">&lt;ul&gt;&lt;li</span> <span class="na">class=</span><span class="s">"navigation__item"</span><span class="nt">&gt;&lt;a</span> <span class="na">href=</span><span class="s">"/archive.html"</span><span class="nt">&gt;</span>Etiquettes<span class="nt">&lt;/a&gt;&lt;/li&gt;&lt;li</span> <span class="na">class=</span><span class="s">"navigation__item"</span><span class="nt">&gt;&lt;a</span> <span class="na">href=</span><span class="s">"/htmldoc.html"</span><span class="nt">&gt;</span>Documents<span class="nt">&lt;/a&gt;&lt;/li&gt;&lt;li</span> <span class="na">class=</span><span class="s">"navigation__item"</span><span class="nt">&gt;&lt;a</span> <span class="na">href=</span><span class="s">"/liens_ttrss.html"</span><span class="nt">&gt;</span>Liens<span class="nt">&lt;/a&gt;&lt;/li&gt;&lt;li</span> <span class="na">class=</span><span class="s">"navigation__item"</span><span class="nt">&gt;&lt;a</span> <span class="na">href=</span><span class="s">"/aide-jekyll-text-theme.html"</span><span class="nt">&gt;</span>Aide<span class="nt">&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;</span>
<span class="nt">&lt;/nav&gt;&lt;/div&gt;</span>
<span class="nt">&lt;/header&gt;</span>
<span class="nt">&lt;/div&gt;&lt;div</span> <span class="na">class=</span><span class="s">"page__content"</span><span class="nt">&gt;&lt;div</span> <span class="na">class =</span><span class="s">"main"</span><span class="nt">&gt;&lt;div</span> <span class="na">class=</span><span class="s">"grid grid--reverse"</span><span class="nt">&gt;</span>
<span class="nt">&lt;div</span> <span class="na">class=</span><span class="s">"col-main cell cell--auto"</span><span class="nt">&gt;</span><span class="c">&lt;!-- start custom main top snippet --&gt;</span><span class="nt">&lt;div</span> <span class="na">id=</span><span class="s">"results-container"</span> <span class="na">class=</span><span class="s">"search-result js-search-result"</span><span class="nt">&gt;&lt;/div&gt;</span><span class="c">&lt;!-- end custom main top snippet --&gt;</span>
<span class="nt">&lt;article</span> <span class="na">itemscope</span> <span class="na">itemtype=</span><span class="s">"http://schema.org/Article"</span><span class="nt">&gt;&lt;div</span> <span class="na">class=</span><span class="s">"article__header"</span><span class="nt">&gt;&lt;header&gt;&lt;h1</span> <span class="na">style=</span><span class="s">"color:Tomato;"</span><span class="nt">&gt;</span>Nginx personnalisation des pages d'erreur<span class="nt">&lt;/h1&gt;&lt;/header&gt;&lt;/div&gt;&lt;meta</span> <span class="na">itemprop=</span><span class="s">"headline"</span> <span class="na">content=</span><span class="s">"Nginx personnalisation des pages d'erreur"</span><span class="nt">&gt;&lt;div</span> <span class="na">class=</span><span class="s">"article__info clearfix"</span><span class="nt">&gt;&lt;ul</span> <span class="na">class=</span><span class="s">"left-col menu"</span><span class="nt">&gt;&lt;li&gt;</span>
<span class="nt">&lt;a</span> <span class="na">class=</span><span class="s">"button button--secondary button--pill button--sm"</span>
<span class="na">href=</span><span class="s">"/archive.html?tag=nginx"</span><span class="nt">&gt;</span>nginx<span class="nt">&lt;/a&gt;</span>
<span class="nt">&lt;/li&gt;&lt;/ul&gt;&lt;ul</span> <span class="na">class=</span><span class="s">"right-col menu"</span><span class="nt">&gt;&lt;li&gt;</span>
<span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">"far fa-calendar-alt"</span><span class="nt">&gt;&lt;/i&gt;</span><span class="ni">&amp;nbsp;</span><span class="nt">&lt;span</span> <span class="na">title=</span><span class="s">"Création"</span> <span class="na">style=</span><span class="s">"color:#FF00FF"</span><span class="nt">&gt;</span>21<span class="ni">&amp;nbsp;</span>déc.<span class="ni">&amp;nbsp;&amp;nbsp;</span>2019<span class="nt">&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;meta</span> <span class="na">itemprop=</span><span class="s">"datePublished"</span> <span class="na">content=</span><span class="s">"2019-12-21T00:00:00+01:00"</span><span class="nt">&gt;</span>
<span class="nt">&lt;meta</span> <span class="na">itemprop=</span><span class="s">"keywords"</span> <span class="na">content=</span><span class="s">"nginx"</span><span class="nt">&gt;&lt;div</span> <span class="na">class=</span><span class="s">"js-article-content"</span><span class="nt">&gt;</span>
<span class="nt">&lt;div</span> <span class="na">class=</span><span class="s">"layout--article"</span><span class="nt">&gt;</span><span class="c">&lt;!-- start custom article top snippet --&gt;</span>
<span class="nt">&lt;style&gt;</span>
<span class="nf">#myBtn</span> <span class="p">{</span>
<span class="nl">display</span><span class="p">:</span> <span class="nb">none</span><span class="p">;</span>
<span class="nl">position</span><span class="p">:</span> <span class="nb">fixed</span><span class="p">;</span>
<span class="nl">bottom</span><span class="p">:</span> <span class="m">10px</span><span class="p">;</span>
<span class="nl">right</span><span class="p">:</span> <span class="m">10px</span><span class="p">;</span>
<span class="nl">z-index</span><span class="p">:</span> <span class="m">99</span><span class="p">;</span>
<span class="nl">font-size</span><span class="p">:</span> <span class="m">12px</span><span class="p">;</span>
<span class="nl">font-weight</span><span class="p">:</span> <span class="nb">bold</span><span class="p">;</span>
<span class="nl">border</span><span class="p">:</span> <span class="nb">none</span><span class="p">;</span>
<span class="nl">outline</span><span class="p">:</span> <span class="nb">none</span><span class="p">;</span>
<span class="nl">background-color</span><span class="p">:</span> <span class="no">white</span><span class="p">;</span>
<span class="nl">color</span><span class="p">:</span> <span class="no">black</span><span class="p">;</span>
<span class="nl">cursor</span><span class="p">:</span> <span class="nb">pointer</span><span class="p">;</span>
<span class="nl">padding</span><span class="p">:</span> <span class="m">5px</span><span class="p">;</span>
<span class="nl">border-radius</span><span class="p">:</span> <span class="m">4px</span><span class="p">;</span>
<span class="p">}</span>
<span class="nf">#myBtn</span><span class="nd">:hover</span> <span class="p">{</span>
<span class="nl">background-color</span><span class="p">:</span> <span class="m">#555</span><span class="p">;</span>
<span class="p">}</span>
<span class="nt">&lt;/style&gt;</span>
<span class="nt">&lt;button</span> <span class="na">onclick=</span><span class="s">"topFunction()"</span> <span class="na">id=</span><span class="s">"myBtn"</span> <span class="na">title=</span><span class="s">"Haut de page"</span><span class="nt">&gt;</span><span class="ni">&amp;#8679;</span><span class="nt">&lt;/button&gt;</span>
<span class="nt">&lt;script&gt;</span>
<span class="c1">//Get the button</span>
<span class="kd">var</span> <span class="nx">mybutton</span> <span class="o">=</span> <span class="nb">document</span><span class="p">.</span><span class="nf">getElementById</span><span class="p">(</span><span class="dl">"</span><span class="s2">myBtn</span><span class="dl">"</span><span class="p">);</span>
<span class="c1">// When the user scrolls down 20px from the top of the document, show the button</span>
<span class="nb">window</span><span class="p">.</span><span class="nx">onscroll</span> <span class="o">=</span> <span class="kd">function</span><span class="p">()</span> <span class="p">{</span><span class="nf">scrollFunction</span><span class="p">()};</span>
<span class="kd">function</span> <span class="nf">scrollFunction</span><span class="p">()</span> <span class="p">{</span>
<span class="k">if </span><span class="p">(</span><span class="nb">document</span><span class="p">.</span><span class="nx">body</span><span class="p">.</span><span class="nx">scrollTop</span> <span class="o">&gt;</span> <span class="mi">20</span> <span class="o">||</span> <span class="nb">document</span><span class="p">.</span><span class="nx">documentElement</span><span class="p">.</span><span class="nx">scrollTop</span> <span class="o">&gt;</span> <span class="mi">20</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">mybutton</span><span class="p">.</span><span class="nx">style</span><span class="p">.</span><span class="nx">display</span> <span class="o">=</span> <span class="dl">"</span><span class="s2">block</span><span class="dl">"</span><span class="p">;</span>
<span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
<span class="nx">mybutton</span><span class="p">.</span><span class="nx">style</span><span class="p">.</span><span class="nx">display</span> <span class="o">=</span> <span class="dl">"</span><span class="s2">none</span><span class="dl">"</span><span class="p">;</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="c1">// When the user clicks on the button, scroll to the top of the document</span>
<span class="kd">function</span> <span class="nf">topFunction</span><span class="p">()</span> <span class="p">{</span>
<span class="nb">document</span><span class="p">.</span><span class="nx">body</span><span class="p">.</span><span class="nx">scrollTop</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
<span class="nb">document</span><span class="p">.</span><span class="nx">documentElement</span><span class="p">.</span><span class="nx">scrollTop</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
<span class="p">}</span>
<span class="nt">&lt;/script&gt;</span>
<span class="c">&lt;!-- end custom article top snippet --&gt;</span>
<span class="nt">&lt;div</span> <span class="na">class=</span><span class="s">"article__content"</span> <span class="na">itemprop=</span><span class="s">"articleBody"</span><span class="nt">&gt;&lt;details&gt;</span>
<span class="nt">&lt;summary&gt;&lt;b&gt;</span>Afficher/cacher Sommaire<span class="nt">&lt;/b&gt;&lt;/summary&gt;</span>
<span class="c">&lt;!-- affichage sommaire --&gt;</span>
<span class="nt">&lt;div</span> <span class="na">class=</span><span class="s">"toc-aside js-toc-root"</span><span class="nt">&gt;&lt;/div&gt;</span>
<span class="nt">&lt;/details&gt;&lt;h2</span> <span class="na">id=</span><span class="s">"configurer-nginx-pour-utiliser-des-pages-derreur-personnalisées"</span><span class="nt">&gt;</span>Configurer Nginx pour utiliser des pages derreur personnalisées<span class="nt">&lt;/h2&gt;</span>
<span class="nt">&lt;p&gt;&lt;img</span> <span class="na">src=</span><span class="s">"/images/nginx-logo.png"</span> <span class="na">alt=</span><span class="s">""</span> <span class="nt">/&gt;&lt;/p&gt;</span>
<span class="nt">&lt;h3</span> <span class="na">id=</span><span class="s">"introduction"</span><span class="nt">&gt;</span>Introduction<span class="nt">&lt;/h3&gt;</span>
<span class="nt">&lt;p&gt;</span>Nginx est un serveur Web haute performance capable de servir du contenu avec flexibilité et puissance. Lors de la conception de vos pages Web, il est souvent utile de personnaliser chaque élément de contenu que vos utilisateurs verront. Cela inclut les pages derreur pour quand ils demandent du contenu qui nest pas disponible.<span class="nt">&lt;/p&gt;</span>
<span class="nt">&lt;h3</span> <span class="na">id=</span><span class="s">"création-de-vos-pages-derreur-personnalisées"</span><span class="nt">&gt;</span>Création de vos pages derreur personnalisées<span class="nt">&lt;/h3&gt;</span>
<span class="nt">&lt;p&gt;</span>Nous mettrons nos pages derreur personnalisées dans le <span class="nt">&lt;strong&gt;</span>/usr/share/nginx/html<span class="nt">&lt;/strong&gt;</span> où Nginx définit sa racine de document par défaut. Nous créerons une page pour les erreurs 404 appelée <span class="nt">&lt;strong&gt;</span>custom_404.html<span class="nt">&lt;/strong&gt;</span> et une autre pour les erreurs générales de niveau 500 appelée <span class="nt">&lt;strong&gt;</span>custom_50x.html<span class="nt">&lt;/strong&gt;&lt;br</span> <span class="nt">/&gt;</span>
Vous pouvez utiliser les lignes suivantes si vous ne faites que tester. Sinon, mettez votre propre contenu dans ces emplacements:<span class="nt">&lt;/p&gt;</span>
<span class="nt">&lt;div</span> <span class="na">class=</span><span class="s">"language-plaintext highlighter-rouge"</span><span class="nt">&gt;&lt;div</span> <span class="na">class=</span><span class="s">"highlight"</span><span class="nt">&gt;&lt;pre</span> <span class="na">class=</span><span class="s">"highlight"</span><span class="nt">&gt;&lt;code&gt;</span>echo "<span class="ni">&amp;lt;</span>h1 style='color:red'<span class="ni">&amp;gt;</span>Error 404: Not found :-(<span class="ni">&amp;lt;</span>/h1<span class="ni">&amp;gt;</span>" | sudo tee /usr/share/nginx/html/custom_404.html
echo "<span class="ni">&amp;lt;</span>p<span class="ni">&amp;gt;</span>I have no idea where that file is, sorry. Are you sure you typed in the correct URL?<span class="ni">&amp;lt;</span>/p<span class="ni">&amp;gt;</span>" | sudo tee -a /usr/share/nginx/html/custom_404.html
echo "<span class="ni">&amp;lt;</span>h1<span class="ni">&amp;gt;</span>Oops! Something went wrong...<span class="ni">&amp;lt;</span>/h1<span class="ni">&amp;gt;</span>" | sudo tee /usr/share/nginx/html/custom_50x.html
echo "<span class="ni">&amp;lt;</span>p<span class="ni">&amp;gt;</span>We seem to be having some technical difficulties. Hang tight.<span class="ni">&amp;lt;</span>/p<span class="ni">&amp;gt;</span>" | sudo tee -a /usr/share/nginx/html/custom_50x.html
<span class="nt">&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;</span>
<span class="nt">&lt;p&gt;</span>Nous avons maintenant deux pages derreur personnalisées que nous pouvons diffuser lorsque les demandes des clients entraînent des erreurs différentes.<span class="nt">&lt;/p&gt;</span>
<span class="nt">&lt;h3</span> <span class="na">id=</span><span class="s">"configuration-de-nginx-pour-utiliser-vos-pages-derreur"</span><span class="nt">&gt;</span>Configuration de Nginx pour utiliser vos pages derreur<span class="nt">&lt;/h3&gt;</span>
<span class="nt">&lt;p&gt;</span>Maintenant, nous devons simplement dire à Nginx quil devrait utiliser ces pages chaque fois que les conditions derreur correctes se produisent. Ouvrez le fichier de blocage du serveur dans le répertoire /etc/nginx/sites-enabled que vous souhaitez configurer. Nous utiliserons le fichier de blocage de serveur par default appelé default , mais vous devez ajuster vos propres blocs de serveur si vous utilisez un fichier non par défaut:<span class="nt">&lt;/p&gt;</span>
<span class="nt">&lt;div</span> <span class="na">class=</span><span class="s">"language-plaintext highlighter-rouge"</span><span class="nt">&gt;&lt;div</span> <span class="na">class=</span><span class="s">"highlight"</span><span class="nt">&gt;&lt;pre</span> <span class="na">class=</span><span class="s">"highlight"</span><span class="nt">&gt;&lt;code&gt;</span>sudo nano /etc/nginx/sites-enabled/default
<span class="nt">&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;</span>
<span class="nt">&lt;p&gt;</span>Nous pouvons maintenant pointer Nginx vers nos pages derreur personnalisées.<span class="nt">&lt;/p&gt;</span>
<span class="nt">&lt;h3</span> <span class="na">id=</span><span class="s">"diriger-les-erreurs-404-vers-la-page-404-personnalisée"</span><span class="nt">&gt;</span>Diriger les erreurs 404 vers la page 404 personnalisée<span class="nt">&lt;/h3&gt;</span>
<span class="nt">&lt;p&gt;</span>Utilisez la directive error_page pour que lorsquune erreur 404 se produit (lorsquun fichier demandé nest pas trouvé), la page personnalisée que vous avez créée soit servie. Nous allons créer un bloc demplacement pour le fichier, où nous pouvons nous assurer que la racine correspond à lemplacement de notre système de fichiers et que le fichier est uniquement accessible via les redirections Nginx internes (non directement demandables par les clients):<span class="nt">&lt;/p&gt;</span>
<span class="nt">&lt;div</span> <span class="na">class=</span><span class="s">"language-plaintext highlighter-rouge"</span><span class="nt">&gt;&lt;div</span> <span class="na">class=</span><span class="s">"highlight"</span><span class="nt">&gt;&lt;pre</span> <span class="na">class=</span><span class="s">"highlight"</span><span class="nt">&gt;&lt;code&gt;</span>/etc/nginx/sites-enabled/default
<span class="nt">&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;</span>
<span class="nt">&lt;div</span> <span class="na">class=</span><span class="s">"language-plaintext highlighter-rouge"</span><span class="nt">&gt;&lt;div</span> <span class="na">class=</span><span class="s">"highlight"</span><span class="nt">&gt;&lt;pre</span> <span class="na">class=</span><span class="s">"highlight"</span><span class="nt">&gt;&lt;code&gt;</span>server {
listen 80 default_server;
listen [::]:80 default_server ipv6only=on;
. . .
error_page 404 /custom_404.html;
location = /custom_404.html {
root /usr/share/nginx/html;
internal;
}
}
<span class="nt">&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;</span>
<span class="nt">&lt;p&gt;</span>Habituellement, nous naurions pas à définir la root dans le nouveau bloc demplacement car elle correspond à la racine dans le bloc serveur. Cependant, nous sommes explicites ici afin que nos pages derreur soient servies même si nous déplaçons notre contenu Web normal et la racine du document associé vers un emplacement différent.<span class="nt">&lt;/p&gt;</span>
<span class="nt">&lt;h3</span> <span class="na">id=</span><span class="s">"diriger-les-erreurs-de-niveau-500-vers-la-page-50x-personnalisée"</span><span class="nt">&gt;</span>Diriger les erreurs de niveau 500 vers la page 50x personnalisée<span class="nt">&lt;/h3&gt;</span>
<span class="nt">&lt;p&gt;</span>Ensuite, nous pouvons ajouter les directives pour nous assurer que lorsque Nginx rencontre des erreurs de niveau 500 (problèmes liés au serveur), il servira lautre page personnalisée que nous avons créée. Cela suivra exactement la même formule que nous avons utilisée dans la dernière section. Cette fois, nous avons défini plusieurs erreurs de niveau 500 pour utiliser toutes la page custom_50x.html :<span class="nt">&lt;/p&gt;</span>
<span class="nt">&lt;div</span> <span class="na">class=</span><span class="s">"language-plaintext highlighter-rouge"</span><span class="nt">&gt;&lt;div</span> <span class="na">class=</span><span class="s">"highlight"</span><span class="nt">&gt;&lt;pre</span> <span class="na">class=</span><span class="s">"highlight"</span><span class="nt">&gt;&lt;code&gt;</span>/etc/nginx/sites-enabled/default
<span class="nt">&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;</span>
<span class="nt">&lt;div</span> <span class="na">class=</span><span class="s">"language-plaintext highlighter-rouge"</span><span class="nt">&gt;&lt;div</span> <span class="na">class=</span><span class="s">"highlight"</span><span class="nt">&gt;&lt;pre</span> <span class="na">class=</span><span class="s">"highlight"</span><span class="nt">&gt;&lt;code&gt;</span>server {
listen 80 default_server;
listen [::]:80 default_server ipv6only=on;
. . .
error_page 404 /custom_404.html;
location = /custom_404.html {
root /usr/share/nginx/html;
internal;
}
error_page 500 502 503 504 /custom_50x.html;
location = /custom_50x.html {
root /usr/share/nginx/html;
internal;
}
location /testing {
fastcgi_pass unix:/does/not/exist;
}
}
<span class="nt">&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;</span>
<span class="nt">&lt;p&gt;</span>En bas, nous avons également ajouté une passe fictive FastCGI afin que nous puissions tester notre page derreur de niveau 500 . Cela ne fonctionnera pas correctement car le backend nexiste pas. Demander une page ici nous permettra de tester que les erreurs de niveau 500 servent notre page personnalisée.<span class="nt">&lt;/p&gt;</span>
<span class="nt">&lt;p&gt;</span>Enregistrez et fermez le fichier lorsque vous avez terminé.<span class="nt">&lt;/p&gt;</span>
<span class="nt">&lt;h3</span> <span class="na">id=</span><span class="s">"redémarrer-nginx-et-tester-vos-pages"</span><span class="nt">&gt;</span>Redémarrer Nginx et tester vos pages<span class="nt">&lt;/h3&gt;</span>
<span class="nt">&lt;p&gt;</span>Testez la syntaxe de votre fichier de configuration en tapant:<span class="nt">&lt;/p&gt;</span>
<span class="nt">&lt;div</span> <span class="na">class=</span><span class="s">"language-plaintext highlighter-rouge"</span><span class="nt">&gt;&lt;div</span> <span class="na">class=</span><span class="s">"highlight"</span><span class="nt">&gt;&lt;pre</span> <span class="na">class=</span><span class="s">"highlight"</span><span class="nt">&gt;&lt;code&gt;</span> sudo nginx -t
<span class="nt">&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;</span>
<span class="nt">&lt;p&gt;</span>Si des erreurs ont été signalées, corrigez-les avant de continuer. Lorsquaucune erreur de syntaxe nest renvoyée, redémarrez Nginx en tapant:<span class="nt">&lt;/p&gt;</span>
<span class="nt">&lt;div</span> <span class="na">class=</span><span class="s">"language-plaintext highlighter-rouge"</span><span class="nt">&gt;&lt;div</span> <span class="na">class=</span><span class="s">"highlight"</span><span class="nt">&gt;&lt;pre</span> <span class="na">class=</span><span class="s">"highlight"</span><span class="nt">&gt;&lt;code&gt;</span> sudo service nginx restart
<span class="nt">&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;</span>
<span class="nt">&lt;p&gt;</span>Maintenant, lorsque vous allez sur le domaine ou ladresse IP de votre serveur et demandez un fichier inexistant, vous devriez voir la page 404 que nous avons configurée:<span class="nt">&lt;/p&gt;</span>
<span class="nt">&lt;div</span> <span class="na">class=</span><span class="s">"language-plaintext highlighter-rouge"</span><span class="nt">&gt;&lt;div</span> <span class="na">class=</span><span class="s">"highlight"</span><span class="nt">&gt;&lt;pre</span> <span class="na">class=</span><span class="s">"highlight"</span><span class="nt">&gt;&lt;code&gt;</span>http://server_domain_or_IP/thiswillerror
<span class="nt">&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;</span>
<span class="nt">&lt;p&gt;&lt;img</span> <span class="na">src=</span><span class="s">"/images/custom_404.png"</span> <span class="na">alt=</span><span class="s">"nginx custom 404"</span> <span class="nt">/&gt;&lt;/p&gt;</span>
<span class="nt">&lt;p&gt;</span>Lorsque vous vous rendrez à lemplacement que nous avons configuré pour le pass FastCGI, nous recevrons une erreur 502 Bad Gateway avec notre page personnalisée de niveau 500:<span class="nt">&lt;/p&gt;</span>
<span class="nt">&lt;div</span> <span class="na">class=</span><span class="s">"language-plaintext highlighter-rouge"</span><span class="nt">&gt;&lt;div</span> <span class="na">class=</span><span class="s">"highlight"</span><span class="nt">&gt;&lt;pre</span> <span class="na">class=</span><span class="s">"highlight"</span><span class="nt">&gt;&lt;code&gt;</span>http://server_domain_or_IP/testing
<span class="nt">&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;</span>
<span class="nt">&lt;p&gt;&lt;img</span> <span class="na">src=</span><span class="s">"/images/custom_50x.png"</span> <span class="na">alt=</span><span class="s">"nginx custom 50x"</span> <span class="nt">/&gt;&lt;/p&gt;</span>
<span class="nt">&lt;p&gt;</span>Vous pouvez maintenant revenir en arrière et supprimer le faux emplacement de passe FastCGI de votre configuration Nginx.<span class="nt">&lt;/p&gt;</span>
<span class="nt">&lt;h3</span> <span class="na">id=</span><span class="s">"conclusion"</span><span class="nt">&gt;</span>Conclusion<span class="nt">&lt;/h3&gt;</span>
<span class="nt">&lt;p&gt;</span>Vous devez maintenant diffuser des pages derreur personnalisées pour votre site. Il sagit dun moyen simple de personnaliser lexpérience de vos utilisateurs même lorsquils rencontrent des problèmes. Une suggestion pour ces pages est dinclure des liens vers des endroits où ils peuvent aller pour obtenir de laide ou plus dinformations. Si vous procédez ainsi, assurez-vous que les destinations des liens sont accessibles même lorsque les erreurs associées se produisent.<span class="nt">&lt;/p&gt;</span>
<span class="nt">&lt;/div&gt;</span>
<span class="nt">&lt;div</span> <span class="na">class=</span><span class="s">"d-print-none"</span><span class="nt">&gt;&lt;footer</span> <span class="na">class=</span><span class="s">"article__footer"</span><span class="nt">&gt;&lt;meta</span> <span class="na">itemprop=</span><span class="s">"dateModified"</span> <span class="na">content=</span><span class="s">"2019-12-21T00:00:00+01:00"</span><span class="nt">&gt;</span><span class="c">&lt;!-- start custom article footer snippet --&gt;</span>
<span class="c">&lt;!-- end custom article footer snippet --&gt;</span>
<span class="c">&lt;!--
&lt;div align="right"&gt;&lt;a type="application/rss+xml" href="/feed.xml" title="S'abonner"&gt;&lt;i class="fa fa-rss fa-2x"&gt;&lt;/i&gt;&lt;/a&gt;
&amp;emsp;&lt;/div&gt;
--&gt;</span>
<span class="nt">&lt;/footer&gt;</span>
<span class="nt">&lt;div</span> <span class="na">class=</span><span class="s">"article__section-navigator clearfix"</span><span class="nt">&gt;&lt;div</span> <span class="na">class=</span><span class="s">"previous"</span><span class="nt">&gt;&lt;span&gt;</span>PRÉCÉDENT<span class="nt">&lt;/span&gt;&lt;a</span> <span class="na">href=</span><span class="s">"/2019/12/19/Grub.html"</span><span class="nt">&gt;</span>Grub "Configure GRUB2 Boot Loader settings", clavier FR et un mot de passe<span class="nt">&lt;/a&gt;&lt;/div&gt;&lt;div</span> <span class="na">class=</span><span class="s">"next"</span><span class="nt">&gt;&lt;span&gt;</span>SUIVANT<span class="nt">&lt;/span&gt;&lt;a</span> <span class="na">href=</span><span class="s">"/2019/12/23/Blog-statique-jekyll-Yunohost-cinay.xyz.html"</span><span class="nt">&gt;</span>Blog statique de type jekyll sur site cinay.xyz<span class="nt">&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;</span>
<span class="nt">&lt;/div&gt;</span>
<span class="nt">&lt;script&gt;</span><span class="p">(</span><span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">SOURCES</span> <span class="o">=</span> <span class="nb">window</span><span class="p">.</span><span class="nx">TEXT_VARIABLES</span><span class="p">.</span><span class="nx">sources</span><span class="p">;</span>
<span class="nb">window</span><span class="p">.</span><span class="nx">Lazyload</span><span class="p">.</span><span class="nf">js</span><span class="p">(</span><span class="nx">SOURCES</span><span class="p">.</span><span class="nx">jquery</span><span class="p">,</span> <span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
<span class="nf">$</span><span class="p">(</span><span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">$this</span> <span class="p">,</span><span class="nx">$scroll</span><span class="p">;</span>
<span class="kd">var</span> <span class="nx">$articleContent</span> <span class="o">=</span> <span class="nf">$</span><span class="p">(</span><span class="dl">'</span><span class="s1">.js-article-content</span><span class="dl">'</span><span class="p">);</span>
<span class="kd">var</span> <span class="nx">hasSidebar</span> <span class="o">=</span> <span class="nf">$</span><span class="p">(</span><span class="dl">'</span><span class="s1">.js-page-root</span><span class="dl">'</span><span class="p">).</span><span class="nf">hasClass</span><span class="p">(</span><span class="dl">'</span><span class="s1">layout--page--sidebar</span><span class="dl">'</span><span class="p">);</span>
<span class="kd">var</span> <span class="nx">scroll</span> <span class="o">=</span> <span class="nx">hasSidebar</span> <span class="p">?</span> <span class="dl">'</span><span class="s1">.js-page-main</span><span class="dl">'</span> <span class="p">:</span> <span class="dl">'</span><span class="s1">html, body</span><span class="dl">'</span><span class="p">;</span>
<span class="nx">$scroll</span> <span class="o">=</span> <span class="nf">$</span><span class="p">(</span><span class="nx">scroll</span><span class="p">);</span>
<span class="nx">$articleContent</span><span class="p">.</span><span class="nf">find</span><span class="p">(</span><span class="dl">'</span><span class="s1">.highlight</span><span class="dl">'</span><span class="p">).</span><span class="nf">each</span><span class="p">(</span><span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
<span class="nx">$this</span> <span class="o">=</span> <span class="nf">$</span><span class="p">(</span><span class="k">this</span><span class="p">);</span>
<span class="nx">$this</span><span class="p">.</span><span class="nf">attr</span><span class="p">(</span><span class="dl">'</span><span class="s1">data-lang</span><span class="dl">'</span><span class="p">,</span> <span class="nx">$this</span><span class="p">.</span><span class="nf">find</span><span class="p">(</span><span class="dl">'</span><span class="s1">code</span><span class="dl">'</span><span class="p">).</span><span class="nf">attr</span><span class="p">(</span><span class="dl">'</span><span class="s1">data-lang</span><span class="dl">'</span><span class="p">));</span>
<span class="p">});</span>
<span class="nx">$articleContent</span><span class="p">.</span><span class="nf">find</span><span class="p">(</span><span class="dl">'</span><span class="s1">h1[id], h2[id], h3[id], h4[id], h5[id], h6[id]</span><span class="dl">'</span><span class="p">).</span><span class="nf">each</span><span class="p">(</span><span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
<span class="nx">$this</span> <span class="o">=</span> <span class="nf">$</span><span class="p">(</span><span class="k">this</span><span class="p">);</span>
<span class="nx">$this</span><span class="p">.</span><span class="nx">append</span><span class="p">(</span><span class="nx">$</span><span class="p">(</span><span class="dl">'</span><span class="s1">&lt;a class="anchor d-print-none" aria-hidden="true"&gt;&lt;/a&gt;</span><span class="dl">'</span><span class="p">).</span><span class="nx">html</span><span class="p">(</span><span class="dl">'</span><span class="s1">&lt;i class="fas fa-anchor"&gt;&lt;/i&gt;</span><span class="dl">'</span><span class="p">));</span>
<span class="p">});</span>
<span class="nx">$articleContent</span><span class="p">.</span><span class="nf">on</span><span class="p">(</span><span class="dl">'</span><span class="s1">click</span><span class="dl">'</span><span class="p">,</span> <span class="dl">'</span><span class="s1">.anchor</span><span class="dl">'</span><span class="p">,</span> <span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
<span class="nx">$scroll</span><span class="p">.</span><span class="nf">scrollToAnchor</span><span class="p">(</span><span class="dl">'</span><span class="s1">#</span><span class="dl">'</span> <span class="o">+</span> <span class="nf">$</span><span class="p">(</span><span class="k">this</span><span class="p">).</span><span class="nf">parent</span><span class="p">().</span><span class="nf">attr</span><span class="p">(</span><span class="dl">'</span><span class="s1">id</span><span class="dl">'</span><span class="p">),</span> <span class="mi">400</span><span class="p">);</span>
<span class="p">});</span>
<span class="p">});</span>
<span class="p">});</span>
<span class="p">})();</span>
<span class="nt">&lt;/script&gt;</span>
<span class="nt">&lt;/div&gt;&lt;section</span> <span class="na">class=</span><span class="s">"page__comments d-print-none"</span><span class="nt">&gt;&lt;/section&gt;&lt;/article&gt;</span><span class="c">&lt;!-- start custom main bottom snippet --&gt;</span>
<span class="c">&lt;!-- end custom main bottom snippet --&gt;</span>
<span class="nt">&lt;/div&gt;</span>
<span class="nt">&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;</span>
<span class="nt">&lt;/div&gt;&lt;script&gt;</span><span class="p">(</span><span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">SOURCES</span> <span class="o">=</span> <span class="nb">window</span><span class="p">.</span><span class="nx">TEXT_VARIABLES</span><span class="p">.</span><span class="nx">sources</span><span class="p">;</span>
<span class="nb">window</span><span class="p">.</span><span class="nx">Lazyload</span><span class="p">.</span><span class="nf">js</span><span class="p">(</span><span class="nx">SOURCES</span><span class="p">.</span><span class="nx">jquery</span><span class="p">,</span> <span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">$body</span> <span class="o">=</span> <span class="nf">$</span><span class="p">(</span><span class="dl">'</span><span class="s1">body</span><span class="dl">'</span><span class="p">),</span> <span class="nx">$window</span> <span class="o">=</span> <span class="nf">$</span><span class="p">(</span><span class="nb">window</span><span class="p">);</span>
<span class="kd">var</span> <span class="nx">$pageRoot</span> <span class="o">=</span> <span class="nf">$</span><span class="p">(</span><span class="dl">'</span><span class="s1">.js-page-root</span><span class="dl">'</span><span class="p">),</span> <span class="nx">$pageMain</span> <span class="o">=</span> <span class="nf">$</span><span class="p">(</span><span class="dl">'</span><span class="s1">.js-page-main</span><span class="dl">'</span><span class="p">);</span>
<span class="kd">var</span> <span class="nx">activeCount</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
<span class="kd">function</span> <span class="nf">modal</span><span class="p">(</span><span class="nx">options</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">$root</span> <span class="o">=</span> <span class="k">this</span><span class="p">,</span> <span class="nx">visible</span><span class="p">,</span> <span class="nx">onChange</span><span class="p">,</span> <span class="nx">hideWhenWindowScroll</span> <span class="o">=</span> <span class="kc">false</span><span class="p">;</span>
<span class="kd">var</span> <span class="nx">scrollTop</span><span class="p">;</span>
<span class="kd">function</span> <span class="nf">setOptions</span><span class="p">(</span><span class="nx">options</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">_options</span> <span class="o">=</span> <span class="nx">options</span> <span class="o">||</span> <span class="p">{};</span>
<span class="nx">visible</span> <span class="o">=</span> <span class="nx">_options</span><span class="p">.</span><span class="nx">initialVisible</span> <span class="o">===</span> <span class="kc">undefined</span> <span class="p">?</span> <span class="kc">false</span> <span class="p">:</span> <span class="nx">show</span><span class="p">;</span>
<span class="nx">onChange</span> <span class="o">=</span> <span class="nx">_options</span><span class="p">.</span><span class="nx">onChange</span><span class="p">;</span>
<span class="nx">hideWhenWindowScroll</span> <span class="o">=</span> <span class="nx">_options</span><span class="p">.</span><span class="nx">hideWhenWindowScroll</span><span class="p">;</span>
<span class="p">}</span>
<span class="kd">function</span> <span class="nf">init</span><span class="p">()</span> <span class="p">{</span>
<span class="nf">setState</span><span class="p">(</span><span class="nx">visible</span><span class="p">);</span>
<span class="p">}</span>
<span class="kd">function</span> <span class="nf">setState</span><span class="p">(</span><span class="nx">isShow</span><span class="p">)</span> <span class="p">{</span>
<span class="k">if </span><span class="p">(</span><span class="nx">isShow</span> <span class="o">===</span> <span class="nx">visible</span><span class="p">)</span> <span class="p">{</span>
<span class="k">return</span><span class="p">;</span>
<span class="p">}</span>
<span class="nx">visible</span> <span class="o">=</span> <span class="nx">isShow</span><span class="p">;</span>
<span class="k">if </span><span class="p">(</span><span class="nx">visible</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">activeCount</span><span class="o">++</span><span class="p">;</span>
<span class="nx">scrollTop</span> <span class="o">=</span> <span class="nf">$</span><span class="p">(</span><span class="nb">window</span><span class="p">).</span><span class="nf">scrollTop</span><span class="p">()</span> <span class="o">||</span> <span class="nx">$pageMain</span><span class="p">.</span><span class="nf">scrollTop</span><span class="p">();</span>
<span class="nx">$root</span><span class="p">.</span><span class="nf">addClass</span><span class="p">(</span><span class="dl">'</span><span class="s1">modal--show</span><span class="dl">'</span><span class="p">);</span>
<span class="nx">$pageMain</span><span class="p">.</span><span class="nf">scrollTop</span><span class="p">(</span><span class="nx">scrollTop</span><span class="p">);</span>
<span class="nx">activeCount</span> <span class="o">===</span> <span class="mi">1</span> <span class="o">&amp;&amp;</span> <span class="p">(</span><span class="nx">$pageRoot</span><span class="p">.</span><span class="nf">addClass</span><span class="p">(</span><span class="dl">'</span><span class="s1">show-modal</span><span class="dl">'</span><span class="p">),</span> <span class="nx">$body</span><span class="p">.</span><span class="nf">addClass</span><span class="p">(</span><span class="dl">'</span><span class="s1">of-hidden</span><span class="dl">'</span><span class="p">));</span>
<span class="nx">hideWhenWindowScroll</span> <span class="o">&amp;&amp;</span> <span class="nb">window</span><span class="p">.</span><span class="nf">hasEvent</span><span class="p">(</span><span class="dl">'</span><span class="s1">touchstart</span><span class="dl">'</span><span class="p">)</span> <span class="o">&amp;&amp;</span> <span class="nx">$window</span><span class="p">.</span><span class="nf">on</span><span class="p">(</span><span class="dl">'</span><span class="s1">scroll</span><span class="dl">'</span><span class="p">,</span> <span class="nx">hide</span><span class="p">);</span>
<span class="nx">$window</span><span class="p">.</span><span class="nf">on</span><span class="p">(</span><span class="dl">'</span><span class="s1">keyup</span><span class="dl">'</span><span class="p">,</span> <span class="nx">handleKeyup</span><span class="p">);</span>
<span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
<span class="nx">activeCount</span> <span class="o">&gt;</span> <span class="mi">0</span> <span class="o">&amp;&amp;</span> <span class="nx">activeCount</span><span class="o">--</span><span class="p">;</span>
<span class="nx">$root</span><span class="p">.</span><span class="nf">removeClass</span><span class="p">(</span><span class="dl">'</span><span class="s1">modal--show</span><span class="dl">'</span><span class="p">);</span>
<span class="nx">$window</span><span class="p">.</span><span class="nf">scrollTop</span><span class="p">(</span><span class="nx">scrollTop</span><span class="p">);</span>
<span class="nx">activeCount</span> <span class="o">===</span> <span class="mi">0</span> <span class="o">&amp;&amp;</span> <span class="p">(</span><span class="nx">$pageRoot</span><span class="p">.</span><span class="nf">removeClass</span><span class="p">(</span><span class="dl">'</span><span class="s1">show-modal</span><span class="dl">'</span><span class="p">),</span> <span class="nx">$body</span><span class="p">.</span><span class="nf">removeClass</span><span class="p">(</span><span class="dl">'</span><span class="s1">of-hidden</span><span class="dl">'</span><span class="p">));</span>
<span class="nx">hideWhenWindowScroll</span> <span class="o">&amp;&amp;</span> <span class="nb">window</span><span class="p">.</span><span class="nf">hasEvent</span><span class="p">(</span><span class="dl">'</span><span class="s1">touchstart</span><span class="dl">'</span><span class="p">)</span> <span class="o">&amp;&amp;</span> <span class="nx">$window</span><span class="p">.</span><span class="nf">off</span><span class="p">(</span><span class="dl">'</span><span class="s1">scroll</span><span class="dl">'</span><span class="p">,</span> <span class="nx">hide</span><span class="p">);</span>
<span class="nx">$window</span><span class="p">.</span><span class="nf">off</span><span class="p">(</span><span class="dl">'</span><span class="s1">keyup</span><span class="dl">'</span><span class="p">,</span> <span class="nx">handleKeyup</span><span class="p">);</span>
<span class="p">}</span>
<span class="nx">onChange</span> <span class="o">&amp;&amp;</span> <span class="nf">onChange</span><span class="p">(</span><span class="nx">visible</span><span class="p">);</span>
<span class="p">}</span>
<span class="kd">function</span> <span class="nf">show</span><span class="p">()</span> <span class="p">{</span>
<span class="nf">setState</span><span class="p">(</span><span class="kc">true</span><span class="p">);</span>
<span class="p">}</span>
<span class="kd">function</span> <span class="nf">hide</span><span class="p">()</span> <span class="p">{</span>
<span class="nf">setState</span><span class="p">(</span><span class="kc">false</span><span class="p">);</span>
<span class="p">}</span>
<span class="kd">function</span> <span class="nf">handleKeyup</span><span class="p">(</span><span class="nx">e</span><span class="p">)</span> <span class="p">{</span>
<span class="c1">// Char Code: 27 ESC</span>
<span class="k">if </span><span class="p">(</span><span class="nx">e</span><span class="p">.</span><span class="nx">which</span> <span class="o">===</span> <span class="mi">27</span><span class="p">)</span> <span class="p">{</span>
<span class="nf">hide</span><span class="p">();</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="nf">setOptions</span><span class="p">(</span><span class="nx">options</span><span class="p">);</span>
<span class="nf">init</span><span class="p">();</span>
<span class="k">return</span> <span class="p">{</span>
<span class="na">show</span><span class="p">:</span> <span class="nx">show</span><span class="p">,</span>
<span class="na">hide</span><span class="p">:</span> <span class="nx">hide</span><span class="p">,</span>
<span class="na">$el</span><span class="p">:</span> <span class="nx">$root</span>
<span class="p">};</span>
<span class="p">}</span>
<span class="nx">$</span><span class="p">.</span><span class="nx">fn</span><span class="p">.</span><span class="nx">modal</span> <span class="o">=</span> <span class="nx">modal</span><span class="p">;</span>
<span class="p">});</span>
<span class="p">})();</span>
<span class="nt">&lt;/script&gt;&lt;div</span> <span class="na">class=</span><span class="s">"modal modal--overflow page__search-modal d-print-none js-page-search-modal"</span><span class="nt">&gt;&lt;script&gt;</span>
<span class="p">(</span><span class="nf">function </span><span class="p">()</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">SOURCES</span> <span class="o">=</span> <span class="nb">window</span><span class="p">.</span><span class="nx">TEXT_VARIABLES</span><span class="p">.</span><span class="nx">sources</span><span class="p">;</span>
<span class="nb">window</span><span class="p">.</span><span class="nx">Lazyload</span><span class="p">.</span><span class="nf">js</span><span class="p">(</span><span class="nx">SOURCES</span><span class="p">.</span><span class="nx">jquery</span><span class="p">,</span> <span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
<span class="c1">// search panel</span>
<span class="kd">var</span> <span class="nx">search</span> <span class="o">=</span> <span class="p">(</span><span class="nb">window</span><span class="p">.</span><span class="nx">search</span> <span class="o">||</span> <span class="p">(</span><span class="nb">window</span><span class="p">.</span><span class="nx">search</span> <span class="o">=</span> <span class="p">{}));</span>
<span class="kd">var</span> <span class="nx">useDefaultSearchBox</span> <span class="o">=</span> <span class="nb">window</span><span class="p">.</span><span class="nx">useDefaultSearchBox</span> <span class="o">===</span> <span class="kc">undefined</span> <span class="p">?</span>
<span class="kc">true</span> <span class="p">:</span> <span class="nb">window</span><span class="p">.</span><span class="nx">useDefaultSearchBox</span> <span class="p">;</span>
<span class="kd">var</span> <span class="nx">$searchModal</span> <span class="o">=</span> <span class="nf">$</span><span class="p">(</span><span class="dl">'</span><span class="s1">.js-page-search-modal</span><span class="dl">'</span><span class="p">);</span>
<span class="kd">var</span> <span class="nx">$searchToggle</span> <span class="o">=</span> <span class="nf">$</span><span class="p">(</span><span class="dl">'</span><span class="s1">.js-search-toggle</span><span class="dl">'</span><span class="p">);</span>
<span class="kd">var</span> <span class="nx">searchModal</span> <span class="o">=</span> <span class="nx">$searchModal</span><span class="p">.</span><span class="nf">modal</span><span class="p">({</span> <span class="na">onChange</span><span class="p">:</span> <span class="nx">handleModalChange</span><span class="p">,</span> <span class="na">hideWhenWindowScroll</span><span class="p">:</span> <span class="kc">true</span> <span class="p">});</span>
<span class="kd">var</span> <span class="nx">modalVisible</span> <span class="o">=</span> <span class="kc">false</span><span class="p">;</span>
<span class="nx">search</span><span class="p">.</span><span class="nx">searchModal</span> <span class="o">=</span> <span class="nx">searchModal</span><span class="p">;</span>
<span class="kd">var</span> <span class="nx">$searchBox</span> <span class="o">=</span> <span class="kc">null</span><span class="p">;</span>
<span class="kd">var</span> <span class="nx">$searchInput</span> <span class="o">=</span> <span class="kc">null</span><span class="p">;</span>
<span class="kd">var</span> <span class="nx">$searchClear</span> <span class="o">=</span> <span class="kc">null</span><span class="p">;</span>
<span class="kd">function</span> <span class="nf">getModalVisible</span><span class="p">()</span> <span class="p">{</span>
<span class="k">return</span> <span class="nx">modalVisible</span><span class="p">;</span>
<span class="p">}</span>
<span class="nx">search</span><span class="p">.</span><span class="nx">getModalVisible</span> <span class="o">=</span> <span class="nx">getModalVisible</span><span class="p">;</span>
<span class="kd">function</span> <span class="nf">handleModalChange</span><span class="p">(</span><span class="nx">visible</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">modalVisible</span> <span class="o">=</span> <span class="nx">visible</span><span class="p">;</span>
<span class="k">if </span><span class="p">(</span><span class="nx">visible</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">search</span><span class="p">.</span><span class="nx">onShow</span> <span class="o">&amp;&amp;</span> <span class="nx">search</span><span class="p">.</span><span class="nf">onShow</span><span class="p">();</span>
<span class="nx">useDefaultSearchBox</span> <span class="o">&amp;&amp;</span> <span class="nx">$searchInput</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">&amp;&amp;</span> <span class="nx">$searchInput</span><span class="p">[</span><span class="mi">0</span><span class="p">].</span><span class="nf">focus</span><span class="p">();</span>
<span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
<span class="nx">search</span><span class="p">.</span><span class="nx">onShow</span> <span class="o">&amp;&amp;</span> <span class="nx">search</span><span class="p">.</span><span class="nf">onHide</span><span class="p">();</span>
<span class="nx">useDefaultSearchBox</span> <span class="o">&amp;&amp;</span> <span class="nx">$searchInput</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">&amp;&amp;</span> <span class="nx">$searchInput</span><span class="p">[</span><span class="mi">0</span><span class="p">].</span><span class="nf">blur</span><span class="p">();</span>
<span class="nf">setTimeout</span><span class="p">(</span><span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
<span class="nx">useDefaultSearchBox</span> <span class="o">&amp;&amp;</span> <span class="p">(</span><span class="nx">$searchInput</span><span class="p">.</span><span class="nf">val</span><span class="p">(</span><span class="dl">''</span><span class="p">),</span> <span class="nx">$searchBox</span><span class="p">.</span><span class="nf">removeClass</span><span class="p">(</span><span class="dl">'</span><span class="s1">not-empty</span><span class="dl">'</span><span class="p">));</span>
<span class="nx">search</span><span class="p">.</span><span class="nx">clear</span> <span class="o">&amp;&amp;</span> <span class="nx">search</span><span class="p">.</span><span class="nf">clear</span><span class="p">();</span>
<span class="nb">window</span><span class="p">.</span><span class="nx">pageAsideAffix</span> <span class="o">&amp;&amp;</span> <span class="nb">window</span><span class="p">.</span><span class="nx">pageAsideAffix</span><span class="p">.</span><span class="nf">refresh</span><span class="p">();</span>
<span class="p">},</span> <span class="mi">400</span><span class="p">);</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="nx">$searchToggle</span><span class="p">.</span><span class="nf">on</span><span class="p">(</span><span class="dl">'</span><span class="s1">click</span><span class="dl">'</span><span class="p">,</span> <span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
<span class="nx">modalVisible</span> <span class="p">?</span> <span class="nx">searchModal</span><span class="p">.</span><span class="nf">hide</span><span class="p">()</span> <span class="p">:</span> <span class="nx">searchModal</span><span class="p">.</span><span class="nf">show</span><span class="p">();</span>
<span class="p">});</span>
<span class="c1">// Char Code: 83 S, 191 /</span>
<span class="nf">$</span><span class="p">(</span><span class="nb">window</span><span class="p">).</span><span class="nf">on</span><span class="p">(</span><span class="dl">'</span><span class="s1">keyup</span><span class="dl">'</span><span class="p">,</span> <span class="kd">function</span><span class="p">(</span><span class="nx">e</span><span class="p">)</span> <span class="p">{</span>
<span class="k">if </span><span class="p">(</span><span class="o">!</span><span class="nx">modalVisible</span> <span class="o">&amp;&amp;</span> <span class="o">!</span><span class="nb">window</span><span class="p">.</span><span class="nf">isFormElement</span><span class="p">(</span><span class="nx">e</span><span class="p">.</span><span class="nx">target</span> <span class="o">||</span> <span class="nx">e</span><span class="p">.</span><span class="nx">srcElement</span><span class="p">)</span> <span class="o">&amp;&amp;</span> <span class="p">(</span><span class="nx">e</span><span class="p">.</span><span class="nx">which</span> <span class="o">===</span> <span class="mi">83</span> <span class="o">||</span> <span class="nx">e</span><span class="p">.</span><span class="nx">which</span> <span class="o">===</span> <span class="mi">191</span><span class="p">))</span> <span class="p">{</span>
<span class="nx">modalVisible</span> <span class="o">||</span> <span class="nx">searchModal</span><span class="p">.</span><span class="nf">show</span><span class="p">();</span>
<span class="p">}</span>
<span class="p">});</span>
<span class="k">if </span><span class="p">(</span><span class="nx">useDefaultSearchBox</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">$searchBox</span> <span class="o">=</span> <span class="nf">$</span><span class="p">(</span><span class="dl">'</span><span class="s1">.js-search-box</span><span class="dl">'</span><span class="p">);</span>
<span class="nx">$searchInput</span> <span class="o">=</span> <span class="nx">$searchBox</span><span class="p">.</span><span class="nf">children</span><span class="p">(</span><span class="dl">'</span><span class="s1">input</span><span class="dl">'</span><span class="p">);</span>
<span class="nx">$searchClear</span> <span class="o">=</span> <span class="nx">$searchBox</span><span class="p">.</span><span class="nf">children</span><span class="p">(</span><span class="dl">'</span><span class="s1">.js-icon-clear</span><span class="dl">'</span><span class="p">);</span>
<span class="nx">search</span><span class="p">.</span><span class="nx">getSearchInput</span> <span class="o">=</span> <span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
<span class="k">return</span> <span class="nx">$searchInput</span><span class="p">.</span><span class="nf">get</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span>
<span class="p">};</span>
<span class="nx">search</span><span class="p">.</span><span class="nx">getVal</span> <span class="o">=</span> <span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
<span class="k">return</span> <span class="nx">$searchInput</span><span class="p">.</span><span class="nf">val</span><span class="p">();</span>
<span class="p">};</span>
<span class="nx">search</span><span class="p">.</span><span class="nx">setVal</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">val</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">$searchInput</span><span class="p">.</span><span class="nf">val</span><span class="p">(</span><span class="nx">val</span><span class="p">);</span>
<span class="p">};</span>
<span class="nx">$searchInput</span><span class="p">.</span><span class="nf">on</span><span class="p">(</span><span class="dl">'</span><span class="s1">focus</span><span class="dl">'</span><span class="p">,</span> <span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
<span class="nf">$</span><span class="p">(</span><span class="k">this</span><span class="p">).</span><span class="nf">addClass</span><span class="p">(</span><span class="dl">'</span><span class="s1">focus</span><span class="dl">'</span><span class="p">);</span>
<span class="p">});</span>
<span class="nx">$searchInput</span><span class="p">.</span><span class="nf">on</span><span class="p">(</span><span class="dl">'</span><span class="s1">blur</span><span class="dl">'</span><span class="p">,</span> <span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
<span class="nf">$</span><span class="p">(</span><span class="k">this</span><span class="p">).</span><span class="nf">removeClass</span><span class="p">(</span><span class="dl">'</span><span class="s1">focus</span><span class="dl">'</span><span class="p">);</span>
<span class="p">});</span>
<span class="nx">$searchInput</span><span class="p">.</span><span class="nf">on</span><span class="p">(</span><span class="dl">'</span><span class="s1">input</span><span class="dl">'</span><span class="p">,</span> <span class="nb">window</span><span class="p">.</span><span class="nf">throttle</span><span class="p">(</span><span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">val</span> <span class="o">=</span> <span class="nf">$</span><span class="p">(</span><span class="k">this</span><span class="p">).</span><span class="nf">val</span><span class="p">();</span>
<span class="k">if </span><span class="p">(</span><span class="nx">val</span> <span class="o">===</span> <span class="dl">''</span> <span class="o">||</span> <span class="k">typeof</span> <span class="nx">val</span> <span class="o">!==</span> <span class="dl">'</span><span class="s1">string</span><span class="dl">'</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">search</span><span class="p">.</span><span class="nx">clear</span> <span class="o">&amp;&amp;</span> <span class="nx">search</span><span class="p">.</span><span class="nf">clear</span><span class="p">();</span>
<span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
<span class="nx">$searchBox</span><span class="p">.</span><span class="nf">addClass</span><span class="p">(</span><span class="dl">'</span><span class="s1">not-empty</span><span class="dl">'</span><span class="p">);</span>
<span class="nx">search</span><span class="p">.</span><span class="nx">onInputNotEmpty</span> <span class="o">&amp;&amp;</span> <span class="nx">search</span><span class="p">.</span><span class="nf">onInputNotEmpty</span><span class="p">(</span><span class="nx">val</span><span class="p">);</span>
<span class="p">}</span>
<span class="p">},</span> <span class="mi">400</span><span class="p">));</span>
<span class="nx">$searchClear</span><span class="p">.</span><span class="nf">on</span><span class="p">(</span><span class="dl">'</span><span class="s1">click</span><span class="dl">'</span><span class="p">,</span> <span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
<span class="nx">$searchInput</span><span class="p">.</span><span class="nf">val</span><span class="p">(</span><span class="dl">''</span><span class="p">);</span> <span class="nx">$searchBox</span><span class="p">.</span><span class="nf">removeClass</span><span class="p">(</span><span class="dl">'</span><span class="s1">not-empty</span><span class="dl">'</span><span class="p">);</span>
<span class="nx">search</span><span class="p">.</span><span class="nx">clear</span> <span class="o">&amp;&amp;</span> <span class="nx">search</span><span class="p">.</span><span class="nf">clear</span><span class="p">();</span>
<span class="p">});</span>
<span class="p">}</span>
<span class="p">});</span>
<span class="p">})();</span>
<span class="nt">&lt;/script&gt;&lt;div</span> <span class="na">class=</span><span class="s">"search search--dark"</span><span class="nt">&gt;</span>
<span class="nt">&lt;div</span> <span class="na">class=</span><span class="s">"main"</span><span class="nt">&gt;</span>
<span class="nt">&lt;div</span> <span class="na">class=</span><span class="s">"search__header"</span><span class="nt">&gt;</span>Recherche<span class="nt">&lt;/div&gt;</span>
<span class="nt">&lt;div</span> <span class="na">class=</span><span class="s">"search-bar"</span><span class="nt">&gt;</span>
<span class="nt">&lt;div</span> <span class="na">class=</span><span class="s">"search-box js-search-box"</span><span class="nt">&gt;</span>
<span class="nt">&lt;div</span> <span class="na">class=</span><span class="s">"search-box__icon-search"</span><span class="nt">&gt;&lt;i</span> <span class="na">class=</span><span class="s">"fas fa-search"</span><span class="nt">&gt;&lt;/i&gt;&lt;/div&gt;</span>
<span class="nt">&lt;input</span> <span class="na">id=</span><span class="s">"search-input"</span> <span class="na">type=</span><span class="s">"text"</span> <span class="nt">/&gt;</span>
<span class="nt">&lt;div</span> <span class="na">class=</span><span class="s">"search-box__icon-clear js-icon-clear"</span><span class="nt">&gt;</span>
<span class="nt">&lt;a&gt;&lt;i</span> <span class="na">class=</span><span class="s">"fas fa-times"</span><span class="nt">&gt;&lt;/i&gt;&lt;/a&gt;</span>
<span class="nt">&lt;/div&gt;</span>
<span class="nt">&lt;/div&gt;</span>
<span class="nt">&lt;button</span> <span class="na">class=</span><span class="s">"button button--theme-dark button--pill search__cancel js-search-toggle"</span><span class="nt">&gt;</span>
Annuler<span class="nt">&lt;/button&gt;</span>
<span class="nt">&lt;/div&gt;</span>
<span class="nt">&lt;div</span> <span class="na">id=</span><span class="s">"results-container"</span> <span class="na">class=</span><span class="s">"search-result js-search-result"</span><span class="nt">&gt;&lt;/div&gt;</span>
<span class="nt">&lt;/div&gt;</span>
<span class="nt">&lt;/div&gt;</span>
<span class="c">&lt;!-- Script pointing to search-script.js --&gt;</span>
<span class="nt">&lt;script&gt;</span><span class="cm">/*!
* Simple-Jekyll-Search
* Copyright 2015-2020, Christian Fei
* Licensed under the MIT License.
*/</span>
<span class="p">(</span><span class="kd">function</span><span class="p">(){</span>
<span class="dl">'</span><span class="s1">use strict</span><span class="dl">'</span>
<span class="kd">var</span> <span class="nx">_$Templater_7</span> <span class="o">=</span> <span class="p">{</span>
<span class="na">compile</span><span class="p">:</span> <span class="nx">compile</span><span class="p">,</span>
<span class="na">setOptions</span><span class="p">:</span> <span class="nx">setOptions</span>
<span class="p">}</span>
<span class="kd">const</span> <span class="nx">options</span> <span class="o">=</span> <span class="p">{}</span>
<span class="nx">options</span><span class="p">.</span><span class="nx">pattern</span> <span class="o">=</span> <span class="sr">/</span><span class="se">\{(</span><span class="sr">.*</span><span class="se">?)\}</span><span class="sr">/g</span>
<span class="nx">options</span><span class="p">.</span><span class="nx">template</span> <span class="o">=</span> <span class="dl">''</span>
<span class="nx">options</span><span class="p">.</span><span class="nx">middleware</span> <span class="o">=</span> <span class="nf">function </span><span class="p">()</span> <span class="p">{}</span>
<span class="kd">function</span> <span class="nf">setOptions</span> <span class="p">(</span><span class="nx">_options</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">options</span><span class="p">.</span><span class="nx">pattern</span> <span class="o">=</span> <span class="nx">_options</span><span class="p">.</span><span class="nx">pattern</span> <span class="o">||</span> <span class="nx">options</span><span class="p">.</span><span class="nx">pattern</span>
<span class="nx">options</span><span class="p">.</span><span class="nx">template</span> <span class="o">=</span> <span class="nx">_options</span><span class="p">.</span><span class="nx">template</span> <span class="o">||</span> <span class="nx">options</span><span class="p">.</span><span class="nx">template</span>
<span class="k">if </span><span class="p">(</span><span class="k">typeof</span> <span class="nx">_options</span><span class="p">.</span><span class="nx">middleware</span> <span class="o">===</span> <span class="dl">'</span><span class="s1">function</span><span class="dl">'</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">options</span><span class="p">.</span><span class="nx">middleware</span> <span class="o">=</span> <span class="nx">_options</span><span class="p">.</span><span class="nx">middleware</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="kd">function</span> <span class="nf">compile</span> <span class="p">(</span><span class="nx">data</span><span class="p">)</span> <span class="p">{</span>
<span class="k">return</span> <span class="nx">options</span><span class="p">.</span><span class="nx">template</span><span class="p">.</span><span class="nf">replace</span><span class="p">(</span><span class="nx">options</span><span class="p">.</span><span class="nx">pattern</span><span class="p">,</span> <span class="nf">function </span><span class="p">(</span><span class="nx">match</span><span class="p">,</span> <span class="nx">prop</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">const</span> <span class="nx">value</span> <span class="o">=</span> <span class="nx">options</span><span class="p">.</span><span class="nf">middleware</span><span class="p">(</span><span class="nx">prop</span><span class="p">,</span> <span class="nx">data</span><span class="p">[</span><span class="nx">prop</span><span class="p">],</span> <span class="nx">options</span><span class="p">.</span><span class="nx">template</span><span class="p">)</span>
<span class="k">if </span><span class="p">(</span><span class="k">typeof</span> <span class="nx">value</span> <span class="o">!==</span> <span class="dl">'</span><span class="s1">undefined</span><span class="dl">'</span><span class="p">)</span> <span class="p">{</span>
<span class="k">return</span> <span class="nx">value</span>
<span class="p">}</span>
<span class="k">return</span> <span class="nx">data</span><span class="p">[</span><span class="nx">prop</span><span class="p">]</span> <span class="o">||</span> <span class="nx">match</span>
<span class="p">})</span>
<span class="p">}</span>
<span class="dl">'</span><span class="s1">use strict</span><span class="dl">'</span><span class="p">;</span>
<span class="kd">function</span> <span class="nf">fuzzysearch</span> <span class="p">(</span><span class="nx">needle</span><span class="p">,</span> <span class="nx">haystack</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">tlen</span> <span class="o">=</span> <span class="nx">haystack</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span>
<span class="kd">var</span> <span class="nx">qlen</span> <span class="o">=</span> <span class="nx">needle</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span>
<span class="k">if </span><span class="p">(</span><span class="nx">qlen</span> <span class="o">&gt;</span> <span class="nx">tlen</span><span class="p">)</span> <span class="p">{</span>
<span class="k">return</span> <span class="kc">false</span><span class="p">;</span>
<span class="p">}</span>
<span class="k">if </span><span class="p">(</span><span class="nx">qlen</span> <span class="o">===</span> <span class="nx">tlen</span><span class="p">)</span> <span class="p">{</span>
<span class="k">return</span> <span class="nx">needle</span> <span class="o">===</span> <span class="nx">haystack</span><span class="p">;</span>
<span class="p">}</span>
<span class="nl">outer</span><span class="p">:</span> <span class="k">for</span> <span class="p">(</span><span class="kd">var</span> <span class="nx">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span> <span class="nx">j</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">i</span> <span class="o">&lt;</span> <span class="nx">qlen</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">nch</span> <span class="o">=</span> <span class="nx">needle</span><span class="p">.</span><span class="nf">charCodeAt</span><span class="p">(</span><span class="nx">i</span><span class="p">);</span>
<span class="k">while</span> <span class="p">(</span><span class="nx">j</span> <span class="o">&lt;</span> <span class="nx">tlen</span><span class="p">)</span> <span class="p">{</span>
<span class="k">if </span><span class="p">(</span><span class="nx">haystack</span><span class="p">.</span><span class="nf">charCodeAt</span><span class="p">(</span><span class="nx">j</span><span class="o">++</span><span class="p">)</span> <span class="o">===</span> <span class="nx">nch</span><span class="p">)</span> <span class="p">{</span>
<span class="k">continue</span> <span class="nx">outer</span><span class="p">;</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="k">return</span> <span class="kc">false</span><span class="p">;</span>
<span class="p">}</span>
<span class="k">return</span> <span class="kc">true</span><span class="p">;</span>
<span class="p">}</span>
<span class="kd">var</span> <span class="nx">_$fuzzysearch_1</span> <span class="o">=</span> <span class="nx">fuzzysearch</span><span class="p">;</span>
<span class="dl">'</span><span class="s1">use strict</span><span class="dl">'</span>
<span class="cm">/* removed: const _$fuzzysearch_1 = require('fuzzysearch') */</span><span class="p">;</span>
<span class="kd">var</span> <span class="nx">_$FuzzySearchStrategy_5</span> <span class="o">=</span> <span class="k">new</span> <span class="nc">FuzzySearchStrategy</span><span class="p">()</span>
<span class="kd">function</span> <span class="nf">FuzzySearchStrategy</span> <span class="p">()</span> <span class="p">{</span>
<span class="k">this</span><span class="p">.</span><span class="nx">matches</span> <span class="o">=</span> <span class="nf">function </span><span class="p">(</span><span class="nx">string</span><span class="p">,</span> <span class="nx">crit</span><span class="p">)</span> <span class="p">{</span>
<span class="k">return</span> <span class="nx">_</span><span class="nf">$fuzzysearch_1</span><span class="p">(</span><span class="nx">crit</span><span class="p">.</span><span class="nf">toLowerCase</span><span class="p">(),</span> <span class="nx">string</span><span class="p">.</span><span class="nf">toLowerCase</span><span class="p">())</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="dl">'</span><span class="s1">use strict</span><span class="dl">'</span>
<span class="kd">var</span> <span class="nx">_$LiteralSearchStrategy_6</span> <span class="o">=</span> <span class="k">new</span> <span class="nc">LiteralSearchStrategy</span><span class="p">()</span>
<span class="kd">function</span> <span class="nf">LiteralSearchStrategy</span> <span class="p">()</span> <span class="p">{</span>
<span class="k">this</span><span class="p">.</span><span class="nx">matches</span> <span class="o">=</span> <span class="nf">function </span><span class="p">(</span><span class="nx">str</span><span class="p">,</span> <span class="nx">crit</span><span class="p">)</span> <span class="p">{</span>
<span class="k">if </span><span class="p">(</span><span class="o">!</span><span class="nx">str</span><span class="p">)</span> <span class="k">return</span> <span class="kc">false</span>
<span class="nx">str</span> <span class="o">=</span> <span class="nx">str</span><span class="p">.</span><span class="nf">trim</span><span class="p">().</span><span class="nf">toLowerCase</span><span class="p">()</span>
<span class="nx">crit</span> <span class="o">=</span> <span class="nx">crit</span><span class="p">.</span><span class="nf">trim</span><span class="p">().</span><span class="nf">toLowerCase</span><span class="p">()</span>
<span class="k">return</span> <span class="nx">crit</span><span class="p">.</span><span class="nf">split</span><span class="p">(</span><span class="dl">'</span><span class="s1"> </span><span class="dl">'</span><span class="p">).</span><span class="nf">filter</span><span class="p">(</span><span class="nf">function </span><span class="p">(</span><span class="nx">word</span><span class="p">)</span> <span class="p">{</span>
<span class="k">return</span> <span class="nx">str</span><span class="p">.</span><span class="nf">indexOf</span><span class="p">(</span><span class="nx">word</span><span class="p">)</span> <span class="o">&gt;=</span> <span class="mi">0</span>
<span class="p">}).</span><span class="nx">length</span> <span class="o">===</span> <span class="nx">crit</span><span class="p">.</span><span class="nf">split</span><span class="p">(</span><span class="dl">'</span><span class="s1"> </span><span class="dl">'</span><span class="p">).</span><span class="nx">length</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="dl">'</span><span class="s1">use strict</span><span class="dl">'</span>
<span class="kd">var</span> <span class="nx">_$Repository_4</span> <span class="o">=</span> <span class="p">{</span>
<span class="na">put</span><span class="p">:</span> <span class="nx">put</span><span class="p">,</span>
<span class="na">clear</span><span class="p">:</span> <span class="nx">clear</span><span class="p">,</span>
<span class="na">search</span><span class="p">:</span> <span class="nx">search</span><span class="p">,</span>
<span class="na">setOptions</span><span class="p">:</span> <span class="nx">__setOptions_4</span>
<span class="p">}</span>
<span class="cm">/* removed: const _$FuzzySearchStrategy_5 = require('./SearchStrategies/FuzzySearchStrategy') */</span><span class="p">;</span>
<span class="cm">/* removed: const _$LiteralSearchStrategy_6 = require('./SearchStrategies/LiteralSearchStrategy') */</span><span class="p">;</span>
<span class="kd">function</span> <span class="nf">NoSort</span> <span class="p">()</span> <span class="p">{</span>
<span class="k">return</span> <span class="mi">0</span>
<span class="p">}</span>
<span class="kd">const</span> <span class="nx">data</span> <span class="o">=</span> <span class="p">[]</span>
<span class="kd">let</span> <span class="nx">opt</span> <span class="o">=</span> <span class="p">{}</span>
<span class="nx">opt</span><span class="p">.</span><span class="nx">fuzzy</span> <span class="o">=</span> <span class="kc">false</span>
<span class="nx">opt</span><span class="p">.</span><span class="nx">limit</span> <span class="o">=</span> <span class="mi">10</span>
<span class="nx">opt</span><span class="p">.</span><span class="nx">searchStrategy</span> <span class="o">=</span> <span class="nx">opt</span><span class="p">.</span><span class="nx">fuzzy</span> <span class="p">?</span> <span class="nx">_$FuzzySearchStrategy_5</span> <span class="p">:</span> <span class="nx">_$LiteralSearchStrategy_6</span>
<span class="nx">opt</span><span class="p">.</span><span class="nx">sort</span> <span class="o">=</span> <span class="nx">NoSort</span>
<span class="nx">opt</span><span class="p">.</span><span class="nx">exclude</span> <span class="o">=</span> <span class="p">[]</span>
<span class="kd">function</span> <span class="nf">put</span> <span class="p">(</span><span class="nx">data</span><span class="p">)</span> <span class="p">{</span>
<span class="k">if </span><span class="p">(</span><span class="nf">isObject</span><span class="p">(</span><span class="nx">data</span><span class="p">))</span> <span class="p">{</span>
<span class="k">return</span> <span class="nf">addObject</span><span class="p">(</span><span class="nx">data</span><span class="p">)</span>
<span class="p">}</span>
<span class="k">if </span><span class="p">(</span><span class="nf">isArray</span><span class="p">(</span><span class="nx">data</span><span class="p">))</span> <span class="p">{</span>
<span class="k">return</span> <span class="nf">addArray</span><span class="p">(</span><span class="nx">data</span><span class="p">)</span>
<span class="p">}</span>
<span class="k">return</span> <span class="kc">undefined</span>
<span class="p">}</span>
<span class="kd">function</span> <span class="nf">clear</span> <span class="p">()</span> <span class="p">{</span>
<span class="nx">data</span><span class="p">.</span><span class="nx">length</span> <span class="o">=</span> <span class="mi">0</span>
<span class="k">return</span> <span class="nx">data</span>
<span class="p">}</span>
<span class="kd">function</span> <span class="nf">isObject</span> <span class="p">(</span><span class="nx">obj</span><span class="p">)</span> <span class="p">{</span>
<span class="k">return</span> <span class="nc">Boolean</span><span class="p">(</span><span class="nx">obj</span><span class="p">)</span> <span class="o">&amp;&amp;</span> <span class="nb">Object</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">toString</span><span class="p">.</span><span class="nf">call</span><span class="p">(</span><span class="nx">obj</span><span class="p">)</span> <span class="o">===</span> <span class="dl">'</span><span class="s1">[object Object]</span><span class="dl">'</span>
<span class="p">}</span>
<span class="kd">function</span> <span class="nf">isArray</span> <span class="p">(</span><span class="nx">obj</span><span class="p">)</span> <span class="p">{</span>
<span class="k">return</span> <span class="nc">Boolean</span><span class="p">(</span><span class="nx">obj</span><span class="p">)</span> <span class="o">&amp;&amp;</span> <span class="nb">Object</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">toString</span><span class="p">.</span><span class="nf">call</span><span class="p">(</span><span class="nx">obj</span><span class="p">)</span> <span class="o">===</span> <span class="dl">'</span><span class="s1">[object Array]</span><span class="dl">'</span>
<span class="p">}</span>
<span class="kd">function</span> <span class="nf">addObject</span> <span class="p">(</span><span class="nx">_data</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">data</span><span class="p">.</span><span class="nf">push</span><span class="p">(</span><span class="nx">_data</span><span class="p">)</span>
<span class="k">return</span> <span class="nx">data</span>
<span class="p">}</span>
<span class="kd">function</span> <span class="nf">addArray</span> <span class="p">(</span><span class="nx">_data</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">const</span> <span class="nx">added</span> <span class="o">=</span> <span class="p">[]</span>
<span class="nf">clear</span><span class="p">()</span>
<span class="k">for</span> <span class="p">(</span><span class="kd">let</span> <span class="nx">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span> <span class="nx">len</span> <span class="o">=</span> <span class="nx">_data</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span> <span class="nx">i</span> <span class="o">&lt;</span> <span class="nx">len</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
<span class="k">if </span><span class="p">(</span><span class="nf">isObject</span><span class="p">(</span><span class="nx">_data</span><span class="p">[</span><span class="nx">i</span><span class="p">]))</span> <span class="p">{</span>
<span class="nx">added</span><span class="p">.</span><span class="nf">push</span><span class="p">(</span><span class="nf">addObject</span><span class="p">(</span><span class="nx">_data</span><span class="p">[</span><span class="nx">i</span><span class="p">]))</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="k">return</span> <span class="nx">added</span>
<span class="p">}</span>
<span class="kd">function</span> <span class="nf">search</span> <span class="p">(</span><span class="nx">crit</span><span class="p">)</span> <span class="p">{</span>
<span class="k">if </span><span class="p">(</span><span class="o">!</span><span class="nx">crit</span><span class="p">)</span> <span class="p">{</span>
<span class="k">return</span> <span class="p">[]</span>
<span class="p">}</span>
<span class="k">return</span> <span class="nf">findMatches</span><span class="p">(</span><span class="nx">data</span><span class="p">,</span> <span class="nx">crit</span><span class="p">,</span> <span class="nx">opt</span><span class="p">.</span><span class="nx">searchStrategy</span><span class="p">,</span> <span class="nx">opt</span><span class="p">).</span><span class="nf">sort</span><span class="p">(</span><span class="nx">opt</span><span class="p">.</span><span class="nx">sort</span><span class="p">)</span>
<span class="p">}</span>
<span class="kd">function</span> <span class="nf">__setOptions_4</span> <span class="p">(</span><span class="nx">_opt</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">opt</span> <span class="o">=</span> <span class="nx">_opt</span> <span class="o">||</span> <span class="p">{}</span>
<span class="nx">opt</span><span class="p">.</span><span class="nx">fuzzy</span> <span class="o">=</span> <span class="nx">_opt</span><span class="p">.</span><span class="nx">fuzzy</span> <span class="o">||</span> <span class="kc">false</span>
<span class="nx">opt</span><span class="p">.</span><span class="nx">limit</span> <span class="o">=</span> <span class="nx">_opt</span><span class="p">.</span><span class="nx">limit</span> <span class="o">||</span> <span class="mi">10</span>
<span class="nx">opt</span><span class="p">.</span><span class="nx">searchStrategy</span> <span class="o">=</span> <span class="nx">_opt</span><span class="p">.</span><span class="nx">fuzzy</span> <span class="p">?</span> <span class="nx">_$FuzzySearchStrategy_5</span> <span class="p">:</span> <span class="nx">_$LiteralSearchStrategy_6</span>
<span class="nx">opt</span><span class="p">.</span><span class="nx">sort</span> <span class="o">=</span> <span class="nx">_opt</span><span class="p">.</span><span class="nx">sort</span> <span class="o">||</span> <span class="nx">NoSort</span>
<span class="nx">opt</span><span class="p">.</span><span class="nx">exclude</span> <span class="o">=</span> <span class="nx">_opt</span><span class="p">.</span><span class="nx">exclude</span> <span class="o">||</span> <span class="p">[]</span>
<span class="p">}</span>
<span class="kd">function</span> <span class="nf">findMatches</span> <span class="p">(</span><span class="nx">data</span><span class="p">,</span> <span class="nx">crit</span><span class="p">,</span> <span class="nx">strategy</span><span class="p">,</span> <span class="nx">opt</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">const</span> <span class="nx">matches</span> <span class="o">=</span> <span class="p">[]</span>
<span class="k">for</span> <span class="p">(</span><span class="kd">let</span> <span class="nx">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">i</span> <span class="o">&lt;</span> <span class="nx">data</span><span class="p">.</span><span class="nx">length</span> <span class="o">&amp;&amp;</span> <span class="nx">matches</span><span class="p">.</span><span class="nx">length</span> <span class="o">&lt;</span> <span class="nx">opt</span><span class="p">.</span><span class="nx">limit</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">const</span> <span class="nx">match</span> <span class="o">=</span> <span class="nf">findMatchesInObject</span><span class="p">(</span><span class="nx">data</span><span class="p">[</span><span class="nx">i</span><span class="p">],</span> <span class="nx">crit</span><span class="p">,</span> <span class="nx">strategy</span><span class="p">,</span> <span class="nx">opt</span><span class="p">)</span>
<span class="k">if </span><span class="p">(</span><span class="nx">match</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">matches</span><span class="p">.</span><span class="nf">push</span><span class="p">(</span><span class="nx">match</span><span class="p">)</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="k">return</span> <span class="nx">matches</span>
<span class="p">}</span>
<span class="kd">function</span> <span class="nf">findMatchesInObject</span> <span class="p">(</span><span class="nx">obj</span><span class="p">,</span> <span class="nx">crit</span><span class="p">,</span> <span class="nx">strategy</span><span class="p">,</span> <span class="nx">opt</span><span class="p">)</span> <span class="p">{</span>
<span class="k">for </span><span class="p">(</span><span class="kd">const</span> <span class="nx">key</span> <span class="k">in</span> <span class="nx">obj</span><span class="p">)</span> <span class="p">{</span>
<span class="k">if </span><span class="p">(</span><span class="o">!</span><span class="nf">isExcluded</span><span class="p">(</span><span class="nx">obj</span><span class="p">[</span><span class="nx">key</span><span class="p">],</span> <span class="nx">opt</span><span class="p">.</span><span class="nx">exclude</span><span class="p">)</span> <span class="o">&amp;&amp;</span> <span class="nx">strategy</span><span class="p">.</span><span class="nf">matches</span><span class="p">(</span><span class="nx">obj</span><span class="p">[</span><span class="nx">key</span><span class="p">],</span> <span class="nx">crit</span><span class="p">))</span> <span class="p">{</span>
<span class="k">return</span> <span class="nx">obj</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="kd">function</span> <span class="nf">isExcluded</span> <span class="p">(</span><span class="nx">term</span><span class="p">,</span> <span class="nx">excludedTerms</span><span class="p">)</span> <span class="p">{</span>
<span class="k">for</span> <span class="p">(</span><span class="kd">let</span> <span class="nx">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span> <span class="nx">len</span> <span class="o">=</span> <span class="nx">excludedTerms</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span> <span class="nx">i</span> <span class="o">&lt;</span> <span class="nx">len</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">const</span> <span class="nx">excludedTerm</span> <span class="o">=</span> <span class="nx">excludedTerms</span><span class="p">[</span><span class="nx">i</span><span class="p">]</span>
<span class="k">if </span><span class="p">(</span><span class="k">new</span> <span class="nc">RegExp</span><span class="p">(</span><span class="nx">excludedTerm</span><span class="p">).</span><span class="nf">test</span><span class="p">(</span><span class="nx">term</span><span class="p">))</span> <span class="p">{</span>
<span class="k">return</span> <span class="kc">true</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="k">return</span> <span class="kc">false</span>
<span class="p">}</span>
<span class="cm">/* globals ActiveXObject:false */</span>
<span class="dl">'</span><span class="s1">use strict</span><span class="dl">'</span>
<span class="kd">var</span> <span class="nx">_$JSONLoader_2</span> <span class="o">=</span> <span class="p">{</span>
<span class="na">load</span><span class="p">:</span> <span class="nx">load</span>
<span class="p">}</span>
<span class="kd">function</span> <span class="nf">load</span> <span class="p">(</span><span class="nx">location</span><span class="p">,</span> <span class="nx">callback</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">const</span> <span class="nx">xhr</span> <span class="o">=</span> <span class="nf">getXHR</span><span class="p">()</span>
<span class="nx">xhr</span><span class="p">.</span><span class="nf">open</span><span class="p">(</span><span class="dl">'</span><span class="s1">GET</span><span class="dl">'</span><span class="p">,</span> <span class="nx">location</span><span class="p">,</span> <span class="kc">true</span><span class="p">)</span>
<span class="nx">xhr</span><span class="p">.</span><span class="nx">onreadystatechange</span> <span class="o">=</span> <span class="nf">createStateChangeListener</span><span class="p">(</span><span class="nx">xhr</span><span class="p">,</span> <span class="nx">callback</span><span class="p">)</span>
<span class="nx">xhr</span><span class="p">.</span><span class="nf">send</span><span class="p">()</span>
<span class="p">}</span>
<span class="kd">function</span> <span class="nf">createStateChangeListener</span> <span class="p">(</span><span class="nx">xhr</span><span class="p">,</span> <span class="nx">callback</span><span class="p">)</span> <span class="p">{</span>
<span class="k">return</span> <span class="nf">function </span><span class="p">()</span> <span class="p">{</span>
<span class="k">if </span><span class="p">(</span><span class="nx">xhr</span><span class="p">.</span><span class="nx">readyState</span> <span class="o">===</span> <span class="mi">4</span> <span class="o">&amp;&amp;</span> <span class="nx">xhr</span><span class="p">.</span><span class="nx">status</span> <span class="o">===</span> <span class="mi">200</span><span class="p">)</span> <span class="p">{</span>
<span class="k">try</span> <span class="p">{</span>
<span class="nf">callback</span><span class="p">(</span><span class="kc">null</span><span class="p">,</span> <span class="nx">JSON</span><span class="p">.</span><span class="nf">parse</span><span class="p">(</span><span class="nx">xhr</span><span class="p">.</span><span class="nx">responseText</span><span class="p">))</span>
<span class="p">}</span> <span class="k">catch </span><span class="p">(</span><span class="nx">err</span><span class="p">)</span> <span class="p">{</span>
<span class="nf">callback</span><span class="p">(</span><span class="nx">err</span><span class="p">,</span> <span class="kc">null</span><span class="p">)</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="kd">function</span> <span class="nf">getXHR</span> <span class="p">()</span> <span class="p">{</span>
<span class="k">return</span> <span class="nb">window</span><span class="p">.</span><span class="nx">XMLHttpRequest</span> <span class="p">?</span> <span class="k">new</span> <span class="nb">window</span><span class="p">.</span><span class="nc">XMLHttpRequest</span><span class="p">()</span> <span class="p">:</span> <span class="k">new</span> <span class="nc">ActiveXObject</span><span class="p">(</span><span class="dl">'</span><span class="s1">Microsoft.XMLHTTP</span><span class="dl">'</span><span class="p">)</span>
<span class="p">}</span>
<span class="dl">'</span><span class="s1">use strict</span><span class="dl">'</span>
<span class="kd">var</span> <span class="nx">_$OptionsValidator_3</span> <span class="o">=</span> <span class="kd">function</span> <span class="nf">OptionsValidator</span> <span class="p">(</span><span class="nx">params</span><span class="p">)</span> <span class="p">{</span>
<span class="k">if </span><span class="p">(</span><span class="o">!</span><span class="nf">validateParams</span><span class="p">(</span><span class="nx">params</span><span class="p">))</span> <span class="p">{</span>
<span class="k">throw</span> <span class="k">new</span> <span class="nc">Error</span><span class="p">(</span><span class="dl">'</span><span class="s1">-- OptionsValidator: required options missing</span><span class="dl">'</span><span class="p">)</span>
<span class="p">}</span>
<span class="k">if </span><span class="p">(</span><span class="o">!</span><span class="p">(</span><span class="k">this</span> <span class="k">instanceof</span> <span class="nx">OptionsValidator</span><span class="p">))</span> <span class="p">{</span>
<span class="k">return</span> <span class="k">new</span> <span class="nc">OptionsValidator</span><span class="p">(</span><span class="nx">params</span><span class="p">)</span>
<span class="p">}</span>
<span class="kd">const</span> <span class="nx">requiredOptions</span> <span class="o">=</span> <span class="nx">params</span><span class="p">.</span><span class="nx">required</span>
<span class="k">this</span><span class="p">.</span><span class="nx">getRequiredOptions</span> <span class="o">=</span> <span class="nf">function </span><span class="p">()</span> <span class="p">{</span>
<span class="k">return</span> <span class="nx">requiredOptions</span>
<span class="p">}</span>
<span class="k">this</span><span class="p">.</span><span class="nx">validate</span> <span class="o">=</span> <span class="nf">function </span><span class="p">(</span><span class="nx">parameters</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">const</span> <span class="nx">errors</span> <span class="o">=</span> <span class="p">[]</span>
<span class="nx">requiredOptions</span><span class="p">.</span><span class="nf">forEach</span><span class="p">(</span><span class="nf">function </span><span class="p">(</span><span class="nx">requiredOptionName</span><span class="p">)</span> <span class="p">{</span>
<span class="k">if </span><span class="p">(</span><span class="k">typeof</span> <span class="nx">parameters</span><span class="p">[</span><span class="nx">requiredOptionName</span><span class="p">]</span> <span class="o">===</span> <span class="dl">'</span><span class="s1">undefined</span><span class="dl">'</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">errors</span><span class="p">.</span><span class="nf">push</span><span class="p">(</span><span class="nx">requiredOptionName</span><span class="p">)</span>
<span class="p">}</span>
<span class="p">})</span>
<span class="k">return</span> <span class="nx">errors</span>
<span class="p">}</span>
<span class="kd">function</span> <span class="nf">validateParams</span> <span class="p">(</span><span class="nx">params</span><span class="p">)</span> <span class="p">{</span>
<span class="k">if </span><span class="p">(</span><span class="o">!</span><span class="nx">params</span><span class="p">)</span> <span class="p">{</span>
<span class="k">return</span> <span class="kc">false</span>
<span class="p">}</span>
<span class="k">return</span> <span class="k">typeof</span> <span class="nx">params</span><span class="p">.</span><span class="nx">required</span> <span class="o">!==</span> <span class="dl">'</span><span class="s1">undefined</span><span class="dl">'</span> <span class="o">&amp;&amp;</span> <span class="nx">params</span><span class="p">.</span><span class="nx">required</span> <span class="k">instanceof</span> <span class="nb">Array</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="dl">'</span><span class="s1">use strict</span><span class="dl">'</span>
<span class="kd">var</span> <span class="nx">_$utils_9</span> <span class="o">=</span> <span class="p">{</span>
<span class="na">merge</span><span class="p">:</span> <span class="nx">merge</span><span class="p">,</span>
<span class="na">isJSON</span><span class="p">:</span> <span class="nx">isJSON</span>
<span class="p">}</span>
<span class="kd">function</span> <span class="nf">merge</span> <span class="p">(</span><span class="nx">defaultParams</span><span class="p">,</span> <span class="nx">mergeParams</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">const</span> <span class="nx">mergedOptions</span> <span class="o">=</span> <span class="p">{}</span>
<span class="k">for </span><span class="p">(</span><span class="kd">const</span> <span class="nx">option</span> <span class="k">in</span> <span class="nx">defaultParams</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">mergedOptions</span><span class="p">[</span><span class="nx">option</span><span class="p">]</span> <span class="o">=</span> <span class="nx">defaultParams</span><span class="p">[</span><span class="nx">option</span><span class="p">]</span>
<span class="k">if </span><span class="p">(</span><span class="k">typeof</span> <span class="nx">mergeParams</span><span class="p">[</span><span class="nx">option</span><span class="p">]</span> <span class="o">!==</span> <span class="dl">'</span><span class="s1">undefined</span><span class="dl">'</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">mergedOptions</span><span class="p">[</span><span class="nx">option</span><span class="p">]</span> <span class="o">=</span> <span class="nx">mergeParams</span><span class="p">[</span><span class="nx">option</span><span class="p">]</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="k">return</span> <span class="nx">mergedOptions</span>
<span class="p">}</span>
<span class="kd">function</span> <span class="nf">isJSON</span> <span class="p">(</span><span class="nx">json</span><span class="p">)</span> <span class="p">{</span>
<span class="k">try</span> <span class="p">{</span>
<span class="k">if </span><span class="p">(</span><span class="nx">json</span> <span class="k">instanceof</span> <span class="nb">Object</span> <span class="o">&amp;&amp;</span> <span class="nx">JSON</span><span class="p">.</span><span class="nf">parse</span><span class="p">(</span><span class="nx">JSON</span><span class="p">.</span><span class="nf">stringify</span><span class="p">(</span><span class="nx">json</span><span class="p">)))</span> <span class="p">{</span>
<span class="k">return</span> <span class="kc">true</span>
<span class="p">}</span>
<span class="k">return</span> <span class="kc">false</span>
<span class="p">}</span> <span class="k">catch </span><span class="p">(</span><span class="nx">err</span><span class="p">)</span> <span class="p">{</span>
<span class="k">return</span> <span class="kc">false</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="kd">var</span> <span class="nx">_$src_8</span> <span class="o">=</span> <span class="p">{};</span>
<span class="p">(</span><span class="nf">function </span><span class="p">(</span><span class="nb">window</span><span class="p">)</span> <span class="p">{</span>
<span class="dl">'</span><span class="s1">use strict</span><span class="dl">'</span>
<span class="kd">let</span> <span class="nx">options</span> <span class="o">=</span> <span class="p">{</span>
<span class="na">searchInput</span><span class="p">:</span> <span class="kc">null</span><span class="p">,</span>
<span class="na">resultsContainer</span><span class="p">:</span> <span class="kc">null</span><span class="p">,</span>
<span class="na">json</span><span class="p">:</span> <span class="p">[],</span>
<span class="na">success</span><span class="p">:</span> <span class="nb">Function</span><span class="p">.</span><span class="nx">prototype</span><span class="p">,</span>
<span class="na">searchResultTemplate</span><span class="p">:</span> <span class="dl">'</span><span class="s1">&lt;li&gt;&lt;a href="{url}" title="{desc}"&gt;{title}&lt;/a&gt;&lt;/li&gt;</span><span class="dl">'</span><span class="p">,</span>
<span class="na">templateMiddleware</span><span class="p">:</span> <span class="nb">Function</span><span class="p">.</span><span class="nx">prototype</span><span class="p">,</span>
<span class="na">sortMiddleware</span><span class="p">:</span> <span class="nf">function </span><span class="p">()</span> <span class="p">{</span>
<span class="k">return</span> <span class="mi">0</span>
<span class="p">},</span>
<span class="na">noResultsText</span><span class="p">:</span> <span class="dl">'</span><span class="s1">No results found</span><span class="dl">'</span><span class="p">,</span>
<span class="na">limit</span><span class="p">:</span> <span class="mi">10</span><span class="p">,</span>
<span class="na">fuzzy</span><span class="p">:</span> <span class="kc">false</span><span class="p">,</span>
<span class="na">debounceTime</span><span class="p">:</span> <span class="kc">null</span><span class="p">,</span>
<span class="na">exclude</span><span class="p">:</span> <span class="p">[]</span>
<span class="p">}</span>
<span class="kd">let</span> <span class="nx">debounceTimerHandle</span>
<span class="kd">const</span> <span class="nx">debounce</span> <span class="o">=</span> <span class="nf">function </span><span class="p">(</span><span class="nx">func</span><span class="p">,</span> <span class="nx">delayMillis</span><span class="p">)</span> <span class="p">{</span>
<span class="k">if </span><span class="p">(</span><span class="nx">delayMillis</span><span class="p">)</span> <span class="p">{</span>
<span class="nf">clearTimeout</span><span class="p">(</span><span class="nx">debounceTimerHandle</span><span class="p">)</span>
<span class="nx">debounceTimerHandle</span> <span class="o">=</span> <span class="nf">setTimeout</span><span class="p">(</span><span class="nx">func</span><span class="p">,</span> <span class="nx">delayMillis</span><span class="p">)</span>
<span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
<span class="nx">func</span><span class="p">.</span><span class="nf">call</span><span class="p">()</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="kd">const</span> <span class="nx">requiredOptions</span> <span class="o">=</span> <span class="p">[</span><span class="dl">'</span><span class="s1">searchInput</span><span class="dl">'</span><span class="p">,</span> <span class="dl">'</span><span class="s1">resultsContainer</span><span class="dl">'</span><span class="p">,</span> <span class="dl">'</span><span class="s1">json</span><span class="dl">'</span><span class="p">]</span>
<span class="cm">/* removed: const _$Templater_7 = require('./Templater') */</span><span class="p">;</span>
<span class="cm">/* removed: const _$Repository_4 = require('./Repository') */</span><span class="p">;</span>
<span class="cm">/* removed: const _$JSONLoader_2 = require('./JSONLoader') */</span><span class="p">;</span>
<span class="kd">const</span> <span class="nx">optionsValidator</span> <span class="o">=</span> <span class="nc">_$OptionsValidator_3</span><span class="p">({</span>
<span class="na">required</span><span class="p">:</span> <span class="nx">requiredOptions</span>
<span class="p">})</span>
<span class="cm">/* removed: const _$utils_9 = require('./utils') */</span><span class="p">;</span>
<span class="nb">window</span><span class="p">.</span><span class="nx">SimpleJekyllSearch</span> <span class="o">=</span> <span class="nf">function </span><span class="p">(</span><span class="nx">_options</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">const</span> <span class="nx">errors</span> <span class="o">=</span> <span class="nx">optionsValidator</span><span class="p">.</span><span class="nf">validate</span><span class="p">(</span><span class="nx">_options</span><span class="p">)</span>
<span class="k">if </span><span class="p">(</span><span class="nx">errors</span><span class="p">.</span><span class="nx">length</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
<span class="nf">throwError</span><span class="p">(</span><span class="dl">'</span><span class="s1">You must specify the following required options: </span><span class="dl">'</span> <span class="o">+</span> <span class="nx">requiredOptions</span><span class="p">)</span>
<span class="p">}</span>
<span class="nx">options</span> <span class="o">=</span> <span class="nx">_$utils_9</span><span class="p">.</span><span class="nf">merge</span><span class="p">(</span><span class="nx">options</span><span class="p">,</span> <span class="nx">_options</span><span class="p">)</span>
<span class="nx">_$Templater_7</span><span class="p">.</span><span class="nf">setOptions</span><span class="p">({</span>
<span class="na">template</span><span class="p">:</span> <span class="nx">options</span><span class="p">.</span><span class="nx">searchResultTemplate</span><span class="p">,</span>
<span class="na">middleware</span><span class="p">:</span> <span class="nx">options</span><span class="p">.</span><span class="nx">templateMiddleware</span>
<span class="p">})</span>
<span class="nx">_$Repository_4</span><span class="p">.</span><span class="nf">setOptions</span><span class="p">({</span>
<span class="na">fuzzy</span><span class="p">:</span> <span class="nx">options</span><span class="p">.</span><span class="nx">fuzzy</span><span class="p">,</span>
<span class="na">limit</span><span class="p">:</span> <span class="nx">options</span><span class="p">.</span><span class="nx">limit</span><span class="p">,</span>
<span class="na">sort</span><span class="p">:</span> <span class="nx">options</span><span class="p">.</span><span class="nx">sortMiddleware</span><span class="p">,</span>
<span class="na">exclude</span><span class="p">:</span> <span class="nx">options</span><span class="p">.</span><span class="nx">exclude</span>
<span class="p">})</span>
<span class="k">if </span><span class="p">(</span><span class="nx">_$utils_9</span><span class="p">.</span><span class="nf">isJSON</span><span class="p">(</span><span class="nx">options</span><span class="p">.</span><span class="nx">json</span><span class="p">))</span> <span class="p">{</span>
<span class="nf">initWithJSON</span><span class="p">(</span><span class="nx">options</span><span class="p">.</span><span class="nx">json</span><span class="p">)</span>
<span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
<span class="nf">initWithURL</span><span class="p">(</span><span class="nx">options</span><span class="p">.</span><span class="nx">json</span><span class="p">)</span>
<span class="p">}</span>
<span class="kd">const</span> <span class="nx">rv</span> <span class="o">=</span> <span class="p">{</span>
<span class="na">search</span><span class="p">:</span> <span class="nx">search</span>
<span class="p">}</span>
<span class="k">typeof</span> <span class="nx">options</span><span class="p">.</span><span class="nx">success</span> <span class="o">===</span> <span class="dl">'</span><span class="s1">function</span><span class="dl">'</span> <span class="o">&amp;&amp;</span> <span class="nx">options</span><span class="p">.</span><span class="nx">success</span><span class="p">.</span><span class="nf">call</span><span class="p">(</span><span class="nx">rv</span><span class="p">)</span>
<span class="k">return</span> <span class="nx">rv</span>
<span class="p">}</span>
<span class="kd">function</span> <span class="nf">initWithJSON</span> <span class="p">(</span><span class="nx">json</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">_$Repository_4</span><span class="p">.</span><span class="nf">put</span><span class="p">(</span><span class="nx">json</span><span class="p">)</span>
<span class="nf">registerInput</span><span class="p">()</span>
<span class="p">}</span>
<span class="kd">function</span> <span class="nf">initWithURL</span> <span class="p">(</span><span class="nx">url</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">_$JSONLoader_2</span><span class="p">.</span><span class="nf">load</span><span class="p">(</span><span class="nx">url</span><span class="p">,</span> <span class="nf">function </span><span class="p">(</span><span class="nx">err</span><span class="p">,</span> <span class="nx">json</span><span class="p">)</span> <span class="p">{</span>
<span class="k">if </span><span class="p">(</span><span class="nx">err</span><span class="p">)</span> <span class="p">{</span>
<span class="nf">throwError</span><span class="p">(</span><span class="dl">'</span><span class="s1">failed to get JSON (</span><span class="dl">'</span> <span class="o">+</span> <span class="nx">url</span> <span class="o">+</span> <span class="dl">'</span><span class="s1">)</span><span class="dl">'</span><span class="p">)</span>
<span class="p">}</span>
<span class="nf">initWithJSON</span><span class="p">(</span><span class="nx">json</span><span class="p">)</span>
<span class="p">})</span>
<span class="p">}</span>
<span class="kd">function</span> <span class="nf">emptyResultsContainer</span> <span class="p">()</span> <span class="p">{</span>
<span class="nx">options</span><span class="p">.</span><span class="nx">resultsContainer</span><span class="p">.</span><span class="nx">innerHTML</span> <span class="o">=</span> <span class="dl">''</span>
<span class="p">}</span>
<span class="kd">function</span> <span class="nf">appendToResultsContainer</span> <span class="p">(</span><span class="nx">text</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">options</span><span class="p">.</span><span class="nx">resultsContainer</span><span class="p">.</span><span class="nx">innerHTML</span> <span class="o">+=</span> <span class="nx">text</span>
<span class="p">}</span>
<span class="kd">function</span> <span class="nf">registerInput</span> <span class="p">()</span> <span class="p">{</span>
<span class="nx">options</span><span class="p">.</span><span class="nx">searchInput</span><span class="p">.</span><span class="nf">addEventListener</span><span class="p">(</span><span class="dl">'</span><span class="s1">input</span><span class="dl">'</span><span class="p">,</span> <span class="nf">function </span><span class="p">(</span><span class="nx">e</span><span class="p">)</span> <span class="p">{</span>
<span class="k">if </span><span class="p">(</span><span class="nf">isWhitelistedKey</span><span class="p">(</span><span class="nx">e</span><span class="p">.</span><span class="nx">which</span><span class="p">))</span> <span class="p">{</span>
<span class="nf">emptyResultsContainer</span><span class="p">()</span>
<span class="nf">debounce</span><span class="p">(</span><span class="nf">function </span><span class="p">()</span> <span class="p">{</span> <span class="nf">search</span><span class="p">(</span><span class="nx">e</span><span class="p">.</span><span class="nx">target</span><span class="p">.</span><span class="nx">value</span><span class="p">)</span> <span class="p">},</span> <span class="nx">options</span><span class="p">.</span><span class="nx">debounceTime</span><span class="p">)</span>
<span class="p">}</span>
<span class="p">})</span>
<span class="p">}</span>
<span class="kd">function</span> <span class="nf">search</span> <span class="p">(</span><span class="nx">query</span><span class="p">)</span> <span class="p">{</span>
<span class="k">if </span><span class="p">(</span><span class="nf">isValidQuery</span><span class="p">(</span><span class="nx">query</span><span class="p">))</span> <span class="p">{</span>
<span class="nf">emptyResultsContainer</span><span class="p">()</span>
<span class="nf">render</span><span class="p">(</span><span class="nx">_$Repository_4</span><span class="p">.</span><span class="nf">search</span><span class="p">(</span><span class="nx">query</span><span class="p">),</span> <span class="nx">query</span><span class="p">)</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="kd">function</span> <span class="nf">render</span> <span class="p">(</span><span class="nx">results</span><span class="p">,</span> <span class="nx">query</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">const</span> <span class="nx">len</span> <span class="o">=</span> <span class="nx">results</span><span class="p">.</span><span class="nx">length</span>
<span class="k">if </span><span class="p">(</span><span class="nx">len</span> <span class="o">===</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
<span class="k">return</span> <span class="nf">appendToResultsContainer</span><span class="p">(</span><span class="nx">options</span><span class="p">.</span><span class="nx">noResultsText</span><span class="p">)</span>
<span class="p">}</span>
<span class="k">for</span> <span class="p">(</span><span class="kd">let</span> <span class="nx">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">i</span> <span class="o">&lt;</span> <span class="nx">len</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">results</span><span class="p">[</span><span class="nx">i</span><span class="p">].</span><span class="nx">query</span> <span class="o">=</span> <span class="nx">query</span>
<span class="nf">appendToResultsContainer</span><span class="p">(</span><span class="nx">_$Templater_7</span><span class="p">.</span><span class="nf">compile</span><span class="p">(</span><span class="nx">results</span><span class="p">[</span><span class="nx">i</span><span class="p">]))</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="kd">function</span> <span class="nf">isValidQuery</span> <span class="p">(</span><span class="nx">query</span><span class="p">)</span> <span class="p">{</span>
<span class="k">return</span> <span class="nx">query</span> <span class="o">&amp;&amp;</span> <span class="nx">query</span><span class="p">.</span><span class="nx">length</span> <span class="o">&gt;</span> <span class="mi">0</span>
<span class="p">}</span>
<span class="kd">function</span> <span class="nf">isWhitelistedKey</span> <span class="p">(</span><span class="nx">key</span><span class="p">)</span> <span class="p">{</span>
<span class="k">return</span> <span class="p">[</span><span class="mi">13</span><span class="p">,</span> <span class="mi">16</span><span class="p">,</span> <span class="mi">20</span><span class="p">,</span> <span class="mi">37</span><span class="p">,</span> <span class="mi">38</span><span class="p">,</span> <span class="mi">39</span><span class="p">,</span> <span class="mi">40</span><span class="p">,</span> <span class="mi">91</span><span class="p">].</span><span class="nf">indexOf</span><span class="p">(</span><span class="nx">key</span><span class="p">)</span> <span class="o">===</span> <span class="o">-</span><span class="mi">1</span>
<span class="p">}</span>
<span class="kd">function</span> <span class="nf">throwError</span> <span class="p">(</span><span class="nx">message</span><span class="p">)</span> <span class="p">{</span>
<span class="k">throw</span> <span class="k">new</span> <span class="nc">Error</span><span class="p">(</span><span class="dl">'</span><span class="s1">SimpleJekyllSearch --- </span><span class="dl">'</span> <span class="o">+</span> <span class="nx">message</span><span class="p">)</span>
<span class="p">}</span>
<span class="p">})(</span><span class="nb">window</span><span class="p">)</span>
<span class="p">}());</span>
<span class="nt">&lt;/script&gt;</span>
<span class="c">&lt;!-- Configuration --&gt;</span>
<span class="nt">&lt;script&gt;</span>
<span class="nc">SimpleJekyllSearch</span><span class="p">({</span>
<span class="na">searchInput</span><span class="p">:</span> <span class="nb">document</span><span class="p">.</span><span class="nf">getElementById</span><span class="p">(</span><span class="dl">'</span><span class="s1">search-input</span><span class="dl">'</span><span class="p">),</span>
<span class="na">resultsContainer</span><span class="p">:</span> <span class="nb">document</span><span class="p">.</span><span class="nf">getElementById</span><span class="p">(</span><span class="dl">'</span><span class="s1">results-container</span><span class="dl">'</span><span class="p">),</span>
<span class="na">noResultsText</span><span class="p">:</span> <span class="dl">'</span><span class="s1">&lt;p&gt;Aucun résultat!&lt;/p&gt;</span><span class="dl">'</span><span class="p">,</span>
<span class="na">json</span><span class="p">:</span> <span class="dl">'</span><span class="s1">/search.json</span><span class="dl">'</span><span class="p">,</span>
<span class="na">searchResultTemplate</span><span class="p">:</span> <span class="dl">'</span><span class="s1">&lt;li&gt;&lt;a href="{url}"&gt;{date}&amp;nbsp;{title}&lt;/a&gt;&amp;nbsp;(Création {create})&lt;/li&gt;</span><span class="dl">'</span>
<span class="p">})</span>
<span class="nt">&lt;/script&gt;</span>
<span class="nt">&lt;/div&gt;&lt;/div&gt;</span>
<span class="nt">&lt;script&gt;</span><span class="p">(</span><span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">SOURCES</span> <span class="o">=</span> <span class="nb">window</span><span class="p">.</span><span class="nx">TEXT_VARIABLES</span><span class="p">.</span><span class="nx">sources</span><span class="p">;</span>
<span class="nb">window</span><span class="p">.</span><span class="nx">Lazyload</span><span class="p">.</span><span class="nf">js</span><span class="p">(</span><span class="nx">SOURCES</span><span class="p">.</span><span class="nx">jquery</span><span class="p">,</span> <span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
<span class="kd">function</span> <span class="nf">scrollToAnchor</span><span class="p">(</span><span class="nx">anchor</span><span class="p">,</span> <span class="nx">duration</span><span class="p">,</span> <span class="nx">callback</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">$root</span> <span class="o">=</span> <span class="k">this</span><span class="p">;</span>
<span class="nx">$root</span><span class="p">.</span><span class="nf">animate</span><span class="p">({</span> <span class="na">scrollTop</span><span class="p">:</span> <span class="nf">$</span><span class="p">(</span><span class="nx">anchor</span><span class="p">).</span><span class="nf">position</span><span class="p">().</span><span class="nx">top</span> <span class="p">},</span> <span class="nx">duration</span><span class="p">,</span> <span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
<span class="nb">window</span><span class="p">.</span><span class="nx">history</span><span class="p">.</span><span class="nf">replaceState</span><span class="p">(</span><span class="kc">null</span><span class="p">,</span> <span class="dl">''</span><span class="p">,</span> <span class="nb">window</span><span class="p">.</span><span class="nx">location</span><span class="p">.</span><span class="nx">href</span><span class="p">.</span><span class="nf">split</span><span class="p">(</span><span class="dl">'</span><span class="s1">#</span><span class="dl">'</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span> <span class="o">+</span> <span class="nx">anchor</span><span class="p">);</span>
<span class="nx">callback</span> <span class="o">&amp;&amp;</span> <span class="nf">callback</span><span class="p">();</span>
<span class="p">});</span>
<span class="p">}</span>
<span class="nx">$</span><span class="p">.</span><span class="nx">fn</span><span class="p">.</span><span class="nx">scrollToAnchor</span> <span class="o">=</span> <span class="nx">scrollToAnchor</span><span class="p">;</span>
<span class="p">});</span>
<span class="p">})();</span>
<span class="p">(</span><span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">SOURCES</span> <span class="o">=</span> <span class="nb">window</span><span class="p">.</span><span class="nx">TEXT_VARIABLES</span><span class="p">.</span><span class="nx">sources</span><span class="p">;</span>
<span class="nb">window</span><span class="p">.</span><span class="nx">Lazyload</span><span class="p">.</span><span class="nf">js</span><span class="p">(</span><span class="nx">SOURCES</span><span class="p">.</span><span class="nx">jquery</span><span class="p">,</span> <span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
<span class="kd">function</span> <span class="nf">affix</span><span class="p">(</span><span class="nx">options</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">$root</span> <span class="o">=</span> <span class="k">this</span><span class="p">,</span> <span class="nx">$window</span> <span class="o">=</span> <span class="nf">$</span><span class="p">(</span><span class="nb">window</span><span class="p">),</span> <span class="nx">$scrollTarget</span><span class="p">,</span> <span class="nx">$scroll</span><span class="p">,</span>
<span class="nx">offsetBottom</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span> <span class="nx">scrollTarget</span> <span class="o">=</span> <span class="nb">window</span><span class="p">,</span> <span class="nx">scroll</span> <span class="o">=</span> <span class="nb">window</span><span class="p">.</span><span class="nb">document</span><span class="p">,</span> <span class="nx">disabled</span> <span class="o">=</span> <span class="kc">false</span><span class="p">,</span> <span class="nx">isOverallScroller</span> <span class="o">=</span> <span class="kc">true</span><span class="p">,</span>
<span class="nx">rootTop</span><span class="p">,</span> <span class="nx">rootLeft</span><span class="p">,</span> <span class="nx">rootHeight</span><span class="p">,</span> <span class="nx">scrollBottom</span><span class="p">,</span> <span class="nx">rootBottomTop</span><span class="p">,</span>
<span class="nx">hasInit</span> <span class="o">=</span> <span class="kc">false</span><span class="p">,</span> <span class="nx">curState</span><span class="p">;</span>
<span class="kd">function</span> <span class="nf">setOptions</span><span class="p">(</span><span class="nx">options</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">_options</span> <span class="o">=</span> <span class="nx">options</span> <span class="o">||</span> <span class="p">{};</span>
<span class="nx">_options</span><span class="p">.</span><span class="nx">offsetBottom</span> <span class="o">&amp;&amp;</span> <span class="p">(</span><span class="nx">offsetBottom</span> <span class="o">=</span> <span class="nx">_options</span><span class="p">.</span><span class="nx">offsetBottom</span><span class="p">);</span>
<span class="nx">_options</span><span class="p">.</span><span class="nx">scrollTarget</span> <span class="o">&amp;&amp;</span> <span class="p">(</span><span class="nx">scrollTarget</span> <span class="o">=</span> <span class="nx">_options</span><span class="p">.</span><span class="nx">scrollTarget</span><span class="p">);</span>
<span class="nx">_options</span><span class="p">.</span><span class="nx">scroll</span> <span class="o">&amp;&amp;</span> <span class="p">(</span><span class="nx">scroll</span> <span class="o">=</span> <span class="nx">_options</span><span class="p">.</span><span class="nx">scroll</span><span class="p">);</span>
<span class="nx">_options</span><span class="p">.</span><span class="nx">disabled</span> <span class="o">!==</span> <span class="kc">undefined</span> <span class="o">&amp;&amp;</span> <span class="p">(</span><span class="nx">disabled</span> <span class="o">=</span> <span class="nx">_options</span><span class="p">.</span><span class="nx">disabled</span><span class="p">);</span>
<span class="nx">$scrollTarget</span> <span class="o">=</span> <span class="nf">$</span><span class="p">(</span><span class="nx">scrollTarget</span><span class="p">);</span>
<span class="nx">isOverallScroller</span> <span class="o">=</span> <span class="nb">window</span><span class="p">.</span><span class="nf">isOverallScroller</span><span class="p">(</span><span class="nx">$scrollTarget</span><span class="p">[</span><span class="mi">0</span><span class="p">]);</span>
<span class="nx">$scroll</span> <span class="o">=</span> <span class="nf">$</span><span class="p">(</span><span class="nx">scroll</span><span class="p">);</span>
<span class="p">}</span>
<span class="kd">function</span> <span class="nf">preCalc</span><span class="p">()</span> <span class="p">{</span>
<span class="nf">top</span><span class="p">();</span>
<span class="nx">rootHeight</span> <span class="o">=</span> <span class="nx">$root</span><span class="p">.</span><span class="nf">outerHeight</span><span class="p">();</span>
<span class="nx">rootTop</span> <span class="o">=</span> <span class="nx">$root</span><span class="p">.</span><span class="nf">offset</span><span class="p">().</span><span class="nx">top</span> <span class="o">+</span> <span class="p">(</span><span class="nx">isOverallScroller</span> <span class="p">?</span> <span class="mi">0</span> <span class="p">:</span> <span class="nx">$scrollTarget</span><span class="p">.</span><span class="nf">scrollTop</span><span class="p">());</span>
<span class="nx">rootLeft</span> <span class="o">=</span> <span class="nx">$root</span><span class="p">.</span><span class="nf">offset</span><span class="p">().</span><span class="nx">left</span><span class="p">;</span>
<span class="p">}</span>
<span class="kd">function</span> <span class="nf">calc</span><span class="p">(</span><span class="nx">needPreCalc</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">needPreCalc</span> <span class="o">&amp;&amp;</span> <span class="nf">preCalc</span><span class="p">();</span>
<span class="nx">scrollBottom</span> <span class="o">=</span> <span class="nx">$scroll</span><span class="p">.</span><span class="nf">outerHeight</span><span class="p">()</span> <span class="o">-</span> <span class="nx">offsetBottom</span> <span class="o">-</span> <span class="nx">rootHeight</span><span class="p">;</span>
<span class="nx">rootBottomTop</span> <span class="o">=</span> <span class="nx">scrollBottom</span> <span class="o">-</span> <span class="nx">rootTop</span><span class="p">;</span>
<span class="p">}</span>
<span class="kd">function</span> <span class="nf">top</span><span class="p">()</span> <span class="p">{</span>
<span class="k">if </span><span class="p">(</span><span class="nx">curState</span> <span class="o">!==</span> <span class="dl">'</span><span class="s1">top</span><span class="dl">'</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">$root</span><span class="p">.</span><span class="nf">removeClass</span><span class="p">(</span><span class="dl">'</span><span class="s1">fixed</span><span class="dl">'</span><span class="p">).</span><span class="nf">css</span><span class="p">({</span>
<span class="na">left</span><span class="p">:</span> <span class="mi">0</span><span class="p">,</span>
<span class="na">top</span><span class="p">:</span> <span class="mi">0</span>
<span class="p">});</span>
<span class="nx">curState</span> <span class="o">=</span> <span class="dl">'</span><span class="s1">top</span><span class="dl">'</span><span class="p">;</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="kd">function</span> <span class="nf">fixed</span><span class="p">()</span> <span class="p">{</span>
<span class="k">if </span><span class="p">(</span><span class="nx">curState</span> <span class="o">!==</span> <span class="dl">'</span><span class="s1">fixed</span><span class="dl">'</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">$root</span><span class="p">.</span><span class="nf">addClass</span><span class="p">(</span><span class="dl">'</span><span class="s1">fixed</span><span class="dl">'</span><span class="p">).</span><span class="nf">css</span><span class="p">({</span>
<span class="na">left</span><span class="p">:</span> <span class="nx">rootLeft</span> <span class="o">+</span> <span class="dl">'</span><span class="s1">px</span><span class="dl">'</span><span class="p">,</span>
<span class="na">top</span><span class="p">:</span> <span class="mi">0</span>
<span class="p">});</span>
<span class="nx">curState</span> <span class="o">=</span> <span class="dl">'</span><span class="s1">fixed</span><span class="dl">'</span><span class="p">;</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="kd">function</span> <span class="nf">bottom</span><span class="p">()</span> <span class="p">{</span>
<span class="k">if </span><span class="p">(</span><span class="nx">curState</span> <span class="o">!==</span> <span class="dl">'</span><span class="s1">bottom</span><span class="dl">'</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">$root</span><span class="p">.</span><span class="nf">removeClass</span><span class="p">(</span><span class="dl">'</span><span class="s1">fixed</span><span class="dl">'</span><span class="p">).</span><span class="nf">css</span><span class="p">({</span>
<span class="na">left</span><span class="p">:</span> <span class="mi">0</span><span class="p">,</span>
<span class="na">top</span><span class="p">:</span> <span class="nx">rootBottomTop</span> <span class="o">+</span> <span class="dl">'</span><span class="s1">px</span><span class="dl">'</span>
<span class="p">});</span>
<span class="nx">curState</span> <span class="o">=</span> <span class="dl">'</span><span class="s1">bottom</span><span class="dl">'</span><span class="p">;</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="kd">function</span> <span class="nf">setState</span><span class="p">()</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">scrollTop</span> <span class="o">=</span> <span class="nx">$scrollTarget</span><span class="p">.</span><span class="nf">scrollTop</span><span class="p">();</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">scrollTop</span> <span class="o">&gt;=</span> <span class="nx">rootTop</span> <span class="o">&amp;&amp;</span> <span class="nx">scrollTop</span> <span class="o">&lt;=</span> <span class="nx">scrollBottom</span><span class="p">)</span> <span class="p">{</span>
<span class="nf">fixed</span><span class="p">();</span>
<span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="nx">scrollTop</span> <span class="o">&lt;</span> <span class="nx">rootTop</span><span class="p">)</span> <span class="p">{</span>
<span class="nf">top</span><span class="p">();</span>
<span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
<span class="nf">bottom</span><span class="p">();</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="kd">function</span> <span class="nf">init</span><span class="p">()</span> <span class="p">{</span>
<span class="k">if</span><span class="p">(</span><span class="o">!</span><span class="nx">hasInit</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">interval</span><span class="p">,</span> <span class="nx">timeout</span><span class="p">;</span>
<span class="nf">calc</span><span class="p">(</span><span class="kc">true</span><span class="p">);</span> <span class="nf">setState</span><span class="p">();</span>
<span class="c1">// run calc every 100 millisecond</span>
<span class="nx">interval</span> <span class="o">=</span> <span class="nf">setInterval</span><span class="p">(</span><span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
<span class="nf">calc</span><span class="p">();</span>
<span class="p">},</span> <span class="mi">100</span><span class="p">);</span>
<span class="nx">timeout</span> <span class="o">=</span> <span class="nf">setTimeout</span><span class="p">(</span><span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
<span class="nf">clearInterval</span><span class="p">(</span><span class="nx">interval</span><span class="p">);</span>
<span class="p">},</span> <span class="mi">45000</span><span class="p">);</span>
<span class="nb">window</span><span class="p">.</span><span class="nx">pageLoad</span><span class="p">.</span><span class="nf">then</span><span class="p">(</span><span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
<span class="nf">setTimeout</span><span class="p">(</span><span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
<span class="nf">clearInterval</span><span class="p">(</span><span class="nx">interval</span><span class="p">);</span>
<span class="nf">clearTimeout</span><span class="p">(</span><span class="nx">timeout</span><span class="p">);</span>
<span class="p">},</span> <span class="mi">3000</span><span class="p">);</span>
<span class="p">});</span>
<span class="nx">$scrollTarget</span><span class="p">.</span><span class="nf">on</span><span class="p">(</span><span class="dl">'</span><span class="s1">scroll</span><span class="dl">'</span><span class="p">,</span> <span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
<span class="nx">disabled</span> <span class="o">||</span> <span class="nf">setState</span><span class="p">();</span>
<span class="p">});</span>
<span class="nx">$window</span><span class="p">.</span><span class="nf">on</span><span class="p">(</span><span class="dl">'</span><span class="s1">resize</span><span class="dl">'</span><span class="p">,</span> <span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
<span class="nx">disabled</span> <span class="o">||</span> <span class="p">(</span><span class="nf">calc</span><span class="p">(</span><span class="kc">true</span><span class="p">),</span> <span class="nf">setState</span><span class="p">());</span>
<span class="p">});</span>
<span class="nx">hasInit</span> <span class="o">=</span> <span class="kc">true</span><span class="p">;</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="nf">setOptions</span><span class="p">(</span><span class="nx">options</span><span class="p">);</span>
<span class="k">if </span><span class="p">(</span><span class="o">!</span><span class="nx">disabled</span><span class="p">)</span> <span class="p">{</span>
<span class="nf">init</span><span class="p">();</span>
<span class="p">}</span>
<span class="nx">$window</span><span class="p">.</span><span class="nf">on</span><span class="p">(</span><span class="dl">'</span><span class="s1">resize</span><span class="dl">'</span><span class="p">,</span> <span class="nb">window</span><span class="p">.</span><span class="nf">throttle</span><span class="p">(</span><span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
<span class="nf">init</span><span class="p">();</span>
<span class="p">},</span> <span class="mi">200</span><span class="p">));</span>
<span class="k">return</span> <span class="p">{</span>
<span class="na">setOptions</span><span class="p">:</span> <span class="nx">setOptions</span><span class="p">,</span>
<span class="na">refresh</span><span class="p">:</span> <span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
<span class="nf">calc</span><span class="p">(</span><span class="kc">true</span><span class="p">,</span> <span class="p">{</span> <span class="na">animation</span><span class="p">:</span> <span class="kc">false</span> <span class="p">});</span> <span class="nf">setState</span><span class="p">();</span>
<span class="p">}</span>
<span class="p">};</span>
<span class="p">}</span>
<span class="nx">$</span><span class="p">.</span><span class="nx">fn</span><span class="p">.</span><span class="nx">affix</span> <span class="o">=</span> <span class="nx">affix</span><span class="p">;</span>
<span class="p">});</span>
<span class="p">})();</span>
<span class="p">(</span><span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">SOURCES</span> <span class="o">=</span> <span class="nb">window</span><span class="p">.</span><span class="nx">TEXT_VARIABLES</span><span class="p">.</span><span class="nx">sources</span><span class="p">;</span>
<span class="nb">window</span><span class="p">.</span><span class="nx">Lazyload</span><span class="p">.</span><span class="nf">js</span><span class="p">(</span><span class="nx">SOURCES</span><span class="p">.</span><span class="nx">jquery</span><span class="p">,</span> <span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
<span class="kd">function</span> <span class="nf">toc</span><span class="p">(</span><span class="nx">options</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">$root</span> <span class="o">=</span> <span class="k">this</span><span class="p">,</span> <span class="nx">$window</span> <span class="o">=</span> <span class="nf">$</span><span class="p">(</span><span class="nb">window</span><span class="p">),</span> <span class="nx">$scrollTarget</span><span class="p">,</span> <span class="nx">$scroller</span><span class="p">,</span> <span class="nx">$tocUl</span> <span class="o">=</span> <span class="nx">$</span><span class="p">(</span><span class="dl">'</span><span class="s1">&lt;ul class="toc toc--ellipsis"&gt;&lt;/ul&gt;</span><span class="dl">'</span><span class="p">),</span> <span class="nx">$tocLi</span><span class="p">,</span> <span class="nx">$headings</span><span class="p">,</span> <span class="nx">$activeLast</span><span class="p">,</span> <span class="nx">$activeCur</span><span class="p">,</span>
<span class="nx">selectors</span> <span class="o">=</span> <span class="dl">'</span><span class="s1">h1,h2,h3</span><span class="dl">'</span><span class="p">,</span> <span class="nx">container</span> <span class="o">=</span> <span class="dl">'</span><span class="s1">body</span><span class="dl">'</span><span class="p">,</span> <span class="nx">scrollTarget</span> <span class="o">=</span> <span class="nb">window</span><span class="p">,</span> <span class="nx">scroller</span> <span class="o">=</span> <span class="dl">'</span><span class="s1">html, body</span><span class="dl">'</span><span class="p">,</span> <span class="nx">disabled</span> <span class="o">=</span> <span class="kc">false</span><span class="p">,</span>
<span class="nx">headingsPos</span><span class="p">,</span> <span class="nx">scrolling</span> <span class="o">=</span> <span class="kc">false</span><span class="p">,</span> <span class="nx">hasRendered</span> <span class="o">=</span> <span class="kc">false</span><span class="p">,</span> <span class="nx">hasInit</span> <span class="o">=</span> <span class="kc">false</span><span class="p">;</span>
<span class="kd">function</span> <span class="nf">setOptions</span><span class="p">(</span><span class="nx">options</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">_options</span> <span class="o">=</span> <span class="nx">options</span> <span class="o">||</span> <span class="p">{};</span>
<span class="nx">_options</span><span class="p">.</span><span class="nx">selectors</span> <span class="o">&amp;&amp;</span> <span class="p">(</span><span class="nx">selectors</span> <span class="o">=</span> <span class="nx">_options</span><span class="p">.</span><span class="nx">selectors</span><span class="p">);</span>
<span class="nx">_options</span><span class="p">.</span><span class="nx">container</span> <span class="o">&amp;&amp;</span> <span class="p">(</span><span class="nx">container</span> <span class="o">=</span> <span class="nx">_options</span><span class="p">.</span><span class="nx">container</span><span class="p">);</span>
<span class="nx">_options</span><span class="p">.</span><span class="nx">scrollTarget</span> <span class="o">&amp;&amp;</span> <span class="p">(</span><span class="nx">scrollTarget</span> <span class="o">=</span> <span class="nx">_options</span><span class="p">.</span><span class="nx">scrollTarget</span><span class="p">);</span>
<span class="nx">_options</span><span class="p">.</span><span class="nx">scroller</span> <span class="o">&amp;&amp;</span> <span class="p">(</span><span class="nx">scroller</span> <span class="o">=</span> <span class="nx">_options</span><span class="p">.</span><span class="nx">scroller</span><span class="p">);</span>
<span class="nx">_options</span><span class="p">.</span><span class="nx">disabled</span> <span class="o">!==</span> <span class="kc">undefined</span> <span class="o">&amp;&amp;</span> <span class="p">(</span><span class="nx">disabled</span> <span class="o">=</span> <span class="nx">_options</span><span class="p">.</span><span class="nx">disabled</span><span class="p">);</span>
<span class="nx">$headings</span> <span class="o">=</span> <span class="nf">$</span><span class="p">(</span><span class="nx">container</span><span class="p">).</span><span class="nf">find</span><span class="p">(</span><span class="nx">selectors</span><span class="p">).</span><span class="nf">filter</span><span class="p">(</span><span class="dl">'</span><span class="s1">[id]</span><span class="dl">'</span><span class="p">);</span>
<span class="nx">$scrollTarget</span> <span class="o">=</span> <span class="nf">$</span><span class="p">(</span><span class="nx">scrollTarget</span><span class="p">);</span>
<span class="nx">$scroller</span> <span class="o">=</span> <span class="nf">$</span><span class="p">(</span><span class="nx">scroller</span><span class="p">);</span>
<span class="p">}</span>
<span class="kd">function</span> <span class="nf">calc</span><span class="p">()</span> <span class="p">{</span>
<span class="nx">headingsPos</span> <span class="o">=</span> <span class="p">[];</span>
<span class="nx">$headings</span><span class="p">.</span><span class="nf">each</span><span class="p">(</span><span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
<span class="nx">headingsPos</span><span class="p">.</span><span class="nf">push</span><span class="p">(</span><span class="nb">Math</span><span class="p">.</span><span class="nf">floor</span><span class="p">(</span><span class="nf">$</span><span class="p">(</span><span class="k">this</span><span class="p">).</span><span class="nf">position</span><span class="p">().</span><span class="nx">top</span><span class="p">));</span>
<span class="p">});</span>
<span class="p">}</span>
<span class="kd">function</span> <span class="nf">setState</span><span class="p">(</span><span class="nx">element</span><span class="p">,</span> <span class="nx">disabled</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">scrollTop</span> <span class="o">=</span> <span class="nx">$scrollTarget</span><span class="p">.</span><span class="nf">scrollTop</span><span class="p">(),</span> <span class="nx">i</span><span class="p">;</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">disabled</span> <span class="o">||</span> <span class="o">!</span><span class="nx">headingsPos</span> <span class="o">||</span> <span class="nx">headingsPos</span><span class="p">.</span><span class="nx">length</span> <span class="o">&lt;</span> <span class="mi">1</span><span class="p">)</span> <span class="p">{</span> <span class="k">return</span><span class="p">;</span> <span class="p">}</span>
<span class="k">if </span><span class="p">(</span><span class="nx">element</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">$activeCur</span> <span class="o">=</span> <span class="nx">element</span><span class="p">;</span>
<span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
<span class="k">for</span> <span class="p">(</span><span class="nx">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">i</span> <span class="o">&lt;</span> <span class="nx">headingsPos</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
<span class="k">if </span><span class="p">(</span><span class="nx">scrollTop</span> <span class="o">&gt;=</span> <span class="nx">headingsPos</span><span class="p">[</span><span class="nx">i</span><span class="p">])</span> <span class="p">{</span>
<span class="nx">$activeCur</span> <span class="o">=</span> <span class="nx">$tocLi</span><span class="p">.</span><span class="nf">eq</span><span class="p">(</span><span class="nx">i</span><span class="p">);</span>
<span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
<span class="nx">$activeCur</span> <span class="o">||</span> <span class="p">(</span><span class="nx">$activeCur</span> <span class="o">=</span> <span class="nx">$tocLi</span><span class="p">.</span><span class="nf">eq</span><span class="p">(</span><span class="nx">i</span><span class="p">));</span>
<span class="k">break</span><span class="p">;</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="nx">$activeLast</span> <span class="o">&amp;&amp;</span> <span class="nx">$activeLast</span><span class="p">.</span><span class="nf">removeClass</span><span class="p">(</span><span class="dl">'</span><span class="s1">active</span><span class="dl">'</span><span class="p">);</span>
<span class="p">(</span><span class="nx">$activeLast</span> <span class="o">=</span> <span class="nx">$activeCur</span><span class="p">).</span><span class="nf">addClass</span><span class="p">(</span><span class="dl">'</span><span class="s1">active</span><span class="dl">'</span><span class="p">);</span>
<span class="p">}</span>
<span class="kd">function</span> <span class="nf">render</span><span class="p">()</span> <span class="p">{</span>
<span class="k">if</span><span class="p">(</span><span class="o">!</span><span class="nx">hasRendered</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">$root</span><span class="p">.</span><span class="nf">append</span><span class="p">(</span><span class="nx">$tocUl</span><span class="p">);</span>
<span class="nx">$headings</span><span class="p">.</span><span class="nf">each</span><span class="p">(</span><span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">$this</span> <span class="o">=</span> <span class="nf">$</span><span class="p">(</span><span class="k">this</span><span class="p">);</span>
<span class="nx">$tocUl</span><span class="p">.</span><span class="nx">append</span><span class="p">(</span><span class="nx">$</span><span class="p">(</span><span class="dl">'</span><span class="s1">&lt;li&gt;&lt;/li&gt;</span><span class="dl">'</span><span class="p">).</span><span class="nf">addClass</span><span class="p">(</span><span class="dl">'</span><span class="s1">toc-</span><span class="dl">'</span> <span class="o">+</span> <span class="nx">$this</span><span class="p">.</span><span class="nf">prop</span><span class="p">(</span><span class="dl">'</span><span class="s1">tagName</span><span class="dl">'</span><span class="p">).</span><span class="nf">toLowerCase</span><span class="p">())</span>
<span class="p">.</span><span class="nx">append</span><span class="p">(</span><span class="nx">$</span><span class="p">(</span><span class="dl">'</span><span class="s1">&lt;a&gt;&lt;/a&gt;</span><span class="dl">'</span><span class="p">).</span><span class="nf">text</span><span class="p">(</span><span class="nx">$this</span><span class="p">.</span><span class="nf">text</span><span class="p">()).</span><span class="nf">attr</span><span class="p">(</span><span class="dl">'</span><span class="s1">href</span><span class="dl">'</span><span class="p">,</span> <span class="dl">'</span><span class="s1">#</span><span class="dl">'</span> <span class="o">+</span> <span class="nx">$this</span><span class="p">.</span><span class="nf">prop</span><span class="p">(</span><span class="dl">'</span><span class="s1">id</span><span class="dl">'</span><span class="p">))));</span>
<span class="p">});</span>
<span class="nx">$tocLi</span> <span class="o">=</span> <span class="nx">$tocUl</span><span class="p">.</span><span class="nf">children</span><span class="p">(</span><span class="dl">'</span><span class="s1">li</span><span class="dl">'</span><span class="p">);</span>
<span class="nx">$tocUl</span><span class="p">.</span><span class="nf">on</span><span class="p">(</span><span class="dl">'</span><span class="s1">click</span><span class="dl">'</span><span class="p">,</span> <span class="dl">'</span><span class="s1">a</span><span class="dl">'</span><span class="p">,</span> <span class="kd">function</span><span class="p">(</span><span class="nx">e</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">e</span><span class="p">.</span><span class="nf">preventDefault</span><span class="p">();</span>
<span class="kd">var</span> <span class="nx">$this</span> <span class="o">=</span> <span class="nf">$</span><span class="p">(</span><span class="k">this</span><span class="p">);</span>
<span class="nx">scrolling</span> <span class="o">=</span> <span class="kc">true</span><span class="p">;</span>
<span class="nf">setState</span><span class="p">(</span><span class="nx">$this</span><span class="p">.</span><span class="nf">parent</span><span class="p">());</span>
<span class="nx">$scroller</span><span class="p">.</span><span class="nf">scrollToAnchor</span><span class="p">(</span><span class="nx">$this</span><span class="p">.</span><span class="nf">attr</span><span class="p">(</span><span class="dl">'</span><span class="s1">href</span><span class="dl">'</span><span class="p">),</span> <span class="mi">400</span><span class="p">,</span> <span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
<span class="nx">scrolling</span> <span class="o">=</span> <span class="kc">false</span><span class="p">;</span>
<span class="p">});</span>
<span class="p">});</span>
<span class="p">}</span>
<span class="nx">hasRendered</span> <span class="o">=</span> <span class="kc">true</span><span class="p">;</span>
<span class="p">}</span>
<span class="kd">function</span> <span class="nf">init</span><span class="p">()</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">interval</span><span class="p">,</span> <span class="nx">timeout</span><span class="p">;</span>
<span class="k">if</span><span class="p">(</span><span class="o">!</span><span class="nx">hasInit</span><span class="p">)</span> <span class="p">{</span>
<span class="nf">render</span><span class="p">();</span> <span class="nf">calc</span><span class="p">();</span> <span class="nf">setState</span><span class="p">(</span><span class="kc">null</span><span class="p">,</span> <span class="nx">scrolling</span><span class="p">);</span>
<span class="c1">// run calc every 100 millisecond</span>
<span class="nx">interval</span> <span class="o">=</span> <span class="nf">setInterval</span><span class="p">(</span><span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
<span class="nf">calc</span><span class="p">();</span>
<span class="p">},</span> <span class="mi">100</span><span class="p">);</span>
<span class="nx">timeout</span> <span class="o">=</span> <span class="nf">setTimeout</span><span class="p">(</span><span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
<span class="nf">clearInterval</span><span class="p">(</span><span class="nx">interval</span><span class="p">);</span>
<span class="p">},</span> <span class="mi">45000</span><span class="p">);</span>
<span class="nb">window</span><span class="p">.</span><span class="nx">pageLoad</span><span class="p">.</span><span class="nf">then</span><span class="p">(</span><span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
<span class="nf">setTimeout</span><span class="p">(</span><span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
<span class="nf">clearInterval</span><span class="p">(</span><span class="nx">interval</span><span class="p">);</span>
<span class="nf">clearTimeout</span><span class="p">(</span><span class="nx">timeout</span><span class="p">);</span>
<span class="p">},</span> <span class="mi">3000</span><span class="p">);</span>
<span class="p">});</span>
<span class="nx">$scrollTarget</span><span class="p">.</span><span class="nf">on</span><span class="p">(</span><span class="dl">'</span><span class="s1">scroll</span><span class="dl">'</span><span class="p">,</span> <span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
<span class="nx">disabled</span> <span class="o">||</span> <span class="nf">setState</span><span class="p">(</span><span class="kc">null</span><span class="p">,</span> <span class="nx">scrolling</span><span class="p">);</span>
<span class="p">});</span>
<span class="nx">$window</span><span class="p">.</span><span class="nf">on</span><span class="p">(</span><span class="dl">'</span><span class="s1">resize</span><span class="dl">'</span><span class="p">,</span> <span class="nb">window</span><span class="p">.</span><span class="nf">throttle</span><span class="p">(</span><span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
<span class="k">if </span><span class="p">(</span><span class="o">!</span><span class="nx">disabled</span><span class="p">)</span> <span class="p">{</span>
<span class="nf">render</span><span class="p">();</span> <span class="nf">calc</span><span class="p">();</span> <span class="nf">setState</span><span class="p">(</span><span class="kc">null</span><span class="p">,</span> <span class="nx">scrolling</span><span class="p">);</span>
<span class="p">}</span>
<span class="p">},</span> <span class="mi">100</span><span class="p">));</span>
<span class="p">}</span>
<span class="nx">hasInit</span> <span class="o">=</span> <span class="kc">true</span><span class="p">;</span>
<span class="p">}</span>
<span class="nf">setOptions</span><span class="p">(</span><span class="nx">options</span><span class="p">);</span>
<span class="k">if </span><span class="p">(</span><span class="o">!</span><span class="nx">disabled</span><span class="p">)</span> <span class="p">{</span>
<span class="nf">init</span><span class="p">();</span>
<span class="p">}</span>
<span class="nx">$window</span><span class="p">.</span><span class="nf">on</span><span class="p">(</span><span class="dl">'</span><span class="s1">resize</span><span class="dl">'</span><span class="p">,</span> <span class="nb">window</span><span class="p">.</span><span class="nf">throttle</span><span class="p">(</span><span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
<span class="nf">init</span><span class="p">();</span>
<span class="p">},</span> <span class="mi">200</span><span class="p">));</span>
<span class="k">return</span> <span class="p">{</span>
<span class="na">setOptions</span><span class="p">:</span> <span class="nx">setOptions</span>
<span class="p">};</span>
<span class="p">}</span>
<span class="nx">$</span><span class="p">.</span><span class="nx">fn</span><span class="p">.</span><span class="nx">toc</span> <span class="o">=</span> <span class="nx">toc</span><span class="p">;</span>
<span class="p">});</span>
<span class="p">})();</span>
<span class="cm">/*(function () {
})();*/</span>
<span class="nt">&lt;/script&gt;&lt;script&gt;</span>
<span class="cm">/* toc must before affix, since affix need to konw toc' height. */</span><span class="p">(</span><span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">SOURCES</span> <span class="o">=</span> <span class="nb">window</span><span class="p">.</span><span class="nx">TEXT_VARIABLES</span><span class="p">.</span><span class="nx">sources</span><span class="p">;</span>
<span class="kd">var</span> <span class="nx">TOC_SELECTOR</span> <span class="o">=</span> <span class="nb">window</span><span class="p">.</span><span class="nx">TEXT_VARIABLES</span><span class="p">.</span><span class="nx">site</span><span class="p">.</span><span class="nx">toc</span><span class="p">.</span><span class="nx">selectors</span><span class="p">;</span>
<span class="nb">window</span><span class="p">.</span><span class="nx">Lazyload</span><span class="p">.</span><span class="nf">js</span><span class="p">(</span><span class="nx">SOURCES</span><span class="p">.</span><span class="nx">jquery</span><span class="p">,</span> <span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">$window</span> <span class="o">=</span> <span class="nf">$</span><span class="p">(</span><span class="nb">window</span><span class="p">);</span>
<span class="kd">var</span> <span class="nx">$articleContent</span> <span class="o">=</span> <span class="nf">$</span><span class="p">(</span><span class="dl">'</span><span class="s1">.js-article-content</span><span class="dl">'</span><span class="p">);</span>
<span class="kd">var</span> <span class="nx">$tocRoot</span> <span class="o">=</span> <span class="nf">$</span><span class="p">(</span><span class="dl">'</span><span class="s1">.js-toc-root</span><span class="dl">'</span><span class="p">),</span> <span class="nx">$col2</span> <span class="o">=</span> <span class="nf">$</span><span class="p">(</span><span class="dl">'</span><span class="s1">.js-col-aside</span><span class="dl">'</span><span class="p">);</span>
<span class="kd">var</span> <span class="nx">toc</span><span class="p">;</span>
<span class="kd">var</span> <span class="nx">tocDisabled</span> <span class="o">=</span> <span class="kc">false</span><span class="p">;</span>
<span class="kd">var</span> <span class="nx">hasSidebar</span> <span class="o">=</span> <span class="nf">$</span><span class="p">(</span><span class="dl">'</span><span class="s1">.js-page-root</span><span class="dl">'</span><span class="p">).</span><span class="nf">hasClass</span><span class="p">(</span><span class="dl">'</span><span class="s1">layout--page--sidebar</span><span class="dl">'</span><span class="p">);</span>
<span class="kd">var</span> <span class="nx">hasToc</span> <span class="o">=</span> <span class="nx">$articleContent</span><span class="p">.</span><span class="nf">find</span><span class="p">(</span><span class="nx">TOC_SELECTOR</span><span class="p">).</span><span class="nx">length</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">;</span>
<span class="kd">function</span> <span class="nf">disabled</span><span class="p">()</span> <span class="p">{</span>
<span class="k">return</span> <span class="nx">$col2</span><span class="p">.</span><span class="nf">css</span><span class="p">(</span><span class="dl">'</span><span class="s1">display</span><span class="dl">'</span><span class="p">)</span> <span class="o">===</span> <span class="dl">'</span><span class="s1">none</span><span class="dl">'</span> <span class="o">||</span> <span class="o">!</span><span class="nx">hasToc</span><span class="p">;</span>
<span class="p">}</span>
<span class="nx">tocDisabled</span> <span class="o">=</span> <span class="nf">disabled</span><span class="p">();</span>
<span class="nx">toc</span> <span class="o">=</span> <span class="nx">$tocRoot</span><span class="p">.</span><span class="nf">toc</span><span class="p">({</span>
<span class="na">selectors</span><span class="p">:</span> <span class="nx">TOC_SELECTOR</span><span class="p">,</span>
<span class="na">container</span><span class="p">:</span> <span class="nx">$articleContent</span><span class="p">,</span>
<span class="na">scrollTarget</span><span class="p">:</span> <span class="nx">hasSidebar</span> <span class="p">?</span> <span class="dl">'</span><span class="s1">.js-page-main</span><span class="dl">'</span> <span class="p">:</span> <span class="kc">null</span><span class="p">,</span>
<span class="na">scroller</span><span class="p">:</span> <span class="nx">hasSidebar</span> <span class="p">?</span> <span class="dl">'</span><span class="s1">.js-page-main</span><span class="dl">'</span> <span class="p">:</span> <span class="kc">null</span><span class="p">,</span>
<span class="na">disabled</span><span class="p">:</span> <span class="nx">tocDisabled</span>
<span class="p">});</span>
<span class="nx">$window</span><span class="p">.</span><span class="nf">on</span><span class="p">(</span><span class="dl">'</span><span class="s1">resize</span><span class="dl">'</span><span class="p">,</span> <span class="nb">window</span><span class="p">.</span><span class="nf">throttle</span><span class="p">(</span><span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
<span class="nx">tocDisabled</span> <span class="o">=</span> <span class="nf">disabled</span><span class="p">();</span>
<span class="nx">toc</span> <span class="o">&amp;&amp;</span> <span class="nx">toc</span><span class="p">.</span><span class="nf">setOptions</span><span class="p">({</span>
<span class="na">disabled</span><span class="p">:</span> <span class="nx">tocDisabled</span>
<span class="p">});</span>
<span class="p">},</span> <span class="mi">100</span><span class="p">));</span>
<span class="p">});</span>
<span class="p">})();</span>
<span class="p">(</span><span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">SOURCES</span> <span class="o">=</span> <span class="nb">window</span><span class="p">.</span><span class="nx">TEXT_VARIABLES</span><span class="p">.</span><span class="nx">sources</span><span class="p">;</span>
<span class="nb">window</span><span class="p">.</span><span class="nx">Lazyload</span><span class="p">.</span><span class="nf">js</span><span class="p">(</span><span class="nx">SOURCES</span><span class="p">.</span><span class="nx">jquery</span><span class="p">,</span> <span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">$window</span> <span class="o">=</span> <span class="nf">$</span><span class="p">(</span><span class="nb">window</span><span class="p">),</span> <span class="nx">$pageFooter</span> <span class="o">=</span> <span class="nf">$</span><span class="p">(</span><span class="dl">'</span><span class="s1">.js-page-footer</span><span class="dl">'</span><span class="p">);</span>
<span class="kd">var</span> <span class="nx">$pageAside</span> <span class="o">=</span> <span class="nf">$</span><span class="p">(</span><span class="dl">'</span><span class="s1">.js-page-aside</span><span class="dl">'</span><span class="p">);</span>
<span class="kd">var</span> <span class="nx">affix</span><span class="p">;</span>
<span class="kd">var</span> <span class="nx">tocDisabled</span> <span class="o">=</span> <span class="kc">false</span><span class="p">;</span>
<span class="kd">var</span> <span class="nx">hasSidebar</span> <span class="o">=</span> <span class="nf">$</span><span class="p">(</span><span class="dl">'</span><span class="s1">.js-page-root</span><span class="dl">'</span><span class="p">).</span><span class="nf">hasClass</span><span class="p">(</span><span class="dl">'</span><span class="s1">layout--page--sidebar</span><span class="dl">'</span><span class="p">);</span>
<span class="nx">affix</span> <span class="o">=</span> <span class="nx">$pageAside</span><span class="p">.</span><span class="nf">affix</span><span class="p">({</span>
<span class="na">offsetBottom</span><span class="p">:</span> <span class="nx">$pageFooter</span><span class="p">.</span><span class="nf">outerHeight</span><span class="p">(),</span>
<span class="na">scrollTarget</span><span class="p">:</span> <span class="nx">hasSidebar</span> <span class="p">?</span> <span class="dl">'</span><span class="s1">.js-page-main</span><span class="dl">'</span> <span class="p">:</span> <span class="kc">null</span><span class="p">,</span>
<span class="na">scroller</span><span class="p">:</span> <span class="nx">hasSidebar</span> <span class="p">?</span> <span class="dl">'</span><span class="s1">.js-page-main</span><span class="dl">'</span> <span class="p">:</span> <span class="kc">null</span><span class="p">,</span>
<span class="na">scroll</span><span class="p">:</span> <span class="nx">hasSidebar</span> <span class="p">?</span> <span class="nf">$</span><span class="p">(</span><span class="dl">'</span><span class="s1">.js-page-main</span><span class="dl">'</span><span class="p">).</span><span class="nf">children</span><span class="p">()</span> <span class="p">:</span> <span class="kc">null</span><span class="p">,</span>
<span class="na">disabled</span><span class="p">:</span> <span class="nx">tocDisabled</span>
<span class="p">});</span>
<span class="nx">$window</span><span class="p">.</span><span class="nf">on</span><span class="p">(</span><span class="dl">'</span><span class="s1">resize</span><span class="dl">'</span><span class="p">,</span> <span class="nb">window</span><span class="p">.</span><span class="nf">throttle</span><span class="p">(</span><span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
<span class="nx">affix</span> <span class="o">&amp;&amp;</span> <span class="nx">affix</span><span class="p">.</span><span class="nf">setOptions</span><span class="p">({</span>
<span class="na">disabled</span><span class="p">:</span> <span class="nx">tocDisabled</span>
<span class="p">});</span>
<span class="p">},</span> <span class="mi">100</span><span class="p">));</span>
<span class="nb">window</span><span class="p">.</span><span class="nx">pageAsideAffix</span> <span class="o">=</span> <span class="nx">affix</span><span class="p">;</span>
<span class="p">});</span>
<span class="p">})();</span>
<span class="nt">&lt;/script&gt;</span><span class="c">&lt;!----&gt;</span>
<span class="nt">&lt;/div&gt;</span>
<span class="nt">&lt;script&gt;</span><span class="p">(</span><span class="nf">function </span><span class="p">()</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">$root</span> <span class="o">=</span> <span class="nb">document</span><span class="p">.</span><span class="nf">getElementsByClassName</span><span class="p">(</span><span class="dl">'</span><span class="s1">root</span><span class="dl">'</span><span class="p">)[</span><span class="mi">0</span><span class="p">];</span>
<span class="k">if </span><span class="p">(</span><span class="nb">window</span><span class="p">.</span><span class="nf">hasEvent</span><span class="p">(</span><span class="dl">'</span><span class="s1">touchstart</span><span class="dl">'</span><span class="p">))</span> <span class="p">{</span>
<span class="nx">$root</span><span class="p">.</span><span class="nx">dataset</span><span class="p">.</span><span class="nx">isTouch</span> <span class="o">=</span> <span class="kc">true</span><span class="p">;</span>
<span class="nb">document</span><span class="p">.</span><span class="nf">addEventListener</span><span class="p">(</span><span class="dl">'</span><span class="s1">touchstart</span><span class="dl">'</span><span class="p">,</span> <span class="kd">function</span><span class="p">(){},</span> <span class="kc">false</span><span class="p">);</span>
<span class="p">}</span>
<span class="p">})();</span>
<span class="nt">&lt;/script&gt;</span>
<span class="nt">&lt;/body&gt;</span>
<span class="nt">&lt;/html&gt;</span>
</code></pre></div></div>
<p><strong>search.html</strong> situé sous la racine <strong>/srv/basicblog/</strong> du site statique dans le dossier <strong>_layouts</strong></p>
<div class="language-html highlighter-rouge"><div class="highlight"><pre class="highlight"><code>---
layout: default
---
<span class="nt">&lt;div</span> <span class="na">class=</span><span class="s">"search"</span><span class="nt">&gt;</span>
<span class="cp">&lt;!DOCTYPE html&gt;</span><span class="nt">&lt;html</span> <span class="na">lang=</span><span class="s">"fr"</span><span class="nt">&gt;</span>
<span class="nt">&lt;head&gt;&lt;meta</span> <span class="na">charset=</span><span class="s">"utf-8"</span><span class="nt">&gt;</span>
<span class="nt">&lt;meta</span> <span class="na">http-equiv=</span><span class="s">"X-UA-Compatible"</span> <span class="na">content=</span><span class="s">"IE=edge"</span><span class="nt">&gt;</span>
<span class="nt">&lt;meta</span> <span class="na">name=</span><span class="s">"viewport"</span> <span class="na">content=</span><span class="s">"width=device-width, initial-scale=1, user-scalable=no"</span><span class="nt">&gt;&lt;title&gt;</span>Nginx personnalisation des pages d'erreur - YannStatic<span class="nt">&lt;/title&gt;</span>
<span class="nt">&lt;meta</span> <span class="na">name=</span><span class="s">"description"</span> <span class="na">content=</span><span class="s">"Configurer Nginx pour utiliser des pages derreur personnalisées"</span><span class="nt">&gt;</span>
<span class="nt">&lt;link</span> <span class="na">rel=</span><span class="s">"canonical"</span> <span class="na">href=</span><span class="s">"https://static.rnmkcy.eu/2019/12/21/Nginx-personnalisation-page-erreur.html"</span><span class="nt">&gt;&lt;link</span> <span class="na">rel=</span><span class="s">"alternate"</span> <span class="na">type=</span><span class="s">"application/rss+xml"</span> <span class="na">title=</span><span class="s">"YannStatic"</span> <span class="na">href=</span><span class="s">"/feed.xml"</span><span class="nt">&gt;</span>
<span class="c">&lt;!-- - include head/favicon.html - --&gt;</span>
<span class="nt">&lt;link</span> <span class="na">rel=</span><span class="s">"shortcut icon"</span> <span class="na">type=</span><span class="s">"image/png"</span> <span class="na">href=</span><span class="s">"/assets/favicon/favicon.png"</span><span class="nt">&gt;&lt;link</span> <span class="na">rel=</span><span class="s">"stylesheet"</span> <span class="na">href=</span><span class="s">"/assets/css/main.css"</span><span class="nt">&gt;&lt;link</span> <span class="na">rel=</span><span class="s">"stylesheet"</span> <span class="na">href=</span><span class="s">"https://use.fontawesome.com/releases/v5.0.13/css/all.css"</span> <span class="nt">&gt;</span><span class="c">&lt;!-- start custom head snippets --&gt;</span><span class="nt">&lt;link</span> <span class="na">rel=</span><span class="s">"stylesheet"</span> <span class="na">href=</span><span class="s">"/assets/css/expand.css"</span><span class="nt">&gt;</span>
<span class="c">&lt;!-- end custom head snippets --&gt;</span><span class="nt">&lt;script&gt;</span><span class="p">(</span><span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
<span class="nb">window</span><span class="p">.</span><span class="nx">isArray</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">val</span><span class="p">)</span> <span class="p">{</span>
<span class="k">return</span> <span class="nb">Object</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">toString</span><span class="p">.</span><span class="nf">call</span><span class="p">(</span><span class="nx">val</span><span class="p">)</span> <span class="o">===</span> <span class="dl">'</span><span class="s1">[object Array]</span><span class="dl">'</span><span class="p">;</span>
<span class="p">};</span>
<span class="nb">window</span><span class="p">.</span><span class="nx">isString</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">val</span><span class="p">)</span> <span class="p">{</span>
<span class="k">return</span> <span class="k">typeof</span> <span class="nx">val</span> <span class="o">===</span> <span class="dl">'</span><span class="s1">string</span><span class="dl">'</span><span class="p">;</span>
<span class="p">};</span>
<span class="nb">window</span><span class="p">.</span><span class="nx">hasEvent</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">event</span><span class="p">)</span> <span class="p">{</span>
<span class="k">return</span> <span class="dl">'</span><span class="s1">on</span><span class="dl">'</span><span class="p">.</span><span class="nf">concat</span><span class="p">(</span><span class="nx">event</span><span class="p">)</span> <span class="k">in</span> <span class="nb">window</span><span class="p">.</span><span class="nb">document</span><span class="p">;</span>
<span class="p">};</span>
<span class="nb">window</span><span class="p">.</span><span class="nx">isOverallScroller</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">node</span><span class="p">)</span> <span class="p">{</span>
<span class="k">return</span> <span class="nx">node</span> <span class="o">===</span> <span class="nb">document</span><span class="p">.</span><span class="nx">documentElement</span> <span class="o">||</span> <span class="nx">node</span> <span class="o">===</span> <span class="nb">document</span><span class="p">.</span><span class="nx">body</span> <span class="o">||</span> <span class="nx">node</span> <span class="o">===</span> <span class="nb">window</span><span class="p">;</span>
<span class="p">};</span>
<span class="nb">window</span><span class="p">.</span><span class="nx">isFormElement</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">node</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">tagName</span> <span class="o">=</span> <span class="nx">node</span><span class="p">.</span><span class="nx">tagName</span><span class="p">;</span>
<span class="k">return</span> <span class="nx">tagName</span> <span class="o">===</span> <span class="dl">'</span><span class="s1">INPUT</span><span class="dl">'</span> <span class="o">||</span> <span class="nx">tagName</span> <span class="o">===</span> <span class="dl">'</span><span class="s1">SELECT</span><span class="dl">'</span> <span class="o">||</span> <span class="nx">tagName</span> <span class="o">===</span> <span class="dl">'</span><span class="s1">TEXTAREA</span><span class="dl">'</span><span class="p">;</span>
<span class="p">};</span>
<span class="nb">window</span><span class="p">.</span><span class="nx">pageLoad</span> <span class="o">=</span> <span class="p">(</span><span class="nf">function </span><span class="p">()</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">loaded</span> <span class="o">=</span> <span class="kc">false</span><span class="p">,</span> <span class="nx">cbs</span> <span class="o">=</span> <span class="p">[];</span>
<span class="nb">window</span><span class="p">.</span><span class="nf">addEventListener</span><span class="p">(</span><span class="dl">'</span><span class="s1">load</span><span class="dl">'</span><span class="p">,</span> <span class="nf">function </span><span class="p">()</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">i</span><span class="p">;</span>
<span class="nx">loaded</span> <span class="o">=</span> <span class="kc">true</span><span class="p">;</span>
<span class="k">if </span><span class="p">(</span><span class="nx">cbs</span><span class="p">.</span><span class="nx">length</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
<span class="k">for</span> <span class="p">(</span><span class="nx">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">i</span> <span class="o">&lt;</span> <span class="nx">cbs</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">cbs</span><span class="p">[</span><span class="nx">i</span><span class="p">]();</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="p">});</span>
<span class="k">return</span> <span class="p">{</span>
<span class="na">then</span><span class="p">:</span> <span class="kd">function</span><span class="p">(</span><span class="nx">cb</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">cb</span> <span class="o">&amp;&amp;</span> <span class="p">(</span><span class="nx">loaded</span> <span class="p">?</span> <span class="nf">cb</span><span class="p">()</span> <span class="p">:</span> <span class="p">(</span><span class="nx">cbs</span><span class="p">.</span><span class="nf">push</span><span class="p">(</span><span class="nx">cb</span><span class="p">)));</span>
<span class="p">}</span>
<span class="p">};</span>
<span class="p">})();</span>
<span class="p">})();</span>
<span class="p">(</span><span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
<span class="nb">window</span><span class="p">.</span><span class="nx">throttle</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">func</span><span class="p">,</span> <span class="nx">wait</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">args</span><span class="p">,</span> <span class="nx">result</span><span class="p">,</span> <span class="nx">thisArg</span><span class="p">,</span> <span class="nx">timeoutId</span><span class="p">,</span> <span class="nx">lastCalled</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
<span class="kd">function</span> <span class="nf">trailingCall</span><span class="p">()</span> <span class="p">{</span>
<span class="nx">lastCalled</span> <span class="o">=</span> <span class="k">new</span> <span class="nb">Date</span><span class="p">;</span>
<span class="nx">timeoutId</span> <span class="o">=</span> <span class="kc">null</span><span class="p">;</span>
<span class="nx">result</span> <span class="o">=</span> <span class="nx">func</span><span class="p">.</span><span class="nf">apply</span><span class="p">(</span><span class="nx">thisArg</span><span class="p">,</span> <span class="nx">args</span><span class="p">);</span>
<span class="p">}</span>
<span class="k">return</span> <span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">now</span> <span class="o">=</span> <span class="k">new</span> <span class="nb">Date</span><span class="p">,</span>
<span class="nx">remaining</span> <span class="o">=</span> <span class="nx">wait</span> <span class="o">-</span> <span class="p">(</span><span class="nx">now</span> <span class="o">-</span> <span class="nx">lastCalled</span><span class="p">);</span>
<span class="nx">args</span> <span class="o">=</span> <span class="nx">arguments</span><span class="p">;</span>
<span class="nx">thisArg</span> <span class="o">=</span> <span class="k">this</span><span class="p">;</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">remaining</span> <span class="o">&lt;=</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
<span class="nf">clearTimeout</span><span class="p">(</span><span class="nx">timeoutId</span><span class="p">);</span>
<span class="nx">timeoutId</span> <span class="o">=</span> <span class="kc">null</span><span class="p">;</span>
<span class="nx">lastCalled</span> <span class="o">=</span> <span class="nx">now</span><span class="p">;</span>
<span class="nx">result</span> <span class="o">=</span> <span class="nx">func</span><span class="p">.</span><span class="nf">apply</span><span class="p">(</span><span class="nx">thisArg</span><span class="p">,</span> <span class="nx">args</span><span class="p">);</span>
<span class="p">}</span> <span class="k">else</span> <span class="k">if </span><span class="p">(</span><span class="o">!</span><span class="nx">timeoutId</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">timeoutId</span> <span class="o">=</span> <span class="nf">setTimeout</span><span class="p">(</span><span class="nx">trailingCall</span><span class="p">,</span> <span class="nx">remaining</span><span class="p">);</span>
<span class="p">}</span>
<span class="k">return</span> <span class="nx">result</span><span class="p">;</span>
<span class="p">};</span>
<span class="p">};</span>
<span class="p">})();</span>
<span class="p">(</span><span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nb">Set</span> <span class="o">=</span> <span class="p">(</span><span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">add</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">item</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">i</span><span class="p">,</span> <span class="nx">data</span> <span class="o">=</span> <span class="k">this</span><span class="p">.</span><span class="nx">_data</span><span class="p">;</span>
<span class="k">for</span> <span class="p">(</span><span class="nx">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">i</span> <span class="o">&lt;</span> <span class="nx">data</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
<span class="k">if </span><span class="p">(</span><span class="nx">data</span><span class="p">[</span><span class="nx">i</span><span class="p">]</span> <span class="o">===</span> <span class="nx">item</span><span class="p">)</span> <span class="p">{</span>
<span class="k">return</span><span class="p">;</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="k">this</span><span class="p">.</span><span class="nx">size</span> <span class="o">++</span><span class="p">;</span>
<span class="nx">data</span><span class="p">.</span><span class="nf">push</span><span class="p">(</span><span class="nx">item</span><span class="p">);</span>
<span class="k">return</span> <span class="nx">data</span><span class="p">;</span>
<span class="p">};</span>
<span class="kd">var</span> <span class="nb">Set</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">data</span><span class="p">)</span> <span class="p">{</span>
<span class="k">this</span><span class="p">.</span><span class="nx">size</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
<span class="k">this</span><span class="p">.</span><span class="nx">_data</span> <span class="o">=</span> <span class="p">[];</span>
<span class="kd">var</span> <span class="nx">i</span><span class="p">;</span>
<span class="k">if </span><span class="p">(</span><span class="nx">data</span><span class="p">.</span><span class="nx">length</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
<span class="k">for</span> <span class="p">(</span><span class="nx">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">i</span> <span class="o">&lt;</span> <span class="nx">data</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">add</span><span class="p">.</span><span class="nf">call</span><span class="p">(</span><span class="k">this</span><span class="p">,</span> <span class="nx">data</span><span class="p">[</span><span class="nx">i</span><span class="p">]);</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="p">};</span>
<span class="nb">Set</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">add</span> <span class="o">=</span> <span class="nx">add</span><span class="p">;</span>
<span class="nb">Set</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="kd">get</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">index</span><span class="p">)</span> <span class="p">{</span> <span class="k">return</span> <span class="k">this</span><span class="p">.</span><span class="nx">_data</span><span class="p">[</span><span class="nx">index</span><span class="p">];</span> <span class="p">};</span>
<span class="nb">Set</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">has</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">item</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">i</span><span class="p">,</span> <span class="nx">data</span> <span class="o">=</span> <span class="k">this</span><span class="p">.</span><span class="nx">_data</span><span class="p">;</span>
<span class="k">for</span> <span class="p">(</span><span class="nx">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">i</span> <span class="o">&lt;</span> <span class="nx">data</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
<span class="k">if </span><span class="p">(</span><span class="k">this</span><span class="p">.</span><span class="nf">get</span><span class="p">(</span><span class="nx">i</span><span class="p">)</span> <span class="o">===</span> <span class="nx">item</span><span class="p">)</span> <span class="p">{</span>
<span class="k">return</span> <span class="kc">true</span><span class="p">;</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="k">return</span> <span class="kc">false</span><span class="p">;</span>
<span class="p">};</span>
<span class="nb">Set</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">is</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">map</span><span class="p">)</span> <span class="p">{</span>
<span class="k">if </span><span class="p">(</span><span class="nx">map</span><span class="p">.</span><span class="nx">_data</span><span class="p">.</span><span class="nx">length</span> <span class="o">!==</span> <span class="k">this</span><span class="p">.</span><span class="nx">_data</span><span class="p">.</span><span class="nx">length</span><span class="p">)</span> <span class="p">{</span> <span class="k">return</span> <span class="kc">false</span><span class="p">;</span> <span class="p">}</span>
<span class="kd">var</span> <span class="nx">i</span><span class="p">,</span> <span class="nx">j</span><span class="p">,</span> <span class="nx">flag</span><span class="p">,</span> <span class="nx">tData</span> <span class="o">=</span> <span class="k">this</span><span class="p">.</span><span class="nx">_data</span><span class="p">,</span> <span class="nx">mData</span> <span class="o">=</span> <span class="nx">map</span><span class="p">.</span><span class="nx">_data</span><span class="p">;</span>
<span class="k">for</span> <span class="p">(</span><span class="nx">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">i</span> <span class="o">&lt;</span> <span class="nx">tData</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
<span class="k">for</span> <span class="p">(</span><span class="nx">flag</span> <span class="o">=</span> <span class="kc">false</span><span class="p">,</span> <span class="nx">j</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">j</span> <span class="o">&lt;</span> <span class="nx">mData</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span> <span class="nx">j</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
<span class="k">if </span><span class="p">(</span><span class="nx">tData</span><span class="p">[</span><span class="nx">i</span><span class="p">]</span> <span class="o">===</span> <span class="nx">mData</span><span class="p">[</span><span class="nx">j</span><span class="p">])</span> <span class="p">{</span>
<span class="nx">flag</span> <span class="o">=</span> <span class="kc">true</span><span class="p">;</span>
<span class="k">break</span><span class="p">;</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="k">if </span><span class="p">(</span><span class="o">!</span><span class="nx">flag</span><span class="p">)</span> <span class="p">{</span> <span class="k">return</span> <span class="kc">false</span><span class="p">;</span> <span class="p">}</span>
<span class="p">}</span>
<span class="k">return</span> <span class="kc">true</span><span class="p">;</span>
<span class="p">};</span>
<span class="nb">Set</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">values</span> <span class="o">=</span> <span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
<span class="k">return</span> <span class="k">this</span><span class="p">.</span><span class="nx">_data</span><span class="p">;</span>
<span class="p">};</span>
<span class="k">return</span> <span class="nb">Set</span><span class="p">;</span>
<span class="p">})();</span>
<span class="nb">window</span><span class="p">.</span><span class="nx">Lazyload</span> <span class="o">=</span> <span class="p">(</span><span class="kd">function</span><span class="p">(</span><span class="nx">doc</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">queue</span> <span class="o">=</span> <span class="p">{</span><span class="na">js</span><span class="p">:</span> <span class="p">[],</span> <span class="na">css</span><span class="p">:</span> <span class="p">[]},</span> <span class="nx">sources</span> <span class="o">=</span> <span class="p">{</span><span class="na">js</span><span class="p">:</span> <span class="p">{},</span> <span class="na">css</span><span class="p">:</span> <span class="p">{}},</span> <span class="nx">context</span> <span class="o">=</span> <span class="k">this</span><span class="p">;</span>
<span class="kd">var</span> <span class="nx">createNode</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">name</span><span class="p">,</span> <span class="nx">attrs</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">node</span> <span class="o">=</span> <span class="nx">doc</span><span class="p">.</span><span class="nf">createElement</span><span class="p">(</span><span class="nx">name</span><span class="p">),</span> <span class="nx">attr</span><span class="p">;</span>
<span class="k">for </span><span class="p">(</span><span class="nx">attr</span> <span class="k">in</span> <span class="nx">attrs</span><span class="p">)</span> <span class="p">{</span>
<span class="k">if </span><span class="p">(</span><span class="nx">attrs</span><span class="p">.</span><span class="nf">hasOwnProperty</span><span class="p">(</span><span class="nx">attr</span><span class="p">))</span> <span class="p">{</span>
<span class="nx">node</span><span class="p">.</span><span class="nf">setAttribute</span><span class="p">(</span><span class="nx">attr</span><span class="p">,</span> <span class="nx">attrs</span><span class="p">[</span><span class="nx">attr</span><span class="p">]);</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="k">return</span> <span class="nx">node</span><span class="p">;</span>
<span class="p">};</span>
<span class="kd">var</span> <span class="nx">end</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">type</span><span class="p">,</span> <span class="nx">url</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">s</span><span class="p">,</span> <span class="nx">q</span><span class="p">,</span> <span class="nx">qi</span><span class="p">,</span> <span class="nx">cbs</span><span class="p">,</span> <span class="nx">i</span><span class="p">,</span> <span class="nx">j</span><span class="p">,</span> <span class="nx">cur</span><span class="p">,</span> <span class="nx">val</span><span class="p">,</span> <span class="nx">flag</span><span class="p">;</span>
<span class="k">if </span><span class="p">(</span><span class="nx">type</span> <span class="o">===</span> <span class="dl">'</span><span class="s1">js</span><span class="dl">'</span> <span class="o">||</span> <span class="nx">type</span> <span class="o">===</span><span class="dl">'</span><span class="s1">css</span><span class="dl">'</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">s</span> <span class="o">=</span> <span class="nx">sources</span><span class="p">[</span><span class="nx">type</span><span class="p">],</span> <span class="nx">q</span> <span class="o">=</span> <span class="nx">queue</span><span class="p">[</span><span class="nx">type</span><span class="p">];</span>
<span class="nx">s</span><span class="p">[</span><span class="nx">url</span><span class="p">]</span> <span class="o">=</span> <span class="kc">true</span><span class="p">;</span>
<span class="k">for</span> <span class="p">(</span><span class="nx">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">i</span> <span class="o">&lt;</span> <span class="nx">q</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">cur</span> <span class="o">=</span> <span class="nx">q</span><span class="p">[</span><span class="nx">i</span><span class="p">];</span>
<span class="k">if </span><span class="p">(</span><span class="nx">cur</span><span class="p">.</span><span class="nx">urls</span><span class="p">.</span><span class="nf">has</span><span class="p">(</span><span class="nx">url</span><span class="p">))</span> <span class="p">{</span>
<span class="nx">qi</span> <span class="o">=</span> <span class="nx">cur</span><span class="p">,</span> <span class="nx">val</span> <span class="o">=</span> <span class="nx">qi</span><span class="p">.</span><span class="nx">urls</span><span class="p">.</span><span class="nf">values</span><span class="p">();</span>
<span class="nx">qi</span> <span class="o">&amp;&amp;</span> <span class="p">(</span><span class="nx">cbs</span> <span class="o">=</span> <span class="nx">qi</span><span class="p">.</span><span class="nx">callbacks</span><span class="p">);</span>
<span class="k">for</span> <span class="p">(</span><span class="nx">flag</span> <span class="o">=</span> <span class="kc">true</span><span class="p">,</span> <span class="nx">j</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">j</span> <span class="o">&lt;</span> <span class="nx">val</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span> <span class="nx">j</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">cur</span> <span class="o">=</span> <span class="nx">val</span><span class="p">[</span><span class="nx">j</span><span class="p">];</span>
<span class="k">if </span><span class="p">(</span><span class="o">!</span><span class="nx">s</span><span class="p">[</span><span class="nx">cur</span><span class="p">])</span> <span class="p">{</span>
<span class="nx">flag</span> <span class="o">=</span> <span class="kc">false</span><span class="p">;</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="k">if </span><span class="p">(</span><span class="nx">flag</span> <span class="o">&amp;&amp;</span> <span class="nx">cbs</span> <span class="o">&amp;&amp;</span> <span class="nx">cbs</span><span class="p">.</span><span class="nx">length</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
<span class="k">for</span> <span class="p">(</span><span class="nx">j</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">j</span> <span class="o">&lt;</span> <span class="nx">cbs</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span> <span class="nx">j</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">cbs</span><span class="p">[</span><span class="nx">j</span><span class="p">].</span><span class="nf">call</span><span class="p">(</span><span class="nx">context</span><span class="p">);</span>
<span class="p">}</span>
<span class="nx">qi</span><span class="p">.</span><span class="nx">load</span> <span class="o">=</span> <span class="kc">true</span><span class="p">;</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="p">};</span>
<span class="kd">var</span> <span class="nx">load</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">type</span><span class="p">,</span> <span class="nx">urls</span><span class="p">,</span> <span class="nx">callback</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">s</span><span class="p">,</span> <span class="nx">q</span><span class="p">,</span> <span class="nx">qi</span><span class="p">,</span> <span class="nx">node</span><span class="p">,</span> <span class="nx">i</span><span class="p">,</span> <span class="nx">cur</span><span class="p">,</span>
<span class="nx">_urls</span> <span class="o">=</span> <span class="k">typeof</span> <span class="nx">urls</span> <span class="o">===</span> <span class="dl">'</span><span class="s1">string</span><span class="dl">'</span> <span class="p">?</span> <span class="k">new</span> <span class="nc">Set</span><span class="p">([</span><span class="nx">urls</span><span class="p">])</span> <span class="p">:</span> <span class="k">new</span> <span class="nc">Set</span><span class="p">(</span><span class="nx">urls</span><span class="p">),</span> <span class="nx">val</span><span class="p">,</span> <span class="nx">url</span><span class="p">;</span>
<span class="k">if </span><span class="p">(</span><span class="nx">type</span> <span class="o">===</span> <span class="dl">'</span><span class="s1">js</span><span class="dl">'</span> <span class="o">||</span> <span class="nx">type</span> <span class="o">===</span><span class="dl">'</span><span class="s1">css</span><span class="dl">'</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">s</span> <span class="o">=</span> <span class="nx">sources</span><span class="p">[</span><span class="nx">type</span><span class="p">],</span> <span class="nx">q</span> <span class="o">=</span> <span class="nx">queue</span><span class="p">[</span><span class="nx">type</span><span class="p">];</span>
<span class="k">for</span> <span class="p">(</span><span class="nx">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">i</span> <span class="o">&lt;</span> <span class="nx">q</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">cur</span> <span class="o">=</span> <span class="nx">q</span><span class="p">[</span><span class="nx">i</span><span class="p">];</span>
<span class="k">if </span><span class="p">(</span><span class="nx">_urls</span><span class="p">.</span><span class="nf">is</span><span class="p">(</span><span class="nx">cur</span><span class="p">.</span><span class="nx">urls</span><span class="p">))</span> <span class="p">{</span>
<span class="nx">qi</span> <span class="o">=</span> <span class="nx">cur</span><span class="p">;</span>
<span class="k">break</span><span class="p">;</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="nx">val</span> <span class="o">=</span> <span class="nx">_urls</span><span class="p">.</span><span class="nf">values</span><span class="p">();</span>
<span class="k">if </span><span class="p">(</span><span class="nx">qi</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">callback</span> <span class="o">&amp;&amp;</span> <span class="p">(</span><span class="nx">qi</span><span class="p">.</span><span class="nx">load</span> <span class="o">||</span> <span class="nx">qi</span><span class="p">.</span><span class="nx">callbacks</span><span class="p">.</span><span class="nf">push</span><span class="p">(</span><span class="nx">callback</span><span class="p">));</span>
<span class="nx">callback</span> <span class="o">&amp;&amp;</span> <span class="p">(</span><span class="nx">qi</span><span class="p">.</span><span class="nx">load</span> <span class="o">&amp;&amp;</span> <span class="nf">callback</span><span class="p">());</span>
<span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
<span class="nx">q</span><span class="p">.</span><span class="nf">push</span><span class="p">({</span>
<span class="na">urls</span><span class="p">:</span> <span class="nx">_urls</span><span class="p">,</span>
<span class="na">callbacks</span><span class="p">:</span> <span class="nx">callback</span> <span class="p">?</span> <span class="p">[</span><span class="nx">callback</span><span class="p">]</span> <span class="p">:</span> <span class="p">[],</span>
<span class="na">load</span><span class="p">:</span> <span class="kc">false</span>
<span class="p">});</span>
<span class="k">for</span> <span class="p">(</span><span class="nx">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">i</span> <span class="o">&lt;</span> <span class="nx">val</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">node</span> <span class="o">=</span> <span class="kc">null</span><span class="p">,</span> <span class="nx">url</span> <span class="o">=</span> <span class="nx">val</span><span class="p">[</span><span class="nx">i</span><span class="p">];</span>
<span class="k">if </span><span class="p">(</span><span class="nx">s</span><span class="p">[</span><span class="nx">url</span><span class="p">]</span> <span class="o">===</span> <span class="kc">undefined</span><span class="p">)</span> <span class="p">{</span>
<span class="p">(</span><span class="nx">type</span> <span class="o">===</span> <span class="dl">'</span><span class="s1">js</span><span class="dl">'</span> <span class="p">)</span> <span class="o">&amp;&amp;</span> <span class="p">(</span><span class="nx">node</span> <span class="o">=</span> <span class="nf">createNode</span><span class="p">(</span><span class="dl">'</span><span class="s1">script</span><span class="dl">'</span><span class="p">,</span> <span class="p">{</span> <span class="na">src</span><span class="p">:</span> <span class="nx">url</span> <span class="p">}));</span>
<span class="p">(</span><span class="nx">type</span> <span class="o">===</span> <span class="dl">'</span><span class="s1">css</span><span class="dl">'</span><span class="p">)</span> <span class="o">&amp;&amp;</span> <span class="p">(</span><span class="nx">node</span> <span class="o">=</span> <span class="nf">createNode</span><span class="p">(</span><span class="dl">'</span><span class="s1">link</span><span class="dl">'</span><span class="p">,</span> <span class="p">{</span> <span class="na">rel</span><span class="p">:</span> <span class="dl">'</span><span class="s1">stylesheet</span><span class="dl">'</span><span class="p">,</span> <span class="na">href</span><span class="p">:</span> <span class="nx">url</span> <span class="p">}));</span>
<span class="k">if </span><span class="p">(</span><span class="nx">node</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">node</span><span class="p">.</span><span class="nx">onload</span> <span class="o">=</span> <span class="p">(</span><span class="kd">function</span><span class="p">(</span><span class="nx">type</span><span class="p">,</span> <span class="nx">url</span><span class="p">)</span> <span class="p">{</span>
<span class="k">return</span> <span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
<span class="nf">end</span><span class="p">(</span><span class="nx">type</span><span class="p">,</span> <span class="nx">url</span><span class="p">);</span>
<span class="p">};</span>
<span class="p">})(</span><span class="nx">type</span><span class="p">,</span> <span class="nx">url</span><span class="p">);</span>
<span class="p">(</span><span class="nx">doc</span><span class="p">.</span><span class="nx">head</span> <span class="o">||</span> <span class="nx">doc</span><span class="p">.</span><span class="nx">body</span><span class="p">).</span><span class="nf">appendChild</span><span class="p">(</span><span class="nx">node</span><span class="p">);</span>
<span class="nx">s</span><span class="p">[</span><span class="nx">url</span><span class="p">]</span> <span class="o">=</span> <span class="kc">false</span><span class="p">;</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="p">};</span>
<span class="k">return</span> <span class="p">{</span>
<span class="na">js</span><span class="p">:</span> <span class="kd">function</span><span class="p">(</span><span class="nx">url</span><span class="p">,</span> <span class="nx">callback</span><span class="p">)</span> <span class="p">{</span>
<span class="nf">load</span><span class="p">(</span><span class="dl">'</span><span class="s1">js</span><span class="dl">'</span><span class="p">,</span> <span class="nx">url</span><span class="p">,</span> <span class="nx">callback</span><span class="p">);</span>
<span class="p">},</span>
<span class="na">css</span><span class="p">:</span> <span class="kd">function</span><span class="p">(</span><span class="nx">url</span><span class="p">,</span> <span class="nx">callback</span><span class="p">)</span> <span class="p">{</span>
<span class="nf">load</span><span class="p">(</span><span class="dl">'</span><span class="s1">css</span><span class="dl">'</span><span class="p">,</span> <span class="nx">url</span><span class="p">,</span> <span class="nx">callback</span><span class="p">);</span>
<span class="p">}</span>
<span class="p">};</span>
<span class="p">})(</span><span class="k">this</span><span class="p">.</span><span class="nb">document</span><span class="p">);</span>
<span class="p">})();</span>
<span class="nt">&lt;/script&gt;&lt;script&gt;</span>
<span class="p">(</span><span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">TEXT_VARIABLES</span> <span class="o">=</span> <span class="p">{</span>
<span class="na">version</span><span class="p">:</span> <span class="dl">'</span><span class="s1">2.2.6</span><span class="dl">'</span><span class="p">,</span>
<span class="na">sources</span><span class="p">:</span> <span class="p">{</span>
<span class="na">font_awesome</span><span class="p">:</span> <span class="dl">'</span><span class="s1">https://use.fontawesome.com/releases/v5.0.13/css/all.css</span><span class="dl">'</span><span class="p">,</span>
<span class="na">jquery</span><span class="p">:</span> <span class="dl">'</span><span class="s1">/assets/js/jquery.min.js</span><span class="dl">'</span><span class="p">,</span>
<span class="na">leancloud_js_sdk</span><span class="p">:</span> <span class="dl">'</span><span class="s1">//cdn.jsdelivr.net/npm/leancloud-storage@3.13.2/dist/av-min.js</span><span class="dl">'</span><span class="p">,</span>
<span class="na">chart</span><span class="p">:</span> <span class="dl">'</span><span class="s1">https://cdn.bootcss.com/Chart.js/2.7.2/Chart.bundle.min.js</span><span class="dl">'</span><span class="p">,</span>
<span class="na">gitalk</span><span class="p">:</span> <span class="p">{</span>
<span class="na">js</span><span class="p">:</span> <span class="dl">'</span><span class="s1">https://cdn.bootcss.com/gitalk/1.2.2/gitalk.min.js</span><span class="dl">'</span><span class="p">,</span>
<span class="na">css</span><span class="p">:</span> <span class="dl">'</span><span class="s1">https://cdn.bootcss.com/gitalk/1.2.2/gitalk.min.css</span><span class="dl">'</span>
<span class="p">},</span>
<span class="na">valine</span><span class="p">:</span> <span class="dl">'</span><span class="s1">https://unpkg.com/valine/dist/Valine.min.js</span><span class="dl">'</span>
<span class="p">},</span>
<span class="na">site</span><span class="p">:</span> <span class="p">{</span>
<span class="na">toc</span><span class="p">:</span> <span class="p">{</span>
<span class="na">selectors</span><span class="p">:</span> <span class="dl">'</span><span class="s1">h1,h2,h3</span><span class="dl">'</span>
<span class="p">}</span>
<span class="p">},</span>
<span class="na">paths</span><span class="p">:</span> <span class="p">{</span>
<span class="na">search_js</span><span class="p">:</span> <span class="dl">'</span><span class="s1">/assets/search.js</span><span class="dl">'</span>
<span class="p">}</span>
<span class="p">};</span>
<span class="nb">window</span><span class="p">.</span><span class="nx">TEXT_VARIABLES</span> <span class="o">=</span> <span class="nx">TEXT_VARIABLES</span><span class="p">;</span>
<span class="p">})();</span>
<span class="nt">&lt;/script&gt;</span>
<span class="nt">&lt;/head&gt;</span>
<span class="nt">&lt;body&gt;</span>
<span class="nt">&lt;div</span> <span class="na">class=</span><span class="s">"root"</span> <span class="na">data-is-touch=</span><span class="s">"false"</span><span class="nt">&gt;</span>
<span class="nt">&lt;div</span> <span class="na">class=</span><span class="s">"layout--page js-page-root"</span><span class="nt">&gt;</span><span class="c">&lt;!----&gt;</span><span class="nt">&lt;div</span> <span class="na">class=</span><span class="s">"page__main js-page-main page__viewport hide-footer has-aside has-aside cell cell--auto"</span><span class="nt">&gt;</span>
<span class="nt">&lt;div</span> <span class="na">class=</span><span class="s">"page__main-inner"</span><span class="nt">&gt;&lt;div</span> <span class="na">class=</span><span class="s">"page__header d-print-none"</span><span class="nt">&gt;&lt;header</span> <span class="na">class=</span><span class="s">"header"</span><span class="nt">&gt;&lt;div</span> <span class="na">class=</span><span class="s">"main"</span><span class="nt">&gt;</span>
<span class="nt">&lt;div</span> <span class="na">class=</span><span class="s">"header__title"</span><span class="nt">&gt;</span>
<span class="nt">&lt;div</span> <span class="na">class=</span><span class="s">"header__brand"</span><span class="nt">&gt;&lt;svg</span> <span class="na">id=</span><span class="s">"svg"</span> <span class="na">version=</span><span class="s">"1.1"</span> <span class="na">xmlns=</span><span class="s">"http://www.w3.org/2000/svg"</span> <span class="na">xmlns:xlink=</span><span class="s">"http://www.w3.org/1999/xlink"</span> <span class="na">width=</span><span class="s">"400"</span> <span class="na">height=</span><span class="s">"478.9473684210526"</span> <span class="na">viewBox=</span><span class="s">"0, 0, 400,478.9473684210526"</span><span class="nt">&gt;&lt;g</span> <span class="na">id=</span><span class="s">"svgg"</span><span class="nt">&gt;&lt;path</span> <span class="na">id=</span><span class="s">"path0"</span> <span class="na">d=</span><span class="s">"M308.400 56.805 C 306.970 56.966,303.280 57.385,300.200 57.738 C 290.906 58.803,278.299 59.676,269.200 59.887 L 260.600 60.085 259.400 61.171 C 258.010 62.428,256.198 63.600,255.645 63.600 C 255.070 63.600,252.887 65.897,252.598 66.806 C 252.460 67.243,252.206 67.600,252.034 67.600 C 251.397 67.600,247.206 71.509,247.202 72.107 C 247.201 72.275,246.390 73.190,245.400 74.138 C 243.961 75.517,243.598 76.137,243.592 77.231 C 243.579 79.293,241.785 83.966,240.470 85.364 C 239.176 86.740,238.522 88.365,237.991 91.521 C 237.631 93.665,236.114 97.200,235.554 97.200 C 234.938 97.200,232.737 102.354,232.450 104.472 C 232.158 106.625,230.879 109.226,229.535 110.400 C 228.933 110.926,228.171 113.162,226.434 119.500 C 226.178 120.435,225.795 121.200,225.584 121.200 C 225.373 121.200,225.200 121.476,225.200 121.813 C 225.200 122.149,224.885 122.541,224.500 122.683 C 223.606 123.013,223.214 123.593,223.204 124.600 C 223.183 126.555,220.763 132.911,219.410 134.562 C 218.443 135.742,217.876 136.956,217.599 138.440 C 217.041 141.424,215.177 146.434,214.532 146.681 C 214.240 146.794,214.000 147.055,214.000 147.261 C 214.000 147.467,213.550 148.086,213.000 148.636 C 212.450 149.186,212.000 149.893,212.000 150.208 C 212.000 151.386,208.441 154.450,207.597 153.998 C 206.319 153.315,204.913 150.379,204.633 147.811 C 204.365 145.357,202.848 142.147,201.759 141.729 C 200.967 141.425,199.200 137.451,199.200 135.974 C 199.200 134.629,198.435 133.224,196.660 131.311 C 195.363 129.913,194.572 128.123,193.870 125.000 C 193.623 123.900,193.236 122.793,193.010 122.540 C 190.863 120.133,190.147 118.880,188.978 115.481 C 188.100 112.928,187.151 111.003,186.254 109.955 C 185.358 108.908,184.518 107.204,183.847 105.073 C 183.280 103.273,182.497 101.329,182.108 100.753 C 181.719 100.177,180.904 98.997,180.298 98.131 C 179.693 97.265,178.939 95.576,178.624 94.378 C 178.041 92.159,177.125 90.326,175.023 87.168 C 174.375 86.196,173.619 84.539,173.342 83.486 C 172.800 81.429,171.529 79.567,170.131 78.785 C 169.654 78.517,168.697 77.511,168.006 76.549 C 167.316 75.587,166.594 74.800,166.402 74.800 C 166.210 74.800,164.869 73.633,163.421 72.206 C 160.103 68.936,161.107 69.109,146.550 69.301 C 133.437 69.474,128.581 70.162,126.618 72.124 C 126.248 72.495,125.462 72.904,124.872 73.033 C 124.282 73.163,123.088 73.536,122.219 73.863 C 121.349 74.191,119.028 74.638,117.061 74.858 C 113.514 75.254,109.970 76.350,108.782 77.419 C 107.652 78.436,100.146 80.400,97.388 80.400 C 95.775 80.400,93.167 81.360,91.200 82.679 C 90.430 83.195,89.113 83.804,88.274 84.031 C 85.875 84.681,78.799 90.910,74.400 96.243 L 73.400 97.456 73.455 106.028 C 73.526 117.055,74.527 121.238,77.820 124.263 C 78.919 125.273,80.400 127.902,80.400 128.842 C 80.400 129.202,81.075 130.256,81.900 131.186 C 83.563 133.059,85.497 136.346,86.039 138.216 C 86.233 138.886,87.203 140.207,88.196 141.153 C 89.188 142.098,90.000 143.104,90.000 143.388 C 90.000 144.337,92.129 148.594,92.869 149.123 C 93.271 149.410,93.600 149.831,93.600 150.059 C 93.600 150.286,93.932 150.771,94.337 151.136 C 94.743 151.501,95.598 153.004,96.237 154.475 C 96.877 155.947,97.760 157.351,98.200 157.596 C 98.640 157.841,99.900 159.943,101.000 162.267 C 102.207 164.817,10
"</span> <span class="na">href=</span><span class="s">"/"</span><span class="nt">&gt;</span>YannStatic<span class="nt">&lt;/a&gt;&lt;/div&gt;</span><span class="c">&lt;!--&lt;button class="button button--secondary button--circle search-button js-search-toggle"&gt;&lt;i class="fas fa-search"&gt;&lt;/i&gt;&lt;/button&gt;--&gt;&lt;!-- &lt;li&gt;&lt;button class="button button--secondary button--circle search-button js-search-toggle"&gt;&lt;i class="fas fa-search"&gt;&lt;/i&gt;&lt;/button&gt;&lt;/li&gt; --&gt;</span>
<span class="c">&lt;!-- Champ de recherche --&gt;</span>
<span class="nt">&lt;div</span> <span class="na">id=</span><span class="s">"searchbox"</span> <span class="na">class=</span><span class="s">"search search--dark"</span> <span class="na">style=</span><span class="s">"visibility: visible"</span><span class="nt">&gt;</span>
<span class="nt">&lt;div</span> <span class="na">class=</span><span class="s">"main"</span><span class="nt">&gt;</span>
<span class="nt">&lt;div</span> <span class="na">class=</span><span class="s">"search__header"</span><span class="nt">&gt;&lt;/div&gt;</span>
<span class="nt">&lt;div</span> <span class="na">class=</span><span class="s">"search-bar"</span><span class="nt">&gt;</span>
<span class="nt">&lt;div</span> <span class="na">class=</span><span class="s">"search-box js-search-box"</span><span class="nt">&gt;</span>
<span class="nt">&lt;div</span> <span class="na">class=</span><span class="s">"search-box__icon-search"</span><span class="nt">&gt;&lt;i</span> <span class="na">class=</span><span class="s">"fas fa-search"</span><span class="nt">&gt;&lt;/i&gt;&lt;/div&gt;</span>
<span class="nt">&lt;input</span> <span class="na">id=</span><span class="s">"search-input"</span> <span class="na">type=</span><span class="s">"text"</span> <span class="nt">/&gt;</span>
<span class="c">&lt;!-- &lt;div class="search-box__icon-clear js-icon-clear"&gt;
&lt;a&gt;&lt;i class="fas fa-times"&gt;&lt;/i&gt;&lt;/a&gt;
&lt;/div&gt; --&gt;</span>
<span class="nt">&lt;/div&gt;</span>
<span class="nt">&lt;/div&gt;</span>
<span class="nt">&lt;/div&gt;</span>
<span class="nt">&lt;/div&gt;</span>
<span class="c">&lt;!-- Script pointing to search-script.js --&gt;</span>
<span class="nt">&lt;script&gt;</span><span class="cm">/*!
* Simple-Jekyll-Search
* Copyright 2015-2020, Christian Fei
* Licensed under the MIT License.
*/</span>
<span class="p">(</span><span class="kd">function</span><span class="p">(){</span>
<span class="dl">'</span><span class="s1">use strict</span><span class="dl">'</span>
<span class="kd">var</span> <span class="nx">_$Templater_7</span> <span class="o">=</span> <span class="p">{</span>
<span class="na">compile</span><span class="p">:</span> <span class="nx">compile</span><span class="p">,</span>
<span class="na">setOptions</span><span class="p">:</span> <span class="nx">setOptions</span>
<span class="p">}</span>
<span class="kd">const</span> <span class="nx">options</span> <span class="o">=</span> <span class="p">{}</span>
<span class="nx">options</span><span class="p">.</span><span class="nx">pattern</span> <span class="o">=</span> <span class="sr">/</span><span class="se">\{(</span><span class="sr">.*</span><span class="se">?)\}</span><span class="sr">/g</span>
<span class="nx">options</span><span class="p">.</span><span class="nx">template</span> <span class="o">=</span> <span class="dl">''</span>
<span class="nx">options</span><span class="p">.</span><span class="nx">middleware</span> <span class="o">=</span> <span class="nf">function </span><span class="p">()</span> <span class="p">{}</span>
<span class="kd">function</span> <span class="nf">setOptions</span> <span class="p">(</span><span class="nx">_options</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">options</span><span class="p">.</span><span class="nx">pattern</span> <span class="o">=</span> <span class="nx">_options</span><span class="p">.</span><span class="nx">pattern</span> <span class="o">||</span> <span class="nx">options</span><span class="p">.</span><span class="nx">pattern</span>
<span class="nx">options</span><span class="p">.</span><span class="nx">template</span> <span class="o">=</span> <span class="nx">_options</span><span class="p">.</span><span class="nx">template</span> <span class="o">||</span> <span class="nx">options</span><span class="p">.</span><span class="nx">template</span>
<span class="k">if </span><span class="p">(</span><span class="k">typeof</span> <span class="nx">_options</span><span class="p">.</span><span class="nx">middleware</span> <span class="o">===</span> <span class="dl">'</span><span class="s1">function</span><span class="dl">'</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">options</span><span class="p">.</span><span class="nx">middleware</span> <span class="o">=</span> <span class="nx">_options</span><span class="p">.</span><span class="nx">middleware</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="kd">function</span> <span class="nf">compile</span> <span class="p">(</span><span class="nx">data</span><span class="p">)</span> <span class="p">{</span>
<span class="k">return</span> <span class="nx">options</span><span class="p">.</span><span class="nx">template</span><span class="p">.</span><span class="nf">replace</span><span class="p">(</span><span class="nx">options</span><span class="p">.</span><span class="nx">pattern</span><span class="p">,</span> <span class="nf">function </span><span class="p">(</span><span class="nx">match</span><span class="p">,</span> <span class="nx">prop</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">const</span> <span class="nx">value</span> <span class="o">=</span> <span class="nx">options</span><span class="p">.</span><span class="nf">middleware</span><span class="p">(</span><span class="nx">prop</span><span class="p">,</span> <span class="nx">data</span><span class="p">[</span><span class="nx">prop</span><span class="p">],</span> <span class="nx">options</span><span class="p">.</span><span class="nx">template</span><span class="p">)</span>
<span class="k">if </span><span class="p">(</span><span class="k">typeof</span> <span class="nx">value</span> <span class="o">!==</span> <span class="dl">'</span><span class="s1">undefined</span><span class="dl">'</span><span class="p">)</span> <span class="p">{</span>
<span class="k">return</span> <span class="nx">value</span>
<span class="p">}</span>
<span class="k">return</span> <span class="nx">data</span><span class="p">[</span><span class="nx">prop</span><span class="p">]</span> <span class="o">||</span> <span class="nx">match</span>
<span class="p">})</span>
<span class="p">}</span>
<span class="dl">'</span><span class="s1">use strict</span><span class="dl">'</span><span class="p">;</span>
<span class="kd">function</span> <span class="nf">fuzzysearch</span> <span class="p">(</span><span class="nx">needle</span><span class="p">,</span> <span class="nx">haystack</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">tlen</span> <span class="o">=</span> <span class="nx">haystack</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span>
<span class="kd">var</span> <span class="nx">qlen</span> <span class="o">=</span> <span class="nx">needle</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span>
<span class="k">if </span><span class="p">(</span><span class="nx">qlen</span> <span class="o">&gt;</span> <span class="nx">tlen</span><span class="p">)</span> <span class="p">{</span>
<span class="k">return</span> <span class="kc">false</span><span class="p">;</span>
<span class="p">}</span>
<span class="k">if </span><span class="p">(</span><span class="nx">qlen</span> <span class="o">===</span> <span class="nx">tlen</span><span class="p">)</span> <span class="p">{</span>
<span class="k">return</span> <span class="nx">needle</span> <span class="o">===</span> <span class="nx">haystack</span><span class="p">;</span>
<span class="p">}</span>
<span class="nl">outer</span><span class="p">:</span> <span class="k">for</span> <span class="p">(</span><span class="kd">var</span> <span class="nx">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span> <span class="nx">j</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">i</span> <span class="o">&lt;</span> <span class="nx">qlen</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">nch</span> <span class="o">=</span> <span class="nx">needle</span><span class="p">.</span><span class="nf">charCodeAt</span><span class="p">(</span><span class="nx">i</span><span class="p">);</span>
<span class="k">while</span> <span class="p">(</span><span class="nx">j</span> <span class="o">&lt;</span> <span class="nx">tlen</span><span class="p">)</span> <span class="p">{</span>
<span class="k">if </span><span class="p">(</span><span class="nx">haystack</span><span class="p">.</span><span class="nf">charCodeAt</span><span class="p">(</span><span class="nx">j</span><span class="o">++</span><span class="p">)</span> <span class="o">===</span> <span class="nx">nch</span><span class="p">)</span> <span class="p">{</span>
<span class="k">continue</span> <span class="nx">outer</span><span class="p">;</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="k">return</span> <span class="kc">false</span><span class="p">;</span>
<span class="p">}</span>
<span class="k">return</span> <span class="kc">true</span><span class="p">;</span>
<span class="p">}</span>
<span class="kd">var</span> <span class="nx">_$fuzzysearch_1</span> <span class="o">=</span> <span class="nx">fuzzysearch</span><span class="p">;</span>
<span class="dl">'</span><span class="s1">use strict</span><span class="dl">'</span>
<span class="cm">/* removed: const _$fuzzysearch_1 = require('fuzzysearch') */</span><span class="p">;</span>
<span class="kd">var</span> <span class="nx">_$FuzzySearchStrategy_5</span> <span class="o">=</span> <span class="k">new</span> <span class="nc">FuzzySearchStrategy</span><span class="p">()</span>
<span class="kd">function</span> <span class="nf">FuzzySearchStrategy</span> <span class="p">()</span> <span class="p">{</span>
<span class="k">this</span><span class="p">.</span><span class="nx">matches</span> <span class="o">=</span> <span class="nf">function </span><span class="p">(</span><span class="nx">string</span><span class="p">,</span> <span class="nx">crit</span><span class="p">)</span> <span class="p">{</span>
<span class="k">return</span> <span class="nx">_</span><span class="nf">$fuzzysearch_1</span><span class="p">(</span><span class="nx">crit</span><span class="p">.</span><span class="nf">toLowerCase</span><span class="p">(),</span> <span class="nx">string</span><span class="p">.</span><span class="nf">toLowerCase</span><span class="p">())</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="dl">'</span><span class="s1">use strict</span><span class="dl">'</span>
<span class="kd">var</span> <span class="nx">_$LiteralSearchStrategy_6</span> <span class="o">=</span> <span class="k">new</span> <span class="nc">LiteralSearchStrategy</span><span class="p">()</span>
<span class="kd">function</span> <span class="nf">LiteralSearchStrategy</span> <span class="p">()</span> <span class="p">{</span>
<span class="k">this</span><span class="p">.</span><span class="nx">matches</span> <span class="o">=</span> <span class="nf">function </span><span class="p">(</span><span class="nx">str</span><span class="p">,</span> <span class="nx">crit</span><span class="p">)</span> <span class="p">{</span>
<span class="k">if </span><span class="p">(</span><span class="o">!</span><span class="nx">str</span><span class="p">)</span> <span class="k">return</span> <span class="kc">false</span>
<span class="nx">str</span> <span class="o">=</span> <span class="nx">str</span><span class="p">.</span><span class="nf">trim</span><span class="p">().</span><span class="nf">toLowerCase</span><span class="p">()</span>
<span class="nx">crit</span> <span class="o">=</span> <span class="nx">crit</span><span class="p">.</span><span class="nf">trim</span><span class="p">().</span><span class="nf">toLowerCase</span><span class="p">()</span>
<span class="k">return</span> <span class="nx">crit</span><span class="p">.</span><span class="nf">split</span><span class="p">(</span><span class="dl">'</span><span class="s1"> </span><span class="dl">'</span><span class="p">).</span><span class="nf">filter</span><span class="p">(</span><span class="nf">function </span><span class="p">(</span><span class="nx">word</span><span class="p">)</span> <span class="p">{</span>
<span class="k">return</span> <span class="nx">str</span><span class="p">.</span><span class="nf">indexOf</span><span class="p">(</span><span class="nx">word</span><span class="p">)</span> <span class="o">&gt;=</span> <span class="mi">0</span>
<span class="p">}).</span><span class="nx">length</span> <span class="o">===</span> <span class="nx">crit</span><span class="p">.</span><span class="nf">split</span><span class="p">(</span><span class="dl">'</span><span class="s1"> </span><span class="dl">'</span><span class="p">).</span><span class="nx">length</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="dl">'</span><span class="s1">use strict</span><span class="dl">'</span>
<span class="kd">var</span> <span class="nx">_$Repository_4</span> <span class="o">=</span> <span class="p">{</span>
<span class="na">put</span><span class="p">:</span> <span class="nx">put</span><span class="p">,</span>
<span class="na">clear</span><span class="p">:</span> <span class="nx">clear</span><span class="p">,</span>
<span class="na">search</span><span class="p">:</span> <span class="nx">search</span><span class="p">,</span>
<span class="na">setOptions</span><span class="p">:</span> <span class="nx">__setOptions_4</span>
<span class="p">}</span>
<span class="cm">/* removed: const _$FuzzySearchStrategy_5 = require('./SearchStrategies/FuzzySearchStrategy') */</span><span class="p">;</span>
<span class="cm">/* removed: const _$LiteralSearchStrategy_6 = require('./SearchStrategies/LiteralSearchStrategy') */</span><span class="p">;</span>
<span class="kd">function</span> <span class="nf">NoSort</span> <span class="p">()</span> <span class="p">{</span>
<span class="k">return</span> <span class="mi">0</span>
<span class="p">}</span>
<span class="kd">const</span> <span class="nx">data</span> <span class="o">=</span> <span class="p">[]</span>
<span class="kd">let</span> <span class="nx">opt</span> <span class="o">=</span> <span class="p">{}</span>
<span class="nx">opt</span><span class="p">.</span><span class="nx">fuzzy</span> <span class="o">=</span> <span class="kc">false</span>
<span class="nx">opt</span><span class="p">.</span><span class="nx">limit</span> <span class="o">=</span> <span class="mi">10</span>
<span class="nx">opt</span><span class="p">.</span><span class="nx">searchStrategy</span> <span class="o">=</span> <span class="nx">opt</span><span class="p">.</span><span class="nx">fuzzy</span> <span class="p">?</span> <span class="nx">_$FuzzySearchStrategy_5</span> <span class="p">:</span> <span class="nx">_$LiteralSearchStrategy_6</span>
<span class="nx">opt</span><span class="p">.</span><span class="nx">sort</span> <span class="o">=</span> <span class="nx">NoSort</span>
<span class="nx">opt</span><span class="p">.</span><span class="nx">exclude</span> <span class="o">=</span> <span class="p">[]</span>
<span class="kd">function</span> <span class="nf">put</span> <span class="p">(</span><span class="nx">data</span><span class="p">)</span> <span class="p">{</span>
<span class="k">if </span><span class="p">(</span><span class="nf">isObject</span><span class="p">(</span><span class="nx">data</span><span class="p">))</span> <span class="p">{</span>
<span class="k">return</span> <span class="nf">addObject</span><span class="p">(</span><span class="nx">data</span><span class="p">)</span>
<span class="p">}</span>
<span class="k">if </span><span class="p">(</span><span class="nf">isArray</span><span class="p">(</span><span class="nx">data</span><span class="p">))</span> <span class="p">{</span>
<span class="k">return</span> <span class="nf">addArray</span><span class="p">(</span><span class="nx">data</span><span class="p">)</span>
<span class="p">}</span>
<span class="k">return</span> <span class="kc">undefined</span>
<span class="p">}</span>
<span class="kd">function</span> <span class="nf">clear</span> <span class="p">()</span> <span class="p">{</span>
<span class="nx">data</span><span class="p">.</span><span class="nx">length</span> <span class="o">=</span> <span class="mi">0</span>
<span class="k">return</span> <span class="nx">data</span>
<span class="p">}</span>
<span class="kd">function</span> <span class="nf">isObject</span> <span class="p">(</span><span class="nx">obj</span><span class="p">)</span> <span class="p">{</span>
<span class="k">return</span> <span class="nc">Boolean</span><span class="p">(</span><span class="nx">obj</span><span class="p">)</span> <span class="o">&amp;&amp;</span> <span class="nb">Object</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">toString</span><span class="p">.</span><span class="nf">call</span><span class="p">(</span><span class="nx">obj</span><span class="p">)</span> <span class="o">===</span> <span class="dl">'</span><span class="s1">[object Object]</span><span class="dl">'</span>
<span class="p">}</span>
<span class="kd">function</span> <span class="nf">isArray</span> <span class="p">(</span><span class="nx">obj</span><span class="p">)</span> <span class="p">{</span>
<span class="k">return</span> <span class="nc">Boolean</span><span class="p">(</span><span class="nx">obj</span><span class="p">)</span> <span class="o">&amp;&amp;</span> <span class="nb">Object</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">toString</span><span class="p">.</span><span class="nf">call</span><span class="p">(</span><span class="nx">obj</span><span class="p">)</span> <span class="o">===</span> <span class="dl">'</span><span class="s1">[object Array]</span><span class="dl">'</span>
<span class="p">}</span>
<span class="kd">function</span> <span class="nf">addObject</span> <span class="p">(</span><span class="nx">_data</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">data</span><span class="p">.</span><span class="nf">push</span><span class="p">(</span><span class="nx">_data</span><span class="p">)</span>
<span class="k">return</span> <span class="nx">data</span>
<span class="p">}</span>
<span class="kd">function</span> <span class="nf">addArray</span> <span class="p">(</span><span class="nx">_data</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">const</span> <span class="nx">added</span> <span class="o">=</span> <span class="p">[]</span>
<span class="nf">clear</span><span class="p">()</span>
<span class="k">for</span> <span class="p">(</span><span class="kd">let</span> <span class="nx">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span> <span class="nx">len</span> <span class="o">=</span> <span class="nx">_data</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span> <span class="nx">i</span> <span class="o">&lt;</span> <span class="nx">len</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
<span class="k">if </span><span class="p">(</span><span class="nf">isObject</span><span class="p">(</span><span class="nx">_data</span><span class="p">[</span><span class="nx">i</span><span class="p">]))</span> <span class="p">{</span>
<span class="nx">added</span><span class="p">.</span><span class="nf">push</span><span class="p">(</span><span class="nf">addObject</span><span class="p">(</span><span class="nx">_data</span><span class="p">[</span><span class="nx">i</span><span class="p">]))</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="k">return</span> <span class="nx">added</span>
<span class="p">}</span>
<span class="kd">function</span> <span class="nf">search</span> <span class="p">(</span><span class="nx">crit</span><span class="p">)</span> <span class="p">{</span>
<span class="k">if </span><span class="p">(</span><span class="o">!</span><span class="nx">crit</span><span class="p">)</span> <span class="p">{</span>
<span class="k">return</span> <span class="p">[]</span>
<span class="p">}</span>
<span class="k">return</span> <span class="nf">findMatches</span><span class="p">(</span><span class="nx">data</span><span class="p">,</span> <span class="nx">crit</span><span class="p">,</span> <span class="nx">opt</span><span class="p">.</span><span class="nx">searchStrategy</span><span class="p">,</span> <span class="nx">opt</span><span class="p">).</span><span class="nf">sort</span><span class="p">(</span><span class="nx">opt</span><span class="p">.</span><span class="nx">sort</span><span class="p">)</span>
<span class="p">}</span>
<span class="kd">function</span> <span class="nf">__setOptions_4</span> <span class="p">(</span><span class="nx">_opt</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">opt</span> <span class="o">=</span> <span class="nx">_opt</span> <span class="o">||</span> <span class="p">{}</span>
<span class="nx">opt</span><span class="p">.</span><span class="nx">fuzzy</span> <span class="o">=</span> <span class="nx">_opt</span><span class="p">.</span><span class="nx">fuzzy</span> <span class="o">||</span> <span class="kc">false</span>
<span class="nx">opt</span><span class="p">.</span><span class="nx">limit</span> <span class="o">=</span> <span class="nx">_opt</span><span class="p">.</span><span class="nx">limit</span> <span class="o">||</span> <span class="mi">10</span>
<span class="nx">opt</span><span class="p">.</span><span class="nx">searchStrategy</span> <span class="o">=</span> <span class="nx">_opt</span><span class="p">.</span><span class="nx">fuzzy</span> <span class="p">?</span> <span class="nx">_$FuzzySearchStrategy_5</span> <span class="p">:</span> <span class="nx">_$LiteralSearchStrategy_6</span>
<span class="nx">opt</span><span class="p">.</span><span class="nx">sort</span> <span class="o">=</span> <span class="nx">_opt</span><span class="p">.</span><span class="nx">sort</span> <span class="o">||</span> <span class="nx">NoSort</span>
<span class="nx">opt</span><span class="p">.</span><span class="nx">exclude</span> <span class="o">=</span> <span class="nx">_opt</span><span class="p">.</span><span class="nx">exclude</span> <span class="o">||</span> <span class="p">[]</span>
<span class="p">}</span>
<span class="kd">function</span> <span class="nf">findMatches</span> <span class="p">(</span><span class="nx">data</span><span class="p">,</span> <span class="nx">crit</span><span class="p">,</span> <span class="nx">strategy</span><span class="p">,</span> <span class="nx">opt</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">const</span> <span class="nx">matches</span> <span class="o">=</span> <span class="p">[]</span>
<span class="k">for</span> <span class="p">(</span><span class="kd">let</span> <span class="nx">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">i</span> <span class="o">&lt;</span> <span class="nx">data</span><span class="p">.</span><span class="nx">length</span> <span class="o">&amp;&amp;</span> <span class="nx">matches</span><span class="p">.</span><span class="nx">length</span> <span class="o">&lt;</span> <span class="nx">opt</span><span class="p">.</span><span class="nx">limit</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">const</span> <span class="nx">match</span> <span class="o">=</span> <span class="nf">findMatchesInObject</span><span class="p">(</span><span class="nx">data</span><span class="p">[</span><span class="nx">i</span><span class="p">],</span> <span class="nx">crit</span><span class="p">,</span> <span class="nx">strategy</span><span class="p">,</span> <span class="nx">opt</span><span class="p">)</span>
<span class="k">if </span><span class="p">(</span><span class="nx">match</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">matches</span><span class="p">.</span><span class="nf">push</span><span class="p">(</span><span class="nx">match</span><span class="p">)</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="k">return</span> <span class="nx">matches</span>
<span class="p">}</span>
<span class="kd">function</span> <span class="nf">findMatchesInObject</span> <span class="p">(</span><span class="nx">obj</span><span class="p">,</span> <span class="nx">crit</span><span class="p">,</span> <span class="nx">strategy</span><span class="p">,</span> <span class="nx">opt</span><span class="p">)</span> <span class="p">{</span>
<span class="k">for </span><span class="p">(</span><span class="kd">const</span> <span class="nx">key</span> <span class="k">in</span> <span class="nx">obj</span><span class="p">)</span> <span class="p">{</span>
<span class="k">if </span><span class="p">(</span><span class="o">!</span><span class="nf">isExcluded</span><span class="p">(</span><span class="nx">obj</span><span class="p">[</span><span class="nx">key</span><span class="p">],</span> <span class="nx">opt</span><span class="p">.</span><span class="nx">exclude</span><span class="p">)</span> <span class="o">&amp;&amp;</span> <span class="nx">strategy</span><span class="p">.</span><span class="nf">matches</span><span class="p">(</span><span class="nx">obj</span><span class="p">[</span><span class="nx">key</span><span class="p">],</span> <span class="nx">crit</span><span class="p">))</span> <span class="p">{</span>
<span class="k">return</span> <span class="nx">obj</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="kd">function</span> <span class="nf">isExcluded</span> <span class="p">(</span><span class="nx">term</span><span class="p">,</span> <span class="nx">excludedTerms</span><span class="p">)</span> <span class="p">{</span>
<span class="k">for</span> <span class="p">(</span><span class="kd">let</span> <span class="nx">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span> <span class="nx">len</span> <span class="o">=</span> <span class="nx">excludedTerms</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span> <span class="nx">i</span> <span class="o">&lt;</span> <span class="nx">len</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">const</span> <span class="nx">excludedTerm</span> <span class="o">=</span> <span class="nx">excludedTerms</span><span class="p">[</span><span class="nx">i</span><span class="p">]</span>
<span class="k">if </span><span class="p">(</span><span class="k">new</span> <span class="nc">RegExp</span><span class="p">(</span><span class="nx">excludedTerm</span><span class="p">).</span><span class="nf">test</span><span class="p">(</span><span class="nx">term</span><span class="p">))</span> <span class="p">{</span>
<span class="k">return</span> <span class="kc">true</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="k">return</span> <span class="kc">false</span>
<span class="p">}</span>
<span class="cm">/* globals ActiveXObject:false */</span>
<span class="dl">'</span><span class="s1">use strict</span><span class="dl">'</span>
<span class="kd">var</span> <span class="nx">_$JSONLoader_2</span> <span class="o">=</span> <span class="p">{</span>
<span class="na">load</span><span class="p">:</span> <span class="nx">load</span>
<span class="p">}</span>
<span class="kd">function</span> <span class="nf">load</span> <span class="p">(</span><span class="nx">location</span><span class="p">,</span> <span class="nx">callback</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">const</span> <span class="nx">xhr</span> <span class="o">=</span> <span class="nf">getXHR</span><span class="p">()</span>
<span class="nx">xhr</span><span class="p">.</span><span class="nf">open</span><span class="p">(</span><span class="dl">'</span><span class="s1">GET</span><span class="dl">'</span><span class="p">,</span> <span class="nx">location</span><span class="p">,</span> <span class="kc">true</span><span class="p">)</span>
<span class="nx">xhr</span><span class="p">.</span><span class="nx">onreadystatechange</span> <span class="o">=</span> <span class="nf">createStateChangeListener</span><span class="p">(</span><span class="nx">xhr</span><span class="p">,</span> <span class="nx">callback</span><span class="p">)</span>
<span class="nx">xhr</span><span class="p">.</span><span class="nf">send</span><span class="p">()</span>
<span class="p">}</span>
<span class="kd">function</span> <span class="nf">createStateChangeListener</span> <span class="p">(</span><span class="nx">xhr</span><span class="p">,</span> <span class="nx">callback</span><span class="p">)</span> <span class="p">{</span>
<span class="k">return</span> <span class="nf">function </span><span class="p">()</span> <span class="p">{</span>
<span class="k">if </span><span class="p">(</span><span class="nx">xhr</span><span class="p">.</span><span class="nx">readyState</span> <span class="o">===</span> <span class="mi">4</span> <span class="o">&amp;&amp;</span> <span class="nx">xhr</span><span class="p">.</span><span class="nx">status</span> <span class="o">===</span> <span class="mi">200</span><span class="p">)</span> <span class="p">{</span>
<span class="k">try</span> <span class="p">{</span>
<span class="nf">callback</span><span class="p">(</span><span class="kc">null</span><span class="p">,</span> <span class="nx">JSON</span><span class="p">.</span><span class="nf">parse</span><span class="p">(</span><span class="nx">xhr</span><span class="p">.</span><span class="nx">responseText</span><span class="p">))</span>
<span class="p">}</span> <span class="k">catch </span><span class="p">(</span><span class="nx">err</span><span class="p">)</span> <span class="p">{</span>
<span class="nf">callback</span><span class="p">(</span><span class="nx">err</span><span class="p">,</span> <span class="kc">null</span><span class="p">)</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="kd">function</span> <span class="nf">getXHR</span> <span class="p">()</span> <span class="p">{</span>
<span class="k">return</span> <span class="nb">window</span><span class="p">.</span><span class="nx">XMLHttpRequest</span> <span class="p">?</span> <span class="k">new</span> <span class="nb">window</span><span class="p">.</span><span class="nc">XMLHttpRequest</span><span class="p">()</span> <span class="p">:</span> <span class="k">new</span> <span class="nc">ActiveXObject</span><span class="p">(</span><span class="dl">'</span><span class="s1">Microsoft.XMLHTTP</span><span class="dl">'</span><span class="p">)</span>
<span class="p">}</span>
<span class="dl">'</span><span class="s1">use strict</span><span class="dl">'</span>
<span class="kd">var</span> <span class="nx">_$OptionsValidator_3</span> <span class="o">=</span> <span class="kd">function</span> <span class="nf">OptionsValidator</span> <span class="p">(</span><span class="nx">params</span><span class="p">)</span> <span class="p">{</span>
<span class="k">if </span><span class="p">(</span><span class="o">!</span><span class="nf">validateParams</span><span class="p">(</span><span class="nx">params</span><span class="p">))</span> <span class="p">{</span>
<span class="k">throw</span> <span class="k">new</span> <span class="nc">Error</span><span class="p">(</span><span class="dl">'</span><span class="s1">-- OptionsValidator: required options missing</span><span class="dl">'</span><span class="p">)</span>
<span class="p">}</span>
<span class="k">if </span><span class="p">(</span><span class="o">!</span><span class="p">(</span><span class="k">this</span> <span class="k">instanceof</span> <span class="nx">OptionsValidator</span><span class="p">))</span> <span class="p">{</span>
<span class="k">return</span> <span class="k">new</span> <span class="nc">OptionsValidator</span><span class="p">(</span><span class="nx">params</span><span class="p">)</span>
<span class="p">}</span>
<span class="kd">const</span> <span class="nx">requiredOptions</span> <span class="o">=</span> <span class="nx">params</span><span class="p">.</span><span class="nx">required</span>
<span class="k">this</span><span class="p">.</span><span class="nx">getRequiredOptions</span> <span class="o">=</span> <span class="nf">function </span><span class="p">()</span> <span class="p">{</span>
<span class="k">return</span> <span class="nx">requiredOptions</span>
<span class="p">}</span>
<span class="k">this</span><span class="p">.</span><span class="nx">validate</span> <span class="o">=</span> <span class="nf">function </span><span class="p">(</span><span class="nx">parameters</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">const</span> <span class="nx">errors</span> <span class="o">=</span> <span class="p">[]</span>
<span class="nx">requiredOptions</span><span class="p">.</span><span class="nf">forEach</span><span class="p">(</span><span class="nf">function </span><span class="p">(</span><span class="nx">requiredOptionName</span><span class="p">)</span> <span class="p">{</span>
<span class="k">if </span><span class="p">(</span><span class="k">typeof</span> <span class="nx">parameters</span><span class="p">[</span><span class="nx">requiredOptionName</span><span class="p">]</span> <span class="o">===</span> <span class="dl">'</span><span class="s1">undefined</span><span class="dl">'</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">errors</span><span class="p">.</span><span class="nf">push</span><span class="p">(</span><span class="nx">requiredOptionName</span><span class="p">)</span>
<span class="p">}</span>
<span class="p">})</span>
<span class="k">return</span> <span class="nx">errors</span>
<span class="p">}</span>
<span class="kd">function</span> <span class="nf">validateParams</span> <span class="p">(</span><span class="nx">params</span><span class="p">)</span> <span class="p">{</span>
<span class="k">if </span><span class="p">(</span><span class="o">!</span><span class="nx">params</span><span class="p">)</span> <span class="p">{</span>
<span class="k">return</span> <span class="kc">false</span>
<span class="p">}</span>
<span class="k">return</span> <span class="k">typeof</span> <span class="nx">params</span><span class="p">.</span><span class="nx">required</span> <span class="o">!==</span> <span class="dl">'</span><span class="s1">undefined</span><span class="dl">'</span> <span class="o">&amp;&amp;</span> <span class="nx">params</span><span class="p">.</span><span class="nx">required</span> <span class="k">instanceof</span> <span class="nb">Array</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="dl">'</span><span class="s1">use strict</span><span class="dl">'</span>
<span class="kd">var</span> <span class="nx">_$utils_9</span> <span class="o">=</span> <span class="p">{</span>
<span class="na">merge</span><span class="p">:</span> <span class="nx">merge</span><span class="p">,</span>
<span class="na">isJSON</span><span class="p">:</span> <span class="nx">isJSON</span>
<span class="p">}</span>
<span class="kd">function</span> <span class="nf">merge</span> <span class="p">(</span><span class="nx">defaultParams</span><span class="p">,</span> <span class="nx">mergeParams</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">const</span> <span class="nx">mergedOptions</span> <span class="o">=</span> <span class="p">{}</span>
<span class="k">for </span><span class="p">(</span><span class="kd">const</span> <span class="nx">option</span> <span class="k">in</span> <span class="nx">defaultParams</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">mergedOptions</span><span class="p">[</span><span class="nx">option</span><span class="p">]</span> <span class="o">=</span> <span class="nx">defaultParams</span><span class="p">[</span><span class="nx">option</span><span class="p">]</span>
<span class="k">if </span><span class="p">(</span><span class="k">typeof</span> <span class="nx">mergeParams</span><span class="p">[</span><span class="nx">option</span><span class="p">]</span> <span class="o">!==</span> <span class="dl">'</span><span class="s1">undefined</span><span class="dl">'</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">mergedOptions</span><span class="p">[</span><span class="nx">option</span><span class="p">]</span> <span class="o">=</span> <span class="nx">mergeParams</span><span class="p">[</span><span class="nx">option</span><span class="p">]</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="k">return</span> <span class="nx">mergedOptions</span>
<span class="p">}</span>
<span class="kd">function</span> <span class="nf">isJSON</span> <span class="p">(</span><span class="nx">json</span><span class="p">)</span> <span class="p">{</span>
<span class="k">try</span> <span class="p">{</span>
<span class="k">if </span><span class="p">(</span><span class="nx">json</span> <span class="k">instanceof</span> <span class="nb">Object</span> <span class="o">&amp;&amp;</span> <span class="nx">JSON</span><span class="p">.</span><span class="nf">parse</span><span class="p">(</span><span class="nx">JSON</span><span class="p">.</span><span class="nf">stringify</span><span class="p">(</span><span class="nx">json</span><span class="p">)))</span> <span class="p">{</span>
<span class="k">return</span> <span class="kc">true</span>
<span class="p">}</span>
<span class="k">return</span> <span class="kc">false</span>
<span class="p">}</span> <span class="k">catch </span><span class="p">(</span><span class="nx">err</span><span class="p">)</span> <span class="p">{</span>
<span class="k">return</span> <span class="kc">false</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="kd">var</span> <span class="nx">_$src_8</span> <span class="o">=</span> <span class="p">{};</span>
<span class="p">(</span><span class="nf">function </span><span class="p">(</span><span class="nb">window</span><span class="p">)</span> <span class="p">{</span>
<span class="dl">'</span><span class="s1">use strict</span><span class="dl">'</span>
<span class="kd">let</span> <span class="nx">options</span> <span class="o">=</span> <span class="p">{</span>
<span class="na">searchInput</span><span class="p">:</span> <span class="kc">null</span><span class="p">,</span>
<span class="na">resultsContainer</span><span class="p">:</span> <span class="kc">null</span><span class="p">,</span>
<span class="na">json</span><span class="p">:</span> <span class="p">[],</span>
<span class="na">success</span><span class="p">:</span> <span class="nb">Function</span><span class="p">.</span><span class="nx">prototype</span><span class="p">,</span>
<span class="na">searchResultTemplate</span><span class="p">:</span> <span class="dl">'</span><span class="s1">&lt;li&gt;&lt;a href="{url}" title="{desc}"&gt;{title}&lt;/a&gt;&lt;/li&gt;</span><span class="dl">'</span><span class="p">,</span>
<span class="na">templateMiddleware</span><span class="p">:</span> <span class="nb">Function</span><span class="p">.</span><span class="nx">prototype</span><span class="p">,</span>
<span class="na">sortMiddleware</span><span class="p">:</span> <span class="nf">function </span><span class="p">()</span> <span class="p">{</span>
<span class="k">return</span> <span class="mi">0</span>
<span class="p">},</span>
<span class="na">noResultsText</span><span class="p">:</span> <span class="dl">'</span><span class="s1">No results found</span><span class="dl">'</span><span class="p">,</span>
<span class="na">limit</span><span class="p">:</span> <span class="mi">10</span><span class="p">,</span>
<span class="na">fuzzy</span><span class="p">:</span> <span class="kc">false</span><span class="p">,</span>
<span class="na">debounceTime</span><span class="p">:</span> <span class="kc">null</span><span class="p">,</span>
<span class="na">exclude</span><span class="p">:</span> <span class="p">[]</span>
<span class="p">}</span>
<span class="kd">let</span> <span class="nx">debounceTimerHandle</span>
<span class="kd">const</span> <span class="nx">debounce</span> <span class="o">=</span> <span class="nf">function </span><span class="p">(</span><span class="nx">func</span><span class="p">,</span> <span class="nx">delayMillis</span><span class="p">)</span> <span class="p">{</span>
<span class="k">if </span><span class="p">(</span><span class="nx">delayMillis</span><span class="p">)</span> <span class="p">{</span>
<span class="nf">clearTimeout</span><span class="p">(</span><span class="nx">debounceTimerHandle</span><span class="p">)</span>
<span class="nx">debounceTimerHandle</span> <span class="o">=</span> <span class="nf">setTimeout</span><span class="p">(</span><span class="nx">func</span><span class="p">,</span> <span class="nx">delayMillis</span><span class="p">)</span>
<span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
<span class="nx">func</span><span class="p">.</span><span class="nf">call</span><span class="p">()</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="kd">const</span> <span class="nx">requiredOptions</span> <span class="o">=</span> <span class="p">[</span><span class="dl">'</span><span class="s1">searchInput</span><span class="dl">'</span><span class="p">,</span> <span class="dl">'</span><span class="s1">resultsContainer</span><span class="dl">'</span><span class="p">,</span> <span class="dl">'</span><span class="s1">json</span><span class="dl">'</span><span class="p">]</span>
<span class="cm">/* removed: const _$Templater_7 = require('./Templater') */</span><span class="p">;</span>
<span class="cm">/* removed: const _$Repository_4 = require('./Repository') */</span><span class="p">;</span>
<span class="cm">/* removed: const _$JSONLoader_2 = require('./JSONLoader') */</span><span class="p">;</span>
<span class="kd">const</span> <span class="nx">optionsValidator</span> <span class="o">=</span> <span class="nc">_$OptionsValidator_3</span><span class="p">({</span>
<span class="na">required</span><span class="p">:</span> <span class="nx">requiredOptions</span>
<span class="p">})</span>
<span class="cm">/* removed: const _$utils_9 = require('./utils') */</span><span class="p">;</span>
<span class="nb">window</span><span class="p">.</span><span class="nx">SimpleJekyllSearch</span> <span class="o">=</span> <span class="nf">function </span><span class="p">(</span><span class="nx">_options</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">const</span> <span class="nx">errors</span> <span class="o">=</span> <span class="nx">optionsValidator</span><span class="p">.</span><span class="nf">validate</span><span class="p">(</span><span class="nx">_options</span><span class="p">)</span>
<span class="k">if </span><span class="p">(</span><span class="nx">errors</span><span class="p">.</span><span class="nx">length</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
<span class="nf">throwError</span><span class="p">(</span><span class="dl">'</span><span class="s1">You must specify the following required options: </span><span class="dl">'</span> <span class="o">+</span> <span class="nx">requiredOptions</span><span class="p">)</span>
<span class="p">}</span>
<span class="nx">options</span> <span class="o">=</span> <span class="nx">_$utils_9</span><span class="p">.</span><span class="nf">merge</span><span class="p">(</span><span class="nx">options</span><span class="p">,</span> <span class="nx">_options</span><span class="p">)</span>
<span class="nx">_$Templater_7</span><span class="p">.</span><span class="nf">setOptions</span><span class="p">({</span>
<span class="na">template</span><span class="p">:</span> <span class="nx">options</span><span class="p">.</span><span class="nx">searchResultTemplate</span><span class="p">,</span>
<span class="na">middleware</span><span class="p">:</span> <span class="nx">options</span><span class="p">.</span><span class="nx">templateMiddleware</span>
<span class="p">})</span>
<span class="nx">_$Repository_4</span><span class="p">.</span><span class="nf">setOptions</span><span class="p">({</span>
<span class="na">fuzzy</span><span class="p">:</span> <span class="nx">options</span><span class="p">.</span><span class="nx">fuzzy</span><span class="p">,</span>
<span class="na">limit</span><span class="p">:</span> <span class="nx">options</span><span class="p">.</span><span class="nx">limit</span><span class="p">,</span>
<span class="na">sort</span><span class="p">:</span> <span class="nx">options</span><span class="p">.</span><span class="nx">sortMiddleware</span><span class="p">,</span>
<span class="na">exclude</span><span class="p">:</span> <span class="nx">options</span><span class="p">.</span><span class="nx">exclude</span>
<span class="p">})</span>
<span class="k">if </span><span class="p">(</span><span class="nx">_$utils_9</span><span class="p">.</span><span class="nf">isJSON</span><span class="p">(</span><span class="nx">options</span><span class="p">.</span><span class="nx">json</span><span class="p">))</span> <span class="p">{</span>
<span class="nf">initWithJSON</span><span class="p">(</span><span class="nx">options</span><span class="p">.</span><span class="nx">json</span><span class="p">)</span>
<span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
<span class="nf">initWithURL</span><span class="p">(</span><span class="nx">options</span><span class="p">.</span><span class="nx">json</span><span class="p">)</span>
<span class="p">}</span>
<span class="kd">const</span> <span class="nx">rv</span> <span class="o">=</span> <span class="p">{</span>
<span class="na">search</span><span class="p">:</span> <span class="nx">search</span>
<span class="p">}</span>
<span class="k">typeof</span> <span class="nx">options</span><span class="p">.</span><span class="nx">success</span> <span class="o">===</span> <span class="dl">'</span><span class="s1">function</span><span class="dl">'</span> <span class="o">&amp;&amp;</span> <span class="nx">options</span><span class="p">.</span><span class="nx">success</span><span class="p">.</span><span class="nf">call</span><span class="p">(</span><span class="nx">rv</span><span class="p">)</span>
<span class="k">return</span> <span class="nx">rv</span>
<span class="p">}</span>
<span class="kd">function</span> <span class="nf">initWithJSON</span> <span class="p">(</span><span class="nx">json</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">_$Repository_4</span><span class="p">.</span><span class="nf">put</span><span class="p">(</span><span class="nx">json</span><span class="p">)</span>
<span class="nf">registerInput</span><span class="p">()</span>
<span class="p">}</span>
<span class="kd">function</span> <span class="nf">initWithURL</span> <span class="p">(</span><span class="nx">url</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">_$JSONLoader_2</span><span class="p">.</span><span class="nf">load</span><span class="p">(</span><span class="nx">url</span><span class="p">,</span> <span class="nf">function </span><span class="p">(</span><span class="nx">err</span><span class="p">,</span> <span class="nx">json</span><span class="p">)</span> <span class="p">{</span>
<span class="k">if </span><span class="p">(</span><span class="nx">err</span><span class="p">)</span> <span class="p">{</span>
<span class="nf">throwError</span><span class="p">(</span><span class="dl">'</span><span class="s1">failed to get JSON (</span><span class="dl">'</span> <span class="o">+</span> <span class="nx">url</span> <span class="o">+</span> <span class="dl">'</span><span class="s1">)</span><span class="dl">'</span><span class="p">)</span>
<span class="p">}</span>
<span class="nf">initWithJSON</span><span class="p">(</span><span class="nx">json</span><span class="p">)</span>
<span class="p">})</span>
<span class="p">}</span>
<span class="kd">function</span> <span class="nf">emptyResultsContainer</span> <span class="p">()</span> <span class="p">{</span>
<span class="nx">options</span><span class="p">.</span><span class="nx">resultsContainer</span><span class="p">.</span><span class="nx">innerHTML</span> <span class="o">=</span> <span class="dl">''</span>
<span class="p">}</span>
<span class="kd">function</span> <span class="nf">appendToResultsContainer</span> <span class="p">(</span><span class="nx">text</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">options</span><span class="p">.</span><span class="nx">resultsContainer</span><span class="p">.</span><span class="nx">innerHTML</span> <span class="o">+=</span> <span class="nx">text</span>
<span class="p">}</span>
<span class="kd">function</span> <span class="nf">registerInput</span> <span class="p">()</span> <span class="p">{</span>
<span class="nx">options</span><span class="p">.</span><span class="nx">searchInput</span><span class="p">.</span><span class="nf">addEventListener</span><span class="p">(</span><span class="dl">'</span><span class="s1">input</span><span class="dl">'</span><span class="p">,</span> <span class="nf">function </span><span class="p">(</span><span class="nx">e</span><span class="p">)</span> <span class="p">{</span>
<span class="k">if </span><span class="p">(</span><span class="nf">isWhitelistedKey</span><span class="p">(</span><span class="nx">e</span><span class="p">.</span><span class="nx">which</span><span class="p">))</span> <span class="p">{</span>
<span class="nf">emptyResultsContainer</span><span class="p">()</span>
<span class="nf">debounce</span><span class="p">(</span><span class="nf">function </span><span class="p">()</span> <span class="p">{</span> <span class="nf">search</span><span class="p">(</span><span class="nx">e</span><span class="p">.</span><span class="nx">target</span><span class="p">.</span><span class="nx">value</span><span class="p">)</span> <span class="p">},</span> <span class="nx">options</span><span class="p">.</span><span class="nx">debounceTime</span><span class="p">)</span>
<span class="p">}</span>
<span class="p">})</span>
<span class="p">}</span>
<span class="kd">function</span> <span class="nf">search</span> <span class="p">(</span><span class="nx">query</span><span class="p">)</span> <span class="p">{</span>
<span class="k">if </span><span class="p">(</span><span class="nf">isValidQuery</span><span class="p">(</span><span class="nx">query</span><span class="p">))</span> <span class="p">{</span>
<span class="nf">emptyResultsContainer</span><span class="p">()</span>
<span class="nf">render</span><span class="p">(</span><span class="nx">_$Repository_4</span><span class="p">.</span><span class="nf">search</span><span class="p">(</span><span class="nx">query</span><span class="p">),</span> <span class="nx">query</span><span class="p">)</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="kd">function</span> <span class="nf">render</span> <span class="p">(</span><span class="nx">results</span><span class="p">,</span> <span class="nx">query</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">const</span> <span class="nx">len</span> <span class="o">=</span> <span class="nx">results</span><span class="p">.</span><span class="nx">length</span>
<span class="k">if </span><span class="p">(</span><span class="nx">len</span> <span class="o">===</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
<span class="k">return</span> <span class="nf">appendToResultsContainer</span><span class="p">(</span><span class="nx">options</span><span class="p">.</span><span class="nx">noResultsText</span><span class="p">)</span>
<span class="p">}</span>
<span class="k">for</span> <span class="p">(</span><span class="kd">let</span> <span class="nx">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">i</span> <span class="o">&lt;</span> <span class="nx">len</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">results</span><span class="p">[</span><span class="nx">i</span><span class="p">].</span><span class="nx">query</span> <span class="o">=</span> <span class="nx">query</span>
<span class="nf">appendToResultsContainer</span><span class="p">(</span><span class="nx">_$Templater_7</span><span class="p">.</span><span class="nf">compile</span><span class="p">(</span><span class="nx">results</span><span class="p">[</span><span class="nx">i</span><span class="p">]))</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="kd">function</span> <span class="nf">isValidQuery</span> <span class="p">(</span><span class="nx">query</span><span class="p">)</span> <span class="p">{</span>
<span class="k">return</span> <span class="nx">query</span> <span class="o">&amp;&amp;</span> <span class="nx">query</span><span class="p">.</span><span class="nx">length</span> <span class="o">&gt;</span> <span class="mi">0</span>
<span class="p">}</span>
<span class="kd">function</span> <span class="nf">isWhitelistedKey</span> <span class="p">(</span><span class="nx">key</span><span class="p">)</span> <span class="p">{</span>
<span class="k">return</span> <span class="p">[</span><span class="mi">13</span><span class="p">,</span> <span class="mi">16</span><span class="p">,</span> <span class="mi">20</span><span class="p">,</span> <span class="mi">37</span><span class="p">,</span> <span class="mi">38</span><span class="p">,</span> <span class="mi">39</span><span class="p">,</span> <span class="mi">40</span><span class="p">,</span> <span class="mi">91</span><span class="p">].</span><span class="nf">indexOf</span><span class="p">(</span><span class="nx">key</span><span class="p">)</span> <span class="o">===</span> <span class="o">-</span><span class="mi">1</span>
<span class="p">}</span>
<span class="kd">function</span> <span class="nf">throwError</span> <span class="p">(</span><span class="nx">message</span><span class="p">)</span> <span class="p">{</span>
<span class="k">throw</span> <span class="k">new</span> <span class="nc">Error</span><span class="p">(</span><span class="dl">'</span><span class="s1">SimpleJekyllSearch --- </span><span class="dl">'</span> <span class="o">+</span> <span class="nx">message</span><span class="p">)</span>
<span class="p">}</span>
<span class="p">})(</span><span class="nb">window</span><span class="p">)</span>
<span class="p">}());</span>
<span class="nt">&lt;/script&gt;</span>
<span class="c">&lt;!-- Configuration --&gt;</span>
<span class="nt">&lt;script&gt;</span>
<span class="nc">SimpleJekyllSearch</span><span class="p">({</span>
<span class="na">searchInput</span><span class="p">:</span> <span class="nb">document</span><span class="p">.</span><span class="nf">getElementById</span><span class="p">(</span><span class="dl">'</span><span class="s1">search-input</span><span class="dl">'</span><span class="p">),</span>
<span class="na">resultsContainer</span><span class="p">:</span> <span class="nb">document</span><span class="p">.</span><span class="nf">getElementById</span><span class="p">(</span><span class="dl">'</span><span class="s1">results-container</span><span class="dl">'</span><span class="p">),</span>
<span class="na">json</span><span class="p">:</span> <span class="dl">'</span><span class="s1">/search.json</span><span class="dl">'</span><span class="p">,</span>
<span class="c1">//searchResultTemplate: '</span><span class="o">&lt;</span><span class="nx">li</span><span class="o">&gt;&lt;</span><span class="nx">a</span> <span class="nx">href</span><span class="o">=</span><span class="dl">"</span><span class="s2">https://static.rnmkcy.eu{url}</span><span class="dl">"</span><span class="o">&gt;</span><span class="p">{</span><span class="nx">date</span><span class="p">}</span><span class="o">&amp;</span><span class="nx">nbsp</span><span class="p">;{</span><span class="nx">title</span><span class="p">}</span><span class="o">&lt;</span><span class="sr">/a&gt;&lt;/</span><span class="nx">li</span><span class="o">&gt;</span><span class="dl">'</span><span class="s1">
searchResultTemplate: </span><span class="dl">'</span><span class="o">&lt;</span><span class="nx">li</span><span class="o">&gt;&lt;</span><span class="nx">a</span> <span class="nx">href</span><span class="o">=</span><span class="dl">"</span><span class="s2">{url}</span><span class="dl">"</span><span class="o">&gt;</span><span class="p">{</span><span class="nx">date</span><span class="p">}</span><span class="o">&amp;</span><span class="nx">nbsp</span><span class="p">;{</span><span class="nx">title</span><span class="p">}</span><span class="o">&lt;</span><span class="sr">/a&gt;&lt;/</span><span class="nx">li</span><span class="o">&gt;</span><span class="dl">'</span><span class="s1">
})
</span><span class="nt">&lt;/script&gt;</span>
<span class="c">&lt;!-- Fin déclaration champ de recherche --&gt;</span><span class="nt">&lt;/div&gt;&lt;nav</span> <span class="na">class=</span><span class="s">"navigation"</span><span class="nt">&gt;</span>
<span class="nt">&lt;ul&gt;&lt;li</span> <span class="na">class=</span><span class="s">"navigation__item"</span><span class="nt">&gt;&lt;a</span> <span class="na">href=</span><span class="s">"/archive.html"</span><span class="nt">&gt;</span>Etiquettes<span class="nt">&lt;/a&gt;&lt;/li&gt;&lt;li</span> <span class="na">class=</span><span class="s">"navigation__item"</span><span class="nt">&gt;&lt;a</span> <span class="na">href=</span><span class="s">"/htmldoc.html"</span><span class="nt">&gt;</span>Documents<span class="nt">&lt;/a&gt;&lt;/li&gt;&lt;li</span> <span class="na">class=</span><span class="s">"navigation__item"</span><span class="nt">&gt;&lt;a</span> <span class="na">href=</span><span class="s">"/liens_ttrss.html"</span><span class="nt">&gt;</span>Liens<span class="nt">&lt;/a&gt;&lt;/li&gt;&lt;li</span> <span class="na">class=</span><span class="s">"navigation__item"</span><span class="nt">&gt;&lt;a</span> <span class="na">href=</span><span class="s">"/aide-jekyll-text-theme.html"</span><span class="nt">&gt;</span>Aide<span class="nt">&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;</span>
<span class="nt">&lt;/nav&gt;&lt;/div&gt;</span>
<span class="nt">&lt;/header&gt;</span>
<span class="nt">&lt;/div&gt;&lt;div</span> <span class="na">class=</span><span class="s">"page__content"</span><span class="nt">&gt;&lt;div</span> <span class="na">class =</span><span class="s">"main"</span><span class="nt">&gt;&lt;div</span> <span class="na">class=</span><span class="s">"grid grid--reverse"</span><span class="nt">&gt;</span>
<span class="nt">&lt;div</span> <span class="na">class=</span><span class="s">"col-main cell cell--auto"</span><span class="nt">&gt;</span><span class="c">&lt;!-- start custom main top snippet --&gt;</span><span class="nt">&lt;div</span> <span class="na">id=</span><span class="s">"results-container"</span> <span class="na">class=</span><span class="s">"search-result js-search-result"</span><span class="nt">&gt;&lt;/div&gt;</span><span class="c">&lt;!-- end custom main top snippet --&gt;</span>
<span class="nt">&lt;article</span> <span class="na">itemscope</span> <span class="na">itemtype=</span><span class="s">"http://schema.org/Article"</span><span class="nt">&gt;&lt;div</span> <span class="na">class=</span><span class="s">"article__header"</span><span class="nt">&gt;&lt;header&gt;&lt;h1</span> <span class="na">style=</span><span class="s">"color:Tomato;"</span><span class="nt">&gt;</span>Nginx personnalisation des pages d'erreur<span class="nt">&lt;/h1&gt;&lt;/header&gt;&lt;/div&gt;&lt;meta</span> <span class="na">itemprop=</span><span class="s">"headline"</span> <span class="na">content=</span><span class="s">"Nginx personnalisation des pages d'erreur"</span><span class="nt">&gt;&lt;div</span> <span class="na">class=</span><span class="s">"article__info clearfix"</span><span class="nt">&gt;&lt;ul</span> <span class="na">class=</span><span class="s">"left-col menu"</span><span class="nt">&gt;&lt;li&gt;</span>
<span class="nt">&lt;a</span> <span class="na">class=</span><span class="s">"button button--secondary button--pill button--sm"</span>
<span class="na">href=</span><span class="s">"/archive.html?tag=nginx"</span><span class="nt">&gt;</span>nginx<span class="nt">&lt;/a&gt;</span>
<span class="nt">&lt;/li&gt;&lt;/ul&gt;&lt;ul</span> <span class="na">class=</span><span class="s">"right-col menu"</span><span class="nt">&gt;&lt;li&gt;</span>
<span class="nt">&lt;i</span> <span class="na">class=</span><span class="s">"far fa-calendar-alt"</span><span class="nt">&gt;&lt;/i&gt;</span><span class="ni">&amp;nbsp;</span><span class="nt">&lt;span</span> <span class="na">title=</span><span class="s">"Création"</span> <span class="na">style=</span><span class="s">"color:#FF00FF"</span><span class="nt">&gt;</span>21<span class="ni">&amp;nbsp;</span>déc.<span class="ni">&amp;nbsp;&amp;nbsp;</span>2019<span class="nt">&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;meta</span> <span class="na">itemprop=</span><span class="s">"datePublished"</span> <span class="na">content=</span><span class="s">"2019-12-21T00:00:00+01:00"</span><span class="nt">&gt;</span>
<span class="nt">&lt;meta</span> <span class="na">itemprop=</span><span class="s">"keywords"</span> <span class="na">content=</span><span class="s">"nginx"</span><span class="nt">&gt;&lt;div</span> <span class="na">class=</span><span class="s">"js-article-content"</span><span class="nt">&gt;</span>
<span class="nt">&lt;div</span> <span class="na">class=</span><span class="s">"layout--article"</span><span class="nt">&gt;</span><span class="c">&lt;!-- start custom article top snippet --&gt;</span>
<span class="nt">&lt;style&gt;</span>
<span class="nf">#myBtn</span> <span class="p">{</span>
<span class="nl">display</span><span class="p">:</span> <span class="nb">none</span><span class="p">;</span>
<span class="nl">position</span><span class="p">:</span> <span class="nb">fixed</span><span class="p">;</span>
<span class="nl">bottom</span><span class="p">:</span> <span class="m">10px</span><span class="p">;</span>
<span class="nl">right</span><span class="p">:</span> <span class="m">10px</span><span class="p">;</span>
<span class="nl">z-index</span><span class="p">:</span> <span class="m">99</span><span class="p">;</span>
<span class="nl">font-size</span><span class="p">:</span> <span class="m">12px</span><span class="p">;</span>
<span class="nl">font-weight</span><span class="p">:</span> <span class="nb">bold</span><span class="p">;</span>
<span class="nl">border</span><span class="p">:</span> <span class="nb">none</span><span class="p">;</span>
<span class="nl">outline</span><span class="p">:</span> <span class="nb">none</span><span class="p">;</span>
<span class="nl">background-color</span><span class="p">:</span> <span class="no">white</span><span class="p">;</span>
<span class="nl">color</span><span class="p">:</span> <span class="no">black</span><span class="p">;</span>
<span class="nl">cursor</span><span class="p">:</span> <span class="nb">pointer</span><span class="p">;</span>
<span class="nl">padding</span><span class="p">:</span> <span class="m">5px</span><span class="p">;</span>
<span class="nl">border-radius</span><span class="p">:</span> <span class="m">4px</span><span class="p">;</span>
<span class="p">}</span>
<span class="nf">#myBtn</span><span class="nd">:hover</span> <span class="p">{</span>
<span class="nl">background-color</span><span class="p">:</span> <span class="m">#555</span><span class="p">;</span>
<span class="p">}</span>
<span class="nt">&lt;/style&gt;</span>
<span class="nt">&lt;button</span> <span class="na">onclick=</span><span class="s">"topFunction()"</span> <span class="na">id=</span><span class="s">"myBtn"</span> <span class="na">title=</span><span class="s">"Haut de page"</span><span class="nt">&gt;</span><span class="ni">&amp;#8679;</span><span class="nt">&lt;/button&gt;</span>
<span class="nt">&lt;script&gt;</span>
<span class="c1">//Get the button</span>
<span class="kd">var</span> <span class="nx">mybutton</span> <span class="o">=</span> <span class="nb">document</span><span class="p">.</span><span class="nf">getElementById</span><span class="p">(</span><span class="dl">"</span><span class="s2">myBtn</span><span class="dl">"</span><span class="p">);</span>
<span class="c1">// When the user scrolls down 20px from the top of the document, show the button</span>
<span class="nb">window</span><span class="p">.</span><span class="nx">onscroll</span> <span class="o">=</span> <span class="kd">function</span><span class="p">()</span> <span class="p">{</span><span class="nf">scrollFunction</span><span class="p">()};</span>
<span class="kd">function</span> <span class="nf">scrollFunction</span><span class="p">()</span> <span class="p">{</span>
<span class="k">if </span><span class="p">(</span><span class="nb">document</span><span class="p">.</span><span class="nx">body</span><span class="p">.</span><span class="nx">scrollTop</span> <span class="o">&gt;</span> <span class="mi">20</span> <span class="o">||</span> <span class="nb">document</span><span class="p">.</span><span class="nx">documentElement</span><span class="p">.</span><span class="nx">scrollTop</span> <span class="o">&gt;</span> <span class="mi">20</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">mybutton</span><span class="p">.</span><span class="nx">style</span><span class="p">.</span><span class="nx">display</span> <span class="o">=</span> <span class="dl">"</span><span class="s2">block</span><span class="dl">"</span><span class="p">;</span>
<span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
<span class="nx">mybutton</span><span class="p">.</span><span class="nx">style</span><span class="p">.</span><span class="nx">display</span> <span class="o">=</span> <span class="dl">"</span><span class="s2">none</span><span class="dl">"</span><span class="p">;</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="c1">// When the user clicks on the button, scroll to the top of the document</span>
<span class="kd">function</span> <span class="nf">topFunction</span><span class="p">()</span> <span class="p">{</span>
<span class="nb">document</span><span class="p">.</span><span class="nx">body</span><span class="p">.</span><span class="nx">scrollTop</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
<span class="nb">document</span><span class="p">.</span><span class="nx">documentElement</span><span class="p">.</span><span class="nx">scrollTop</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
<span class="p">}</span>
<span class="nt">&lt;/script&gt;</span>
<span class="c">&lt;!-- end custom article top snippet --&gt;</span>
<span class="nt">&lt;div</span> <span class="na">class=</span><span class="s">"article__content"</span> <span class="na">itemprop=</span><span class="s">"articleBody"</span><span class="nt">&gt;&lt;details&gt;</span>
<span class="nt">&lt;summary&gt;&lt;b&gt;</span>Afficher/cacher Sommaire<span class="nt">&lt;/b&gt;&lt;/summary&gt;</span>
<span class="c">&lt;!-- affichage sommaire --&gt;</span>
<span class="nt">&lt;div</span> <span class="na">class=</span><span class="s">"toc-aside js-toc-root"</span><span class="nt">&gt;&lt;/div&gt;</span>
<span class="nt">&lt;/details&gt;&lt;h2</span> <span class="na">id=</span><span class="s">"configurer-nginx-pour-utiliser-des-pages-derreur-personnalisées"</span><span class="nt">&gt;</span>Configurer Nginx pour utiliser des pages derreur personnalisées<span class="nt">&lt;/h2&gt;</span>
<span class="nt">&lt;p&gt;&lt;img</span> <span class="na">src=</span><span class="s">"/images/nginx-logo.png"</span> <span class="na">alt=</span><span class="s">""</span> <span class="nt">/&gt;&lt;/p&gt;</span>
<span class="nt">&lt;h3</span> <span class="na">id=</span><span class="s">"introduction"</span><span class="nt">&gt;</span>Introduction<span class="nt">&lt;/h3&gt;</span>
<span class="nt">&lt;p&gt;</span>Nginx est un serveur Web haute performance capable de servir du contenu avec flexibilité et puissance. Lors de la conception de vos pages Web, il est souvent utile de personnaliser chaque élément de contenu que vos utilisateurs verront. Cela inclut les pages derreur pour quand ils demandent du contenu qui nest pas disponible.<span class="nt">&lt;/p&gt;</span>
<span class="nt">&lt;h3</span> <span class="na">id=</span><span class="s">"création-de-vos-pages-derreur-personnalisées"</span><span class="nt">&gt;</span>Création de vos pages derreur personnalisées<span class="nt">&lt;/h3&gt;</span>
<span class="nt">&lt;p&gt;</span>Nous mettrons nos pages derreur personnalisées dans le <span class="nt">&lt;strong&gt;</span>/usr/share/nginx/html<span class="nt">&lt;/strong&gt;</span> où Nginx définit sa racine de document par défaut. Nous créerons une page pour les erreurs 404 appelée <span class="nt">&lt;strong&gt;</span>custom_404.html<span class="nt">&lt;/strong&gt;</span> et une autre pour les erreurs générales de niveau 500 appelée <span class="nt">&lt;strong&gt;</span>custom_50x.html<span class="nt">&lt;/strong&gt;&lt;br</span> <span class="nt">/&gt;</span>
Vous pouvez utiliser les lignes suivantes si vous ne faites que tester. Sinon, mettez votre propre contenu dans ces emplacements:<span class="nt">&lt;/p&gt;</span>
<span class="nt">&lt;div</span> <span class="na">class=</span><span class="s">"language-plaintext highlighter-rouge"</span><span class="nt">&gt;&lt;div</span> <span class="na">class=</span><span class="s">"highlight"</span><span class="nt">&gt;&lt;pre</span> <span class="na">class=</span><span class="s">"highlight"</span><span class="nt">&gt;&lt;code&gt;</span>echo "<span class="ni">&amp;lt;</span>h1 style='color:red'<span class="ni">&amp;gt;</span>Error 404: Not found :-(<span class="ni">&amp;lt;</span>/h1<span class="ni">&amp;gt;</span>" | sudo tee /usr/share/nginx/html/custom_404.html
echo "<span class="ni">&amp;lt;</span>p<span class="ni">&amp;gt;</span>I have no idea where that file is, sorry. Are you sure you typed in the correct URL?<span class="ni">&amp;lt;</span>/p<span class="ni">&amp;gt;</span>" | sudo tee -a /usr/share/nginx/html/custom_404.html
echo "<span class="ni">&amp;lt;</span>h1<span class="ni">&amp;gt;</span>Oops! Something went wrong...<span class="ni">&amp;lt;</span>/h1<span class="ni">&amp;gt;</span>" | sudo tee /usr/share/nginx/html/custom_50x.html
echo "<span class="ni">&amp;lt;</span>p<span class="ni">&amp;gt;</span>We seem to be having some technical difficulties. Hang tight.<span class="ni">&amp;lt;</span>/p<span class="ni">&amp;gt;</span>" | sudo tee -a /usr/share/nginx/html/custom_50x.html
<span class="nt">&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;</span>
<span class="nt">&lt;p&gt;</span>Nous avons maintenant deux pages derreur personnalisées que nous pouvons diffuser lorsque les demandes des clients entraînent des erreurs différentes.<span class="nt">&lt;/p&gt;</span>
<span class="nt">&lt;h3</span> <span class="na">id=</span><span class="s">"configuration-de-nginx-pour-utiliser-vos-pages-derreur"</span><span class="nt">&gt;</span>Configuration de Nginx pour utiliser vos pages derreur<span class="nt">&lt;/h3&gt;</span>
<span class="nt">&lt;p&gt;</span>Maintenant, nous devons simplement dire à Nginx quil devrait utiliser ces pages chaque fois que les conditions derreur correctes se produisent. Ouvrez le fichier de blocage du serveur dans le répertoire /etc/nginx/sites-enabled que vous souhaitez configurer. Nous utiliserons le fichier de blocage de serveur par default appelé default , mais vous devez ajuster vos propres blocs de serveur si vous utilisez un fichier non par défaut:<span class="nt">&lt;/p&gt;</span>
<span class="nt">&lt;div</span> <span class="na">class=</span><span class="s">"language-plaintext highlighter-rouge"</span><span class="nt">&gt;&lt;div</span> <span class="na">class=</span><span class="s">"highlight"</span><span class="nt">&gt;&lt;pre</span> <span class="na">class=</span><span class="s">"highlight"</span><span class="nt">&gt;&lt;code&gt;</span>sudo nano /etc/nginx/sites-enabled/default
<span class="nt">&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;</span>
<span class="nt">&lt;p&gt;</span>Nous pouvons maintenant pointer Nginx vers nos pages derreur personnalisées.<span class="nt">&lt;/p&gt;</span>
<span class="nt">&lt;h3</span> <span class="na">id=</span><span class="s">"diriger-les-erreurs-404-vers-la-page-404-personnalisée"</span><span class="nt">&gt;</span>Diriger les erreurs 404 vers la page 404 personnalisée<span class="nt">&lt;/h3&gt;</span>
<span class="nt">&lt;p&gt;</span>Utilisez la directive error_page pour que lorsquune erreur 404 se produit (lorsquun fichier demandé nest pas trouvé), la page personnalisée que vous avez créée soit servie. Nous allons créer un bloc demplacement pour le fichier, où nous pouvons nous assurer que la racine correspond à lemplacement de notre système de fichiers et que le fichier est uniquement accessible via les redirections Nginx internes (non directement demandables par les clients):<span class="nt">&lt;/p&gt;</span>
<span class="nt">&lt;div</span> <span class="na">class=</span><span class="s">"language-plaintext highlighter-rouge"</span><span class="nt">&gt;&lt;div</span> <span class="na">class=</span><span class="s">"highlight"</span><span class="nt">&gt;&lt;pre</span> <span class="na">class=</span><span class="s">"highlight"</span><span class="nt">&gt;&lt;code&gt;</span>/etc/nginx/sites-enabled/default
<span class="nt">&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;</span>
<span class="nt">&lt;div</span> <span class="na">class=</span><span class="s">"language-plaintext highlighter-rouge"</span><span class="nt">&gt;&lt;div</span> <span class="na">class=</span><span class="s">"highlight"</span><span class="nt">&gt;&lt;pre</span> <span class="na">class=</span><span class="s">"highlight"</span><span class="nt">&gt;&lt;code&gt;</span>server {
listen 80 default_server;
listen [::]:80 default_server ipv6only=on;
. . .
error_page 404 /custom_404.html;
location = /custom_404.html {
root /usr/share/nginx/html;
internal;
}
}
<span class="nt">&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;</span>
<span class="nt">&lt;p&gt;</span>Habituellement, nous naurions pas à définir la root dans le nouveau bloc demplacement car elle correspond à la racine dans le bloc serveur. Cependant, nous sommes explicites ici afin que nos pages derreur soient servies même si nous déplaçons notre contenu Web normal et la racine du document associé vers un emplacement différent.<span class="nt">&lt;/p&gt;</span>
<span class="nt">&lt;h3</span> <span class="na">id=</span><span class="s">"diriger-les-erreurs-de-niveau-500-vers-la-page-50x-personnalisée"</span><span class="nt">&gt;</span>Diriger les erreurs de niveau 500 vers la page 50x personnalisée<span class="nt">&lt;/h3&gt;</span>
<span class="nt">&lt;p&gt;</span>Ensuite, nous pouvons ajouter les directives pour nous assurer que lorsque Nginx rencontre des erreurs de niveau 500 (problèmes liés au serveur), il servira lautre page personnalisée que nous avons créée. Cela suivra exactement la même formule que nous avons utilisée dans la dernière section. Cette fois, nous avons défini plusieurs erreurs de niveau 500 pour utiliser toutes la page custom_50x.html :<span class="nt">&lt;/p&gt;</span>
<span class="nt">&lt;div</span> <span class="na">class=</span><span class="s">"language-plaintext highlighter-rouge"</span><span class="nt">&gt;&lt;div</span> <span class="na">class=</span><span class="s">"highlight"</span><span class="nt">&gt;&lt;pre</span> <span class="na">class=</span><span class="s">"highlight"</span><span class="nt">&gt;&lt;code&gt;</span>/etc/nginx/sites-enabled/default
<span class="nt">&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;</span>
<span class="nt">&lt;div</span> <span class="na">class=</span><span class="s">"language-plaintext highlighter-rouge"</span><span class="nt">&gt;&lt;div</span> <span class="na">class=</span><span class="s">"highlight"</span><span class="nt">&gt;&lt;pre</span> <span class="na">class=</span><span class="s">"highlight"</span><span class="nt">&gt;&lt;code&gt;</span>server {
listen 80 default_server;
listen [::]:80 default_server ipv6only=on;
. . .
error_page 404 /custom_404.html;
location = /custom_404.html {
root /usr/share/nginx/html;
internal;
}
error_page 500 502 503 504 /custom_50x.html;
location = /custom_50x.html {
root /usr/share/nginx/html;
internal;
}
location /testing {
fastcgi_pass unix:/does/not/exist;
}
}
<span class="nt">&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;</span>
<span class="nt">&lt;p&gt;</span>En bas, nous avons également ajouté une passe fictive FastCGI afin que nous puissions tester notre page derreur de niveau 500 . Cela ne fonctionnera pas correctement car le backend nexiste pas. Demander une page ici nous permettra de tester que les erreurs de niveau 500 servent notre page personnalisée.<span class="nt">&lt;/p&gt;</span>
<span class="nt">&lt;p&gt;</span>Enregistrez et fermez le fichier lorsque vous avez terminé.<span class="nt">&lt;/p&gt;</span>
<span class="nt">&lt;h3</span> <span class="na">id=</span><span class="s">"redémarrer-nginx-et-tester-vos-pages"</span><span class="nt">&gt;</span>Redémarrer Nginx et tester vos pages<span class="nt">&lt;/h3&gt;</span>
<span class="nt">&lt;p&gt;</span>Testez la syntaxe de votre fichier de configuration en tapant:<span class="nt">&lt;/p&gt;</span>
<span class="nt">&lt;div</span> <span class="na">class=</span><span class="s">"language-plaintext highlighter-rouge"</span><span class="nt">&gt;&lt;div</span> <span class="na">class=</span><span class="s">"highlight"</span><span class="nt">&gt;&lt;pre</span> <span class="na">class=</span><span class="s">"highlight"</span><span class="nt">&gt;&lt;code&gt;</span> sudo nginx -t
<span class="nt">&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;</span>
<span class="nt">&lt;p&gt;</span>Si des erreurs ont été signalées, corrigez-les avant de continuer. Lorsquaucune erreur de syntaxe nest renvoyée, redémarrez Nginx en tapant:<span class="nt">&lt;/p&gt;</span>
<span class="nt">&lt;div</span> <span class="na">class=</span><span class="s">"language-plaintext highlighter-rouge"</span><span class="nt">&gt;&lt;div</span> <span class="na">class=</span><span class="s">"highlight"</span><span class="nt">&gt;&lt;pre</span> <span class="na">class=</span><span class="s">"highlight"</span><span class="nt">&gt;&lt;code&gt;</span> sudo service nginx restart
<span class="nt">&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;</span>
<span class="nt">&lt;p&gt;</span>Maintenant, lorsque vous allez sur le domaine ou ladresse IP de votre serveur et demandez un fichier inexistant, vous devriez voir la page 404 que nous avons configurée:<span class="nt">&lt;/p&gt;</span>
<span class="nt">&lt;div</span> <span class="na">class=</span><span class="s">"language-plaintext highlighter-rouge"</span><span class="nt">&gt;&lt;div</span> <span class="na">class=</span><span class="s">"highlight"</span><span class="nt">&gt;&lt;pre</span> <span class="na">class=</span><span class="s">"highlight"</span><span class="nt">&gt;&lt;code&gt;</span>http://server_domain_or_IP/thiswillerror
<span class="nt">&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;</span>
<span class="nt">&lt;p&gt;&lt;img</span> <span class="na">src=</span><span class="s">"/images/custom_404.png"</span> <span class="na">alt=</span><span class="s">"nginx custom 404"</span> <span class="nt">/&gt;&lt;/p&gt;</span>
<span class="nt">&lt;p&gt;</span>Lorsque vous vous rendrez à lemplacement que nous avons configuré pour le pass FastCGI, nous recevrons une erreur 502 Bad Gateway avec notre page personnalisée de niveau 500:<span class="nt">&lt;/p&gt;</span>
<span class="nt">&lt;div</span> <span class="na">class=</span><span class="s">"language-plaintext highlighter-rouge"</span><span class="nt">&gt;&lt;div</span> <span class="na">class=</span><span class="s">"highlight"</span><span class="nt">&gt;&lt;pre</span> <span class="na">class=</span><span class="s">"highlight"</span><span class="nt">&gt;&lt;code&gt;</span>http://server_domain_or_IP/testing
<span class="nt">&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;</span>
<span class="nt">&lt;p&gt;&lt;img</span> <span class="na">src=</span><span class="s">"/images/custom_50x.png"</span> <span class="na">alt=</span><span class="s">"nginx custom 50x"</span> <span class="nt">/&gt;&lt;/p&gt;</span>
<span class="nt">&lt;p&gt;</span>Vous pouvez maintenant revenir en arrière et supprimer le faux emplacement de passe FastCGI de votre configuration Nginx.<span class="nt">&lt;/p&gt;</span>
<span class="nt">&lt;h3</span> <span class="na">id=</span><span class="s">"conclusion"</span><span class="nt">&gt;</span>Conclusion<span class="nt">&lt;/h3&gt;</span>
<span class="nt">&lt;p&gt;</span>Vous devez maintenant diffuser des pages derreur personnalisées pour votre site. Il sagit dun moyen simple de personnaliser lexpérience de vos utilisateurs même lorsquils rencontrent des problèmes. Une suggestion pour ces pages est dinclure des liens vers des endroits où ils peuvent aller pour obtenir de laide ou plus dinformations. Si vous procédez ainsi, assurez-vous que les destinations des liens sont accessibles même lorsque les erreurs associées se produisent.<span class="nt">&lt;/p&gt;</span>
<span class="nt">&lt;/div&gt;</span>
<span class="nt">&lt;div</span> <span class="na">class=</span><span class="s">"d-print-none"</span><span class="nt">&gt;&lt;footer</span> <span class="na">class=</span><span class="s">"article__footer"</span><span class="nt">&gt;&lt;meta</span> <span class="na">itemprop=</span><span class="s">"dateModified"</span> <span class="na">content=</span><span class="s">"2019-12-21T00:00:00+01:00"</span><span class="nt">&gt;</span><span class="c">&lt;!-- start custom article footer snippet --&gt;</span>
<span class="c">&lt;!-- end custom article footer snippet --&gt;</span>
<span class="c">&lt;!--
&lt;div align="right"&gt;&lt;a type="application/rss+xml" href="/feed.xml" title="S'abonner"&gt;&lt;i class="fa fa-rss fa-2x"&gt;&lt;/i&gt;&lt;/a&gt;
&amp;emsp;&lt;/div&gt;
--&gt;</span>
<span class="nt">&lt;/footer&gt;</span>
<span class="nt">&lt;div</span> <span class="na">class=</span><span class="s">"article__section-navigator clearfix"</span><span class="nt">&gt;&lt;div</span> <span class="na">class=</span><span class="s">"previous"</span><span class="nt">&gt;&lt;span&gt;</span>PRÉCÉDENT<span class="nt">&lt;/span&gt;&lt;a</span> <span class="na">href=</span><span class="s">"/2019/12/19/Grub.html"</span><span class="nt">&gt;</span>Grub "Configure GRUB2 Boot Loader settings", clavier FR et un mot de passe<span class="nt">&lt;/a&gt;&lt;/div&gt;&lt;div</span> <span class="na">class=</span><span class="s">"next"</span><span class="nt">&gt;&lt;span&gt;</span>SUIVANT<span class="nt">&lt;/span&gt;&lt;a</span> <span class="na">href=</span><span class="s">"/2019/12/23/Blog-statique-jekyll-Yunohost-cinay.xyz.html"</span><span class="nt">&gt;</span>Blog statique de type jekyll sur site cinay.xyz<span class="nt">&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;</span>
<span class="nt">&lt;/div&gt;</span>
<span class="nt">&lt;script&gt;</span><span class="p">(</span><span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">SOURCES</span> <span class="o">=</span> <span class="nb">window</span><span class="p">.</span><span class="nx">TEXT_VARIABLES</span><span class="p">.</span><span class="nx">sources</span><span class="p">;</span>
<span class="nb">window</span><span class="p">.</span><span class="nx">Lazyload</span><span class="p">.</span><span class="nf">js</span><span class="p">(</span><span class="nx">SOURCES</span><span class="p">.</span><span class="nx">jquery</span><span class="p">,</span> <span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
<span class="nf">$</span><span class="p">(</span><span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">$this</span> <span class="p">,</span><span class="nx">$scroll</span><span class="p">;</span>
<span class="kd">var</span> <span class="nx">$articleContent</span> <span class="o">=</span> <span class="nf">$</span><span class="p">(</span><span class="dl">'</span><span class="s1">.js-article-content</span><span class="dl">'</span><span class="p">);</span>
<span class="kd">var</span> <span class="nx">hasSidebar</span> <span class="o">=</span> <span class="nf">$</span><span class="p">(</span><span class="dl">'</span><span class="s1">.js-page-root</span><span class="dl">'</span><span class="p">).</span><span class="nf">hasClass</span><span class="p">(</span><span class="dl">'</span><span class="s1">layout--page--sidebar</span><span class="dl">'</span><span class="p">);</span>
<span class="kd">var</span> <span class="nx">scroll</span> <span class="o">=</span> <span class="nx">hasSidebar</span> <span class="p">?</span> <span class="dl">'</span><span class="s1">.js-page-main</span><span class="dl">'</span> <span class="p">:</span> <span class="dl">'</span><span class="s1">html, body</span><span class="dl">'</span><span class="p">;</span>
<span class="nx">$scroll</span> <span class="o">=</span> <span class="nf">$</span><span class="p">(</span><span class="nx">scroll</span><span class="p">);</span>
<span class="nx">$articleContent</span><span class="p">.</span><span class="nf">find</span><span class="p">(</span><span class="dl">'</span><span class="s1">.highlight</span><span class="dl">'</span><span class="p">).</span><span class="nf">each</span><span class="p">(</span><span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
<span class="nx">$this</span> <span class="o">=</span> <span class="nf">$</span><span class="p">(</span><span class="k">this</span><span class="p">);</span>
<span class="nx">$this</span><span class="p">.</span><span class="nf">attr</span><span class="p">(</span><span class="dl">'</span><span class="s1">data-lang</span><span class="dl">'</span><span class="p">,</span> <span class="nx">$this</span><span class="p">.</span><span class="nf">find</span><span class="p">(</span><span class="dl">'</span><span class="s1">code</span><span class="dl">'</span><span class="p">).</span><span class="nf">attr</span><span class="p">(</span><span class="dl">'</span><span class="s1">data-lang</span><span class="dl">'</span><span class="p">));</span>
<span class="p">});</span>
<span class="nx">$articleContent</span><span class="p">.</span><span class="nf">find</span><span class="p">(</span><span class="dl">'</span><span class="s1">h1[id], h2[id], h3[id], h4[id], h5[id], h6[id]</span><span class="dl">'</span><span class="p">).</span><span class="nf">each</span><span class="p">(</span><span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
<span class="nx">$this</span> <span class="o">=</span> <span class="nf">$</span><span class="p">(</span><span class="k">this</span><span class="p">);</span>
<span class="nx">$this</span><span class="p">.</span><span class="nx">append</span><span class="p">(</span><span class="nx">$</span><span class="p">(</span><span class="dl">'</span><span class="s1">&lt;a class="anchor d-print-none" aria-hidden="true"&gt;&lt;/a&gt;</span><span class="dl">'</span><span class="p">).</span><span class="nx">html</span><span class="p">(</span><span class="dl">'</span><span class="s1">&lt;i class="fas fa-anchor"&gt;&lt;/i&gt;</span><span class="dl">'</span><span class="p">));</span>
<span class="p">});</span>
<span class="nx">$articleContent</span><span class="p">.</span><span class="nf">on</span><span class="p">(</span><span class="dl">'</span><span class="s1">click</span><span class="dl">'</span><span class="p">,</span> <span class="dl">'</span><span class="s1">.anchor</span><span class="dl">'</span><span class="p">,</span> <span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
<span class="nx">$scroll</span><span class="p">.</span><span class="nf">scrollToAnchor</span><span class="p">(</span><span class="dl">'</span><span class="s1">#</span><span class="dl">'</span> <span class="o">+</span> <span class="nf">$</span><span class="p">(</span><span class="k">this</span><span class="p">).</span><span class="nf">parent</span><span class="p">().</span><span class="nf">attr</span><span class="p">(</span><span class="dl">'</span><span class="s1">id</span><span class="dl">'</span><span class="p">),</span> <span class="mi">400</span><span class="p">);</span>
<span class="p">});</span>
<span class="p">});</span>
<span class="p">});</span>
<span class="p">})();</span>
<span class="nt">&lt;/script&gt;</span>
<span class="nt">&lt;/div&gt;&lt;section</span> <span class="na">class=</span><span class="s">"page__comments d-print-none"</span><span class="nt">&gt;&lt;/section&gt;&lt;/article&gt;</span><span class="c">&lt;!-- start custom main bottom snippet --&gt;</span>
<span class="c">&lt;!-- end custom main bottom snippet --&gt;</span>
<span class="nt">&lt;/div&gt;</span>
<span class="nt">&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;</span>
<span class="nt">&lt;/div&gt;&lt;script&gt;</span><span class="p">(</span><span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">SOURCES</span> <span class="o">=</span> <span class="nb">window</span><span class="p">.</span><span class="nx">TEXT_VARIABLES</span><span class="p">.</span><span class="nx">sources</span><span class="p">;</span>
<span class="nb">window</span><span class="p">.</span><span class="nx">Lazyload</span><span class="p">.</span><span class="nf">js</span><span class="p">(</span><span class="nx">SOURCES</span><span class="p">.</span><span class="nx">jquery</span><span class="p">,</span> <span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">$body</span> <span class="o">=</span> <span class="nf">$</span><span class="p">(</span><span class="dl">'</span><span class="s1">body</span><span class="dl">'</span><span class="p">),</span> <span class="nx">$window</span> <span class="o">=</span> <span class="nf">$</span><span class="p">(</span><span class="nb">window</span><span class="p">);</span>
<span class="kd">var</span> <span class="nx">$pageRoot</span> <span class="o">=</span> <span class="nf">$</span><span class="p">(</span><span class="dl">'</span><span class="s1">.js-page-root</span><span class="dl">'</span><span class="p">),</span> <span class="nx">$pageMain</span> <span class="o">=</span> <span class="nf">$</span><span class="p">(</span><span class="dl">'</span><span class="s1">.js-page-main</span><span class="dl">'</span><span class="p">);</span>
<span class="kd">var</span> <span class="nx">activeCount</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
<span class="kd">function</span> <span class="nf">modal</span><span class="p">(</span><span class="nx">options</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">$root</span> <span class="o">=</span> <span class="k">this</span><span class="p">,</span> <span class="nx">visible</span><span class="p">,</span> <span class="nx">onChange</span><span class="p">,</span> <span class="nx">hideWhenWindowScroll</span> <span class="o">=</span> <span class="kc">false</span><span class="p">;</span>
<span class="kd">var</span> <span class="nx">scrollTop</span><span class="p">;</span>
<span class="kd">function</span> <span class="nf">setOptions</span><span class="p">(</span><span class="nx">options</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">_options</span> <span class="o">=</span> <span class="nx">options</span> <span class="o">||</span> <span class="p">{};</span>
<span class="nx">visible</span> <span class="o">=</span> <span class="nx">_options</span><span class="p">.</span><span class="nx">initialVisible</span> <span class="o">===</span> <span class="kc">undefined</span> <span class="p">?</span> <span class="kc">false</span> <span class="p">:</span> <span class="nx">show</span><span class="p">;</span>
<span class="nx">onChange</span> <span class="o">=</span> <span class="nx">_options</span><span class="p">.</span><span class="nx">onChange</span><span class="p">;</span>
<span class="nx">hideWhenWindowScroll</span> <span class="o">=</span> <span class="nx">_options</span><span class="p">.</span><span class="nx">hideWhenWindowScroll</span><span class="p">;</span>
<span class="p">}</span>
<span class="kd">function</span> <span class="nf">init</span><span class="p">()</span> <span class="p">{</span>
<span class="nf">setState</span><span class="p">(</span><span class="nx">visible</span><span class="p">);</span>
<span class="p">}</span>
<span class="kd">function</span> <span class="nf">setState</span><span class="p">(</span><span class="nx">isShow</span><span class="p">)</span> <span class="p">{</span>
<span class="k">if </span><span class="p">(</span><span class="nx">isShow</span> <span class="o">===</span> <span class="nx">visible</span><span class="p">)</span> <span class="p">{</span>
<span class="k">return</span><span class="p">;</span>
<span class="p">}</span>
<span class="nx">visible</span> <span class="o">=</span> <span class="nx">isShow</span><span class="p">;</span>
<span class="k">if </span><span class="p">(</span><span class="nx">visible</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">activeCount</span><span class="o">++</span><span class="p">;</span>
<span class="nx">scrollTop</span> <span class="o">=</span> <span class="nf">$</span><span class="p">(</span><span class="nb">window</span><span class="p">).</span><span class="nf">scrollTop</span><span class="p">()</span> <span class="o">||</span> <span class="nx">$pageMain</span><span class="p">.</span><span class="nf">scrollTop</span><span class="p">();</span>
<span class="nx">$root</span><span class="p">.</span><span class="nf">addClass</span><span class="p">(</span><span class="dl">'</span><span class="s1">modal--show</span><span class="dl">'</span><span class="p">);</span>
<span class="nx">$pageMain</span><span class="p">.</span><span class="nf">scrollTop</span><span class="p">(</span><span class="nx">scrollTop</span><span class="p">);</span>
<span class="nx">activeCount</span> <span class="o">===</span> <span class="mi">1</span> <span class="o">&amp;&amp;</span> <span class="p">(</span><span class="nx">$pageRoot</span><span class="p">.</span><span class="nf">addClass</span><span class="p">(</span><span class="dl">'</span><span class="s1">show-modal</span><span class="dl">'</span><span class="p">),</span> <span class="nx">$body</span><span class="p">.</span><span class="nf">addClass</span><span class="p">(</span><span class="dl">'</span><span class="s1">of-hidden</span><span class="dl">'</span><span class="p">));</span>
<span class="nx">hideWhenWindowScroll</span> <span class="o">&amp;&amp;</span> <span class="nb">window</span><span class="p">.</span><span class="nf">hasEvent</span><span class="p">(</span><span class="dl">'</span><span class="s1">touchstart</span><span class="dl">'</span><span class="p">)</span> <span class="o">&amp;&amp;</span> <span class="nx">$window</span><span class="p">.</span><span class="nf">on</span><span class="p">(</span><span class="dl">'</span><span class="s1">scroll</span><span class="dl">'</span><span class="p">,</span> <span class="nx">hide</span><span class="p">);</span>
<span class="nx">$window</span><span class="p">.</span><span class="nf">on</span><span class="p">(</span><span class="dl">'</span><span class="s1">keyup</span><span class="dl">'</span><span class="p">,</span> <span class="nx">handleKeyup</span><span class="p">);</span>
<span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
<span class="nx">activeCount</span> <span class="o">&gt;</span> <span class="mi">0</span> <span class="o">&amp;&amp;</span> <span class="nx">activeCount</span><span class="o">--</span><span class="p">;</span>
<span class="nx">$root</span><span class="p">.</span><span class="nf">removeClass</span><span class="p">(</span><span class="dl">'</span><span class="s1">modal--show</span><span class="dl">'</span><span class="p">);</span>
<span class="nx">$window</span><span class="p">.</span><span class="nf">scrollTop</span><span class="p">(</span><span class="nx">scrollTop</span><span class="p">);</span>
<span class="nx">activeCount</span> <span class="o">===</span> <span class="mi">0</span> <span class="o">&amp;&amp;</span> <span class="p">(</span><span class="nx">$pageRoot</span><span class="p">.</span><span class="nf">removeClass</span><span class="p">(</span><span class="dl">'</span><span class="s1">show-modal</span><span class="dl">'</span><span class="p">),</span> <span class="nx">$body</span><span class="p">.</span><span class="nf">removeClass</span><span class="p">(</span><span class="dl">'</span><span class="s1">of-hidden</span><span class="dl">'</span><span class="p">));</span>
<span class="nx">hideWhenWindowScroll</span> <span class="o">&amp;&amp;</span> <span class="nb">window</span><span class="p">.</span><span class="nf">hasEvent</span><span class="p">(</span><span class="dl">'</span><span class="s1">touchstart</span><span class="dl">'</span><span class="p">)</span> <span class="o">&amp;&amp;</span> <span class="nx">$window</span><span class="p">.</span><span class="nf">off</span><span class="p">(</span><span class="dl">'</span><span class="s1">scroll</span><span class="dl">'</span><span class="p">,</span> <span class="nx">hide</span><span class="p">);</span>
<span class="nx">$window</span><span class="p">.</span><span class="nf">off</span><span class="p">(</span><span class="dl">'</span><span class="s1">keyup</span><span class="dl">'</span><span class="p">,</span> <span class="nx">handleKeyup</span><span class="p">);</span>
<span class="p">}</span>
<span class="nx">onChange</span> <span class="o">&amp;&amp;</span> <span class="nf">onChange</span><span class="p">(</span><span class="nx">visible</span><span class="p">);</span>
<span class="p">}</span>
<span class="kd">function</span> <span class="nf">show</span><span class="p">()</span> <span class="p">{</span>
<span class="nf">setState</span><span class="p">(</span><span class="kc">true</span><span class="p">);</span>
<span class="p">}</span>
<span class="kd">function</span> <span class="nf">hide</span><span class="p">()</span> <span class="p">{</span>
<span class="nf">setState</span><span class="p">(</span><span class="kc">false</span><span class="p">);</span>
<span class="p">}</span>
<span class="kd">function</span> <span class="nf">handleKeyup</span><span class="p">(</span><span class="nx">e</span><span class="p">)</span> <span class="p">{</span>
<span class="c1">// Char Code: 27 ESC</span>
<span class="k">if </span><span class="p">(</span><span class="nx">e</span><span class="p">.</span><span class="nx">which</span> <span class="o">===</span> <span class="mi">27</span><span class="p">)</span> <span class="p">{</span>
<span class="nf">hide</span><span class="p">();</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="nf">setOptions</span><span class="p">(</span><span class="nx">options</span><span class="p">);</span>
<span class="nf">init</span><span class="p">();</span>
<span class="k">return</span> <span class="p">{</span>
<span class="na">show</span><span class="p">:</span> <span class="nx">show</span><span class="p">,</span>
<span class="na">hide</span><span class="p">:</span> <span class="nx">hide</span><span class="p">,</span>
<span class="na">$el</span><span class="p">:</span> <span class="nx">$root</span>
<span class="p">};</span>
<span class="p">}</span>
<span class="nx">$</span><span class="p">.</span><span class="nx">fn</span><span class="p">.</span><span class="nx">modal</span> <span class="o">=</span> <span class="nx">modal</span><span class="p">;</span>
<span class="p">});</span>
<span class="p">})();</span>
<span class="nt">&lt;/script&gt;&lt;div</span> <span class="na">class=</span><span class="s">"modal modal--overflow page__search-modal d-print-none js-page-search-modal"</span><span class="nt">&gt;&lt;script&gt;</span>
<span class="p">(</span><span class="nf">function </span><span class="p">()</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">SOURCES</span> <span class="o">=</span> <span class="nb">window</span><span class="p">.</span><span class="nx">TEXT_VARIABLES</span><span class="p">.</span><span class="nx">sources</span><span class="p">;</span>
<span class="nb">window</span><span class="p">.</span><span class="nx">Lazyload</span><span class="p">.</span><span class="nf">js</span><span class="p">(</span><span class="nx">SOURCES</span><span class="p">.</span><span class="nx">jquery</span><span class="p">,</span> <span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
<span class="c1">// search panel</span>
<span class="kd">var</span> <span class="nx">search</span> <span class="o">=</span> <span class="p">(</span><span class="nb">window</span><span class="p">.</span><span class="nx">search</span> <span class="o">||</span> <span class="p">(</span><span class="nb">window</span><span class="p">.</span><span class="nx">search</span> <span class="o">=</span> <span class="p">{}));</span>
<span class="kd">var</span> <span class="nx">useDefaultSearchBox</span> <span class="o">=</span> <span class="nb">window</span><span class="p">.</span><span class="nx">useDefaultSearchBox</span> <span class="o">===</span> <span class="kc">undefined</span> <span class="p">?</span>
<span class="kc">true</span> <span class="p">:</span> <span class="nb">window</span><span class="p">.</span><span class="nx">useDefaultSearchBox</span> <span class="p">;</span>
<span class="kd">var</span> <span class="nx">$searchModal</span> <span class="o">=</span> <span class="nf">$</span><span class="p">(</span><span class="dl">'</span><span class="s1">.js-page-search-modal</span><span class="dl">'</span><span class="p">);</span>
<span class="kd">var</span> <span class="nx">$searchToggle</span> <span class="o">=</span> <span class="nf">$</span><span class="p">(</span><span class="dl">'</span><span class="s1">.js-search-toggle</span><span class="dl">'</span><span class="p">);</span>
<span class="kd">var</span> <span class="nx">searchModal</span> <span class="o">=</span> <span class="nx">$searchModal</span><span class="p">.</span><span class="nf">modal</span><span class="p">({</span> <span class="na">onChange</span><span class="p">:</span> <span class="nx">handleModalChange</span><span class="p">,</span> <span class="na">hideWhenWindowScroll</span><span class="p">:</span> <span class="kc">true</span> <span class="p">});</span>
<span class="kd">var</span> <span class="nx">modalVisible</span> <span class="o">=</span> <span class="kc">false</span><span class="p">;</span>
<span class="nx">search</span><span class="p">.</span><span class="nx">searchModal</span> <span class="o">=</span> <span class="nx">searchModal</span><span class="p">;</span>
<span class="kd">var</span> <span class="nx">$searchBox</span> <span class="o">=</span> <span class="kc">null</span><span class="p">;</span>
<span class="kd">var</span> <span class="nx">$searchInput</span> <span class="o">=</span> <span class="kc">null</span><span class="p">;</span>
<span class="kd">var</span> <span class="nx">$searchClear</span> <span class="o">=</span> <span class="kc">null</span><span class="p">;</span>
<span class="kd">function</span> <span class="nf">getModalVisible</span><span class="p">()</span> <span class="p">{</span>
<span class="k">return</span> <span class="nx">modalVisible</span><span class="p">;</span>
<span class="p">}</span>
<span class="nx">search</span><span class="p">.</span><span class="nx">getModalVisible</span> <span class="o">=</span> <span class="nx">getModalVisible</span><span class="p">;</span>
<span class="kd">function</span> <span class="nf">handleModalChange</span><span class="p">(</span><span class="nx">visible</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">modalVisible</span> <span class="o">=</span> <span class="nx">visible</span><span class="p">;</span>
<span class="k">if </span><span class="p">(</span><span class="nx">visible</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">search</span><span class="p">.</span><span class="nx">onShow</span> <span class="o">&amp;&amp;</span> <span class="nx">search</span><span class="p">.</span><span class="nf">onShow</span><span class="p">();</span>
<span class="nx">useDefaultSearchBox</span> <span class="o">&amp;&amp;</span> <span class="nx">$searchInput</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">&amp;&amp;</span> <span class="nx">$searchInput</span><span class="p">[</span><span class="mi">0</span><span class="p">].</span><span class="nf">focus</span><span class="p">();</span>
<span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
<span class="nx">search</span><span class="p">.</span><span class="nx">onShow</span> <span class="o">&amp;&amp;</span> <span class="nx">search</span><span class="p">.</span><span class="nf">onHide</span><span class="p">();</span>
<span class="nx">useDefaultSearchBox</span> <span class="o">&amp;&amp;</span> <span class="nx">$searchInput</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">&amp;&amp;</span> <span class="nx">$searchInput</span><span class="p">[</span><span class="mi">0</span><span class="p">].</span><span class="nf">blur</span><span class="p">();</span>
<span class="nf">setTimeout</span><span class="p">(</span><span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
<span class="nx">useDefaultSearchBox</span> <span class="o">&amp;&amp;</span> <span class="p">(</span><span class="nx">$searchInput</span><span class="p">.</span><span class="nf">val</span><span class="p">(</span><span class="dl">''</span><span class="p">),</span> <span class="nx">$searchBox</span><span class="p">.</span><span class="nf">removeClass</span><span class="p">(</span><span class="dl">'</span><span class="s1">not-empty</span><span class="dl">'</span><span class="p">));</span>
<span class="nx">search</span><span class="p">.</span><span class="nx">clear</span> <span class="o">&amp;&amp;</span> <span class="nx">search</span><span class="p">.</span><span class="nf">clear</span><span class="p">();</span>
<span class="nb">window</span><span class="p">.</span><span class="nx">pageAsideAffix</span> <span class="o">&amp;&amp;</span> <span class="nb">window</span><span class="p">.</span><span class="nx">pageAsideAffix</span><span class="p">.</span><span class="nf">refresh</span><span class="p">();</span>
<span class="p">},</span> <span class="mi">400</span><span class="p">);</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="nx">$searchToggle</span><span class="p">.</span><span class="nf">on</span><span class="p">(</span><span class="dl">'</span><span class="s1">click</span><span class="dl">'</span><span class="p">,</span> <span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
<span class="nx">modalVisible</span> <span class="p">?</span> <span class="nx">searchModal</span><span class="p">.</span><span class="nf">hide</span><span class="p">()</span> <span class="p">:</span> <span class="nx">searchModal</span><span class="p">.</span><span class="nf">show</span><span class="p">();</span>
<span class="p">});</span>
<span class="c1">// Char Code: 83 S, 191 /</span>
<span class="nf">$</span><span class="p">(</span><span class="nb">window</span><span class="p">).</span><span class="nf">on</span><span class="p">(</span><span class="dl">'</span><span class="s1">keyup</span><span class="dl">'</span><span class="p">,</span> <span class="kd">function</span><span class="p">(</span><span class="nx">e</span><span class="p">)</span> <span class="p">{</span>
<span class="k">if </span><span class="p">(</span><span class="o">!</span><span class="nx">modalVisible</span> <span class="o">&amp;&amp;</span> <span class="o">!</span><span class="nb">window</span><span class="p">.</span><span class="nf">isFormElement</span><span class="p">(</span><span class="nx">e</span><span class="p">.</span><span class="nx">target</span> <span class="o">||</span> <span class="nx">e</span><span class="p">.</span><span class="nx">srcElement</span><span class="p">)</span> <span class="o">&amp;&amp;</span> <span class="p">(</span><span class="nx">e</span><span class="p">.</span><span class="nx">which</span> <span class="o">===</span> <span class="mi">83</span> <span class="o">||</span> <span class="nx">e</span><span class="p">.</span><span class="nx">which</span> <span class="o">===</span> <span class="mi">191</span><span class="p">))</span> <span class="p">{</span>
<span class="nx">modalVisible</span> <span class="o">||</span> <span class="nx">searchModal</span><span class="p">.</span><span class="nf">show</span><span class="p">();</span>
<span class="p">}</span>
<span class="p">});</span>
<span class="k">if </span><span class="p">(</span><span class="nx">useDefaultSearchBox</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">$searchBox</span> <span class="o">=</span> <span class="nf">$</span><span class="p">(</span><span class="dl">'</span><span class="s1">.js-search-box</span><span class="dl">'</span><span class="p">);</span>
<span class="nx">$searchInput</span> <span class="o">=</span> <span class="nx">$searchBox</span><span class="p">.</span><span class="nf">children</span><span class="p">(</span><span class="dl">'</span><span class="s1">input</span><span class="dl">'</span><span class="p">);</span>
<span class="nx">$searchClear</span> <span class="o">=</span> <span class="nx">$searchBox</span><span class="p">.</span><span class="nf">children</span><span class="p">(</span><span class="dl">'</span><span class="s1">.js-icon-clear</span><span class="dl">'</span><span class="p">);</span>
<span class="nx">search</span><span class="p">.</span><span class="nx">getSearchInput</span> <span class="o">=</span> <span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
<span class="k">return</span> <span class="nx">$searchInput</span><span class="p">.</span><span class="nf">get</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span>
<span class="p">};</span>
<span class="nx">search</span><span class="p">.</span><span class="nx">getVal</span> <span class="o">=</span> <span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
<span class="k">return</span> <span class="nx">$searchInput</span><span class="p">.</span><span class="nf">val</span><span class="p">();</span>
<span class="p">};</span>
<span class="nx">search</span><span class="p">.</span><span class="nx">setVal</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">val</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">$searchInput</span><span class="p">.</span><span class="nf">val</span><span class="p">(</span><span class="nx">val</span><span class="p">);</span>
<span class="p">};</span>
<span class="nx">$searchInput</span><span class="p">.</span><span class="nf">on</span><span class="p">(</span><span class="dl">'</span><span class="s1">focus</span><span class="dl">'</span><span class="p">,</span> <span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
<span class="nf">$</span><span class="p">(</span><span class="k">this</span><span class="p">).</span><span class="nf">addClass</span><span class="p">(</span><span class="dl">'</span><span class="s1">focus</span><span class="dl">'</span><span class="p">);</span>
<span class="p">});</span>
<span class="nx">$searchInput</span><span class="p">.</span><span class="nf">on</span><span class="p">(</span><span class="dl">'</span><span class="s1">blur</span><span class="dl">'</span><span class="p">,</span> <span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
<span class="nf">$</span><span class="p">(</span><span class="k">this</span><span class="p">).</span><span class="nf">removeClass</span><span class="p">(</span><span class="dl">'</span><span class="s1">focus</span><span class="dl">'</span><span class="p">);</span>
<span class="p">});</span>
<span class="nx">$searchInput</span><span class="p">.</span><span class="nf">on</span><span class="p">(</span><span class="dl">'</span><span class="s1">input</span><span class="dl">'</span><span class="p">,</span> <span class="nb">window</span><span class="p">.</span><span class="nf">throttle</span><span class="p">(</span><span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">val</span> <span class="o">=</span> <span class="nf">$</span><span class="p">(</span><span class="k">this</span><span class="p">).</span><span class="nf">val</span><span class="p">();</span>
<span class="k">if </span><span class="p">(</span><span class="nx">val</span> <span class="o">===</span> <span class="dl">''</span> <span class="o">||</span> <span class="k">typeof</span> <span class="nx">val</span> <span class="o">!==</span> <span class="dl">'</span><span class="s1">string</span><span class="dl">'</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">search</span><span class="p">.</span><span class="nx">clear</span> <span class="o">&amp;&amp;</span> <span class="nx">search</span><span class="p">.</span><span class="nf">clear</span><span class="p">();</span>
<span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
<span class="nx">$searchBox</span><span class="p">.</span><span class="nf">addClass</span><span class="p">(</span><span class="dl">'</span><span class="s1">not-empty</span><span class="dl">'</span><span class="p">);</span>
<span class="nx">search</span><span class="p">.</span><span class="nx">onInputNotEmpty</span> <span class="o">&amp;&amp;</span> <span class="nx">search</span><span class="p">.</span><span class="nf">onInputNotEmpty</span><span class="p">(</span><span class="nx">val</span><span class="p">);</span>
<span class="p">}</span>
<span class="p">},</span> <span class="mi">400</span><span class="p">));</span>
<span class="nx">$searchClear</span><span class="p">.</span><span class="nf">on</span><span class="p">(</span><span class="dl">'</span><span class="s1">click</span><span class="dl">'</span><span class="p">,</span> <span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
<span class="nx">$searchInput</span><span class="p">.</span><span class="nf">val</span><span class="p">(</span><span class="dl">''</span><span class="p">);</span> <span class="nx">$searchBox</span><span class="p">.</span><span class="nf">removeClass</span><span class="p">(</span><span class="dl">'</span><span class="s1">not-empty</span><span class="dl">'</span><span class="p">);</span>
<span class="nx">search</span><span class="p">.</span><span class="nx">clear</span> <span class="o">&amp;&amp;</span> <span class="nx">search</span><span class="p">.</span><span class="nf">clear</span><span class="p">();</span>
<span class="p">});</span>
<span class="p">}</span>
<span class="p">});</span>
<span class="p">})();</span>
<span class="nt">&lt;/script&gt;&lt;div</span> <span class="na">class=</span><span class="s">"search search--dark"</span><span class="nt">&gt;</span>
<span class="nt">&lt;div</span> <span class="na">class=</span><span class="s">"main"</span><span class="nt">&gt;</span>
<span class="nt">&lt;div</span> <span class="na">class=</span><span class="s">"search__header"</span><span class="nt">&gt;</span>Recherche<span class="nt">&lt;/div&gt;</span>
<span class="nt">&lt;div</span> <span class="na">class=</span><span class="s">"search-bar"</span><span class="nt">&gt;</span>
<span class="nt">&lt;div</span> <span class="na">class=</span><span class="s">"search-box js-search-box"</span><span class="nt">&gt;</span>
<span class="nt">&lt;div</span> <span class="na">class=</span><span class="s">"search-box__icon-search"</span><span class="nt">&gt;&lt;i</span> <span class="na">class=</span><span class="s">"fas fa-search"</span><span class="nt">&gt;&lt;/i&gt;&lt;/div&gt;</span>
<span class="nt">&lt;input</span> <span class="na">id=</span><span class="s">"search-input"</span> <span class="na">type=</span><span class="s">"text"</span> <span class="nt">/&gt;</span>
<span class="nt">&lt;div</span> <span class="na">class=</span><span class="s">"search-box__icon-clear js-icon-clear"</span><span class="nt">&gt;</span>
<span class="nt">&lt;a&gt;&lt;i</span> <span class="na">class=</span><span class="s">"fas fa-times"</span><span class="nt">&gt;&lt;/i&gt;&lt;/a&gt;</span>
<span class="nt">&lt;/div&gt;</span>
<span class="nt">&lt;/div&gt;</span>
<span class="nt">&lt;button</span> <span class="na">class=</span><span class="s">"button button--theme-dark button--pill search__cancel js-search-toggle"</span><span class="nt">&gt;</span>
Annuler<span class="nt">&lt;/button&gt;</span>
<span class="nt">&lt;/div&gt;</span>
<span class="nt">&lt;div</span> <span class="na">id=</span><span class="s">"results-container"</span> <span class="na">class=</span><span class="s">"search-result js-search-result"</span><span class="nt">&gt;&lt;/div&gt;</span>
<span class="nt">&lt;/div&gt;</span>
<span class="nt">&lt;/div&gt;</span>
<span class="c">&lt;!-- Script pointing to search-script.js --&gt;</span>
<span class="nt">&lt;script&gt;</span><span class="cm">/*!
* Simple-Jekyll-Search
* Copyright 2015-2020, Christian Fei
* Licensed under the MIT License.
*/</span>
<span class="p">(</span><span class="kd">function</span><span class="p">(){</span>
<span class="dl">'</span><span class="s1">use strict</span><span class="dl">'</span>
<span class="kd">var</span> <span class="nx">_$Templater_7</span> <span class="o">=</span> <span class="p">{</span>
<span class="na">compile</span><span class="p">:</span> <span class="nx">compile</span><span class="p">,</span>
<span class="na">setOptions</span><span class="p">:</span> <span class="nx">setOptions</span>
<span class="p">}</span>
<span class="kd">const</span> <span class="nx">options</span> <span class="o">=</span> <span class="p">{}</span>
<span class="nx">options</span><span class="p">.</span><span class="nx">pattern</span> <span class="o">=</span> <span class="sr">/</span><span class="se">\{(</span><span class="sr">.*</span><span class="se">?)\}</span><span class="sr">/g</span>
<span class="nx">options</span><span class="p">.</span><span class="nx">template</span> <span class="o">=</span> <span class="dl">''</span>
<span class="nx">options</span><span class="p">.</span><span class="nx">middleware</span> <span class="o">=</span> <span class="nf">function </span><span class="p">()</span> <span class="p">{}</span>
<span class="kd">function</span> <span class="nf">setOptions</span> <span class="p">(</span><span class="nx">_options</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">options</span><span class="p">.</span><span class="nx">pattern</span> <span class="o">=</span> <span class="nx">_options</span><span class="p">.</span><span class="nx">pattern</span> <span class="o">||</span> <span class="nx">options</span><span class="p">.</span><span class="nx">pattern</span>
<span class="nx">options</span><span class="p">.</span><span class="nx">template</span> <span class="o">=</span> <span class="nx">_options</span><span class="p">.</span><span class="nx">template</span> <span class="o">||</span> <span class="nx">options</span><span class="p">.</span><span class="nx">template</span>
<span class="k">if </span><span class="p">(</span><span class="k">typeof</span> <span class="nx">_options</span><span class="p">.</span><span class="nx">middleware</span> <span class="o">===</span> <span class="dl">'</span><span class="s1">function</span><span class="dl">'</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">options</span><span class="p">.</span><span class="nx">middleware</span> <span class="o">=</span> <span class="nx">_options</span><span class="p">.</span><span class="nx">middleware</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="kd">function</span> <span class="nf">compile</span> <span class="p">(</span><span class="nx">data</span><span class="p">)</span> <span class="p">{</span>
<span class="k">return</span> <span class="nx">options</span><span class="p">.</span><span class="nx">template</span><span class="p">.</span><span class="nf">replace</span><span class="p">(</span><span class="nx">options</span><span class="p">.</span><span class="nx">pattern</span><span class="p">,</span> <span class="nf">function </span><span class="p">(</span><span class="nx">match</span><span class="p">,</span> <span class="nx">prop</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">const</span> <span class="nx">value</span> <span class="o">=</span> <span class="nx">options</span><span class="p">.</span><span class="nf">middleware</span><span class="p">(</span><span class="nx">prop</span><span class="p">,</span> <span class="nx">data</span><span class="p">[</span><span class="nx">prop</span><span class="p">],</span> <span class="nx">options</span><span class="p">.</span><span class="nx">template</span><span class="p">)</span>
<span class="k">if </span><span class="p">(</span><span class="k">typeof</span> <span class="nx">value</span> <span class="o">!==</span> <span class="dl">'</span><span class="s1">undefined</span><span class="dl">'</span><span class="p">)</span> <span class="p">{</span>
<span class="k">return</span> <span class="nx">value</span>
<span class="p">}</span>
<span class="k">return</span> <span class="nx">data</span><span class="p">[</span><span class="nx">prop</span><span class="p">]</span> <span class="o">||</span> <span class="nx">match</span>
<span class="p">})</span>
<span class="p">}</span>
<span class="dl">'</span><span class="s1">use strict</span><span class="dl">'</span><span class="p">;</span>
<span class="kd">function</span> <span class="nf">fuzzysearch</span> <span class="p">(</span><span class="nx">needle</span><span class="p">,</span> <span class="nx">haystack</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">tlen</span> <span class="o">=</span> <span class="nx">haystack</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span>
<span class="kd">var</span> <span class="nx">qlen</span> <span class="o">=</span> <span class="nx">needle</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span>
<span class="k">if </span><span class="p">(</span><span class="nx">qlen</span> <span class="o">&gt;</span> <span class="nx">tlen</span><span class="p">)</span> <span class="p">{</span>
<span class="k">return</span> <span class="kc">false</span><span class="p">;</span>
<span class="p">}</span>
<span class="k">if </span><span class="p">(</span><span class="nx">qlen</span> <span class="o">===</span> <span class="nx">tlen</span><span class="p">)</span> <span class="p">{</span>
<span class="k">return</span> <span class="nx">needle</span> <span class="o">===</span> <span class="nx">haystack</span><span class="p">;</span>
<span class="p">}</span>
<span class="nl">outer</span><span class="p">:</span> <span class="k">for</span> <span class="p">(</span><span class="kd">var</span> <span class="nx">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span> <span class="nx">j</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">i</span> <span class="o">&lt;</span> <span class="nx">qlen</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">nch</span> <span class="o">=</span> <span class="nx">needle</span><span class="p">.</span><span class="nf">charCodeAt</span><span class="p">(</span><span class="nx">i</span><span class="p">);</span>
<span class="k">while</span> <span class="p">(</span><span class="nx">j</span> <span class="o">&lt;</span> <span class="nx">tlen</span><span class="p">)</span> <span class="p">{</span>
<span class="k">if </span><span class="p">(</span><span class="nx">haystack</span><span class="p">.</span><span class="nf">charCodeAt</span><span class="p">(</span><span class="nx">j</span><span class="o">++</span><span class="p">)</span> <span class="o">===</span> <span class="nx">nch</span><span class="p">)</span> <span class="p">{</span>
<span class="k">continue</span> <span class="nx">outer</span><span class="p">;</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="k">return</span> <span class="kc">false</span><span class="p">;</span>
<span class="p">}</span>
<span class="k">return</span> <span class="kc">true</span><span class="p">;</span>
<span class="p">}</span>
<span class="kd">var</span> <span class="nx">_$fuzzysearch_1</span> <span class="o">=</span> <span class="nx">fuzzysearch</span><span class="p">;</span>
<span class="dl">'</span><span class="s1">use strict</span><span class="dl">'</span>
<span class="cm">/* removed: const _$fuzzysearch_1 = require('fuzzysearch') */</span><span class="p">;</span>
<span class="kd">var</span> <span class="nx">_$FuzzySearchStrategy_5</span> <span class="o">=</span> <span class="k">new</span> <span class="nc">FuzzySearchStrategy</span><span class="p">()</span>
<span class="kd">function</span> <span class="nf">FuzzySearchStrategy</span> <span class="p">()</span> <span class="p">{</span>
<span class="k">this</span><span class="p">.</span><span class="nx">matches</span> <span class="o">=</span> <span class="nf">function </span><span class="p">(</span><span class="nx">string</span><span class="p">,</span> <span class="nx">crit</span><span class="p">)</span> <span class="p">{</span>
<span class="k">return</span> <span class="nx">_</span><span class="nf">$fuzzysearch_1</span><span class="p">(</span><span class="nx">crit</span><span class="p">.</span><span class="nf">toLowerCase</span><span class="p">(),</span> <span class="nx">string</span><span class="p">.</span><span class="nf">toLowerCase</span><span class="p">())</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="dl">'</span><span class="s1">use strict</span><span class="dl">'</span>
<span class="kd">var</span> <span class="nx">_$LiteralSearchStrategy_6</span> <span class="o">=</span> <span class="k">new</span> <span class="nc">LiteralSearchStrategy</span><span class="p">()</span>
<span class="kd">function</span> <span class="nf">LiteralSearchStrategy</span> <span class="p">()</span> <span class="p">{</span>
<span class="k">this</span><span class="p">.</span><span class="nx">matches</span> <span class="o">=</span> <span class="nf">function </span><span class="p">(</span><span class="nx">str</span><span class="p">,</span> <span class="nx">crit</span><span class="p">)</span> <span class="p">{</span>
<span class="k">if </span><span class="p">(</span><span class="o">!</span><span class="nx">str</span><span class="p">)</span> <span class="k">return</span> <span class="kc">false</span>
<span class="nx">str</span> <span class="o">=</span> <span class="nx">str</span><span class="p">.</span><span class="nf">trim</span><span class="p">().</span><span class="nf">toLowerCase</span><span class="p">()</span>
<span class="nx">crit</span> <span class="o">=</span> <span class="nx">crit</span><span class="p">.</span><span class="nf">trim</span><span class="p">().</span><span class="nf">toLowerCase</span><span class="p">()</span>
<span class="k">return</span> <span class="nx">crit</span><span class="p">.</span><span class="nf">split</span><span class="p">(</span><span class="dl">'</span><span class="s1"> </span><span class="dl">'</span><span class="p">).</span><span class="nf">filter</span><span class="p">(</span><span class="nf">function </span><span class="p">(</span><span class="nx">word</span><span class="p">)</span> <span class="p">{</span>
<span class="k">return</span> <span class="nx">str</span><span class="p">.</span><span class="nf">indexOf</span><span class="p">(</span><span class="nx">word</span><span class="p">)</span> <span class="o">&gt;=</span> <span class="mi">0</span>
<span class="p">}).</span><span class="nx">length</span> <span class="o">===</span> <span class="nx">crit</span><span class="p">.</span><span class="nf">split</span><span class="p">(</span><span class="dl">'</span><span class="s1"> </span><span class="dl">'</span><span class="p">).</span><span class="nx">length</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="dl">'</span><span class="s1">use strict</span><span class="dl">'</span>
<span class="kd">var</span> <span class="nx">_$Repository_4</span> <span class="o">=</span> <span class="p">{</span>
<span class="na">put</span><span class="p">:</span> <span class="nx">put</span><span class="p">,</span>
<span class="na">clear</span><span class="p">:</span> <span class="nx">clear</span><span class="p">,</span>
<span class="na">search</span><span class="p">:</span> <span class="nx">search</span><span class="p">,</span>
<span class="na">setOptions</span><span class="p">:</span> <span class="nx">__setOptions_4</span>
<span class="p">}</span>
<span class="cm">/* removed: const _$FuzzySearchStrategy_5 = require('./SearchStrategies/FuzzySearchStrategy') */</span><span class="p">;</span>
<span class="cm">/* removed: const _$LiteralSearchStrategy_6 = require('./SearchStrategies/LiteralSearchStrategy') */</span><span class="p">;</span>
<span class="kd">function</span> <span class="nf">NoSort</span> <span class="p">()</span> <span class="p">{</span>
<span class="k">return</span> <span class="mi">0</span>
<span class="p">}</span>
<span class="kd">const</span> <span class="nx">data</span> <span class="o">=</span> <span class="p">[]</span>
<span class="kd">let</span> <span class="nx">opt</span> <span class="o">=</span> <span class="p">{}</span>
<span class="nx">opt</span><span class="p">.</span><span class="nx">fuzzy</span> <span class="o">=</span> <span class="kc">false</span>
<span class="nx">opt</span><span class="p">.</span><span class="nx">limit</span> <span class="o">=</span> <span class="mi">10</span>
<span class="nx">opt</span><span class="p">.</span><span class="nx">searchStrategy</span> <span class="o">=</span> <span class="nx">opt</span><span class="p">.</span><span class="nx">fuzzy</span> <span class="p">?</span> <span class="nx">_$FuzzySearchStrategy_5</span> <span class="p">:</span> <span class="nx">_$LiteralSearchStrategy_6</span>
<span class="nx">opt</span><span class="p">.</span><span class="nx">sort</span> <span class="o">=</span> <span class="nx">NoSort</span>
<span class="nx">opt</span><span class="p">.</span><span class="nx">exclude</span> <span class="o">=</span> <span class="p">[]</span>
<span class="kd">function</span> <span class="nf">put</span> <span class="p">(</span><span class="nx">data</span><span class="p">)</span> <span class="p">{</span>
<span class="k">if </span><span class="p">(</span><span class="nf">isObject</span><span class="p">(</span><span class="nx">data</span><span class="p">))</span> <span class="p">{</span>
<span class="k">return</span> <span class="nf">addObject</span><span class="p">(</span><span class="nx">data</span><span class="p">)</span>
<span class="p">}</span>
<span class="k">if </span><span class="p">(</span><span class="nf">isArray</span><span class="p">(</span><span class="nx">data</span><span class="p">))</span> <span class="p">{</span>
<span class="k">return</span> <span class="nf">addArray</span><span class="p">(</span><span class="nx">data</span><span class="p">)</span>
<span class="p">}</span>
<span class="k">return</span> <span class="kc">undefined</span>
<span class="p">}</span>
<span class="kd">function</span> <span class="nf">clear</span> <span class="p">()</span> <span class="p">{</span>
<span class="nx">data</span><span class="p">.</span><span class="nx">length</span> <span class="o">=</span> <span class="mi">0</span>
<span class="k">return</span> <span class="nx">data</span>
<span class="p">}</span>
<span class="kd">function</span> <span class="nf">isObject</span> <span class="p">(</span><span class="nx">obj</span><span class="p">)</span> <span class="p">{</span>
<span class="k">return</span> <span class="nc">Boolean</span><span class="p">(</span><span class="nx">obj</span><span class="p">)</span> <span class="o">&amp;&amp;</span> <span class="nb">Object</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">toString</span><span class="p">.</span><span class="nf">call</span><span class="p">(</span><span class="nx">obj</span><span class="p">)</span> <span class="o">===</span> <span class="dl">'</span><span class="s1">[object Object]</span><span class="dl">'</span>
<span class="p">}</span>
<span class="kd">function</span> <span class="nf">isArray</span> <span class="p">(</span><span class="nx">obj</span><span class="p">)</span> <span class="p">{</span>
<span class="k">return</span> <span class="nc">Boolean</span><span class="p">(</span><span class="nx">obj</span><span class="p">)</span> <span class="o">&amp;&amp;</span> <span class="nb">Object</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">toString</span><span class="p">.</span><span class="nf">call</span><span class="p">(</span><span class="nx">obj</span><span class="p">)</span> <span class="o">===</span> <span class="dl">'</span><span class="s1">[object Array]</span><span class="dl">'</span>
<span class="p">}</span>
<span class="kd">function</span> <span class="nf">addObject</span> <span class="p">(</span><span class="nx">_data</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">data</span><span class="p">.</span><span class="nf">push</span><span class="p">(</span><span class="nx">_data</span><span class="p">)</span>
<span class="k">return</span> <span class="nx">data</span>
<span class="p">}</span>
<span class="kd">function</span> <span class="nf">addArray</span> <span class="p">(</span><span class="nx">_data</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">const</span> <span class="nx">added</span> <span class="o">=</span> <span class="p">[]</span>
<span class="nf">clear</span><span class="p">()</span>
<span class="k">for</span> <span class="p">(</span><span class="kd">let</span> <span class="nx">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span> <span class="nx">len</span> <span class="o">=</span> <span class="nx">_data</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span> <span class="nx">i</span> <span class="o">&lt;</span> <span class="nx">len</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
<span class="k">if </span><span class="p">(</span><span class="nf">isObject</span><span class="p">(</span><span class="nx">_data</span><span class="p">[</span><span class="nx">i</span><span class="p">]))</span> <span class="p">{</span>
<span class="nx">added</span><span class="p">.</span><span class="nf">push</span><span class="p">(</span><span class="nf">addObject</span><span class="p">(</span><span class="nx">_data</span><span class="p">[</span><span class="nx">i</span><span class="p">]))</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="k">return</span> <span class="nx">added</span>
<span class="p">}</span>
<span class="kd">function</span> <span class="nf">search</span> <span class="p">(</span><span class="nx">crit</span><span class="p">)</span> <span class="p">{</span>
<span class="k">if </span><span class="p">(</span><span class="o">!</span><span class="nx">crit</span><span class="p">)</span> <span class="p">{</span>
<span class="k">return</span> <span class="p">[]</span>
<span class="p">}</span>
<span class="k">return</span> <span class="nf">findMatches</span><span class="p">(</span><span class="nx">data</span><span class="p">,</span> <span class="nx">crit</span><span class="p">,</span> <span class="nx">opt</span><span class="p">.</span><span class="nx">searchStrategy</span><span class="p">,</span> <span class="nx">opt</span><span class="p">).</span><span class="nf">sort</span><span class="p">(</span><span class="nx">opt</span><span class="p">.</span><span class="nx">sort</span><span class="p">)</span>
<span class="p">}</span>
<span class="kd">function</span> <span class="nf">__setOptions_4</span> <span class="p">(</span><span class="nx">_opt</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">opt</span> <span class="o">=</span> <span class="nx">_opt</span> <span class="o">||</span> <span class="p">{}</span>
<span class="nx">opt</span><span class="p">.</span><span class="nx">fuzzy</span> <span class="o">=</span> <span class="nx">_opt</span><span class="p">.</span><span class="nx">fuzzy</span> <span class="o">||</span> <span class="kc">false</span>
<span class="nx">opt</span><span class="p">.</span><span class="nx">limit</span> <span class="o">=</span> <span class="nx">_opt</span><span class="p">.</span><span class="nx">limit</span> <span class="o">||</span> <span class="mi">10</span>
<span class="nx">opt</span><span class="p">.</span><span class="nx">searchStrategy</span> <span class="o">=</span> <span class="nx">_opt</span><span class="p">.</span><span class="nx">fuzzy</span> <span class="p">?</span> <span class="nx">_$FuzzySearchStrategy_5</span> <span class="p">:</span> <span class="nx">_$LiteralSearchStrategy_6</span>
<span class="nx">opt</span><span class="p">.</span><span class="nx">sort</span> <span class="o">=</span> <span class="nx">_opt</span><span class="p">.</span><span class="nx">sort</span> <span class="o">||</span> <span class="nx">NoSort</span>
<span class="nx">opt</span><span class="p">.</span><span class="nx">exclude</span> <span class="o">=</span> <span class="nx">_opt</span><span class="p">.</span><span class="nx">exclude</span> <span class="o">||</span> <span class="p">[]</span>
<span class="p">}</span>
<span class="kd">function</span> <span class="nf">findMatches</span> <span class="p">(</span><span class="nx">data</span><span class="p">,</span> <span class="nx">crit</span><span class="p">,</span> <span class="nx">strategy</span><span class="p">,</span> <span class="nx">opt</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">const</span> <span class="nx">matches</span> <span class="o">=</span> <span class="p">[]</span>
<span class="k">for</span> <span class="p">(</span><span class="kd">let</span> <span class="nx">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">i</span> <span class="o">&lt;</span> <span class="nx">data</span><span class="p">.</span><span class="nx">length</span> <span class="o">&amp;&amp;</span> <span class="nx">matches</span><span class="p">.</span><span class="nx">length</span> <span class="o">&lt;</span> <span class="nx">opt</span><span class="p">.</span><span class="nx">limit</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">const</span> <span class="nx">match</span> <span class="o">=</span> <span class="nf">findMatchesInObject</span><span class="p">(</span><span class="nx">data</span><span class="p">[</span><span class="nx">i</span><span class="p">],</span> <span class="nx">crit</span><span class="p">,</span> <span class="nx">strategy</span><span class="p">,</span> <span class="nx">opt</span><span class="p">)</span>
<span class="k">if </span><span class="p">(</span><span class="nx">match</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">matches</span><span class="p">.</span><span class="nf">push</span><span class="p">(</span><span class="nx">match</span><span class="p">)</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="k">return</span> <span class="nx">matches</span>
<span class="p">}</span>
<span class="kd">function</span> <span class="nf">findMatchesInObject</span> <span class="p">(</span><span class="nx">obj</span><span class="p">,</span> <span class="nx">crit</span><span class="p">,</span> <span class="nx">strategy</span><span class="p">,</span> <span class="nx">opt</span><span class="p">)</span> <span class="p">{</span>
<span class="k">for </span><span class="p">(</span><span class="kd">const</span> <span class="nx">key</span> <span class="k">in</span> <span class="nx">obj</span><span class="p">)</span> <span class="p">{</span>
<span class="k">if </span><span class="p">(</span><span class="o">!</span><span class="nf">isExcluded</span><span class="p">(</span><span class="nx">obj</span><span class="p">[</span><span class="nx">key</span><span class="p">],</span> <span class="nx">opt</span><span class="p">.</span><span class="nx">exclude</span><span class="p">)</span> <span class="o">&amp;&amp;</span> <span class="nx">strategy</span><span class="p">.</span><span class="nf">matches</span><span class="p">(</span><span class="nx">obj</span><span class="p">[</span><span class="nx">key</span><span class="p">],</span> <span class="nx">crit</span><span class="p">))</span> <span class="p">{</span>
<span class="k">return</span> <span class="nx">obj</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="kd">function</span> <span class="nf">isExcluded</span> <span class="p">(</span><span class="nx">term</span><span class="p">,</span> <span class="nx">excludedTerms</span><span class="p">)</span> <span class="p">{</span>
<span class="k">for</span> <span class="p">(</span><span class="kd">let</span> <span class="nx">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span> <span class="nx">len</span> <span class="o">=</span> <span class="nx">excludedTerms</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span> <span class="nx">i</span> <span class="o">&lt;</span> <span class="nx">len</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">const</span> <span class="nx">excludedTerm</span> <span class="o">=</span> <span class="nx">excludedTerms</span><span class="p">[</span><span class="nx">i</span><span class="p">]</span>
<span class="k">if </span><span class="p">(</span><span class="k">new</span> <span class="nc">RegExp</span><span class="p">(</span><span class="nx">excludedTerm</span><span class="p">).</span><span class="nf">test</span><span class="p">(</span><span class="nx">term</span><span class="p">))</span> <span class="p">{</span>
<span class="k">return</span> <span class="kc">true</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="k">return</span> <span class="kc">false</span>
<span class="p">}</span>
<span class="cm">/* globals ActiveXObject:false */</span>
<span class="dl">'</span><span class="s1">use strict</span><span class="dl">'</span>
<span class="kd">var</span> <span class="nx">_$JSONLoader_2</span> <span class="o">=</span> <span class="p">{</span>
<span class="na">load</span><span class="p">:</span> <span class="nx">load</span>
<span class="p">}</span>
<span class="kd">function</span> <span class="nf">load</span> <span class="p">(</span><span class="nx">location</span><span class="p">,</span> <span class="nx">callback</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">const</span> <span class="nx">xhr</span> <span class="o">=</span> <span class="nf">getXHR</span><span class="p">()</span>
<span class="nx">xhr</span><span class="p">.</span><span class="nf">open</span><span class="p">(</span><span class="dl">'</span><span class="s1">GET</span><span class="dl">'</span><span class="p">,</span> <span class="nx">location</span><span class="p">,</span> <span class="kc">true</span><span class="p">)</span>
<span class="nx">xhr</span><span class="p">.</span><span class="nx">onreadystatechange</span> <span class="o">=</span> <span class="nf">createStateChangeListener</span><span class="p">(</span><span class="nx">xhr</span><span class="p">,</span> <span class="nx">callback</span><span class="p">)</span>
<span class="nx">xhr</span><span class="p">.</span><span class="nf">send</span><span class="p">()</span>
<span class="p">}</span>
<span class="kd">function</span> <span class="nf">createStateChangeListener</span> <span class="p">(</span><span class="nx">xhr</span><span class="p">,</span> <span class="nx">callback</span><span class="p">)</span> <span class="p">{</span>
<span class="k">return</span> <span class="nf">function </span><span class="p">()</span> <span class="p">{</span>
<span class="k">if </span><span class="p">(</span><span class="nx">xhr</span><span class="p">.</span><span class="nx">readyState</span> <span class="o">===</span> <span class="mi">4</span> <span class="o">&amp;&amp;</span> <span class="nx">xhr</span><span class="p">.</span><span class="nx">status</span> <span class="o">===</span> <span class="mi">200</span><span class="p">)</span> <span class="p">{</span>
<span class="k">try</span> <span class="p">{</span>
<span class="nf">callback</span><span class="p">(</span><span class="kc">null</span><span class="p">,</span> <span class="nx">JSON</span><span class="p">.</span><span class="nf">parse</span><span class="p">(</span><span class="nx">xhr</span><span class="p">.</span><span class="nx">responseText</span><span class="p">))</span>
<span class="p">}</span> <span class="k">catch </span><span class="p">(</span><span class="nx">err</span><span class="p">)</span> <span class="p">{</span>
<span class="nf">callback</span><span class="p">(</span><span class="nx">err</span><span class="p">,</span> <span class="kc">null</span><span class="p">)</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="kd">function</span> <span class="nf">getXHR</span> <span class="p">()</span> <span class="p">{</span>
<span class="k">return</span> <span class="nb">window</span><span class="p">.</span><span class="nx">XMLHttpRequest</span> <span class="p">?</span> <span class="k">new</span> <span class="nb">window</span><span class="p">.</span><span class="nc">XMLHttpRequest</span><span class="p">()</span> <span class="p">:</span> <span class="k">new</span> <span class="nc">ActiveXObject</span><span class="p">(</span><span class="dl">'</span><span class="s1">Microsoft.XMLHTTP</span><span class="dl">'</span><span class="p">)</span>
<span class="p">}</span>
<span class="dl">'</span><span class="s1">use strict</span><span class="dl">'</span>
<span class="kd">var</span> <span class="nx">_$OptionsValidator_3</span> <span class="o">=</span> <span class="kd">function</span> <span class="nf">OptionsValidator</span> <span class="p">(</span><span class="nx">params</span><span class="p">)</span> <span class="p">{</span>
<span class="k">if </span><span class="p">(</span><span class="o">!</span><span class="nf">validateParams</span><span class="p">(</span><span class="nx">params</span><span class="p">))</span> <span class="p">{</span>
<span class="k">throw</span> <span class="k">new</span> <span class="nc">Error</span><span class="p">(</span><span class="dl">'</span><span class="s1">-- OptionsValidator: required options missing</span><span class="dl">'</span><span class="p">)</span>
<span class="p">}</span>
<span class="k">if </span><span class="p">(</span><span class="o">!</span><span class="p">(</span><span class="k">this</span> <span class="k">instanceof</span> <span class="nx">OptionsValidator</span><span class="p">))</span> <span class="p">{</span>
<span class="k">return</span> <span class="k">new</span> <span class="nc">OptionsValidator</span><span class="p">(</span><span class="nx">params</span><span class="p">)</span>
<span class="p">}</span>
<span class="kd">const</span> <span class="nx">requiredOptions</span> <span class="o">=</span> <span class="nx">params</span><span class="p">.</span><span class="nx">required</span>
<span class="k">this</span><span class="p">.</span><span class="nx">getRequiredOptions</span> <span class="o">=</span> <span class="nf">function </span><span class="p">()</span> <span class="p">{</span>
<span class="k">return</span> <span class="nx">requiredOptions</span>
<span class="p">}</span>
<span class="k">this</span><span class="p">.</span><span class="nx">validate</span> <span class="o">=</span> <span class="nf">function </span><span class="p">(</span><span class="nx">parameters</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">const</span> <span class="nx">errors</span> <span class="o">=</span> <span class="p">[]</span>
<span class="nx">requiredOptions</span><span class="p">.</span><span class="nf">forEach</span><span class="p">(</span><span class="nf">function </span><span class="p">(</span><span class="nx">requiredOptionName</span><span class="p">)</span> <span class="p">{</span>
<span class="k">if </span><span class="p">(</span><span class="k">typeof</span> <span class="nx">parameters</span><span class="p">[</span><span class="nx">requiredOptionName</span><span class="p">]</span> <span class="o">===</span> <span class="dl">'</span><span class="s1">undefined</span><span class="dl">'</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">errors</span><span class="p">.</span><span class="nf">push</span><span class="p">(</span><span class="nx">requiredOptionName</span><span class="p">)</span>
<span class="p">}</span>
<span class="p">})</span>
<span class="k">return</span> <span class="nx">errors</span>
<span class="p">}</span>
<span class="kd">function</span> <span class="nf">validateParams</span> <span class="p">(</span><span class="nx">params</span><span class="p">)</span> <span class="p">{</span>
<span class="k">if </span><span class="p">(</span><span class="o">!</span><span class="nx">params</span><span class="p">)</span> <span class="p">{</span>
<span class="k">return</span> <span class="kc">false</span>
<span class="p">}</span>
<span class="k">return</span> <span class="k">typeof</span> <span class="nx">params</span><span class="p">.</span><span class="nx">required</span> <span class="o">!==</span> <span class="dl">'</span><span class="s1">undefined</span><span class="dl">'</span> <span class="o">&amp;&amp;</span> <span class="nx">params</span><span class="p">.</span><span class="nx">required</span> <span class="k">instanceof</span> <span class="nb">Array</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="dl">'</span><span class="s1">use strict</span><span class="dl">'</span>
<span class="kd">var</span> <span class="nx">_$utils_9</span> <span class="o">=</span> <span class="p">{</span>
<span class="na">merge</span><span class="p">:</span> <span class="nx">merge</span><span class="p">,</span>
<span class="na">isJSON</span><span class="p">:</span> <span class="nx">isJSON</span>
<span class="p">}</span>
<span class="kd">function</span> <span class="nf">merge</span> <span class="p">(</span><span class="nx">defaultParams</span><span class="p">,</span> <span class="nx">mergeParams</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">const</span> <span class="nx">mergedOptions</span> <span class="o">=</span> <span class="p">{}</span>
<span class="k">for </span><span class="p">(</span><span class="kd">const</span> <span class="nx">option</span> <span class="k">in</span> <span class="nx">defaultParams</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">mergedOptions</span><span class="p">[</span><span class="nx">option</span><span class="p">]</span> <span class="o">=</span> <span class="nx">defaultParams</span><span class="p">[</span><span class="nx">option</span><span class="p">]</span>
<span class="k">if </span><span class="p">(</span><span class="k">typeof</span> <span class="nx">mergeParams</span><span class="p">[</span><span class="nx">option</span><span class="p">]</span> <span class="o">!==</span> <span class="dl">'</span><span class="s1">undefined</span><span class="dl">'</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">mergedOptions</span><span class="p">[</span><span class="nx">option</span><span class="p">]</span> <span class="o">=</span> <span class="nx">mergeParams</span><span class="p">[</span><span class="nx">option</span><span class="p">]</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="k">return</span> <span class="nx">mergedOptions</span>
<span class="p">}</span>
<span class="kd">function</span> <span class="nf">isJSON</span> <span class="p">(</span><span class="nx">json</span><span class="p">)</span> <span class="p">{</span>
<span class="k">try</span> <span class="p">{</span>
<span class="k">if </span><span class="p">(</span><span class="nx">json</span> <span class="k">instanceof</span> <span class="nb">Object</span> <span class="o">&amp;&amp;</span> <span class="nx">JSON</span><span class="p">.</span><span class="nf">parse</span><span class="p">(</span><span class="nx">JSON</span><span class="p">.</span><span class="nf">stringify</span><span class="p">(</span><span class="nx">json</span><span class="p">)))</span> <span class="p">{</span>
<span class="k">return</span> <span class="kc">true</span>
<span class="p">}</span>
<span class="k">return</span> <span class="kc">false</span>
<span class="p">}</span> <span class="k">catch </span><span class="p">(</span><span class="nx">err</span><span class="p">)</span> <span class="p">{</span>
<span class="k">return</span> <span class="kc">false</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="kd">var</span> <span class="nx">_$src_8</span> <span class="o">=</span> <span class="p">{};</span>
<span class="p">(</span><span class="nf">function </span><span class="p">(</span><span class="nb">window</span><span class="p">)</span> <span class="p">{</span>
<span class="dl">'</span><span class="s1">use strict</span><span class="dl">'</span>
<span class="kd">let</span> <span class="nx">options</span> <span class="o">=</span> <span class="p">{</span>
<span class="na">searchInput</span><span class="p">:</span> <span class="kc">null</span><span class="p">,</span>
<span class="na">resultsContainer</span><span class="p">:</span> <span class="kc">null</span><span class="p">,</span>
<span class="na">json</span><span class="p">:</span> <span class="p">[],</span>
<span class="na">success</span><span class="p">:</span> <span class="nb">Function</span><span class="p">.</span><span class="nx">prototype</span><span class="p">,</span>
<span class="na">searchResultTemplate</span><span class="p">:</span> <span class="dl">'</span><span class="s1">&lt;li&gt;&lt;a href="{url}" title="{desc}"&gt;{title}&lt;/a&gt;&lt;/li&gt;</span><span class="dl">'</span><span class="p">,</span>
<span class="na">templateMiddleware</span><span class="p">:</span> <span class="nb">Function</span><span class="p">.</span><span class="nx">prototype</span><span class="p">,</span>
<span class="na">sortMiddleware</span><span class="p">:</span> <span class="nf">function </span><span class="p">()</span> <span class="p">{</span>
<span class="k">return</span> <span class="mi">0</span>
<span class="p">},</span>
<span class="na">noResultsText</span><span class="p">:</span> <span class="dl">'</span><span class="s1">No results found</span><span class="dl">'</span><span class="p">,</span>
<span class="na">limit</span><span class="p">:</span> <span class="mi">10</span><span class="p">,</span>
<span class="na">fuzzy</span><span class="p">:</span> <span class="kc">false</span><span class="p">,</span>
<span class="na">debounceTime</span><span class="p">:</span> <span class="kc">null</span><span class="p">,</span>
<span class="na">exclude</span><span class="p">:</span> <span class="p">[]</span>
<span class="p">}</span>
<span class="kd">let</span> <span class="nx">debounceTimerHandle</span>
<span class="kd">const</span> <span class="nx">debounce</span> <span class="o">=</span> <span class="nf">function </span><span class="p">(</span><span class="nx">func</span><span class="p">,</span> <span class="nx">delayMillis</span><span class="p">)</span> <span class="p">{</span>
<span class="k">if </span><span class="p">(</span><span class="nx">delayMillis</span><span class="p">)</span> <span class="p">{</span>
<span class="nf">clearTimeout</span><span class="p">(</span><span class="nx">debounceTimerHandle</span><span class="p">)</span>
<span class="nx">debounceTimerHandle</span> <span class="o">=</span> <span class="nf">setTimeout</span><span class="p">(</span><span class="nx">func</span><span class="p">,</span> <span class="nx">delayMillis</span><span class="p">)</span>
<span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
<span class="nx">func</span><span class="p">.</span><span class="nf">call</span><span class="p">()</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="kd">const</span> <span class="nx">requiredOptions</span> <span class="o">=</span> <span class="p">[</span><span class="dl">'</span><span class="s1">searchInput</span><span class="dl">'</span><span class="p">,</span> <span class="dl">'</span><span class="s1">resultsContainer</span><span class="dl">'</span><span class="p">,</span> <span class="dl">'</span><span class="s1">json</span><span class="dl">'</span><span class="p">]</span>
<span class="cm">/* removed: const _$Templater_7 = require('./Templater') */</span><span class="p">;</span>
<span class="cm">/* removed: const _$Repository_4 = require('./Repository') */</span><span class="p">;</span>
<span class="cm">/* removed: const _$JSONLoader_2 = require('./JSONLoader') */</span><span class="p">;</span>
<span class="kd">const</span> <span class="nx">optionsValidator</span> <span class="o">=</span> <span class="nc">_$OptionsValidator_3</span><span class="p">({</span>
<span class="na">required</span><span class="p">:</span> <span class="nx">requiredOptions</span>
<span class="p">})</span>
<span class="cm">/* removed: const _$utils_9 = require('./utils') */</span><span class="p">;</span>
<span class="nb">window</span><span class="p">.</span><span class="nx">SimpleJekyllSearch</span> <span class="o">=</span> <span class="nf">function </span><span class="p">(</span><span class="nx">_options</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">const</span> <span class="nx">errors</span> <span class="o">=</span> <span class="nx">optionsValidator</span><span class="p">.</span><span class="nf">validate</span><span class="p">(</span><span class="nx">_options</span><span class="p">)</span>
<span class="k">if </span><span class="p">(</span><span class="nx">errors</span><span class="p">.</span><span class="nx">length</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
<span class="nf">throwError</span><span class="p">(</span><span class="dl">'</span><span class="s1">You must specify the following required options: </span><span class="dl">'</span> <span class="o">+</span> <span class="nx">requiredOptions</span><span class="p">)</span>
<span class="p">}</span>
<span class="nx">options</span> <span class="o">=</span> <span class="nx">_$utils_9</span><span class="p">.</span><span class="nf">merge</span><span class="p">(</span><span class="nx">options</span><span class="p">,</span> <span class="nx">_options</span><span class="p">)</span>
<span class="nx">_$Templater_7</span><span class="p">.</span><span class="nf">setOptions</span><span class="p">({</span>
<span class="na">template</span><span class="p">:</span> <span class="nx">options</span><span class="p">.</span><span class="nx">searchResultTemplate</span><span class="p">,</span>
<span class="na">middleware</span><span class="p">:</span> <span class="nx">options</span><span class="p">.</span><span class="nx">templateMiddleware</span>
<span class="p">})</span>
<span class="nx">_$Repository_4</span><span class="p">.</span><span class="nf">setOptions</span><span class="p">({</span>
<span class="na">fuzzy</span><span class="p">:</span> <span class="nx">options</span><span class="p">.</span><span class="nx">fuzzy</span><span class="p">,</span>
<span class="na">limit</span><span class="p">:</span> <span class="nx">options</span><span class="p">.</span><span class="nx">limit</span><span class="p">,</span>
<span class="na">sort</span><span class="p">:</span> <span class="nx">options</span><span class="p">.</span><span class="nx">sortMiddleware</span><span class="p">,</span>
<span class="na">exclude</span><span class="p">:</span> <span class="nx">options</span><span class="p">.</span><span class="nx">exclude</span>
<span class="p">})</span>
<span class="k">if </span><span class="p">(</span><span class="nx">_$utils_9</span><span class="p">.</span><span class="nf">isJSON</span><span class="p">(</span><span class="nx">options</span><span class="p">.</span><span class="nx">json</span><span class="p">))</span> <span class="p">{</span>
<span class="nf">initWithJSON</span><span class="p">(</span><span class="nx">options</span><span class="p">.</span><span class="nx">json</span><span class="p">)</span>
<span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
<span class="nf">initWithURL</span><span class="p">(</span><span class="nx">options</span><span class="p">.</span><span class="nx">json</span><span class="p">)</span>
<span class="p">}</span>
<span class="kd">const</span> <span class="nx">rv</span> <span class="o">=</span> <span class="p">{</span>
<span class="na">search</span><span class="p">:</span> <span class="nx">search</span>
<span class="p">}</span>
<span class="k">typeof</span> <span class="nx">options</span><span class="p">.</span><span class="nx">success</span> <span class="o">===</span> <span class="dl">'</span><span class="s1">function</span><span class="dl">'</span> <span class="o">&amp;&amp;</span> <span class="nx">options</span><span class="p">.</span><span class="nx">success</span><span class="p">.</span><span class="nf">call</span><span class="p">(</span><span class="nx">rv</span><span class="p">)</span>
<span class="k">return</span> <span class="nx">rv</span>
<span class="p">}</span>
<span class="kd">function</span> <span class="nf">initWithJSON</span> <span class="p">(</span><span class="nx">json</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">_$Repository_4</span><span class="p">.</span><span class="nf">put</span><span class="p">(</span><span class="nx">json</span><span class="p">)</span>
<span class="nf">registerInput</span><span class="p">()</span>
<span class="p">}</span>
<span class="kd">function</span> <span class="nf">initWithURL</span> <span class="p">(</span><span class="nx">url</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">_$JSONLoader_2</span><span class="p">.</span><span class="nf">load</span><span class="p">(</span><span class="nx">url</span><span class="p">,</span> <span class="nf">function </span><span class="p">(</span><span class="nx">err</span><span class="p">,</span> <span class="nx">json</span><span class="p">)</span> <span class="p">{</span>
<span class="k">if </span><span class="p">(</span><span class="nx">err</span><span class="p">)</span> <span class="p">{</span>
<span class="nf">throwError</span><span class="p">(</span><span class="dl">'</span><span class="s1">failed to get JSON (</span><span class="dl">'</span> <span class="o">+</span> <span class="nx">url</span> <span class="o">+</span> <span class="dl">'</span><span class="s1">)</span><span class="dl">'</span><span class="p">)</span>
<span class="p">}</span>
<span class="nf">initWithJSON</span><span class="p">(</span><span class="nx">json</span><span class="p">)</span>
<span class="p">})</span>
<span class="p">}</span>
<span class="kd">function</span> <span class="nf">emptyResultsContainer</span> <span class="p">()</span> <span class="p">{</span>
<span class="nx">options</span><span class="p">.</span><span class="nx">resultsContainer</span><span class="p">.</span><span class="nx">innerHTML</span> <span class="o">=</span> <span class="dl">''</span>
<span class="p">}</span>
<span class="kd">function</span> <span class="nf">appendToResultsContainer</span> <span class="p">(</span><span class="nx">text</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">options</span><span class="p">.</span><span class="nx">resultsContainer</span><span class="p">.</span><span class="nx">innerHTML</span> <span class="o">+=</span> <span class="nx">text</span>
<span class="p">}</span>
<span class="kd">function</span> <span class="nf">registerInput</span> <span class="p">()</span> <span class="p">{</span>
<span class="nx">options</span><span class="p">.</span><span class="nx">searchInput</span><span class="p">.</span><span class="nf">addEventListener</span><span class="p">(</span><span class="dl">'</span><span class="s1">input</span><span class="dl">'</span><span class="p">,</span> <span class="nf">function </span><span class="p">(</span><span class="nx">e</span><span class="p">)</span> <span class="p">{</span>
<span class="k">if </span><span class="p">(</span><span class="nf">isWhitelistedKey</span><span class="p">(</span><span class="nx">e</span><span class="p">.</span><span class="nx">which</span><span class="p">))</span> <span class="p">{</span>
<span class="nf">emptyResultsContainer</span><span class="p">()</span>
<span class="nf">debounce</span><span class="p">(</span><span class="nf">function </span><span class="p">()</span> <span class="p">{</span> <span class="nf">search</span><span class="p">(</span><span class="nx">e</span><span class="p">.</span><span class="nx">target</span><span class="p">.</span><span class="nx">value</span><span class="p">)</span> <span class="p">},</span> <span class="nx">options</span><span class="p">.</span><span class="nx">debounceTime</span><span class="p">)</span>
<span class="p">}</span>
<span class="p">})</span>
<span class="p">}</span>
<span class="kd">function</span> <span class="nf">search</span> <span class="p">(</span><span class="nx">query</span><span class="p">)</span> <span class="p">{</span>
<span class="k">if </span><span class="p">(</span><span class="nf">isValidQuery</span><span class="p">(</span><span class="nx">query</span><span class="p">))</span> <span class="p">{</span>
<span class="nf">emptyResultsContainer</span><span class="p">()</span>
<span class="nf">render</span><span class="p">(</span><span class="nx">_$Repository_4</span><span class="p">.</span><span class="nf">search</span><span class="p">(</span><span class="nx">query</span><span class="p">),</span> <span class="nx">query</span><span class="p">)</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="kd">function</span> <span class="nf">render</span> <span class="p">(</span><span class="nx">results</span><span class="p">,</span> <span class="nx">query</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">const</span> <span class="nx">len</span> <span class="o">=</span> <span class="nx">results</span><span class="p">.</span><span class="nx">length</span>
<span class="k">if </span><span class="p">(</span><span class="nx">len</span> <span class="o">===</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
<span class="k">return</span> <span class="nf">appendToResultsContainer</span><span class="p">(</span><span class="nx">options</span><span class="p">.</span><span class="nx">noResultsText</span><span class="p">)</span>
<span class="p">}</span>
<span class="k">for</span> <span class="p">(</span><span class="kd">let</span> <span class="nx">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">i</span> <span class="o">&lt;</span> <span class="nx">len</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">results</span><span class="p">[</span><span class="nx">i</span><span class="p">].</span><span class="nx">query</span> <span class="o">=</span> <span class="nx">query</span>
<span class="nf">appendToResultsContainer</span><span class="p">(</span><span class="nx">_$Templater_7</span><span class="p">.</span><span class="nf">compile</span><span class="p">(</span><span class="nx">results</span><span class="p">[</span><span class="nx">i</span><span class="p">]))</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="kd">function</span> <span class="nf">isValidQuery</span> <span class="p">(</span><span class="nx">query</span><span class="p">)</span> <span class="p">{</span>
<span class="k">return</span> <span class="nx">query</span> <span class="o">&amp;&amp;</span> <span class="nx">query</span><span class="p">.</span><span class="nx">length</span> <span class="o">&gt;</span> <span class="mi">0</span>
<span class="p">}</span>
<span class="kd">function</span> <span class="nf">isWhitelistedKey</span> <span class="p">(</span><span class="nx">key</span><span class="p">)</span> <span class="p">{</span>
<span class="k">return</span> <span class="p">[</span><span class="mi">13</span><span class="p">,</span> <span class="mi">16</span><span class="p">,</span> <span class="mi">20</span><span class="p">,</span> <span class="mi">37</span><span class="p">,</span> <span class="mi">38</span><span class="p">,</span> <span class="mi">39</span><span class="p">,</span> <span class="mi">40</span><span class="p">,</span> <span class="mi">91</span><span class="p">].</span><span class="nf">indexOf</span><span class="p">(</span><span class="nx">key</span><span class="p">)</span> <span class="o">===</span> <span class="o">-</span><span class="mi">1</span>
<span class="p">}</span>
<span class="kd">function</span> <span class="nf">throwError</span> <span class="p">(</span><span class="nx">message</span><span class="p">)</span> <span class="p">{</span>
<span class="k">throw</span> <span class="k">new</span> <span class="nc">Error</span><span class="p">(</span><span class="dl">'</span><span class="s1">SimpleJekyllSearch --- </span><span class="dl">'</span> <span class="o">+</span> <span class="nx">message</span><span class="p">)</span>
<span class="p">}</span>
<span class="p">})(</span><span class="nb">window</span><span class="p">)</span>
<span class="p">}());</span>
<span class="nt">&lt;/script&gt;</span>
<span class="c">&lt;!-- Configuration --&gt;</span>
<span class="nt">&lt;script&gt;</span>
<span class="nc">SimpleJekyllSearch</span><span class="p">({</span>
<span class="na">searchInput</span><span class="p">:</span> <span class="nb">document</span><span class="p">.</span><span class="nf">getElementById</span><span class="p">(</span><span class="dl">'</span><span class="s1">search-input</span><span class="dl">'</span><span class="p">),</span>
<span class="na">resultsContainer</span><span class="p">:</span> <span class="nb">document</span><span class="p">.</span><span class="nf">getElementById</span><span class="p">(</span><span class="dl">'</span><span class="s1">results-container</span><span class="dl">'</span><span class="p">),</span>
<span class="na">noResultsText</span><span class="p">:</span> <span class="dl">'</span><span class="s1">&lt;p&gt;Aucun résultat!&lt;/p&gt;</span><span class="dl">'</span><span class="p">,</span>
<span class="na">json</span><span class="p">:</span> <span class="dl">'</span><span class="s1">/search.json</span><span class="dl">'</span><span class="p">,</span>
<span class="na">searchResultTemplate</span><span class="p">:</span> <span class="dl">'</span><span class="s1">&lt;li&gt;&lt;a href="{url}"&gt;{date}&amp;nbsp;{title}&lt;/a&gt;&amp;nbsp;(Création {create})&lt;/li&gt;</span><span class="dl">'</span>
<span class="p">})</span>
<span class="nt">&lt;/script&gt;</span>
<span class="nt">&lt;/div&gt;&lt;/div&gt;</span>
<span class="nt">&lt;script&gt;</span><span class="p">(</span><span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">SOURCES</span> <span class="o">=</span> <span class="nb">window</span><span class="p">.</span><span class="nx">TEXT_VARIABLES</span><span class="p">.</span><span class="nx">sources</span><span class="p">;</span>
<span class="nb">window</span><span class="p">.</span><span class="nx">Lazyload</span><span class="p">.</span><span class="nf">js</span><span class="p">(</span><span class="nx">SOURCES</span><span class="p">.</span><span class="nx">jquery</span><span class="p">,</span> <span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
<span class="kd">function</span> <span class="nf">scrollToAnchor</span><span class="p">(</span><span class="nx">anchor</span><span class="p">,</span> <span class="nx">duration</span><span class="p">,</span> <span class="nx">callback</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">$root</span> <span class="o">=</span> <span class="k">this</span><span class="p">;</span>
<span class="nx">$root</span><span class="p">.</span><span class="nf">animate</span><span class="p">({</span> <span class="na">scrollTop</span><span class="p">:</span> <span class="nf">$</span><span class="p">(</span><span class="nx">anchor</span><span class="p">).</span><span class="nf">position</span><span class="p">().</span><span class="nx">top</span> <span class="p">},</span> <span class="nx">duration</span><span class="p">,</span> <span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
<span class="nb">window</span><span class="p">.</span><span class="nx">history</span><span class="p">.</span><span class="nf">replaceState</span><span class="p">(</span><span class="kc">null</span><span class="p">,</span> <span class="dl">''</span><span class="p">,</span> <span class="nb">window</span><span class="p">.</span><span class="nx">location</span><span class="p">.</span><span class="nx">href</span><span class="p">.</span><span class="nf">split</span><span class="p">(</span><span class="dl">'</span><span class="s1">#</span><span class="dl">'</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span> <span class="o">+</span> <span class="nx">anchor</span><span class="p">);</span>
<span class="nx">callback</span> <span class="o">&amp;&amp;</span> <span class="nf">callback</span><span class="p">();</span>
<span class="p">});</span>
<span class="p">}</span>
<span class="nx">$</span><span class="p">.</span><span class="nx">fn</span><span class="p">.</span><span class="nx">scrollToAnchor</span> <span class="o">=</span> <span class="nx">scrollToAnchor</span><span class="p">;</span>
<span class="p">});</span>
<span class="p">})();</span>
<span class="p">(</span><span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">SOURCES</span> <span class="o">=</span> <span class="nb">window</span><span class="p">.</span><span class="nx">TEXT_VARIABLES</span><span class="p">.</span><span class="nx">sources</span><span class="p">;</span>
<span class="nb">window</span><span class="p">.</span><span class="nx">Lazyload</span><span class="p">.</span><span class="nf">js</span><span class="p">(</span><span class="nx">SOURCES</span><span class="p">.</span><span class="nx">jquery</span><span class="p">,</span> <span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
<span class="kd">function</span> <span class="nf">affix</span><span class="p">(</span><span class="nx">options</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">$root</span> <span class="o">=</span> <span class="k">this</span><span class="p">,</span> <span class="nx">$window</span> <span class="o">=</span> <span class="nf">$</span><span class="p">(</span><span class="nb">window</span><span class="p">),</span> <span class="nx">$scrollTarget</span><span class="p">,</span> <span class="nx">$scroll</span><span class="p">,</span>
<span class="nx">offsetBottom</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span> <span class="nx">scrollTarget</span> <span class="o">=</span> <span class="nb">window</span><span class="p">,</span> <span class="nx">scroll</span> <span class="o">=</span> <span class="nb">window</span><span class="p">.</span><span class="nb">document</span><span class="p">,</span> <span class="nx">disabled</span> <span class="o">=</span> <span class="kc">false</span><span class="p">,</span> <span class="nx">isOverallScroller</span> <span class="o">=</span> <span class="kc">true</span><span class="p">,</span>
<span class="nx">rootTop</span><span class="p">,</span> <span class="nx">rootLeft</span><span class="p">,</span> <span class="nx">rootHeight</span><span class="p">,</span> <span class="nx">scrollBottom</span><span class="p">,</span> <span class="nx">rootBottomTop</span><span class="p">,</span>
<span class="nx">hasInit</span> <span class="o">=</span> <span class="kc">false</span><span class="p">,</span> <span class="nx">curState</span><span class="p">;</span>
<span class="kd">function</span> <span class="nf">setOptions</span><span class="p">(</span><span class="nx">options</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">_options</span> <span class="o">=</span> <span class="nx">options</span> <span class="o">||</span> <span class="p">{};</span>
<span class="nx">_options</span><span class="p">.</span><span class="nx">offsetBottom</span> <span class="o">&amp;&amp;</span> <span class="p">(</span><span class="nx">offsetBottom</span> <span class="o">=</span> <span class="nx">_options</span><span class="p">.</span><span class="nx">offsetBottom</span><span class="p">);</span>
<span class="nx">_options</span><span class="p">.</span><span class="nx">scrollTarget</span> <span class="o">&amp;&amp;</span> <span class="p">(</span><span class="nx">scrollTarget</span> <span class="o">=</span> <span class="nx">_options</span><span class="p">.</span><span class="nx">scrollTarget</span><span class="p">);</span>
<span class="nx">_options</span><span class="p">.</span><span class="nx">scroll</span> <span class="o">&amp;&amp;</span> <span class="p">(</span><span class="nx">scroll</span> <span class="o">=</span> <span class="nx">_options</span><span class="p">.</span><span class="nx">scroll</span><span class="p">);</span>
<span class="nx">_options</span><span class="p">.</span><span class="nx">disabled</span> <span class="o">!==</span> <span class="kc">undefined</span> <span class="o">&amp;&amp;</span> <span class="p">(</span><span class="nx">disabled</span> <span class="o">=</span> <span class="nx">_options</span><span class="p">.</span><span class="nx">disabled</span><span class="p">);</span>
<span class="nx">$scrollTarget</span> <span class="o">=</span> <span class="nf">$</span><span class="p">(</span><span class="nx">scrollTarget</span><span class="p">);</span>
<span class="nx">isOverallScroller</span> <span class="o">=</span> <span class="nb">window</span><span class="p">.</span><span class="nf">isOverallScroller</span><span class="p">(</span><span class="nx">$scrollTarget</span><span class="p">[</span><span class="mi">0</span><span class="p">]);</span>
<span class="nx">$scroll</span> <span class="o">=</span> <span class="nf">$</span><span class="p">(</span><span class="nx">scroll</span><span class="p">);</span>
<span class="p">}</span>
<span class="kd">function</span> <span class="nf">preCalc</span><span class="p">()</span> <span class="p">{</span>
<span class="nf">top</span><span class="p">();</span>
<span class="nx">rootHeight</span> <span class="o">=</span> <span class="nx">$root</span><span class="p">.</span><span class="nf">outerHeight</span><span class="p">();</span>
<span class="nx">rootTop</span> <span class="o">=</span> <span class="nx">$root</span><span class="p">.</span><span class="nf">offset</span><span class="p">().</span><span class="nx">top</span> <span class="o">+</span> <span class="p">(</span><span class="nx">isOverallScroller</span> <span class="p">?</span> <span class="mi">0</span> <span class="p">:</span> <span class="nx">$scrollTarget</span><span class="p">.</span><span class="nf">scrollTop</span><span class="p">());</span>
<span class="nx">rootLeft</span> <span class="o">=</span> <span class="nx">$root</span><span class="p">.</span><span class="nf">offset</span><span class="p">().</span><span class="nx">left</span><span class="p">;</span>
<span class="p">}</span>
<span class="kd">function</span> <span class="nf">calc</span><span class="p">(</span><span class="nx">needPreCalc</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">needPreCalc</span> <span class="o">&amp;&amp;</span> <span class="nf">preCalc</span><span class="p">();</span>
<span class="nx">scrollBottom</span> <span class="o">=</span> <span class="nx">$scroll</span><span class="p">.</span><span class="nf">outerHeight</span><span class="p">()</span> <span class="o">-</span> <span class="nx">offsetBottom</span> <span class="o">-</span> <span class="nx">rootHeight</span><span class="p">;</span>
<span class="nx">rootBottomTop</span> <span class="o">=</span> <span class="nx">scrollBottom</span> <span class="o">-</span> <span class="nx">rootTop</span><span class="p">;</span>
<span class="p">}</span>
<span class="kd">function</span> <span class="nf">top</span><span class="p">()</span> <span class="p">{</span>
<span class="k">if </span><span class="p">(</span><span class="nx">curState</span> <span class="o">!==</span> <span class="dl">'</span><span class="s1">top</span><span class="dl">'</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">$root</span><span class="p">.</span><span class="nf">removeClass</span><span class="p">(</span><span class="dl">'</span><span class="s1">fixed</span><span class="dl">'</span><span class="p">).</span><span class="nf">css</span><span class="p">({</span>
<span class="na">left</span><span class="p">:</span> <span class="mi">0</span><span class="p">,</span>
<span class="na">top</span><span class="p">:</span> <span class="mi">0</span>
<span class="p">});</span>
<span class="nx">curState</span> <span class="o">=</span> <span class="dl">'</span><span class="s1">top</span><span class="dl">'</span><span class="p">;</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="kd">function</span> <span class="nf">fixed</span><span class="p">()</span> <span class="p">{</span>
<span class="k">if </span><span class="p">(</span><span class="nx">curState</span> <span class="o">!==</span> <span class="dl">'</span><span class="s1">fixed</span><span class="dl">'</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">$root</span><span class="p">.</span><span class="nf">addClass</span><span class="p">(</span><span class="dl">'</span><span class="s1">fixed</span><span class="dl">'</span><span class="p">).</span><span class="nf">css</span><span class="p">({</span>
<span class="na">left</span><span class="p">:</span> <span class="nx">rootLeft</span> <span class="o">+</span> <span class="dl">'</span><span class="s1">px</span><span class="dl">'</span><span class="p">,</span>
<span class="na">top</span><span class="p">:</span> <span class="mi">0</span>
<span class="p">});</span>
<span class="nx">curState</span> <span class="o">=</span> <span class="dl">'</span><span class="s1">fixed</span><span class="dl">'</span><span class="p">;</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="kd">function</span> <span class="nf">bottom</span><span class="p">()</span> <span class="p">{</span>
<span class="k">if </span><span class="p">(</span><span class="nx">curState</span> <span class="o">!==</span> <span class="dl">'</span><span class="s1">bottom</span><span class="dl">'</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">$root</span><span class="p">.</span><span class="nf">removeClass</span><span class="p">(</span><span class="dl">'</span><span class="s1">fixed</span><span class="dl">'</span><span class="p">).</span><span class="nf">css</span><span class="p">({</span>
<span class="na">left</span><span class="p">:</span> <span class="mi">0</span><span class="p">,</span>
<span class="na">top</span><span class="p">:</span> <span class="nx">rootBottomTop</span> <span class="o">+</span> <span class="dl">'</span><span class="s1">px</span><span class="dl">'</span>
<span class="p">});</span>
<span class="nx">curState</span> <span class="o">=</span> <span class="dl">'</span><span class="s1">bottom</span><span class="dl">'</span><span class="p">;</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="kd">function</span> <span class="nf">setState</span><span class="p">()</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">scrollTop</span> <span class="o">=</span> <span class="nx">$scrollTarget</span><span class="p">.</span><span class="nf">scrollTop</span><span class="p">();</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">scrollTop</span> <span class="o">&gt;=</span> <span class="nx">rootTop</span> <span class="o">&amp;&amp;</span> <span class="nx">scrollTop</span> <span class="o">&lt;=</span> <span class="nx">scrollBottom</span><span class="p">)</span> <span class="p">{</span>
<span class="nf">fixed</span><span class="p">();</span>
<span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="nx">scrollTop</span> <span class="o">&lt;</span> <span class="nx">rootTop</span><span class="p">)</span> <span class="p">{</span>
<span class="nf">top</span><span class="p">();</span>
<span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
<span class="nf">bottom</span><span class="p">();</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="kd">function</span> <span class="nf">init</span><span class="p">()</span> <span class="p">{</span>
<span class="k">if</span><span class="p">(</span><span class="o">!</span><span class="nx">hasInit</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">interval</span><span class="p">,</span> <span class="nx">timeout</span><span class="p">;</span>
<span class="nf">calc</span><span class="p">(</span><span class="kc">true</span><span class="p">);</span> <span class="nf">setState</span><span class="p">();</span>
<span class="c1">// run calc every 100 millisecond</span>
<span class="nx">interval</span> <span class="o">=</span> <span class="nf">setInterval</span><span class="p">(</span><span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
<span class="nf">calc</span><span class="p">();</span>
<span class="p">},</span> <span class="mi">100</span><span class="p">);</span>
<span class="nx">timeout</span> <span class="o">=</span> <span class="nf">setTimeout</span><span class="p">(</span><span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
<span class="nf">clearInterval</span><span class="p">(</span><span class="nx">interval</span><span class="p">);</span>
<span class="p">},</span> <span class="mi">45000</span><span class="p">);</span>
<span class="nb">window</span><span class="p">.</span><span class="nx">pageLoad</span><span class="p">.</span><span class="nf">then</span><span class="p">(</span><span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
<span class="nf">setTimeout</span><span class="p">(</span><span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
<span class="nf">clearInterval</span><span class="p">(</span><span class="nx">interval</span><span class="p">);</span>
<span class="nf">clearTimeout</span><span class="p">(</span><span class="nx">timeout</span><span class="p">);</span>
<span class="p">},</span> <span class="mi">3000</span><span class="p">);</span>
<span class="p">});</span>
<span class="nx">$scrollTarget</span><span class="p">.</span><span class="nf">on</span><span class="p">(</span><span class="dl">'</span><span class="s1">scroll</span><span class="dl">'</span><span class="p">,</span> <span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
<span class="nx">disabled</span> <span class="o">||</span> <span class="nf">setState</span><span class="p">();</span>
<span class="p">});</span>
<span class="nx">$window</span><span class="p">.</span><span class="nf">on</span><span class="p">(</span><span class="dl">'</span><span class="s1">resize</span><span class="dl">'</span><span class="p">,</span> <span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
<span class="nx">disabled</span> <span class="o">||</span> <span class="p">(</span><span class="nf">calc</span><span class="p">(</span><span class="kc">true</span><span class="p">),</span> <span class="nf">setState</span><span class="p">());</span>
<span class="p">});</span>
<span class="nx">hasInit</span> <span class="o">=</span> <span class="kc">true</span><span class="p">;</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="nf">setOptions</span><span class="p">(</span><span class="nx">options</span><span class="p">);</span>
<span class="k">if </span><span class="p">(</span><span class="o">!</span><span class="nx">disabled</span><span class="p">)</span> <span class="p">{</span>
<span class="nf">init</span><span class="p">();</span>
<span class="p">}</span>
<span class="nx">$window</span><span class="p">.</span><span class="nf">on</span><span class="p">(</span><span class="dl">'</span><span class="s1">resize</span><span class="dl">'</span><span class="p">,</span> <span class="nb">window</span><span class="p">.</span><span class="nf">throttle</span><span class="p">(</span><span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
<span class="nf">init</span><span class="p">();</span>
<span class="p">},</span> <span class="mi">200</span><span class="p">));</span>
<span class="k">return</span> <span class="p">{</span>
<span class="na">setOptions</span><span class="p">:</span> <span class="nx">setOptions</span><span class="p">,</span>
<span class="na">refresh</span><span class="p">:</span> <span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
<span class="nf">calc</span><span class="p">(</span><span class="kc">true</span><span class="p">,</span> <span class="p">{</span> <span class="na">animation</span><span class="p">:</span> <span class="kc">false</span> <span class="p">});</span> <span class="nf">setState</span><span class="p">();</span>
<span class="p">}</span>
<span class="p">};</span>
<span class="p">}</span>
<span class="nx">$</span><span class="p">.</span><span class="nx">fn</span><span class="p">.</span><span class="nx">affix</span> <span class="o">=</span> <span class="nx">affix</span><span class="p">;</span>
<span class="p">});</span>
<span class="p">})();</span>
<span class="p">(</span><span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">SOURCES</span> <span class="o">=</span> <span class="nb">window</span><span class="p">.</span><span class="nx">TEXT_VARIABLES</span><span class="p">.</span><span class="nx">sources</span><span class="p">;</span>
<span class="nb">window</span><span class="p">.</span><span class="nx">Lazyload</span><span class="p">.</span><span class="nf">js</span><span class="p">(</span><span class="nx">SOURCES</span><span class="p">.</span><span class="nx">jquery</span><span class="p">,</span> <span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
<span class="kd">function</span> <span class="nf">toc</span><span class="p">(</span><span class="nx">options</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">$root</span> <span class="o">=</span> <span class="k">this</span><span class="p">,</span> <span class="nx">$window</span> <span class="o">=</span> <span class="nf">$</span><span class="p">(</span><span class="nb">window</span><span class="p">),</span> <span class="nx">$scrollTarget</span><span class="p">,</span> <span class="nx">$scroller</span><span class="p">,</span> <span class="nx">$tocUl</span> <span class="o">=</span> <span class="nx">$</span><span class="p">(</span><span class="dl">'</span><span class="s1">&lt;ul class="toc toc--ellipsis"&gt;&lt;/ul&gt;</span><span class="dl">'</span><span class="p">),</span> <span class="nx">$tocLi</span><span class="p">,</span> <span class="nx">$headings</span><span class="p">,</span> <span class="nx">$activeLast</span><span class="p">,</span> <span class="nx">$activeCur</span><span class="p">,</span>
<span class="nx">selectors</span> <span class="o">=</span> <span class="dl">'</span><span class="s1">h1,h2,h3</span><span class="dl">'</span><span class="p">,</span> <span class="nx">container</span> <span class="o">=</span> <span class="dl">'</span><span class="s1">body</span><span class="dl">'</span><span class="p">,</span> <span class="nx">scrollTarget</span> <span class="o">=</span> <span class="nb">window</span><span class="p">,</span> <span class="nx">scroller</span> <span class="o">=</span> <span class="dl">'</span><span class="s1">html, body</span><span class="dl">'</span><span class="p">,</span> <span class="nx">disabled</span> <span class="o">=</span> <span class="kc">false</span><span class="p">,</span>
<span class="nx">headingsPos</span><span class="p">,</span> <span class="nx">scrolling</span> <span class="o">=</span> <span class="kc">false</span><span class="p">,</span> <span class="nx">hasRendered</span> <span class="o">=</span> <span class="kc">false</span><span class="p">,</span> <span class="nx">hasInit</span> <span class="o">=</span> <span class="kc">false</span><span class="p">;</span>
<span class="kd">function</span> <span class="nf">setOptions</span><span class="p">(</span><span class="nx">options</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">_options</span> <span class="o">=</span> <span class="nx">options</span> <span class="o">||</span> <span class="p">{};</span>
<span class="nx">_options</span><span class="p">.</span><span class="nx">selectors</span> <span class="o">&amp;&amp;</span> <span class="p">(</span><span class="nx">selectors</span> <span class="o">=</span> <span class="nx">_options</span><span class="p">.</span><span class="nx">selectors</span><span class="p">);</span>
<span class="nx">_options</span><span class="p">.</span><span class="nx">container</span> <span class="o">&amp;&amp;</span> <span class="p">(</span><span class="nx">container</span> <span class="o">=</span> <span class="nx">_options</span><span class="p">.</span><span class="nx">container</span><span class="p">);</span>
<span class="nx">_options</span><span class="p">.</span><span class="nx">scrollTarget</span> <span class="o">&amp;&amp;</span> <span class="p">(</span><span class="nx">scrollTarget</span> <span class="o">=</span> <span class="nx">_options</span><span class="p">.</span><span class="nx">scrollTarget</span><span class="p">);</span>
<span class="nx">_options</span><span class="p">.</span><span class="nx">scroller</span> <span class="o">&amp;&amp;</span> <span class="p">(</span><span class="nx">scroller</span> <span class="o">=</span> <span class="nx">_options</span><span class="p">.</span><span class="nx">scroller</span><span class="p">);</span>
<span class="nx">_options</span><span class="p">.</span><span class="nx">disabled</span> <span class="o">!==</span> <span class="kc">undefined</span> <span class="o">&amp;&amp;</span> <span class="p">(</span><span class="nx">disabled</span> <span class="o">=</span> <span class="nx">_options</span><span class="p">.</span><span class="nx">disabled</span><span class="p">);</span>
<span class="nx">$headings</span> <span class="o">=</span> <span class="nf">$</span><span class="p">(</span><span class="nx">container</span><span class="p">).</span><span class="nf">find</span><span class="p">(</span><span class="nx">selectors</span><span class="p">).</span><span class="nf">filter</span><span class="p">(</span><span class="dl">'</span><span class="s1">[id]</span><span class="dl">'</span><span class="p">);</span>
<span class="nx">$scrollTarget</span> <span class="o">=</span> <span class="nf">$</span><span class="p">(</span><span class="nx">scrollTarget</span><span class="p">);</span>
<span class="nx">$scroller</span> <span class="o">=</span> <span class="nf">$</span><span class="p">(</span><span class="nx">scroller</span><span class="p">);</span>
<span class="p">}</span>
<span class="kd">function</span> <span class="nf">calc</span><span class="p">()</span> <span class="p">{</span>
<span class="nx">headingsPos</span> <span class="o">=</span> <span class="p">[];</span>
<span class="nx">$headings</span><span class="p">.</span><span class="nf">each</span><span class="p">(</span><span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
<span class="nx">headingsPos</span><span class="p">.</span><span class="nf">push</span><span class="p">(</span><span class="nb">Math</span><span class="p">.</span><span class="nf">floor</span><span class="p">(</span><span class="nf">$</span><span class="p">(</span><span class="k">this</span><span class="p">).</span><span class="nf">position</span><span class="p">().</span><span class="nx">top</span><span class="p">));</span>
<span class="p">});</span>
<span class="p">}</span>
<span class="kd">function</span> <span class="nf">setState</span><span class="p">(</span><span class="nx">element</span><span class="p">,</span> <span class="nx">disabled</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">scrollTop</span> <span class="o">=</span> <span class="nx">$scrollTarget</span><span class="p">.</span><span class="nf">scrollTop</span><span class="p">(),</span> <span class="nx">i</span><span class="p">;</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">disabled</span> <span class="o">||</span> <span class="o">!</span><span class="nx">headingsPos</span> <span class="o">||</span> <span class="nx">headingsPos</span><span class="p">.</span><span class="nx">length</span> <span class="o">&lt;</span> <span class="mi">1</span><span class="p">)</span> <span class="p">{</span> <span class="k">return</span><span class="p">;</span> <span class="p">}</span>
<span class="k">if </span><span class="p">(</span><span class="nx">element</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">$activeCur</span> <span class="o">=</span> <span class="nx">element</span><span class="p">;</span>
<span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
<span class="k">for</span> <span class="p">(</span><span class="nx">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">i</span> <span class="o">&lt;</span> <span class="nx">headingsPos</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
<span class="k">if </span><span class="p">(</span><span class="nx">scrollTop</span> <span class="o">&gt;=</span> <span class="nx">headingsPos</span><span class="p">[</span><span class="nx">i</span><span class="p">])</span> <span class="p">{</span>
<span class="nx">$activeCur</span> <span class="o">=</span> <span class="nx">$tocLi</span><span class="p">.</span><span class="nf">eq</span><span class="p">(</span><span class="nx">i</span><span class="p">);</span>
<span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
<span class="nx">$activeCur</span> <span class="o">||</span> <span class="p">(</span><span class="nx">$activeCur</span> <span class="o">=</span> <span class="nx">$tocLi</span><span class="p">.</span><span class="nf">eq</span><span class="p">(</span><span class="nx">i</span><span class="p">));</span>
<span class="k">break</span><span class="p">;</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="nx">$activeLast</span> <span class="o">&amp;&amp;</span> <span class="nx">$activeLast</span><span class="p">.</span><span class="nf">removeClass</span><span class="p">(</span><span class="dl">'</span><span class="s1">active</span><span class="dl">'</span><span class="p">);</span>
<span class="p">(</span><span class="nx">$activeLast</span> <span class="o">=</span> <span class="nx">$activeCur</span><span class="p">).</span><span class="nf">addClass</span><span class="p">(</span><span class="dl">'</span><span class="s1">active</span><span class="dl">'</span><span class="p">);</span>
<span class="p">}</span>
<span class="kd">function</span> <span class="nf">render</span><span class="p">()</span> <span class="p">{</span>
<span class="k">if</span><span class="p">(</span><span class="o">!</span><span class="nx">hasRendered</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">$root</span><span class="p">.</span><span class="nf">append</span><span class="p">(</span><span class="nx">$tocUl</span><span class="p">);</span>
<span class="nx">$headings</span><span class="p">.</span><span class="nf">each</span><span class="p">(</span><span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">$this</span> <span class="o">=</span> <span class="nf">$</span><span class="p">(</span><span class="k">this</span><span class="p">);</span>
<span class="nx">$tocUl</span><span class="p">.</span><span class="nx">append</span><span class="p">(</span><span class="nx">$</span><span class="p">(</span><span class="dl">'</span><span class="s1">&lt;li&gt;&lt;/li&gt;</span><span class="dl">'</span><span class="p">).</span><span class="nf">addClass</span><span class="p">(</span><span class="dl">'</span><span class="s1">toc-</span><span class="dl">'</span> <span class="o">+</span> <span class="nx">$this</span><span class="p">.</span><span class="nf">prop</span><span class="p">(</span><span class="dl">'</span><span class="s1">tagName</span><span class="dl">'</span><span class="p">).</span><span class="nf">toLowerCase</span><span class="p">())</span>
<span class="p">.</span><span class="nx">append</span><span class="p">(</span><span class="nx">$</span><span class="p">(</span><span class="dl">'</span><span class="s1">&lt;a&gt;&lt;/a&gt;</span><span class="dl">'</span><span class="p">).</span><span class="nf">text</span><span class="p">(</span><span class="nx">$this</span><span class="p">.</span><span class="nf">text</span><span class="p">()).</span><span class="nf">attr</span><span class="p">(</span><span class="dl">'</span><span class="s1">href</span><span class="dl">'</span><span class="p">,</span> <span class="dl">'</span><span class="s1">#</span><span class="dl">'</span> <span class="o">+</span> <span class="nx">$this</span><span class="p">.</span><span class="nf">prop</span><span class="p">(</span><span class="dl">'</span><span class="s1">id</span><span class="dl">'</span><span class="p">))));</span>
<span class="p">});</span>
<span class="nx">$tocLi</span> <span class="o">=</span> <span class="nx">$tocUl</span><span class="p">.</span><span class="nf">children</span><span class="p">(</span><span class="dl">'</span><span class="s1">li</span><span class="dl">'</span><span class="p">);</span>
<span class="nx">$tocUl</span><span class="p">.</span><span class="nf">on</span><span class="p">(</span><span class="dl">'</span><span class="s1">click</span><span class="dl">'</span><span class="p">,</span> <span class="dl">'</span><span class="s1">a</span><span class="dl">'</span><span class="p">,</span> <span class="kd">function</span><span class="p">(</span><span class="nx">e</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">e</span><span class="p">.</span><span class="nf">preventDefault</span><span class="p">();</span>
<span class="kd">var</span> <span class="nx">$this</span> <span class="o">=</span> <span class="nf">$</span><span class="p">(</span><span class="k">this</span><span class="p">);</span>
<span class="nx">scrolling</span> <span class="o">=</span> <span class="kc">true</span><span class="p">;</span>
<span class="nf">setState</span><span class="p">(</span><span class="nx">$this</span><span class="p">.</span><span class="nf">parent</span><span class="p">());</span>
<span class="nx">$scroller</span><span class="p">.</span><span class="nf">scrollToAnchor</span><span class="p">(</span><span class="nx">$this</span><span class="p">.</span><span class="nf">attr</span><span class="p">(</span><span class="dl">'</span><span class="s1">href</span><span class="dl">'</span><span class="p">),</span> <span class="mi">400</span><span class="p">,</span> <span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
<span class="nx">scrolling</span> <span class="o">=</span> <span class="kc">false</span><span class="p">;</span>
<span class="p">});</span>
<span class="p">});</span>
<span class="p">}</span>
<span class="nx">hasRendered</span> <span class="o">=</span> <span class="kc">true</span><span class="p">;</span>
<span class="p">}</span>
<span class="kd">function</span> <span class="nf">init</span><span class="p">()</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">interval</span><span class="p">,</span> <span class="nx">timeout</span><span class="p">;</span>
<span class="k">if</span><span class="p">(</span><span class="o">!</span><span class="nx">hasInit</span><span class="p">)</span> <span class="p">{</span>
<span class="nf">render</span><span class="p">();</span> <span class="nf">calc</span><span class="p">();</span> <span class="nf">setState</span><span class="p">(</span><span class="kc">null</span><span class="p">,</span> <span class="nx">scrolling</span><span class="p">);</span>
<span class="c1">// run calc every 100 millisecond</span>
<span class="nx">interval</span> <span class="o">=</span> <span class="nf">setInterval</span><span class="p">(</span><span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
<span class="nf">calc</span><span class="p">();</span>
<span class="p">},</span> <span class="mi">100</span><span class="p">);</span>
<span class="nx">timeout</span> <span class="o">=</span> <span class="nf">setTimeout</span><span class="p">(</span><span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
<span class="nf">clearInterval</span><span class="p">(</span><span class="nx">interval</span><span class="p">);</span>
<span class="p">},</span> <span class="mi">45000</span><span class="p">);</span>
<span class="nb">window</span><span class="p">.</span><span class="nx">pageLoad</span><span class="p">.</span><span class="nf">then</span><span class="p">(</span><span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
<span class="nf">setTimeout</span><span class="p">(</span><span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
<span class="nf">clearInterval</span><span class="p">(</span><span class="nx">interval</span><span class="p">);</span>
<span class="nf">clearTimeout</span><span class="p">(</span><span class="nx">timeout</span><span class="p">);</span>
<span class="p">},</span> <span class="mi">3000</span><span class="p">);</span>
<span class="p">});</span>
<span class="nx">$scrollTarget</span><span class="p">.</span><span class="nf">on</span><span class="p">(</span><span class="dl">'</span><span class="s1">scroll</span><span class="dl">'</span><span class="p">,</span> <span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
<span class="nx">disabled</span> <span class="o">||</span> <span class="nf">setState</span><span class="p">(</span><span class="kc">null</span><span class="p">,</span> <span class="nx">scrolling</span><span class="p">);</span>
<span class="p">});</span>
<span class="nx">$window</span><span class="p">.</span><span class="nf">on</span><span class="p">(</span><span class="dl">'</span><span class="s1">resize</span><span class="dl">'</span><span class="p">,</span> <span class="nb">window</span><span class="p">.</span><span class="nf">throttle</span><span class="p">(</span><span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
<span class="k">if </span><span class="p">(</span><span class="o">!</span><span class="nx">disabled</span><span class="p">)</span> <span class="p">{</span>
<span class="nf">render</span><span class="p">();</span> <span class="nf">calc</span><span class="p">();</span> <span class="nf">setState</span><span class="p">(</span><span class="kc">null</span><span class="p">,</span> <span class="nx">scrolling</span><span class="p">);</span>
<span class="p">}</span>
<span class="p">},</span> <span class="mi">100</span><span class="p">));</span>
<span class="p">}</span>
<span class="nx">hasInit</span> <span class="o">=</span> <span class="kc">true</span><span class="p">;</span>
<span class="p">}</span>
<span class="nf">setOptions</span><span class="p">(</span><span class="nx">options</span><span class="p">);</span>
<span class="k">if </span><span class="p">(</span><span class="o">!</span><span class="nx">disabled</span><span class="p">)</span> <span class="p">{</span>
<span class="nf">init</span><span class="p">();</span>
<span class="p">}</span>
<span class="nx">$window</span><span class="p">.</span><span class="nf">on</span><span class="p">(</span><span class="dl">'</span><span class="s1">resize</span><span class="dl">'</span><span class="p">,</span> <span class="nb">window</span><span class="p">.</span><span class="nf">throttle</span><span class="p">(</span><span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
<span class="nf">init</span><span class="p">();</span>
<span class="p">},</span> <span class="mi">200</span><span class="p">));</span>
<span class="k">return</span> <span class="p">{</span>
<span class="na">setOptions</span><span class="p">:</span> <span class="nx">setOptions</span>
<span class="p">};</span>
<span class="p">}</span>
<span class="nx">$</span><span class="p">.</span><span class="nx">fn</span><span class="p">.</span><span class="nx">toc</span> <span class="o">=</span> <span class="nx">toc</span><span class="p">;</span>
<span class="p">});</span>
<span class="p">})();</span>
<span class="cm">/*(function () {
})();*/</span>
<span class="nt">&lt;/script&gt;&lt;script&gt;</span>
<span class="cm">/* toc must before affix, since affix need to konw toc' height. */</span><span class="p">(</span><span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">SOURCES</span> <span class="o">=</span> <span class="nb">window</span><span class="p">.</span><span class="nx">TEXT_VARIABLES</span><span class="p">.</span><span class="nx">sources</span><span class="p">;</span>
<span class="kd">var</span> <span class="nx">TOC_SELECTOR</span> <span class="o">=</span> <span class="nb">window</span><span class="p">.</span><span class="nx">TEXT_VARIABLES</span><span class="p">.</span><span class="nx">site</span><span class="p">.</span><span class="nx">toc</span><span class="p">.</span><span class="nx">selectors</span><span class="p">;</span>
<span class="nb">window</span><span class="p">.</span><span class="nx">Lazyload</span><span class="p">.</span><span class="nf">js</span><span class="p">(</span><span class="nx">SOURCES</span><span class="p">.</span><span class="nx">jquery</span><span class="p">,</span> <span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">$window</span> <span class="o">=</span> <span class="nf">$</span><span class="p">(</span><span class="nb">window</span><span class="p">);</span>
<span class="kd">var</span> <span class="nx">$articleContent</span> <span class="o">=</span> <span class="nf">$</span><span class="p">(</span><span class="dl">'</span><span class="s1">.js-article-content</span><span class="dl">'</span><span class="p">);</span>
<span class="kd">var</span> <span class="nx">$tocRoot</span> <span class="o">=</span> <span class="nf">$</span><span class="p">(</span><span class="dl">'</span><span class="s1">.js-toc-root</span><span class="dl">'</span><span class="p">),</span> <span class="nx">$col2</span> <span class="o">=</span> <span class="nf">$</span><span class="p">(</span><span class="dl">'</span><span class="s1">.js-col-aside</span><span class="dl">'</span><span class="p">);</span>
<span class="kd">var</span> <span class="nx">toc</span><span class="p">;</span>
<span class="kd">var</span> <span class="nx">tocDisabled</span> <span class="o">=</span> <span class="kc">false</span><span class="p">;</span>
<span class="kd">var</span> <span class="nx">hasSidebar</span> <span class="o">=</span> <span class="nf">$</span><span class="p">(</span><span class="dl">'</span><span class="s1">.js-page-root</span><span class="dl">'</span><span class="p">).</span><span class="nf">hasClass</span><span class="p">(</span><span class="dl">'</span><span class="s1">layout--page--sidebar</span><span class="dl">'</span><span class="p">);</span>
<span class="kd">var</span> <span class="nx">hasToc</span> <span class="o">=</span> <span class="nx">$articleContent</span><span class="p">.</span><span class="nf">find</span><span class="p">(</span><span class="nx">TOC_SELECTOR</span><span class="p">).</span><span class="nx">length</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">;</span>
<span class="kd">function</span> <span class="nf">disabled</span><span class="p">()</span> <span class="p">{</span>
<span class="k">return</span> <span class="nx">$col2</span><span class="p">.</span><span class="nf">css</span><span class="p">(</span><span class="dl">'</span><span class="s1">display</span><span class="dl">'</span><span class="p">)</span> <span class="o">===</span> <span class="dl">'</span><span class="s1">none</span><span class="dl">'</span> <span class="o">||</span> <span class="o">!</span><span class="nx">hasToc</span><span class="p">;</span>
<span class="p">}</span>
<span class="nx">tocDisabled</span> <span class="o">=</span> <span class="nf">disabled</span><span class="p">();</span>
<span class="nx">toc</span> <span class="o">=</span> <span class="nx">$tocRoot</span><span class="p">.</span><span class="nf">toc</span><span class="p">({</span>
<span class="na">selectors</span><span class="p">:</span> <span class="nx">TOC_SELECTOR</span><span class="p">,</span>
<span class="na">container</span><span class="p">:</span> <span class="nx">$articleContent</span><span class="p">,</span>
<span class="na">scrollTarget</span><span class="p">:</span> <span class="nx">hasSidebar</span> <span class="p">?</span> <span class="dl">'</span><span class="s1">.js-page-main</span><span class="dl">'</span> <span class="p">:</span> <span class="kc">null</span><span class="p">,</span>
<span class="na">scroller</span><span class="p">:</span> <span class="nx">hasSidebar</span> <span class="p">?</span> <span class="dl">'</span><span class="s1">.js-page-main</span><span class="dl">'</span> <span class="p">:</span> <span class="kc">null</span><span class="p">,</span>
<span class="na">disabled</span><span class="p">:</span> <span class="nx">tocDisabled</span>
<span class="p">});</span>
<span class="nx">$window</span><span class="p">.</span><span class="nf">on</span><span class="p">(</span><span class="dl">'</span><span class="s1">resize</span><span class="dl">'</span><span class="p">,</span> <span class="nb">window</span><span class="p">.</span><span class="nf">throttle</span><span class="p">(</span><span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
<span class="nx">tocDisabled</span> <span class="o">=</span> <span class="nf">disabled</span><span class="p">();</span>
<span class="nx">toc</span> <span class="o">&amp;&amp;</span> <span class="nx">toc</span><span class="p">.</span><span class="nf">setOptions</span><span class="p">({</span>
<span class="na">disabled</span><span class="p">:</span> <span class="nx">tocDisabled</span>
<span class="p">});</span>
<span class="p">},</span> <span class="mi">100</span><span class="p">));</span>
<span class="p">});</span>
<span class="p">})();</span>
<span class="p">(</span><span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">SOURCES</span> <span class="o">=</span> <span class="nb">window</span><span class="p">.</span><span class="nx">TEXT_VARIABLES</span><span class="p">.</span><span class="nx">sources</span><span class="p">;</span>
<span class="nb">window</span><span class="p">.</span><span class="nx">Lazyload</span><span class="p">.</span><span class="nf">js</span><span class="p">(</span><span class="nx">SOURCES</span><span class="p">.</span><span class="nx">jquery</span><span class="p">,</span> <span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">$window</span> <span class="o">=</span> <span class="nf">$</span><span class="p">(</span><span class="nb">window</span><span class="p">),</span> <span class="nx">$pageFooter</span> <span class="o">=</span> <span class="nf">$</span><span class="p">(</span><span class="dl">'</span><span class="s1">.js-page-footer</span><span class="dl">'</span><span class="p">);</span>
<span class="kd">var</span> <span class="nx">$pageAside</span> <span class="o">=</span> <span class="nf">$</span><span class="p">(</span><span class="dl">'</span><span class="s1">.js-page-aside</span><span class="dl">'</span><span class="p">);</span>
<span class="kd">var</span> <span class="nx">affix</span><span class="p">;</span>
<span class="kd">var</span> <span class="nx">tocDisabled</span> <span class="o">=</span> <span class="kc">false</span><span class="p">;</span>
<span class="kd">var</span> <span class="nx">hasSidebar</span> <span class="o">=</span> <span class="nf">$</span><span class="p">(</span><span class="dl">'</span><span class="s1">.js-page-root</span><span class="dl">'</span><span class="p">).</span><span class="nf">hasClass</span><span class="p">(</span><span class="dl">'</span><span class="s1">layout--page--sidebar</span><span class="dl">'</span><span class="p">);</span>
<span class="nx">affix</span> <span class="o">=</span> <span class="nx">$pageAside</span><span class="p">.</span><span class="nf">affix</span><span class="p">({</span>
<span class="na">offsetBottom</span><span class="p">:</span> <span class="nx">$pageFooter</span><span class="p">.</span><span class="nf">outerHeight</span><span class="p">(),</span>
<span class="na">scrollTarget</span><span class="p">:</span> <span class="nx">hasSidebar</span> <span class="p">?</span> <span class="dl">'</span><span class="s1">.js-page-main</span><span class="dl">'</span> <span class="p">:</span> <span class="kc">null</span><span class="p">,</span>
<span class="na">scroller</span><span class="p">:</span> <span class="nx">hasSidebar</span> <span class="p">?</span> <span class="dl">'</span><span class="s1">.js-page-main</span><span class="dl">'</span> <span class="p">:</span> <span class="kc">null</span><span class="p">,</span>
<span class="na">scroll</span><span class="p">:</span> <span class="nx">hasSidebar</span> <span class="p">?</span> <span class="nf">$</span><span class="p">(</span><span class="dl">'</span><span class="s1">.js-page-main</span><span class="dl">'</span><span class="p">).</span><span class="nf">children</span><span class="p">()</span> <span class="p">:</span> <span class="kc">null</span><span class="p">,</span>
<span class="na">disabled</span><span class="p">:</span> <span class="nx">tocDisabled</span>
<span class="p">});</span>
<span class="nx">$window</span><span class="p">.</span><span class="nf">on</span><span class="p">(</span><span class="dl">'</span><span class="s1">resize</span><span class="dl">'</span><span class="p">,</span> <span class="nb">window</span><span class="p">.</span><span class="nf">throttle</span><span class="p">(</span><span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
<span class="nx">affix</span> <span class="o">&amp;&amp;</span> <span class="nx">affix</span><span class="p">.</span><span class="nf">setOptions</span><span class="p">({</span>
<span class="na">disabled</span><span class="p">:</span> <span class="nx">tocDisabled</span>
<span class="p">});</span>
<span class="p">},</span> <span class="mi">100</span><span class="p">));</span>
<span class="nb">window</span><span class="p">.</span><span class="nx">pageAsideAffix</span> <span class="o">=</span> <span class="nx">affix</span><span class="p">;</span>
<span class="p">});</span>
<span class="p">})();</span>
<span class="nt">&lt;/script&gt;</span><span class="c">&lt;!----&gt;</span>
<span class="nt">&lt;/div&gt;</span>
<span class="nt">&lt;script&gt;</span><span class="p">(</span><span class="nf">function </span><span class="p">()</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">$root</span> <span class="o">=</span> <span class="nb">document</span><span class="p">.</span><span class="nf">getElementsByClassName</span><span class="p">(</span><span class="dl">'</span><span class="s1">root</span><span class="dl">'</span><span class="p">)[</span><span class="mi">0</span><span class="p">];</span>
<span class="k">if </span><span class="p">(</span><span class="nb">window</span><span class="p">.</span><span class="nf">hasEvent</span><span class="p">(</span><span class="dl">'</span><span class="s1">touchstart</span><span class="dl">'</span><span class="p">))</span> <span class="p">{</span>
<span class="nx">$root</span><span class="p">.</span><span class="nx">dataset</span><span class="p">.</span><span class="nx">isTouch</span> <span class="o">=</span> <span class="kc">true</span><span class="p">;</span>
<span class="nb">document</span><span class="p">.</span><span class="nf">addEventListener</span><span class="p">(</span><span class="dl">'</span><span class="s1">touchstart</span><span class="dl">'</span><span class="p">,</span> <span class="kd">function</span><span class="p">(){},</span> <span class="kc">false</span><span class="p">);</span>
<span class="p">}</span>
<span class="p">})();</span>
<span class="nt">&lt;/script&gt;</span>
<span class="nt">&lt;/body&gt;</span>
<span class="nt">&lt;/html&gt;</span>
<span class="nt">&lt;/div&gt;</span>
</code></pre></div></div>
<h3 id="autre-solution-de-recherche">Autre solution de recherche</h3>
<p>Recherche avec “Simple-Jekyll-Search”</p>
<ul>
<li><a href="https://christianfei.com/posts/Use-Simple-Jekyll-Search-on-your-blog-in-these-easy-steps/">https://christianfei.com/posts/Use-Simple-Jekyll-Search-on-your-blog-in-these-easy-steps/</a></li>
<li><a href="https://github.com/christian-fei/Simple-Jekyll-Search">https://github.com/christian-fei/Simple-Jekyll-Search</a></li>
</ul>
</div>
<div class="d-print-none"><footer class="article__footer"><meta itemprop="dateModified" content="2019-12-23T00:00:00+01:00"><!-- start custom article footer snippet -->
<!-- end custom article footer snippet -->
<!--
<div align="right"><a type="application/rss+xml" href="/feed.xml" title="S'abonner"><i class="fa fa-rss fa-2x"></i></a>
&emsp;</div>
-->
</footer>
<div class="article__section-navigator clearfix"><div class="previous"><span>PRÉCÉDENT</span><a href="/2019/12/21/Nginx-personnalisation-page-erreur.html">Nginx personnalisation des pages d'erreur</a></div><div class="next"><span>SUIVANT</span><a href="/2019/12/23/auto-hebergement-avec-homebox.html">Auto-Hébergement avec HomeBox</a></div></div></div>
</div>
<script>(function() {
var SOURCES = window.TEXT_VARIABLES.sources;
window.Lazyload.js(SOURCES.jquery, function() {
$(function() {
var $this ,$scroll;
var $articleContent = $('.js-article-content');
var hasSidebar = $('.js-page-root').hasClass('layout--page--sidebar');
var scroll = hasSidebar ? '.js-page-main' : 'html, body';
$scroll = $(scroll);
$articleContent.find('.highlight').each(function() {
$this = $(this);
$this.attr('data-lang', $this.find('code').attr('data-lang'));
});
$articleContent.find('h1[id], h2[id], h3[id], h4[id], h5[id], h6[id]').each(function() {
$this = $(this);
$this.append($('<a class="anchor d-print-none" aria-hidden="true"></a>').html('<i class="fas fa-anchor"></i>'));
});
$articleContent.on('click', '.anchor', function() {
$scroll.scrollToAnchor('#' + $(this).parent().attr('id'), 400);
});
});
});
})();
</script>
</div><section class="page__comments d-print-none"></section></article><!-- start custom main bottom snippet -->
<!-- end custom main bottom snippet -->
</div>
</div></div></div></div>
</div><script>(function() {
var SOURCES = window.TEXT_VARIABLES.sources;
window.Lazyload.js(SOURCES.jquery, function() {
var $body = $('body'), $window = $(window);
var $pageRoot = $('.js-page-root'), $pageMain = $('.js-page-main');
var activeCount = 0;
function modal(options) {
var $root = this, visible, onChange, hideWhenWindowScroll = false;
var scrollTop;
function setOptions(options) {
var _options = options || {};
visible = _options.initialVisible === undefined ? false : show;
onChange = _options.onChange;
hideWhenWindowScroll = _options.hideWhenWindowScroll;
}
function init() {
setState(visible);
}
function setState(isShow) {
if (isShow === visible) {
return;
}
visible = isShow;
if (visible) {
activeCount++;
scrollTop = $(window).scrollTop() || $pageMain.scrollTop();
$root.addClass('modal--show');
$pageMain.scrollTop(scrollTop);
activeCount === 1 && ($pageRoot.addClass('show-modal'), $body.addClass('of-hidden'));
hideWhenWindowScroll && window.hasEvent('touchstart') && $window.on('scroll', hide);
$window.on('keyup', handleKeyup);
} else {
activeCount > 0 && activeCount--;
$root.removeClass('modal--show');
$window.scrollTop(scrollTop);
activeCount === 0 && ($pageRoot.removeClass('show-modal'), $body.removeClass('of-hidden'));
hideWhenWindowScroll && window.hasEvent('touchstart') && $window.off('scroll', hide);
$window.off('keyup', handleKeyup);
}
onChange && onChange(visible);
}
function show() {
setState(true);
}
function hide() {
setState(false);
}
function handleKeyup(e) {
// Char Code: 27 ESC
if (e.which === 27) {
hide();
}
}
setOptions(options);
init();
return {
show: show,
hide: hide,
$el: $root
};
}
$.fn.modal = modal;
});
})();
</script><div class="modal modal--overflow page__search-modal d-print-none js-page-search-modal"><script>
(function () {
var SOURCES = window.TEXT_VARIABLES.sources;
window.Lazyload.js(SOURCES.jquery, function() {
// search panel
var search = (window.search || (window.search = {}));
var useDefaultSearchBox = window.useDefaultSearchBox === undefined ?
true : window.useDefaultSearchBox ;
var $searchModal = $('.js-page-search-modal');
var $searchToggle = $('.js-search-toggle');
var searchModal = $searchModal.modal({ onChange: handleModalChange, hideWhenWindowScroll: true });
var modalVisible = false;
search.searchModal = searchModal;
var $searchBox = null;
var $searchInput = null;
var $searchClear = null;
function getModalVisible() {
return modalVisible;
}
search.getModalVisible = getModalVisible;
function handleModalChange(visible) {
modalVisible = visible;
if (visible) {
search.onShow && search.onShow();
useDefaultSearchBox && $searchInput[0] && $searchInput[0].focus();
} else {
search.onShow && search.onHide();
useDefaultSearchBox && $searchInput[0] && $searchInput[0].blur();
setTimeout(function() {
useDefaultSearchBox && ($searchInput.val(''), $searchBox.removeClass('not-empty'));
search.clear && search.clear();
window.pageAsideAffix && window.pageAsideAffix.refresh();
}, 400);
}
}
$searchToggle.on('click', function() {
modalVisible ? searchModal.hide() : searchModal.show();
});
// Char Code: 83 S, 191 /
$(window).on('keyup', function(e) {
if (!modalVisible && !window.isFormElement(e.target || e.srcElement) && (e.which === 83 || e.which === 191)) {
modalVisible || searchModal.show();
}
});
if (useDefaultSearchBox) {
$searchBox = $('.js-search-box');
$searchInput = $searchBox.children('input');
$searchClear = $searchBox.children('.js-icon-clear');
search.getSearchInput = function() {
return $searchInput.get(0);
};
search.getVal = function() {
return $searchInput.val();
};
search.setVal = function(val) {
$searchInput.val(val);
};
$searchInput.on('focus', function() {
$(this).addClass('focus');
});
$searchInput.on('blur', function() {
$(this).removeClass('focus');
});
$searchInput.on('input', window.throttle(function() {
var val = $(this).val();
if (val === '' || typeof val !== 'string') {
search.clear && search.clear();
} else {
$searchBox.addClass('not-empty');
search.onInputNotEmpty && search.onInputNotEmpty(val);
}
}, 400));
$searchClear.on('click', function() {
$searchInput.val(''); $searchBox.removeClass('not-empty');
search.clear && search.clear();
});
}
});
})();
</script><div class="search search--dark">
<div class="main">
<div class="search__header">Recherche</div>
<div class="search-bar">
<div class="search-box js-search-box">
<div class="search-box__icon-search"><i class="fas fa-search"></i></div>
<input id="search-input" type="text" />
<div class="search-box__icon-clear js-icon-clear">
<a><i class="fas fa-times"></i></a>
</div>
</div>
<button class="button button--theme-dark button--pill search__cancel js-search-toggle">
Annuler</button>
</div>
<div id="results-container" class="search-result js-search-result"></div>
</div>
</div>
<!-- Script pointing to search-script.js -->
<script>/*!
* Simple-Jekyll-Search
* Copyright 2015-2020, Christian Fei
* Licensed under the MIT License.
*/
(function(){
'use strict'
var _$Templater_7 = {
compile: compile,
setOptions: setOptions
}
const options = {}
options.pattern = /\{(.*?)\}/g
options.template = ''
options.middleware = function () {}
function setOptions (_options) {
options.pattern = _options.pattern || options.pattern
options.template = _options.template || options.template
if (typeof _options.middleware === 'function') {
options.middleware = _options.middleware
}
}
function compile (data) {
return options.template.replace(options.pattern, function (match, prop) {
const value = options.middleware(prop, data[prop], options.template)
if (typeof value !== 'undefined') {
return value
}
return data[prop] || match
})
}
'use strict';
function fuzzysearch (needle, haystack) {
var tlen = haystack.length;
var qlen = needle.length;
if (qlen > tlen) {
return false;
}
if (qlen === tlen) {
return needle === haystack;
}
outer: for (var i = 0, j = 0; i < qlen; i++) {
var nch = needle.charCodeAt(i);
while (j < tlen) {
if (haystack.charCodeAt(j++) === nch) {
continue outer;
}
}
return false;
}
return true;
}
var _$fuzzysearch_1 = fuzzysearch;
'use strict'
/* removed: const _$fuzzysearch_1 = require('fuzzysearch') */;
var _$FuzzySearchStrategy_5 = new FuzzySearchStrategy()
function FuzzySearchStrategy () {
this.matches = function (string, crit) {
return _$fuzzysearch_1(crit.toLowerCase(), string.toLowerCase())
}
}
'use strict'
var _$LiteralSearchStrategy_6 = new LiteralSearchStrategy()
function LiteralSearchStrategy () {
this.matches = function (str, crit) {
if (!str) return false
str = str.trim().toLowerCase()
crit = crit.trim().toLowerCase()
return crit.split(' ').filter(function (word) {
return str.indexOf(word) >= 0
}).length === crit.split(' ').length
}
}
'use strict'
var _$Repository_4 = {
put: put,
clear: clear,
search: search,
setOptions: __setOptions_4
}
/* removed: const _$FuzzySearchStrategy_5 = require('./SearchStrategies/FuzzySearchStrategy') */;
/* removed: const _$LiteralSearchStrategy_6 = require('./SearchStrategies/LiteralSearchStrategy') */;
function NoSort () {
return 0
}
const data = []
let opt = {}
opt.fuzzy = false
opt.limit = 10
opt.searchStrategy = opt.fuzzy ? _$FuzzySearchStrategy_5 : _$LiteralSearchStrategy_6
opt.sort = NoSort
opt.exclude = []
function put (data) {
if (isObject(data)) {
return addObject(data)
}
if (isArray(data)) {
return addArray(data)
}
return undefined
}
function clear () {
data.length = 0
return data
}
function isObject (obj) {
return Boolean(obj) && Object.prototype.toString.call(obj) === '[object Object]'
}
function isArray (obj) {
return Boolean(obj) && Object.prototype.toString.call(obj) === '[object Array]'
}
function addObject (_data) {
data.push(_data)
return data
}
function addArray (_data) {
const added = []
clear()
for (let i = 0, len = _data.length; i < len; i++) {
if (isObject(_data[i])) {
added.push(addObject(_data[i]))
}
}
return added
}
function search (crit) {
if (!crit) {
return []
}
return findMatches(data, crit, opt.searchStrategy, opt).sort(opt.sort)
}
function __setOptions_4 (_opt) {
opt = _opt || {}
opt.fuzzy = _opt.fuzzy || false
opt.limit = _opt.limit || 10
opt.searchStrategy = _opt.fuzzy ? _$FuzzySearchStrategy_5 : _$LiteralSearchStrategy_6
opt.sort = _opt.sort || NoSort
opt.exclude = _opt.exclude || []
}
function findMatches (data, crit, strategy, opt) {
const matches = []
for (let i = 0; i < data.length && matches.length < opt.limit; i++) {
const match = findMatchesInObject(data[i], crit, strategy, opt)
if (match) {
matches.push(match)
}
}
return matches
}
function findMatchesInObject (obj, crit, strategy, opt) {
for (const key in obj) {
if (!isExcluded(obj[key], opt.exclude) && strategy.matches(obj[key], crit)) {
return obj
}
}
}
function isExcluded (term, excludedTerms) {
for (let i = 0, len = excludedTerms.length; i < len; i++) {
const excludedTerm = excludedTerms[i]
if (new RegExp(excludedTerm).test(term)) {
return true
}
}
return false
}
/* globals ActiveXObject:false */
'use strict'
var _$JSONLoader_2 = {
load: load
}
function load (location, callback) {
const xhr = getXHR()
xhr.open('GET', location, true)
xhr.onreadystatechange = createStateChangeListener(xhr, callback)
xhr.send()
}
function createStateChangeListener (xhr, callback) {
return function () {
if (xhr.readyState === 4 && xhr.status === 200) {
try {
callback(null, JSON.parse(xhr.responseText))
} catch (err) {
callback(err, null)
}
}
}
}
function getXHR () {
return window.XMLHttpRequest ? new window.XMLHttpRequest() : new ActiveXObject('Microsoft.XMLHTTP')
}
'use strict'
var _$OptionsValidator_3 = function OptionsValidator (params) {
if (!validateParams(params)) {
throw new Error('-- OptionsValidator: required options missing')
}
if (!(this instanceof OptionsValidator)) {
return new OptionsValidator(params)
}
const requiredOptions = params.required
this.getRequiredOptions = function () {
return requiredOptions
}
this.validate = function (parameters) {
const errors = []
requiredOptions.forEach(function (requiredOptionName) {
if (typeof parameters[requiredOptionName] === 'undefined') {
errors.push(requiredOptionName)
}
})
return errors
}
function validateParams (params) {
if (!params) {
return false
}
return typeof params.required !== 'undefined' && params.required instanceof Array
}
}
'use strict'
var _$utils_9 = {
merge: merge,
isJSON: isJSON
}
function merge (defaultParams, mergeParams) {
const mergedOptions = {}
for (const option in defaultParams) {
mergedOptions[option] = defaultParams[option]
if (typeof mergeParams[option] !== 'undefined') {
mergedOptions[option] = mergeParams[option]
}
}
return mergedOptions
}
function isJSON (json) {
try {
if (json instanceof Object && JSON.parse(JSON.stringify(json))) {
return true
}
return false
} catch (err) {
return false
}
}
var _$src_8 = {};
(function (window) {
'use strict'
let options = {
searchInput: null,
resultsContainer: null,
json: [],
success: Function.prototype,
searchResultTemplate: '<li><a href="{url}" title="{desc}">{title}</a></li>',
templateMiddleware: Function.prototype,
sortMiddleware: function () {
return 0
},
noResultsText: 'No results found',
limit: 10,
fuzzy: false,
debounceTime: null,
exclude: []
}
let debounceTimerHandle
const debounce = function (func, delayMillis) {
if (delayMillis) {
clearTimeout(debounceTimerHandle)
debounceTimerHandle = setTimeout(func, delayMillis)
} else {
func.call()
}
}
const requiredOptions = ['searchInput', 'resultsContainer', 'json']
/* removed: const _$Templater_7 = require('./Templater') */;
/* removed: const _$Repository_4 = require('./Repository') */;
/* removed: const _$JSONLoader_2 = require('./JSONLoader') */;
const optionsValidator = _$OptionsValidator_3({
required: requiredOptions
})
/* removed: const _$utils_9 = require('./utils') */;
window.SimpleJekyllSearch = function (_options) {
const errors = optionsValidator.validate(_options)
if (errors.length > 0) {
throwError('You must specify the following required options: ' + requiredOptions)
}
options = _$utils_9.merge(options, _options)
_$Templater_7.setOptions({
template: options.searchResultTemplate,
middleware: options.templateMiddleware
})
_$Repository_4.setOptions({
fuzzy: options.fuzzy,
limit: options.limit,
sort: options.sortMiddleware,
exclude: options.exclude
})
if (_$utils_9.isJSON(options.json)) {
initWithJSON(options.json)
} else {
initWithURL(options.json)
}
const rv = {
search: search
}
typeof options.success === 'function' && options.success.call(rv)
return rv
}
function initWithJSON (json) {
_$Repository_4.put(json)
registerInput()
}
function initWithURL (url) {
_$JSONLoader_2.load(url, function (err, json) {
if (err) {
throwError('failed to get JSON (' + url + ')')
}
initWithJSON(json)
})
}
function emptyResultsContainer () {
options.resultsContainer.innerHTML = ''
}
function appendToResultsContainer (text) {
options.resultsContainer.innerHTML += text
}
function registerInput () {
options.searchInput.addEventListener('input', function (e) {
if (isWhitelistedKey(e.which)) {
emptyResultsContainer()
debounce(function () { search(e.target.value) }, options.debounceTime)
}
})
}
function search (query) {
if (isValidQuery(query)) {
emptyResultsContainer()
render(_$Repository_4.search(query), query)
}
}
function render (results, query) {
const len = results.length
if (len === 0) {
return appendToResultsContainer(options.noResultsText)
}
for (let i = 0; i < len; i++) {
results[i].query = query
appendToResultsContainer(_$Templater_7.compile(results[i]))
}
}
function isValidQuery (query) {
return query && query.length > 0
}
function isWhitelistedKey (key) {
return [13, 16, 20, 37, 38, 39, 40, 91].indexOf(key) === -1
}
function throwError (message) {
throw new Error('SimpleJekyllSearch --- ' + message)
}
})(window)
}());
</script>
<!-- Configuration -->
<script>
SimpleJekyllSearch({
searchInput: document.getElementById('search-input'),
resultsContainer: document.getElementById('results-container'),
noResultsText: '<p>Aucun résultat!</p>',
json: '/search.json',
searchResultTemplate: '<li><a href="{url}">{date}&nbsp;{title}</a>&nbsp;(Création {create})</li>'
})
</script>
</div></div>
<script>(function() {
var SOURCES = window.TEXT_VARIABLES.sources;
window.Lazyload.js(SOURCES.jquery, function() {
function scrollToAnchor(anchor, duration, callback) {
var $root = this;
$root.animate({ scrollTop: $(anchor).position().top }, duration, function() {
window.history.replaceState(null, '', window.location.href.split('#')[0] + anchor);
callback && callback();
});
}
$.fn.scrollToAnchor = scrollToAnchor;
});
})();
(function() {
var SOURCES = window.TEXT_VARIABLES.sources;
window.Lazyload.js(SOURCES.jquery, function() {
function affix(options) {
var $root = this, $window = $(window), $scrollTarget, $scroll,
offsetBottom = 0, scrollTarget = window, scroll = window.document, disabled = false, isOverallScroller = true,
rootTop, rootLeft, rootHeight, scrollBottom, rootBottomTop,
hasInit = false, curState;
function setOptions(options) {
var _options = options || {};
_options.offsetBottom && (offsetBottom = _options.offsetBottom);
_options.scrollTarget && (scrollTarget = _options.scrollTarget);
_options.scroll && (scroll = _options.scroll);
_options.disabled !== undefined && (disabled = _options.disabled);
$scrollTarget = $(scrollTarget);
isOverallScroller = window.isOverallScroller($scrollTarget[0]);
$scroll = $(scroll);
}
function preCalc() {
top();
rootHeight = $root.outerHeight();
rootTop = $root.offset().top + (isOverallScroller ? 0 : $scrollTarget.scrollTop());
rootLeft = $root.offset().left;
}
function calc(needPreCalc) {
needPreCalc && preCalc();
scrollBottom = $scroll.outerHeight() - offsetBottom - rootHeight;
rootBottomTop = scrollBottom - rootTop;
}
function top() {
if (curState !== 'top') {
$root.removeClass('fixed').css({
left: 0,
top: 0
});
curState = 'top';
}
}
function fixed() {
if (curState !== 'fixed') {
$root.addClass('fixed').css({
left: rootLeft + 'px',
top: 0
});
curState = 'fixed';
}
}
function bottom() {
if (curState !== 'bottom') {
$root.removeClass('fixed').css({
left: 0,
top: rootBottomTop + 'px'
});
curState = 'bottom';
}
}
function setState() {
var scrollTop = $scrollTarget.scrollTop();
if (scrollTop >= rootTop && scrollTop <= scrollBottom) {
fixed();
} else if (scrollTop < rootTop) {
top();
} else {
bottom();
}
}
function init() {
if(!hasInit) {
var interval, timeout;
calc(true); setState();
// run calc every 100 millisecond
interval = setInterval(function() {
calc();
}, 100);
timeout = setTimeout(function() {
clearInterval(interval);
}, 45000);
window.pageLoad.then(function() {
setTimeout(function() {
clearInterval(interval);
clearTimeout(timeout);
}, 3000);
});
$scrollTarget.on('scroll', function() {
disabled || setState();
});
$window.on('resize', function() {
disabled || (calc(true), setState());
});
hasInit = true;
}
}
setOptions(options);
if (!disabled) {
init();
}
$window.on('resize', window.throttle(function() {
init();
}, 200));
return {
setOptions: setOptions,
refresh: function() {
calc(true, { animation: false }); setState();
}
};
}
$.fn.affix = affix;
});
})();
(function() {
var SOURCES = window.TEXT_VARIABLES.sources;
window.Lazyload.js(SOURCES.jquery, function() {
function toc(options) {
var $root = this, $window = $(window), $scrollTarget, $scroller, $tocUl = $('<ul class="toc toc--ellipsis"></ul>'), $tocLi, $headings, $activeLast, $activeCur,
selectors = 'h1,h2,h3', container = 'body', scrollTarget = window, scroller = 'html, body', disabled = false,
headingsPos, scrolling = false, hasRendered = false, hasInit = false;
function setOptions(options) {
var _options = options || {};
_options.selectors && (selectors = _options.selectors);
_options.container && (container = _options.container);
_options.scrollTarget && (scrollTarget = _options.scrollTarget);
_options.scroller && (scroller = _options.scroller);
_options.disabled !== undefined && (disabled = _options.disabled);
$headings = $(container).find(selectors).filter('[id]');
$scrollTarget = $(scrollTarget);
$scroller = $(scroller);
}
function calc() {
headingsPos = [];
$headings.each(function() {
headingsPos.push(Math.floor($(this).position().top));
});
}
function setState(element, disabled) {
var scrollTop = $scrollTarget.scrollTop(), i;
if (disabled || !headingsPos || headingsPos.length < 1) { return; }
if (element) {
$activeCur = element;
} else {
for (i = 0; i < headingsPos.length; i++) {
if (scrollTop >= headingsPos[i]) {
$activeCur = $tocLi.eq(i);
} else {
$activeCur || ($activeCur = $tocLi.eq(i));
break;
}
}
}
$activeLast && $activeLast.removeClass('active');
($activeLast = $activeCur).addClass('active');
}
function render() {
if(!hasRendered) {
$root.append($tocUl);
$headings.each(function() {
var $this = $(this);
$tocUl.append($('<li></li>').addClass('toc-' + $this.prop('tagName').toLowerCase())
.append($('<a></a>').text($this.text()).attr('href', '#' + $this.prop('id'))));
});
$tocLi = $tocUl.children('li');
$tocUl.on('click', 'a', function(e) {
e.preventDefault();
var $this = $(this);
scrolling = true;
setState($this.parent());
$scroller.scrollToAnchor($this.attr('href'), 400, function() {
scrolling = false;
});
});
}
hasRendered = true;
}
function init() {
var interval, timeout;
if(!hasInit) {
render(); calc(); setState(null, scrolling);
// run calc every 100 millisecond
interval = setInterval(function() {
calc();
}, 100);
timeout = setTimeout(function() {
clearInterval(interval);
}, 45000);
window.pageLoad.then(function() {
setTimeout(function() {
clearInterval(interval);
clearTimeout(timeout);
}, 3000);
});
$scrollTarget.on('scroll', function() {
disabled || setState(null, scrolling);
});
$window.on('resize', window.throttle(function() {
if (!disabled) {
render(); calc(); setState(null, scrolling);
}
}, 100));
}
hasInit = true;
}
setOptions(options);
if (!disabled) {
init();
}
$window.on('resize', window.throttle(function() {
init();
}, 200));
return {
setOptions: setOptions
};
}
$.fn.toc = toc;
});
})();
/*(function () {
})();*/
</script><script>
/* toc must before affix, since affix need to konw toc' height. */(function() {
var SOURCES = window.TEXT_VARIABLES.sources;
var TOC_SELECTOR = window.TEXT_VARIABLES.site.toc.selectors;
window.Lazyload.js(SOURCES.jquery, function() {
var $window = $(window);
var $articleContent = $('.js-article-content');
var $tocRoot = $('.js-toc-root'), $col2 = $('.js-col-aside');
var toc;
var tocDisabled = false;
var hasSidebar = $('.js-page-root').hasClass('layout--page--sidebar');
var hasToc = $articleContent.find(TOC_SELECTOR).length > 0;
function disabled() {
return $col2.css('display') === 'none' || !hasToc;
}
tocDisabled = disabled();
toc = $tocRoot.toc({
selectors: TOC_SELECTOR,
container: $articleContent,
scrollTarget: hasSidebar ? '.js-page-main' : null,
scroller: hasSidebar ? '.js-page-main' : null,
disabled: tocDisabled
});
$window.on('resize', window.throttle(function() {
tocDisabled = disabled();
toc && toc.setOptions({
disabled: tocDisabled
});
}, 100));
});
})();
(function() {
var SOURCES = window.TEXT_VARIABLES.sources;
window.Lazyload.js(SOURCES.jquery, function() {
var $window = $(window), $pageFooter = $('.js-page-footer');
var $pageAside = $('.js-page-aside');
var affix;
var tocDisabled = false;
var hasSidebar = $('.js-page-root').hasClass('layout--page--sidebar');
affix = $pageAside.affix({
offsetBottom: $pageFooter.outerHeight(),
scrollTarget: hasSidebar ? '.js-page-main' : null,
scroller: hasSidebar ? '.js-page-main' : null,
scroll: hasSidebar ? $('.js-page-main').children() : null,
disabled: tocDisabled
});
$window.on('resize', window.throttle(function() {
affix && affix.setOptions({
disabled: tocDisabled
});
}, 100));
window.pageAsideAffix = affix;
});
})();
</script><!---->
</div>
<script>(function () {
var $root = document.getElementsByClassName('root')[0];
if (window.hasEvent('touchstart')) {
$root.dataset.isTouch = true;
document.addEventListener('touchstart', function(){}, false);
}
})();
</script>
</body>
</html>