2
0
Эх сурвалжийг харах

Move functions out to make containing function smaller

JC Brand 8 жил өмнө
parent
commit
6c6b85347a
1 өөрчлөгдсөн 29 нэмэгдсэн , 20 устгасан
  1. 29 20
      src/utils.js

+ 29 - 20
src/utils.js

@@ -88,6 +88,25 @@
         }
     }
 
+    function calculateElementHeight (el) {
+        /* Return the height of the passed in DOM element,
+         * based on the heights of its children.
+         */
+        return _.reduce(
+            el.children,
+            (result, child) => result + child.offsetHeight, 0
+        );
+    }
+
+    function slideOutWrapup (el) {
+        /* Wrapup function for slideOut. */
+        el.removeAttribute('data-slider-marker');
+        el.classList.remove('collapsed');
+        el.style.overflow = "";
+        el.style.height = "";
+    }
+
+
     var u = {};
 
     // Translation machinery
@@ -186,22 +205,12 @@
     };
 
     u.slideOut = function (el, duration=900) {
-        /* Shows/expands an element by sliding it out of itself. */
-
-        function calculateEndHeight (el) {
-            return _.reduce(
-                el.children,
-                (result, child) => result + child.offsetHeight, 0
-            );
-        }
-
-        function wrapup (el) {
-            el.removeAttribute('data-slider-marker');
-            el.classList.remove('collapsed');
-            el.style.overflow = "";
-            el.style.height = "";
-        }
-
+        /* Shows/expands an element by sliding it out of itself
+         *
+         * Parameters:
+         *      (HTMLElement) el - The HTML string
+         *      (Number) duration - The duration amount in milliseconds
+         */
         return new Promise((resolve, reject) => {
             if (_.isNil(el)) {
                 const err = "Undefined or null element passed into slideOut"
@@ -214,10 +223,10 @@
                 el.removeAttribute('data-slider-marker');
                 window.clearInterval(interval_marker);
             }
-            const end_height = calculateEndHeight(el);
+            const end_height = calculateElementHeight(el);
             if (window.converse_disable_effects) { // Effects are disabled (for tests)
                 el.style.height = end_height + 'px';
-                wrapup(el);
+                slideOutWrapup(el);
                 resolve();
                 return;
             }
@@ -234,9 +243,9 @@
                     // We recalculate the height to work around an apparent
                     // browser bug where browsers don't know the correct
                     // offsetHeight beforehand.
-                    el.style.height = calculateEndHeight(el) + 'px';
+                    el.style.height = calculateElementHeight(el) + 'px';
                     window.clearInterval(interval_marker);
-                    wrapup(el);
+                    slideOutWrapup(el);
                     resolve();
                 }
             }, interval);