UNPKG

flatten-js

Version:

Javascript library for 2d geometry

1 lines 5.01 kB
{"dependencies":[{"name":"C:\\Users\\alexbol\\WebstormProjects\\flatten-js\\package.json","includedInParent":true,"mtime":1520238055570},{"name":"C:\\Users\\alexbol\\WebstormProjects\\flatten-js\\node_modules\\flatten-interval-tree\\package.json","includedInParent":true,"mtime":1520238156082},{"name":"./classes/node","loc":{"line":6,"column":19}},{"name":"./utils/constants","loc":{"line":7,"column":55}}],"generated":{"js":"\"use strict\";let t=require(\"./classes/node\"),{RB_TREE_COLOR_RED:e,RB_TREE_COLOR_BLACK:r}=require(\"./utils/constants\"),o=new t,l=class{constructor(){this.root=null}get size(){let t=0;return this.tree_walk(this.root,()=>t++),t}get keys(){let t=[];return this.tree_walk(this.root,e=>t.push(e.item.key.output())),t}get isEmpty(){return null==this.root||this.root==o}insert(r,l=r){if(void 0===r)return;let a=new t(r,l,o,o,null,e);return this.tree_insert(a),this.recalc_max(a),a}exist(e,r){let o=new t(e,r);return!!this.tree_search(this.root,o)}remove(e,r){let o=new t(e,r),l=this.tree_search(this.root,o);return l&&this.tree_delete(l),l}search(e){let r=new t(e),o=[];this.tree_search_interval(this.root,r,o);let l=[];return o.forEach(t=>{t.item.value?l.push(t.item.value):l.push(t.item.key.output())},[]),l}forEach(t){this.tree_walk(this.root,e=>t(e.item.key,e.item.value))}recalc_max(t){let e=t;for(;null!=e.parent;)e.parent.update_max(),e=e.parent}tree_insert(t){let e=this.root,r=null;if(null==this.root||this.root==o)this.root=t;else{for(;e!=o;)r=e,e=t.less_than(e)?e.left:e.right;t.parent=r,t.less_than(r)?r.left=t:r.right=t}this.insert_fixup(t)}insert_fixup(t){let o,l;for(o=t;o!=this.root&&o.parent.color==e;)o.parent==o.parent.parent.left?(l=o.parent.parent.right).color==e?(o.parent.color=r,l.color=r,o.parent.parent.color=e,o=o.parent.parent):(o==o.parent.right&&(o=o.parent,this.rotate_left(o)),o.parent.color=r,o.parent.parent.color=e,this.rotate_right(o.parent.parent)):(l=o.parent.parent.left).color==e?(o.parent.color=r,l.color=r,o.parent.parent.color=e,o=o.parent.parent):(o==o.parent.left&&(o=o.parent,this.rotate_right(o)),o.parent.color=r,o.parent.parent.color=e,this.rotate_left(o.parent.parent));this.root.color=r}tree_delete(t){let e,l;(l=(e=t.left==o||t.right==o?t:this.tree_successor(t)).left!=o?e.left:e.right)!=o&&(l.parent=e.parent),e==this.root?this.root=l:(e==e.parent.left?e.parent.left=l:e.parent.right=l,e.parent.update_max()),this.recalc_max(l),e!=t&&(t.copy_data(e),t.update_max(),this.recalc_max(t)),l!=o&&e.color==r&&this.delete_fixup(l)}delete_fixup(t){let o,l=t;for(;l!=this.root&&null!=l.parent&&l.color==r;)l==l.parent.left?((o=l.parent.right).color==e&&(o.color=r,l.parent.color=e,this.rotate_left(l.parent),o=l.parent.right),o.left.color==r&&o.right.color==r?(o.color=e,l=l.parent):(o.right.color==r&&(o.color=e,o.left.color=r,this.rotate_right(o),o=l.parent.right),o.color=l.parent.color,l.parent.color=r,o.right.color=r,this.rotate_left(l.parent),l=this.root)):((o=l.parent.left).color==e&&(o.color=r,l.parent.color=e,this.rotate_right(l.parent),o=l.parent.left),o.left.color==r&&o.right.color==r?(o.color=e,l=l.parent):(o.left.color==r&&(o.color=e,o.right.color=r,this.rotate_left(o),o=l.parent.left),o.color=l.parent.color,l.parent.color=r,o.left.color=r,this.rotate_right(l.parent),l=this.root));l.color=r}tree_search(t,e){if(null!=t&&t!=o)return e.equal_to(t)?t:e.less_than(t)?this.tree_search(t.left,e):this.tree_search(t.right,e)}tree_search_interval(t,e,r){null!=t&&t!=o&&(t.left==o||t.not_intersect_left_subtree(e)||this.tree_search_interval(t.left,e,r),t.intersect(e)&&r.push(t),t.right==o||t.not_intersect_right_subtree(e)||this.tree_search_interval(t.right,e,r))}local_minimum(t){let e=t;for(;null!=e.left&&e.left!=o;)e=e.left;return e}local_maximum(t){let e=t;for(;null!=e.right&&e.right!=o;)e=e.right;return e}tree_successor(t){let e,r,l;if(t.right!=o)e=this.local_minimum(t.right);else{for(r=t,l=t.parent;null!=l&&l.right==r;)r=l,l=l.parent;e=l}return e}rotate_left(t){let e=t.right;t.right=e.left,e.left!=o&&(e.left.parent=t),e.parent=t.parent,t==this.root?this.root=e:t==t.parent.left?t.parent.left=e:t.parent.right=e,e.left=t,t.parent=e,null!=t&&t!=o&&t.update_max(),null!=(e=t.parent)&&e!=o&&e.update_max()}rotate_right(t){let e=t.left;t.left=e.right,e.right!=o&&(e.right.parent=t),e.parent=t.parent,t==this.root?this.root=e:t==t.parent.left?t.parent.left=e:t.parent.right=e,e.right=t,t.parent=e,null!=t&&t!=o&&t.update_max(),null!=(e=t.parent)&&e!=o&&e.update_max()}tree_walk(t,e){null!=t&&t!=o&&(this.tree_walk(t.left,e),e(t),this.tree_walk(t.right,e))}testRedBlackProperty(){let t=!0;return this.tree_walk(this.root,function(o){o.color==e&&(o.left.color==r&&o.right.color==r||(t=!1))}),t}testBlackHeightProperty(t){let e=0,l=0,a=0;if(t.color==r&&e++,(l=t.left!=o?this.testBlackHeightProperty(t.left):1)!=(a=t.right!=o?this.testBlackHeightProperty(t.right):1))throw new Error(\"Red-black height property violated\");return e+=l}};module.exports=l;"},"hash":"2745c90d1da36f1aee6267d3f0f525f5","cacheData":{"env":{}}}