@startlibs/utils 1.0.4 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/ActionUtils.mjs +117 -0
- package/lib/ActionUtils.mjs.map +1 -0
- package/lib/FetchUtils.mjs +100 -0
- package/lib/FetchUtils.mjs.map +1 -0
- package/lib/createPressEvent.mjs +74 -0
- package/lib/createPressEvent.mjs.map +1 -0
- package/lib/fixMediaQuery.mjs +64 -0
- package/lib/fixMediaQuery.mjs.map +1 -0
- package/lib/formatDate.mjs +110 -0
- package/lib/formatDate.mjs.map +1 -0
- package/lib/formatUtils.mjs +64 -0
- package/lib/formatUtils.mjs.map +1 -0
- package/lib/getClosestOffsetScroll.mjs +15 -0
- package/lib/getClosestOffsetScroll.mjs.map +1 -0
- package/lib/hooks/useEventListener.mjs +27 -0
- package/lib/hooks/useEventListener.mjs.map +1 -0
- package/lib/index.cjs +1811 -0
- package/lib/index.cjs.map +1 -0
- package/lib/index.mjs +19 -0
- package/lib/index.mjs.map +1 -0
- package/lib/lodashUtils.mjs +131 -0
- package/lib/lodashUtils.mjs.map +1 -0
- package/lib/promiseUtils.mjs +92 -0
- package/lib/promiseUtils.mjs.map +1 -0
- package/lib/reactUtils.mjs +12 -0
- package/lib/reactUtils.mjs.map +1 -0
- package/lib/reduceUtils.mjs +14 -0
- package/lib/reduceUtils.mjs.map +1 -0
- package/lib/smoothScroll.mjs +59 -0
- package/lib/smoothScroll.mjs.map +1 -0
- package/lib/styled.mjs +234 -0
- package/lib/styled.mjs.map +1 -0
- package/lib/timeUtils.mjs +81 -0
- package/lib/timeUtils.mjs.map +1 -0
- package/lib/timerUtils.mjs +11 -0
- package/lib/timerUtils.mjs.map +1 -0
- package/lib/utils.mjs +386 -0
- package/lib/utils.mjs.map +1 -0
- package/lib/wrapLazy.mjs +132 -0
- package/lib/wrapLazy.mjs.map +1 -0
- package/package.json +44 -30
- package/src/ActionUtils.js +90 -0
- package/src/FetchUtils.js +87 -0
- package/src/createPressEvent.jsx +79 -0
- package/src/fixMediaQuery.js +71 -0
- package/src/formatDate.js +121 -0
- package/src/formatUtils.jsx +63 -0
- package/src/getClosestOffsetScroll.js +12 -0
- package/src/hooks/useEventListener.js +26 -0
- package/src/index.js +19 -0
- package/src/lodashUtils.jsx +110 -0
- package/src/promiseUtils.jsx +75 -0
- package/src/reactUtils.jsx +7 -0
- package/src/reduceUtils.jsx +6 -0
- package/src/smoothScroll.js +58 -0
- package/src/styled.js +177 -0
- package/src/timeUtils.jsx +57 -0
- package/src/timerUtils.jsx +10 -0
- package/src/utils.jsx +342 -0
- package/src/wrapLazy.jsx +122 -0
- package/.babelrc +0 -26
- package/lib/index.js +0 -2399
- package/rollup.config.js +0 -44
- package/yarn-error.log +0 -3643
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
import _defineProperty from '@babel/runtime/helpers/defineProperty';
|
|
2
|
+
import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
|
|
3
|
+
import _set from 'lodash/fp/set';
|
|
4
|
+
import _last from 'lodash/fp/last';
|
|
5
|
+
import { useMemo } from 'react';
|
|
6
|
+
import { callIfFunction } from './utils.mjs';
|
|
7
|
+
import { _s } from './lodashUtils.mjs';
|
|
8
|
+
|
|
9
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
10
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
11
|
+
const isNotSelector = v => typeof v !== 'function' || v.length === 0;
|
|
12
|
+
const toSelector = v => isNotSelector(v) ? s => _s.get(callIfFunction(v), s) : v;
|
|
13
|
+
const mergeSelectors = (prev, next) => v => next(prev(v));
|
|
14
|
+
const concatSelectors = function () {
|
|
15
|
+
for (var _len = arguments.length, paths = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
16
|
+
paths[_key] = arguments[_key];
|
|
17
|
+
}
|
|
18
|
+
return paths.reduce((_ref, path) => {
|
|
19
|
+
let _ref2 = _slicedToArray(_ref, 2),
|
|
20
|
+
selector = _ref2[0],
|
|
21
|
+
isSelector = _ref2[1];
|
|
22
|
+
return isNotSelector(path) && !isSelector ? [selector.concat(path), false] : [mergeSelectors(toSelector(selector), path), true];
|
|
23
|
+
}, [[], false]);
|
|
24
|
+
};
|
|
25
|
+
const COMPLETE_ACTION = {};
|
|
26
|
+
const REDUCE = {};
|
|
27
|
+
const FETCH = {};
|
|
28
|
+
const SKIP_FETCH = {};
|
|
29
|
+
const SKIP_DISPATCH = {};
|
|
30
|
+
const SKIPPED_ACTION = {};
|
|
31
|
+
const selectPath = function (useState) {
|
|
32
|
+
for (var _len2 = arguments.length, paths = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {
|
|
33
|
+
paths[_key2 - 1] = arguments[_key2];
|
|
34
|
+
}
|
|
35
|
+
const _useMemo = useMemo(() => concatSelectors(...paths), paths),
|
|
36
|
+
_useMemo2 = _slicedToArray(_useMemo, 1),
|
|
37
|
+
selector = _useMemo2[0];
|
|
38
|
+
const _useState = useState(selector),
|
|
39
|
+
_useState2 = _slicedToArray(_useState, 1),
|
|
40
|
+
value = _useState2[0];
|
|
41
|
+
return value;
|
|
42
|
+
};
|
|
43
|
+
const Action = function (fnOrArray) {
|
|
44
|
+
let prevArgs = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
|
|
45
|
+
const isArray = Array.isArray(fnOrArray);
|
|
46
|
+
if (isArray) {
|
|
47
|
+
// excessive paramaeters called on the action, used for options.
|
|
48
|
+
const actionType = _last(prevArgs);
|
|
49
|
+
const _fnOrArray = _slicedToArray(fnOrArray, 3),
|
|
50
|
+
fetcher = _fnOrArray[0],
|
|
51
|
+
reducer = _fnOrArray[1],
|
|
52
|
+
rollbacker = _fnOrArray[2];
|
|
53
|
+
if (actionType === REDUCE) {
|
|
54
|
+
return reducer(null, prevArgs);
|
|
55
|
+
} else if (actionType === FETCH) {
|
|
56
|
+
return fetcher();
|
|
57
|
+
} else {
|
|
58
|
+
return _set('extra', fnOrArray.extra, [actionType === SKIP_FETCH ? () => Promise.resolve() : fetcher, actionType === SKIP_DISPATCH ? undefined : reducer].concat(rollbacker || []));
|
|
59
|
+
}
|
|
60
|
+
} else {
|
|
61
|
+
return prevArgs.length < fnOrArray.length ? function () {
|
|
62
|
+
for (var _len3 = arguments.length, moreArgs = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {
|
|
63
|
+
moreArgs[_key3] = arguments[_key3];
|
|
64
|
+
}
|
|
65
|
+
return Action(fnOrArray, [...prevArgs, ...moreArgs]);
|
|
66
|
+
} : Action(fnOrArray(...prevArgs), prevArgs);
|
|
67
|
+
}
|
|
68
|
+
};
|
|
69
|
+
const mapAction = (get, dispatcher, firstRun) => action => {
|
|
70
|
+
if (Array.isArray(action)) {
|
|
71
|
+
if (firstRun) {
|
|
72
|
+
return () => mapAction(get, dispatcher)(action);
|
|
73
|
+
}
|
|
74
|
+
const _action = _slicedToArray(action, 3),
|
|
75
|
+
fetcher = _action[0],
|
|
76
|
+
reducer = _action[1],
|
|
77
|
+
rollbacker = _action[2];
|
|
78
|
+
const _ref3 = action.extra || {},
|
|
79
|
+
skip = _ref3.skip;
|
|
80
|
+
if (skip && skip(get())) {
|
|
81
|
+
return Promise.resolve(SKIPPED_ACTION);
|
|
82
|
+
}
|
|
83
|
+
const fetched = fetcher();
|
|
84
|
+
if (rollbacker) {
|
|
85
|
+
dispatcher(prevState => {
|
|
86
|
+
const nextState = reducer(null)(prevState);
|
|
87
|
+
fetched.catch(response => {
|
|
88
|
+
dispatcher(rollbacker(prevState, nextState, response));
|
|
89
|
+
});
|
|
90
|
+
return nextState;
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
if (reducer !== undefined) {
|
|
94
|
+
fetched.then(response => dispatcher(reducer(response)));
|
|
95
|
+
}
|
|
96
|
+
return fetched;
|
|
97
|
+
} else {
|
|
98
|
+
return function () {
|
|
99
|
+
return mapAction(get, dispatcher)(action(...arguments));
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
};
|
|
103
|
+
const activateActions = function (get, dispatcher) {
|
|
104
|
+
for (var _len4 = arguments.length, actions = new Array(_len4 > 2 ? _len4 - 2 : 0), _key4 = 2; _key4 < _len4; _key4++) {
|
|
105
|
+
actions[_key4 - 2] = arguments[_key4];
|
|
106
|
+
}
|
|
107
|
+
return actions.map(mapAction(get, dispatcher, true));
|
|
108
|
+
};
|
|
109
|
+
const SkipAction = (skip, action) => {
|
|
110
|
+
action.extra = _objectSpread(_objectSpread({}, action.extra), {}, {
|
|
111
|
+
skip
|
|
112
|
+
});
|
|
113
|
+
return action;
|
|
114
|
+
};
|
|
115
|
+
|
|
116
|
+
export { Action, COMPLETE_ACTION, FETCH, REDUCE, SKIPPED_ACTION, SKIP_DISPATCH, SKIP_FETCH, SkipAction, activateActions, concatSelectors, selectPath };
|
|
117
|
+
//# sourceMappingURL=ActionUtils.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ActionUtils.mjs","sources":["../src/ActionUtils.js"],"sourcesContent":["import {useMemo} from 'react'\nimport {callIfFunction} from './utils'\nimport {_s} from './lodashUtils'\nimport _ from 'lodash/fp'\n\nconst isNotSelector = (v) => (typeof v !== 'function' || v.length === 0)\n\nconst toSelector = (v) => isNotSelector(v) ? (s) => _s.get(callIfFunction(v),s) : v\n\nconst mergeSelectors = (prev, next) => (v) => next(prev(v))\nexport const concatSelectors = (...paths) => paths.reduce(([selector, isSelector], path) =>\n isNotSelector(path) && !isSelector\n ? [selector.concat(path), false]\n : [mergeSelectors(toSelector(selector), path), true],\n [[], false]\n)\n\nexport const COMPLETE_ACTION = {}\nexport const REDUCE = {}\nexport const FETCH = {}\nexport const SKIP_FETCH = {}\nexport const SKIP_DISPATCH = {}\nexport const SKIPPED_ACTION = {}\n\nconst ACTION_TYPES = [COMPLETE_ACTION,REDUCE,FETCH,SKIP_FETCH,SKIP_DISPATCH]\n\nexport const selectPath = (useState, ...paths) => {\n const [selector] = useMemo(() => concatSelectors(...paths), paths)\n const [value] = useState(selector)\n return value\n}\n\nexport const Action = (fnOrArray, prevArgs = []) => {\n const isArray = Array.isArray(fnOrArray)\n if (isArray) {\n // excessive paramaeters called on the action, used for options.\n const actionType = _.last(prevArgs)\n const [fetcher, reducer, rollbacker] = fnOrArray\n if (actionType === REDUCE) {\n return reducer(null,prevArgs)\n } else if (actionType === FETCH) {\n return fetcher()\n } else {\n return _.set('extra',fnOrArray.extra,[\n actionType === SKIP_FETCH ? () => Promise.resolve() : fetcher,\n actionType === SKIP_DISPATCH ? undefined : reducer,\n ].concat(rollbacker || []))\n }\n } else {\n return prevArgs.length < fnOrArray.length ? (...moreArgs) => Action(fnOrArray,[...prevArgs,...moreArgs]) : Action(fnOrArray(...prevArgs),prevArgs)\n }\n}\n\nconst mapAction = (get, dispatcher, firstRun) => (action) => {\n if (Array.isArray(action)) {\n if (firstRun) {\n return () => mapAction(get,dispatcher)(action)\n }\n const [fetcher, reducer, rollbacker] = action\n const {skip} = action.extra || {}\n if (skip && skip(get())) {\n return Promise.resolve(SKIPPED_ACTION)\n }\n const fetched = fetcher()\n if (rollbacker) {\n dispatcher(prevState => {\n const nextState = reducer(null)(prevState)\n fetched.catch((response)=> {\n dispatcher(rollbacker(prevState,nextState,response))\n })\n return nextState\n })\n }\n if (reducer !== undefined) {\n fetched.then((response) => dispatcher(reducer(response)))\n }\n return fetched\n } else {\n return (...moreMetas) => mapAction(get,dispatcher)(action(...moreMetas))\n }\n}\n\nexport const activateActions = (get, dispatcher, ...actions) => {\n return actions.map(mapAction(get, dispatcher,true))\n}\n\nexport const SkipAction = (skip,action) => {\n action.extra = {...action.extra,skip}\n return action\n}"],"names":["isNotSelector","v","length","toSelector","s","_s","get","callIfFunction","mergeSelectors","prev","next","concatSelectors","_len","arguments","paths","Array","_key","reduce","_ref","path","_ref2","_slicedToArray","selector","isSelector","concat","COMPLETE_ACTION","REDUCE","FETCH","SKIP_FETCH","SKIP_DISPATCH","SKIPPED_ACTION","selectPath","useState","_len2","_key2","_useMemo","useMemo","_useMemo2","_useState","_useState2","value","Action","fnOrArray","prevArgs","undefined","isArray","actionType","_last","_fnOrArray","fetcher","reducer","rollbacker","_set","extra","Promise","resolve","_len3","moreArgs","_key3","mapAction","dispatcher","firstRun","action","_action","_ref3","skip","fetched","prevState","nextState","catch","response","then","activateActions","_len4","actions","_key4","map","SkipAction","_objectSpread"],"mappings":"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"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
|
|
2
|
+
import _defineProperty from '@babel/runtime/helpers/defineProperty';
|
|
3
|
+
import _isPlainObject from 'lodash/fp/isPlainObject';
|
|
4
|
+
import { callIfFunction } from './utils.mjs';
|
|
5
|
+
|
|
6
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
7
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
8
|
+
const resolveFetch = async (url, fetchOptions) => {
|
|
9
|
+
try {
|
|
10
|
+
const response = await fetch(url, _objectSpread({
|
|
11
|
+
credentials: 'same-origin'
|
|
12
|
+
}, fetchOptions));
|
|
13
|
+
const text = await response.text();
|
|
14
|
+
try {
|
|
15
|
+
const json = JSON.parse(text);
|
|
16
|
+
return [json, response];
|
|
17
|
+
} catch (eror) {
|
|
18
|
+
return [text, response];
|
|
19
|
+
}
|
|
20
|
+
} catch (error) {
|
|
21
|
+
return [error, false];
|
|
22
|
+
}
|
|
23
|
+
};
|
|
24
|
+
const innerFetcher = async (url, fetchOptions) => {
|
|
25
|
+
const _await$resolveFetch = await resolveFetch(url, fetchOptions),
|
|
26
|
+
_await$resolveFetch2 = _slicedToArray(_await$resolveFetch, 2),
|
|
27
|
+
data = _await$resolveFetch2[0],
|
|
28
|
+
response = _await$resolveFetch2[1];
|
|
29
|
+
if (!response || response.status >= 400) {
|
|
30
|
+
throw [data, response];
|
|
31
|
+
} else {
|
|
32
|
+
return [data, response];
|
|
33
|
+
}
|
|
34
|
+
};
|
|
35
|
+
const queryStringToObj = function () {
|
|
36
|
+
let str = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : window.location.search;
|
|
37
|
+
return Object.fromEntries(new URLSearchParams(str).entries());
|
|
38
|
+
};
|
|
39
|
+
const addQueryString = function () {
|
|
40
|
+
let existingUrl = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
|
|
41
|
+
let obj = arguments.length > 1 ? arguments[1] : undefined;
|
|
42
|
+
const _existingUrl$split = existingUrl.split('?'),
|
|
43
|
+
_existingUrl$split2 = _slicedToArray(_existingUrl$split, 2),
|
|
44
|
+
onlyUrl = _existingUrl$split2[0],
|
|
45
|
+
otherQueryString = _existingUrl$split2[1];
|
|
46
|
+
const params = new URLSearchParams(otherQueryString);
|
|
47
|
+
for (let key in obj) {
|
|
48
|
+
const value = obj[key];
|
|
49
|
+
if (value === null) {
|
|
50
|
+
params.delete(key);
|
|
51
|
+
} else {
|
|
52
|
+
params.set(key, obj[key]);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
const paramsStr = params.toString();
|
|
56
|
+
if (!paramsStr) {
|
|
57
|
+
return onlyUrl;
|
|
58
|
+
}
|
|
59
|
+
return onlyUrl + '?' + paramsStr;
|
|
60
|
+
};
|
|
61
|
+
const cleanNulls = str => str.replace(/\0/g, '');
|
|
62
|
+
|
|
63
|
+
// Cross-origin o X-Requested-With só custa: dispara preflight e impede o reuso do
|
|
64
|
+
// <link rel=preload as=fetch>, cujo request vai sem ele. Quem lê o header é servidor nosso.
|
|
65
|
+
const isSameOrigin = url => new URL(url, window.location.href).origin === window.location.origin;
|
|
66
|
+
let postFetcherWithResponse = async function (url, jsonOrForm) {
|
|
67
|
+
let fetchOptions = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
|
|
68
|
+
return innerFetcher(url, _objectSpread(_objectSpread({
|
|
69
|
+
method: 'POST',
|
|
70
|
+
body: typeof jsonOrForm === 'string' ? jsonOrForm : !jsonOrForm || jsonOrForm.constructor === window.FormData || jsonOrForm.constructor === window.File ? jsonOrForm : cleanNulls(JSON.stringify(jsonOrForm))
|
|
71
|
+
}, fetchOptions), {}, {
|
|
72
|
+
headers: _isPlainObject(fetchOptions.headers) || !fetchOptions.headers ? _objectSpread(_objectSpread(_objectSpread({}, jsonOrForm && (typeof jsonOrForm === 'string' || jsonOrForm.constructor === window.FormData) ? {} : {
|
|
73
|
+
'Content-Type': 'application/json; charset=UTF-8'
|
|
74
|
+
}), isSameOrigin(url) ? {
|
|
75
|
+
'X-Requested-With': 'XMLHttpRequest'
|
|
76
|
+
} : {}), fetchOptions.headers) : fetchOptions.headers
|
|
77
|
+
}));
|
|
78
|
+
};
|
|
79
|
+
let getFetcherWithResponse = async (url, jsonParams, fetchOptions) => innerFetcher(addQueryString(url, jsonParams), _objectSpread(_objectSpread({
|
|
80
|
+
method: 'GET'
|
|
81
|
+
}, fetchOptions), {}, {
|
|
82
|
+
headers: _objectSpread(_objectSpread({}, isSameOrigin(url) ? {
|
|
83
|
+
'X-Requested-With': 'XMLHttpRequest'
|
|
84
|
+
} : {}), fetchOptions === null || fetchOptions === void 0 ? void 0 : fetchOptions.headers)
|
|
85
|
+
}));
|
|
86
|
+
let postFetcher = async (url, json, options) => postFetcherWithResponse(url, json, options).then(_ref => {
|
|
87
|
+
let _ref2 = _slicedToArray(_ref, 1),
|
|
88
|
+
json = _ref2[0];
|
|
89
|
+
return json;
|
|
90
|
+
});
|
|
91
|
+
let getFetcher = async (url, json, options) => getFetcherWithResponse(url, json, options).then(_ref3 => {
|
|
92
|
+
let _ref4 = _slicedToArray(_ref3, 1),
|
|
93
|
+
json = _ref4[0];
|
|
94
|
+
return json;
|
|
95
|
+
});
|
|
96
|
+
const formFetchWithResponse = (url, options) => (values, meta) => postFetcherWithResponse(callIfFunction(url, meta, values), values, callIfFunction(options, meta, values));
|
|
97
|
+
const formFetch = (url, options) => (values, meta) => postFetcher(callIfFunction(url, meta, values), values, callIfFunction(options, meta, values));
|
|
98
|
+
|
|
99
|
+
export { addQueryString, formFetch, formFetchWithResponse, getFetcher, getFetcherWithResponse, postFetcher, postFetcherWithResponse, queryStringToObj };
|
|
100
|
+
//# sourceMappingURL=FetchUtils.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FetchUtils.mjs","sources":["../src/FetchUtils.js"],"sourcesContent":["import {callIfFunction} from './utils'\nimport _ from 'lodash/fp'\n\nconst resolveFetch = async (url, fetchOptions) => {\n try {\n const response = await fetch(url, {\n credentials: 'same-origin',\n ...fetchOptions\n })\n const text = await response.text()\n try {\n const json = JSON.parse(text)\n return [json, response]\n } catch (eror) {\n return [text, response]\n }\n } catch (error) {\n return [error, false]\n }\n}\n\nconst innerFetcher = async (url, fetchOptions) => {\n const [data, response] = await resolveFetch(url, fetchOptions)\n if (!response || response.status >= 400) {\n throw [data, response]\n } else {\n return [data, response]\n }\n}\nexport const queryStringToObj = (str = window.location.search) => Object.fromEntries(new URLSearchParams(str).entries())\n\nexport const addQueryString = (existingUrl = '',obj) => {\n const [onlyUrl, otherQueryString] = existingUrl.split('?')\n const params = new URLSearchParams(otherQueryString)\n for (let key in obj) {\n const value = obj[key]\n if (value === null) {\n params.delete(key)\n } else {\n params.set(key, obj[key])\n }\n }\n const paramsStr = params.toString()\n if (!paramsStr) {\n return onlyUrl\n }\n return onlyUrl + '?' + paramsStr\n}\n\nconst cleanNulls = (str) => str.replace(/\\0/g, '')\n\n// Cross-origin o X-Requested-With só custa: dispara preflight e impede o reuso do\n// <link rel=preload as=fetch>, cujo request vai sem ele. Quem lê o header é servidor nosso.\nconst isSameOrigin = (url) => new URL(url, window.location.href).origin === window.location.origin\n\nexport let postFetcherWithResponse = async (url, jsonOrForm, fetchOptions = {}) => innerFetcher(url, {\n method: 'POST',\n body: typeof jsonOrForm === 'string'\n ? jsonOrForm\n : !jsonOrForm || jsonOrForm.constructor === window.FormData || jsonOrForm.constructor === window.File\n ? jsonOrForm\n : cleanNulls(JSON.stringify(jsonOrForm)),\n ...fetchOptions,\n headers:\n (_.isPlainObject(fetchOptions.headers) || !fetchOptions.headers)\n ? {\n ...(jsonOrForm && (typeof jsonOrForm === 'string' || jsonOrForm.constructor === window.FormData) ? {} : {'Content-Type': 'application/json; charset=UTF-8'}),\n ...(isSameOrigin(url) ? {'X-Requested-With': 'XMLHttpRequest'} : {}),\n ...fetchOptions.headers\n }\n : fetchOptions.headers\n})\n\nexport let getFetcherWithResponse = async (url, jsonParams, fetchOptions) => innerFetcher(addQueryString(url, jsonParams), {\n method: 'GET',\n ...fetchOptions,\n headers: {\n ...(isSameOrigin(url) ? {'X-Requested-With': 'XMLHttpRequest'} : {}),\n ...fetchOptions?.headers\n }\n})\n\nexport let postFetcher = async (url, json, options) => postFetcherWithResponse(url, json, options).then(([json]) => json)\nexport let getFetcher = async (url, json, options) => getFetcherWithResponse(url, json, options).then(([json]) => json)\n\nexport const formFetchWithResponse = (url, options) => (values, meta) => postFetcherWithResponse(callIfFunction(url, meta, values), values, callIfFunction(options, meta, values))\nexport const formFetch = (url, options) => (values, meta) => postFetcher(callIfFunction(url, meta, values), values, callIfFunction(options, meta, values))\n"],"names":["resolveFetch","url","fetchOptions","response","fetch","_objectSpread","credentials","text","json","JSON","parse","eror","error","innerFetcher","_await$resolveFetch","_await$resolveFetch2","_slicedToArray","data","status","queryStringToObj","str","arguments","length","undefined","window","location","search","Object","fromEntries","URLSearchParams","entries","addQueryString","existingUrl","obj","_existingUrl$split","split","_existingUrl$split2","onlyUrl","otherQueryString","params","key","value","delete","set","paramsStr","toString","cleanNulls","replace","isSameOrigin","URL","href","origin","postFetcherWithResponse","jsonOrForm","method","body","constructor","FormData","File","stringify","headers","_isPlainObject","getFetcherWithResponse","jsonParams","postFetcher","options","then","_ref","_ref2","getFetcher","_ref3","_ref4","formFetchWithResponse","values","meta","callIfFunction","formFetch"],"mappings":"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"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
|
|
2
|
+
import 'react';
|
|
3
|
+
import { normalizePress, callIfFunction } from './utils.mjs';
|
|
4
|
+
|
|
5
|
+
const disableSelect = e => {
|
|
6
|
+
e.preventDefault();
|
|
7
|
+
};
|
|
8
|
+
const createPressEvent = onStart => normalizePress((startEvent, info) => {
|
|
9
|
+
const onEnd = onStart(startEvent, info);
|
|
10
|
+
const finish = normalizePress((e, info) => {
|
|
11
|
+
callIfFunction(onEnd, e, info);
|
|
12
|
+
window.removeEventListener('selectstart', disableSelect);
|
|
13
|
+
window.removeEventListener('touchend', finish);
|
|
14
|
+
window.removeEventListener('mouseup', finish);
|
|
15
|
+
});
|
|
16
|
+
window.addEventListener('selectstart', disableSelect);
|
|
17
|
+
if (startEvent.touches) {
|
|
18
|
+
window.addEventListener('touchend', finish);
|
|
19
|
+
} else {
|
|
20
|
+
window.addEventListener("mouseup", finish);
|
|
21
|
+
}
|
|
22
|
+
});
|
|
23
|
+
const createPressAndHoldEvent = (onStart, interval) => createPressEvent((startEvent, info) => {
|
|
24
|
+
const _concat = [].concat(onStart(startEvent, info)),
|
|
25
|
+
_concat2 = _slicedToArray(_concat, 2),
|
|
26
|
+
onInterval = _concat2[0],
|
|
27
|
+
onEnd = _concat2[1];
|
|
28
|
+
let i = 0;
|
|
29
|
+
if (interval) {
|
|
30
|
+
const intervalId = setInterval(() => {
|
|
31
|
+
onInterval(i++);
|
|
32
|
+
}, interval);
|
|
33
|
+
return normalizePress((e, info) => {
|
|
34
|
+
callIfFunction(onEnd, e, info);
|
|
35
|
+
clearInterval(intervalId);
|
|
36
|
+
});
|
|
37
|
+
} else {
|
|
38
|
+
let running = true;
|
|
39
|
+
const run = () => window.requestAnimationFrame(() => {
|
|
40
|
+
if (running) {
|
|
41
|
+
onInterval(i++);
|
|
42
|
+
run();
|
|
43
|
+
}
|
|
44
|
+
});
|
|
45
|
+
run();
|
|
46
|
+
return normalizePress((e, info) => {
|
|
47
|
+
callIfFunction(onEnd, e, info);
|
|
48
|
+
running = false;
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
});
|
|
52
|
+
const createPressAndMoveEvent = onStart => createPressEvent((startEvent, info) => {
|
|
53
|
+
const _concat3 = [].concat(onStart(startEvent, info)),
|
|
54
|
+
_concat4 = _slicedToArray(_concat3, 2),
|
|
55
|
+
onMove = _concat4[0],
|
|
56
|
+
onEnd = _concat4[1];
|
|
57
|
+
const finish = normalizePress((e, info) => {
|
|
58
|
+
callIfFunction(onEnd, e, info);
|
|
59
|
+
window.removeEventListener('touchmove', move);
|
|
60
|
+
window.removeEventListener('mousemove', move);
|
|
61
|
+
});
|
|
62
|
+
const move = normalizePress(onMove, finish);
|
|
63
|
+
if (startEvent.touches) {
|
|
64
|
+
window.addEventListener('touchmove', move, {
|
|
65
|
+
passive: false
|
|
66
|
+
});
|
|
67
|
+
} else {
|
|
68
|
+
window.addEventListener("mousemove", move);
|
|
69
|
+
}
|
|
70
|
+
return finish;
|
|
71
|
+
});
|
|
72
|
+
|
|
73
|
+
export { createPressAndHoldEvent, createPressAndMoveEvent, createPressEvent };
|
|
74
|
+
//# sourceMappingURL=createPressEvent.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createPressEvent.mjs","sources":["../src/createPressEvent.jsx"],"sourcesContent":["import React from 'react'\nimport {callIfFunction, normalizePress} from './utils'\n\n\nconst disableSelect = (e) => {\n e.preventDefault();\n}\n\nexport const createPressEvent = (onStart) => normalizePress((startEvent, info) => {\n const onEnd = onStart(startEvent,info)\n\n const finish = normalizePress((e,info) => {\n callIfFunction(onEnd,e,info)\n window.removeEventListener('selectstart', disableSelect)\n window.removeEventListener('touchend',finish)\n window.removeEventListener('mouseup',finish)\n })\n\n\n window.addEventListener('selectstart', disableSelect);\n if (startEvent.touches) {\n window.addEventListener('touchend', finish)\n } else {\n window.addEventListener(\"mouseup\", finish);\n }\n\n})\n\nexport const createPressAndHoldEvent = (onStart,interval) => createPressEvent((startEvent,info) => {\n\n const [onInterval,onEnd] = [].concat(onStart(startEvent,info))\n\n let i = 0;\n if (interval) {\n const intervalId = setInterval(() => {\n onInterval(i++)\n }, interval)\n\n return normalizePress((e, info) => {\n callIfFunction(onEnd, e, info)\n clearInterval(intervalId)\n })\n } else {\n let running = true\n const run = () => window.requestAnimationFrame(() => {\n if (running) {\n onInterval(i++)\n run()\n }\n })\n run()\n return normalizePress((e,info) => {\n callIfFunction(onEnd, e, info)\n running = false\n })\n }\n})\n\n\nexport const createPressAndMoveEvent = (onStart) => createPressEvent((startEvent, info) => {\n\n const [onMove,onEnd] = [].concat(onStart(startEvent,info))\n\n const finish = normalizePress((e,info) => {\n callIfFunction(onEnd,e,info)\n window.removeEventListener('touchmove',move)\n window.removeEventListener('mousemove',move)\n })\n const move = normalizePress(onMove,finish)\n\n if (startEvent.touches) {\n window.addEventListener('touchmove', move, {passive: false})\n } else {\n window.addEventListener(\"mousemove\", move);\n }\n\n return finish\n})\n\n"],"names":["disableSelect","e","preventDefault","createPressEvent","onStart","normalizePress","startEvent","info","onEnd","finish","callIfFunction","window","removeEventListener","addEventListener","touches","createPressAndHoldEvent","interval","_concat","concat","_concat2","_slicedToArray","onInterval","i","intervalId","setInterval","clearInterval","running","run","requestAnimationFrame","createPressAndMoveEvent","_concat3","_concat4","onMove","move","passive"],"mappings":"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"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
let fixed = false;
|
|
2
|
+
const scrollWidth = function () {
|
|
3
|
+
if (!window.document) return 0;
|
|
4
|
+
const html = document.documentElement;
|
|
5
|
+
const oldOverflow = html.style.overflowY;
|
|
6
|
+
html.style.overflowY = 'scroll';
|
|
7
|
+
const width = window.innerWidth - html.clientWidth;
|
|
8
|
+
html.style.overflowY = oldOverflow;
|
|
9
|
+
return width;
|
|
10
|
+
}();
|
|
11
|
+
const fixMediaQueryFn = function () {
|
|
12
|
+
const fontSize = parseFloat(window.getComputedStyle(document.body).getPropertyValue('font-size'));
|
|
13
|
+
if (scrollWidth > 0) {
|
|
14
|
+
[].slice.call(document.styleSheets).filter(styleSheet => isValidExternal(styleSheet) || isInline(styleSheet)).forEach(stylesheet => {
|
|
15
|
+
try {
|
|
16
|
+
[].slice.call(stylesheet.cssRules || stylesheet.media).filter(rule => rule.constructor === window.CSSMediaRule).forEach(rule => {
|
|
17
|
+
rule.media.mediaText = rule.media.mediaText.replace(/m(in|ax)-width:\s*(\d|\.)+(px|em)/gi, function (strA) {
|
|
18
|
+
if (strA.match('px')) {
|
|
19
|
+
return strA.replace(/\d+px/gi, function (strB) {
|
|
20
|
+
return parseInt(strB, 10) + scrollWidth + 'px';
|
|
21
|
+
});
|
|
22
|
+
} else {
|
|
23
|
+
return strA.replace(/\d.+?em/gi, function (strB) {
|
|
24
|
+
return (parseFloat(strB) * fontSize + scrollWidth) / fontSize + 'em';
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
});
|
|
28
|
+
});
|
|
29
|
+
} catch (e) {}
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
fixed = true;
|
|
33
|
+
function sameOrigin(url) {
|
|
34
|
+
const loc = window.location,
|
|
35
|
+
a = document.createElement('a');
|
|
36
|
+
a.href = url;
|
|
37
|
+
return a.hostname === loc.hostname && a.protocol === loc.protocol;
|
|
38
|
+
}
|
|
39
|
+
function isInline(stylesheet) {
|
|
40
|
+
try {
|
|
41
|
+
return stylesheet.ownerNode.constructor === HTMLStyleElement && stylesheet.ownerNode.getAttribute("data-styled") === null;
|
|
42
|
+
} catch (e) {
|
|
43
|
+
return stylesheet.ownerNode.constructor === HTMLStyleElement;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
function isValidExternal(stylesheet) {
|
|
47
|
+
var _stylesheet$ownerNode;
|
|
48
|
+
return stylesheet.href && (sameOrigin(stylesheet.href) || ((_stylesheet$ownerNode = stylesheet.ownerNode) === null || _stylesheet$ownerNode === void 0 ? void 0 : _stylesheet$ownerNode.crossOrigin) === "anonymous");
|
|
49
|
+
}
|
|
50
|
+
};
|
|
51
|
+
function fixMediaQuery() {
|
|
52
|
+
if (fixed || !document || !document.readyState) return;
|
|
53
|
+
if (process.env.NODE_ENV === 'test') {
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
if (document.readyState !== 'loading') {
|
|
57
|
+
fixMediaQueryFn();
|
|
58
|
+
} else {
|
|
59
|
+
document.addEventListener('DOMContentLoaded', fixMediaQueryFn);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
export { fixMediaQuery, scrollWidth };
|
|
64
|
+
//# sourceMappingURL=fixMediaQuery.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fixMediaQuery.mjs","sources":["../src/fixMediaQuery.js"],"sourcesContent":["let fixed = false\nexport const scrollWidth = (function() {\n if (!window.document) return 0\n const html = document.documentElement\n const oldOverflow = html.style.overflowY\n html.style.overflowY = 'scroll'\n const width = window.innerWidth - html.clientWidth\n html.style.overflowY = oldOverflow\n return width\n})()\n\nconst fixMediaQueryFn = function() {\n\n const fontSize = parseFloat(window.getComputedStyle(document.body).getPropertyValue('font-size'))\n\n if (scrollWidth > 0) {\n\n [].slice.call(document.styleSheets).filter(styleSheet => isValidExternal(styleSheet) || isInline(styleSheet)).forEach(stylesheet => {\n try {\n [].slice.call(stylesheet.cssRules || stylesheet.media).filter(rule => rule.constructor === window.CSSMediaRule).forEach(rule => {\n rule.media.mediaText = rule.media.mediaText.replace(/m(in|ax)-width:\\s*(\\d|\\.)+(px|em)/gi, function(strA) {\n if (strA.match('px')) {\n return strA.replace(/\\d+px/gi, function(strB) {\n return parseInt(strB, 10) + scrollWidth + 'px'\n })\n }\n else {\n return strA.replace(/\\d.+?em/gi, function(strB) {\n return ((parseFloat(strB) * fontSize) + scrollWidth) / fontSize + 'em'\n })\n }\n })\n })\n } catch (e) {}\n })\n }\n\n fixed = true\n\n function sameOrigin(url) {\n const loc = window.location,\n a = document.createElement('a')\n a.href = url\n return (a.hostname === loc.hostname && a.protocol === loc.protocol)\n }\n\n function isInline(stylesheet) {\n try {\n return stylesheet.ownerNode.constructor === HTMLStyleElement && stylesheet.ownerNode.getAttribute(\"data-styled\") === null\n } catch (e) {\n return stylesheet.ownerNode.constructor === HTMLStyleElement\n }\n }\n\n function isValidExternal(stylesheet) {\n return stylesheet.href && (sameOrigin(stylesheet.href) || stylesheet.ownerNode?.crossOrigin === \"anonymous\")\n }\n\n}\n\n\nexport function fixMediaQuery() {\n if (fixed || !document || !document.readyState)\n return\n if (process.env.NODE_ENV === 'test') { return }\n if (document.readyState !== 'loading') {\n fixMediaQueryFn()\n } else {\n document.addEventListener('DOMContentLoaded', fixMediaQueryFn)\n }\n}"],"names":["fixed","scrollWidth","window","document","html","documentElement","oldOverflow","style","overflowY","width","innerWidth","clientWidth","fixMediaQueryFn","fontSize","parseFloat","getComputedStyle","body","getPropertyValue","slice","call","styleSheets","filter","styleSheet","isValidExternal","isInline","forEach","stylesheet","cssRules","media","rule","constructor","CSSMediaRule","mediaText","replace","strA","match","strB","parseInt","e","sameOrigin","url","loc","location","a","createElement","href","hostname","protocol","ownerNode","HTMLStyleElement","getAttribute","_stylesheet$ownerNode","crossOrigin","fixMediaQuery","readyState","process","env","NODE_ENV","addEventListener"],"mappings":"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"}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
|
|
2
|
+
|
|
3
|
+
const escapedValidParts = /(^|[^\\])(dd?|DD?|mm?|LL?|hh?|MM?|ss|SSS|yy(?:yy)?)/g;
|
|
4
|
+
const validParts = /(dd?|DD?|mm?|LL?|hh?|MM?|yy(?:yy)|yy|ss|SSS)$/;
|
|
5
|
+
const addZero = v => (v < 10 ? '0' : '') + v;
|
|
6
|
+
const getSet = function (index, ttype) {
|
|
7
|
+
let plus = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;
|
|
8
|
+
let format = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : v => v;
|
|
9
|
+
let parse = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : (v, defaultDate) => v === '0' ? '' : v;
|
|
10
|
+
return [(date, _, noUTC) => format((typeof date === 'number' ? new Date(date) : date)['get' + (noUTC ? '' : 'UTC') + ttype]() + plus), (unformatedStr, date, _, failOnFormat, noUTC) => {
|
|
11
|
+
const str = parse(unformatedStr, date, failOnFormat);
|
|
12
|
+
if (str === '' || isNaN(date.getTime())) return date;
|
|
13
|
+
if (str === '\0') return date.setTime(NaN);
|
|
14
|
+
const utcSTR = noUTC ? '' : 'UTC';
|
|
15
|
+
const v = parseInt(str, 10) - plus;
|
|
16
|
+
const prevDay = date['get' + utcSTR + 'Date']();
|
|
17
|
+
if (ttype !== 'Date') {
|
|
18
|
+
date['set' + utcSTR + 'Date'](1);
|
|
19
|
+
}
|
|
20
|
+
date['set' + utcSTR + ttype](v);
|
|
21
|
+
if (date['get' + utcSTR + ttype]() !== v) {
|
|
22
|
+
date['set' + utcSTR + ttype](NaN);
|
|
23
|
+
return date;
|
|
24
|
+
}
|
|
25
|
+
if (ttype !== 'Date') {
|
|
26
|
+
date['set' + utcSTR + 'Date'](prevDay);
|
|
27
|
+
if (date['get' + utcSTR + ttype]() !== v) {
|
|
28
|
+
date['set' + utcSTR + 'Date'](0);
|
|
29
|
+
return date;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
return date;
|
|
33
|
+
}, index];
|
|
34
|
+
};
|
|
35
|
+
const getText = function (type, total) {
|
|
36
|
+
let slice = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 99;
|
|
37
|
+
return [(date, messages, noUTC) => messages(type.toLowerCase(), date['get' + (noUTC ? '' : 'UTC') + type]()).slice(0, slice)];
|
|
38
|
+
};
|
|
39
|
+
const yearParse = (y, date, failOnFormat) => {
|
|
40
|
+
const formattedY = y.length === 2 && y !== '20' ? '20' + y : y.length === 4 ? y : '';
|
|
41
|
+
if (formattedY === '') {
|
|
42
|
+
if (failOnFormat) {
|
|
43
|
+
const found = date.getUTCFullYear().toString().indexOf(y);
|
|
44
|
+
return found === 0 || found === 2 ? date.getUTCFullYear() : '\0';
|
|
45
|
+
} else {
|
|
46
|
+
return date.getUTCFullYear();
|
|
47
|
+
}
|
|
48
|
+
} else {
|
|
49
|
+
return formattedY;
|
|
50
|
+
}
|
|
51
|
+
};
|
|
52
|
+
const val = {
|
|
53
|
+
yyyy: getSet(0, 'FullYear', 0, v => v, yearParse),
|
|
54
|
+
yy: getSet(0, 'FullYear', 0, v => (v + "").slice(2, 4), yearParse),
|
|
55
|
+
M: getSet(1, 'Month', 1),
|
|
56
|
+
MM: getSet(1, 'Month', 1, addZero),
|
|
57
|
+
L: getText('Month', 12, 3),
|
|
58
|
+
LL: getText('Month', 12),
|
|
59
|
+
d: getSet(2, 'Date'),
|
|
60
|
+
dd: getSet(2, 'Date', 0, addZero),
|
|
61
|
+
D: getText('Day', 7, 3),
|
|
62
|
+
DD: getText('Day', 7),
|
|
63
|
+
m: getSet(4, 'Minutes'),
|
|
64
|
+
mm: getSet(4, 'Minutes', 0, addZero),
|
|
65
|
+
h: getSet(5, 'Hours'),
|
|
66
|
+
hh: getSet(5, 'Hours', 0, addZero),
|
|
67
|
+
ss: getSet(6, 'Seconds', 0, addZero),
|
|
68
|
+
SSS: getSet(7, 'Milliseconds', 0, addZero)
|
|
69
|
+
};
|
|
70
|
+
function formatDateToPattern(format) {
|
|
71
|
+
return format.replace(escapedValidParts, (_, _1, _2) => _1 + (_2 === 'yy' ? '##' : _2 === 'yyyy' ? '####' : '0#'));
|
|
72
|
+
}
|
|
73
|
+
function formatDate(date, format, messages, noUTC) {
|
|
74
|
+
if (!date) return '';
|
|
75
|
+
const separators = format.replace(escapedValidParts, '\0').split('\0');
|
|
76
|
+
const parts = format.match(escapedValidParts);
|
|
77
|
+
const formattedDate = parts.reduce((acc, part) => acc.concat(separators.length ? [separators.shift()] : [], part.replace(validParts, ''), val[part.match(validParts)[0]][0](date, messages, noUTC)), []);
|
|
78
|
+
return formattedDate.join('').replace(/\\([dDmLhMy])/g, '$1');
|
|
79
|
+
}
|
|
80
|
+
const now = () => new Date();
|
|
81
|
+
function parseDate(str, possibleDate, format, messages, failOnFormat, noUTC) {
|
|
82
|
+
if (!str) return possibleDate;
|
|
83
|
+
const separators = format.replace(escapedValidParts, '\0').split('\0');
|
|
84
|
+
const parts = format.match(escapedValidParts);
|
|
85
|
+
const mutations = [];
|
|
86
|
+
parts.reduce((rest, part, i) => {
|
|
87
|
+
const separator = (separators.length ? separators.shift() : '') + part.replace(validParts, '');
|
|
88
|
+
const current = rest.slice(separator.length);
|
|
89
|
+
if (current && separator === rest.slice(0, separator.length)) {
|
|
90
|
+
const setType = part.match(validParts)[0];
|
|
91
|
+
const nextSeparator = separators[0];
|
|
92
|
+
const nextStrIndex = current.indexOf(nextSeparator + (parts[i + 1] || '').replace(validParts, ''));
|
|
93
|
+
mutations[val[setType][2]] = [val[setType][1], nextStrIndex ? current.slice(0, nextStrIndex) : current];
|
|
94
|
+
return current.slice(nextStrIndex);
|
|
95
|
+
} else {
|
|
96
|
+
return '';
|
|
97
|
+
}
|
|
98
|
+
}, str);
|
|
99
|
+
const date = possibleDate && possibleDate.getTime() !== -1 ? new Date(possibleDate) : now();
|
|
100
|
+
mutations.forEach(_ref => {
|
|
101
|
+
let _ref2 = _slicedToArray(_ref, 2),
|
|
102
|
+
setter = _ref2[0],
|
|
103
|
+
text = _ref2[1];
|
|
104
|
+
return setter(text, date, messages, failOnFormat, noUTC);
|
|
105
|
+
});
|
|
106
|
+
return date;
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
export { addZero, formatDate, formatDateToPattern, parseDate };
|
|
110
|
+
//# sourceMappingURL=formatDate.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"formatDate.mjs","sources":["../src/formatDate.js"],"sourcesContent":["\nconst escapedValidParts = /(^|[^\\\\])(dd?|DD?|mm?|LL?|hh?|MM?|ss|SSS|yy(?:yy)?)/g\nconst validParts = /(dd?|DD?|mm?|LL?|hh?|MM?|yy(?:yy)|yy|ss|SSS)$/\nexport const addZero = (v) => (v < 10 ? '0' : '') + v\n\nconst getSet = (index, ttype, plus = 0, format = (v) => v, parse = (v, defaultDate) => (v === '0' ? '' : v)) => ([\n (date,_,noUTC) => format((typeof date === 'number' ? new Date(date) : date)['get'+(noUTC?'':'UTC') + ttype]() + plus),\n (unformatedStr, date, _, failOnFormat, noUTC) => {\n const str = parse(unformatedStr, date, failOnFormat)\n if (str === '' || isNaN(date.getTime()))\n return date\n if (str=== '\\0')\n return date.setTime(NaN)\n const utcSTR = noUTC ? '' : 'UTC'\n const v = parseInt(str, 10) - plus\n const prevDay = date['get'+utcSTR+'Date']()\n if (ttype !== 'Date') {\n date['set'+utcSTR+'Date'](1)\n }\n date['set'+ utcSTR + ttype](v)\n if (date['get' + utcSTR + ttype]() !== v) {\n date['set' + utcSTR + ttype](NaN)\n return date\n }\n if (ttype !== 'Date') {\n date['set'+utcSTR+'Date'](prevDay)\n if (date['get' + utcSTR + ttype]() !== v) {\n date['set'+utcSTR+'Date'](0)\n return date\n }\n }\n return date\n },\n index\n])\n\nconst getText = (type, total, slice = 99) => [\n (date, messages,noUTC) => messages(type.toLowerCase(),date['get'+(noUTC? '': 'UTC') + type]()).slice(0, slice)\n]\n\nconst yearParse = (y, date, failOnFormat) => {\n const formattedY = y.length === 2 && y !== '20' ? '20' + y : y.length === 4 ? y : ''\n if (formattedY === '') {\n if (failOnFormat) {\n const found = date.getUTCFullYear().toString().indexOf(y)\n return found === 0 || found === 2 ? date.getUTCFullYear() : '\\0'\n } else {\n return date.getUTCFullYear()\n }\n } else {\n return formattedY\n }\n}\n\nconst val = {\n yyyy: getSet(0,'FullYear', 0, (v) => v, yearParse),\n yy: getSet(0,'FullYear', 0, (v) => (v+\"\").slice(2,4), yearParse),\n M: getSet(1,'Month', 1),\n MM: getSet(1,'Month', 1, addZero),\n L: getText('Month',12,3),\n LL: getText('Month',12),\n d: getSet(2,'Date'),\n dd: getSet(2,'Date', 0, addZero),\n D: getText('Day', 7, 3),\n DD: getText('Day', 7),\n m: getSet(4,'Minutes'),\n mm: getSet(4,'Minutes', 0, addZero),\n h: getSet(5,'Hours'),\n hh: getSet(5,'Hours', 0, addZero),\n ss: getSet(6,'Seconds', 0, addZero),\n SSS: getSet(7,'Milliseconds', 0, addZero),\n\n}\n\nexport function formatDateToPattern(format) {\n return format.replace(escapedValidParts, (_, _1, _2) => _1 + (_2 === 'yy' ? '##' : _2 === 'yyyy' ? '####' : '0#'))\n}\n\nexport function formatDate(date, format, messages,noUTC) {\n if (!date)\n return ''\n const separators = format.replace(escapedValidParts, '\\0').split('\\0')\n const parts = format.match(escapedValidParts)\n const formattedDate = parts.reduce((acc, part) =>\n acc.concat(\n separators.length ? [separators.shift()] : [],\n part.replace(validParts, ''),\n val[part.match(validParts)[0]][0](date, messages,noUTC)\n ),\n []\n )\n return formattedDate.join('').replace(/\\\\([dDmLhMy])/g, '$1')\n}\n\nconst now = () => new Date()\n\nexport function parseDate(str, possibleDate, format, messages, failOnFormat, noUTC) {\n if (!str)\n return possibleDate\n const separators = format.replace(escapedValidParts, '\\0').split('\\0')\n const parts = format.match(escapedValidParts)\n const mutations = []\n parts.reduce((rest, part, i) => {\n const separator = (separators.length ? separators.shift() : '') + part.replace(validParts, '')\n const current = rest.slice(separator.length)\n if (current && separator === rest.slice(0, separator.length)) {\n const setType = part.match(validParts)[0]\n const nextSeparator = separators[0]\n const nextStrIndex = current.indexOf(nextSeparator + (parts[i + 1] || '').replace(validParts, ''))\n mutations[val[setType][2]] = [val[setType][1],nextStrIndex ? current.slice(0,nextStrIndex) : current]\n return current.slice(nextStrIndex)\n } else {\n return ''\n }\n },\n str\n )\n const date = possibleDate && possibleDate.getTime()!==-1 ? new Date(possibleDate) : now()\n mutations.forEach(([setter,text])=> setter(text,date,messages,failOnFormat,noUTC))\n return date\n}"],"names":["escapedValidParts","validParts","addZero","v","getSet","index","ttype","plus","arguments","length","undefined","format","parse","defaultDate","date","_","noUTC","Date","unformatedStr","failOnFormat","str","isNaN","getTime","setTime","NaN","utcSTR","parseInt","prevDay","getText","type","total","slice","messages","toLowerCase","yearParse","y","formattedY","found","getUTCFullYear","toString","indexOf","val","yyyy","yy","M","MM","L","LL","d","dd","D","DD","m","mm","h","hh","ss","SSS","formatDateToPattern","replace","_1","_2","formatDate","separators","split","parts","match","formattedDate","reduce","acc","part","concat","shift","join","now","parseDate","possibleDate","mutations","rest","i","separator","current","setType","nextSeparator","nextStrIndex","forEach","_ref","_ref2","_slicedToArray","setter","text"],"mappings":"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"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import _isString from 'lodash/fp/isString';
|
|
2
|
+
import _flow from 'lodash/fp/flow';
|
|
3
|
+
import _isNumber from 'lodash/fp/isNumber';
|
|
4
|
+
import _padCharsEnd from 'lodash/fp/padCharsEnd';
|
|
5
|
+
import 'react';
|
|
6
|
+
|
|
7
|
+
const formatJoin = function (arr) {
|
|
8
|
+
let separator = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ', ';
|
|
9
|
+
let lastSeparator = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : ' e ';
|
|
10
|
+
return [arr.slice(0, -1).join(separator), arr.slice(-1)].join(lastSeparator);
|
|
11
|
+
};
|
|
12
|
+
const formatJoinArr = (arr, separator, lastSeparator) => arr.flatMap((v, i) => i < arr.length - 2 ? [v, separator] : i < arr.length - 1 ? [v, lastSeparator] : [v]);
|
|
13
|
+
const removeAccents = str => (str || "").normalize('NFD').replace(/\p{Diacritic}/gu, "");
|
|
14
|
+
const asciify = str => removeAccents(str || "").replace(/[^\x00-\x7F]/g, "");
|
|
15
|
+
const normalizeText = str => removeAccents(str).toLowerCase();
|
|
16
|
+
const normalizeTextUrl = str => removeAccents(str).replace(/[\s.\u0022&/]/g, '-').replace(/-{2,}/g, '-').toLowerCase();
|
|
17
|
+
const willFormatDecimal = function () {
|
|
18
|
+
let digits = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 2;
|
|
19
|
+
let _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
|
|
20
|
+
max = _ref.max,
|
|
21
|
+
min = _ref.min,
|
|
22
|
+
padTo = _ref.padTo,
|
|
23
|
+
zeroless = _ref.zeroless,
|
|
24
|
+
clean = _ref.clean;
|
|
25
|
+
const splitRegex = new RegExp("(\\d+)(\\d{".concat(digits, "})"));
|
|
26
|
+
const singleRegex = new RegExp("/^([^,]*,\\d{0,".concat(digits, ").*/"));
|
|
27
|
+
const pad = str => padTo ? str.indexOf(",") >= 0 ? _padCharsEnd("0", str.indexOf(",") + padTo + 1, str) : _padCharsEnd("0", str.length + 1 + padTo, str + ",") : str;
|
|
28
|
+
const constrain = val => {
|
|
29
|
+
if (_isNumber(max) && parseFloat(val.replace(",", ".")) > max) return max.toString();
|
|
30
|
+
if (_isNumber(min) && parseFloat(val.replace(",", ".")) < min) return min.toString();
|
|
31
|
+
return val;
|
|
32
|
+
};
|
|
33
|
+
const cleaned = val => clean ? val.replace(/,$/, '').replace(/^0*,/, '0,') || "0" : val;
|
|
34
|
+
return v => {
|
|
35
|
+
const skipZero = finalV => v !== '0' && zeroless && finalV === '0' ? '' : finalV.replace(/^0+([^,])/, '$1');
|
|
36
|
+
const formatted = _flow(constrain, pad, skipZero, cleaned);
|
|
37
|
+
if (_isNumber(v)) {
|
|
38
|
+
return formatted(v.toString().replace(".", ","));
|
|
39
|
+
}
|
|
40
|
+
const fixComma = v => v.replace(/,/g, '').replace(splitRegex, "$1,$2");
|
|
41
|
+
const format = () => {
|
|
42
|
+
const allowedChars = (v || "").replace(/[^\d,]/g, "");
|
|
43
|
+
const commaIndex = allowedChars.indexOf(',');
|
|
44
|
+
if (commaIndex >= 0 && commaIndex < allowedChars.length - 1 - digits) {
|
|
45
|
+
const alteredComma = fixComma(allowedChars);
|
|
46
|
+
if (_isNumber(max) && parseFloat(alteredComma.replace(",", ".")) > max) {
|
|
47
|
+
return fixComma(allowedChars.slice(0, commaIndex + 1 + digits));
|
|
48
|
+
}
|
|
49
|
+
return alteredComma;
|
|
50
|
+
}
|
|
51
|
+
const simpleNumber = allowedChars.replace(singleRegex, "$1");
|
|
52
|
+
if (_isNumber(max) && parseInt(simpleNumber) > max) {
|
|
53
|
+
return simpleNumber.slice(0, -1);
|
|
54
|
+
}
|
|
55
|
+
return simpleNumber;
|
|
56
|
+
};
|
|
57
|
+
const result = format();
|
|
58
|
+
return formatted(result);
|
|
59
|
+
};
|
|
60
|
+
};
|
|
61
|
+
const parseDecimalToNumber = v => _isString(v) ? Number(v.replace(/\./g, '').replace(',', ".")) : v || 0;
|
|
62
|
+
|
|
63
|
+
export { asciify, formatJoin, formatJoinArr, normalizeText, normalizeTextUrl, parseDecimalToNumber, removeAccents, willFormatDecimal };
|
|
64
|
+
//# sourceMappingURL=formatUtils.mjs.map
|