mirror of
https://github.com/lrsjng/h5ai.git
synced 2025-05-24 03:57:08 -04:00
Bundle utils.
This commit is contained in:
parent
6b3ba18da1
commit
901d8c407d
37 changed files with 88 additions and 86 deletions
|
@ -1,4 +1,4 @@
|
|||
const {isStr, isFn} = require('../lo');
|
||||
const {isStr, isFn} = require('../util');
|
||||
|
||||
const subscriptions = {};
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
const {isNum} = require('../lo');
|
||||
const {isNum} = require('../util');
|
||||
|
||||
const decimalMetric = {
|
||||
t: 1000.0,
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
const {each, values, isFn, difference} = require('../lo');
|
||||
const {each, values, isFn, difference} = require('../util');
|
||||
const {win} = require('../globals');
|
||||
const {request} = require('../server');
|
||||
const allsettings = require('./settings');
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
const {includes} = require('../lo');
|
||||
const {includes} = require('../util');
|
||||
const config = require('../config');
|
||||
const settings = require('./settings');
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
const {each, map} = require('../lo');
|
||||
const {each, map} = require('../util');
|
||||
const config = require('../config');
|
||||
|
||||
const reEndsWithSlash = /\/$/;
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
const {each} = require('../lo');
|
||||
const {each} = require('../util');
|
||||
const {win, jq} = require('../globals');
|
||||
const resource = require('../core/resource');
|
||||
const allsettings = require('../core/settings');
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
const {each} = require('../lo');
|
||||
const {dom} = require('../dom');
|
||||
const {each, dom} = require('../util');
|
||||
const event = require('../core/event');
|
||||
const location = require('../core/location');
|
||||
const resource = require('../core/resource');
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
const {each} = require('../lo');
|
||||
const {each} = require('../util');
|
||||
const {jq} = require('../globals');
|
||||
const server = require('../server');
|
||||
const event = require('../core/event');
|
||||
|
|
|
@ -1,10 +1,8 @@
|
|||
const {filter, debounce} = require('../lo');
|
||||
const {dom} = require('../dom');
|
||||
const {filter, debounce, parsePattern, dom} = require('../util');
|
||||
const event = require('../core/event');
|
||||
const location = require('../core/location');
|
||||
const resource = require('../core/resource');
|
||||
const allsettings = require('../core/settings');
|
||||
const util = require('../core/util');
|
||||
const view = require('../view/view');
|
||||
|
||||
|
||||
|
@ -50,7 +48,7 @@ const update = () => {
|
|||
if (inputIsVisible) {
|
||||
$filter.addCls('active');
|
||||
$input[0].focus();
|
||||
filterItems(util.parsePattern($input.val(), settings.advanced));
|
||||
filterItems(parsePattern($input.val(), settings.advanced));
|
||||
} else {
|
||||
filterItems();
|
||||
$filter.rmCls('active');
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
const {map} = require('../lo');
|
||||
const {map} = require('../util');
|
||||
const {win} = require('../globals');
|
||||
const event = require('../core/event');
|
||||
const allsettings = require('../core/settings');
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
const {isNum} = require('../lo');
|
||||
const {isNum} = require('../util');
|
||||
const {win, jq, kjua} = require('../globals');
|
||||
const event = require('../core/event');
|
||||
const format = require('../core/format');
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
const {each, isStr} = require('../lo');
|
||||
const {each, isStr} = require('../util');
|
||||
const {win, jq} = require('../globals');
|
||||
const server = require('../server');
|
||||
const event = require('../core/event');
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
const {dom, onLoad} = require('../util');
|
||||
const {win} = require('../globals');
|
||||
const {dom, onLoad} = require('../dom');
|
||||
const event = require('../core/event');
|
||||
const allsettings = require('../core/settings');
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
const {each, map, includes, compact} = require('../lo');
|
||||
const {each, map, includes, compact} = require('../util');
|
||||
const {win, jq} = require('../globals');
|
||||
const event = require('../core/event');
|
||||
const format = require('../core/format');
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
const {each, map, includes, compact} = require('../lo');
|
||||
const {each, map, includes, compact} = require('../util');
|
||||
const {win, jq} = require('../globals');
|
||||
const server = require('../server');
|
||||
const event = require('../core/event');
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
const {each, map, keys, includes, compact} = require('../lo');
|
||||
const {each, map, keys, includes, compact} = require('../util');
|
||||
const {win, jq, marked, prism} = require('../globals');
|
||||
const event = require('../core/event');
|
||||
const allsettings = require('../core/settings');
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
const {each, map, includes, compact} = require('../lo');
|
||||
const {each, map, includes, compact} = require('../util');
|
||||
const {win, jq} = require('../globals');
|
||||
const event = require('../core/event');
|
||||
const allsettings = require('../core/settings');
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
const {each, isFn, isNum} = require('../lo');
|
||||
const {each, isFn, isNum} = require('../util');
|
||||
const {win, jq} = require('../globals');
|
||||
const resource = require('../core/resource');
|
||||
const allsettings = require('../core/settings');
|
||||
|
|
|
@ -1,11 +1,9 @@
|
|||
const {map, debounce} = require('../lo');
|
||||
const {dom} = require('../dom');
|
||||
const {map, debounce, parsePattern, dom} = require('../util');
|
||||
const server = require('../server');
|
||||
const event = require('../core/event');
|
||||
const location = require('../core/location');
|
||||
const resource = require('../core/resource');
|
||||
const allsettings = require('../core/settings');
|
||||
const util = require('../core/util');
|
||||
const Item = require('../model/item');
|
||||
const view = require('../view/view');
|
||||
|
||||
|
@ -58,7 +56,7 @@ const update = () => {
|
|||
if (inputIsVisible) {
|
||||
$search.addCls('active');
|
||||
$input[0].focus();
|
||||
search(util.parsePattern($input.val(), settings.advanced));
|
||||
search(parsePattern($input.val(), settings.advanced));
|
||||
} else {
|
||||
search();
|
||||
$search.rmCls('active');
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
const {each, map} = require('../lo');
|
||||
const {each, map} = require('../util');
|
||||
const {win, jq} = require('../globals');
|
||||
const event = require('../core/event');
|
||||
const resource = require('../core/resource');
|
||||
|
|
|
@ -1,10 +1,8 @@
|
|||
const {each, toArray} = require('../lo');
|
||||
const {dom} = require('../dom');
|
||||
const {each, toArray, dom, regularCmp, naturalCmp} = require('../util');
|
||||
const event = require('../core/event');
|
||||
const resource = require('../core/resource');
|
||||
const allsettings = require('../core/settings');
|
||||
const store = require('../core/store');
|
||||
const util = require('../core/util');
|
||||
|
||||
const settings = Object.assign({
|
||||
enabled: false,
|
||||
|
@ -71,7 +69,7 @@ const cmpFn = (getValue, reverse, ignorecase, natural) => {
|
|||
}
|
||||
}
|
||||
|
||||
res = natural ? util.naturalCmpFn(val1, val2) : util.regularCmpFn(val1, val2);
|
||||
res = natural ? naturalCmp(val1, val2) : regularCmp(val1, val2);
|
||||
return reverse ? -res : res;
|
||||
};
|
||||
};
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
const {each, map, includes} = require('../lo');
|
||||
const {each, map, includes} = require('../util');
|
||||
const server = require('../server');
|
||||
const event = require('../core/event');
|
||||
const allsettings = require('../core/settings');
|
||||
|
|
|
@ -1,11 +1,10 @@
|
|||
const {each} = require('../lo');
|
||||
const {each, regularCmp, naturalCmp} = require('../util');
|
||||
const {jq} = require('../globals');
|
||||
const event = require('../core/event');
|
||||
const location = require('../core/location');
|
||||
const resource = require('../core/resource');
|
||||
const allsettings = require('../core/settings');
|
||||
const store = require('../core/store');
|
||||
const util = require('../core/util');
|
||||
|
||||
|
||||
const settings = Object.assign({
|
||||
|
@ -44,7 +43,7 @@ function cmpFn(item1, item2) {
|
|||
val2 = val2.toLowerCase();
|
||||
}
|
||||
|
||||
return settings.natural ? util.naturalCmpFn(val1, val2) : util.regularCmpFn(val1, val2);
|
||||
return settings.natural ? naturalCmp(val1, val2) : regularCmp(val1, val2);
|
||||
}
|
||||
|
||||
function update(item) {
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
const {dom, onReady} = require('./dom');
|
||||
const {dom, onReady} = require('./util');
|
||||
const config = require('./config');
|
||||
|
||||
const name = dom('script[data-module]').attr('data-module');
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
const {dom} = require('../util');
|
||||
const {win} = require('../globals');
|
||||
const {dom} = require('../dom');
|
||||
const config = require('../config');
|
||||
const server = require('../server');
|
||||
const resource = require('../core/resource');
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
const {keys, each, filter, sortBy, isFn, isStr, isNum} = require('../lo');
|
||||
const {keys, each, filter, sortBy, isFn, isStr, isNum} = require('../util');
|
||||
const server = require('../server');
|
||||
const location = require('../core/location');
|
||||
const settings = require('../core/settings');
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
const {each, dom} = require('./util');
|
||||
const {win} = require('./globals');
|
||||
const {dom} = require('./dom');
|
||||
const {each} = require('./lo');
|
||||
const XHR = win.XMLHttpRequest;
|
||||
|
||||
const request = data => {
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
const {win} = require('./globals');
|
||||
const {win} = require('../globals');
|
||||
const {each, filter, hasLength, is, isStr, map, isInstanceOf, toArray} = require('./lo');
|
||||
|
||||
const doc = win.document;
|
6
src/_h5ai/public/js/lib/util/index.js
Normal file
6
src/_h5ai/public/js/lib/util/index.js
Normal file
|
@ -0,0 +1,6 @@
|
|||
module.exports = Object.assign({},
|
||||
require('./lo'),
|
||||
require('./dom'),
|
||||
require('./naturalCmp'),
|
||||
require('./misc')
|
||||
);
|
24
src/_h5ai/public/js/lib/util/misc.js
Normal file
24
src/_h5ai/public/js/lib/util/misc.js
Normal file
|
@ -0,0 +1,24 @@
|
|||
const regularCmp = (x, y) => x < y ? -1 : x > y ? 1 : 0;
|
||||
|
||||
const escapePattern = sequence => {
|
||||
return sequence.replace(/[\-\[\]{}()*+?.,\\$\^|#\s]/g, '\\$&');
|
||||
};
|
||||
|
||||
const parsePattern = (sequence, advanced) => {
|
||||
if (!advanced) {
|
||||
return escapePattern(sequence);
|
||||
}
|
||||
|
||||
if (sequence.substr(0, 3) === 're:') {
|
||||
return sequence.substr(3);
|
||||
}
|
||||
|
||||
return sequence.trim().split(/\s+/).map(part => {
|
||||
return part.split('').map(char => escapePattern(char)).join('.*?');
|
||||
}).join('|');
|
||||
};
|
||||
|
||||
module.exports = {
|
||||
regularCmp,
|
||||
parsePattern
|
||||
};
|
|
@ -1,26 +1,29 @@
|
|||
const regularCmpFn = (x, y) => x < y ? -1 : x > y ? 1 : 0;
|
||||
|
||||
// Natural Sort algorithm for Javascript - Version 0.7 - Released under MIT license
|
||||
// Author: Jim Palmer (based on chunking idea from Dave Koelle)
|
||||
//
|
||||
|
||||
// Modified to make it work with h5ai
|
||||
const naturalCmpFn = (val1, val2) => {
|
||||
|
||||
|
||||
const re = /(^-?[0-9]+(\.?[0-9]*)[df]?e?[0-9]?$|^0x[0-9a-f]+$|[0-9]+)/gi;
|
||||
const sre = /(^[ ]*|[ ]*$)/g;
|
||||
const reStrip = /(^[ ]*|[ ]*$)/g;
|
||||
const dre = /(^([\w ]+,?[\w ]+)?[\w ]+,?[\w ]+\d+:\d+(:\d+)?[\w ]?|^\d{1,4}[\/\-]\d{1,4}[\/\-]\d{1,4}|^\w+, \w+ \d+, \d{4})/;
|
||||
const hre = /^0x[0-9a-f]+$/i;
|
||||
const ore = /^0/;
|
||||
const reHex = /^0x[0-9a-f]+$/i;
|
||||
const reLeadingZero = /^0/;
|
||||
|
||||
const naturalCmp = (val1, val2) => {
|
||||
// convert all to strings strip whitespace
|
||||
const x = String(val1).replace(sre, '');
|
||||
const y = String(val2).replace(sre, '');
|
||||
const x = String(val1).replace(reStrip, '');
|
||||
const y = String(val2).replace(reStrip, '');
|
||||
// chunk/tokenize
|
||||
const xN = x.replace(re, '\0$1\0').replace(/\0$/, '').replace(/^\0/, '').split('\0');
|
||||
const yN = y.replace(re, '\0$1\0').replace(/\0$/, '').replace(/^\0/, '').split('\0');
|
||||
// numeric, hex or date detection
|
||||
const xD = parseInt(x.match(hre), 10) || xN.length !== 1 && x.match(dre) && Date.parse(x);
|
||||
const yD = parseInt(y.match(hre), 10) || xD && y.match(dre) && Date.parse(y) || null;
|
||||
const xD = parseInt(x.match(reHex), 10) || xN.length !== 1 && x.match(dre) && Date.parse(x);
|
||||
const yD = parseInt(y.match(reHex), 10) || xD && y.match(dre) && Date.parse(y) || null;
|
||||
|
||||
let oFxNcL;
|
||||
let oFyNcL;
|
||||
|
||||
// first try and sort Hex codes or Dates
|
||||
if (yD) {
|
||||
if (xD < yD) {
|
||||
|
@ -29,11 +32,12 @@ const naturalCmpFn = (val1, val2) => {
|
|||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
// natural sorting through split numeric strings and default strings
|
||||
for (let cLoc = 0, numS = Math.max(xN.length, yN.length); cLoc < numS; cLoc += 1) {
|
||||
// find floats not starting with '0', string or 0 if not defined (Clint Priest)
|
||||
oFxNcL = !(xN[cLoc] || '').match(ore) && parseFloat(xN[cLoc]) || xN[cLoc] || 0;
|
||||
oFyNcL = !(yN[cLoc] || '').match(ore) && parseFloat(yN[cLoc]) || yN[cLoc] || 0;
|
||||
oFxNcL = !(xN[cLoc] || '').match(reLeadingZero) && parseFloat(xN[cLoc]) || xN[cLoc] || 0;
|
||||
oFyNcL = !(yN[cLoc] || '').match(reLeadingZero) && parseFloat(yN[cLoc]) || yN[cLoc] || 0;
|
||||
// handle numeric vs string comparison - number < string - (Kyle Adams)
|
||||
if (isNaN(oFxNcL) !== isNaN(oFyNcL)) {
|
||||
return isNaN(oFxNcL) ? 1 : -1;
|
||||
|
@ -49,31 +53,10 @@ const naturalCmpFn = (val1, val2) => {
|
|||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
};
|
||||
|
||||
const escapePattern = sequence => {
|
||||
return sequence.replace(/[\-\[\]{}()*+?.,\\$\^|#\s]/g, '\\$&');
|
||||
};
|
||||
|
||||
const parsePattern = (sequence, advanced) => {
|
||||
if (!advanced) {
|
||||
return escapePattern(sequence);
|
||||
}
|
||||
|
||||
if (sequence.substr(0, 3) === 're:') {
|
||||
return sequence.substr(3);
|
||||
}
|
||||
|
||||
return sequence.trim().split(/\s+/).map(part => {
|
||||
return part.split('').map(char => escapePattern(char)).join('.*?');
|
||||
}).join('|');
|
||||
};
|
||||
|
||||
|
||||
module.exports = {
|
||||
regularCmpFn,
|
||||
naturalCmpFn,
|
||||
escapePattern,
|
||||
parsePattern
|
||||
naturalCmp
|
||||
};
|
|
@ -1,4 +1,4 @@
|
|||
const {dom} = require('../dom');
|
||||
const {dom} = require('../util');
|
||||
|
||||
const rootSelector = 'body';
|
||||
const tplTopbar =
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
const {dom} = require('../dom');
|
||||
const {dom} = require('../util');
|
||||
const base = require('./base');
|
||||
|
||||
const init = () => {
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
const {dom} = require('../dom');
|
||||
const {dom} = require('../util');
|
||||
const resource = require('../core/resource');
|
||||
const allsettings = require('../core/settings');
|
||||
const store = require('../core/store');
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
const {each, map, includes, intersection} = require('../lo');
|
||||
const {dom} = require('../dom');
|
||||
const {each, map, includes, intersection, dom} = require('../util');
|
||||
const event = require('../core/event');
|
||||
const format = require('../core/format');
|
||||
const location = require('../core/location');
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
const {each} = require('../lo');
|
||||
const {dom} = require('../dom');
|
||||
const {each, dom} = require('../util');
|
||||
const event = require('../core/event');
|
||||
const resource = require('../core/resource');
|
||||
const allsettings = require('../core/settings');
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue