UNPKG

@uiw/react-md-editor

Version:

A markdown editor with preview, implemented with React.js and TypeScript.

91 lines (90 loc) 4.09 kB
"use strict"; var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard")["default"]; Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = void 0; var _react = _interopRequireWildcard(require("react")); var _jsxRuntime = require("react/jsx-runtime"); var DragBar = function DragBar(props) { var _ref = props || {}, prefixCls = _ref.prefixCls, onChange = _ref.onChange; var $dom = (0, _react.useRef)(null); var dragRef = (0, _react.useRef)(); var heightRef = (0, _react.useRef)(props.height); (0, _react.useEffect)(function () { if (heightRef.current !== props.height) { heightRef.current = props.height; } }, [props.height]); function handleMouseMove(event) { if (dragRef.current) { var _changedTouches$; var clientY = event.clientY || ((_changedTouches$ = event.changedTouches[0]) === null || _changedTouches$ === void 0 ? void 0 : _changedTouches$.clientY); var newHeight = dragRef.current.height + clientY - dragRef.current.dragY; if (newHeight >= props.minHeight && newHeight <= props.maxHeight) { onChange && onChange(dragRef.current.height + (clientY - dragRef.current.dragY)); } } } function handleMouseUp() { var _$dom$current, _$dom$current2; dragRef.current = undefined; document.removeEventListener('mousemove', handleMouseMove); document.removeEventListener('mouseup', handleMouseUp); (_$dom$current = $dom.current) === null || _$dom$current === void 0 || _$dom$current.removeEventListener('touchmove', handleMouseMove); (_$dom$current2 = $dom.current) === null || _$dom$current2 === void 0 || _$dom$current2.removeEventListener('touchend', handleMouseUp); } function handleMouseDown(event) { var _changedTouches$2, _$dom$current3, _$dom$current4; event.preventDefault(); var clientY = event.clientY || ((_changedTouches$2 = event.changedTouches[0]) === null || _changedTouches$2 === void 0 ? void 0 : _changedTouches$2.clientY); dragRef.current = { height: heightRef.current, dragY: clientY }; document.addEventListener('mousemove', handleMouseMove); document.addEventListener('mouseup', handleMouseUp); (_$dom$current3 = $dom.current) === null || _$dom$current3 === void 0 || _$dom$current3.addEventListener('touchmove', handleMouseMove, { passive: false }); (_$dom$current4 = $dom.current) === null || _$dom$current4 === void 0 || _$dom$current4.addEventListener('touchend', handleMouseUp, { passive: false }); } (0, _react.useEffect)(function () { if (document) { var _$dom$current5, _$dom$current6; (_$dom$current5 = $dom.current) === null || _$dom$current5 === void 0 || _$dom$current5.addEventListener('touchstart', handleMouseDown, { passive: false }); (_$dom$current6 = $dom.current) === null || _$dom$current6 === void 0 || _$dom$current6.addEventListener('mousedown', handleMouseDown); } return function () { if (document) { var _$dom$current7; (_$dom$current7 = $dom.current) === null || _$dom$current7 === void 0 || _$dom$current7.removeEventListener('touchstart', handleMouseDown); document.removeEventListener('mousemove', handleMouseMove); } }; // eslint-disable-next-line react-hooks/exhaustive-deps }, []); var svg = (0, _react.useMemo)(function () { return /*#__PURE__*/(0, _jsxRuntime.jsx)("svg", { viewBox: "0 0 512 512", height: "100%", children: /*#__PURE__*/(0, _jsxRuntime.jsx)("path", { fill: "currentColor", d: "M304 256c0 26.5-21.5 48-48 48s-48-21.5-48-48 21.5-48 48-48 48 21.5 48 48zm120-48c-26.5 0-48 21.5-48 48s21.5 48 48 48 48-21.5 48-48-21.5-48-48-48zm-336 0c-26.5 0-48 21.5-48 48s21.5 48 48 48 48-21.5 48-48-21.5-48-48-48z" }) }); }, []); return /*#__PURE__*/(0, _jsxRuntime.jsx)("div", { className: "".concat(prefixCls, "-bar"), ref: $dom, children: svg }); }; var _default = exports["default"] = DragBar; module.exports = exports.default;