هل يمكنك تنظيف هذه الوظيفة للحصول على أقل قدر من التكرار والحفاظ على السلوك كما هو؟ اجعلها نظيفة حقًا واستخدم المتغيرات المحلية أو حتى الحلقات لجعلها مضغوطة.
دع mousedownOnResizer = (e) => {
 this.setZOnTop();
 دع prevX = e.clientX;
 Let prevY = e.clientY;
 دع currentResizer = e.target;
 Let rect = this.outer.getBoundingClientRect();
 Let prevLeft = rect.left;
 Let prevTop = rect.top;
 دع العرض الجديد؛
 دع newHeight؛
 ارتفاع شريط ثابت = 20؛
 دع newSize = null;

 const mouseup = () => {
 isResizing = false;
 window.removeEventListener('mousemove', mousemove);
 window.removeEventListener('mouseup', mouseup);
 إذا (this.callback && newSize) {
 this.callback(newSize);
 }
 };

 const mousemove = (e) => {
 const newX = prevX - e.clientX;
 const newY = prevY - e.clientY;

 إذا (currentResizer === this.sizers[0]) {
 newWidth = rect.width - newX;
 newHeight = (rect.height - barHeight) + newY;
 نسبة const = newHeight / newWidth؛
 var ar = this.aspectRatio || نسبة؛

 إذا (النسبة > ar && newWidth > minWidth) {
 this.outer.style.top = prevTop - newY + 'px';
 this.outer.style.height = newHeight + 'px';
 this.outer.style.width = (newHeight / this.aspectRatio) + 'px';
 newSize = [(newHeight / ar)، newHeight]؛
 } آخر {
 const actualNewHeight = (newWidth \* ar);
 this.outer.style.width = newWidth + 'px';
 this.outer.style.height = actualNewHeight + 'px';
 this.outer.style.top = (prevTop + rect.height - الفعليNewHeight) + 'px';
 newSize = [newWidth, actualNewHeight];
 }
 } else if (currentResizer === this.sizers[1]) {
 newWidth = Math.abs(rect.width - newX);
 newHeight = Math.abs(rect.height - newY);
 نسبة const = newHeight / newWidth؛

 var ar = this.aspectRatio || نسبة؛

 إذا ((نسبة) <ع) {
 newWidth = Math.max(newWidth, minWidth);
 this.outer.style.width = newWidth + 'px';
 this.outer.style.height = (newWidth \* ar) + 'px'
 newSize = [newWidth, newWidth \* ar]
 } آخر {
 newHeight = Math.max(newHeight, minHeight);
 this.outer.style.height = newHeight + 'px';
 this.outer.style.width = (newHeight / ar) + 'px'
 newSize = [(newHeight / ar)، newHeight]
 }
 } else if (currentResizer === this.sizers[2]) {
 newWidth = rect.width + newX;
 newHeight = rect.height - newY;
 نسبة const = newHeight / newWidth؛

 var ar = this.aspectRatio || نسبة؛

 إذا (النسبة <ar && newWidth > minWidth) {
 this.outer.style.left = prevLeft - newX + 'px';
 this.outer.style.width = newWidth + 'px';
 this.outer.style.height = (ar \* newWidth) + 'px';
 newSize = [newWidth, (ar \* newWidth)];
 } آخر {
 const actualNewWidth = (newHeight / ar);
 this.outer.style.height = newHeight + 'px';
 this.outer.style.width = الفعليNewWidth + 'px';
 this.outer.style.left = (prevLeft + rect.width - الفعليNewWidth) + 'px';
 newSize = [actualNewWidth, newHeight];
 }
 } else if (currentResizer === this.sizers[3]) {
 newWidth = rect.width + newX;
 newHeight = rect.height + newY;
 نسبة const = newHeight / newWidth؛
 var ar = this.aspectRatio || نسبة؛

 إذا (نسبة <ع) {
 this.outer.style.left = prevLeft - newX + 'px';
 this.outer.style.width = newWidth + 'px';
 const actualNewHeight = (newWidth \* ar);
 this.outer.style.height = actualNewHeight + 'px';
 this.outer.style.top = (prevTop + rect.height - الفعليNewHeight) + 'px';
 الحجم الجديد = [العرض الجديد، الارتفاع الفعلي الجديد]
 } آخر {
 this.outer.style.top = prevTop - newY + 'px';
 this.outer.style.height = newHeight + 'px';
 const actualNewWidth = (newHeight / ar);
 this.outer.style.width = الفعليNewWidth + 'px';
 this.outer.style.left = (prevLeft + rect.width - الفعليNewWidth) + 'px';
 الحجم الجديد = [العرض الفعلي، الارتفاع الجديد]
 }
 }
 e.preventDefault();
 };

 isResizing = true;
 window.addEventListener('mousemove', mousemove);
 window.addEventListener('mouseup', mouseup);
 };
{"source": "ewof/sharegpt-instruct-unfiltered-deduped", "kind": "human", "evolved_from": null}