]> git.ipfire.org Git - thirdparty/vuejs/core.git/commitdiff
refactor: move lis into utils
authorEvan You <yyx990803@gmail.com>
Fri, 21 Sep 2018 22:12:17 +0000 (18:12 -0400)
committerEvan You <yyx990803@gmail.com>
Fri, 21 Sep 2018 22:12:17 +0000 (18:12 -0400)
packages/core/src/createRenderer.ts
packages/core/src/utils.ts

index ce130caa4a00bf58204cb14cd83142c18466c6d6..4c8ebb4f6e263b9ff7ab165f64e893efb60fc244 100644 (file)
@@ -1,7 +1,7 @@
 import { autorun, stop } from '@vue/observer'
 import { queueJob } from '@vue/scheduler'
 import { VNodeFlags, ChildrenFlags } from './flags'
-import { EMPTY_OBJ, isReservedProp } from './utils'
+import { EMPTY_OBJ, isReservedProp, lis } from './utils'
 import {
   VNode,
   MountedVNode,
@@ -1058,52 +1058,6 @@ export function createRenderer(options: RendererOptions) {
     }
   }
 
-  // https://en.wikipedia.org/wiki/Longest_increasing_subsequence
-  function lis(arr: number[]): number[] {
-    const p = arr.slice()
-    const result = [0]
-    let i
-    let j
-    let u
-    let v
-    let c
-    const len = arr.length
-    for (i = 0; i < len; i++) {
-      const arrI = arr[i]
-      if (arrI !== 0) {
-        j = result[result.length - 1]
-        if (arr[j] < arrI) {
-          p[i] = j
-          result.push(i)
-          continue
-        }
-        u = 0
-        v = result.length - 1
-        while (u < v) {
-          c = ((u + v) / 2) | 0
-          if (arr[result[c]] < arrI) {
-            u = c + 1
-          } else {
-            v = c
-          }
-        }
-        if (arrI < arr[result[u]]) {
-          if (u > 0) {
-            p[i] = result[u - 1]
-          }
-          result[u] = i
-        }
-      }
-    }
-    u = result.length
-    v = result[u - 1]
-    while (u-- > 0) {
-      result[u] = v
-      v = p[v]
-    }
-    return result
-  }
-
   // unmounting ----------------------------------------------------------------
 
   function unmount(vnode: VNode) {
index 465c0d9b38fbc09a6116fcbc086d2c08f9e1d376..e0605d5d64d71a0efcb7bbfd7f23ce907d3f240f 100644 (file)
@@ -10,3 +10,49 @@ export const isReservedProp = (key: string): boolean => {
       return key.startsWith('nativeOn')
   }
 }
+
+// https://en.wikipedia.org/wiki/Longest_increasing_subsequence
+export function lis(arr: number[]): number[] {
+  const p = arr.slice()
+  const result = [0]
+  let i
+  let j
+  let u
+  let v
+  let c
+  const len = arr.length
+  for (i = 0; i < len; i++) {
+    const arrI = arr[i]
+    if (arrI !== 0) {
+      j = result[result.length - 1]
+      if (arr[j] < arrI) {
+        p[i] = j
+        result.push(i)
+        continue
+      }
+      u = 0
+      v = result.length - 1
+      while (u < v) {
+        c = ((u + v) / 2) | 0
+        if (arr[result[c]] < arrI) {
+          u = c + 1
+        } else {
+          v = c
+        }
+      }
+      if (arrI < arr[result[u]]) {
+        if (u > 0) {
+          p[i] = result[u - 1]
+        }
+        result[u] = i
+      }
+    }
+  }
+  u = result.length
+  v = result[u - 1]
+  while (u-- > 0) {
+    result[u] = v
+    v = p[v]
+  }
+  return result
+}