timered-counter
Version:
Make the value change more vivid and natural
81 lines • 3.04 kB
JavaScript
import { isArray, isFunction, merge } from 'remeda';
export function extractGroupOption(option, getterOptions) {
return (isFunction(option)
? option(getterOptions)
: option);
}
export function extractPartOption(option, getterOptions) {
const groupOption = extractGroupOption(option, getterOptions);
const { data } = getterOptions;
const result = [];
for (let i = 0; i < data.length; i += 1) {
const value = isArray(groupOption) ? groupOption[i] : groupOption;
result.push(value);
}
return result;
}
export function extractPartDigitOption(option, getterOptions) {
const extractedOption = extractPartOption(option, getterOptions);
const { data } = getterOptions;
const result = [];
for (let i = 0; i < data.length; i += 1) {
const { digits } = data[i];
const partOption = extractedOption[i];
result.push([]);
for (let j = 0; j < digits.length; j += 1) {
const value = isArray(partOption) ? partOption[j] : partOption;
result[i].push(value);
}
}
return result;
}
export function extractPartDigitCellOption(option, getterOptions) {
const extractedOption = extractPartDigitOption(option, getterOptions);
const { data } = getterOptions;
const result = [];
for (let i = 0; i < data.length; i += 1) {
const { digits } = data[i];
const partOption = extractedOption[i];
result.push([]);
for (let j = 0; j < digits.length; j += 1) {
const { data: digitData } = digits[j];
const partDigitOption = partOption[j];
result[i].push([]);
for (let k = 0; k < digitData.length; k += 1) {
const value = isArray(partDigitOption)
? partDigitOption[k]
: partDigitOption;
result[i][j].push(value);
}
}
}
return result;
}
export function mergeGroupOption(data, source) {
return merge(data ?? {}, source ?? {});
}
export function mergePartOption(data = [], source = []) {
const keys = Array.from(new Set(Object.keys(data).concat(Object.keys(source))));
for (const key of keys) {
const index = Number.parseInt(key, 10);
data[index] = mergeGroupOption(data[index], source[index]);
}
return data;
}
export function mergePartDigitOption(data = [], source = []) {
const keys = Array.from(new Set(Object.keys(data).concat(Object.keys(source))));
for (const key of keys) {
const index = Number.parseInt(key, 10);
data[index] = mergePartOption(data[index], source[index]);
}
return data;
}
export function mergePartDigitCellOption(data = [], source = []) {
const keys = Array.from(new Set(Object.keys(data).concat(Object.keys(source))));
for (const key of keys) {
const index = Number.parseInt(key, 10);
data[index] = mergePartDigitOption(data[index], source[index]);
}
return data;
}
//# sourceMappingURL=extract-group-option.js.map