UNPKG

@bytedance/mona-client-web

Version:

web for mona

284 lines 12.3 kB
var __assign = (this && this.__assign) || function () { __assign = Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; return __assign.apply(this, arguments); }; import { genEvent } from '../utils'; import { useMemo, useRef, useState } from 'react'; export var useProps = function (props) { var mode = props.mode; var propsRef = useRef(props); propsRef.current = props; var finalData = useMemo(function () { var _a; var finalData = { data: [], value: props.value, }; switch (mode) { case 'selector': finalData.data = genData([props.range], props.rangeKey); finalData.value = [props.value]; break; case 'multiSelector': finalData.value = Object.assign(Array.from({ length: ((_a = props.range) === null || _a === void 0 ? void 0 : _a.length) || 0 }, function () { return 0; }), props.value); finalData.data = genData(props.range || [], props.rangeKey); break; case 'date': finalData = genDateData(props.value, props.start, props.end, props.fields); break; case 'time': finalData = genTimeData(props.value, props.start, props.end); break; case 'region': break; default: var exhaustiveCheck = props; //@ts-ignore finalData.value = exhaustiveCheck.value; break; } return { data: finalData === null || finalData === void 0 ? void 0 : finalData.data, value: finalData.value, }; //@ts-ignore }, [mode, props.value, props.start, props.end, props.fields, props.range, props.rangeKey]); var handler = useMemo(function () { var handleConfirm, handleChange, handleCancel; handleConfirm = propsRef.current.onChange; handleCancel = propsRef.current.onCancel; switch (mode) { case 'selector': handleConfirm = function (e) { var _a, _b, _c; e.detail.value = (_a = e.detail.value) === null || _a === void 0 ? void 0 : _a[0]; (_c = (_b = propsRef.current).onChange) === null || _c === void 0 ? void 0 : _c.call(_b, e); }; break; case 'multiSelector': handleChange = function (value, idx) { var _a, _b; //@ts-ignore (_b = (_a = propsRef.current).onColumnChange) === null || _b === void 0 ? void 0 : _b.call(_a, genEvent({ type: 'change', detail: { column: +idx, value: value[idx], }, })); }; break; case 'date': handleConfirm = function (e) { var _a, _b, _c, _d; var value = e.detail.value; var y = finalData.data[value[0]]; var m = (_a = y === null || y === void 0 ? void 0 : y.children) === null || _a === void 0 ? void 0 : _a[value[1]]; var d = (_b = m === null || m === void 0 ? void 0 : m.children) === null || _b === void 0 ? void 0 : _b[value[2]]; e.detail.value = [y.label, m === null || m === void 0 ? void 0 : m.label, d === null || d === void 0 ? void 0 : d.label].filter(function (item) { return item !== undefined; }).join(':'); (_d = (_c = propsRef.current) === null || _c === void 0 ? void 0 : _c.onChange) === null || _d === void 0 ? void 0 : _d.call(_c, e); }; break; case 'time': handleConfirm = function (e) { var _a, _b, _c; var value = e.detail.value; var h = finalData.data[value[0]]; var m = (_a = h.children) === null || _a === void 0 ? void 0 : _a[value[1]]; e.detail.value = [h.label, m === null || m === void 0 ? void 0 : m.label].join(':'); (_c = (_b = propsRef.current) === null || _b === void 0 ? void 0 : _b.onChange) === null || _c === void 0 ? void 0 : _c.call(_b, e); }; break; case 'region': break; default: break; } return { onColumnChange: handleChange, onConfirm: handleConfirm, onCancel: handleCancel, }; }, [finalData.data]); return __assign(__assign({}, handler), finalData); }; export function useRefState(initialValue) { var _a = useState(initialValue), state = _a[0], setState = _a[1]; var stateRef = useRef(state); stateRef.current = state; return [state, stateRef, setState]; } var genArr = function (start, end) { return Array.from({ length: +end + 1 - +start }, function (_, idx) { return idx + Number(start); }); }; var genTimeData = function (value, start, end) { var _a, _b; if (start === void 0) { start = '00:00'; } if (end === void 0) { end = '23:59'; } var _c = start.split(':'), sH = _c[0], sM = _c[1]; var _d = end.split(':'), eH = _d[0], eM = _d[1]; var AllMmArr = genArr('00', '59').map(function (m) { return m < 10 ? "0".concat(m) : "".concat(m); }); var mmArr = genArr(sM, eM).map(function (m) { return m < 10 ? "0".concat(m) : "".concat(m); }); var hhArr = genArr(sH, eH).map(function (m) { return m < 10 ? "0".concat(m) : "".concat(m); }); var timeArr = genData([hhArr, AllMmArr]); if (Number(eH) - Number(sH) >= 1) { timeArr = genData([hhArr, AllMmArr]); timeArr[0].children = genData([ genArr(sM, 59 + '').map(function (m) { return +m < 10 ? "0".concat(m) : "".concat(m); }), ]); timeArr[timeArr.length - 1].children = genData([ genArr('0', eM).map(function (m) { return +m < 10 ? "0".concat(m) : "".concat(m); }), ]); } else { timeArr = genData([hhArr, mmArr]); } var valueArr = (value === null || value === void 0 ? void 0 : value.split(':')) || [sH, sM]; var hourIndex = hhArr.findIndex(function (item) { return +valueArr[0] === +item; }); var mIndx = (_b = (_a = timeArr .find(function (item) { return item.value === hourIndex; }) .children) === null || _a === void 0 ? void 0 : _a.find(function (item) { return +valueArr[1] === +item.label; })) === null || _b === void 0 ? void 0 : _b.value; return { value: [hourIndex, mIndx], data: timeArr, }; }; var genDateData = function (value, start, end, fields) { var _a, _b, _c, _d; if (start === void 0) { start = '2000-10-01'; } if (end === void 0) { end = '2021-10-10'; } var _e = start.split('-'), startYYYY = _e[0], startMM = _e[1], startDD = _e[2]; var _f = end.split('-'), endYYYY = _f[0], endMM = _f[1], endDD = _f[2]; var YYYYArr = genArr(startYYYY, endYYYY); var MMArr = genArr(startMM, endMM); var isYear = fields === 'year' ? [] : undefined; var isMounth = fields === 'month' ? [] : undefined; var finalValue = genYearDataArr(YYYYArr, !isYear, !isMounth); var monthValue, dayValue, yearValue; var valueArr = (_a = value === null || value === void 0 ? void 0 : value.split('-')) !== null && _a !== void 0 ? _a : []; if (!isYear) { if (+endYYYY - +startYYYY < 1) { finalValue[0].children = genMounthDataArr(MMArr, !isMounth); if (!isMounth) { if (+endMM - +startMM < 1) { finalValue[0].children[0].children = genData([dayArr[+startMM - 1].slice(+startDD - 1, +endDD)]); } else { finalValue[0].children[0].children = genData([dayArr[+startMM - 1].slice(+startDD - 1)]); finalValue[0].children[finalValue[0].children.length - 1].children = genData([ dayArr[+endMM - 1].slice(0, +endDD), ]); } } } else { finalValue[0].children = genMounthDataArr(genArr(startMM, 12 + ''), !isMounth ? [] : undefined); finalValue[finalValue.length - 1].children = genMounthDataArr(genArr(1 + '', endMM), !isMounth); if (!isMounth) { finalValue[0].children[0].children = genData([dayArr[+startMM - 1].slice(+startDD - 1)]); finalValue[finalValue.length - 1].children[finalValue[finalValue.length - 1].children.length - 1].children = genData([dayArr[+endMM - 1].slice(0, +endDD)]); } } } if (isYear) { if (valueArr[0] !== undefined) { yearValue = finalValue.find(function (item) { return +item.label === +valueArr[0]; }); } } else if (isMounth) { if (valueArr[0] !== undefined) { yearValue = finalValue.find(function (item) { return +item.label === +valueArr[0]; }); } if (yearValue && valueArr[1] !== undefined) { monthValue = (_b = yearValue.children) === null || _b === void 0 ? void 0 : _b.find(function (item) { return +item.label === +valueArr[1]; }); } } else { if (valueArr[0] !== undefined) { yearValue = finalValue.find(function (item) { return +item.label === +valueArr[0]; }); } if (yearValue && valueArr[1] !== undefined) { monthValue = (_c = yearValue.children) === null || _c === void 0 ? void 0 : _c.find(function (item) { return +item.label === +valueArr[1]; }); } if (monthValue && valueArr[2] !== undefined) { dayValue = (_d = monthValue.children) === null || _d === void 0 ? void 0 : _d.find(function (item) { return +item.label === +valueArr[2]; }); } } return { data: finalValue, value: [yearValue === null || yearValue === void 0 ? void 0 : yearValue.value, monthValue === null || monthValue === void 0 ? void 0 : monthValue.value, dayValue === null || dayValue === void 0 ? void 0 : dayValue.value].filter(function (item) { return item !== undefined; }), }; }; // TODO: 闰年 var dayArr = [31, 28, 31, 30, 31, 30, 31, 30, 31, 30, 31, 30].map(function (item) { return genArr(1 + '', item + ''); }); var monthArr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]; var genMounthDataArr = function (MMarr, children) { return MMarr.map(function (item, idx) { return { value: idx, label: item, children: children ? genData([dayArr[+item - 1]]) : undefined, }; }); }; var genYearDataArr = function (YYYYArr, yearChildren, monthChildren) { var MMarr = monthArr.map(function (item, idx) { return { value: idx, label: item, children: monthChildren ? genData([dayArr[+item - 1]]) : undefined, }; }); return YYYYArr.map(function (item, idx) { return { value: idx, label: item, children: yearChildren ? MMarr : undefined, }; }); }; var genData = function (data, rangeKey) { var children; data .slice() .reverse() .forEach(function (arr) { children = arr.map(function (value, idx) { if (rangeKey && value !== null && typeof value === 'object') { return { value: idx, label: value[rangeKey], children: children, }; } return { value: idx, label: value, children: children, }; }); }); //@ts-ignore return children; }; //# sourceMappingURL=hooks.js.map