@uiw/react-md-editor 4.1.7 → 4.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -234,12 +234,15 @@ export function createMDEditor(options) {
234
234
  initScroll.current = true;
235
235
  }
236
236
  if (textareaDom && previewDom) {
237
- var scale = (textareaDom.scrollHeight - textareaDom.offsetHeight) / (previewDom.scrollHeight - previewDom.offsetHeight);
238
- if (e.target === textareaDom && active.current === 'text') {
239
- previewDom.scrollTop = textareaDom.scrollTop / scale;
240
- }
241
- if (e.target === previewDom && active.current === 'preview') {
242
- textareaDom.scrollTop = previewDom.scrollTop * scale;
237
+ var inputRange = Math.max(0, textareaDom.scrollHeight - textareaDom.offsetHeight);
238
+ var previewRange = Math.max(0, previewDom.scrollHeight - previewDom.offsetHeight);
239
+ if (inputRange > 0 && previewRange > 0) {
240
+ if (e.target === textareaDom && active.current === 'text') {
241
+ previewDom.scrollTop = textareaDom.scrollTop / inputRange * previewRange;
242
+ }
243
+ if (e.target === previewDom && active.current === 'preview') {
244
+ textareaDom.scrollTop = previewDom.scrollTop / previewRange * inputRange;
245
+ }
243
246
  }
244
247
  var scrollTop = 0;
245
248
  if (active.current === 'text') {
@@ -259,9 +262,9 @@ export function createMDEditor(options) {
259
262
  var mdPreview = useMemo(() => /*#__PURE__*/_jsx("div", {
260
263
  ref: previewRef,
261
264
  className: previewClassName,
265
+ onScroll: handlePreviewScroll,
262
266
  children: /*#__PURE__*/_jsx(TimedPreview, _extends({}, previewOptions, {
263
267
  renderMsRef: previewRenderMs,
264
- onScroll: handlePreviewScroll,
265
268
  source: previewMarkdown
266
269
  }))
267
270
  }), [previewClassName, previewOptions, previewMarkdown]);
@@ -279,12 +279,15 @@ function createMDEditor(options) {
279
279
  initScroll.current = true;
280
280
  }
281
281
  if (textareaDom && previewDom) {
282
- var scale = (textareaDom.scrollHeight - textareaDom.offsetHeight) / (previewDom.scrollHeight - previewDom.offsetHeight);
283
- if (e.target === textareaDom && active.current === 'text') {
284
- previewDom.scrollTop = textareaDom.scrollTop / scale;
285
- }
286
- if (e.target === previewDom && active.current === 'preview') {
287
- textareaDom.scrollTop = previewDom.scrollTop * scale;
282
+ var inputRange = Math.max(0, textareaDom.scrollHeight - textareaDom.offsetHeight);
283
+ var previewRange = Math.max(0, previewDom.scrollHeight - previewDom.offsetHeight);
284
+ if (inputRange > 0 && previewRange > 0) {
285
+ if (e.target === textareaDom && active.current === 'text') {
286
+ previewDom.scrollTop = textareaDom.scrollTop / inputRange * previewRange;
287
+ }
288
+ if (e.target === previewDom && active.current === 'preview') {
289
+ textareaDom.scrollTop = previewDom.scrollTop / previewRange * inputRange;
290
+ }
288
291
  }
289
292
  var scrollTop = 0;
290
293
  if (active.current === 'text') {
@@ -307,9 +310,9 @@ function createMDEditor(options) {
307
310
  return /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
308
311
  ref: previewRef,
309
312
  className: previewClassName,
313
+ onScroll: handlePreviewScroll,
310
314
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)(TimedPreview, (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, previewOptions), {}, {
311
315
  renderMsRef: previewRenderMs,
312
- onScroll: handlePreviewScroll,
313
316
  source: previewMarkdown
314
317
  }))
315
318
  });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@uiw/react-md-editor",
3
- "version": "4.1.7",
3
+ "version": "4.2.0",
4
4
  "description": "A markdown editor with preview, implemented with React.js and TypeScript.",
5
5
  "homepage": "https://uiwjs.github.io/react-md-editor/",
6
6
  "funding": "https://jaywcjlove.github.io/#/sponsor",
@@ -232,13 +232,15 @@ export function createMDEditor<
232
232
  initScroll.current = true;
233
233
  }
234
234
  if (textareaDom && previewDom) {
235
- const scale =
236
- (textareaDom.scrollHeight - textareaDom.offsetHeight) / (previewDom.scrollHeight - previewDom.offsetHeight);
237
- if (e.target === textareaDom && active.current === 'text') {
238
- previewDom.scrollTop = textareaDom.scrollTop / scale;
239
- }
240
- if (e.target === previewDom && active.current === 'preview') {
241
- textareaDom.scrollTop = previewDom.scrollTop * scale;
235
+ const inputRange = Math.max(0, textareaDom.scrollHeight - textareaDom.offsetHeight);
236
+ const previewRange = Math.max(0, previewDom.scrollHeight - previewDom.offsetHeight);
237
+ if (inputRange > 0 && previewRange > 0) {
238
+ if (e.target === textareaDom && active.current === 'text') {
239
+ previewDom.scrollTop = (textareaDom.scrollTop / inputRange) * previewRange;
240
+ }
241
+ if (e.target === previewDom && active.current === 'preview') {
242
+ textareaDom.scrollTop = (previewDom.scrollTop / previewRange) * inputRange;
243
+ }
242
244
  }
243
245
  let scrollTop = 0;
244
246
  if (active.current === 'text') {
@@ -256,13 +258,8 @@ export function createMDEditor<
256
258
  const previewMarkdown = useDeferredValue(usePreviewSource(state.markdown || '', previewRenderMs));
257
259
  let mdPreview = useMemo(
258
260
  () => (
259
- <div ref={previewRef} className={previewClassName}>
260
- <TimedPreview
261
- {...previewOptions}
262
- renderMsRef={previewRenderMs}
263
- onScroll={handlePreviewScroll}
264
- source={previewMarkdown}
265
- />
261
+ <div ref={previewRef} className={previewClassName} onScroll={handlePreviewScroll}>
262
+ <TimedPreview {...previewOptions} renderMsRef={previewRenderMs} source={previewMarkdown} />
266
263
  </div>
267
264
  ),
268
265
  [previewClassName, previewOptions, previewMarkdown],