@light-sheet/react
Version:
FortuneSheet is a drop-in javascript spreadsheet library that provides rich features like Excel and Google Sheets
210 lines (209 loc) • 10.6 kB
JavaScript
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
import { applyLocation, getFlowdata, getOptionValue, getSelectRange, locale } from "@light-sheet/core";
import produce from "immer";
import _ from "lodash";
import React, { useContext, useState, useCallback } from "react";
import WorkbookContext from "../../context";
import { useDialog } from "../../hooks/useDialog";
import "./index.css";
export var LocationCondition = function LocationCondition() {
var _useContext = useContext(WorkbookContext),
context = _useContext.context,
setContext = _useContext.setContext;
var _useDialog = useDialog(),
showDialog = _useDialog.showDialog,
hideDialog = _useDialog.hideDialog;
var _locale = locale(context),
findAndReplace = _locale.findAndReplace,
button = _locale.button;
var _useState = useState("locationConstant"),
_useState2 = _slicedToArray(_useState, 2),
conditionType = _useState2[0],
setConditionType = _useState2[1];
var _useState3 = useState({
locationDate: true,
locationDigital: true,
locationString: true,
locationBool: true,
locationError: true
}),
_useState4 = _slicedToArray(_useState3, 2),
constants = _useState4[0],
setConstants = _useState4[1];
var _useState5 = useState({
locationDate: true,
locationDigital: true,
locationString: true,
locationBool: true,
locationError: true
}),
_useState6 = _slicedToArray(_useState5, 2),
formulas = _useState6[0],
setFormulas = _useState6[1];
// 确定按钮
var onConfirm = useCallback(function () {
if (conditionType === "locationConstant") {
var value = getOptionValue(constants);
var selectRange = getSelectRange(context);
setContext(function (ctx) {
var rangeArr = applyLocation(selectRange, conditionType, value, ctx);
if (rangeArr.length === 0) showDialog(findAndReplace.locationTipNotFindCell, "ok");
});
} else if (conditionType === "locationFormula") {
var _value = getOptionValue(formulas);
var _selectRange = getSelectRange(context);
setContext(function (ctx) {
var rangeArr = applyLocation(_selectRange, conditionType, _value, ctx);
if (rangeArr.length === 0) showDialog(findAndReplace.locationTipNotFindCell, "ok");
});
} else if (conditionType === "locationRowSpan") {
var _context$luckysheet_s, _context$luckysheet_s2;
if (((_context$luckysheet_s = context.luckysheet_select_save) === null || _context$luckysheet_s === void 0 ? void 0 : _context$luckysheet_s.length) === 0 || ((_context$luckysheet_s2 = context.luckysheet_select_save) === null || _context$luckysheet_s2 === void 0 ? void 0 : _context$luckysheet_s2.length) === 1 && context.luckysheet_select_save[0].row[0] === context.luckysheet_select_save[0].row[1]) {
showDialog(findAndReplace.locationTiplessTwoRow, "ok");
return;
}
var _selectRange2 = _.assignIn([], context.luckysheet_select_save);
setContext(function (ctx) {
var rangeArr = applyLocation(_selectRange2, conditionType, undefined, ctx);
if (rangeArr.length === 0) showDialog(findAndReplace.locationTipNotFindCell, "ok");
});
} else if (conditionType === "locationColumnSpan") {
var _context$luckysheet_s3, _context$luckysheet_s4;
if (((_context$luckysheet_s3 = context.luckysheet_select_save) === null || _context$luckysheet_s3 === void 0 ? void 0 : _context$luckysheet_s3.length) === 0 || ((_context$luckysheet_s4 = context.luckysheet_select_save) === null || _context$luckysheet_s4 === void 0 ? void 0 : _context$luckysheet_s4.length) === 1 && context.luckysheet_select_save[0].column[0] === context.luckysheet_select_save[0].column[1]) {
showDialog(findAndReplace.locationTiplessTwoColumn, "ok");
return;
}
var _selectRange3 = _.assignIn([], context.luckysheet_select_save);
setContext(function (ctx) {
var rangeArr = applyLocation(_selectRange3, conditionType, undefined, ctx);
if (rangeArr.length === 0) showDialog(findAndReplace.locationTipNotFindCell, "ok");
});
} else {
var _context$luckysheet_s5, _context$luckysheet_s6;
// 空值处理
var _selectRange4;
if (((_context$luckysheet_s5 = context.luckysheet_select_save) === null || _context$luckysheet_s5 === void 0 ? void 0 : _context$luckysheet_s5.length) === 0 || ((_context$luckysheet_s6 = context.luckysheet_select_save) === null || _context$luckysheet_s6 === void 0 ? void 0 : _context$luckysheet_s6.length) === 1 && context.luckysheet_select_save[0].row[0] === context.luckysheet_select_save[0].row[1] && context.luckysheet_select_save[0].column[0] === context.luckysheet_select_save[0].column[1]) {
var flowdata = getFlowdata(context, context.currentSheetId);
_selectRange4 = [{
row: [0, flowdata.length - 1],
column: [0, flowdata[0].length - 1]
}];
} else {
_selectRange4 = _.assignIn([], context.luckysheet_select_save);
}
setContext(function (ctx) {
var rangeArr = applyLocation(_selectRange4, conditionType, undefined, ctx);
if (rangeArr.length === 0) showDialog(findAndReplace.locationTipNotFindCell, "ok");
});
}
}, [conditionType, constants, context, findAndReplace.locationTipNotFindCell, findAndReplace.locationTiplessTwoColumn, findAndReplace.locationTiplessTwoRow, formulas, setContext, showDialog]);
// 选中事件处理
var isSelect = useCallback(function (currentType) {
return conditionType === currentType;
}, [conditionType]);
return /*#__PURE__*/React.createElement("div", {
id: "fortune-location-condition"
}, /*#__PURE__*/React.createElement("div", {
className: "title"
}, findAndReplace.location), /*#__PURE__*/React.createElement("div", {
className: "listbox"
}, /*#__PURE__*/React.createElement("div", {
className: "listItem"
}, /*#__PURE__*/React.createElement("input", {
type: "radio",
name: "locationType",
id: "locationConstant",
checked: isSelect("locationConstant"),
onChange: function onChange() {
setConditionType("locationConstant");
}
}), /*#__PURE__*/React.createElement("label", {
htmlFor: "locationConstant"
}, findAndReplace.locationConstant), /*#__PURE__*/React.createElement("div", {
className: "subbox"
}, ["locationDate", "locationDigital", "locationString", "locationBool", "locationError"].map(function (v) {
return /*#__PURE__*/React.createElement("div", {
className: "subItem",
key: v
}, /*#__PURE__*/React.createElement("input", {
type: "checkbox",
disabled: !isSelect("locationConstant"),
checked: constants[v],
onChange: function onChange() {
setConstants(produce(function (draft) {
_.set(draft, v, !draft[v]);
}));
}
}), /*#__PURE__*/React.createElement("label", {
htmlFor: v,
style: {
color: isSelect("locationConstant") ? "#000" : "#666"
}
}, findAndReplace[v]));
}))), /*#__PURE__*/React.createElement("div", {
className: "listItem"
}, /*#__PURE__*/React.createElement("input", {
type: "radio",
name: "locationType",
id: "locationFormula",
checked: isSelect("locationFormula"),
onChange: function onChange() {
setConditionType("locationFormula");
}
}), /*#__PURE__*/React.createElement("label", {
htmlFor: "locationFormula"
}, findAndReplace.locationFormula), /*#__PURE__*/React.createElement("div", {
className: "subbox"
}, ["locationDate", "locationDigital", "locationString", "locationBool", "locationError"].map(function (v) {
return /*#__PURE__*/React.createElement("div", {
className: "subItem",
key: v
}, /*#__PURE__*/React.createElement("input", {
type: "checkbox",
disabled: !isSelect("locationFormula"),
checked: formulas[v],
onChange: function onChange() {
setFormulas(produce(function (draft) {
_.set(draft, v, !draft[v]);
}));
}
}), /*#__PURE__*/React.createElement("label", {
htmlFor: v,
style: {
color: isSelect("locationFormula") ? "#000" : "#666"
}
}, findAndReplace[v]));
}))), ["locationNull", "locationRowSpan", "locationColumnSpan"].map(function (v) {
return /*#__PURE__*/React.createElement("div", {
className: "listItem",
key: v
}, /*#__PURE__*/React.createElement("input", {
type: "radio",
name: v,
checked: isSelect(v),
onChange: function onChange() {
setConditionType(v);
}
}), /*#__PURE__*/React.createElement("label", {
htmlFor: v
}, findAndReplace[v]));
})), /*#__PURE__*/React.createElement("div", {
className: "button-basic button-primary",
onClick: function onClick() {
hideDialog();
onConfirm();
},
tabIndex: 0
}, button.confirm), /*#__PURE__*/React.createElement("div", {
className: "button-basic button-close",
onClick: function onClick() {
hideDialog();
},
tabIndex: 0
}, button.cancel));
};