@wulperstudio/cms
Version:
Wulper Studio Library Components CMS
130 lines (129 loc) • 5.95 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
var _typeof = require("@babel/runtime/helpers/typeof");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = void 0;
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
var _react = _interopRequireWildcard(require("react"));
var _react2 = require("@iconify/react");
var _reactSignaturePadWrapper = _interopRequireDefault(require("react-signature-pad-wrapper"));
var _styled = require("./styled");
var _index = require("../IconButtonComponent/index");
var _base = require("../../base");
var _utils = require("./utils");
var _jsxRuntime = require("react/jsx-runtime");
var _Icon;
var _excluded = ["variant", "label", "error", "errorVariant", "errorMessage"];
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n["default"] = e, t && t.set(e, n), n; }
var SignatureInput = function SignatureInput(_ref) {
var _ref$variant = _ref.variant,
variant = _ref$variant === void 0 ? 'divider' : _ref$variant,
label = _ref.label,
error = _ref.error,
errorVariant = _ref.errorVariant,
errorMessage = _ref.errorMessage,
props = (0, _objectWithoutProperties2["default"])(_ref, _excluded);
var _React$useState = _react["default"].useState(null),
_React$useState2 = (0, _slicedToArray2["default"])(_React$useState, 2),
signature = _React$useState2[0],
setSignature = _React$useState2[1];
var signaturePad = _react["default"].useRef(null);
var handleClear = (0, _react.useCallback)(function () {
var ref = signaturePad.current;
if (ref) {
ref.clear();
setSignature(null);
}
}, [signaturePad]);
var handleToData = (0, _react.useCallback)(function () {
var ref = signaturePad.current;
if (ref) {
var isEmpty = ref.isEmpty();
if (!isEmpty) {
var data = ref.toDataURL('image/png');
var file = (0, _utils.dataURLtoFile)(data, 'signature.png');
setSignature(file);
} else {
setSignature(null);
}
}
}, [signaturePad]);
var resizeCanvas = (0, _react.useCallback)(function () {
var ref = signaturePad.current;
if (ref) {
var _canvas;
var ratio = Math.max(window.devicePixelRatio || 1, 1);
var canvas = (_canvas = ref.canvas) == null ? void 0 : _canvas.current;
if (canvas) {
var _getContext;
canvas.width = canvas.offsetWidth * ratio;
canvas.height = canvas.offsetHeight * ratio;
(_getContext = canvas.getContext('2d')) == null || _getContext.scale(ratio, ratio);
ref.clear();
}
}
}, [signaturePad]);
_react["default"].useEffect(function () {
window.onresize = resizeCanvas;
resizeCanvas();
}, []);
_react["default"].useEffect(function () {
if (signaturePad) {
var _signaturePad$current;
var instance = signaturePad == null || (_signaturePad$current = signaturePad.current) == null ? void 0 : _signaturePad$current.instance;
instance == null || instance.addEventListener('endStroke', handleToData);
}
return function () {
var _signaturePad$current2;
var instance = signaturePad == null || (_signaturePad$current2 = signaturePad.current) == null ? void 0 : _signaturePad$current2.instance;
instance == null || instance.removeEventListener('endStroke', null);
};
}, []);
_react["default"].useEffect(function () {
if (props.getSignature) props.getSignature(signature);
}, [signature]);
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_styled.Root, {
children: [variant === 'labelOut' && label && /*#__PURE__*/(0, _jsxRuntime.jsx)(_base.InputLabel, {
variant: variant,
children: label
}), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_styled.WrapperSiganture, {
variant: variant,
error: error,
size: "auto",
backgroundColor: props.backgroundColor,
children: [variant !== 'labelOut' && label && /*#__PURE__*/(0, _jsxRuntime.jsx)(_base.InputLabel, {
variant: variant,
children: label
}), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_styled.SignatureInputBody, {
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_styled.FixedElement, {
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_index.IconButtonComponent, {
iconProps: {
size: 'small',
onClick: handleClear
},
children: _Icon || (_Icon = /*#__PURE__*/(0, _jsxRuntime.jsx)(_react2.Icon, {
icon: "ic:round-clear",
color: "#455266"
}))
})
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactSignaturePadWrapper["default"], {
redrawOnResize: true,
ref: signaturePad,
height: 164,
debounceInterval: 500,
options: {
// penColor: 'rgb(18, 18, 18)',
}
})]
})]
}), error && /*#__PURE__*/(0, _jsxRuntime.jsx)(_base.ErrorAlert, {
variant: errorVariant,
children: errorMessage
})]
});
};
var _default = exports["default"] = SignatureInput;