return dx * dx + dy * dy;
}
-},{"tinyqueue":226}],2:[function(require,module,exports){
+},{"tinyqueue":227}],2:[function(require,module,exports){
/*
* Copyright (C) 2008 Apple Inc. All Rights Reserved.
*
if (typeof module != 'undefined' && module.exports) module.exports = Geohash; // CommonJS, node.js
},{}],22:[function(require,module,exports){
+/**
+ * martinez v0.5.0
+ * Martinez polygon clipping algorithm, does boolean operation on polygons (multipolygons, polygons with holes etc): intersection, union, difference, xor
+ *
+ * @author Alex Milevski <info@w8r.name>
+ * @license MIT
+ * @preserve
+ */
+
+(function (global, factory) {
+ typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
+ typeof define === 'function' && define.amd ? define(['exports'], factory) :
+ (factory((global.martinez = {})));
+}(this, (function (exports) { 'use strict';
+
+ function DEFAULT_COMPARE (a, b) { return a > b ? 1 : a < b ? -1 : 0; }
+
+ var SplayTree = function SplayTree(compare, noDuplicates) {
+ if ( compare === void 0 ) compare = DEFAULT_COMPARE;
+ if ( noDuplicates === void 0 ) noDuplicates = false;
+
+ this._compare = compare;
+ this._root = null;
+ this._size = 0;
+ this._noDuplicates = !!noDuplicates;
+ };
+
+ var prototypeAccessors = { size: { configurable: true } };
+
+
+ SplayTree.prototype.rotateLeft = function rotateLeft (x) {
+ var y = x.right;
+ if (y) {
+ x.right = y.left;
+ if (y.left) { y.left.parent = x; }
+ y.parent = x.parent;
+ }
+
+ if (!x.parent) { this._root = y; }
+ else if (x === x.parent.left) { x.parent.left = y; }
+ else { x.parent.right = y; }
+ if (y) { y.left = x; }
+ x.parent = y;
+ };
+
+
+ SplayTree.prototype.rotateRight = function rotateRight (x) {
+ var y = x.left;
+ if (y) {
+ x.left = y.right;
+ if (y.right) { y.right.parent = x; }
+ y.parent = x.parent;
+ }
+
+ if (!x.parent) { this._root = y; }
+ else if(x === x.parent.left) { x.parent.left = y; }
+ else { x.parent.right = y; }
+ if (y) { y.right = x; }
+ x.parent = y;
+ };
+
+
+ SplayTree.prototype._splay = function _splay (x) {
+ var this$1 = this;
+
+ while (x.parent) {
+ var p = x.parent;
+ if (!p.parent) {
+ if (p.left === x) { this$1.rotateRight(p); }
+ else { this$1.rotateLeft(p); }
+ } else if (p.left === x && p.parent.left === p) {
+ this$1.rotateRight(p.parent);
+ this$1.rotateRight(p);
+ } else if (p.right === x && p.parent.right === p) {
+ this$1.rotateLeft(p.parent);
+ this$1.rotateLeft(p);
+ } else if (p.left === x && p.parent.right === p) {
+ this$1.rotateRight(p);
+ this$1.rotateLeft(p);
+ } else {
+ this$1.rotateLeft(p);
+ this$1.rotateRight(p);
+ }
+ }
+ };
+
+
+ SplayTree.prototype.splay = function splay (x) {
+ var this$1 = this;
+
+ var p, gp, ggp, l, r;
+
+ while (x.parent) {
+ p = x.parent;
+ gp = p.parent;
+
+ if (gp && gp.parent) {
+ ggp = gp.parent;
+ if (ggp.left === gp) { ggp.left= x; }
+ else { ggp.right = x; }
+ x.parent = ggp;
+ } else {
+ x.parent = null;
+ this$1._root = x;
+ }
+
+ l = x.left; r = x.right;
+
+ if (x === p.left) { // left
+ if (gp) {
+ if (gp.left === p) {
+ /* zig-zig */
+ if (p.right) {
+ gp.left = p.right;
+ gp.left.parent = gp;
+ } else { gp.left = null; }
+
+ p.right = gp;
+ gp.parent = p;
+ } else {
+ /* zig-zag */
+ if (l) {
+ gp.right = l;
+ l.parent = gp;
+ } else { gp.right = null; }
+
+ x.left = gp;
+ gp.parent = x;
+ }
+ }
+ if (r) {
+ p.left = r;
+ r.parent = p;
+ } else { p.left = null; }
+
+ x.right= p;
+ p.parent = x;
+ } else { // right
+ if (gp) {
+ if (gp.right === p) {
+ /* zig-zig */
+ if (p.left) {
+ gp.right = p.left;
+ gp.right.parent = gp;
+ } else { gp.right = null; }
+
+ p.left = gp;
+ gp.parent = p;
+ } else {
+ /* zig-zag */
+ if (r) {
+ gp.left = r;
+ r.parent = gp;
+ } else { gp.left = null; }
+
+ x.right = gp;
+ gp.parent = x;
+ }
+ }
+ if (l) {
+ p.right = l;
+ l.parent = p;
+ } else { p.right = null; }
+
+ x.left = p;
+ p.parent = x;
+ }
+ }
+ };
+
+
+ SplayTree.prototype.replace = function replace (u, v) {
+ if (!u.parent) { this._root = v; }
+ else if (u === u.parent.left) { u.parent.left = v; }
+ else { u.parent.right = v; }
+ if (v) { v.parent = u.parent; }
+ };
+
+
+ SplayTree.prototype.minNode = function minNode (u) {
+ if ( u === void 0 ) u = this._root;
+
+ if (u) { while (u.left) { u = u.left; } }
+ return u;
+ };
+
+
+ SplayTree.prototype.maxNode = function maxNode (u) {
+ if ( u === void 0 ) u = this._root;
+
+ if (u) { while (u.right) { u = u.right; } }
+ return u;
+ };
+
+
+ SplayTree.prototype.insert = function insert (key, data) {
+ var z = this._root;
+ var p = null;
+ var comp = this._compare;
+ var cmp;
+
+ if (this._noDuplicates) {
+ while (z) {
+ p = z;
+ cmp = comp(z.key, key);
+ if (cmp === 0) { return; }
+ else if (comp(z.key, key) < 0) { z = z.right; }
+ else { z = z.left; }
+ }
+ } else {
+ while (z) {
+ p = z;
+ if (comp(z.key, key) < 0) { z = z.right; }
+ else { z = z.left; }
+ }
+ }
+
+ z = { key: key, data: data, left: null, right: null, parent: p };
+
+ if (!p) { this._root = z; }
+ else if (comp(p.key, z.key) < 0) { p.right = z; }
+ else { p.left= z; }
+
+ this.splay(z);
+ this._size++;
+ return z;
+ };
+
+
+ SplayTree.prototype.find = function find (key) {
+ var z = this._root;
+ var comp = this._compare;
+ while (z) {
+ var cmp = comp(z.key, key);
+ if (cmp < 0) { z = z.right; }
+ else if (cmp > 0) { z = z.left; }
+ else { return z; }
+ }
+ return null;
+ };
+
+ /**
+ * Whether the tree contains a node with the given key
+ * @param{Key} key
+ * @return {boolean} true/false
+ */
+ SplayTree.prototype.contains = function contains (key) {
+ var node = this._root;
+ var comparator = this._compare;
+ while (node){
+ var cmp = comparator(key, node.key);
+ if (cmp === 0) { return true; }
+ else if (cmp < 0) { node = node.left; }
+ else { node = node.right; }
+ }
+
+ return false;
+ };
+
+
+ SplayTree.prototype.remove = function remove (key) {
+ var z = this.find(key);
+
+ if (!z) { return false; }
+
+ this.splay(z);
+
+ if (!z.left) { this.replace(z, z.right); }
+ else if (!z.right) { this.replace(z, z.left); }
+ else {
+ var y = this.minNode(z.right);
+ if (y.parent !== z) {
+ this.replace(y, y.right);
+ y.right = z.right;
+ y.right.parent = y;
+ }
+ this.replace(z, y);
+ y.left = z.left;
+ y.left.parent = y;
+ }
+
+ this._size--;
+ return true;
+ };
+
+
+ SplayTree.prototype.removeNode = function removeNode (z) {
+ if (!z) { return false; }
+
+ this.splay(z);
+
+ if (!z.left) { this.replace(z, z.right); }
+ else if (!z.right) { this.replace(z, z.left); }
+ else {
+ var y = this.minNode(z.right);
+ if (y.parent !== z) {
+ this.replace(y, y.right);
+ y.right = z.right;
+ y.right.parent = y;
+ }
+ this.replace(z, y);
+ y.left = z.left;
+ y.left.parent = y;
+ }
+
+ this._size--;
+ return true;
+ };
+
+
+ SplayTree.prototype.erase = function erase (key) {
+ var z = this.find(key);
+ if (!z) { return; }
+
+ this.splay(z);
+
+ var s = z.left;
+ var t = z.right;
+
+ var sMax = null;
+ if (s) {
+ s.parent = null;
+ sMax = this.maxNode(s);
+ this.splay(sMax);
+ this._root = sMax;
+ }
+ if (t) {
+ if (s) { sMax.right = t; }
+ else { this._root = t; }
+ t.parent = sMax;
+ }
+
+ this._size--;
+ };
+
+ /**
+ * Removes and returns the node with smallest key
+ * @return {?Node}
+ */
+ SplayTree.prototype.pop = function pop () {
+ var node = this._root, returnValue = null;
+ if (node) {
+ while (node.left) { node = node.left; }
+ returnValue = { key: node.key, data: node.data };
+ this.remove(node.key);
+ }
+ return returnValue;
+ };
+
+
+ /* eslint-disable class-methods-use-this */
+
+ /**
+ * Successor node
+ * @param{Node} node
+ * @return {?Node}
+ */
+ SplayTree.prototype.next = function next (node) {
+ var successor = node;
+ if (successor) {
+ if (successor.right) {
+ successor = successor.right;
+ while (successor && successor.left) { successor = successor.left; }
+ } else {
+ successor = node.parent;
+ while (successor && successor.right === node) {
+ node = successor; successor = successor.parent;
+ }
+ }
+ }
+ return successor;
+ };
+
+
+ /**
+ * Predecessor node
+ * @param{Node} node
+ * @return {?Node}
+ */
+ SplayTree.prototype.prev = function prev (node) {
+ var predecessor = node;
+ if (predecessor) {
+ if (predecessor.left) {
+ predecessor = predecessor.left;
+ while (predecessor && predecessor.right) { predecessor = predecessor.right; }
+ } else {
+ predecessor = node.parent;
+ while (predecessor && predecessor.left === node) {
+ node = predecessor;
+ predecessor = predecessor.parent;
+ }
+ }
+ }
+ return predecessor;
+ };
+ /* eslint-enable class-methods-use-this */
+
+
+ /**
+ * @param{forEachCallback} callback
+ * @return {SplayTree}
+ */
+ SplayTree.prototype.forEach = function forEach (callback) {
+ var current = this._root;
+ var s = [], done = false, i = 0;
+
+ while (!done) {
+ // Reach the left most Node of the current Node
+ if (current) {
+ // Place pointer to a tree node on the stack
+ // before traversing the node's left subtree
+ s.push(current);
+ current = current.left;
+ } else {
+ // BackTrack from the empty subtree and visit the Node
+ // at the top of the stack; however, if the stack is
+ // empty you are done
+ if (s.length > 0) {
+ current = s.pop();
+ callback(current, i++);
+
+ // We have visited the node and its left
+ // subtree. Now, it's right subtree's turn
+ current = current.right;
+ } else { done = true; }
+ }
+ }
+ return this;
+ };
+
+
+ /**
+ * Walk key range from `low` to `high`. Stops if `fn` returns a value.
+ * @param{Key} low
+ * @param{Key} high
+ * @param{Function} fn
+ * @param{*?} ctx
+ * @return {SplayTree}
+ */
+ SplayTree.prototype.range = function range (low, high, fn, ctx) {
+ var this$1 = this;
+
+ var Q = [];
+ var compare = this._compare;
+ var node = this._root, cmp;
+
+ while (Q.length !== 0 || node) {
+ if (node) {
+ Q.push(node);
+ node = node.left;
+ } else {
+ node = Q.pop();
+ cmp = compare(node.key, high);
+ if (cmp > 0) {
+ break;
+ } else if (compare(node.key, low) >= 0) {
+ if (fn.call(ctx, node)) { return this$1; } // stop if smth is returned
+ }
+ node = node.right;
+ }
+ }
+ return this;
+ };
+
+ /**
+ * Returns all keys in order
+ * @return {Array<Key>}
+ */
+ SplayTree.prototype.keys = function keys () {
+ var current = this._root;
+ var s = [], r = [], done = false;
+
+ while (!done) {
+ if (current) {
+ s.push(current);
+ current = current.left;
+ } else {
+ if (s.length > 0) {
+ current = s.pop();
+ r.push(current.key);
+ current = current.right;
+ } else { done = true; }
+ }
+ }
+ return r;
+ };
+
+
+ /**
+ * Returns `data` fields of all nodes in order.
+ * @return {Array<Value>}
+ */
+ SplayTree.prototype.values = function values () {
+ var current = this._root;
+ var s = [], r = [], done = false;
+
+ while (!done) {
+ if (current) {
+ s.push(current);
+ current = current.left;
+ } else {
+ if (s.length > 0) {
+ current = s.pop();
+ r.push(current.data);
+ current = current.right;
+ } else { done = true; }
+ }
+ }
+ return r;
+ };
+
+
+ /**
+ * Returns node at given index
+ * @param{number} index
+ * @return {?Node}
+ */
+ SplayTree.prototype.at = function at (index) {
+ // removed after a consideration, more misleading than useful
+ // index = index % this.size;
+ // if (index < 0) index = this.size - index;
+
+ var current = this._root;
+ var s = [], done = false, i = 0;
+
+ while (!done) {
+ if (current) {
+ s.push(current);
+ current = current.left;
+ } else {
+ if (s.length > 0) {
+ current = s.pop();
+ if (i === index) { return current; }
+ i++;
+ current = current.right;
+ } else { done = true; }
+ }
+ }
+ return null;
+ };
+
+ /**
+ * Bulk-load items. Both array have to be same size
+ * @param{Array<Key>} keys
+ * @param{Array<Value>}[values]
+ * @param{Boolean} [presort=false] Pre-sort keys and values, using
+ * tree's comparator. Sorting is done
+ * in-place
+ * @return {AVLTree}
+ */
+ SplayTree.prototype.load = function load (keys, values, presort) {
+ if ( keys === void 0 ) keys = [];
+ if ( values === void 0 ) values = [];
+ if ( presort === void 0 ) presort = false;
+
+ if (this._size !== 0) { throw new Error('bulk-load: tree is not empty'); }
+ var size = keys.length;
+ if (presort) { sort(keys, values, 0, size - 1, this._compare); }
+ this._root = loadRecursive(null, keys, values, 0, size);
+ this._size = size;
+ return this;
+ };
+
+
+ SplayTree.prototype.min = function min () {
+ var node = this.minNode(this._root);
+ if (node) { return node.key; }
+ else { return null; }
+ };
+
+
+ SplayTree.prototype.max = function max () {
+ var node = this.maxNode(this._root);
+ if (node) { return node.key; }
+ else { return null; }
+ };
+
+ SplayTree.prototype.isEmpty = function isEmpty () { return this._root === null; };
+ prototypeAccessors.size.get = function () { return this._size; };
+
+
+ /**
+ * Create a tree and load it with items
+ * @param{Array<Key>} keys
+ * @param{Array<Value>?} [values]
+
+ * @param{Function?} [comparator]
+ * @param{Boolean?} [presort=false] Pre-sort keys and values, using
+ * tree's comparator. Sorting is done
+ * in-place
+ * @param{Boolean?} [noDuplicates=false] Allow duplicates
+ * @return {SplayTree}
+ */
+ SplayTree.createTree = function createTree (keys, values, comparator, presort, noDuplicates) {
+ return new SplayTree(comparator, noDuplicates).load(keys, values, presort);
+ };
+
+ Object.defineProperties( SplayTree.prototype, prototypeAccessors );
+
+
+ function loadRecursive (parent, keys, values, start, end) {
+ var size = end - start;
+ if (size > 0) {
+ var middle = start + Math.floor(size / 2);
+ var key = keys[middle];
+ var data = values[middle];
+ var node = { key: key, data: data, parent: parent };
+ node.left = loadRecursive(node, keys, values, start, middle);
+ node.right = loadRecursive(node, keys, values, middle + 1, end);
+ return node;
+ }
+ return null;
+ }
+
+
+ function sort(keys, values, left, right, compare) {
+ if (left >= right) { return; }
+
+ var pivot = keys[(left + right) >> 1];
+ var i = left - 1;
+ var j = right + 1;
+
+ while (true) {
+ do { i++; } while (compare(keys[i], pivot) < 0);
+ do { j--; } while (compare(keys[j], pivot) > 0);
+ if (i >= j) { break; }
+
+ var tmp = keys[i];
+ keys[i] = keys[j];
+ keys[j] = tmp;
+
+ tmp = values[i];
+ values[i] = values[j];
+ values[j] = tmp;
+ }
+
+ sort(keys, values, left, j, compare);
+ sort(keys, values, j + 1, right, compare);
+ }
+
+ var NORMAL = 0;
+ var NON_CONTRIBUTING = 1;
+ var SAME_TRANSITION = 2;
+ var DIFFERENT_TRANSITION = 3;
+
+ var INTERSECTION = 0;
+ var UNION = 1;
+ var DIFFERENCE = 2;
+ var XOR = 3;
+
+ /**
+ * @param {SweepEvent} event
+ * @param {SweepEvent} prev
+ * @param {Operation} operation
+ */
+ function computeFields (event, prev, operation) {
+ // compute inOut and otherInOut fields
+ if (prev === null) {
+ event.inOut = false;
+ event.otherInOut = true;
+
+ // previous line segment in sweepline belongs to the same polygon
+ } else {
+ if (event.isSubject === prev.isSubject) {
+ event.inOut = !prev.inOut;
+ event.otherInOut = prev.otherInOut;
+
+ // previous line segment in sweepline belongs to the clipping polygon
+ } else {
+ event.inOut = !prev.otherInOut;
+ event.otherInOut = prev.isVertical() ? !prev.inOut : prev.inOut;
+ }
+
+ // compute prevInResult field
+ if (prev) {
+ event.prevInResult = (!inResult(prev, operation) || prev.isVertical())
+ ? prev.prevInResult : prev;
+ }
+ }
+
+ // check if the line segment belongs to the Boolean operation
+ event.inResult = inResult(event, operation);
+ }
+
+
+ /* eslint-disable indent */
+ function inResult(event, operation) {
+ switch (event.type) {
+ case NORMAL:
+ switch (operation) {
+ case INTERSECTION:
+ return !event.otherInOut;
+ case UNION:
+ return event.otherInOut;
+ case DIFFERENCE:
+ // return (event.isSubject && !event.otherInOut) ||
+ // (!event.isSubject && event.otherInOut);
+ return (event.isSubject && event.otherInOut) ||
+ (!event.isSubject && !event.otherInOut);
+ case XOR:
+ return true;
+ }
+ break;
+ case SAME_TRANSITION:
+ return operation === INTERSECTION || operation === UNION;
+ case DIFFERENT_TRANSITION:
+ return operation === DIFFERENCE;
+ case NON_CONTRIBUTING:
+ return false;
+ }
+ return false;
+ }
+ /* eslint-enable indent */
+
+ var SweepEvent = function SweepEvent (point, left, otherEvent, isSubject, edgeType) {
+
+ /**
+ * Is left endpoint?
+ * @type {Boolean}
+ */
+ this.left = left;
+
+ /**
+ * @type {Array.<Number>}
+ */
+ this.point = point;
+
+ /**
+ * Other edge reference
+ * @type {SweepEvent}
+ */
+ this.otherEvent = otherEvent;
+
+ /**
+ * Belongs to source or clipping polygon
+ * @type {Boolean}
+ */
+ this.isSubject = isSubject;
+
+ /**
+ * Edge contribution type
+ * @type {Number}
+ */
+ this.type = edgeType || NORMAL;
+
+
+ /**
+ * In-out transition for the sweepline crossing polygon
+ * @type {Boolean}
+ */
+ this.inOut = false;
+
+
+ /**
+ * @type {Boolean}
+ */
+ this.otherInOut = false;
+
+ /**
+ * Previous event in result?
+ * @type {SweepEvent}
+ */
+ this.prevInResult = null;
+
+ /**
+ * Does event belong to result?
+ * @type {Boolean}
+ */
+ this.inResult = false;
+
+
+ // connection step
+
+ /**
+ * @type {Boolean}
+ */
+ this.resultInOut = false;
+
+ this.isExteriorRing = true;
+ };
+
+
+ /**
+ * @param{Array.<Number>}p
+ * @return {Boolean}
+ */
+ SweepEvent.prototype.isBelow = function isBelow (p) {
+ var p0 = this.point, p1 = this.otherEvent.point;
+ return this.left
+ ? (p0[0] - p[0]) * (p1[1] - p[1]) - (p1[0] - p[0]) * (p0[1] - p[1]) > 0
+ // signedArea(this.point, this.otherEvent.point, p) > 0 :
+ : (p1[0] - p[0]) * (p0[1] - p[1]) - (p0[0] - p[0]) * (p1[1] - p[1]) > 0;
+ //signedArea(this.otherEvent.point, this.point, p) > 0;
+ };
+
+
+ /**
+ * @param{Array.<Number>}p
+ * @return {Boolean}
+ */
+ SweepEvent.prototype.isAbove = function isAbove (p) {
+ return !this.isBelow(p);
+ };
+
+
+ /**
+ * @return {Boolean}
+ */
+ SweepEvent.prototype.isVertical = function isVertical () {
+ return this.point[0] === this.otherEvent.point[0];
+ };
+
+
+ SweepEvent.prototype.clone = function clone () {
+ var copy = new SweepEvent(
+ this.point, this.left, this.otherEvent, this.isSubject, this.type);
+
+ copy.inResult = this.inResult;
+ copy.prevInResult = this.prevInResult;
+ copy.isExteriorRing = this.isExteriorRing;
+ copy.inOut = this.inOut;
+ copy.otherInOut = this.otherInOut;
+
+ return copy;
+ };
+
+ function equals(p1, p2) {
+ if (p1[0] === p2[0]) {
+ if (p1[1] === p2[1]) {
+ return true;
+ } else {
+ return false;
+ }
+ }
+ return false;
+ }
+
+ // const EPSILON = 1e-9;
+ // const abs = Math.abs;
+ // TODO https://github.com/w8r/martinez/issues/6#issuecomment-262847164
+ // Precision problem.
+ //
+ // module.exports = function equals(p1, p2) {
+ // return abs(p1[0] - p2[0]) <= EPSILON && abs(p1[1] - p2[1]) <= EPSILON;
+ // };
+
+ /**
+ * Signed area of the triangle (p0, p1, p2)
+ * @param {Array.<Number>} p0
+ * @param {Array.<Number>} p1
+ * @param {Array.<Number>} p2
+ * @return {Number}
+ */
+ function signedArea(p0, p1, p2) {
+ return (p0[0] - p2[0]) * (p1[1] - p2[1]) - (p1[0] - p2[0]) * (p0[1] - p2[1]);
+ }
+
+ /**
+ * @param {SweepEvent} e1
+ * @param {SweepEvent} e2
+ * @return {Number}
+ */
+ function compareEvents(e1, e2) {
+ var p1 = e1.point;
+ var p2 = e2.point;
+
+ // Different x-coordinate
+ if (p1[0] > p2[0]) { return 1; }
+ if (p1[0] < p2[0]) { return -1; }
+
+ // Different points, but same x-coordinate
+ // Event with lower y-coordinate is processed first
+ if (p1[1] !== p2[1]) { return p1[1] > p2[1] ? 1 : -1; }
+
+ return specialCases(e1, e2, p1, p2);
+ }
+
+
+ /* eslint-disable no-unused-vars */
+ function specialCases(e1, e2, p1, p2) {
+ // Same coordinates, but one is a left endpoint and the other is
+ // a right endpoint. The right endpoint is processed first
+ if (e1.left !== e2.left)
+ { return e1.left ? 1 : -1; }
+
+ // const p2 = e1.otherEvent.point, p3 = e2.otherEvent.point;
+ // const sa = (p1[0] - p3[0]) * (p2[1] - p3[1]) - (p2[0] - p3[0]) * (p1[1] - p3[1])
+ // Same coordinates, both events
+ // are left endpoints or right endpoints.
+ // not collinear
+ if (signedArea(p1, e1.otherEvent.point, e2.otherEvent.point) !== 0) {
+ // the event associate to the bottom segment is processed first
+ return (!e1.isBelow(e2.otherEvent.point)) ? 1 : -1;
+ }
+
+ return (!e1.isSubject && e2.isSubject) ? 1 : -1;
+ }
+ /* eslint-enable no-unused-vars */
+
+ /**
+ * @param {SweepEvent} se
+ * @param {Array.<Number>} p
+ * @param {Queue} queue
+ * @return {Queue}
+ */
+ function divideSegment(se, p, queue) {
+ var r = new SweepEvent(p, false, se, se.isSubject);
+ var l = new SweepEvent(p, true, se.otherEvent, se.isSubject);
+
+ /* eslint-disable no-console */
+ if (equals(se.point, se.otherEvent.point)) {
+
+ console.warn('what is that, a collapsed segment?', se);
+ }
+ /* eslint-enable no-console */
+
+ r.contourId = l.contourId = se.contourId;
+
+ // avoid a rounding error. The left event would be processed after the right event
+ if (compareEvents(l, se.otherEvent) > 0) {
+ se.otherEvent.left = true;
+ l.left = false;
+ }
+
+ // avoid a rounding error. The left event would be processed after the right event
+ // if (compareEvents(se, r) > 0) {}
+
+ se.otherEvent.otherEvent = l;
+ se.otherEvent = r;
+
+ queue.push(l);
+ queue.push(r);
+
+ return queue;
+ }
+
+ //const EPS = 1e-9;
+
+ /**
+ * Finds the magnitude of the cross product of two vectors (if we pretend
+ * they're in three dimensions)
+ *
+ * @param {Object} a First vector
+ * @param {Object} b Second vector
+ * @private
+ * @returns {Number} The magnitude of the cross product
+ */
+ function crossProduct(a, b) {
+ return (a[0] * b[1]) - (a[1] * b[0]);
+ }
+
+ /**
+ * Finds the dot product of two vectors.
+ *
+ * @param {Object} a First vector
+ * @param {Object} b Second vector
+ * @private
+ * @returns {Number} The dot product
+ */
+ function dotProduct(a, b) {
+ return (a[0] * b[0]) + (a[1] * b[1]);
+ }
+
+ /**
+ * Finds the intersection (if any) between two line segments a and b, given the
+ * line segments' end points a1, a2 and b1, b2.
+ *
+ * This algorithm is based on Schneider and Eberly.
+ * http://www.cimec.org.ar/~ncalvo/Schneider_Eberly.pdf
+ * Page 244.
+ *
+ * @param {Array.<Number>} a1 point of first line
+ * @param {Array.<Number>} a2 point of first line
+ * @param {Array.<Number>} b1 point of second line
+ * @param {Array.<Number>} b2 point of second line
+ * @param {Boolean=} noEndpointTouch whether to skip single touchpoints
+ * (meaning connected segments) as
+ * intersections
+ * @returns {Array.<Array.<Number>>|Null} If the lines intersect, the point of
+ * intersection. If they overlap, the two end points of the overlapping segment.
+ * Otherwise, null.
+ */
+ function intersection (a1, a2, b1, b2, noEndpointTouch) {
+ // The algorithm expects our lines in the form P + sd, where P is a point,
+ // s is on the interval [0, 1], and d is a vector.
+ // We are passed two points. P can be the first point of each pair. The
+ // vector, then, could be thought of as the distance (in x and y components)
+ // from the first point to the second point.
+ // So first, let's make our vectors:
+ var va = [a2[0] - a1[0], a2[1] - a1[1]];
+ var vb = [b2[0] - b1[0], b2[1] - b1[1]];
+ // We also define a function to convert back to regular point form:
+
+ /* eslint-disable arrow-body-style */
+
+ function toPoint(p, s, d) {
+ return [
+ p[0] + s * d[0],
+ p[1] + s * d[1]
+ ];
+ }
+
+ /* eslint-enable arrow-body-style */
+
+ // The rest is pretty much a straight port of the algorithm.
+ var e = [b1[0] - a1[0], b1[1] - a1[1]];
+ var kross = crossProduct(va, vb);
+ var sqrKross = kross * kross;
+ var sqrLenA = dotProduct(va, va);
+ //const sqrLenB = dotProduct(vb, vb);
+
+ // Check for line intersection. This works because of the properties of the
+ // cross product -- specifically, two vectors are parallel if and only if the
+ // cross product is the 0 vector. The full calculation involves relative error
+ // to account for possible very small line segments. See Schneider & Eberly
+ // for details.
+ if (sqrKross > 0/* EPS * sqrLenB * sqLenA */) {
+ // If they're not parallel, then (because these are line segments) they
+ // still might not actually intersect. This code checks that the
+ // intersection point of the lines is actually on both line segments.
+ var s = crossProduct(e, vb) / kross;
+ if (s < 0 || s > 1) {
+ // not on line segment a
+ return null;
+ }
+ var t = crossProduct(e, va) / kross;
+ if (t < 0 || t > 1) {
+ // not on line segment b
+ return null;
+ }
+ if (s === 0 || s === 1) {
+ // on an endpoint of line segment a
+ return noEndpointTouch ? null : [toPoint(a1, s, va)];
+ }
+ if (t === 0 || t === 1) {
+ // on an endpoint of line segment b
+ return noEndpointTouch ? null : [toPoint(b1, t, vb)];
+ }
+ return [toPoint(a1, s, va)];
+ }
+
+ // If we've reached this point, then the lines are either parallel or the
+ // same, but the segments could overlap partially or fully, or not at all.
+ // So we need to find the overlap, if any. To do that, we can use e, which is
+ // the (vector) difference between the two initial points. If this is parallel
+ // with the line itself, then the two lines are the same line, and there will
+ // be overlap.
+ //const sqrLenE = dotProduct(e, e);
+ kross = crossProduct(e, va);
+ sqrKross = kross * kross;
+
+ if (sqrKross > 0 /* EPS * sqLenB * sqLenE */) {
+ // Lines are just parallel, not the same. No overlap.
+ return null;
+ }
+
+ var sa = dotProduct(va, e) / sqrLenA;
+ var sb = sa + dotProduct(va, vb) / sqrLenA;
+ var smin = Math.min(sa, sb);
+ var smax = Math.max(sa, sb);
+
+ // this is, essentially, the FindIntersection acting on floats from
+ // Schneider & Eberly, just inlined into this function.
+ if (smin <= 1 && smax >= 0) {
+
+ // overlap on an end point
+ if (smin === 1) {
+ return noEndpointTouch ? null : [toPoint(a1, smin > 0 ? smin : 0, va)];
+ }
+
+ if (smax === 0) {
+ return noEndpointTouch ? null : [toPoint(a1, smax < 1 ? smax : 1, va)];
+ }
+
+ if (noEndpointTouch && smin === 0 && smax === 1) { return null; }
+
+ // There's overlap on a segment -- two points of intersection. Return both.
+ return [
+ toPoint(a1, smin > 0 ? smin : 0, va),
+ toPoint(a1, smax < 1 ? smax : 1, va)
+ ];
+ }
+
+ return null;
+ }
+
+ /**
+ * @param {SweepEvent} se1
+ * @param {SweepEvent} se2
+ * @param {Queue} queue
+ * @return {Number}
+ */
+ function possibleIntersection (se1, se2, queue) {
+ // that disallows self-intersecting polygons,
+ // did cost us half a day, so I'll leave it
+ // out of respect
+ // if (se1.isSubject === se2.isSubject) return;
+ var inter = intersection(
+ se1.point, se1.otherEvent.point,
+ se2.point, se2.otherEvent.point
+ );
+
+ var nintersections = inter ? inter.length : 0;
+ if (nintersections === 0) { return 0; } // no intersection
+
+ // the line segments intersect at an endpoint of both line segments
+ if ((nintersections === 1) &&
+ (equals(se1.point, se2.point) ||
+ equals(se1.otherEvent.point, se2.otherEvent.point))) {
+ return 0;
+ }
+
+ if (nintersections === 2 && se1.isSubject === se2.isSubject) {
+ // if(se1.contourId === se2.contourId){
+ // console.warn('Edges of the same polygon overlap',
+ // se1.point, se1.otherEvent.point, se2.point, se2.otherEvent.point);
+ // }
+ //throw new Error('Edges of the same polygon overlap');
+ return 0;
+ }
+
+ // The line segments associated to se1 and se2 intersect
+ if (nintersections === 1) {
+
+ // if the intersection point is not an endpoint of se1
+ if (!equals(se1.point, inter[0]) && !equals(se1.otherEvent.point, inter[0])) {
+ divideSegment(se1, inter[0], queue);
+ }
+
+ // if the intersection point is not an endpoint of se2
+ if (!equals(se2.point, inter[0]) && !equals(se2.otherEvent.point, inter[0])) {
+ divideSegment(se2, inter[0], queue);
+ }
+ return 1;
+ }
+
+ // The line segments associated to se1 and se2 overlap
+ var events = [];
+ var leftCoincide = false;
+ var rightCoincide = false;
+
+ if (equals(se1.point, se2.point)) {
+ leftCoincide = true; // linked
+ } else if (compareEvents(se1, se2) === 1) {
+ events.push(se2, se1);
+ } else {
+ events.push(se1, se2);
+ }
+
+ if (equals(se1.otherEvent.point, se2.otherEvent.point)) {
+ rightCoincide = true;
+ } else if (compareEvents(se1.otherEvent, se2.otherEvent) === 1) {
+ events.push(se2.otherEvent, se1.otherEvent);
+ } else {
+ events.push(se1.otherEvent, se2.otherEvent);
+ }
+
+ if ((leftCoincide && rightCoincide) || leftCoincide) {
+ // both line segments are equal or share the left endpoint
+ se2.type = NON_CONTRIBUTING;
+ se1.type = (se2.inOut === se1.inOut)
+ ? SAME_TRANSITION : DIFFERENT_TRANSITION;
+
+ if (leftCoincide && !rightCoincide) {
+ // honestly no idea, but changing events selection from [2, 1]
+ // to [0, 1] fixes the overlapping self-intersecting polygons issue
+ divideSegment(events[1].otherEvent, events[0].point, queue);
+ }
+ return 2;
+ }
+
+ // the line segments share the right endpoint
+ if (rightCoincide) {
+ divideSegment(events[0], events[1].point, queue);
+ return 3;
+ }
+
+ // no line segment includes totally the other one
+ if (events[0] !== events[3].otherEvent) {
+ divideSegment(events[0], events[1].point, queue);
+ divideSegment(events[1], events[2].point, queue);
+ return 3;
+ }
+
+ // one line segment includes the other one
+ divideSegment(events[0], events[1].point, queue);
+ divideSegment(events[3].otherEvent, events[2].point, queue);
+
+ return 3;
+ }
+
+ /**
+ * @param {SweepEvent} le1
+ * @param {SweepEvent} le2
+ * @return {Number}
+ */
+ function compareSegments(le1, le2) {
+ if (le1 === le2) { return 0; }
+
+ // Segments are not collinear
+ if (signedArea(le1.point, le1.otherEvent.point, le2.point) !== 0 ||
+ signedArea(le1.point, le1.otherEvent.point, le2.otherEvent.point) !== 0) {
+
+ // If they share their left endpoint use the right endpoint to sort
+ if (equals(le1.point, le2.point)) { return le1.isBelow(le2.otherEvent.point) ? -1 : 1; }
+
+ // Different left endpoint: use the left endpoint to sort
+ if (le1.point[0] === le2.point[0]) { return le1.point[1] < le2.point[1] ? -1 : 1; }
+
+ // has the line segment associated to e1 been inserted
+ // into S after the line segment associated to e2 ?
+ if (compareEvents(le1, le2) === 1) { return le2.isAbove(le1.point) ? -1 : 1; }
+
+ // The line segment associated to e2 has been inserted
+ // into S after the line segment associated to e1
+ return le1.isBelow(le2.point) ? -1 : 1;
+ }
+
+ if (le1.isSubject === le2.isSubject) { // same polygon
+ var p1 = le1.point, p2 = le2.point;
+ if (p1[0] === p2[0] && p1[1] === p2[1]/*equals(le1.point, le2.point)*/) {
+ p1 = le1.otherEvent.point; p2 = le2.otherEvent.point;
+ if (p1[0] === p2[0] && p1[1] === p2[1]) { return 0; }
+ else { return le1.contourId > le2.contourId ? 1 : -1; }
+ }
+ } else { // Segments are collinear, but belong to separate polygons
+ return le1.isSubject ? -1 : 1;
+ }
+
+ return compareEvents(le1, le2) === 1 ? 1 : -1;
+ }
+
+ function subdivide(eventQueue, subject, clipping, sbbox, cbbox, operation) {
+ var sweepLine = new SplayTree(compareSegments);
+ var sortedEvents = [];
+
+ var rightbound = Math.min(sbbox[2], cbbox[2]);
+
+ var prev, next, begin;
+
+ while (eventQueue.length !== 0) {
+ var event = eventQueue.pop();
+ sortedEvents.push(event);
+
+ // optimization by bboxes for intersection and difference goes here
+ if ((operation === INTERSECTION && event.point[0] > rightbound) ||
+ (operation === DIFFERENCE && event.point[0] > sbbox[2])) {
+ break;
+ }
+
+ if (event.left) {
+ next = prev = sweepLine.insert(event);
+ begin = sweepLine.minNode();
+
+ if (prev !== begin) { prev = sweepLine.prev(prev); }
+ else { prev = null; }
+
+ next = sweepLine.next(next);
+
+ var prevEvent = prev ? prev.key : null;
+ var prevprevEvent = (void 0);
+ computeFields(event, prevEvent, operation);
+ if (next) {
+ if (possibleIntersection(event, next.key, eventQueue) === 2) {
+ computeFields(event, prevEvent, operation);
+ computeFields(event, next.key, operation);
+ }
+ }
+
+ if (prev) {
+ if (possibleIntersection(prev.key, event, eventQueue) === 2) {
+ var prevprev = prev;
+ if (prevprev !== begin) { prevprev = sweepLine.prev(prevprev); }
+ else { prevprev = null; }
+
+ prevprevEvent = prevprev ? prevprev.key : null;
+ computeFields(prevEvent, prevprevEvent, operation);
+ computeFields(event, prevEvent, operation);
+ }
+ }
+ } else {
+ event = event.otherEvent;
+ next = prev = sweepLine.find(event);
+
+ if (prev && next) {
+
+ if (prev !== begin) { prev = sweepLine.prev(prev); }
+ else { prev = null; }
+
+ next = sweepLine.next(next);
+ sweepLine.remove(event);
+
+ if (next && prev) {
+ possibleIntersection(prev.key, next.key, eventQueue);
+ }
+ }
+ }
+ }
+ return sortedEvents;
+ }
+
+ /**
+ * @param {Array.<SweepEvent>} sortedEvents
+ * @return {Array.<SweepEvent>}
+ */
+ function orderEvents(sortedEvents) {
+ var event, i, len, tmp;
+ var resultEvents = [];
+ for (i = 0, len = sortedEvents.length; i < len; i++) {
+ event = sortedEvents[i];
+ if ((event.left && event.inResult) ||
+ (!event.left && event.otherEvent.inResult)) {
+ resultEvents.push(event);
+ }
+ }
+ // Due to overlapping edges the resultEvents array can be not wholly sorted
+ var sorted = false;
+ while (!sorted) {
+ sorted = true;
+ for (i = 0, len = resultEvents.length; i < len; i++) {
+ if ((i + 1) < len &&
+ compareEvents(resultEvents[i], resultEvents[i + 1]) === 1) {
+ tmp = resultEvents[i];
+ resultEvents[i] = resultEvents[i + 1];
+ resultEvents[i + 1] = tmp;
+ sorted = false;
+ }
+ }
+ }
+
+
+ for (i = 0, len = resultEvents.length; i < len; i++) {
+ event = resultEvents[i];
+ event.pos = i;
+ }
+
+ // imagine, the right event is found in the beginning of the queue,
+ // when his left counterpart is not marked yet
+ for (i = 0, len = resultEvents.length; i < len; i++) {
+ event = resultEvents[i];
+ if (!event.left) {
+ tmp = event.pos;
+ event.pos = event.otherEvent.pos;
+ event.otherEvent.pos = tmp;
+ }
+ }
+
+ return resultEvents;
+ }
+
+
+ /**
+ * @param {Number} pos
+ * @param {Array.<SweepEvent>} resultEvents
+ * @param {Object>} processed
+ * @return {Number}
+ */
+ function nextPos(pos, resultEvents, processed, origIndex) {
+ var p, p1;
+ var newPos = pos + 1;
+ var length = resultEvents.length;
+
+ p = resultEvents[pos].point;
+
+ if (newPos < length)
+ { p1 = resultEvents[newPos].point; }
+
+
+ // while in range and not the current one by value
+ while (newPos < length && p1[0] === p[0] && p1[1] === p[1]) {
+ if (!processed[newPos]) {
+ return newPos;
+ } else {
+ newPos++;
+ }
+ p1 = resultEvents[newPos].point;
+ }
+
+ newPos = pos - 1;
+
+ while (processed[newPos] && newPos >= origIndex) {
+ newPos--;
+ }
+ return newPos;
+ }
+
+
+ /**
+ * @param {Array.<SweepEvent>} sortedEvents
+ * @return {Array.<*>} polygons
+ */
+ function connectEdges(sortedEvents, operation) {
+ var i, len;
+ var resultEvents = orderEvents(sortedEvents);
+
+ // "false"-filled array
+ var processed = {};
+ var result = [];
+ var event;
+
+ for (i = 0, len = resultEvents.length; i < len; i++) {
+ if (processed[i]) { continue; }
+ var contour = [[]];
+
+ if (!resultEvents[i].isExteriorRing) {
+ if (operation === DIFFERENCE && !resultEvents[i].isSubject && result.length === 0) {
+ result.push(contour);
+ } else if (result.length === 0) {
+ result.push([[contour]]);
+ } else {
+ result[result.length - 1].push(contour[0]);
+ }
+ } else if (operation === DIFFERENCE && !resultEvents[i].isSubject && result.length > 1) {
+ result[result.length - 1].push(contour[0]);
+ } else {
+ result.push(contour);
+ }
+
+ var ringId = result.length - 1;
+ var pos = i;
+
+ var initial = resultEvents[i].point;
+ contour[0].push(initial);
+
+ while (pos >= i) {
+ event = resultEvents[pos];
+ processed[pos] = true;
+
+ if (event.left) {
+ event.resultInOut = false;
+ event.contourId = ringId;
+ } else {
+ event.otherEvent.resultInOut = true;
+ event.otherEvent.contourId = ringId;
+ }
+
+ pos = event.pos;
+ processed[pos] = true;
+ contour[0].push(resultEvents[pos].point);
+ pos = nextPos(pos, resultEvents, processed, i);
+ }
+
+ pos = pos === -1 ? i : pos;
+
+ event = resultEvents[pos];
+ processed[pos] = processed[event.pos] = true;
+ event.otherEvent.resultInOut = true;
+ event.otherEvent.contourId = ringId;
+ }
+
+ // Handle if the result is a polygon (eg not multipoly)
+ // Commented it again, let's see what do we mean by that
+ // if (result.length === 1) result = result[0];
+ return result;
+ }
+
+ var tinyqueue = TinyQueue;
+ var default_1 = TinyQueue;
+
+ function TinyQueue(data, compare) {
+ var this$1 = this;
+
+ if (!(this instanceof TinyQueue)) { return new TinyQueue(data, compare); }
+
+ this.data = data || [];
+ this.length = this.data.length;
+ this.compare = compare || defaultCompare;
+
+ if (this.length > 0) {
+ for (var i = (this.length >> 1) - 1; i >= 0; i--) { this$1._down(i); }
+ }
+ }
+
+ function defaultCompare(a, b) {
+ return a < b ? -1 : a > b ? 1 : 0;
+ }
+
+ TinyQueue.prototype = {
+
+ push: function (item) {
+ this.data.push(item);
+ this.length++;
+ this._up(this.length - 1);
+ },
+
+ pop: function () {
+ if (this.length === 0) { return undefined; }
+
+ var top = this.data[0];
+ this.length--;
+
+ if (this.length > 0) {
+ this.data[0] = this.data[this.length];
+ this._down(0);
+ }
+ this.data.pop();
+
+ return top;
+ },
+
+ peek: function () {
+ return this.data[0];
+ },
+
+ _up: function (pos) {
+ var data = this.data;
+ var compare = this.compare;
+ var item = data[pos];
+
+ while (pos > 0) {
+ var parent = (pos - 1) >> 1;
+ var current = data[parent];
+ if (compare(item, current) >= 0) { break; }
+ data[pos] = current;
+ pos = parent;
+ }
+
+ data[pos] = item;
+ },
+
+ _down: function (pos) {
+ var this$1 = this;
+
+ var data = this.data;
+ var compare = this.compare;
+ var halfLength = this.length >> 1;
+ var item = data[pos];
+
+ while (pos < halfLength) {
+ var left = (pos << 1) + 1;
+ var right = left + 1;
+ var best = data[left];
+
+ if (right < this$1.length && compare(data[right], best) < 0) {
+ left = right;
+ best = data[right];
+ }
+ if (compare(best, item) >= 0) { break; }
+
+ data[pos] = best;
+ pos = left;
+ }
+
+ data[pos] = item;
+ }
+ };
+ tinyqueue.default = default_1;
+
+ var max = Math.max;
+ var min = Math.min;
+
+ var contourId = 0;
+
+
+ function processPolygon(contourOrHole, isSubject, depth, Q, bbox, isExteriorRing) {
+ var i, len, s1, s2, e1, e2;
+ for (i = 0, len = contourOrHole.length - 1; i < len; i++) {
+ s1 = contourOrHole[i];
+ s2 = contourOrHole[i + 1];
+ e1 = new SweepEvent(s1, false, undefined, isSubject);
+ e2 = new SweepEvent(s2, false, e1, isSubject);
+ e1.otherEvent = e2;
+
+ if (s1[0] === s2[0] && s1[1] === s2[1]) {
+ continue; // skip collapsed edges, or it breaks
+ }
+
+ e1.contourId = e2.contourId = depth;
+ if (!isExteriorRing) {
+ e1.isExteriorRing = false;
+ e2.isExteriorRing = false;
+ }
+ if (compareEvents(e1, e2) > 0) {
+ e2.left = true;
+ } else {
+ e1.left = true;
+ }
+
+ var x = s1[0], y = s1[1];
+ bbox[0] = min(bbox[0], x);
+ bbox[1] = min(bbox[1], y);
+ bbox[2] = max(bbox[2], x);
+ bbox[3] = max(bbox[3], y);
+
+ // Pushing it so the queue is sorted from left to right,
+ // with object on the left having the highest priority.
+ Q.push(e1);
+ Q.push(e2);
+ }
+ }
+
+
+ function fillQueue(subject, clipping, sbbox, cbbox, operation) {
+ var eventQueue = new tinyqueue(null, compareEvents);
+ var polygonSet, isExteriorRing, i, ii, j, jj; //, k, kk;
+
+ for (i = 0, ii = subject.length; i < ii; i++) {
+ polygonSet = subject[i];
+ for (j = 0, jj = polygonSet.length; j < jj; j++) {
+ isExteriorRing = j === 0;
+ if (isExteriorRing) { contourId++; }
+ processPolygon(polygonSet[j], true, contourId, eventQueue, sbbox, isExteriorRing);
+ }
+ }
+
+ for (i = 0, ii = clipping.length; i < ii; i++) {
+ polygonSet = clipping[i];
+ for (j = 0, jj = polygonSet.length; j < jj; j++) {
+ isExteriorRing = j === 0;
+ if (operation === DIFFERENCE) { isExteriorRing = false; }
+ if (isExteriorRing) { contourId++; }
+ processPolygon(polygonSet[j], false, contourId, eventQueue, cbbox, isExteriorRing);
+ }
+ }
+
+ return eventQueue;
+ }
+
+ var EMPTY = [];
+
+
+ function trivialOperation(subject, clipping, operation) {
+ var result = null;
+ if (subject.length * clipping.length === 0) {
+ if (operation === INTERSECTION) {
+ result = EMPTY;
+ } else if (operation === DIFFERENCE) {
+ result = subject;
+ } else if (operation === UNION ||
+ operation === XOR) {
+ result = (subject.length === 0) ? clipping : subject;
+ }
+ }
+ return result;
+ }
+
+
+ function compareBBoxes(subject, clipping, sbbox, cbbox, operation) {
+ var result = null;
+ if (sbbox[0] > cbbox[2] ||
+ cbbox[0] > sbbox[2] ||
+ sbbox[1] > cbbox[3] ||
+ cbbox[1] > sbbox[3]) {
+ if (operation === INTERSECTION) {
+ result = EMPTY;
+ } else if (operation === DIFFERENCE) {
+ result = subject;
+ } else if (operation === UNION ||
+ operation === XOR) {
+ result = subject.concat(clipping);
+ }
+ }
+ return result;
+ }
+
+
+ function boolean(subject, clipping, operation) {
+ if (typeof subject[0][0][0] === 'number') {
+ subject = [subject];
+ }
+ if (typeof clipping[0][0][0] === 'number') {
+ clipping = [clipping];
+ }
+ var trivial = trivialOperation(subject, clipping, operation);
+ if (trivial) {
+ return trivial === EMPTY ? null : trivial;
+ }
+ var sbbox = [Infinity, Infinity, -Infinity, -Infinity];
+ var cbbox = [Infinity, Infinity, -Infinity, -Infinity];
+
+ //console.time('fill queue');
+ var eventQueue = fillQueue(subject, clipping, sbbox, cbbox, operation);
+ //console.timeEnd('fill queue');
+
+ trivial = compareBBoxes(subject, clipping, sbbox, cbbox, operation);
+ if (trivial) {
+ return trivial === EMPTY ? null : trivial;
+ }
+ //console.time('subdivide edges');
+ var sortedEvents = subdivide(eventQueue, subject, clipping, sbbox, cbbox, operation);
+ //console.timeEnd('subdivide edges');
+
+ //console.time('connect vertices');
+ var result = connectEdges(sortedEvents, operation);
+ //console.timeEnd('connect vertices');
+ return result;
+ }
+
+ function union (subject, clipping) {
+ return boolean(subject, clipping, UNION);
+ }
+
+ function diff (subject, clipping) {
+ return boolean(subject, clipping, DIFFERENCE);
+ }
+
+ function xor (subject, clipping){
+ return boolean(subject, clipping, XOR);
+ }
+
+ function intersection$1 (subject, clipping) {
+ return boolean(subject, clipping, INTERSECTION);
+ }
+
+ /**
+ * @enum {Number}
+ */
+ var operations = { UNION: UNION, DIFFERENCE: DIFFERENCE, INTERSECTION: INTERSECTION, XOR: XOR };
+
+ exports.union = union;
+ exports.diff = diff;
+ exports.xor = xor;
+ exports.intersection = intersection$1;
+ exports.operations = operations;
+
+ Object.defineProperty(exports, '__esModule', { value: true });
+
+})));
+
+
+},{}],23:[function(require,module,exports){
(function (process){
// Copyright Joyent, Inc. and other Node contributors.
//
}).call(this,require('_process'))
-},{"_process":6}],23:[function(require,module,exports){
+},{"_process":6}],24:[function(require,module,exports){
'use strict';
module.exports = Pbf;
return pos;
}
-},{"ieee754":17}],24:[function(require,module,exports){
+},{"ieee754":17}],25:[function(require,module,exports){
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
typeof define === 'function' && define.amd ? define(factory) :
})));
-},{}],25:[function(require,module,exports){
+},{}],26:[function(require,module,exports){
'use strict';
module.exports = rbush;
}
}
-},{"quickselect":24}],26:[function(require,module,exports){
+},{"quickselect":25}],27:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var Observable_1 = require("./internal/Observable");
var config_1 = require("./internal/config");
exports.config = config_1.config;
-},{"./internal/AsyncSubject":27,"./internal/BehaviorSubject":28,"./internal/Notification":30,"./internal/Observable":31,"./internal/ReplaySubject":34,"./internal/Scheduler":35,"./internal/Subject":36,"./internal/Subscriber":38,"./internal/Subscription":39,"./internal/config":40,"./internal/observable/ConnectableObservable":41,"./internal/observable/bindCallback":43,"./internal/observable/bindNodeCallback":44,"./internal/observable/combineLatest":45,"./internal/observable/concat":46,"./internal/observable/defer":47,"./internal/observable/empty":48,"./internal/observable/forkJoin":49,"./internal/observable/from":50,"./internal/observable/fromEvent":52,"./internal/observable/fromEventPattern":53,"./internal/observable/generate":57,"./internal/observable/iif":58,"./internal/observable/interval":59,"./internal/observable/merge":60,"./internal/observable/never":61,"./internal/observable/of":62,"./internal/observable/onErrorResumeNext":63,"./internal/observable/pairs":64,"./internal/observable/race":65,"./internal/observable/range":66,"./internal/observable/throwError":68,"./internal/observable/timer":69,"./internal/observable/using":70,"./internal/observable/zip":71,"./internal/operators/groupBy":107,"./internal/scheduler/VirtualTimeScheduler":184,"./internal/scheduler/animationFrame":185,"./internal/scheduler/asap":186,"./internal/scheduler/async":187,"./internal/scheduler/queue":188,"./internal/symbol/observable":190,"./internal/util/ArgumentOutOfRangeError":192,"./internal/util/EmptyError":193,"./internal/util/ObjectUnsubscribedError":195,"./internal/util/TimeoutError":196,"./internal/util/UnsubscriptionError":197,"./internal/util/identity":201,"./internal/util/isObservable":210,"./internal/util/noop":213,"./internal/util/pipe":215}],27:[function(require,module,exports){
+},{"./internal/AsyncSubject":28,"./internal/BehaviorSubject":29,"./internal/Notification":31,"./internal/Observable":32,"./internal/ReplaySubject":35,"./internal/Scheduler":36,"./internal/Subject":37,"./internal/Subscriber":39,"./internal/Subscription":40,"./internal/config":41,"./internal/observable/ConnectableObservable":42,"./internal/observable/bindCallback":44,"./internal/observable/bindNodeCallback":45,"./internal/observable/combineLatest":46,"./internal/observable/concat":47,"./internal/observable/defer":48,"./internal/observable/empty":49,"./internal/observable/forkJoin":50,"./internal/observable/from":51,"./internal/observable/fromEvent":53,"./internal/observable/fromEventPattern":54,"./internal/observable/generate":58,"./internal/observable/iif":59,"./internal/observable/interval":60,"./internal/observable/merge":61,"./internal/observable/never":62,"./internal/observable/of":63,"./internal/observable/onErrorResumeNext":64,"./internal/observable/pairs":65,"./internal/observable/race":66,"./internal/observable/range":67,"./internal/observable/throwError":69,"./internal/observable/timer":70,"./internal/observable/using":71,"./internal/observable/zip":72,"./internal/operators/groupBy":108,"./internal/scheduler/VirtualTimeScheduler":185,"./internal/scheduler/animationFrame":186,"./internal/scheduler/asap":187,"./internal/scheduler/async":188,"./internal/scheduler/queue":189,"./internal/symbol/observable":191,"./internal/util/ArgumentOutOfRangeError":193,"./internal/util/EmptyError":194,"./internal/util/ObjectUnsubscribedError":196,"./internal/util/TimeoutError":197,"./internal/util/UnsubscriptionError":198,"./internal/util/identity":202,"./internal/util/isObservable":211,"./internal/util/noop":214,"./internal/util/pipe":216}],28:[function(require,module,exports){
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
}(Subject_1.Subject));
exports.AsyncSubject = AsyncSubject;
-},{"./Subject":36,"./Subscription":39}],28:[function(require,module,exports){
+},{"./Subject":37,"./Subscription":40}],29:[function(require,module,exports){
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
}(Subject_1.Subject));
exports.BehaviorSubject = BehaviorSubject;
-},{"./Subject":36,"./util/ObjectUnsubscribedError":195}],29:[function(require,module,exports){
+},{"./Subject":37,"./util/ObjectUnsubscribedError":196}],30:[function(require,module,exports){
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
}(Subscriber_1.Subscriber));
exports.InnerSubscriber = InnerSubscriber;
-},{"./Subscriber":38}],30:[function(require,module,exports){
+},{"./Subscriber":39}],31:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var empty_1 = require("./observable/empty");
}());
exports.Notification = Notification;
-},{"./observable/empty":48,"./observable/of":62,"./observable/throwError":68}],31:[function(require,module,exports){
+},{"./observable/empty":49,"./observable/of":63,"./observable/throwError":69}],32:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var canReportError_1 = require("./util/canReportError");
return promiseCtor;
}
-},{"../internal/symbol/observable":190,"./config":40,"./util/canReportError":198,"./util/pipe":215,"./util/toSubscriber":222}],32:[function(require,module,exports){
+},{"../internal/symbol/observable":191,"./config":41,"./util/canReportError":199,"./util/pipe":216,"./util/toSubscriber":223}],33:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var config_1 = require("./config");
complete: function () { }
};
-},{"./config":40,"./util/hostReportError":200}],33:[function(require,module,exports){
+},{"./config":41,"./util/hostReportError":201}],34:[function(require,module,exports){
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
}(Subscriber_1.Subscriber));
exports.OuterSubscriber = OuterSubscriber;
-},{"./Subscriber":38}],34:[function(require,module,exports){
+},{"./Subscriber":39}],35:[function(require,module,exports){
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
return ReplayEvent;
}());
-},{"./Subject":36,"./SubjectSubscription":37,"./Subscription":39,"./operators/observeOn":122,"./scheduler/queue":188,"./util/ObjectUnsubscribedError":195}],35:[function(require,module,exports){
+},{"./Subject":37,"./SubjectSubscription":38,"./Subscription":40,"./operators/observeOn":123,"./scheduler/queue":189,"./util/ObjectUnsubscribedError":196}],36:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var Scheduler = (function () {
}());
exports.Scheduler = Scheduler;
-},{}],36:[function(require,module,exports){
+},{}],37:[function(require,module,exports){
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
}(Subject));
exports.AnonymousSubject = AnonymousSubject;
-},{"../internal/symbol/rxSubscriber":191,"./Observable":31,"./SubjectSubscription":37,"./Subscriber":38,"./Subscription":39,"./util/ObjectUnsubscribedError":195}],37:[function(require,module,exports){
+},{"../internal/symbol/rxSubscriber":192,"./Observable":32,"./SubjectSubscription":38,"./Subscriber":39,"./Subscription":40,"./util/ObjectUnsubscribedError":196}],38:[function(require,module,exports){
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
}(Subscription_1.Subscription));
exports.SubjectSubscription = SubjectSubscription;
-},{"./Subscription":39}],38:[function(require,module,exports){
+},{"./Subscription":40}],39:[function(require,module,exports){
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
}(Subscriber));
exports.SafeSubscriber = SafeSubscriber;
-},{"../internal/symbol/rxSubscriber":191,"./Observer":32,"./Subscription":39,"./config":40,"./util/hostReportError":200,"./util/isFunction":205}],39:[function(require,module,exports){
+},{"../internal/symbol/rxSubscriber":192,"./Observer":33,"./Subscription":40,"./config":41,"./util/hostReportError":201,"./util/isFunction":206}],40:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var isArray_1 = require("./util/isArray");
return errors.reduce(function (errs, err) { return errs.concat((err instanceof UnsubscriptionError_1.UnsubscriptionError) ? err.errors : err); }, []);
}
-},{"./util/UnsubscriptionError":197,"./util/errorObject":199,"./util/isArray":202,"./util/isFunction":205,"./util/isObject":209,"./util/tryCatch":223}],40:[function(require,module,exports){
+},{"./util/UnsubscriptionError":198,"./util/errorObject":200,"./util/isArray":203,"./util/isFunction":206,"./util/isObject":210,"./util/tryCatch":224}],41:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var _enable_super_gross_mode_that_will_cause_bad_things = false;
},
};
-},{}],41:[function(require,module,exports){
+},{}],42:[function(require,module,exports){
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
return RefCountSubscriber;
}(Subscriber_1.Subscriber));
-},{"../Observable":31,"../Subject":36,"../Subscriber":38,"../Subscription":39,"../operators/refCount":133}],42:[function(require,module,exports){
+},{"../Observable":32,"../Subject":37,"../Subscriber":39,"../Subscription":40,"../operators/refCount":134}],43:[function(require,module,exports){
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
}(Observable_1.Observable));
exports.SubscribeOnObservable = SubscribeOnObservable;
-},{"../Observable":31,"../scheduler/asap":186,"../util/isNumeric":208}],43:[function(require,module,exports){
+},{"../Observable":32,"../scheduler/asap":187,"../util/isNumeric":209}],44:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var Observable_1 = require("../Observable");
subject.error(err);
}
-},{"../AsyncSubject":27,"../Observable":31,"../operators/map":111,"../util/canReportError":198,"../util/isArray":202,"../util/isScheduler":212}],44:[function(require,module,exports){
+},{"../AsyncSubject":28,"../Observable":32,"../operators/map":112,"../util/canReportError":199,"../util/isArray":203,"../util/isScheduler":213}],45:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var Observable_1 = require("../Observable");
subject.error(err);
}
-},{"../AsyncSubject":27,"../Observable":31,"../operators/map":111,"../util/canReportError":198,"../util/isArray":202,"../util/isScheduler":212}],45:[function(require,module,exports){
+},{"../AsyncSubject":28,"../Observable":32,"../operators/map":112,"../util/canReportError":199,"../util/isArray":203,"../util/isScheduler":213}],46:[function(require,module,exports){
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
}(OuterSubscriber_1.OuterSubscriber));
exports.CombineLatestSubscriber = CombineLatestSubscriber;
-},{"../OuterSubscriber":33,"../util/isArray":202,"../util/isScheduler":212,"../util/subscribeToResult":221,"./fromArray":51}],46:[function(require,module,exports){
+},{"../OuterSubscriber":34,"../util/isArray":203,"../util/isScheduler":213,"../util/subscribeToResult":222,"./fromArray":52}],47:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var isScheduler_1 = require("../util/isScheduler");
}
exports.concat = concat;
-},{"../operators/concatAll":83,"../util/isScheduler":212,"./from":50,"./of":62}],47:[function(require,module,exports){
+},{"../operators/concatAll":84,"../util/isScheduler":213,"./from":51,"./of":63}],48:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var Observable_1 = require("../Observable");
}
exports.defer = defer;
-},{"../Observable":31,"./empty":48,"./from":50}],48:[function(require,module,exports){
+},{"../Observable":32,"./empty":49,"./from":51}],49:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var Observable_1 = require("../Observable");
}
exports.emptyScheduled = emptyScheduled;
-},{"../Observable":31}],49:[function(require,module,exports){
+},{"../Observable":32}],50:[function(require,module,exports){
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
return ForkJoinSubscriber;
}(OuterSubscriber_1.OuterSubscriber));
-},{"../Observable":31,"../OuterSubscriber":33,"../operators/map":111,"../util/isArray":202,"../util/subscribeToResult":221,"./empty":48}],50:[function(require,module,exports){
+},{"../Observable":32,"../OuterSubscriber":34,"../operators/map":112,"../util/isArray":203,"../util/subscribeToResult":222,"./empty":49}],51:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var Observable_1 = require("../Observable");
}
exports.from = from;
-},{"../Observable":31,"../util/isArrayLike":203,"../util/isInteropObservable":206,"../util/isIterable":207,"../util/isPromise":211,"../util/subscribeTo":216,"./fromArray":51,"./fromIterable":54,"./fromObservable":55,"./fromPromise":56}],51:[function(require,module,exports){
+},{"../Observable":32,"../util/isArrayLike":204,"../util/isInteropObservable":207,"../util/isIterable":208,"../util/isPromise":212,"../util/subscribeTo":217,"./fromArray":52,"./fromIterable":55,"./fromObservable":56,"./fromPromise":57}],52:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var Observable_1 = require("../Observable");
}
exports.fromArray = fromArray;
-},{"../Observable":31,"../Subscription":39,"../util/subscribeToArray":217}],52:[function(require,module,exports){
+},{"../Observable":32,"../Subscription":40,"../util/subscribeToArray":218}],53:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var Observable_1 = require("../Observable");
return sourceObj && typeof sourceObj.addEventListener === 'function' && typeof sourceObj.removeEventListener === 'function';
}
-},{"../Observable":31,"../operators/map":111,"../util/isArray":202,"../util/isFunction":205}],53:[function(require,module,exports){
+},{"../Observable":32,"../operators/map":112,"../util/isArray":203,"../util/isFunction":206}],54:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var Observable_1 = require("../Observable");
}
exports.fromEventPattern = fromEventPattern;
-},{"../Observable":31,"../operators/map":111,"../util/isArray":202,"../util/isFunction":205}],54:[function(require,module,exports){
+},{"../Observable":32,"../operators/map":112,"../util/isArray":203,"../util/isFunction":206}],55:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var Observable_1 = require("../Observable");
}
exports.fromIterable = fromIterable;
-},{"../Observable":31,"../Subscription":39,"../symbol/iterator":189,"../util/subscribeToIterable":218}],55:[function(require,module,exports){
+},{"../Observable":32,"../Subscription":40,"../symbol/iterator":190,"../util/subscribeToIterable":219}],56:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var Observable_1 = require("../Observable");
}
exports.fromObservable = fromObservable;
-},{"../Observable":31,"../Subscription":39,"../symbol/observable":190,"../util/subscribeToObservable":219}],56:[function(require,module,exports){
+},{"../Observable":32,"../Subscription":40,"../symbol/observable":191,"../util/subscribeToObservable":220}],57:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var Observable_1 = require("../Observable");
}
exports.fromPromise = fromPromise;
-},{"../Observable":31,"../Subscription":39,"../util/subscribeToPromise":220}],57:[function(require,module,exports){
+},{"../Observable":32,"../Subscription":40,"../util/subscribeToPromise":221}],58:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var Observable_1 = require("../Observable");
return this.schedule(state);
}
-},{"../Observable":31,"../util/identity":201,"../util/isScheduler":212}],58:[function(require,module,exports){
+},{"../Observable":32,"../util/identity":202,"../util/isScheduler":213}],59:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var defer_1 = require("./defer");
}
exports.iif = iif;
-},{"./defer":47,"./empty":48}],59:[function(require,module,exports){
+},{"./defer":48,"./empty":49}],60:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var Observable_1 = require("../Observable");
this.schedule({ subscriber: subscriber, counter: counter + 1, period: period }, period);
}
-},{"../Observable":31,"../scheduler/async":187,"../util/isNumeric":208}],60:[function(require,module,exports){
+},{"../Observable":32,"../scheduler/async":188,"../util/isNumeric":209}],61:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var Observable_1 = require("../Observable");
}
exports.merge = merge;
-},{"../Observable":31,"../operators/mergeAll":116,"../util/isScheduler":212,"./fromArray":51}],61:[function(require,module,exports){
+},{"../Observable":32,"../operators/mergeAll":117,"../util/isScheduler":213,"./fromArray":52}],62:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var Observable_1 = require("../Observable");
}
exports.never = never;
-},{"../Observable":31,"../util/noop":213}],62:[function(require,module,exports){
+},{"../Observable":32,"../util/noop":214}],63:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var isScheduler_1 = require("../util/isScheduler");
}
exports.of = of;
-},{"../util/isScheduler":212,"./empty":48,"./fromArray":51,"./scalar":67}],63:[function(require,module,exports){
+},{"../util/isScheduler":213,"./empty":49,"./fromArray":52,"./scalar":68}],64:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var Observable_1 = require("../Observable");
}
exports.onErrorResumeNext = onErrorResumeNext;
-},{"../Observable":31,"../util/isArray":202,"./empty":48,"./from":50}],64:[function(require,module,exports){
+},{"../Observable":32,"../util/isArray":203,"./empty":49,"./from":51}],65:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var Observable_1 = require("../Observable");
}
exports.dispatch = dispatch;
-},{"../Observable":31,"../Subscription":39}],65:[function(require,module,exports){
+},{"../Observable":32,"../Subscription":40}],66:[function(require,module,exports){
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
}(OuterSubscriber_1.OuterSubscriber));
exports.RaceSubscriber = RaceSubscriber;
-},{"../OuterSubscriber":33,"../util/isArray":202,"../util/subscribeToResult":221,"./fromArray":51}],66:[function(require,module,exports){
+},{"../OuterSubscriber":34,"../util/isArray":203,"../util/subscribeToResult":222,"./fromArray":52}],67:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var Observable_1 = require("../Observable");
}
exports.dispatch = dispatch;
-},{"../Observable":31}],67:[function(require,module,exports){
+},{"../Observable":32}],68:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var Observable_1 = require("../Observable");
}
exports.scalar = scalar;
-},{"../Observable":31}],68:[function(require,module,exports){
+},{"../Observable":32}],69:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var Observable_1 = require("../Observable");
subscriber.error(error);
}
-},{"../Observable":31}],69:[function(require,module,exports){
+},{"../Observable":32}],70:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var Observable_1 = require("../Observable");
this.schedule(state, period);
}
-},{"../Observable":31,"../scheduler/async":187,"../util/isNumeric":208,"../util/isScheduler":212}],70:[function(require,module,exports){
+},{"../Observable":32,"../scheduler/async":188,"../util/isNumeric":209,"../util/isScheduler":213}],71:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var Observable_1 = require("../Observable");
}
exports.using = using;
-},{"../Observable":31,"./empty":48,"./from":50}],71:[function(require,module,exports){
+},{"../Observable":32,"./empty":49,"./from":51}],72:[function(require,module,exports){
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
return ZipBufferIterator;
}(OuterSubscriber_1.OuterSubscriber));
-},{"../../internal/symbol/iterator":189,"../OuterSubscriber":33,"../Subscriber":38,"../util/isArray":202,"../util/subscribeToResult":221,"./fromArray":51}],72:[function(require,module,exports){
+},{"../../internal/symbol/iterator":190,"../OuterSubscriber":34,"../Subscriber":39,"../util/isArray":203,"../util/subscribeToResult":222,"./fromArray":52}],73:[function(require,module,exports){
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
return AuditSubscriber;
}(OuterSubscriber_1.OuterSubscriber));
-},{"../OuterSubscriber":33,"../util/errorObject":199,"../util/subscribeToResult":221,"../util/tryCatch":223}],73:[function(require,module,exports){
+},{"../OuterSubscriber":34,"../util/errorObject":200,"../util/subscribeToResult":222,"../util/tryCatch":224}],74:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var async_1 = require("../scheduler/async");
}
exports.auditTime = auditTime;
-},{"../observable/timer":69,"../scheduler/async":187,"./audit":72}],74:[function(require,module,exports){
+},{"../observable/timer":70,"../scheduler/async":188,"./audit":73}],75:[function(require,module,exports){
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
return BufferSubscriber;
}(OuterSubscriber_1.OuterSubscriber));
-},{"../OuterSubscriber":33,"../util/subscribeToResult":221}],75:[function(require,module,exports){
+},{"../OuterSubscriber":34,"../util/subscribeToResult":222}],76:[function(require,module,exports){
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
return BufferSkipCountSubscriber;
}(Subscriber_1.Subscriber));
-},{"../Subscriber":38}],76:[function(require,module,exports){
+},{"../Subscriber":39}],77:[function(require,module,exports){
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
subscriber.closeContext(context);
}
-},{"../Subscriber":38,"../scheduler/async":187,"../util/isScheduler":212}],77:[function(require,module,exports){
+},{"../Subscriber":39,"../scheduler/async":188,"../util/isScheduler":213}],78:[function(require,module,exports){
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
return BufferToggleSubscriber;
}(OuterSubscriber_1.OuterSubscriber));
-},{"../OuterSubscriber":33,"../Subscription":39,"../util/subscribeToResult":221}],78:[function(require,module,exports){
+},{"../OuterSubscriber":34,"../Subscription":40,"../util/subscribeToResult":222}],79:[function(require,module,exports){
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
return BufferWhenSubscriber;
}(OuterSubscriber_1.OuterSubscriber));
-},{"../OuterSubscriber":33,"../Subscription":39,"../util/errorObject":199,"../util/subscribeToResult":221,"../util/tryCatch":223}],79:[function(require,module,exports){
+},{"../OuterSubscriber":34,"../Subscription":40,"../util/errorObject":200,"../util/subscribeToResult":222,"../util/tryCatch":224}],80:[function(require,module,exports){
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
return CatchSubscriber;
}(OuterSubscriber_1.OuterSubscriber));
-},{"../InnerSubscriber":29,"../OuterSubscriber":33,"../util/subscribeToResult":221}],80:[function(require,module,exports){
+},{"../InnerSubscriber":30,"../OuterSubscriber":34,"../util/subscribeToResult":222}],81:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var combineLatest_1 = require("../observable/combineLatest");
}
exports.combineAll = combineAll;
-},{"../observable/combineLatest":45}],81:[function(require,module,exports){
+},{"../observable/combineLatest":46}],82:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var isArray_1 = require("../util/isArray");
}
exports.combineLatest = combineLatest;
-},{"../observable/combineLatest":45,"../observable/from":50,"../util/isArray":202}],82:[function(require,module,exports){
+},{"../observable/combineLatest":46,"../observable/from":51,"../util/isArray":203}],83:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var concat_1 = require("../observable/concat");
}
exports.concat = concat;
-},{"../observable/concat":46}],83:[function(require,module,exports){
+},{"../observable/concat":47}],84:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var mergeAll_1 = require("./mergeAll");
}
exports.concatAll = concatAll;
-},{"./mergeAll":116}],84:[function(require,module,exports){
+},{"./mergeAll":117}],85:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var mergeMap_1 = require("./mergeMap");
}
exports.concatMap = concatMap;
-},{"./mergeMap":117}],85:[function(require,module,exports){
+},{"./mergeMap":118}],86:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var concatMap_1 = require("./concatMap");
}
exports.concatMapTo = concatMapTo;
-},{"./concatMap":84}],86:[function(require,module,exports){
+},{"./concatMap":85}],87:[function(require,module,exports){
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
return CountSubscriber;
}(Subscriber_1.Subscriber));
-},{"../Subscriber":38}],87:[function(require,module,exports){
+},{"../Subscriber":39}],88:[function(require,module,exports){
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
return DebounceSubscriber;
}(OuterSubscriber_1.OuterSubscriber));
-},{"../OuterSubscriber":33,"../util/subscribeToResult":221}],88:[function(require,module,exports){
+},{"../OuterSubscriber":34,"../util/subscribeToResult":222}],89:[function(require,module,exports){
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
subscriber.debouncedNext();
}
-},{"../Subscriber":38,"../scheduler/async":187}],89:[function(require,module,exports){
+},{"../Subscriber":39,"../scheduler/async":188}],90:[function(require,module,exports){
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
return DefaultIfEmptySubscriber;
}(Subscriber_1.Subscriber));
-},{"../Subscriber":38}],90:[function(require,module,exports){
+},{"../Subscriber":39}],91:[function(require,module,exports){
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
return DelayMessage;
}());
-},{"../Notification":30,"../Subscriber":38,"../scheduler/async":187,"../util/isDate":204}],91:[function(require,module,exports){
+},{"../Notification":31,"../Subscriber":39,"../scheduler/async":188,"../util/isDate":205}],92:[function(require,module,exports){
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
return SubscriptionDelaySubscriber;
}(Subscriber_1.Subscriber));
-},{"../Observable":31,"../OuterSubscriber":33,"../Subscriber":38,"../util/subscribeToResult":221}],92:[function(require,module,exports){
+},{"../Observable":32,"../OuterSubscriber":34,"../Subscriber":39,"../util/subscribeToResult":222}],93:[function(require,module,exports){
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
return DeMaterializeSubscriber;
}(Subscriber_1.Subscriber));
-},{"../Subscriber":38}],93:[function(require,module,exports){
+},{"../Subscriber":39}],94:[function(require,module,exports){
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
}(OuterSubscriber_1.OuterSubscriber));
exports.DistinctSubscriber = DistinctSubscriber;
-},{"../OuterSubscriber":33,"../util/subscribeToResult":221}],94:[function(require,module,exports){
+},{"../OuterSubscriber":34,"../util/subscribeToResult":222}],95:[function(require,module,exports){
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
return DistinctUntilChangedSubscriber;
}(Subscriber_1.Subscriber));
-},{"../Subscriber":38,"../util/errorObject":199,"../util/tryCatch":223}],95:[function(require,module,exports){
+},{"../Subscriber":39,"../util/errorObject":200,"../util/tryCatch":224}],96:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var distinctUntilChanged_1 = require("./distinctUntilChanged");
}
exports.distinctUntilKeyChanged = distinctUntilKeyChanged;
-},{"./distinctUntilChanged":94}],96:[function(require,module,exports){
+},{"./distinctUntilChanged":95}],97:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var ArgumentOutOfRangeError_1 = require("../util/ArgumentOutOfRangeError");
}
exports.elementAt = elementAt;
-},{"../util/ArgumentOutOfRangeError":192,"./defaultIfEmpty":89,"./filter":102,"./take":154,"./throwIfEmpty":161}],97:[function(require,module,exports){
+},{"../util/ArgumentOutOfRangeError":193,"./defaultIfEmpty":90,"./filter":103,"./take":155,"./throwIfEmpty":162}],98:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var fromArray_1 = require("../observable/fromArray");
}
exports.endWith = endWith;
-},{"../observable/concat":46,"../observable/empty":48,"../observable/fromArray":51,"../observable/scalar":67,"../util/isScheduler":212}],98:[function(require,module,exports){
+},{"../observable/concat":47,"../observable/empty":49,"../observable/fromArray":52,"../observable/scalar":68,"../util/isScheduler":213}],99:[function(require,module,exports){
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
return EverySubscriber;
}(Subscriber_1.Subscriber));
-},{"../Subscriber":38}],99:[function(require,module,exports){
+},{"../Subscriber":39}],100:[function(require,module,exports){
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
return SwitchFirstSubscriber;
}(OuterSubscriber_1.OuterSubscriber));
-},{"../OuterSubscriber":33,"../util/subscribeToResult":221}],100:[function(require,module,exports){
+},{"../OuterSubscriber":34,"../util/subscribeToResult":222}],101:[function(require,module,exports){
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
return ExhaustMapSubscriber;
}(OuterSubscriber_1.OuterSubscriber));
-},{"../InnerSubscriber":29,"../OuterSubscriber":33,"../observable/from":50,"../util/subscribeToResult":221,"./map":111}],101:[function(require,module,exports){
+},{"../InnerSubscriber":30,"../OuterSubscriber":34,"../observable/from":51,"../util/subscribeToResult":222,"./map":112}],102:[function(require,module,exports){
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
}(OuterSubscriber_1.OuterSubscriber));
exports.ExpandSubscriber = ExpandSubscriber;
-},{"../OuterSubscriber":33,"../util/errorObject":199,"../util/subscribeToResult":221,"../util/tryCatch":223}],102:[function(require,module,exports){
+},{"../OuterSubscriber":34,"../util/errorObject":200,"../util/subscribeToResult":222,"../util/tryCatch":224}],103:[function(require,module,exports){
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
return FilterSubscriber;
}(Subscriber_1.Subscriber));
-},{"../Subscriber":38}],103:[function(require,module,exports){
+},{"../Subscriber":39}],104:[function(require,module,exports){
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
return FinallySubscriber;
}(Subscriber_1.Subscriber));
-},{"../Subscriber":38,"../Subscription":39}],104:[function(require,module,exports){
+},{"../Subscriber":39,"../Subscription":40}],105:[function(require,module,exports){
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
}(Subscriber_1.Subscriber));
exports.FindValueSubscriber = FindValueSubscriber;
-},{"../Subscriber":38}],105:[function(require,module,exports){
+},{"../Subscriber":39}],106:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var find_1 = require("../operators/find");
}
exports.findIndex = findIndex;
-},{"../operators/find":104}],106:[function(require,module,exports){
+},{"../operators/find":105}],107:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var EmptyError_1 = require("../util/EmptyError");
}
exports.first = first;
-},{"../util/EmptyError":193,"../util/identity":201,"./defaultIfEmpty":89,"./filter":102,"./take":154,"./throwIfEmpty":161}],107:[function(require,module,exports){
+},{"../util/EmptyError":194,"../util/identity":202,"./defaultIfEmpty":90,"./filter":103,"./take":155,"./throwIfEmpty":162}],108:[function(require,module,exports){
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
return InnerRefCountSubscription;
}(Subscription_1.Subscription));
-},{"../Observable":31,"../Subject":36,"../Subscriber":38,"../Subscription":39}],108:[function(require,module,exports){
+},{"../Observable":32,"../Subject":37,"../Subscriber":39,"../Subscription":40}],109:[function(require,module,exports){
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
return IgnoreElementsSubscriber;
}(Subscriber_1.Subscriber));
-},{"../Subscriber":38}],109:[function(require,module,exports){
+},{"../Subscriber":39}],110:[function(require,module,exports){
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
return IsEmptySubscriber;
}(Subscriber_1.Subscriber));
-},{"../Subscriber":38}],110:[function(require,module,exports){
+},{"../Subscriber":39}],111:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var EmptyError_1 = require("../util/EmptyError");
}
exports.last = last;
-},{"../util/EmptyError":193,"../util/identity":201,"./defaultIfEmpty":89,"./filter":102,"./takeLast":155,"./throwIfEmpty":161}],111:[function(require,module,exports){
+},{"../util/EmptyError":194,"../util/identity":202,"./defaultIfEmpty":90,"./filter":103,"./takeLast":156,"./throwIfEmpty":162}],112:[function(require,module,exports){
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
return MapSubscriber;
}(Subscriber_1.Subscriber));
-},{"../Subscriber":38}],112:[function(require,module,exports){
+},{"../Subscriber":39}],113:[function(require,module,exports){
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
return MapToSubscriber;
}(Subscriber_1.Subscriber));
-},{"../Subscriber":38}],113:[function(require,module,exports){
+},{"../Subscriber":39}],114:[function(require,module,exports){
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
return MaterializeSubscriber;
}(Subscriber_1.Subscriber));
-},{"../Notification":30,"../Subscriber":38}],114:[function(require,module,exports){
+},{"../Notification":31,"../Subscriber":39}],115:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var reduce_1 = require("./reduce");
}
exports.max = max;
-},{"./reduce":132}],115:[function(require,module,exports){
+},{"./reduce":133}],116:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var merge_1 = require("../observable/merge");
}
exports.merge = merge;
-},{"../observable/merge":60}],116:[function(require,module,exports){
+},{"../observable/merge":61}],117:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var mergeMap_1 = require("./mergeMap");
}
exports.mergeAll = mergeAll;
-},{"../util/identity":201,"./mergeMap":117}],117:[function(require,module,exports){
+},{"../util/identity":202,"./mergeMap":118}],118:[function(require,module,exports){
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
}(OuterSubscriber_1.OuterSubscriber));
exports.MergeMapSubscriber = MergeMapSubscriber;
-},{"../InnerSubscriber":29,"../OuterSubscriber":33,"../observable/from":50,"../util/subscribeToResult":221,"./map":111}],118:[function(require,module,exports){
+},{"../InnerSubscriber":30,"../OuterSubscriber":34,"../observable/from":51,"../util/subscribeToResult":222,"./map":112}],119:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var mergeMap_1 = require("./mergeMap");
}
exports.mergeMapTo = mergeMapTo;
-},{"./mergeMap":117}],119:[function(require,module,exports){
+},{"./mergeMap":118}],120:[function(require,module,exports){
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
}(OuterSubscriber_1.OuterSubscriber));
exports.MergeScanSubscriber = MergeScanSubscriber;
-},{"../InnerSubscriber":29,"../OuterSubscriber":33,"../util/errorObject":199,"../util/subscribeToResult":221,"../util/tryCatch":223}],120:[function(require,module,exports){
+},{"../InnerSubscriber":30,"../OuterSubscriber":34,"../util/errorObject":200,"../util/subscribeToResult":222,"../util/tryCatch":224}],121:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var reduce_1 = require("./reduce");
}
exports.min = min;
-},{"./reduce":132}],121:[function(require,module,exports){
+},{"./reduce":133}],122:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var ConnectableObservable_1 = require("../observable/ConnectableObservable");
}());
exports.MulticastOperator = MulticastOperator;
-},{"../observable/ConnectableObservable":41}],122:[function(require,module,exports){
+},{"../observable/ConnectableObservable":42}],123:[function(require,module,exports){
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
}());
exports.ObserveOnMessage = ObserveOnMessage;
-},{"../Notification":30,"../Subscriber":38}],123:[function(require,module,exports){
+},{"../Notification":31,"../Subscriber":39}],124:[function(require,module,exports){
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
return OnErrorResumeNextSubscriber;
}(OuterSubscriber_1.OuterSubscriber));
-},{"../InnerSubscriber":29,"../OuterSubscriber":33,"../observable/from":50,"../util/isArray":202,"../util/subscribeToResult":221}],124:[function(require,module,exports){
+},{"../InnerSubscriber":30,"../OuterSubscriber":34,"../observable/from":51,"../util/isArray":203,"../util/subscribeToResult":222}],125:[function(require,module,exports){
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
return PairwiseSubscriber;
}(Subscriber_1.Subscriber));
-},{"../Subscriber":38}],125:[function(require,module,exports){
+},{"../Subscriber":39}],126:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var not_1 = require("../util/not");
}
exports.partition = partition;
-},{"../util/not":214,"./filter":102}],126:[function(require,module,exports){
+},{"../util/not":215,"./filter":103}],127:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var map_1 = require("./map");
return mapper;
}
-},{"./map":111}],127:[function(require,module,exports){
+},{"./map":112}],128:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var Subject_1 = require("../Subject");
}
exports.publish = publish;
-},{"../Subject":36,"./multicast":121}],128:[function(require,module,exports){
+},{"../Subject":37,"./multicast":122}],129:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var BehaviorSubject_1 = require("../BehaviorSubject");
}
exports.publishBehavior = publishBehavior;
-},{"../BehaviorSubject":28,"./multicast":121}],129:[function(require,module,exports){
+},{"../BehaviorSubject":29,"./multicast":122}],130:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var AsyncSubject_1 = require("../AsyncSubject");
}
exports.publishLast = publishLast;
-},{"../AsyncSubject":27,"./multicast":121}],130:[function(require,module,exports){
+},{"../AsyncSubject":28,"./multicast":122}],131:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var ReplaySubject_1 = require("../ReplaySubject");
}
exports.publishReplay = publishReplay;
-},{"../ReplaySubject":34,"./multicast":121}],131:[function(require,module,exports){
+},{"../ReplaySubject":35,"./multicast":122}],132:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var isArray_1 = require("../util/isArray");
}
exports.race = race;
-},{"../observable/race":65,"../util/isArray":202}],132:[function(require,module,exports){
+},{"../observable/race":66,"../util/isArray":203}],133:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var scan_1 = require("./scan");
}
exports.reduce = reduce;
-},{"../util/pipe":215,"./defaultIfEmpty":89,"./scan":140,"./takeLast":155}],133:[function(require,module,exports){
+},{"../util/pipe":216,"./defaultIfEmpty":90,"./scan":141,"./takeLast":156}],134:[function(require,module,exports){
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
return RefCountSubscriber;
}(Subscriber_1.Subscriber));
-},{"../Subscriber":38}],134:[function(require,module,exports){
+},{"../Subscriber":39}],135:[function(require,module,exports){
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
return RepeatSubscriber;
}(Subscriber_1.Subscriber));
-},{"../Subscriber":38,"../observable/empty":48}],135:[function(require,module,exports){
+},{"../Subscriber":39,"../observable/empty":49}],136:[function(require,module,exports){
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
return RepeatWhenSubscriber;
}(OuterSubscriber_1.OuterSubscriber));
-},{"../OuterSubscriber":33,"../Subject":36,"../util/errorObject":199,"../util/subscribeToResult":221,"../util/tryCatch":223}],136:[function(require,module,exports){
+},{"../OuterSubscriber":34,"../Subject":37,"../util/errorObject":200,"../util/subscribeToResult":222,"../util/tryCatch":224}],137:[function(require,module,exports){
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
return RetrySubscriber;
}(Subscriber_1.Subscriber));
-},{"../Subscriber":38}],137:[function(require,module,exports){
+},{"../Subscriber":39}],138:[function(require,module,exports){
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
return RetryWhenSubscriber;
}(OuterSubscriber_1.OuterSubscriber));
-},{"../OuterSubscriber":33,"../Subject":36,"../util/errorObject":199,"../util/subscribeToResult":221,"../util/tryCatch":223}],138:[function(require,module,exports){
+},{"../OuterSubscriber":34,"../Subject":37,"../util/errorObject":200,"../util/subscribeToResult":222,"../util/tryCatch":224}],139:[function(require,module,exports){
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
return SampleSubscriber;
}(OuterSubscriber_1.OuterSubscriber));
-},{"../OuterSubscriber":33,"../util/subscribeToResult":221}],139:[function(require,module,exports){
+},{"../OuterSubscriber":34,"../util/subscribeToResult":222}],140:[function(require,module,exports){
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
this.schedule(state, period);
}
-},{"../Subscriber":38,"../scheduler/async":187}],140:[function(require,module,exports){
+},{"../Subscriber":39,"../scheduler/async":188}],141:[function(require,module,exports){
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
return ScanSubscriber;
}(Subscriber_1.Subscriber));
-},{"../Subscriber":38}],141:[function(require,module,exports){
+},{"../Subscriber":39}],142:[function(require,module,exports){
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
return SequenceEqualCompareToSubscriber;
}(Subscriber_1.Subscriber));
-},{"../Subscriber":38,"../util/errorObject":199,"../util/tryCatch":223}],142:[function(require,module,exports){
+},{"../Subscriber":39,"../util/errorObject":200,"../util/tryCatch":224}],143:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var multicast_1 = require("./multicast");
}
exports.share = share;
-},{"../Subject":36,"./multicast":121,"./refCount":133}],143:[function(require,module,exports){
+},{"../Subject":37,"./multicast":122,"./refCount":134}],144:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var ReplaySubject_1 = require("../ReplaySubject");
};
}
-},{"../ReplaySubject":34}],144:[function(require,module,exports){
+},{"../ReplaySubject":35}],145:[function(require,module,exports){
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
return SingleSubscriber;
}(Subscriber_1.Subscriber));
-},{"../Subscriber":38,"../util/EmptyError":193}],145:[function(require,module,exports){
+},{"../Subscriber":39,"../util/EmptyError":194}],146:[function(require,module,exports){
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
return SkipSubscriber;
}(Subscriber_1.Subscriber));
-},{"../Subscriber":38}],146:[function(require,module,exports){
+},{"../Subscriber":39}],147:[function(require,module,exports){
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
return SkipLastSubscriber;
}(Subscriber_1.Subscriber));
-},{"../Subscriber":38,"../util/ArgumentOutOfRangeError":192}],147:[function(require,module,exports){
+},{"../Subscriber":39,"../util/ArgumentOutOfRangeError":193}],148:[function(require,module,exports){
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
return SkipUntilSubscriber;
}(OuterSubscriber_1.OuterSubscriber));
-},{"../InnerSubscriber":29,"../OuterSubscriber":33,"../util/subscribeToResult":221}],148:[function(require,module,exports){
+},{"../InnerSubscriber":30,"../OuterSubscriber":34,"../util/subscribeToResult":222}],149:[function(require,module,exports){
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
return SkipWhileSubscriber;
}(Subscriber_1.Subscriber));
-},{"../Subscriber":38}],149:[function(require,module,exports){
+},{"../Subscriber":39}],150:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var fromArray_1 = require("../observable/fromArray");
}
exports.startWith = startWith;
-},{"../observable/concat":46,"../observable/empty":48,"../observable/fromArray":51,"../observable/scalar":67,"../util/isScheduler":212}],150:[function(require,module,exports){
+},{"../observable/concat":47,"../observable/empty":49,"../observable/fromArray":52,"../observable/scalar":68,"../util/isScheduler":213}],151:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var SubscribeOnObservable_1 = require("../observable/SubscribeOnObservable");
return SubscribeOnOperator;
}());
-},{"../observable/SubscribeOnObservable":42}],151:[function(require,module,exports){
+},{"../observable/SubscribeOnObservable":43}],152:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var switchMap_1 = require("./switchMap");
}
exports.switchAll = switchAll;
-},{"../util/identity":201,"./switchMap":152}],152:[function(require,module,exports){
+},{"../util/identity":202,"./switchMap":153}],153:[function(require,module,exports){
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
return SwitchMapSubscriber;
}(OuterSubscriber_1.OuterSubscriber));
-},{"../InnerSubscriber":29,"../OuterSubscriber":33,"../observable/from":50,"../util/subscribeToResult":221,"./map":111}],153:[function(require,module,exports){
+},{"../InnerSubscriber":30,"../OuterSubscriber":34,"../observable/from":51,"../util/subscribeToResult":222,"./map":112}],154:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var switchMap_1 = require("./switchMap");
}
exports.switchMapTo = switchMapTo;
-},{"./switchMap":152}],154:[function(require,module,exports){
+},{"./switchMap":153}],155:[function(require,module,exports){
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
return TakeSubscriber;
}(Subscriber_1.Subscriber));
-},{"../Subscriber":38,"../observable/empty":48,"../util/ArgumentOutOfRangeError":192}],155:[function(require,module,exports){
+},{"../Subscriber":39,"../observable/empty":49,"../util/ArgumentOutOfRangeError":193}],156:[function(require,module,exports){
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
return TakeLastSubscriber;
}(Subscriber_1.Subscriber));
-},{"../Subscriber":38,"../observable/empty":48,"../util/ArgumentOutOfRangeError":192}],156:[function(require,module,exports){
+},{"../Subscriber":39,"../observable/empty":49,"../util/ArgumentOutOfRangeError":193}],157:[function(require,module,exports){
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
return TakeUntilSubscriber;
}(OuterSubscriber_1.OuterSubscriber));
-},{"../OuterSubscriber":33,"../util/subscribeToResult":221}],157:[function(require,module,exports){
+},{"../OuterSubscriber":34,"../util/subscribeToResult":222}],158:[function(require,module,exports){
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
return TakeWhileSubscriber;
}(Subscriber_1.Subscriber));
-},{"../Subscriber":38}],158:[function(require,module,exports){
+},{"../Subscriber":39}],159:[function(require,module,exports){
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
return TapSubscriber;
}(Subscriber_1.Subscriber));
-},{"../Subscriber":38,"../util/isFunction":205,"../util/noop":213}],159:[function(require,module,exports){
+},{"../Subscriber":39,"../util/isFunction":206,"../util/noop":214}],160:[function(require,module,exports){
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
return ThrottleSubscriber;
}(OuterSubscriber_1.OuterSubscriber));
-},{"../OuterSubscriber":33,"../util/subscribeToResult":221}],160:[function(require,module,exports){
+},{"../OuterSubscriber":34,"../util/subscribeToResult":222}],161:[function(require,module,exports){
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
subscriber.clearThrottle();
}
-},{"../Subscriber":38,"../scheduler/async":187,"./throttle":159}],161:[function(require,module,exports){
+},{"../Subscriber":39,"../scheduler/async":188,"./throttle":160}],162:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var tap_1 = require("./tap");
return new EmptyError_1.EmptyError();
}
-},{"../util/EmptyError":193,"./tap":158}],162:[function(require,module,exports){
+},{"../util/EmptyError":194,"./tap":159}],163:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var async_1 = require("../scheduler/async");
}());
exports.TimeInterval = TimeInterval;
-},{"../observable/defer":47,"../scheduler/async":187,"./map":111,"./scan":140}],163:[function(require,module,exports){
+},{"../observable/defer":48,"../scheduler/async":188,"./map":112,"./scan":141}],164:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var async_1 = require("../scheduler/async");
}
exports.timeout = timeout;
-},{"../observable/throwError":68,"../scheduler/async":187,"../util/TimeoutError":196,"./timeoutWith":164}],164:[function(require,module,exports){
+},{"../observable/throwError":69,"../scheduler/async":188,"../util/TimeoutError":197,"./timeoutWith":165}],165:[function(require,module,exports){
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
return TimeoutWithSubscriber;
}(OuterSubscriber_1.OuterSubscriber));
-},{"../OuterSubscriber":33,"../scheduler/async":187,"../util/isDate":204,"../util/subscribeToResult":221}],165:[function(require,module,exports){
+},{"../OuterSubscriber":34,"../scheduler/async":188,"../util/isDate":205,"../util/subscribeToResult":222}],166:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var async_1 = require("../scheduler/async");
}());
exports.Timestamp = Timestamp;
-},{"../scheduler/async":187,"./map":111}],166:[function(require,module,exports){
+},{"../scheduler/async":188,"./map":112}],167:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var reduce_1 = require("./reduce");
}
exports.toArray = toArray;
-},{"./reduce":132}],167:[function(require,module,exports){
+},{"./reduce":133}],168:[function(require,module,exports){
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
return WindowSubscriber;
}(OuterSubscriber_1.OuterSubscriber));
-},{"../OuterSubscriber":33,"../Subject":36,"../util/subscribeToResult":221}],168:[function(require,module,exports){
+},{"../OuterSubscriber":34,"../Subject":37,"../util/subscribeToResult":222}],169:[function(require,module,exports){
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
return WindowCountSubscriber;
}(Subscriber_1.Subscriber));
-},{"../Subject":36,"../Subscriber":38}],169:[function(require,module,exports){
+},{"../Subject":37,"../Subscriber":39}],170:[function(require,module,exports){
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
subscriber.closeWindow(window);
}
-},{"../Subject":36,"../Subscriber":38,"../scheduler/async":187,"../util/isNumeric":208,"../util/isScheduler":212}],170:[function(require,module,exports){
+},{"../Subject":37,"../Subscriber":39,"../scheduler/async":188,"../util/isNumeric":209,"../util/isScheduler":213}],171:[function(require,module,exports){
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
return WindowToggleSubscriber;
}(OuterSubscriber_1.OuterSubscriber));
-},{"../OuterSubscriber":33,"../Subject":36,"../Subscription":39,"../util/errorObject":199,"../util/subscribeToResult":221,"../util/tryCatch":223}],171:[function(require,module,exports){
+},{"../OuterSubscriber":34,"../Subject":37,"../Subscription":40,"../util/errorObject":200,"../util/subscribeToResult":222,"../util/tryCatch":224}],172:[function(require,module,exports){
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
return WindowSubscriber;
}(OuterSubscriber_1.OuterSubscriber));
-},{"../OuterSubscriber":33,"../Subject":36,"../util/errorObject":199,"../util/subscribeToResult":221,"../util/tryCatch":223}],172:[function(require,module,exports){
+},{"../OuterSubscriber":34,"../Subject":37,"../util/errorObject":200,"../util/subscribeToResult":222,"../util/tryCatch":224}],173:[function(require,module,exports){
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
return WithLatestFromSubscriber;
}(OuterSubscriber_1.OuterSubscriber));
-},{"../OuterSubscriber":33,"../util/subscribeToResult":221}],173:[function(require,module,exports){
+},{"../OuterSubscriber":34,"../util/subscribeToResult":222}],174:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var zip_1 = require("../observable/zip");
}
exports.zip = zip;
-},{"../observable/zip":71}],174:[function(require,module,exports){
+},{"../observable/zip":72}],175:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var zip_1 = require("../observable/zip");
}
exports.zipAll = zipAll;
-},{"../observable/zip":71}],175:[function(require,module,exports){
+},{"../observable/zip":72}],176:[function(require,module,exports){
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
}(Subscription_1.Subscription));
exports.Action = Action;
-},{"../Subscription":39}],176:[function(require,module,exports){
+},{"../Subscription":40}],177:[function(require,module,exports){
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
}(AsyncAction_1.AsyncAction));
exports.AnimationFrameAction = AnimationFrameAction;
-},{"./AsyncAction":180}],177:[function(require,module,exports){
+},{"./AsyncAction":181}],178:[function(require,module,exports){
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
}(AsyncScheduler_1.AsyncScheduler));
exports.AnimationFrameScheduler = AnimationFrameScheduler;
-},{"./AsyncScheduler":181}],178:[function(require,module,exports){
+},{"./AsyncScheduler":182}],179:[function(require,module,exports){
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
}(AsyncAction_1.AsyncAction));
exports.AsapAction = AsapAction;
-},{"../util/Immediate":194,"./AsyncAction":180}],179:[function(require,module,exports){
+},{"../util/Immediate":195,"./AsyncAction":181}],180:[function(require,module,exports){
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
}(AsyncScheduler_1.AsyncScheduler));
exports.AsapScheduler = AsapScheduler;
-},{"./AsyncScheduler":181}],180:[function(require,module,exports){
+},{"./AsyncScheduler":182}],181:[function(require,module,exports){
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
}(Action_1.Action));
exports.AsyncAction = AsyncAction;
-},{"./Action":175}],181:[function(require,module,exports){
+},{"./Action":176}],182:[function(require,module,exports){
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
}(Scheduler_1.Scheduler));
exports.AsyncScheduler = AsyncScheduler;
-},{"../Scheduler":35}],182:[function(require,module,exports){
+},{"../Scheduler":36}],183:[function(require,module,exports){
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
}(AsyncAction_1.AsyncAction));
exports.QueueAction = QueueAction;
-},{"./AsyncAction":180}],183:[function(require,module,exports){
+},{"./AsyncAction":181}],184:[function(require,module,exports){
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
}(AsyncScheduler_1.AsyncScheduler));
exports.QueueScheduler = QueueScheduler;
-},{"./AsyncScheduler":181}],184:[function(require,module,exports){
+},{"./AsyncScheduler":182}],185:[function(require,module,exports){
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
}(AsyncAction_1.AsyncAction));
exports.VirtualAction = VirtualAction;
-},{"./AsyncAction":180,"./AsyncScheduler":181}],185:[function(require,module,exports){
+},{"./AsyncAction":181,"./AsyncScheduler":182}],186:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var AnimationFrameAction_1 = require("./AnimationFrameAction");
var AnimationFrameScheduler_1 = require("./AnimationFrameScheduler");
exports.animationFrame = new AnimationFrameScheduler_1.AnimationFrameScheduler(AnimationFrameAction_1.AnimationFrameAction);
-},{"./AnimationFrameAction":176,"./AnimationFrameScheduler":177}],186:[function(require,module,exports){
+},{"./AnimationFrameAction":177,"./AnimationFrameScheduler":178}],187:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var AsapAction_1 = require("./AsapAction");
var AsapScheduler_1 = require("./AsapScheduler");
exports.asap = new AsapScheduler_1.AsapScheduler(AsapAction_1.AsapAction);
-},{"./AsapAction":178,"./AsapScheduler":179}],187:[function(require,module,exports){
+},{"./AsapAction":179,"./AsapScheduler":180}],188:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var AsyncAction_1 = require("./AsyncAction");
var AsyncScheduler_1 = require("./AsyncScheduler");
exports.async = new AsyncScheduler_1.AsyncScheduler(AsyncAction_1.AsyncAction);
-},{"./AsyncAction":180,"./AsyncScheduler":181}],188:[function(require,module,exports){
+},{"./AsyncAction":181,"./AsyncScheduler":182}],189:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var QueueAction_1 = require("./QueueAction");
var QueueScheduler_1 = require("./QueueScheduler");
exports.queue = new QueueScheduler_1.QueueScheduler(QueueAction_1.QueueAction);
-},{"./QueueAction":182,"./QueueScheduler":183}],189:[function(require,module,exports){
+},{"./QueueAction":183,"./QueueScheduler":184}],190:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
function getSymbolIterator() {
exports.iterator = getSymbolIterator();
exports.$$iterator = exports.iterator;
-},{}],190:[function(require,module,exports){
+},{}],191:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.observable = typeof Symbol === 'function' && Symbol.observable || '@@observable';
-},{}],191:[function(require,module,exports){
+},{}],192:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.rxSubscriber = typeof Symbol === 'function'
: '@@rxSubscriber_' + Math.random();
exports.$$rxSubscriber = exports.rxSubscriber;
-},{}],192:[function(require,module,exports){
+},{}],193:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
function ArgumentOutOfRangeErrorImpl() {
ArgumentOutOfRangeErrorImpl.prototype = Object.create(Error.prototype);
exports.ArgumentOutOfRangeError = ArgumentOutOfRangeErrorImpl;
-},{}],193:[function(require,module,exports){
+},{}],194:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
function EmptyErrorImpl() {
EmptyErrorImpl.prototype = Object.create(Error.prototype);
exports.EmptyError = EmptyErrorImpl;
-},{}],194:[function(require,module,exports){
+},{}],195:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var nextHandle = 1;
},
};
-},{}],195:[function(require,module,exports){
+},{}],196:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
function ObjectUnsubscribedErrorImpl() {
ObjectUnsubscribedErrorImpl.prototype = Object.create(Error.prototype);
exports.ObjectUnsubscribedError = ObjectUnsubscribedErrorImpl;
-},{}],196:[function(require,module,exports){
+},{}],197:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
function TimeoutErrorImpl() {
TimeoutErrorImpl.prototype = Object.create(Error.prototype);
exports.TimeoutError = TimeoutErrorImpl;
-},{}],197:[function(require,module,exports){
+},{}],198:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
function UnsubscriptionErrorImpl(errors) {
UnsubscriptionErrorImpl.prototype = Object.create(Error.prototype);
exports.UnsubscriptionError = UnsubscriptionErrorImpl;
-},{}],198:[function(require,module,exports){
+},{}],199:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var Subscriber_1 = require("../Subscriber");
}
exports.canReportError = canReportError;
-},{"../Subscriber":38}],199:[function(require,module,exports){
+},{"../Subscriber":39}],200:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.errorObject = { e: {} };
-},{}],200:[function(require,module,exports){
+},{}],201:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
function hostReportError(err) {
}
exports.hostReportError = hostReportError;
-},{}],201:[function(require,module,exports){
+},{}],202:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
function identity(x) {
}
exports.identity = identity;
-},{}],202:[function(require,module,exports){
+},{}],203:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.isArray = Array.isArray || (function (x) { return x && typeof x.length === 'number'; });
-},{}],203:[function(require,module,exports){
+},{}],204:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.isArrayLike = (function (x) { return x && typeof x.length === 'number' && typeof x !== 'function'; });
-},{}],204:[function(require,module,exports){
+},{}],205:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
function isDate(value) {
}
exports.isDate = isDate;
-},{}],205:[function(require,module,exports){
+},{}],206:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
function isFunction(x) {
}
exports.isFunction = isFunction;
-},{}],206:[function(require,module,exports){
+},{}],207:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var observable_1 = require("../symbol/observable");
}
exports.isInteropObservable = isInteropObservable;
-},{"../symbol/observable":190}],207:[function(require,module,exports){
+},{"../symbol/observable":191}],208:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var iterator_1 = require("../symbol/iterator");
}
exports.isIterable = isIterable;
-},{"../symbol/iterator":189}],208:[function(require,module,exports){
+},{"../symbol/iterator":190}],209:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var isArray_1 = require("./isArray");
}
exports.isNumeric = isNumeric;
-},{"./isArray":202}],209:[function(require,module,exports){
+},{"./isArray":203}],210:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
function isObject(x) {
}
exports.isObject = isObject;
-},{}],210:[function(require,module,exports){
+},{}],211:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var Observable_1 = require("../Observable");
}
exports.isObservable = isObservable;
-},{"../Observable":31}],211:[function(require,module,exports){
+},{"../Observable":32}],212:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
function isPromise(value) {
}
exports.isPromise = isPromise;
-},{}],212:[function(require,module,exports){
+},{}],213:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
function isScheduler(value) {
}
exports.isScheduler = isScheduler;
-},{}],213:[function(require,module,exports){
+},{}],214:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
function noop() { }
exports.noop = noop;
-},{}],214:[function(require,module,exports){
+},{}],215:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
function not(pred, thisArg) {
}
exports.not = not;
-},{}],215:[function(require,module,exports){
+},{}],216:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var noop_1 = require("./noop");
}
exports.pipeFromArray = pipeFromArray;
-},{"./noop":213}],216:[function(require,module,exports){
+},{"./noop":214}],217:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var Observable_1 = require("../Observable");
}
};
-},{"../Observable":31,"../symbol/iterator":189,"../symbol/observable":190,"./isArrayLike":203,"./isObject":209,"./isPromise":211,"./subscribeToArray":217,"./subscribeToIterable":218,"./subscribeToObservable":219,"./subscribeToPromise":220}],217:[function(require,module,exports){
+},{"../Observable":32,"../symbol/iterator":190,"../symbol/observable":191,"./isArrayLike":204,"./isObject":210,"./isPromise":212,"./subscribeToArray":218,"./subscribeToIterable":219,"./subscribeToObservable":220,"./subscribeToPromise":221}],218:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.subscribeToArray = function (array) { return function (subscriber) {
}
}; };
-},{}],218:[function(require,module,exports){
+},{}],219:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var iterator_1 = require("../symbol/iterator");
return subscriber;
}; };
-},{"../symbol/iterator":189}],219:[function(require,module,exports){
+},{"../symbol/iterator":190}],220:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var observable_1 = require("../symbol/observable");
}
}; };
-},{"../symbol/observable":190}],220:[function(require,module,exports){
+},{"../symbol/observable":191}],221:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var hostReportError_1 = require("./hostReportError");
return subscriber;
}; };
-},{"./hostReportError":200}],221:[function(require,module,exports){
+},{"./hostReportError":201}],222:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var InnerSubscriber_1 = require("../InnerSubscriber");
}
exports.subscribeToResult = subscribeToResult;
-},{"../InnerSubscriber":29,"./subscribeTo":216}],222:[function(require,module,exports){
+},{"../InnerSubscriber":30,"./subscribeTo":217}],223:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var Subscriber_1 = require("../Subscriber");
}
exports.toSubscriber = toSubscriber;
-},{"../Observer":32,"../Subscriber":38,"../symbol/rxSubscriber":191}],223:[function(require,module,exports){
+},{"../Observer":33,"../Subscriber":39,"../symbol/rxSubscriber":192}],224:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var errorObject_1 = require("./errorObject");
}
exports.tryCatch = tryCatch;
-},{"./errorObject":199}],224:[function(require,module,exports){
+},{"./errorObject":200}],225:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var audit_1 = require("../internal/operators/audit");
var zipAll_1 = require("../internal/operators/zipAll");
exports.zipAll = zipAll_1.zipAll;
-},{"../internal/operators/audit":72,"../internal/operators/auditTime":73,"../internal/operators/buffer":74,"../internal/operators/bufferCount":75,"../internal/operators/bufferTime":76,"../internal/operators/bufferToggle":77,"../internal/operators/bufferWhen":78,"../internal/operators/catchError":79,"../internal/operators/combineAll":80,"../internal/operators/combineLatest":81,"../internal/operators/concat":82,"../internal/operators/concatAll":83,"../internal/operators/concatMap":84,"../internal/operators/concatMapTo":85,"../internal/operators/count":86,"../internal/operators/debounce":87,"../internal/operators/debounceTime":88,"../internal/operators/defaultIfEmpty":89,"../internal/operators/delay":90,"../internal/operators/delayWhen":91,"../internal/operators/dematerialize":92,"../internal/operators/distinct":93,"../internal/operators/distinctUntilChanged":94,"../internal/operators/distinctUntilKeyChanged":95,"../internal/operators/elementAt":96,"../internal/operators/endWith":97,"../internal/operators/every":98,"../internal/operators/exhaust":99,"../internal/operators/exhaustMap":100,"../internal/operators/expand":101,"../internal/operators/filter":102,"../internal/operators/finalize":103,"../internal/operators/find":104,"../internal/operators/findIndex":105,"../internal/operators/first":106,"../internal/operators/groupBy":107,"../internal/operators/ignoreElements":108,"../internal/operators/isEmpty":109,"../internal/operators/last":110,"../internal/operators/map":111,"../internal/operators/mapTo":112,"../internal/operators/materialize":113,"../internal/operators/max":114,"../internal/operators/merge":115,"../internal/operators/mergeAll":116,"../internal/operators/mergeMap":117,"../internal/operators/mergeMapTo":118,"../internal/operators/mergeScan":119,"../internal/operators/min":120,"../internal/operators/multicast":121,"../internal/operators/observeOn":122,"../internal/operators/onErrorResumeNext":123,"../internal/operators/pairwise":124,"../internal/operators/partition":125,"../internal/operators/pluck":126,"../internal/operators/publish":127,"../internal/operators/publishBehavior":128,"../internal/operators/publishLast":129,"../internal/operators/publishReplay":130,"../internal/operators/race":131,"../internal/operators/reduce":132,"../internal/operators/refCount":133,"../internal/operators/repeat":134,"../internal/operators/repeatWhen":135,"../internal/operators/retry":136,"../internal/operators/retryWhen":137,"../internal/operators/sample":138,"../internal/operators/sampleTime":139,"../internal/operators/scan":140,"../internal/operators/sequenceEqual":141,"../internal/operators/share":142,"../internal/operators/shareReplay":143,"../internal/operators/single":144,"../internal/operators/skip":145,"../internal/operators/skipLast":146,"../internal/operators/skipUntil":147,"../internal/operators/skipWhile":148,"../internal/operators/startWith":149,"../internal/operators/subscribeOn":150,"../internal/operators/switchAll":151,"../internal/operators/switchMap":152,"../internal/operators/switchMapTo":153,"../internal/operators/take":154,"../internal/operators/takeLast":155,"../internal/operators/takeUntil":156,"../internal/operators/takeWhile":157,"../internal/operators/tap":158,"../internal/operators/throttle":159,"../internal/operators/throttleTime":160,"../internal/operators/throwIfEmpty":161,"../internal/operators/timeInterval":162,"../internal/operators/timeout":163,"../internal/operators/timeoutWith":164,"../internal/operators/timestamp":165,"../internal/operators/toArray":166,"../internal/operators/window":167,"../internal/operators/windowCount":168,"../internal/operators/windowTime":169,"../internal/operators/windowToggle":170,"../internal/operators/windowWhen":171,"../internal/operators/withLatestFrom":172,"../internal/operators/zip":173,"../internal/operators/zipAll":174}],225:[function(require,module,exports){
+},{"../internal/operators/audit":73,"../internal/operators/auditTime":74,"../internal/operators/buffer":75,"../internal/operators/bufferCount":76,"../internal/operators/bufferTime":77,"../internal/operators/bufferToggle":78,"../internal/operators/bufferWhen":79,"../internal/operators/catchError":80,"../internal/operators/combineAll":81,"../internal/operators/combineLatest":82,"../internal/operators/concat":83,"../internal/operators/concatAll":84,"../internal/operators/concatMap":85,"../internal/operators/concatMapTo":86,"../internal/operators/count":87,"../internal/operators/debounce":88,"../internal/operators/debounceTime":89,"../internal/operators/defaultIfEmpty":90,"../internal/operators/delay":91,"../internal/operators/delayWhen":92,"../internal/operators/dematerialize":93,"../internal/operators/distinct":94,"../internal/operators/distinctUntilChanged":95,"../internal/operators/distinctUntilKeyChanged":96,"../internal/operators/elementAt":97,"../internal/operators/endWith":98,"../internal/operators/every":99,"../internal/operators/exhaust":100,"../internal/operators/exhaustMap":101,"../internal/operators/expand":102,"../internal/operators/filter":103,"../internal/operators/finalize":104,"../internal/operators/find":105,"../internal/operators/findIndex":106,"../internal/operators/first":107,"../internal/operators/groupBy":108,"../internal/operators/ignoreElements":109,"../internal/operators/isEmpty":110,"../internal/operators/last":111,"../internal/operators/map":112,"../internal/operators/mapTo":113,"../internal/operators/materialize":114,"../internal/operators/max":115,"../internal/operators/merge":116,"../internal/operators/mergeAll":117,"../internal/operators/mergeMap":118,"../internal/operators/mergeMapTo":119,"../internal/operators/mergeScan":120,"../internal/operators/min":121,"../internal/operators/multicast":122,"../internal/operators/observeOn":123,"../internal/operators/onErrorResumeNext":124,"../internal/operators/pairwise":125,"../internal/operators/partition":126,"../internal/operators/pluck":127,"../internal/operators/publish":128,"../internal/operators/publishBehavior":129,"../internal/operators/publishLast":130,"../internal/operators/publishReplay":131,"../internal/operators/race":132,"../internal/operators/reduce":133,"../internal/operators/refCount":134,"../internal/operators/repeat":135,"../internal/operators/repeatWhen":136,"../internal/operators/retry":137,"../internal/operators/retryWhen":138,"../internal/operators/sample":139,"../internal/operators/sampleTime":140,"../internal/operators/scan":141,"../internal/operators/sequenceEqual":142,"../internal/operators/share":143,"../internal/operators/shareReplay":144,"../internal/operators/single":145,"../internal/operators/skip":146,"../internal/operators/skipLast":147,"../internal/operators/skipUntil":148,"../internal/operators/skipWhile":149,"../internal/operators/startWith":150,"../internal/operators/subscribeOn":151,"../internal/operators/switchAll":152,"../internal/operators/switchMap":153,"../internal/operators/switchMapTo":154,"../internal/operators/take":155,"../internal/operators/takeLast":156,"../internal/operators/takeUntil":157,"../internal/operators/takeWhile":158,"../internal/operators/tap":159,"../internal/operators/throttle":160,"../internal/operators/throttleTime":161,"../internal/operators/throwIfEmpty":162,"../internal/operators/timeInterval":163,"../internal/operators/timeout":164,"../internal/operators/timeoutWith":165,"../internal/operators/timestamp":166,"../internal/operators/toArray":167,"../internal/operators/window":168,"../internal/operators/windowCount":169,"../internal/operators/windowTime":170,"../internal/operators/windowToggle":171,"../internal/operators/windowWhen":172,"../internal/operators/withLatestFrom":173,"../internal/operators/zip":174,"../internal/operators/zipAll":175}],226:[function(require,module,exports){
// threejs.org/license
(function(l,ya){"object"===typeof exports&&"undefined"!==typeof module?ya(exports):"function"===typeof define&&define.amd?define(["exports"],ya):ya(l.THREE={})})(this,function(l){function ya(){}function z(a,b){this.x=a||0;this.y=b||0}function I(){this.elements=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1];0<arguments.length&&console.error("THREE.Matrix4: the constructor no longer reads arguments. use .set() instead.")}function fa(a,b,c,d){this._x=a||0;this._y=b||0;this._z=c||0;this._w=void 0!==d?d:1}function p(a,
b,c){this.x=a||0;this.y=b||0;this.z=c||0}function ra(){this.elements=[1,0,0,0,1,0,0,0,1];0<arguments.length&&console.error("THREE.Matrix3: the constructor no longer reads arguments. use .set() instead.")}function T(a,b,c,d,e,f,g,h,k,m){Object.defineProperty(this,"id",{value:Ef++});this.uuid=H.generateUUID();this.name="";this.image=void 0!==a?a:T.DEFAULT_IMAGE;this.mipmaps=[];this.mapping=void 0!==b?b:T.DEFAULT_MAPPING;this.wrapS=void 0!==c?c:1001;this.wrapT=void 0!==d?d:1001;this.magFilter=void 0!==
function(){console.error("THREE.CanvasRenderer has been moved to /examples/js/renderers/CanvasRenderer.js");this.domElement=document.createElementNS("http://www.w3.org/1999/xhtml","canvas");this.clear=function(){};this.render=function(){};this.setClearColor=function(){};this.setSize=function(){}};l.SceneUtils={createMultiMaterialObject:function(){console.error("THREE.SceneUtils has been moved to /examples/js/utils/SceneUtils.js")},detach:function(){console.error("THREE.SceneUtils has been moved to /examples/js/utils/SceneUtils.js")},
attach:function(){console.error("THREE.SceneUtils has been moved to /examples/js/utils/SceneUtils.js")}};l.LensFlare=function(){console.error("THREE.LensFlare has been moved to /examples/js/objects/Lensflare.js")};Object.defineProperty(l,"__esModule",{value:!0})});
-},{}],226:[function(require,module,exports){
+},{}],227:[function(require,module,exports){
'use strict';
module.exports = TinyQueue;
}
};
-},{}],227:[function(require,module,exports){
+},{}],228:[function(require,module,exports){
var createElement = require("./vdom/create-element.js")
module.exports = createElement
-},{"./vdom/create-element.js":233}],228:[function(require,module,exports){
+},{"./vdom/create-element.js":234}],229:[function(require,module,exports){
var diff = require("./vtree/diff.js")
module.exports = diff
-},{"./vtree/diff.js":253}],229:[function(require,module,exports){
+},{"./vtree/diff.js":254}],230:[function(require,module,exports){
var h = require("./virtual-hyperscript/index.js")
module.exports = h
-},{"./virtual-hyperscript/index.js":240}],230:[function(require,module,exports){
+},{"./virtual-hyperscript/index.js":241}],231:[function(require,module,exports){
var diff = require("./diff.js")
var patch = require("./patch.js")
var h = require("./h.js")
VText: VText
}
-},{"./create-element.js":227,"./diff.js":228,"./h.js":229,"./patch.js":231,"./vnode/vnode.js":249,"./vnode/vtext.js":251}],231:[function(require,module,exports){
+},{"./create-element.js":228,"./diff.js":229,"./h.js":230,"./patch.js":232,"./vnode/vnode.js":250,"./vnode/vtext.js":252}],232:[function(require,module,exports){
var patch = require("./vdom/patch.js")
module.exports = patch
-},{"./vdom/patch.js":236}],232:[function(require,module,exports){
+},{"./vdom/patch.js":237}],233:[function(require,module,exports){
var isObject = require("is-object")
var isHook = require("../vnode/is-vhook.js")
}
}
-},{"../vnode/is-vhook.js":244,"is-object":20}],233:[function(require,module,exports){
+},{"../vnode/is-vhook.js":245,"is-object":20}],234:[function(require,module,exports){
var document = require("global/document")
var applyProperties = require("./apply-properties")
return node
}
-},{"../vnode/handle-thunk.js":242,"../vnode/is-vnode.js":245,"../vnode/is-vtext.js":246,"../vnode/is-widget.js":247,"./apply-properties":232,"global/document":16}],234:[function(require,module,exports){
+},{"../vnode/handle-thunk.js":243,"../vnode/is-vnode.js":246,"../vnode/is-vtext.js":247,"../vnode/is-widget.js":248,"./apply-properties":233,"global/document":16}],235:[function(require,module,exports){
// Maps a virtual DOM tree onto a real DOM tree in an efficient manner.
// We don't want to read all of the DOM nodes in the tree so we use
// the in-order tree indexing to eliminate recursion down certain branches.
return a > b ? 1 : -1
}
-},{}],235:[function(require,module,exports){
+},{}],236:[function(require,module,exports){
var applyProperties = require("./apply-properties")
var isWidget = require("../vnode/is-widget.js")
return newRoot;
}
-},{"../vnode/is-widget.js":247,"../vnode/vpatch.js":250,"./apply-properties":232,"./update-widget":237}],236:[function(require,module,exports){
+},{"../vnode/is-widget.js":248,"../vnode/vpatch.js":251,"./apply-properties":233,"./update-widget":238}],237:[function(require,module,exports){
var document = require("global/document")
var isArray = require("x-is-array")
return indices
}
-},{"./create-element":233,"./dom-index":234,"./patch-op":235,"global/document":16,"x-is-array":272}],237:[function(require,module,exports){
+},{"./create-element":234,"./dom-index":235,"./patch-op":236,"global/document":16,"x-is-array":273}],238:[function(require,module,exports){
var isWidget = require("../vnode/is-widget.js")
module.exports = updateWidget
return false
}
-},{"../vnode/is-widget.js":247}],238:[function(require,module,exports){
+},{"../vnode/is-widget.js":248}],239:[function(require,module,exports){
'use strict';
var EvStore = require('ev-store');
es[propName] = undefined;
};
-},{"ev-store":9}],239:[function(require,module,exports){
+},{"ev-store":9}],240:[function(require,module,exports){
'use strict';
module.exports = SoftSetHook;
}
};
-},{}],240:[function(require,module,exports){
+},{}],241:[function(require,module,exports){
'use strict';
var isArray = require('x-is-array');
}
}
-},{"../vnode/is-thunk":243,"../vnode/is-vhook":244,"../vnode/is-vnode":245,"../vnode/is-vtext":246,"../vnode/is-widget":247,"../vnode/vnode.js":249,"../vnode/vtext.js":251,"./hooks/ev-hook.js":238,"./hooks/soft-set-hook.js":239,"./parse-tag.js":241,"x-is-array":272}],241:[function(require,module,exports){
+},{"../vnode/is-thunk":244,"../vnode/is-vhook":245,"../vnode/is-vnode":246,"../vnode/is-vtext":247,"../vnode/is-widget":248,"../vnode/vnode.js":250,"../vnode/vtext.js":252,"./hooks/ev-hook.js":239,"./hooks/soft-set-hook.js":240,"./parse-tag.js":242,"x-is-array":273}],242:[function(require,module,exports){
'use strict';
var split = require('browser-split');
return props.namespace ? tagName : tagName.toUpperCase();
}
-},{"browser-split":5}],242:[function(require,module,exports){
+},{"browser-split":5}],243:[function(require,module,exports){
var isVNode = require("./is-vnode")
var isVText = require("./is-vtext")
var isWidget = require("./is-widget")
return renderedThunk
}
-},{"./is-thunk":243,"./is-vnode":245,"./is-vtext":246,"./is-widget":247}],243:[function(require,module,exports){
+},{"./is-thunk":244,"./is-vnode":246,"./is-vtext":247,"./is-widget":248}],244:[function(require,module,exports){
module.exports = isThunk
function isThunk(t) {
return t && t.type === "Thunk"
}
-},{}],244:[function(require,module,exports){
+},{}],245:[function(require,module,exports){
module.exports = isHook
function isHook(hook) {
typeof hook.unhook === "function" && !hook.hasOwnProperty("unhook"))
}
-},{}],245:[function(require,module,exports){
+},{}],246:[function(require,module,exports){
var version = require("./version")
module.exports = isVirtualNode
return x && x.type === "VirtualNode" && x.version === version
}
-},{"./version":248}],246:[function(require,module,exports){
+},{"./version":249}],247:[function(require,module,exports){
var version = require("./version")
module.exports = isVirtualText
return x && x.type === "VirtualText" && x.version === version
}
-},{"./version":248}],247:[function(require,module,exports){
+},{"./version":249}],248:[function(require,module,exports){
module.exports = isWidget
function isWidget(w) {
return w && w.type === "Widget"
}
-},{}],248:[function(require,module,exports){
+},{}],249:[function(require,module,exports){
module.exports = "2"
-},{}],249:[function(require,module,exports){
+},{}],250:[function(require,module,exports){
var version = require("./version")
var isVNode = require("./is-vnode")
var isWidget = require("./is-widget")
VirtualNode.prototype.version = version
VirtualNode.prototype.type = "VirtualNode"
-},{"./is-thunk":243,"./is-vhook":244,"./is-vnode":245,"./is-widget":247,"./version":248}],250:[function(require,module,exports){
+},{"./is-thunk":244,"./is-vhook":245,"./is-vnode":246,"./is-widget":248,"./version":249}],251:[function(require,module,exports){
var version = require("./version")
VirtualPatch.NONE = 0
VirtualPatch.prototype.version = version
VirtualPatch.prototype.type = "VirtualPatch"
-},{"./version":248}],251:[function(require,module,exports){
+},{"./version":249}],252:[function(require,module,exports){
var version = require("./version")
module.exports = VirtualText
VirtualText.prototype.version = version
VirtualText.prototype.type = "VirtualText"
-},{"./version":248}],252:[function(require,module,exports){
+},{"./version":249}],253:[function(require,module,exports){
var isObject = require("is-object")
var isHook = require("../vnode/is-vhook")
}
}
-},{"../vnode/is-vhook":244,"is-object":20}],253:[function(require,module,exports){
+},{"../vnode/is-vhook":245,"is-object":20}],254:[function(require,module,exports){
var isArray = require("x-is-array")
var VPatch = require("../vnode/vpatch")
}
}
-},{"../vnode/handle-thunk":242,"../vnode/is-thunk":243,"../vnode/is-vnode":245,"../vnode/is-vtext":246,"../vnode/is-widget":247,"../vnode/vpatch":250,"./diff-props":252,"x-is-array":272}],254:[function(require,module,exports){
+},{"../vnode/handle-thunk":243,"../vnode/is-thunk":244,"../vnode/is-vnode":246,"../vnode/is-vtext":247,"../vnode/is-widget":248,"../vnode/vpatch":251,"./diff-props":253,"x-is-array":273}],255:[function(require,module,exports){
/** @license MIT License (c) copyright 2010-2014 original author or authors */
/** @author Brian Cavalier */
/** @author John Hann */
});
})(typeof define === 'function' && define.amd ? define : function (factory) { module.exports = factory(require); });
-},{"./Scheduler":255,"./env":267,"./makePromise":269}],255:[function(require,module,exports){
+},{"./Scheduler":256,"./env":268,"./makePromise":270}],256:[function(require,module,exports){
/** @license MIT License (c) copyright 2010-2014 original author or authors */
/** @author Brian Cavalier */
/** @author John Hann */
});
}(typeof define === 'function' && define.amd ? define : function(factory) { module.exports = factory(); }));
-},{}],256:[function(require,module,exports){
+},{}],257:[function(require,module,exports){
/** @license MIT License (c) copyright 2010-2014 original author or authors */
/** @author Brian Cavalier */
/** @author John Hann */
return TimeoutError;
});
}(typeof define === 'function' && define.amd ? define : function(factory) { module.exports = factory(); }));
-},{}],257:[function(require,module,exports){
+},{}],258:[function(require,module,exports){
/** @license MIT License (c) copyright 2010-2014 original author or authors */
/** @author Brian Cavalier */
/** @author John Hann */
-},{}],258:[function(require,module,exports){
+},{}],259:[function(require,module,exports){
/** @license MIT License (c) copyright 2010-2014 original author or authors */
/** @author Brian Cavalier */
/** @author John Hann */
});
}(typeof define === 'function' && define.amd ? define : function(factory) { module.exports = factory(require); }));
-},{"../apply":257,"../state":270}],259:[function(require,module,exports){
+},{"../apply":258,"../state":271}],260:[function(require,module,exports){
/** @license MIT License (c) copyright 2010-2014 original author or authors */
/** @author Brian Cavalier */
/** @author John Hann */
});
}(typeof define === 'function' && define.amd ? define : function(factory) { module.exports = factory(); }));
-},{}],260:[function(require,module,exports){
+},{}],261:[function(require,module,exports){
/** @license MIT License (c) copyright 2010-2014 original author or authors */
/** @author Brian Cavalier */
/** @author John Hann */
});
}(typeof define === 'function' && define.amd ? define : function(factory) { module.exports = factory(); }));
-},{}],261:[function(require,module,exports){
+},{}],262:[function(require,module,exports){
/** @license MIT License (c) copyright 2010-2014 original author or authors */
/** @author Brian Cavalier */
/** @author John Hann */
});
}(typeof define === 'function' && define.amd ? define : function(factory) { module.exports = factory(require); }));
-},{"../state":270}],262:[function(require,module,exports){
+},{"../state":271}],263:[function(require,module,exports){
/** @license MIT License (c) copyright 2010-2014 original author or authors */
/** @author Brian Cavalier */
/** @author John Hann */
});
}(typeof define === 'function' && define.amd ? define : function(factory) { module.exports = factory(); }));
-},{}],263:[function(require,module,exports){
+},{}],264:[function(require,module,exports){
/** @license MIT License (c) copyright 2010-2014 original author or authors */
/** @author Brian Cavalier */
/** @author John Hann */
});
}(typeof define === 'function' && define.amd ? define : function(factory) { module.exports = factory(); }));
-},{}],264:[function(require,module,exports){
+},{}],265:[function(require,module,exports){
/** @license MIT License (c) copyright 2010-2014 original author or authors */
/** @author Brian Cavalier */
/** @author John Hann */
});
}(typeof define === 'function' && define.amd ? define : function(factory) { module.exports = factory(require); }));
-},{"../TimeoutError":256,"../env":267}],265:[function(require,module,exports){
+},{"../TimeoutError":257,"../env":268}],266:[function(require,module,exports){
/** @license MIT License (c) copyright 2010-2014 original author or authors */
/** @author Brian Cavalier */
/** @author John Hann */
});
}(typeof define === 'function' && define.amd ? define : function(factory) { module.exports = factory(require); }));
-},{"../env":267,"../format":268}],266:[function(require,module,exports){
+},{"../env":268,"../format":269}],267:[function(require,module,exports){
/** @license MIT License (c) copyright 2010-2014 original author or authors */
/** @author Brian Cavalier */
/** @author John Hann */
}(typeof define === 'function' && define.amd ? define : function(factory) { module.exports = factory(); }));
-},{}],267:[function(require,module,exports){
+},{}],268:[function(require,module,exports){
(function (process){
/** @license MIT License (c) copyright 2010-2014 original author or authors */
/** @author Brian Cavalier */
}).call(this,require('_process'))
-},{"_process":6}],268:[function(require,module,exports){
+},{"_process":6}],269:[function(require,module,exports){
/** @license MIT License (c) copyright 2010-2014 original author or authors */
/** @author Brian Cavalier */
/** @author John Hann */
});
}(typeof define === 'function' && define.amd ? define : function(factory) { module.exports = factory(); }));
-},{}],269:[function(require,module,exports){
+},{}],270:[function(require,module,exports){
(function (process){
/** @license MIT License (c) copyright 2010-2014 original author or authors */
/** @author Brian Cavalier */
}).call(this,require('_process'))
-},{"_process":6}],270:[function(require,module,exports){
+},{"_process":6}],271:[function(require,module,exports){
/** @license MIT License (c) copyright 2010-2014 original author or authors */
/** @author Brian Cavalier */
/** @author John Hann */
});
}(typeof define === 'function' && define.amd ? define : function(factory) { module.exports = factory(); }));
-},{}],271:[function(require,module,exports){
+},{}],272:[function(require,module,exports){
/** @license MIT License (c) copyright 2010-2014 original author or authors */
/**
});
})(typeof define === 'function' && define.amd ? define : function (factory) { module.exports = factory(require); });
-},{"./lib/Promise":254,"./lib/TimeoutError":256,"./lib/apply":257,"./lib/decorators/array":258,"./lib/decorators/flow":259,"./lib/decorators/fold":260,"./lib/decorators/inspect":261,"./lib/decorators/iterate":262,"./lib/decorators/progress":263,"./lib/decorators/timed":264,"./lib/decorators/unhandledRejection":265,"./lib/decorators/with":266}],272:[function(require,module,exports){
+},{"./lib/Promise":255,"./lib/TimeoutError":257,"./lib/apply":258,"./lib/decorators/array":259,"./lib/decorators/flow":260,"./lib/decorators/fold":261,"./lib/decorators/inspect":262,"./lib/decorators/iterate":263,"./lib/decorators/progress":264,"./lib/decorators/timed":265,"./lib/decorators/unhandledRejection":266,"./lib/decorators/with":267}],273:[function(require,module,exports){
var nativeIsArray = Array.isArray
var toString = Object.prototype.toString
return toString.call(obj) === "[object Array]"
}
-},{}],273:[function(require,module,exports){
+},{}],274:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var APIv3_1 = require("./api/APIv3");
var ModelCreator_1 = require("./api/ModelCreator");
exports.ModelCreator = ModelCreator_1.ModelCreator;
-},{"./api/APIv3":286,"./api/ModelCreator":287}],274:[function(require,module,exports){
+},{"./api/APIv3":287,"./api/ModelCreator":288}],275:[function(require,module,exports){
"use strict";
function __export(m) {
for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];
exports.MeshScene = MeshScene_1.MeshScene;
var MouseOperator_1 = require("./component/utils/MouseOperator");
exports.MouseOperator = MouseOperator_1.MouseOperator;
+var ComponentSize_1 = require("./component/utils/ComponentSize");
+exports.ComponentSize = ComponentSize_1.ComponentSize;
var AttributionComponent_1 = require("./component/AttributionComponent");
exports.AttributionComponent = AttributionComponent_1.AttributionComponent;
var BackgroundComponent_1 = require("./component/BackgroundComponent");
exports.ZoomComponent = ZoomComponent_1.ZoomComponent;
__export(require("./component/interfaces/interfaces"));
-},{"./component/AttributionComponent":288,"./component/BackgroundComponent":289,"./component/BearingComponent":290,"./component/CacheComponent":291,"./component/Component":292,"./component/ComponentService":293,"./component/CoverComponent":294,"./component/DebugComponent":295,"./component/ImageComponent":296,"./component/LoadingComponent":297,"./component/NavigationComponent":298,"./component/RouteComponent":299,"./component/StatsComponent":300,"./component/direction/DirectionComponent":301,"./component/direction/DirectionDOMCalculator":302,"./component/direction/DirectionDOMRenderer":303,"./component/imageplane/ImagePlaneComponent":304,"./component/imageplane/ImagePlaneGLRenderer":305,"./component/interfaces/interfaces":308,"./component/keyboard/KeyPlayHandler":309,"./component/keyboard/KeySequenceNavigationHandler":310,"./component/keyboard/KeySpatialNavigationHandler":311,"./component/keyboard/KeyZoomHandler":312,"./component/keyboard/KeyboardComponent":313,"./component/marker/MarkerComponent":315,"./component/marker/MarkerScene":316,"./component/marker/MarkerSet":317,"./component/marker/marker/CircleMarker":318,"./component/marker/marker/Marker":319,"./component/marker/marker/SimpleMarker":320,"./component/mouse/BounceHandler":321,"./component/mouse/DoubleClickZoomHandler":322,"./component/mouse/DragPanHandler":323,"./component/mouse/EarthControlHandler":324,"./component/mouse/ImageBoundary":325,"./component/mouse/MouseComponent":326,"./component/mouse/ScrollZoomHandler":327,"./component/mouse/TouchZoomHandler":328,"./component/popup/PopupComponent":330,"./component/popup/popup/Popup":331,"./component/sequence/SequenceComponent":332,"./component/sequence/SequenceDOMRenderer":333,"./component/sequence/SequenceMode":334,"./component/shaders/Shaders":335,"./component/slider/SliderComponent":336,"./component/slider/SliderDOMRenderer":337,"./component/slider/SliderGLRenderer":338,"./component/spatialdata/SpatialDataCache":339,"./component/spatialdata/SpatialDataComponent":340,"./component/spatialdata/SpatialDataScene":341,"./component/tag/TagComponent":343,"./component/tag/TagCreator":344,"./component/tag/TagDOMRenderer":345,"./component/tag/TagMode":346,"./component/tag/TagOperation":347,"./component/tag/TagScene":348,"./component/tag/TagSet":349,"./component/tag/error/GeometryTagError":350,"./component/tag/geometry/Geometry":351,"./component/tag/geometry/PointGeometry":352,"./component/tag/geometry/PolygonGeometry":353,"./component/tag/geometry/RectGeometry":354,"./component/tag/geometry/VertexGeometry":355,"./component/tag/handlers/CreateHandlerBase":356,"./component/tag/handlers/CreatePointHandler":357,"./component/tag/handlers/CreatePolygonHandler":358,"./component/tag/handlers/CreateRectDragHandler":359,"./component/tag/handlers/CreateRectHandler":360,"./component/tag/handlers/CreateVertexHandler":361,"./component/tag/handlers/EditVertexHandler":362,"./component/tag/handlers/TagHandlerBase":363,"./component/tag/tag/OutlineCreateTag":364,"./component/tag/tag/OutlineRenderTag":365,"./component/tag/tag/OutlineTag":366,"./component/tag/tag/RenderTag":367,"./component/tag/tag/SpotRenderTag":368,"./component/tag/tag/SpotTag":369,"./component/tag/tag/Tag":370,"./component/tag/tag/TagDomain":371,"./component/utils/HandlerBase":372,"./component/utils/MeshFactory":373,"./component/utils/MeshScene":374,"./component/utils/MouseOperator":375,"./component/zoom/ZoomComponent":376}],275:[function(require,module,exports){
+},{"./component/AttributionComponent":289,"./component/BackgroundComponent":290,"./component/BearingComponent":291,"./component/CacheComponent":292,"./component/Component":293,"./component/ComponentService":294,"./component/CoverComponent":295,"./component/DebugComponent":296,"./component/ImageComponent":297,"./component/LoadingComponent":298,"./component/NavigationComponent":299,"./component/RouteComponent":300,"./component/StatsComponent":301,"./component/direction/DirectionComponent":302,"./component/direction/DirectionDOMCalculator":303,"./component/direction/DirectionDOMRenderer":304,"./component/imageplane/ImagePlaneComponent":305,"./component/imageplane/ImagePlaneGLRenderer":306,"./component/interfaces/interfaces":309,"./component/keyboard/KeyPlayHandler":310,"./component/keyboard/KeySequenceNavigationHandler":311,"./component/keyboard/KeySpatialNavigationHandler":312,"./component/keyboard/KeyZoomHandler":313,"./component/keyboard/KeyboardComponent":314,"./component/marker/MarkerComponent":316,"./component/marker/MarkerScene":317,"./component/marker/MarkerSet":318,"./component/marker/marker/CircleMarker":319,"./component/marker/marker/Marker":320,"./component/marker/marker/SimpleMarker":321,"./component/mouse/BounceHandler":322,"./component/mouse/DoubleClickZoomHandler":323,"./component/mouse/DragPanHandler":324,"./component/mouse/EarthControlHandler":325,"./component/mouse/ImageBoundary":326,"./component/mouse/MouseComponent":327,"./component/mouse/ScrollZoomHandler":328,"./component/mouse/TouchZoomHandler":329,"./component/popup/PopupComponent":331,"./component/popup/popup/Popup":332,"./component/sequence/SequenceComponent":333,"./component/sequence/SequenceDOMRenderer":334,"./component/sequence/SequenceMode":335,"./component/shaders/Shaders":336,"./component/slider/SliderComponent":337,"./component/slider/SliderDOMRenderer":338,"./component/slider/SliderGLRenderer":339,"./component/spatialdata/SpatialDataCache":340,"./component/spatialdata/SpatialDataComponent":341,"./component/spatialdata/SpatialDataScene":342,"./component/tag/TagComponent":344,"./component/tag/TagCreator":345,"./component/tag/TagDOMRenderer":346,"./component/tag/TagMode":347,"./component/tag/TagOperation":348,"./component/tag/TagScene":349,"./component/tag/TagSet":350,"./component/tag/error/GeometryTagError":351,"./component/tag/geometry/Geometry":352,"./component/tag/geometry/PointGeometry":353,"./component/tag/geometry/PolygonGeometry":354,"./component/tag/geometry/RectGeometry":355,"./component/tag/geometry/VertexGeometry":356,"./component/tag/handlers/CreateHandlerBase":357,"./component/tag/handlers/CreatePointHandler":358,"./component/tag/handlers/CreatePolygonHandler":359,"./component/tag/handlers/CreateRectDragHandler":360,"./component/tag/handlers/CreateRectHandler":361,"./component/tag/handlers/CreateVertexHandler":362,"./component/tag/handlers/EditVertexHandler":363,"./component/tag/handlers/TagHandlerBase":364,"./component/tag/tag/OutlineCreateTag":365,"./component/tag/tag/OutlineRenderTag":366,"./component/tag/tag/OutlineTag":367,"./component/tag/tag/RenderTag":368,"./component/tag/tag/SpotRenderTag":369,"./component/tag/tag/SpotTag":370,"./component/tag/tag/Tag":371,"./component/tag/tag/TagDomain":372,"./component/utils/ComponentSize":373,"./component/utils/HandlerBase":374,"./component/utils/MeshFactory":375,"./component/utils/MeshScene":376,"./component/utils/MouseOperator":377,"./component/zoom/ZoomComponent":378}],276:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var EdgeDirection_1 = require("./graph/edge/EdgeDirection");
var EdgeCalculator_1 = require("./graph/edge/EdgeCalculator");
exports.EdgeCalculator = EdgeCalculator_1.EdgeCalculator;
-},{"./graph/edge/EdgeCalculator":398,"./graph/edge/EdgeCalculatorCoefficients":399,"./graph/edge/EdgeCalculatorDirections":400,"./graph/edge/EdgeCalculatorSettings":401,"./graph/edge/EdgeDirection":402}],276:[function(require,module,exports){
+},{"./graph/edge/EdgeCalculator":400,"./graph/edge/EdgeCalculatorCoefficients":401,"./graph/edge/EdgeCalculatorDirections":402,"./graph/edge/EdgeCalculatorSettings":403,"./graph/edge/EdgeDirection":404}],277:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var AbortMapillaryError_1 = require("./error/AbortMapillaryError");
var MapillaryError_1 = require("./error/MapillaryError");
exports.MapillaryError = MapillaryError_1.MapillaryError;
-},{"./error/AbortMapillaryError":377,"./error/ArgumentMapillaryError":378,"./error/GraphMapillaryError":379,"./error/MapillaryError":380}],277:[function(require,module,exports){
+},{"./error/AbortMapillaryError":379,"./error/ArgumentMapillaryError":380,"./error/GraphMapillaryError":381,"./error/MapillaryError":382}],278:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var Camera_1 = require("./geo/Camera");
var Lines = require("./geo/Lines");
exports.Lines = Lines;
-},{"./geo/Camera":381,"./geo/Geo":382,"./geo/GeoCoords":383,"./geo/Lines":384,"./geo/Spatial":385,"./geo/Transform":386,"./geo/ViewportCoords":387}],278:[function(require,module,exports){
+},{"./geo/Camera":383,"./geo/Geo":384,"./geo/GeoCoords":385,"./geo/Lines":386,"./geo/Spatial":387,"./geo/Transform":388,"./geo/ViewportCoords":389}],279:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var FilterCreator_1 = require("./graph/FilterCreator");
var Sequence_1 = require("./graph/Sequence");
exports.Sequence = Sequence_1.Sequence;
-},{"./graph/FilterCreator":388,"./graph/Graph":389,"./graph/GraphCalculator":390,"./graph/GraphMode":391,"./graph/GraphService":392,"./graph/ImageLoadingService":393,"./graph/MeshReader":394,"./graph/Node":395,"./graph/NodeCache":396,"./graph/Sequence":397}],279:[function(require,module,exports){
+},{"./graph/FilterCreator":390,"./graph/Graph":391,"./graph/GraphCalculator":392,"./graph/GraphMode":393,"./graph/GraphService":394,"./graph/ImageLoadingService":395,"./graph/MeshReader":396,"./graph/Node":397,"./graph/NodeCache":398,"./graph/Sequence":399}],280:[function(require,module,exports){
"use strict";
/**
* MapillaryJS is a WebGL JavaScript library for exploring street level imagery
exports.Viewer = Viewer_1.Viewer;
var Component_1 = require("./Component");
exports.SliderMode = Component_1.SliderMode;
+exports.ComponentSize = Component_1.ComponentSize;
var TagComponent = require("./component/tag/Tag");
exports.TagComponent = TagComponent;
var MarkerComponent = require("./component/marker/Marker");
var PopupComponent = require("./component/popup/Popup");
exports.PopupComponent = PopupComponent;
-},{"./Component":274,"./Edge":275,"./Error":276,"./Render":280,"./State":281,"./Support":282,"./Viewer":285,"./component/marker/Marker":314,"./component/popup/Popup":329,"./component/tag/Tag":342}],280:[function(require,module,exports){
+},{"./Component":275,"./Edge":276,"./Error":277,"./Render":281,"./State":282,"./Support":283,"./Viewer":286,"./component/marker/Marker":315,"./component/popup/Popup":330,"./component/tag/Tag":343}],281:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var DOMRenderer_1 = require("./render/DOMRenderer");
var RenderService_1 = require("./render/RenderService");
exports.RenderService = RenderService_1.RenderService;
-},{"./render/DOMRenderer":403,"./render/GLRenderStage":404,"./render/GLRenderer":405,"./render/RenderCamera":406,"./render/RenderMode":407,"./render/RenderService":408}],281:[function(require,module,exports){
+},{"./render/DOMRenderer":405,"./render/GLRenderStage":406,"./render/GLRenderer":407,"./render/RenderCamera":408,"./render/RenderMode":409,"./render/RenderService":410}],282:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var FrameGenerator_1 = require("./state/FrameGenerator");
var WaitingState_1 = require("./state/states/WaitingState");
exports.WaitingState = WaitingState_1.WaitingState;
-},{"./state/FrameGenerator":409,"./state/RotationDelta":410,"./state/State":411,"./state/StateContext":412,"./state/StateService":413,"./state/TransitionMode":414,"./state/states/EarthState":415,"./state/states/InteractiveStateBase":416,"./state/states/InteractiveWaitingState":417,"./state/states/StateBase":418,"./state/states/TraversingState":419,"./state/states/WaitingState":420}],282:[function(require,module,exports){
+},{"./state/FrameGenerator":411,"./state/RotationDelta":412,"./state/State":413,"./state/StateContext":414,"./state/StateService":415,"./state/TransitionMode":416,"./state/states/EarthState":417,"./state/states/InteractiveStateBase":418,"./state/states/InteractiveWaitingState":419,"./state/states/StateBase":420,"./state/states/TraversingState":421,"./state/states/WaitingState":422}],283:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var support = require("./utils/Support");
}
exports.isFallbackSupported = isFallbackSupported;
-},{"./utils/Support":428}],283:[function(require,module,exports){
+},{"./utils/Support":430}],284:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var ImageTileLoader_1 = require("./tiles/ImageTileLoader");
var RegionOfInterestCalculator_1 = require("./tiles/RegionOfInterestCalculator");
exports.RegionOfInterestCalculator = RegionOfInterestCalculator_1.RegionOfInterestCalculator;
-},{"./tiles/ImageTileLoader":421,"./tiles/ImageTileStore":422,"./tiles/RegionOfInterestCalculator":423,"./tiles/TextureProvider":424}],284:[function(require,module,exports){
+},{"./tiles/ImageTileLoader":423,"./tiles/ImageTileStore":424,"./tiles/RegionOfInterestCalculator":425,"./tiles/TextureProvider":426}],285:[function(require,module,exports){
"use strict";
function __export(m) {
for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];
var Urls_1 = require("./utils/Urls");
exports.Urls = Urls_1.Urls;
-},{"./utils/DOM":425,"./utils/EventEmitter":426,"./utils/Settings":427,"./utils/Support":428,"./utils/Urls":429}],285:[function(require,module,exports){
+},{"./utils/DOM":427,"./utils/EventEmitter":428,"./utils/Settings":429,"./utils/Support":430,"./utils/Urls":431}],286:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var Alignment_1 = require("./viewer/Alignment");
var Viewer_1 = require("./viewer/Viewer");
exports.Viewer = Viewer_1.Viewer;
-},{"./viewer/Alignment":430,"./viewer/CacheService":431,"./viewer/ComponentController":432,"./viewer/Container":433,"./viewer/ImageSize":434,"./viewer/KeyboardService":435,"./viewer/LoadingService":436,"./viewer/MouseService":437,"./viewer/Navigator":438,"./viewer/Observer":439,"./viewer/PlayService":440,"./viewer/Projection":441,"./viewer/SpriteService":442,"./viewer/TouchService":443,"./viewer/Viewer":444}],286:[function(require,module,exports){
+},{"./viewer/Alignment":432,"./viewer/CacheService":433,"./viewer/ComponentController":434,"./viewer/Container":435,"./viewer/ImageSize":436,"./viewer/KeyboardService":437,"./viewer/LoadingService":438,"./viewer/MouseService":439,"./viewer/Navigator":440,"./viewer/Observer":441,"./viewer/PlayService":443,"./viewer/Projection":444,"./viewer/SpriteService":445,"./viewer/TouchService":446,"./viewer/Viewer":447}],287:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var operators_1 = require("rxjs/operators");
];
this._propertiesSpatial = [
"atomic_scale",
+ "c_rotation",
"ca",
"calt",
+ "camera_projection_type",
"cca",
"cfocal",
"ck1",
"height",
"merge_cc",
"merge_version",
- "c_rotation",
"orientation",
"width",
];
exports.APIv3 = APIv3;
exports.default = APIv3;
-},{"../API":273,"rxjs":26,"rxjs/operators":224}],287:[function(require,module,exports){
+},{"../API":274,"rxjs":27,"rxjs/operators":225}],288:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var falcor = require("falcor");
exports.ModelCreator = ModelCreator;
exports.default = ModelCreator;
-},{"../Utils":284,"falcor":15,"falcor-http-datasource":10}],288:[function(require,module,exports){
+},{"../Utils":285,"falcor":15,"falcor-http-datasource":10}],289:[function(require,module,exports){
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
Component_1.ComponentService.register(AttributionComponent);
exports.default = AttributionComponent;
-},{"../Component":274,"../Utils":284,"rxjs":26,"rxjs/operators":224,"virtual-dom":230}],289:[function(require,module,exports){
+},{"../Component":275,"../Utils":285,"rxjs":27,"rxjs/operators":225,"virtual-dom":231}],290:[function(require,module,exports){
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
Component_1.ComponentService.register(BackgroundComponent);
exports.default = BackgroundComponent;
-},{"../Component":274,"virtual-dom":230}],290:[function(require,module,exports){
+},{"../Component":275,"virtual-dom":231}],291:[function(require,module,exports){
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
Object.defineProperty(exports, "__esModule", { value: true });
var operators_1 = require("rxjs/operators");
var vd = require("virtual-dom");
+var UnitBezier = require("@mapbox/unitbezier");
+var rxjs_1 = require("rxjs");
var Component_1 = require("../Component");
var Geo_1 = require("../Geo");
+var ViewportCoords_1 = require("../geo/ViewportCoords");
+var ComponentSize_1 = require("./utils/ComponentSize");
+/**
+ * @class BearingComponent
+ *
+ * @classdesc Component for indicating bearing and field of view.
+ *
+ * @example
+ * ```
+ * var viewer = new Mapillary.Viewer(
+ * "<element-id>",
+ * "<client-id>",
+ * "<my key>");
+ *
+ * var bearingComponent = viewer.getComponent("bearing");
+ * bearingComponent.configure({ size: Mapillary.ComponentSize.Small });
+ * ```
+ */
var BearingComponent = /** @class */ (function (_super) {
__extends(BearingComponent, _super);
function BearingComponent(name, container, navigator) {
var _this = _super.call(this, name, container, navigator) || this;
_this._spatial = new Geo_1.Spatial();
+ _this._viewportCoords = new ViewportCoords_1.default();
_this._svgNamespace = "http://www.w3.org/2000/svg";
_this._distinctThreshold = Math.PI / 360;
+ _this._animationSpeed = 0.075;
+ _this._unitBezier = new UnitBezier(0.74, 0.67, 0.38, 0.96);
return _this;
}
BearingComponent.prototype._activate = function () {
return Math.abs(a2[0] - a1[0]) < _this._distinctThreshold &&
Math.abs(a2[1] - a1[1]) < _this._distinctThreshold;
}));
- this._renderSubscription = cameraBearingFov$.pipe(operators_1.map(function (_a) {
- var bearing = _a[0], fov = _a[1];
- var background = vd.h("div.BearingIndicatorBackground", {}, []);
- var backgroundCircle = vd.h("div.BearingIndicatorBackgroundCircle", {}, []);
- var north = _this._createNorth(bearing);
- var cameraSector = _this._createCircleSectorCompass(_this._createCircleSector(Math.max(Math.PI / 20, fov), "#FFF"));
+ var nodeFov$ = rxjs_1.combineLatest(this._navigator.stateService.currentState$.pipe(operators_1.distinctUntilChanged(undefined, function (frame) {
+ return frame.state.currentNode.key;
+ })), this._navigator.panService.panNodes$).pipe(operators_1.map(function (_a) {
+ var frame = _a[0], panNodes = _a[1];
+ var node = frame.state.currentNode;
+ var transform = frame.state.currentTransform;
+ if (node.pano) {
+ var panoHFov = 2 * Math.PI * node.gpano.CroppedAreaImageWidthPixels / node.gpano.FullPanoWidthPixels;
+ return [panoHFov / 2, panoHFov / 2];
+ }
+ var currentProjectedPoints = _this._computeProjectedPoints(transform);
+ var hFov = _this._spatial.degToRad(_this._computeHorizontalFov(currentProjectedPoints));
+ var hFovLeft = hFov / 2;
+ var hFovRight = hFov / 2;
+ for (var _i = 0, panNodes_1 = panNodes; _i < panNodes_1.length; _i++) {
+ var _b = panNodes_1[_i], n = _b[0], f = _b[2];
+ var diff = _this._spatial.wrap(n.ca - node.ca, -180, 180);
+ if (diff < 0) {
+ hFovLeft = _this._spatial.degToRad(Math.abs(diff)) + f / 2;
+ }
+ else {
+ hFovRight = _this._spatial.degToRad(Math.abs(diff)) + f / 2;
+ }
+ }
+ return [hFovLeft, hFovRight];
+ }), operators_1.distinctUntilChanged(function (_a, _b) {
+ var hFovLeft1 = _a[0], hFovRight1 = _a[1];
+ var hFovLeft2 = _b[0], hFovRight2 = _b[1];
+ return Math.abs(hFovLeft2 - hFovLeft1) < _this._distinctThreshold &&
+ Math.abs(hFovRight2 - hFovRight1) < _this._distinctThreshold;
+ }));
+ var offset$ = rxjs_1.combineLatest(this._navigator.stateService.currentState$.pipe(operators_1.distinctUntilChanged(undefined, function (frame) {
+ return frame.state.currentNode.key;
+ })), this._container.renderService.bearing$).pipe(operators_1.map(function (_a) {
+ var frame = _a[0], bearing = _a[1];
+ var offset = _this._spatial.degToRad(frame.state.currentNode.ca - bearing);
+ return offset;
+ }));
+ var nodeFovOperation$ = new rxjs_1.Subject();
+ var smoothNodeFov$ = nodeFovOperation$.pipe(operators_1.scan(function (state, operation) {
+ return operation(state);
+ }, { alpha: 0, curr: [0, 0, 0], prev: [0, 0, 0] }), operators_1.map(function (state) {
+ var alpha = _this._unitBezier.solve(state.alpha);
+ var curr = state.curr;
+ var prev = state.prev;
+ return [
+ _this._interpolate(prev[0], curr[0], alpha),
+ _this._interpolate(prev[1], curr[1], alpha),
+ ];
+ }));
+ this._fovSubscription = nodeFov$.pipe(operators_1.map(function (nbf) {
+ return function (state) {
+ var a = _this._unitBezier.solve(state.alpha);
+ var c = state.curr;
+ var p = state.prev;
+ var prev = [
+ _this._interpolate(p[0], c[0], a),
+ _this._interpolate(p[1], c[1], a),
+ ];
+ var curr = nbf.slice();
+ return {
+ alpha: 0,
+ curr: curr,
+ prev: prev,
+ };
+ };
+ }))
+ .subscribe(nodeFovOperation$);
+ this._fovAnimationSubscription = nodeFov$.pipe(operators_1.switchMap(function () {
+ return _this._container.renderService.renderCameraFrame$.pipe(operators_1.skip(1), operators_1.scan(function (alpha) {
+ return alpha + _this._animationSpeed;
+ }, 0), operators_1.takeWhile(function (alpha) {
+ return alpha <= 1 + _this._animationSpeed;
+ }), operators_1.map(function (alpha) {
+ return Math.min(alpha, 1);
+ }));
+ }), operators_1.map(function (alpha) {
+ return function (nbfState) {
+ return {
+ alpha: alpha,
+ curr: nbfState.curr.slice(),
+ prev: nbfState.prev.slice(),
+ };
+ };
+ }))
+ .subscribe(nodeFovOperation$);
+ var nodeBearingFov$ = rxjs_1.combineLatest(offset$, smoothNodeFov$).pipe(operators_1.map(function (_a) {
+ var offset = _a[0], fov = _a[1];
+ return [offset, fov[0], fov[1]];
+ }));
+ this._renderSubscription = rxjs_1.combineLatest(cameraBearingFov$, nodeBearingFov$, this._configuration$, this._container.renderService.size$).pipe(operators_1.map(function (_a) {
+ var _b = _a[0], cb = _b[0], cf = _b[1], _c = _a[1], no = _c[0], nfl = _c[1], nfr = _c[2], configuration = _a[2], size = _a[3];
+ var background = _this._createBackground(cb);
+ var fovIndicator = _this._createFovIndicator(nfl, nfr, no);
+ var north = _this._createNorth(cb);
+ var cameraSector = _this._createCircleSectorCompass(_this._createCircleSector(Math.max(Math.PI / 20, cf), "#FFF"));
+ var compact = configuration.size === ComponentSize_1.default.Small ||
+ configuration.size === ComponentSize_1.default.Automatic && size.width < 640 ?
+ ".BearingCompact" : "";
return {
name: _this._name,
- vnode: vd.h("div.BearingIndicatorContainer", { oncontextmenu: function (event) { event.preventDefault(); } }, [
+ vnode: vd.h("div.BearingIndicatorContainer" + compact, { oncontextmenu: function (event) { event.preventDefault(); } }, [
background,
- backgroundCircle,
+ fovIndicator,
north,
cameraSector,
]),
};
BearingComponent.prototype._deactivate = function () {
this._renderSubscription.unsubscribe();
+ this._fovSubscription.unsubscribe();
+ this._fovAnimationSubscription.unsubscribe();
};
BearingComponent.prototype._getDefaultConfiguration = function () {
- return {};
+ return { size: ComponentSize_1.default.Automatic };
+ };
+ BearingComponent.prototype._createFovIndicator = function (fovLeft, fovRigth, offset) {
+ var arc = this._createFovArc(fovLeft, fovRigth);
+ var group = vd.h("g", {
+ attributes: { transform: "translate(18,18)" },
+ namespace: this._svgNamespace,
+ }, [arc]);
+ var svg = vd.h("svg", {
+ attributes: { viewBox: "0 0 36 36" },
+ namespace: this._svgNamespace,
+ style: {
+ height: "36px",
+ left: "2px",
+ position: "absolute",
+ top: "2px",
+ transform: "rotateZ(" + this._spatial.radToDeg(offset) + "deg)",
+ width: "36px",
+ },
+ }, [group]);
+ return svg;
+ };
+ BearingComponent.prototype._createFovArc = function (fovLeft, fovRigth) {
+ var radius = 16.75;
+ var strokeWidth = 2.5;
+ var fov = fovLeft + fovRigth;
+ if (fov > 2 * Math.PI - Math.PI / 90) {
+ return vd.h("circle", {
+ attributes: {
+ cx: "0",
+ cy: "0",
+ "fill-opacity": "0",
+ r: "" + radius,
+ stroke: "#FFF",
+ "stroke-width": "" + strokeWidth,
+ },
+ namespace: this._svgNamespace,
+ }, []);
+ }
+ var arcStart = -Math.PI / 2 - fovLeft;
+ var arcEnd = arcStart + fov;
+ var startX = radius * Math.cos(arcStart);
+ var startY = radius * Math.sin(arcStart);
+ var endX = radius * Math.cos(arcEnd);
+ var endY = radius * Math.sin(arcEnd);
+ var largeArc = fov >= Math.PI ? 1 : 0;
+ var description = "M " + startX + " " + startY + " A " + radius + " " + radius + " 0 " + largeArc + " 1 " + endX + " " + endY;
+ return vd.h("path", {
+ attributes: {
+ d: description,
+ "fill-opacity": "0",
+ stroke: "#FFF",
+ "stroke-width": "" + strokeWidth,
+ },
+ namespace: this._svgNamespace,
+ }, []);
};
BearingComponent.prototype._createCircleSectorCompass = function (cameraSector) {
var group = vd.h("g", {
attributes: { viewBox: "0 0 2 2" },
namespace: this._svgNamespace,
style: {
- height: "30px",
- left: "4px",
+ height: "26px",
+ left: "7px",
position: "absolute",
- top: "4px",
- width: "30px",
+ top: "7px",
+ width: "26px",
},
}, [group]);
return svg;
};
BearingComponent.prototype._createNorth = function (bearing) {
var north = vd.h("div.BearingNorth", []);
- var container = vd.h("div.BearingNorthContainer", { style: { transform: "rotateZ(" + -bearing * 180 / Math.PI + "deg)" } }, [north]);
+ var container = vd.h("div.BearingNorthContainer", { style: { transform: "rotateZ(" + this._spatial.radToDeg(-bearing) + "deg)" } }, [north]);
return container;
};
+ BearingComponent.prototype._createBackground = function (bearing) {
+ return vd.h("div.BearingIndicatorBackground", { style: { transform: "rotateZ(" + this._spatial.radToDeg(-bearing) + "deg)" } }, [
+ vd.h("div.BearingIndicatorBackgroundCircle", []),
+ vd.h("div.BearingIndicatorBackgroundArrowContainer", [
+ vd.h("div.BearingIndicatorBackgroundArrow", []),
+ ]),
+ ]);
+ };
+ BearingComponent.prototype._computeProjectedPoints = function (transform) {
+ var vertices = [[1, 0]];
+ var directions = [[0, 0.5]];
+ var pointsPerLine = 12;
+ return Geo_1.Geo.computeProjectedPoints(transform, vertices, directions, pointsPerLine, this._viewportCoords);
+ };
+ BearingComponent.prototype._computeHorizontalFov = function (projectedPoints) {
+ var _this = this;
+ var fovs = projectedPoints
+ .map(function (projectedPoint) {
+ return _this._coordToFov(projectedPoint[0]);
+ });
+ var fov = Math.min.apply(Math, fovs);
+ return fov;
+ };
+ BearingComponent.prototype._coordToFov = function (x) {
+ return this._spatial.radToDeg(2 * Math.atan(x));
+ };
+ BearingComponent.prototype._interpolate = function (x1, x2, alpha) {
+ return (1 - alpha) * x1 + alpha * x2;
+ };
BearingComponent.componentName = "bearing";
return BearingComponent;
}(Component_1.Component));
Component_1.ComponentService.register(BearingComponent);
exports.default = BearingComponent;
-},{"../Component":274,"../Geo":277,"rxjs/operators":224,"virtual-dom":230}],291:[function(require,module,exports){
+
+},{"../Component":275,"../Geo":278,"../geo/ViewportCoords":389,"./utils/ComponentSize":373,"@mapbox/unitbezier":2,"rxjs":27,"rxjs/operators":225,"virtual-dom":231}],292:[function(require,module,exports){
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
Component_1.ComponentService.register(CacheComponent);
exports.default = CacheComponent;
-},{"../Component":274,"../Edge":275,"rxjs":26,"rxjs/operators":224}],292:[function(require,module,exports){
+},{"../Component":275,"../Edge":276,"rxjs":27,"rxjs/operators":225}],293:[function(require,module,exports){
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
exports.Component = Component;
exports.default = Component;
-},{"../Utils":284,"rxjs":26,"rxjs/operators":224}],293:[function(require,module,exports){
+},{"../Utils":285,"rxjs":27,"rxjs/operators":225}],294:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var Error_1 = require("../Error");
this.get(name).deactivate();
}
};
- ComponentService.prototype.resize = function () {
- for (var componentName in this._components) {
- if (!this._components.hasOwnProperty(componentName)) {
- continue;
- }
- var component = this._components[componentName];
- component.component.resize();
- }
- };
ComponentService.prototype.get = function (name) {
return this._components[name].component;
};
exports.ComponentService = ComponentService;
exports.default = ComponentService;
-},{"../Error":276}],294:[function(require,module,exports){
+},{"../Error":277}],295:[function(require,module,exports){
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
CoverComponent.prototype._getCoverButtonVNode = function (configuration) {
var _this = this;
var cover = configuration.state === Component_1.CoverState.Loading ? "div.Cover.CoverLoading" : "div.Cover";
- var coverButton = vd.h("div.CoverButton", { onclick: function () { _this.configure({ state: Component_1.CoverState.Loading }); } }, [vd.h("div.CoverButtonIcon", [])]);
+ var coverButton = vd.h("div.CoverButton", [vd.h("div.CoverButtonIcon", [])]);
var coverLogo = vd.h("a.CoverLogo", { href: Utils_1.Urls.explore, target: "_blank" }, []);
- return vd.h(cover, [this._getCoverBackgroundVNode(configuration), coverButton, coverLogo]);
+ var coverIndicator = vd.h("div.CoverIndicator", { onclick: function () { _this.configure({ state: Component_1.CoverState.Loading }); } }, []);
+ return vd.h(cover, [
+ this._getCoverBackgroundVNode(configuration),
+ coverIndicator,
+ coverButton,
+ coverLogo,
+ ]);
};
CoverComponent.prototype._getCoverBackgroundVNode = function (conf) {
var url = conf.src != null ?
Component_1.ComponentService.registerCover(CoverComponent);
exports.default = CoverComponent;
-},{"../Component":274,"../Utils":284,"../Viewer":285,"rxjs":26,"rxjs/operators":224,"virtual-dom":230}],295:[function(require,module,exports){
+},{"../Component":275,"../Utils":285,"../Viewer":286,"rxjs":27,"rxjs/operators":225,"virtual-dom":231}],296:[function(require,module,exports){
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
Component_1.ComponentService.register(DebugComponent);
exports.default = DebugComponent;
-},{"../Component":274,"rxjs":26,"rxjs/operators":224,"virtual-dom":230}],296:[function(require,module,exports){
+},{"../Component":275,"rxjs":27,"rxjs/operators":225,"virtual-dom":231}],297:[function(require,module,exports){
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
exports.default = ImageComponent;
-},{"../Component":274,"../Utils":284,"rxjs":26,"rxjs/operators":224,"virtual-dom":230}],297:[function(require,module,exports){
+},{"../Component":275,"../Utils":285,"rxjs":27,"rxjs/operators":225,"virtual-dom":231}],298:[function(require,module,exports){
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
Component_1.ComponentService.register(LoadingComponent);
exports.default = LoadingComponent;
-},{"../Component":274,"rxjs":26,"rxjs/operators":224,"virtual-dom":230}],298:[function(require,module,exports){
+},{"../Component":275,"rxjs":27,"rxjs/operators":225,"virtual-dom":231}],299:[function(require,module,exports){
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
Component_1.ComponentService.register(NavigationComponent);
exports.default = NavigationComponent;
-},{"../Component":274,"../Edge":275,"../Error":276,"rxjs":26,"rxjs/operators":224,"virtual-dom":230}],299:[function(require,module,exports){
+},{"../Component":275,"../Edge":276,"../Error":277,"rxjs":27,"rxjs/operators":225,"virtual-dom":231}],300:[function(require,module,exports){
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
Component_1.ComponentService.register(RouteComponent);
exports.default = RouteComponent;
-},{"../Component":274,"rxjs":26,"rxjs/operators":224,"virtual-dom":230}],300:[function(require,module,exports){
+},{"../Component":275,"rxjs":27,"rxjs/operators":225,"virtual-dom":231}],301:[function(require,module,exports){
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
Component_1.ComponentService.register(StatsComponent);
exports.default = StatsComponent;
-},{"../Component":274,"rxjs":26,"rxjs/operators":224}],301:[function(require,module,exports){
+},{"../Component":275,"rxjs":27,"rxjs/operators":225}],302:[function(require,module,exports){
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
};
})();
Object.defineProperty(exports, "__esModule", { value: true });
+var vd = require("virtual-dom");
var rxjs_1 = require("rxjs");
var operators_1 = require("rxjs/operators");
-var vd = require("virtual-dom");
var Component_1 = require("../../Component");
/**
* @class DirectionComponent
var _this = _super.call(this, name, container, navigator) || this;
_this._renderer = !!directionDOMRenderer ?
directionDOMRenderer :
- new Component_1.DirectionDOMRenderer(_this.defaultConfiguration, container.element);
+ new Component_1.DirectionDOMRenderer(_this.defaultConfiguration, { height: container.element.offsetHeight, width: container.element.offsetWidth });
_this._hoveredKeySubject$ = new rxjs_1.Subject();
_this._hoveredKey$ = _this._hoveredKeySubject$.pipe(operators_1.share());
return _this;
DirectionComponent.prototype.setMaxWidth = function (maxWidth) {
this.configure({ maxWidth: maxWidth });
};
- /** @inheritdoc */
- DirectionComponent.prototype.resize = function () {
- this._renderer.resize(this._container.element);
- };
DirectionComponent.prototype._activate = function () {
var _this = this;
this._configurationSubscription = this._configuration$
.subscribe(function (configuration) {
_this._renderer.setConfiguration(configuration);
});
+ this._resizeSubscription = this._container.renderService.size$
+ .subscribe(function (size) {
+ _this._renderer.resize(size);
+ });
this._nodeSubscription = this._navigator.stateService.currentNode$.pipe(operators_1.tap(function (node) {
_this._container.domRenderer.render$.next({ name: _this._name, vnode: vd.h("div", {}, []) });
_this._renderer.setNode(node);
Component_1.ComponentService.register(DirectionComponent);
exports.default = DirectionComponent;
-},{"../../Component":274,"rxjs":26,"rxjs/operators":224,"virtual-dom":230}],302:[function(require,module,exports){
+
+},{"../../Component":275,"rxjs":27,"rxjs/operators":225,"virtual-dom":231}],303:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var Geo_1 = require("../../Geo");
* @classdesc Helper class for calculating DOM CSS properties.
*/
var DirectionDOMCalculator = /** @class */ (function () {
- function DirectionDOMCalculator(configuration, element) {
+ function DirectionDOMCalculator(configuration, size) {
this._spatial = new Geo_1.Spatial();
this._minThresholdWidth = 320;
this._maxThresholdWidth = 1480;
this._minThresholdHeight = 240;
this._maxThresholdHeight = 820;
this._configure(configuration);
- this._resize(element);
+ this._resize(size);
this._reset();
}
Object.defineProperty(DirectionDOMCalculator.prototype, "minWidth", {
};
/**
* Resizes all properties according to the width and height
- * of the element.
+ * of the size object.
*
- * @param {HTMLElement} element The container element from which to extract
- * the width and height.
+ * @param {ISize} size The size of the container element.
*/
- DirectionDOMCalculator.prototype.resize = function (element) {
- this._resize(element);
+ DirectionDOMCalculator.prototype.resize = function (size) {
+ this._resize(size);
this._reset();
};
/**
this._minWidth = configuration.minWidth;
this._maxWidth = this._getMaxWidth(configuration.minWidth, configuration.maxWidth);
};
- DirectionDOMCalculator.prototype._resize = function (element) {
- this._elementWidth = element.offsetWidth;
- this._elementHeight = element.offsetHeight;
+ DirectionDOMCalculator.prototype._resize = function (size) {
+ this._elementWidth = size.width;
+ this._elementHeight = size.height;
};
DirectionDOMCalculator.prototype._reset = function () {
this._containerWidth = this._getContainerWidth(this._elementWidth, this._elementHeight);
exports.default = DirectionDOMCalculator;
-},{"../../Geo":277}],303:[function(require,module,exports){
+},{"../../Geo":278}],304:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var vd = require("virtual-dom");
* @classdesc DOM renderer for direction arrows.
*/
var DirectionDOMRenderer = /** @class */ (function () {
- function DirectionDOMRenderer(configuration, element) {
+ function DirectionDOMRenderer(configuration, size) {
this._isEdge = false;
this._spatial = new Geo_1.Spatial();
- this._calculator = new Component_1.DirectionDOMCalculator(configuration, element);
+ this._calculator = new Component_1.DirectionDOMCalculator(configuration, size);
this._node = null;
this._rotation = { phi: 0, theta: 0 };
this._epsilon = 0.5 * Math.PI / 180;
* Detect the element's width and height and resize
* elements accordingly.
*
- * @param {HTMLElement} element Viewer container element.
+ * @param {ISize} size Size of vßiewer container element.
*/
- DirectionDOMRenderer.prototype.resize = function (element) {
- this._calculator.resize(element);
+ DirectionDOMRenderer.prototype.resize = function (size) {
+ this._calculator.resize(size);
this._setNeedsRender();
};
DirectionDOMRenderer.prototype._setNeedsRender = function () {
exports.default = DirectionDOMRenderer;
-},{"../../Component":274,"../../Edge":275,"../../Error":276,"../../Geo":277,"virtual-dom":230}],304:[function(require,module,exports){
+},{"../../Component":275,"../../Edge":276,"../../Error":277,"../../Geo":278,"virtual-dom":231}],305:[function(require,module,exports){
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
var rxjs_1 = require("rxjs");
var operators_1 = require("rxjs/operators");
var Component_1 = require("../../Component");
+var Viewer_1 = require("../../Viewer");
var Render_1 = require("../../Render");
var Tiles_1 = require("../../Tiles");
var Utils_1 = require("../../Utils");
+var ViewportCoords_1 = require("../../geo/ViewportCoords");
+var Spatial_1 = require("../../geo/Spatial");
var ImagePlaneComponent = /** @class */ (function (_super) {
__extends(ImagePlaneComponent, _super);
function ImagePlaneComponent(name, container, navigator) {
this._setRegionOfInterestSubscription = textureProvider$.pipe(operators_1.switchMap(function (provider) {
return roiTrigger$.pipe(operators_1.map(function (_a) {
var camera = _a[0], size = _a[1], transform = _a[2];
+ var basic = new ViewportCoords_1.default().viewportToBasic(0, 0, transform, camera.perspective);
+ if (basic[0] < 0 || basic[1] < 0 || basic[0] > 1 || basic[1] > 1) {
+ return undefined;
+ }
return [
_this._roiCalculator.computeRegionOfInterest(camera, size, transform),
provider,
];
+ }), operators_1.filter(function (args) {
+ return !!args;
}));
}), operators_1.filter(function (args) {
return !args[1].disposed;
};
}))
.subscribe(this._rendererOperation$);
+ this._clearPeripheryPlaneSubscription = this._navigator.panService.panNodes$.pipe(operators_1.filter(function (panNodes) {
+ return panNodes.length === 0;
+ }), operators_1.map(function () {
+ return function (renderer) {
+ renderer.clearPeripheryPlanes();
+ return renderer;
+ };
+ }))
+ .subscribe(this._rendererOperation$);
+ var cachedPanNodes$ = this._navigator.panService.panNodes$.pipe(operators_1.switchMap(function (nts) {
+ return rxjs_1.from(nts).pipe(operators_1.mergeMap(function (_a) {
+ var n = _a[0], t = _a[1];
+ return rxjs_1.combineLatest(_this._navigator.graphService.cacheNode$(n.key).pipe(operators_1.catchError(function (error) {
+ console.error("Failed to cache periphery node (" + n.key + ")", error);
+ return rxjs_1.empty();
+ })), rxjs_1.of(t));
+ }));
+ }), operators_1.share());
+ this._addPeripheryPlaneSubscription = cachedPanNodes$.pipe(operators_1.map(function (_a) {
+ var n = _a[0], t = _a[1];
+ return function (renderer) {
+ renderer.addPeripheryPlane(n, t);
+ return renderer;
+ };
+ }))
+ .subscribe(this._rendererOperation$);
+ this._updatePeripheryPlaneTextureSubscription = cachedPanNodes$.pipe(operators_1.mergeMap(function (_a) {
+ var n = _a[0];
+ return Viewer_1.ImageSize.Size2048 > Math.max(n.image.width, n.image.height) ?
+ n.cacheImage$(Viewer_1.ImageSize.Size2048).pipe(operators_1.catchError(function () {
+ return rxjs_1.empty();
+ })) :
+ rxjs_1.empty();
+ }), operators_1.map(function (n) {
+ return function (renderer) {
+ renderer.updateTextureImage(n.image, n);
+ return renderer;
+ };
+ }))
+ .subscribe(this._rendererOperation$);
+ var inTransition$ = this._navigator.stateService.currentState$.pipe(operators_1.map(function (frame) {
+ return frame.state.alpha < 1;
+ }), operators_1.distinctUntilChanged());
+ var panTrigger$ = rxjs_1.combineLatest(this._container.mouseService.active$, this._container.touchService.active$, this._navigator.stateService.inMotion$, inTransition$).pipe(operators_1.map(function (_a) {
+ var mouseActive = _a[0], touchActive = _a[1], inMotion = _a[2], inTransition = _a[3];
+ return !(mouseActive || touchActive || inMotion || inTransition);
+ }), operators_1.filter(function (trigger) {
+ return trigger;
+ }));
+ this._moveToPeripheryNodeSubscription = this._navigator.panService.panNodes$.pipe(operators_1.switchMap(function (nts) {
+ return panTrigger$.pipe(operators_1.withLatestFrom(_this._container.renderService.renderCamera$, _this._navigator.stateService.currentNode$, _this._navigator.stateService.currentTransform$), operators_1.mergeMap(function (_a) {
+ var renderCamera = _a[1], currentNode = _a[2], currentTransform = _a[3];
+ return rxjs_1.of([
+ renderCamera,
+ currentNode,
+ currentTransform,
+ nts,
+ ]);
+ }));
+ }), operators_1.switchMap(function (_a) {
+ var camera = _a[0], cn = _a[1], ct = _a[2], nts = _a[3];
+ var direction = camera.camera.lookat.clone().sub(camera.camera.position);
+ var cd = new Spatial_1.default().viewingDirection(cn.rotation);
+ var ca = cd.angleTo(direction);
+ var closest = [ca, undefined];
+ var basic = new ViewportCoords_1.default().viewportToBasic(0, 0, ct, camera.perspective);
+ if (basic[0] >= 0 && basic[0] <= 1 && basic[1] >= 0 && basic[1] <= 1) {
+ closest[0] = Number.NEGATIVE_INFINITY;
+ }
+ for (var _i = 0, nts_1 = nts; _i < nts_1.length; _i++) {
+ var n = nts_1[_i][0];
+ var d = new Spatial_1.default().viewingDirection(n.rotation);
+ var a = d.angleTo(direction);
+ if (a < closest[0]) {
+ closest[0] = a;
+ closest[1] = n.key;
+ }
+ }
+ if (!closest[1]) {
+ return rxjs_1.empty();
+ }
+ return _this._navigator.moveToKey$(closest[1]).pipe(operators_1.catchError(function () {
+ return rxjs_1.empty();
+ }));
+ }))
+ .subscribe();
};
ImagePlaneComponent.prototype._deactivate = function () {
this._rendererDisposer$.next(null);
this._textureProviderSubscription.unsubscribe();
this._updateBackgroundSubscription.unsubscribe();
this._updateTextureImageSubscription.unsubscribe();
+ this._clearPeripheryPlaneSubscription.unsubscribe();
+ this._addPeripheryPlaneSubscription.unsubscribe();
+ this._updatePeripheryPlaneTextureSubscription.unsubscribe();
+ this._moveToPeripheryNodeSubscription.unsubscribe();
};
ImagePlaneComponent.prototype._getDefaultConfiguration = function () {
return {};
Component_1.ComponentService.register(ImagePlaneComponent);
exports.default = ImagePlaneComponent;
-},{"../../Component":274,"../../Render":280,"../../Tiles":283,"../../Utils":284,"rxjs":26,"rxjs/operators":224}],305:[function(require,module,exports){
+},{"../../Component":275,"../../Render":281,"../../Tiles":284,"../../Utils":285,"../../Viewer":286,"../../geo/Spatial":387,"../../geo/ViewportCoords":389,"rxjs":27,"rxjs/operators":225}],306:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var Component_1 = require("../../Component");
ImagePlaneGLRenderer.prototype.indicateNeedsRender = function () {
this._needsRender = true;
};
+ ImagePlaneGLRenderer.prototype.addPeripheryPlane = function (node, transform) {
+ var mesh = this._factory.createMesh(node, transform);
+ var planes = {};
+ planes[node.key] = mesh;
+ this._scene.addPeripheryPlanes(planes);
+ this._needsRender = true;
+ };
+ ImagePlaneGLRenderer.prototype.clearPeripheryPlanes = function () {
+ this._scene.setPeripheryPlanes({});
+ this._needsRender = true;
+ };
ImagePlaneGLRenderer.prototype.updateFrame = function (frame) {
this._updateFrameId(frame.id);
this._needsRender = this._updateAlpha(frame.state.alpha) || this._needsRender;
}
this._providerDisposers[key] = dispose;
};
- ImagePlaneGLRenderer.prototype._updateTexture = function (texture) {
- this._needsRender = true;
- for (var _i = 0, _a = this._scene.imagePlanes; _i < _a.length; _i++) {
- var plane = _a[_i];
- var material = plane.material;
- var oldTexture = material.uniforms.projectorTex.value;
- material.uniforms.projectorTex.value = null;
- oldTexture.dispose();
- material.uniforms.projectorTex.value = texture;
- }
- };
ImagePlaneGLRenderer.prototype.updateTextureImage = function (image, node) {
- if (this._currentKey !== node.key) {
- return;
- }
this._needsRender = true;
- for (var _i = 0, _a = this._scene.imagePlanes; _i < _a.length; _i++) {
- var plane = _a[_i];
+ var planes = this._extend({}, this._scene.planes, this._scene.planesOld, this._scene.planesPeriphery);
+ for (var key in planes) {
+ if (!planes.hasOwnProperty(key)) {
+ continue;
+ }
+ if (key !== node.key) {
+ continue;
+ }
+ var plane = planes[key];
var material = plane.material;
var texture = material.uniforms.projectorTex.value;
texture.image = image;
}
};
ImagePlaneGLRenderer.prototype.render = function (perspectiveCamera, renderer) {
- var planeAlpha = this._scene.imagePlanesOld.length ? 1 : this._alpha;
- for (var _i = 0, _a = this._scene.imagePlanes; _i < _a.length; _i++) {
- var plane = _a[_i];
+ var planes = this._scene.planes;
+ var planesOld = this._scene.planesOld;
+ var planesPeriphery = this._scene.planesPeriphery;
+ var planeAlpha = Object.keys(planesOld).length ? 1 : this._alpha;
+ var peripheryAlpha = Object.keys(planesOld).length ? 1 : Math.floor(this._alpha);
+ for (var key in planes) {
+ if (!planes.hasOwnProperty(key)) {
+ continue;
+ }
+ var plane = planes[key];
plane.material.uniforms.opacity.value = planeAlpha;
}
- for (var _b = 0, _c = this._scene.imagePlanesOld; _b < _c.length; _b++) {
- var plane = _c[_b];
+ for (var key in planesOld) {
+ if (!planesOld.hasOwnProperty(key)) {
+ continue;
+ }
+ var plane = planesOld[key];
plane.material.uniforms.opacity.value = this._alphaOld;
}
+ for (var key in planesPeriphery) {
+ if (!planesPeriphery.hasOwnProperty(key)) {
+ continue;
+ }
+ var plane = planesPeriphery[key];
+ plane.material.uniforms.opacity.value = peripheryAlpha;
+ }
+ renderer.render(this._scene.scenePeriphery, perspectiveCamera);
renderer.render(this._scene.scene, perspectiveCamera);
renderer.render(this._scene.sceneOld, perspectiveCamera);
- for (var _d = 0, _e = this._scene.imagePlanes; _d < _e.length; _d++) {
- var plane = _e[_d];
+ for (var key in planes) {
+ if (!planes.hasOwnProperty(key)) {
+ continue;
+ }
+ var plane = planes[key];
plane.material.uniforms.opacity.value = this._alpha;
}
renderer.render(this._scene.scene, perspectiveCamera);
if (previousKey != null) {
if (previousKey !== this._currentKey && previousKey !== this._previousKey) {
var previousMesh = this._factory.createMesh(state.previousNode, state.previousTransform);
- this._scene.updateImagePlanes([previousMesh]);
+ var previousPlanes = {};
+ previousPlanes[previousKey] = previousMesh;
+ this._scene.updateImagePlanes(previousPlanes);
}
this._previousKey = previousKey;
}
this._currentKey = currentKey;
var currentMesh = this._factory.createMesh(state.currentNode, state.currentTransform);
- this._scene.updateImagePlanes([currentMesh]);
+ var planes = {};
+ planes[currentKey] = currentMesh;
+ this._scene.updateImagePlanes(planes);
this._alphaOld = 1;
return true;
};
+ ImagePlaneGLRenderer.prototype._updateTexture = function (texture) {
+ this._needsRender = true;
+ var planes = this._scene.planes;
+ for (var key in planes) {
+ if (!planes.hasOwnProperty(key)) {
+ continue;
+ }
+ var plane = planes[key];
+ var material = plane.material;
+ var oldTexture = material.uniforms.projectorTex.value;
+ material.uniforms.projectorTex.value = null;
+ oldTexture.dispose();
+ material.uniforms.projectorTex.value = texture;
+ }
+ };
+ ImagePlaneGLRenderer.prototype._extend = function (dest) {
+ var sources = [];
+ for (var _i = 1; _i < arguments.length; _i++) {
+ sources[_i - 1] = arguments[_i];
+ }
+ for (var _a = 0, sources_1 = sources; _a < sources_1.length; _a++) {
+ var src = sources_1[_a];
+ for (var k in src) {
+ if (!src.hasOwnProperty(k)) {
+ continue;
+ }
+ dest[k] = src[k];
+ }
+ }
+ return dest;
+ };
return ImagePlaneGLRenderer;
}());
exports.ImagePlaneGLRenderer = ImagePlaneGLRenderer;
exports.default = ImagePlaneGLRenderer;
-},{"../../Component":274}],306:[function(require,module,exports){
+},{"../../Component":275}],307:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var CoverState;
CoverState[CoverState["Visible"] = 2] = "Visible";
})(CoverState = exports.CoverState || (exports.CoverState = {}));
-},{}],307:[function(require,module,exports){
+},{}],308:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
/**
SliderMode[SliderMode["Stationary"] = 1] = "Stationary";
})(SliderMode = exports.SliderMode || (exports.SliderMode = {}));
-},{}],308:[function(require,module,exports){
+},{}],309:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var ICoverConfiguration_1 = require("./ICoverConfiguration");
var ISliderConfiguration_1 = require("./ISliderConfiguration");
exports.SliderMode = ISliderConfiguration_1.SliderMode;
-},{"./ICoverConfiguration":306,"./ISliderConfiguration":307}],309:[function(require,module,exports){
+},{"./ICoverConfiguration":307,"./ISliderConfiguration":308}],310:[function(require,module,exports){
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
exports.KeyPlayHandler = KeyPlayHandler;
exports.default = KeyPlayHandler;
-},{"../../Component":274,"../../Edge":275,"rxjs/operators":224}],310:[function(require,module,exports){
+},{"../../Component":275,"../../Edge":276,"rxjs/operators":225}],311:[function(require,module,exports){
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
exports.KeySequenceNavigationHandler = KeySequenceNavigationHandler;
exports.default = KeySequenceNavigationHandler;
-},{"../../Component":274,"../../Edge":275,"../../Error":276,"rxjs/operators":224}],311:[function(require,module,exports){
+},{"../../Component":275,"../../Edge":276,"../../Error":277,"rxjs/operators":225}],312:[function(require,module,exports){
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
exports.KeySpatialNavigationHandler = KeySpatialNavigationHandler;
exports.default = KeySpatialNavigationHandler;
-},{"../../Component":274,"../../Edge":275,"../../Error":276,"rxjs/operators":224}],312:[function(require,module,exports){
+},{"../../Component":275,"../../Edge":276,"../../Error":277,"rxjs/operators":225}],313:[function(require,module,exports){
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
exports.KeyZoomHandler = KeyZoomHandler;
exports.default = KeyZoomHandler;
-},{"../../Component":274,"rxjs/operators":224}],313:[function(require,module,exports){
+},{"../../Component":275,"rxjs/operators":225}],314:[function(require,module,exports){
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
Component_1.ComponentService.register(KeyboardComponent);
exports.default = KeyboardComponent;
-},{"../../Component":274,"../../Geo":277}],314:[function(require,module,exports){
+},{"../../Component":275,"../../Geo":278}],315:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var MarkerComponent_1 = require("./MarkerComponent");
var CircleMarker_1 = require("./marker/CircleMarker");
exports.CircleMarker = CircleMarker_1.CircleMarker;
-},{"./MarkerComponent":315,"./marker/CircleMarker":318,"./marker/SimpleMarker":320}],315:[function(require,module,exports){
+},{"./MarkerComponent":316,"./marker/CircleMarker":319,"./marker/SimpleMarker":321}],316:[function(require,module,exports){
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
exports.default = MarkerComponent;
-},{"../../Component":274,"../../Geo":277,"../../Graph":278,"../../Render":280,"rxjs":26,"rxjs/operators":224,"three":225,"when":271}],316:[function(require,module,exports){
+},{"../../Component":275,"../../Geo":278,"../../Graph":279,"../../Render":281,"rxjs":27,"rxjs/operators":225,"three":226,"when":272}],317:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var THREE = require("three");
exports.MarkerScene = MarkerScene;
exports.default = MarkerScene;
-},{"three":225}],317:[function(require,module,exports){
+},{"three":226}],318:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var rbush = require("rbush");
exports.MarkerSet = MarkerSet;
exports.default = MarkerSet;
-},{"rbush":25,"rxjs":26}],318:[function(require,module,exports){
+},{"rbush":26,"rxjs":27}],319:[function(require,module,exports){
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
exports.CircleMarker = CircleMarker;
exports.default = CircleMarker;
-},{"../../../Component":274,"three":225}],319:[function(require,module,exports){
+},{"../../../Component":275,"three":226}],320:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
/**
exports.Marker = Marker;
exports.default = Marker;
-},{}],320:[function(require,module,exports){
+},{}],321:[function(require,module,exports){
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
exports.SimpleMarker = SimpleMarker;
exports.default = SimpleMarker;
-},{"../../../Component":274,"three":225}],321:[function(require,module,exports){
+},{"../../../Component":275,"three":226}],322:[function(require,module,exports){
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
var _this = this;
var inTransition$ = this._navigator.stateService.currentState$.pipe(operators_1.map(function (frame) {
return frame.state.alpha < 1;
- }));
+ }), operators_1.distinctUntilChanged());
this._bounceSubscription = rxjs_1.combineLatest(inTransition$, this._navigator.stateService.inTranslation$, this._container.mouseService.active$, this._container.touchService.active$).pipe(operators_1.map(function (noForce) {
return noForce[0] || noForce[1] || noForce[2] || noForce[3];
}), operators_1.distinctUntilChanged(), operators_1.switchMap(function (noForce) {
return noForce ?
rxjs_1.empty() :
rxjs_1.combineLatest(_this._container.renderService.renderCamera$, _this._navigator.stateService.currentTransform$.pipe(operators_1.first()));
- }))
+ }), operators_1.withLatestFrom(this._navigator.panService.panNodes$))
.subscribe(function (_a) {
- var render = _a[0], transform = _a[1];
+ var _b = _a[0], render = _b[0], transform = _b[1], nts = _a[1];
if (!transform.hasValidScale && render.camera.focal < 0.1) {
return;
}
return;
}
var distances = Component_1.ImageBoundary.viewportDistances(transform, render.perspective, _this._viewportCoords);
+ var basic = _this._viewportCoords.viewportToBasic(0, 0, transform, render.perspective);
+ if ((basic[0] < 0 || basic[0] > 1) && nts.length > 0) {
+ distances[0] = distances[2] = 0;
+ }
+ for (var _i = 0, nts_1 = nts; _i < nts_1.length; _i++) {
+ var _c = nts_1[_i], t = _c[1];
+ var d = Component_1.ImageBoundary.viewportDistances(t, render.perspective, _this._viewportCoords);
+ for (var i = 1; i < distances.length; i += 2) {
+ if (d[i] < distances[i]) {
+ distances[i] = d[i];
+ }
+ }
+ }
if (Math.max.apply(Math, distances) < 0.01) {
return;
}
exports.BounceHandler = BounceHandler;
exports.default = BounceHandler;
-},{"../../Component":274,"rxjs":26,"rxjs/operators":224}],322:[function(require,module,exports){
+},{"../../Component":275,"rxjs":27,"rxjs/operators":225}],323:[function(require,module,exports){
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
exports.DoubleClickZoomHandler = DoubleClickZoomHandler;
exports.default = DoubleClickZoomHandler;
-},{"../../Component":274,"rxjs":26,"rxjs/operators":224}],323:[function(require,module,exports){
+},{"../../Component":275,"rxjs":27,"rxjs/operators":225}],324:[function(require,module,exports){
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
return pair[0] != null && pair[1] != null;
}));
return rxjs_1.merge(mouseDrag$, singleTouchDrag$);
- }), operators_1.withLatestFrom(this._container.renderService.renderCamera$, this._navigator.stateService.currentTransform$), operators_1.map(function (_a) {
- var events = _a[0], render = _a[1], transform = _a[2];
+ }), operators_1.withLatestFrom(this._container.renderService.renderCamera$, this._navigator.stateService.currentTransform$, this._navigator.panService.panNodes$), operators_1.map(function (_a) {
+ var events = _a[0], render = _a[1], transform = _a[2], nts = _a[3];
var previousEvent = events[0];
var event = events[1];
var movementX = event.clientX - previousEvent.clientX;
var phi = (movementX > 0 ? 1 : -1) * directionX.angleTo(currentDirection);
var theta = (movementY > 0 ? -1 : 1) * directionY.angleTo(currentDirection);
var distances = Component_1.ImageBoundary.viewportDistances(transform, render.perspective, _this._viewportCoords);
+ for (var _i = 0, nts_1 = nts; _i < nts_1.length; _i++) {
+ var _c = nts_1[_i], t = _c[1];
+ var d = Component_1.ImageBoundary.viewportDistances(t, render.perspective, _this._viewportCoords);
+ for (var i = 0; i < distances.length; i++) {
+ if (d[i] < distances[i]) {
+ distances[i] = d[i];
+ }
+ }
+ }
if (distances[0] > 0 && theta < 0) {
theta /= Math.max(1, 2e2 * distances[0]);
}
exports.DragPanHandler = DragPanHandler;
exports.default = DragPanHandler;
-},{"../../Component":274,"rxjs":26,"rxjs/operators":224}],324:[function(require,module,exports){
+},{"../../Component":275,"rxjs":27,"rxjs/operators":225}],325:[function(require,module,exports){
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
exports.EarthControlHandler = EarthControlHandler;
exports.default = EarthControlHandler;
-},{"../../Component":274,"../../State":281,"rxjs":26,"rxjs/operators":224,"three":225}],325:[function(require,module,exports){
+},{"../../Component":275,"../../State":282,"rxjs":27,"rxjs/operators":225,"three":226}],326:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var Geo_1 = require("../../../src/Geo");
}
exports.viewportDistances = viewportDistances;
-},{"../../../src/Geo":277}],326:[function(require,module,exports){
+},{"../../../src/Geo":278}],327:[function(require,module,exports){
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
Component_1.ComponentService.register(MouseComponent);
exports.default = MouseComponent;
-},{"../../Component":274,"../../Geo":277}],327:[function(require,module,exports){
+},{"../../Component":275,"../../Geo":278}],328:[function(require,module,exports){
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
exports.ScrollZoomHandler = ScrollZoomHandler;
exports.default = ScrollZoomHandler;
-},{"../../Component":274,"rxjs/operators":224}],328:[function(require,module,exports){
+},{"../../Component":275,"rxjs/operators":225}],329:[function(require,module,exports){
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
exports.TouchZoomHandler = TouchZoomHandler;
exports.default = TouchZoomHandler;
-},{"../../Component":274,"rxjs":26,"rxjs/operators":224}],329:[function(require,module,exports){
+},{"../../Component":275,"rxjs":27,"rxjs/operators":225}],330:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var Popup_1 = require("./popup/Popup");
var PopupComponent_1 = require("./PopupComponent");
exports.PopupComponent = PopupComponent_1.PopupComponent;
-},{"./PopupComponent":330,"./popup/Popup":331}],330:[function(require,module,exports){
+},{"./PopupComponent":331,"./popup/Popup":332}],331:[function(require,module,exports){
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
Component_1.ComponentService.register(PopupComponent);
exports.default = PopupComponent;
-},{"../../Component":274,"../../Utils":284,"rxjs":26,"rxjs/operators":224}],331:[function(require,module,exports){
+},{"../../Component":275,"../../Utils":285,"rxjs":27,"rxjs/operators":225}],332:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var rxjs_1 = require("rxjs");
}
}
if (pointPixel == null) {
- this._container.style.visibility = "hidden";
+ this._container.style.display = "none";
return;
}
- this._container.style.visibility = "visible";
+ this._container.style.display = "";
if (!float) {
var width = this._container.offsetWidth;
var height = this._container.offsetHeight;
exports.default = Popup;
-},{"../../../Geo":277,"../../../Utils":284,"../../../Viewer":285,"rxjs":26}],332:[function(require,module,exports){
+},{"../../../Geo":278,"../../../Utils":285,"../../../Viewer":286,"rxjs":27}],333:[function(require,module,exports){
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
SequenceComponent.prototype.setVisible = function (visible) {
this.configure({ visible: visible });
};
- /** @inheritdoc */
- SequenceComponent.prototype.resize = function () {
- var _this = this;
- this._configuration$.pipe(operators_1.first(), operators_1.map(function (configuration) {
- return _this._sequenceDOMRenderer.getContainerWidth(_this._container.element, configuration);
- }))
- .subscribe(function (containerWidth) {
- _this._containerWidth$.next(containerWidth);
- });
- };
SequenceComponent.prototype._activate = function () {
var _this = this;
this._sequenceDOMRenderer.activate();
.subscribe(function (direction) {
_this._navigator.playService.setDirection(direction);
});
- this._containerWidthSubscription = this._configuration$.pipe(operators_1.distinctUntilChanged(function (value1, value2) {
+ this._containerWidthSubscription = rxjs_1.combineLatest(this._container.renderService.size$, this._configuration$.pipe(operators_1.distinctUntilChanged(function (value1, value2) {
return value1[0] === value2[0] && value1[1] === value2[1];
}, function (configuration) {
return [configuration.minWidth, configuration.maxWidth];
- }), operators_1.map(function (configuration) {
- return _this._sequenceDOMRenderer.getContainerWidth(_this._container.element, configuration);
+ }))).pipe(operators_1.map(function (_a) {
+ var size = _a[0], configuration = _a[1];
+ return _this._sequenceDOMRenderer.getContainerWidth(size, configuration);
}))
.subscribe(this._containerWidth$);
this._playingSubscription = this._configuration$.pipe(operators_1.map(function (configuration) {
Component_1.ComponentService.register(SequenceComponent);
exports.default = SequenceComponent;
-},{"../../Component":274,"../../Edge":275,"../../Graph":278,"rxjs":26,"rxjs/operators":224}],333:[function(require,module,exports){
+},{"../../Component":275,"../../Edge":276,"../../Graph":279,"rxjs":27,"rxjs/operators":225}],334:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var rxjs_1 = require("rxjs");
var timeline = this._createTimelineControls(containerWidth, index, max);
return vd.h("div.SequenceContainer", [stepper, controls, playback, timeline]);
};
- SequenceDOMRenderer.prototype.getContainerWidth = function (element, configuration) {
- var elementWidth = element.offsetWidth;
- var elementHeight = element.offsetHeight;
+ SequenceDOMRenderer.prototype.getContainerWidth = function (size, configuration) {
var minWidth = configuration.minWidth;
var maxWidth = configuration.maxWidth;
if (maxWidth < minWidth) {
maxWidth = minWidth;
}
- var relativeWidth = (elementWidth - this._minThresholdWidth) / (this._maxThresholdWidth - this._minThresholdWidth);
- var relativeHeight = (elementHeight - this._minThresholdHeight) / (this._maxThresholdHeight - this._minThresholdHeight);
+ var relativeWidth = (size.width - this._minThresholdWidth) / (this._maxThresholdWidth - this._minThresholdWidth);
+ var relativeHeight = (size.height - this._minThresholdHeight) / (this._maxThresholdHeight - this._minThresholdHeight);
var coeff = Math.max(0, Math.min(1, Math.min(relativeWidth, relativeHeight)));
return minWidth + coeff * (maxWidth - minWidth);
};
exports.SequenceDOMRenderer = SequenceDOMRenderer;
exports.default = SequenceDOMRenderer;
-
-},{"../../Component":274,"../../Edge":275,"../../Error":276,"rxjs":26,"rxjs/operators":224,"virtual-dom":230}],334:[function(require,module,exports){
+},{"../../Component":275,"../../Edge":276,"../../Error":277,"rxjs":27,"rxjs/operators":225,"virtual-dom":231}],335:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var SequenceMode;
})(SequenceMode = exports.SequenceMode || (exports.SequenceMode = {}));
exports.default = SequenceMode;
-},{}],335:[function(require,module,exports){
+},{}],336:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
fragment: "#ifdef GL_FRAGMENT_PRECISION_HIGH\nprecision highp float;\n#else\nprecision mediump float;\n#endif\n\nuniform sampler2D projectorTex;\nuniform float opacity;\nuniform float focal;\nuniform float k1;\nuniform float k2;\nuniform float scale_x;\nuniform float scale_y;\nuniform float radial_peak;\nuniform float curtain;\n\nvarying vec4 vRstq;\n\nvoid main()\n{\n float x = vRstq.x / vRstq.z;\n float y = vRstq.y / vRstq.z;\n float r2 = x * x + y * y;\n\n if (radial_peak > 0. && r2 > radial_peak * sqrt(r2)) {\n r2 = radial_peak * radial_peak;\n }\n\n float d = 1.0 + k1 * r2 + k2 * r2 * r2;\n float u = scale_x * focal * d * x + 0.5;\n float v = - scale_y * focal * d * y + 0.5;\n\n vec4 baseColor;\n if ((u < curtain || curtain >= 1.0) && u >= 0. && u <= 1. && v >= 0. && v <= 1.) {\n baseColor = texture2D(projectorTex, vec2(u, v));\n baseColor.a = opacity;\n } else {\n baseColor = vec4(0.0, 0.0, 0.0, 0.0);\n }\n\n gl_FragColor = baseColor;\n}\n",
vertex: "#ifdef GL_ES\nprecision highp float;\n#endif\n\nuniform mat4 projectorMat;\n\nvarying vec4 vRstq;\n\nvoid main()\n{\n vRstq = projectorMat * vec4(position, 1.0);\n gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n}",
};
+ Shaders.fisheye = {
+ fragment: "#ifdef GL_FRAGMENT_PRECISION_HIGH\nprecision highp float;\n#else\nprecision mediump float;\n#endif\n\nuniform sampler2D projectorTex;\nuniform float opacity;\nuniform float focal;\nuniform float k1;\nuniform float k2;\nuniform float scale_x;\nuniform float scale_y;\nuniform float radial_peak;\n\nvarying vec4 vRstq;\n\nvoid main()\n{\n float x = vRstq.x;\n float y = vRstq.y;\n float z = vRstq.z;\n\n float r = sqrt(x * x + y * y);\n float theta = atan(r, z);\n\n if (radial_peak > 0. && theta > radial_peak) {\n theta = radial_peak;\n }\n\n float theta2 = theta * theta;\n float theta_d = theta * (1.0 + theta2 * (k1 + theta2 * k2));\n float s = focal * theta_d / r;\n\n float u = scale_x * s * x + 0.5;\n float v = -scale_y * s * y + 0.5;\n\n vec4 baseColor;\n if (u >= 0. && u <= 1. && v >= 0. && v <= 1.) {\n baseColor = texture2D(projectorTex, vec2(u, v));\n baseColor.a = opacity;\n } else {\n baseColor = vec4(0.0, 0.0, 0.0, 0.0);\n }\n\n gl_FragColor = baseColor;\n}\n",
+ vertex: "#ifdef GL_ES\nprecision highp float;\n#endif\n\nuniform mat4 projectorMat;\n\nvarying vec4 vRstq;\n\nvoid main()\n{\n vRstq = projectorMat * vec4(position, 1.0);\n gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n}",
+ };
+ Shaders.fisheyeCurtain = {
+ fragment: "#ifdef GL_FRAGMENT_PRECISION_HIGH\nprecision highp float;\n#else\nprecision mediump float;\n#endif\n\nuniform sampler2D projectorTex;\nuniform float opacity;\nuniform float focal;\nuniform float k1;\nuniform float k2;\nuniform float scale_x;\nuniform float scale_y;\nuniform float radial_peak;\nuniform float curtain;\n\nvarying vec4 vRstq;\n\nvoid main()\n{\n float x = vRstq.x;\n float y = vRstq.y;\n float z = vRstq.z;\n\n float r2 = sqrt(x * x + y * y);\n float theta = atan(r2, z);\n\n if (radial_peak > 0. && theta > radial_peak) {\n theta = radial_peak;\n }\n\n float theta2 = theta * theta;\n float theta_d = theta * (1.0 + theta2 * (k1 + theta2 * k2));\n float s = focal * theta_d / r2;\n\n float u = scale_x * s * x + 0.5;\n float v = -scale_y * s * y + 0.5;\n\n vec4 baseColor;\n if ((u < curtain || curtain >= 1.0) && u >= 0. && u <= 1. && v >= 0. && v <= 1.) {\n baseColor = texture2D(projectorTex, vec2(u, v));\n baseColor.a = opacity;\n } else {\n baseColor = vec4(0.0, 0.0, 0.0, 0.0);\n }\n\n gl_FragColor = baseColor;\n}\n",
+ vertex: "#ifdef GL_ES\nprecision highp float;\n#endif\n\nuniform mat4 projectorMat;\n\nvarying vec4 vRstq;\n\nvoid main()\n{\n vRstq = projectorMat * vec4(position, 1.0);\n gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n}",
+ };
Shaders.perspectiveDistorted = {
fragment: "#ifdef GL_FRAGMENT_PRECISION_HIGH\nprecision highp float;\n#else\nprecision mediump float;\n#endif\n\nuniform sampler2D projectorTex;\nuniform float opacity;\n\nvarying vec4 vRstq;\n\nvoid main()\n{\n float u = vRstq.x / vRstq.w;\n float v = vRstq.y / vRstq.w;\n\n vec4 baseColor;\n if (u >= 0. && u <= 1. && v >= 0. && v <= 1.) {\n baseColor = texture2D(projectorTex, vec2(u, v));\n baseColor.a = opacity;\n } else {\n baseColor = vec4(0.0, 0.0, 0.0, 0.0);\n }\n\n gl_FragColor = baseColor;\n}\n",
vertex: "#ifdef GL_ES\nprecision highp float;\n#endif\n\nuniform mat4 projectorMat;\n\nvarying vec4 vRstq;\n\nvoid main()\n{\n vRstq = projectorMat * vec4(position, 1.0);\n gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n}\n",
exports.Shaders = Shaders;
-},{"path":22}],336:[function(require,module,exports){
+},{"path":23}],337:[function(require,module,exports){
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
* components when activating the slider component to avoid
* interfering UI elements.
*
- * To retrive and use the marker component
+ * To retrive and use the slider component
*
* @example
* ```
*
* viewer.activateComponent("slider");
*
- * var sliderComponent = viewer.getComponent("marker");
+ * var sliderComponent = viewer.getComponent("slider");
* ```
*/
var SliderComponent = /** @class */ (function (_super) {
exports.default = SliderComponent;
-},{"../../Component":274,"../../Geo":277,"../../Render":280,"../../State":281,"../../Tiles":283,"../../Utils":284,"rxjs":26,"rxjs/operators":224}],337:[function(require,module,exports){
+},{"../../Component":275,"../../Geo":278,"../../Render":281,"../../State":282,"../../Tiles":284,"../../Utils":285,"rxjs":27,"rxjs/operators":225}],338:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var rxjs_1 = require("rxjs");
var modeVisible = !(motionless || pano);
if (modeVisible) {
children.push(this._createModeButton(mode));
+ children.push(this._createModeButton2d(mode));
}
children.push(this._createPositionInput(position, modeVisible));
}
var _this = this;
var properties = {
onclick: function () {
- _this._notifyModeChanged$.next(mode === Component_1.SliderMode.Motion ?
- Component_1.SliderMode.Stationary :
- Component_1.SliderMode.Motion);
+ if (mode === Component_1.SliderMode.Motion) {
+ return;
+ }
+ _this._notifyModeChanged$.next(Component_1.SliderMode.Motion);
},
};
var className = mode === Component_1.SliderMode.Stationary ?
- "SliderModeButtonPressed" :
+ "SliderModeButtonDisabled" :
"SliderModeButton";
return vd.h("div." + className, properties, [vd.h("div.SliderModeIcon", [])]);
};
+ SliderDOMRenderer.prototype._createModeButton2d = function (mode) {
+ var _this = this;
+ var properties = {
+ onclick: function () {
+ if (mode === Component_1.SliderMode.Stationary) {
+ return;
+ }
+ _this._notifyModeChanged$.next(Component_1.SliderMode.Stationary);
+ },
+ };
+ var className = mode === Component_1.SliderMode.Motion ?
+ "SliderModeButton2dDisabled" :
+ "SliderModeButton2d";
+ return vd.h("div." + className, properties, [vd.h("div.SliderModeIcon2d", [])]);
+ };
SliderDOMRenderer.prototype._createPositionInput = function (position, modeVisible) {
var _this = this;
var onChange = function (e) {
}
};
var boundingRect = this._container.domContainer.getBoundingClientRect();
- var width = Math.max(215, Math.min(400, boundingRect.width - 105)) - 68 + (modeVisible ? 0 : 36);
+ var width = Math.max(215, Math.min(400, boundingRect.width - 105)) - 84 + (modeVisible ? 0 : 52);
var positionInput = vd.h("input.SliderPosition", {
max: 1000,
min: 0,
exports.SliderDOMRenderer = SliderDOMRenderer;
exports.default = SliderDOMRenderer;
-},{"../../Component":274,"rxjs":26,"rxjs/operators":224,"virtual-dom":230}],338:[function(require,module,exports){
+},{"../../Component":275,"rxjs":27,"rxjs/operators":225,"virtual-dom":231}],339:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var Component_1 = require("../../Component");
this._needsRender = true;
};
SliderGLRenderer.prototype.updateTexture = function (image, node) {
- var imagePlanes = node.key === this._currentKey ?
- this._scene.imagePlanes :
+ var planes = node.key === this._currentKey ?
+ this._scene.planes :
node.key === this._previousKey ?
- this._scene.imagePlanesOld :
- [];
- if (imagePlanes.length === 0) {
+ this._scene.planesOld :
+ {};
+ if (Object.keys(planes).length === 0) {
return;
}
this._needsRender = true;
- for (var _i = 0, imagePlanes_1 = imagePlanes; _i < imagePlanes_1.length; _i++) {
- var plane = imagePlanes_1[_i];
+ for (var key in planes) {
+ if (!planes.hasOwnProperty(key)) {
+ continue;
+ }
+ var plane = planes[key];
var material = plane.material;
var texture = material.uniforms.projectorTex.value;
texture.image = image;
return;
}
this._needsRender = true;
- for (var _i = 0, _a = this._scene.imagePlanes; _i < _a.length; _i++) {
- var plane = _a[_i];
+ var planes = this._scene.planes;
+ for (var key in planes) {
+ if (!planes.hasOwnProperty(key)) {
+ continue;
+ }
+ var plane = planes[key];
var material = plane.material;
var texture = material.uniforms.projectorTex.value;
texture.image = image;
providerDisposers[key] = dispose;
};
SliderGLRenderer.prototype._updateCurtain = function () {
- for (var _i = 0, _a = this._scene.imagePlanes; _i < _a.length; _i++) {
- var plane = _a[_i];
+ var planes = this._scene.planes;
+ for (var key in planes) {
+ if (!planes.hasOwnProperty(key)) {
+ continue;
+ }
+ var plane = planes[key];
var shaderMaterial = plane.material;
if (!!shaderMaterial.uniforms.curtain) {
shaderMaterial.uniforms.curtain.value = this._curtain;
}
}
if (this.disabled) {
- this._scene.setImagePlanesOld([]);
+ this._scene.setImagePlanesOld({});
}
else {
if (previousChanged || modeChanged) {
mesh = this._factory.createMesh(state.previousNode, state.previousTransform);
}
}
- this._scene.setImagePlanesOld([mesh]);
+ var previousPlanes = {};
+ previousPlanes[previousNode.key] = mesh;
+ this._scene.setImagePlanesOld(previousPlanes);
}
}
if (currentChanged || modeChanged) {
delete this._currentProviderDisposers[this._currentKey];
}
this._currentKey = state.currentNode.key;
- var imagePlanes = [];
+ var planes = {};
if (state.currentNode.fullPano) {
- imagePlanes.push(this._factory.createCurtainMesh(state.currentNode, state.currentTransform));
+ planes[state.currentNode.key] = this._factory.createCurtainMesh(state.currentNode, state.currentTransform);
}
else if (state.currentNode.pano && !state.currentNode.fullPano) {
- imagePlanes.push(this._factory.createMesh(state.currentNode, state.currentTransform));
+ planes[state.currentNode.key] = this._factory.createMesh(state.currentNode, state.currentTransform);
}
else {
if (motionless) {
- imagePlanes.push(this._factory.createDistortedCurtainMesh(state.currentNode, state.currentTransform));
+ planes[state.currentNode.key] = this._factory.createDistortedCurtainMesh(state.currentNode, state.currentTransform);
}
else {
- imagePlanes.push(this._factory.createCurtainMesh(state.currentNode, state.currentTransform));
+ planes[state.currentNode.key] = this._factory.createCurtainMesh(state.currentNode, state.currentTransform);
}
}
- this._scene.setImagePlanes(imagePlanes);
+ this._scene.setImagePlanes(planes);
this._updateCurtain();
}
};
SliderGLRenderer.prototype._updateTexture = function (texture) {
this._needsRender = true;
- for (var _i = 0, _a = this._scene.imagePlanes; _i < _a.length; _i++) {
- var plane = _a[_i];
+ var planes = this._scene.planes;
+ for (var key in planes) {
+ if (!planes.hasOwnProperty(key)) {
+ continue;
+ }
+ var plane = planes[key];
var material = plane.material;
var oldTexture = material.uniforms.projectorTex.value;
material.uniforms.projectorTex.value = null;
};
SliderGLRenderer.prototype._updateTexturePrev = function (texture) {
this._needsRender = true;
- for (var _i = 0, _a = this._scene.imagePlanesOld; _i < _a.length; _i++) {
- var plane = _a[_i];
+ var planes = this._scene.planesOld;
+ for (var key in planes) {
+ if (!planes.hasOwnProperty(key)) {
+ continue;
+ }
+ var plane = planes[key];
var material = plane.material;
var oldTexture = material.uniforms.projectorTex.value;
material.uniforms.projectorTex.value = null;
exports.default = SliderGLRenderer;
-},{"../../Component":274,"../../Geo":277}],339:[function(require,module,exports){
+},{"../../Component":275,"../../Geo":278}],340:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var geohash = require("latlon-geohash");
}
SpatialDataCache.prototype.cacheReconstructions$ = function (hash) {
var _this = this;
- if (!(hash in this._tiles)) {
+ if (!this.hasTile(hash)) {
throw new Error("Cannot cache reconstructions of a non-existing tile.");
}
if (this.hasReconstructions(hash)) {
throw new Error("Cannot cache reconstructions that already exists.");
}
- if (hash in this._cachingReconstructions$) {
+ if (this.isCachingReconstructions(hash)) {
return this._cachingReconstructions$[hash];
}
var tile = [];
if (this.hasTile(hash)) {
throw new Error("Cannot cache tile that already exists.");
}
- if (hash in this._cachingTiles$) {
+ if (this.hasTile(hash)) {
return this._cachingTiles$[hash];
}
var bounds = geohash.bounds(hash);
var sw = { lat: bounds.sw.lat, lon: bounds.sw.lon };
var ne = { lat: bounds.ne.lat, lon: bounds.ne.lon };
this._tiles[hash] = [];
- this._cachingTiles$[hash] = this._graphService.cacheBoundingBox$(sw, ne).pipe(operators_1.catchError(function () {
+ this._cachingTiles$[hash] = this._graphService.cacheBoundingBox$(sw, ne).pipe(operators_1.catchError(function (error) {
+ console.error(error);
delete _this._tiles[hash];
return rxjs_1.empty();
}), operators_1.map(function (nodes) {
SpatialDataCache.prototype._createNodeData = function (node) {
return {
alt: node.alt,
+ cameraProjection: node.cameraProjection,
focal: node.focal,
gpano: node.gpano,
height: node.height,
exports.SpatialDataCache = SpatialDataCache;
exports.default = SpatialDataCache;
-},{"../../Error":276,"../../Utils":284,"latlon-geohash":21,"rxjs":26,"rxjs/operators":224}],340:[function(require,module,exports){
+},{"../../Error":277,"../../Utils":285,"latlon-geohash":21,"rxjs":27,"rxjs/operators":225}],341:[function(require,module,exports){
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
}
SpatialDataComponent.prototype._activate = function () {
var _this = this;
+ this._earthControlsSubscription = this._configuration$.pipe(operators_1.map(function (configuration) {
+ return configuration.earthControls;
+ }), operators_1.distinctUntilChanged(), operators_1.withLatestFrom(this._navigator.stateService.state$))
+ .subscribe(function (_a) {
+ var earth = _a[0], state = _a[1];
+ if (earth && state !== State_1.default.Earth) {
+ _this._navigator.stateService.earth();
+ }
+ else if (!earth && state === State_1.default.Earth) {
+ _this._navigator.stateService.traverse();
+ }
+ });
var direction$ = this._container.renderService.bearing$.pipe(operators_1.map(function (bearing) {
var direction = "";
if (bearing > 292.5 || bearing <= 67.5) {
var playing = _a[0], speed = _a[1];
return playing && speed > PlayService_1.default.sequenceSpeed;
}), operators_1.distinctUntilChanged(), operators_1.publishReplay(1), operators_1.refCount());
- this._addSubscription = this._navigator.stateService.state$.pipe(operators_1.map(function (state) {
+ this._addSubscription = rxjs_1.combineLatest(this._navigator.stateService.state$.pipe(operators_1.map(function (state) {
return state === State_1.default.Earth;
- }), operators_1.distinctUntilChanged(), operators_1.switchMap(function (earth) {
- if (earth) {
- return rxjs_1.combineLatest(hash$, sequencePlay$).pipe(operators_1.mergeMap(function (_a) {
- var hash = _a[0], sequencePlay = _a[1];
- return sequencePlay ?
- rxjs_1.of([hash]) :
- rxjs_1.of(_this._adjacentComponent(hash, 4));
- }));
+ }), operators_1.distinctUntilChanged()), hash$, sequencePlay$, direction$).pipe(operators_1.distinctUntilChanged(function (_a, _b) {
+ var e1 = _a[0], h1 = _a[1], s1 = _a[2], d1 = _a[3];
+ var e2 = _b[0], h2 = _b[1], s2 = _b[2], d2 = _b[3];
+ if (e1 !== e2) {
+ return false;
}
- return rxjs_1.combineLatest(hash$, sequencePlay$, direction$).pipe(operators_1.mergeMap(function (_a) {
- var hash = _a[0], sequencePlay = _a[1], direction = _a[2];
+ if (e1) {
+ return h1 === h2 && s1 === s2;
+ }
+ return h1 === h2 && s1 === s2 && d1 === d2;
+ }), operators_1.concatMap(function (_a) {
+ var earth = _a[0], hash = _a[1], sequencePlay = _a[2], direction = _a[3];
+ if (earth) {
return sequencePlay ?
- rxjs_1.of([hash, geohash.neighbours(hash)[direction]]) :
- rxjs_1.of(_this._computeTiles(hash, direction));
- }));
+ rxjs_1.of([hash]) :
+ rxjs_1.of(_this._adjacentComponent(hash, 4));
+ }
+ return sequencePlay ?
+ rxjs_1.of([hash, geohash.neighbours(hash)[direction]]) :
+ rxjs_1.of(_this._computeTiles(hash, direction));
}), operators_1.switchMap(function (hashes) {
return rxjs_1.from(hashes).pipe(operators_1.mergeMap(function (h) {
var tile$;
};
}))
.subscribe(this._container.glRenderer.render$);
- this._earthControlsSubscription = this._configuration$.pipe(operators_1.map(function (configuration) {
- return configuration.earthControls;
- }), operators_1.distinctUntilChanged(), operators_1.withLatestFrom(this._navigator.stateService.state$))
- .subscribe(function (_a) {
- var earth = _a[0], state = _a[1];
- if (earth && state !== State_1.default.Earth) {
- _this._navigator.stateService.earth();
- }
- else if (!earth && state === State_1.default.Earth) {
- _this._navigator.stateService.traverse();
- }
- });
};
SpatialDataComponent.prototype._deactivate = function () {
var _this = this;
- this._navigator.stateService.state$.pipe(operators_1.first())
- .subscribe(function (state) {
- if (state === State_1.default.Earth) {
- _this._navigator.stateService.traverse();
- }
- });
this._cache.uncache();
this._scene.uncache();
this._addSubscription.unsubscribe();
this._tileVisibilitySubscription.unsubscribe();
this._uncacheSubscription.unsubscribe();
this._visualizeConnectedComponentSubscription.unsubscribe();
+ this._navigator.stateService.state$.pipe(operators_1.first())
+ .subscribe(function (state) {
+ if (state === State_1.default.Earth) {
+ _this._navigator.stateService.traverse();
+ }
+ });
};
SpatialDataComponent.prototype._getDefaultConfiguration = function () {
return { camerasVisible: false, pointsVisible: true, positionsVisible: false, tilesVisible: false };
};
SpatialDataComponent.prototype._createTransform = function (data, reference) {
var translation = Geo_1.Geo.computeTranslation({ alt: data.alt, lat: data.lat, lon: data.lon }, data.rotation, reference);
- var transform = new Geo_1.Transform(data.orientation, data.width, data.height, data.focal, data.scale, data.gpano, data.rotation, translation, undefined, undefined, data.k1, data.k2);
+ var transform = new Geo_1.Transform(data.orientation, data.width, data.height, data.focal, data.scale, data.gpano, data.rotation, translation, undefined, undefined, data.k1, data.k2, data.cameraProjection);
return transform;
};
SpatialDataComponent.prototype._computeTiles = function (hash, direction) {
Component_1.ComponentService.register(SpatialDataComponent);
exports.default = SpatialDataComponent;
-},{"../../Component":274,"../../Geo":277,"../../Render":280,"../../state/State":411,"../../viewer/PlayService":440,"latlon-geohash":21,"rxjs":26,"rxjs/operators":224}],341:[function(require,module,exports){
+},{"../../Component":275,"../../Geo":278,"../../Render":281,"../../state/State":413,"../../viewer/PlayService":443,"latlon-geohash":21,"rxjs":27,"rxjs/operators":225}],342:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var THREE = require("three");
exports.SpatialDataScene = SpatialDataScene;
exports.default = SpatialDataScene;
-},{"three":225}],342:[function(require,module,exports){
+},{"three":226}],343:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var GeometryTagError_1 = require("./error/GeometryTagError");
var TagMode_1 = require("./TagMode");
exports.TagMode = TagMode_1.TagMode;
-},{"./TagComponent":343,"./TagMode":346,"./error/GeometryTagError":350,"./geometry/PointGeometry":352,"./geometry/PolygonGeometry":353,"./geometry/RectGeometry":354,"./tag/OutlineTag":366,"./tag/SpotTag":369,"./tag/TagDomain":371}],343:[function(require,module,exports){
+},{"./TagComponent":344,"./TagMode":347,"./error/GeometryTagError":351,"./geometry/PointGeometry":353,"./geometry/PolygonGeometry":354,"./geometry/RectGeometry":355,"./tag/OutlineTag":367,"./tag/SpotTag":370,"./tag/TagDomain":372}],344:[function(require,module,exports){
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
* tags that do not have a fill will also be returned if the point is inside
* the geometry of the tag. Tags with point geometries can not be retrieved.
*
- * No tag ids will be returned for panoramas.
+ * No tag ids will be returned for polygons rendered in cropped panoramas or
+ * rectangles rendered in panoramas.
*
* Notice that the pixelPoint argument requires x, y coordinates from pixel space.
*
Component_1.ComponentService.register(TagComponent);
exports.default = TagComponent;
-},{"../../Component":274,"../../Geo":277,"../../Render":280,"rxjs":26,"rxjs/operators":224,"when":271}],344:[function(require,module,exports){
+},{"../../Component":275,"../../Geo":278,"../../Render":281,"rxjs":27,"rxjs/operators":225,"when":272}],345:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var operators_1 = require("rxjs/operators");
exports.TagCreator = TagCreator;
exports.default = TagCreator;
-},{"../../Component":274,"rxjs":26,"rxjs/operators":224}],345:[function(require,module,exports){
+},{"../../Component":275,"rxjs":27,"rxjs/operators":225}],346:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var vd = require("virtual-dom");
}());
exports.TagDOMRenderer = TagDOMRenderer;
-},{"virtual-dom":230}],346:[function(require,module,exports){
+},{"virtual-dom":231}],347:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
/**
})(TagMode = exports.TagMode || (exports.TagMode = {}));
exports.default = TagMode;
-},{}],347:[function(require,module,exports){
+},{}],348:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var TagOperation;
})(TagOperation = exports.TagOperation || (exports.TagOperation = {}));
exports.default = TagOperation;
-},{}],348:[function(require,module,exports){
+},{}],349:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var THREE = require("three");
exports.TagScene = TagScene;
exports.default = TagScene;
-},{"three":225}],349:[function(require,module,exports){
+},{"three":226}],350:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var rxjs_1 = require("rxjs");
exports.TagSet = TagSet;
exports.default = TagSet;
-},{"../../Component":274,"rxjs":26}],350:[function(require,module,exports){
+},{"../../Component":275,"rxjs":27}],351:[function(require,module,exports){
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
exports.GeometryTagError = GeometryTagError;
exports.default = Error_1.MapillaryError;
-},{"../../../Error":276}],351:[function(require,module,exports){
+},{"../../../Error":277}],352:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var rxjs_1 = require("rxjs");
exports.Geometry = Geometry;
exports.default = Geometry;
-},{"rxjs":26}],352:[function(require,module,exports){
+},{"rxjs":27}],353:[function(require,module,exports){
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
}(Component_1.Geometry));
exports.PointGeometry = PointGeometry;
-},{"../../../Component":274}],353:[function(require,module,exports){
+},{"../../../Component":275}],354:[function(require,module,exports){
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
*/
function PolygonGeometry(polygon, holes) {
var _this = _super.call(this) || this;
- _this._subsampleThreshold = 0.01;
var polygonLength = polygon.length;
if (polygonLength < 3) {
throw new Component_1.GeometryTagError("A polygon must have three or more positions.");
};
/** @ignore */
PolygonGeometry.prototype.getPoints3d = function (transform) {
- return this._getPoints3d(this._subsample(this._polygon, this._subsampleThreshold), transform);
+ return this._getPoints3d(this._subsample(this._polygon), transform);
};
/** @ignore */
PolygonGeometry.prototype.getVertex3d = function (index, transform) {
var _this = this;
return this._holes
.map(function (hole2d) {
- return _this._getPoints3d(_this._subsample(hole2d, _this._subsampleThreshold), transform);
+ return _this._getPoints3d(_this._subsample(hole2d), transform);
});
};
/**
/** @ignore */
PolygonGeometry.prototype.getTriangles3d = function (transform) {
var _this = this;
- var threshold = this._subsampleThreshold;
- var points2d = this._project(this._subsample(this._polygon, threshold), transform);
+ if (transform.fullPano) {
+ return this._triangulatePano(this._polygon.slice(), this.holes.slice(), transform);
+ }
+ var points2d = this._project(this._subsample(this._polygon), transform);
var points3d = this.getPoints3d(transform);
var holes2d = this._holes
.map(function (hole) {
- return _this._project(_this._subsample(hole, threshold), transform);
+ return _this._project(_this._subsample(hole), transform);
});
var holes3d = this.getHolePoints3d(transform);
return this._triangulate(points2d, points3d, holes2d, holes3d);
return transform.unprojectBasic(point, 200);
});
};
- PolygonGeometry.prototype._subsample = function (points2d, threshold) {
- var subsampled = [];
- var length = points2d.length;
- for (var index = 0; index < length; index++) {
- var p1 = points2d[index];
- var p2 = points2d[(index + 1) % length];
- subsampled.push(p1);
- var dist = Math.sqrt(Math.pow((p2[0] - p1[0]), 2) + Math.pow((p2[1] - p1[1]), 2));
- var subsamples = Math.floor(dist / threshold);
- var coeff = 1 / (subsamples + 1);
- for (var i = 1; i <= subsamples; i++) {
- var alpha = i * coeff;
- var subsample = [
- (1 - alpha) * p1[0] + alpha * p2[0],
- (1 - alpha) * p1[1] + alpha * p2[1],
- ];
- subsampled.push(subsample);
- }
- }
- return subsampled;
- };
return PolygonGeometry;
}(Component_1.VertexGeometry));
exports.PolygonGeometry = PolygonGeometry;
exports.default = PolygonGeometry;
-},{"../../../Component":274}],354:[function(require,module,exports){
+},{"../../../Component":275}],355:[function(require,module,exports){
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
};
/** @ignore */
RectGeometry.prototype.getTriangles3d = function (transform) {
- return this._triangulate(this._project(this._getPoints2d(), transform), this.getPoints3d(transform));
+ return transform.fullPano ?
+ [] :
+ this._triangulate(this._project(this._getPoints2d(), transform), this.getPoints3d(transform));
};
/**
* Check if a particular bottom-right value is valid according to the current
exports.RectGeometry = RectGeometry;
exports.default = RectGeometry;
-},{"../../../Component":274}],355:[function(require,module,exports){
+},{"../../../Component":275}],356:[function(require,module,exports){
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
})();
Object.defineProperty(exports, "__esModule", { value: true });
var earcut_1 = require("earcut");
+var martinez = require("martinez-polygon-clipping");
var polylabel = require("@mapbox/polylabel");
var THREE = require("three");
var Component_1 = require("../../../Component");
* @ignore
*/
function VertexGeometry() {
- return _super.call(this) || this;
+ var _this = _super.call(this) || this;
+ _this._subsampleThreshold = 0.005;
+ return _this;
}
/**
* Finds the polygon pole of inaccessibility, the most distant internal
var pole2d = polylabel([points2d], 3e-2);
return pole2d;
};
+ VertexGeometry.prototype._project = function (points2d, transform) {
+ var camera = this._createCamera(transform.upVector().toArray(), transform.unprojectSfM([0, 0], 0), transform.unprojectSfM([0, 0], 10));
+ return this._deunproject(points2d, transform, camera);
+ };
+ VertexGeometry.prototype._subsample = function (points2d, threshold) {
+ if (threshold === void 0) { threshold = this._subsampleThreshold; }
+ var subsampled = [];
+ var length = points2d.length;
+ for (var index = 0; index < length; index++) {
+ var p1 = points2d[index];
+ var p2 = points2d[(index + 1) % length];
+ subsampled.push(p1);
+ var dist = Math.sqrt(Math.pow((p2[0] - p1[0]), 2) + Math.pow((p2[1] - p1[1]), 2));
+ var subsamples = Math.floor(dist / threshold);
+ var coeff = 1 / (subsamples + 1);
+ for (var i = 1; i <= subsamples; i++) {
+ var alpha = i * coeff;
+ var subsample = [
+ (1 - alpha) * p1[0] + alpha * p2[0],
+ (1 - alpha) * p1[1] + alpha * p2[1],
+ ];
+ subsampled.push(subsample);
+ }
+ }
+ return subsampled;
+ };
/**
* Triangulates a 2d polygon and returns the triangle
* representation as a flattened array of 3d points.
}
return triangles;
};
- VertexGeometry.prototype._project = function (points2d, transform) {
+ VertexGeometry.prototype._triangulatePano = function (points2d, holes2d, transform) {
+ var triangles = [];
+ var epsilon = 1e-9;
+ var subareasX = 3;
+ var subareasY = 3;
+ for (var x = 0; x < subareasX; x++) {
+ for (var y = 0; y < subareasY; y++) {
+ var epsilonX0 = x === 0 ? -epsilon : epsilon;
+ var epsilonY0 = y === 0 ? -epsilon : epsilon;
+ var x0 = x / subareasX + epsilonX0;
+ var y0 = y / subareasY + epsilonY0;
+ var x1 = (x + 1) / subareasX + epsilon;
+ var y1 = (y + 1) / subareasY + epsilon;
+ var bbox2d = [
+ [x0, y0],
+ [x0, y1],
+ [x1, y1],
+ [x1, y0],
+ [x0, y0],
+ ];
+ var lookat2d = [
+ (2 * x + 1) / (2 * subareasX),
+ (2 * y + 1) / (2 * subareasY),
+ ];
+ triangles.push.apply(triangles, this._triangulateSubarea(points2d, holes2d, bbox2d, lookat2d, transform));
+ }
+ }
+ return triangles;
+ };
+ VertexGeometry.prototype._unproject = function (points2d, transform, distance) {
+ if (distance === void 0) { distance = 200; }
+ return points2d
+ .map(function (point) {
+ return transform.unprojectBasic(point, distance);
+ });
+ };
+ VertexGeometry.prototype._createCamera = function (upVector, position, lookAt) {
var camera = new THREE.Camera();
- camera.up.copy(transform.upVector());
- camera.position.copy(new THREE.Vector3().fromArray(transform.unprojectSfM([0, 0], 0)));
- camera.lookAt(new THREE.Vector3().fromArray(transform.unprojectSfM([0, 0], 10)));
+ camera.up.copy(new THREE.Vector3().fromArray(upVector));
+ camera.position.copy(new THREE.Vector3().fromArray(position));
+ camera.lookAt(new THREE.Vector3().fromArray(lookAt));
camera.updateMatrix();
camera.updateMatrixWorld(true);
- var projected = points2d
+ return camera;
+ };
+ VertexGeometry.prototype._deunproject = function (points2d, transform, camera) {
+ return points2d
.map(function (point2d) {
var pointWorld = transform.unprojectBasic(point2d, 10000);
var pointCamera = new THREE.Vector3(pointWorld[0], pointWorld[1], pointWorld[2])
.applyMatrix4(camera.matrixWorldInverse);
return [pointCamera.x / pointCamera.z, pointCamera.y / pointCamera.z];
});
- return projected;
+ };
+ VertexGeometry.prototype._triangulateSubarea = function (points2d, holes2d, bbox2d, lookat2d, transform) {
+ var intersections = martinez.intersection([points2d].concat(holes2d), [bbox2d]);
+ if (!intersections) {
+ return [];
+ }
+ var triangles = [];
+ var threshold = this._subsampleThreshold;
+ var camera = this._createCamera(transform.upVector().toArray(), transform.unprojectSfM([0, 0], 0), transform.unprojectBasic(lookat2d, 10));
+ for (var _i = 0, intersections_1 = intersections; _i < intersections_1.length; _i++) {
+ var intersection = intersections_1[_i];
+ var subsampledPolygon2d = this._subsample(intersection[0], threshold);
+ var polygon2d = this._deunproject(subsampledPolygon2d, transform, camera);
+ var polygon3d = this._unproject(subsampledPolygon2d, transform);
+ var polygonHoles2d = [];
+ var polygonHoles3d = [];
+ for (var i = 1; i < intersection.length; i++) {
+ var subsampledHole2d = this._subsample(intersection[i], threshold);
+ var hole2d = this._deunproject(subsampledHole2d, transform, camera);
+ var hole3d = this._unproject(subsampledHole2d, transform);
+ polygonHoles2d.push(hole2d);
+ polygonHoles3d.push(hole3d);
+ }
+ triangles.push.apply(triangles, this._triangulate(polygon2d, polygon3d, polygonHoles2d, polygonHoles3d));
+ }
+ return triangles;
};
return VertexGeometry;
}(Component_1.Geometry));
exports.VertexGeometry = VertexGeometry;
exports.default = VertexGeometry;
-},{"../../../Component":274,"@mapbox/polylabel":1,"earcut":8,"three":225}],356:[function(require,module,exports){
+},{"../../../Component":275,"@mapbox/polylabel":1,"earcut":8,"martinez-polygon-clipping":22,"three":226}],357:[function(require,module,exports){
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
exports.CreateHandlerBase = CreateHandlerBase;
exports.default = CreateHandlerBase;
-},{"../../../Component":274,"rxjs":26,"rxjs/operators":224}],357:[function(require,module,exports){
+},{"../../../Component":275,"rxjs":27,"rxjs/operators":225}],358:[function(require,module,exports){
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
exports.CreatePointHandler = CreatePointHandler;
exports.default = CreatePointHandler;
-},{"../../../Component":274,"rxjs/operators":224}],358:[function(require,module,exports){
+},{"../../../Component":275,"rxjs/operators":225}],359:[function(require,module,exports){
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
exports.CreatePolygonHandler = CreatePolygonHandler;
exports.default = CreatePolygonHandler;
-},{"../../../Component":274}],359:[function(require,module,exports){
+},{"../../../Component":275}],360:[function(require,module,exports){
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
exports.CreateRectDragHandler = CreateRectDragHandler;
exports.default = CreateRectDragHandler;
-},{"../../../Component":274,"rxjs":26,"rxjs/operators":224}],360:[function(require,module,exports){
+},{"../../../Component":275,"rxjs":27,"rxjs/operators":225}],361:[function(require,module,exports){
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
exports.CreateRectHandler = CreateRectHandler;
exports.default = CreateRectHandler;
-},{"../../../Component":274,"rxjs/operators":224}],361:[function(require,module,exports){
+},{"../../../Component":275,"rxjs/operators":225}],362:[function(require,module,exports){
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
exports.CreateVertexHandler = CreateVertexHandler;
exports.default = CreateVertexHandler;
-},{"../../../Component":274,"rxjs":26,"rxjs/operators":224}],362:[function(require,module,exports){
+},{"../../../Component":275,"rxjs":27,"rxjs/operators":225}],363:[function(require,module,exports){
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
exports.default = EditVertexHandler;
-},{"../../../Component":274,"rxjs":26,"rxjs/operators":224}],363:[function(require,module,exports){
+},{"../../../Component":275,"rxjs":27,"rxjs/operators":225}],364:[function(require,module,exports){
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
exports.default = TagHandlerBase;
-},{"../../../Component":274}],364:[function(require,module,exports){
+},{"../../../Component":275}],365:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var operators_1 = require("rxjs/operators");
exports.default = OutlineCreateTag;
-},{"../../../Component":274,"../../../Geo":277,"rxjs":26,"rxjs/operators":224,"three":225,"virtual-dom":230}],365:[function(require,module,exports){
+},{"../../../Component":275,"../../../Geo":278,"rxjs":27,"rxjs/operators":225,"three":226,"virtual-dom":231}],366:[function(require,module,exports){
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
var _this = _super.call(this, tag, transform) || this;
_this._fill = !transform.gpano ?
_this._createFill() :
- null;
+ transform.fullPano &&
+ tag.domain === Component_1.TagDomain.TwoDimensional &&
+ tag.geometry instanceof Component_1.PolygonGeometry ?
+ _this._createFill() :
+ null;
_this._holes = _this._tag.lineWidth >= 1 ?
_this._createHoles() :
[];
_this._createOutline() :
null;
_this._geometryChangedSubscription = _this._tag.geometry.changed$
- .subscribe(function (geometry) {
+ .subscribe(function () {
if (_this._fill != null) {
_this._updateFillGeometry();
}
}
});
_this._changedSubscription = _this._tag.changed$
- .subscribe(function (changedTag) {
+ .subscribe(function () {
var glObjectsChanged = false;
if (_this._fill != null) {
_this._updateFillMaterial(_this._fill.material);
exports.OutlineRenderTag = OutlineRenderTag;
-},{"../../../Component":274,"three":225,"virtual-dom":230}],366:[function(require,module,exports){
+},{"../../../Component":275,"three":226,"virtual-dom":231}],367:[function(require,module,exports){
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
exports.OutlineTag = OutlineTag;
exports.default = OutlineTag;
-},{"../../../Component":274,"../../../Viewer":285,"rxjs":26}],367:[function(require,module,exports){
+},{"../../../Component":275,"../../../Viewer":286,"rxjs":27}],368:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var rxjs_1 = require("rxjs");
exports.RenderTag = RenderTag;
exports.default = RenderTag;
-},{"../../../Geo":277,"rxjs":26}],368:[function(require,module,exports){
+},{"../../../Geo":278,"rxjs":27}],369:[function(require,module,exports){
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
exports.SpotRenderTag = SpotRenderTag;
-},{"../../../Component":274,"../../../Viewer":285,"virtual-dom":230}],369:[function(require,module,exports){
+},{"../../../Component":275,"../../../Viewer":286,"virtual-dom":231}],370:[function(require,module,exports){
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
exports.SpotTag = SpotTag;
exports.default = SpotTag;
-},{"../../../Component":274}],370:[function(require,module,exports){
+},{"../../../Component":275}],371:[function(require,module,exports){
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
exports.Tag = Tag;
exports.default = Tag;
-},{"../../../Utils":284,"rxjs":26,"rxjs/operators":224}],371:[function(require,module,exports){
+},{"../../../Utils":285,"rxjs":27,"rxjs/operators":225}],372:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
/**
})(TagDomain = exports.TagDomain || (exports.TagDomain = {}));
exports.default = TagDomain;
-},{}],372:[function(require,module,exports){
+},{}],373:[function(require,module,exports){
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+/**
+ * Enumeration for component size.
+ * @enum {number}
+ * @readonly
+ * @description May be used by a component to allow for resizing
+ * of the UI elements rendered by the component.
+ */
+var ComponentSize;
+(function (ComponentSize) {
+ /**
+ * Automatic size. The size of the elements will automatically
+ * change at a predefined threshold.
+ */
+ ComponentSize[ComponentSize["Automatic"] = 0] = "Automatic";
+ /**
+ * Large size. The size of the elements will be fixed until another
+ * component size is configured.
+ */
+ ComponentSize[ComponentSize["Large"] = 1] = "Large";
+ /**
+ * Small size. The size of the elements will be fixed until another
+ * component size is configured.
+ */
+ ComponentSize[ComponentSize["Small"] = 2] = "Small";
+})(ComponentSize = exports.ComponentSize || (exports.ComponentSize = {}));
+exports.default = ComponentSize;
+
+},{}],374:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var HandlerBase = /** @class */ (function () {
exports.HandlerBase = HandlerBase;
exports.default = HandlerBase;
-},{}],373:[function(require,module,exports){
+},{}],375:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var THREE = require("three");
this._imageSphereRadius = imageSphereRadius != null ? imageSphereRadius : 200;
}
MeshFactory.prototype.createMesh = function (node, transform) {
- var mesh = node.pano ?
- this._createImageSphere(node, transform) :
- this._createImagePlane(node, transform);
- return mesh;
+ if (node.pano) {
+ return this._createImageSphere(node, transform);
+ }
+ else if (transform.cameraProjection === "fisheye") {
+ return this._createImagePlaneFisheye(node, transform);
+ }
+ else {
+ return this._createImagePlane(node, transform);
+ }
};
MeshFactory.prototype.createFlatMesh = function (node, transform, basicX0, basicX1, basicY0, basicY1) {
var texture = this._createTexture(node.image);
if (node.pano && !node.fullPano) {
throw new Error("Cropped panoramas cannot have curtain.");
}
- return node.pano ?
- this._createSphereCurtainMesh(node, transform) :
- this._createCurtainMesh(node, transform);
+ if (node.pano) {
+ return this._createSphereCurtainMesh(node, transform);
+ }
+ else if (transform.cameraProjection === "fisheye") {
+ return this._createCurtainMeshFisheye(node, transform);
+ }
+ else {
+ return this._createCurtainMesh(node, transform);
+ }
};
MeshFactory.prototype.createDistortedCurtainMesh = function (node, transform) {
if (node.pano) {
this._getRegularFlatImagePlaneGeo(transform);
return new THREE.Mesh(geometry, material);
};
+ MeshFactory.prototype._createCurtainMeshFisheye = function (node, transform) {
+ var texture = this._createTexture(node.image);
+ var materialParameters = this._createCurtainPlaneMaterialParametersFisheye(transform, texture);
+ var material = new THREE.ShaderMaterial(materialParameters);
+ var geometry = this._useMesh(transform, node) ?
+ this._getImagePlaneGeoFisheye(transform, node) :
+ this._getRegularFlatImagePlaneGeo(transform);
+ return new THREE.Mesh(geometry, material);
+ };
MeshFactory.prototype._createDistortedCurtainMesh = function (node, transform) {
var texture = this._createTexture(node.image);
var materialParameters = this._createDistortedCurtainPlaneMaterialParameters(transform, texture);
this._getRegularFlatImagePlaneGeo(transform);
return new THREE.Mesh(geometry, material);
};
+ MeshFactory.prototype._createImagePlaneFisheye = function (node, transform) {
+ var texture = this._createTexture(node.image);
+ var materialParameters = this._createPlaneMaterialParametersFisheye(transform, texture);
+ var material = new THREE.ShaderMaterial(materialParameters);
+ var geometry = this._useMesh(transform, node) ?
+ this._getImagePlaneGeoFisheye(transform, node) :
+ this._getRegularFlatImagePlaneGeoFisheye(transform);
+ return new THREE.Mesh(geometry, material);
+ };
MeshFactory.prototype._createSphereMaterialParameters = function (transform, texture) {
var gpano = transform.gpano;
var halfCroppedWidth = (gpano.FullPanoWidthPixels - gpano.CroppedAreaImageWidthPixels) / 2;
};
return materialParameters;
};
+ MeshFactory.prototype._createPlaneMaterialParametersFisheye = function (transform, texture) {
+ var materialParameters = {
+ depthWrite: false,
+ fragmentShader: Component_1.Shaders.fisheye.fragment,
+ side: THREE.DoubleSide,
+ transparent: true,
+ uniforms: {
+ focal: {
+ type: "f",
+ value: transform.focal,
+ },
+ k1: {
+ type: "f",
+ value: transform.ck1,
+ },
+ k2: {
+ type: "f",
+ value: transform.ck2,
+ },
+ opacity: {
+ type: "f",
+ value: 1,
+ },
+ projectorMat: {
+ type: "m4",
+ value: transform.basicRt,
+ },
+ projectorTex: {
+ type: "t",
+ value: texture,
+ },
+ radial_peak: {
+ type: "f",
+ value: !!transform.radialPeak ? transform.radialPeak : 0,
+ },
+ scale_x: {
+ type: "f",
+ value: Math.max(transform.basicHeight, transform.basicWidth) / transform.basicWidth,
+ },
+ scale_y: {
+ type: "f",
+ value: Math.max(transform.basicWidth, transform.basicHeight) / transform.basicHeight,
+ },
+ },
+ vertexShader: Component_1.Shaders.fisheye.vertex,
+ };
+ return materialParameters;
+ };
+ MeshFactory.prototype._createCurtainPlaneMaterialParametersFisheye = function (transform, texture) {
+ var materialParameters = {
+ depthWrite: false,
+ fragmentShader: Component_1.Shaders.fisheyeCurtain.fragment,
+ side: THREE.DoubleSide,
+ transparent: true,
+ uniforms: {
+ curtain: {
+ type: "f",
+ value: 1,
+ },
+ focal: {
+ type: "f",
+ value: transform.focal,
+ },
+ k1: {
+ type: "f",
+ value: transform.ck1,
+ },
+ k2: {
+ type: "f",
+ value: transform.ck2,
+ },
+ opacity: {
+ type: "f",
+ value: 1,
+ },
+ projectorMat: {
+ type: "m4",
+ value: transform.basicRt,
+ },
+ projectorTex: {
+ type: "t",
+ value: texture,
+ },
+ radial_peak: {
+ type: "f",
+ value: !!transform.radialPeak ? transform.radialPeak : 0,
+ },
+ scale_x: {
+ type: "f",
+ value: Math.max(transform.basicHeight, transform.basicWidth) / transform.basicWidth,
+ },
+ scale_y: {
+ type: "f",
+ value: Math.max(transform.basicWidth, transform.basicHeight) / transform.basicHeight,
+ },
+ },
+ vertexShader: Component_1.Shaders.fisheyeCurtain.vertex,
+ };
+ return materialParameters;
+ };
MeshFactory.prototype._createCurtainPlaneMaterialParameters = function (transform, texture) {
var materialParameters = {
depthWrite: false,
geometry.setIndex(new THREE.BufferAttribute(indices, 1));
return geometry;
};
+ MeshFactory.prototype._getImagePlaneGeoFisheye = function (transform, node) {
+ var t = new THREE.Matrix4().getInverse(transform.srt);
+ // push everything at least 5 meters in front of the camera
+ var minZ = 5.0 * transform.scale;
+ var maxZ = this._imagePlaneDepth * transform.scale;
+ var vertices = node.mesh.vertices;
+ var numVertices = vertices.length / 3;
+ var positions = new Float32Array(vertices.length);
+ for (var i = 0; i < numVertices; ++i) {
+ var index = 3 * i;
+ var x = vertices[index + 0];
+ var y = vertices[index + 1];
+ var z = vertices[index + 2];
+ var l = Math.sqrt(x * x + y * y + z * z);
+ var boundedL = Math.max(minZ, Math.min(l, maxZ));
+ var factor = boundedL / l;
+ var p = new THREE.Vector3(x * factor, y * factor, z * factor);
+ p.applyMatrix4(t);
+ positions[index + 0] = p.x;
+ positions[index + 1] = p.y;
+ positions[index + 2] = p.z;
+ }
+ var faces = node.mesh.faces;
+ var indices = new Uint16Array(faces.length);
+ for (var i = 0; i < faces.length; ++i) {
+ indices[i] = faces[i];
+ }
+ var geometry = new THREE.BufferGeometry();
+ geometry.addAttribute("position", new THREE.BufferAttribute(positions, 3));
+ geometry.setIndex(new THREE.BufferAttribute(indices, 1));
+ return geometry;
+ };
MeshFactory.prototype._getFlatImageSphereGeo = function (transform) {
var gpano = transform.gpano;
var phiStart = 2 * Math.PI * gpano.CroppedAreaLeftPixels / gpano.FullPanoWidthPixels;
vertices.push(transform.unprojectSfM([-dx, dy], this._imagePlaneDepth));
return this._createFlatGeometry(vertices);
};
+ MeshFactory.prototype._getRegularFlatImagePlaneGeoFisheye = function (transform) {
+ var width = transform.width;
+ var height = transform.height;
+ var size = Math.max(width, height);
+ var dx = width / 2.0 / size;
+ var dy = height / 2.0 / size;
+ return this._getFlatImagePlaneGeoFisheye(transform, dx, dy);
+ };
+ MeshFactory.prototype._getFlatImagePlaneGeoFisheye = function (transform, dx, dy) {
+ var vertices = [];
+ vertices.push(transform.unprojectSfM([-dx, -dy], this._imagePlaneDepth));
+ vertices.push(transform.unprojectSfM([dx, -dy], this._imagePlaneDepth));
+ vertices.push(transform.unprojectSfM([dx, dy], this._imagePlaneDepth));
+ vertices.push(transform.unprojectSfM([-dx, dy], this._imagePlaneDepth));
+ return this._createFlatGeometry(vertices);
+ };
MeshFactory.prototype._getFlatImagePlaneGeoFromBasic = function (transform, basicX0, basicX1, basicY0, basicY1) {
var vertices = [];
vertices.push(transform.unprojectBasic([basicX0, basicY0], this._imagePlaneDepth));
exports.MeshFactory = MeshFactory;
exports.default = MeshFactory;
-},{"../../Component":274,"three":225}],374:[function(require,module,exports){
+},{"../../Component":275,"three":226}],376:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var THREE = require("three");
var MeshScene = /** @class */ (function () {
function MeshScene() {
- this.scene = new THREE.Scene();
- this.sceneOld = new THREE.Scene();
- this.imagePlanes = [];
- this.imagePlanesOld = [];
+ this._planes = {};
+ this._planesOld = {};
+ this._planesPeriphery = {};
+ this._scene = new THREE.Scene();
+ this._sceneOld = new THREE.Scene();
+ this._scenePeriphery = new THREE.Scene();
}
+ Object.defineProperty(MeshScene.prototype, "planes", {
+ get: function () {
+ return this._planes;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(MeshScene.prototype, "planesOld", {
+ get: function () {
+ return this._planesOld;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(MeshScene.prototype, "planesPeriphery", {
+ get: function () {
+ return this._planesPeriphery;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(MeshScene.prototype, "scene", {
+ get: function () {
+ return this._scene;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(MeshScene.prototype, "sceneOld", {
+ get: function () {
+ return this._sceneOld;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(MeshScene.prototype, "scenePeriphery", {
+ get: function () {
+ return this._scenePeriphery;
+ },
+ enumerable: true,
+ configurable: true
+ });
MeshScene.prototype.updateImagePlanes = function (planes) {
- this._dispose(this.imagePlanesOld, this.sceneOld);
- for (var _i = 0, _a = this.imagePlanes; _i < _a.length; _i++) {
- var plane = _a[_i];
- this.scene.remove(plane);
- this.sceneOld.add(plane);
+ this._dispose(this._planesOld, this.sceneOld);
+ for (var key in this._planes) {
+ if (!this._planes.hasOwnProperty(key)) {
+ continue;
+ }
+ var plane = this._planes[key];
+ this._scene.remove(plane);
+ this._sceneOld.add(plane);
}
- for (var _b = 0, planes_1 = planes; _b < planes_1.length; _b++) {
- var plane = planes_1[_b];
- this.scene.add(plane);
+ for (var key in planes) {
+ if (!planes.hasOwnProperty(key)) {
+ continue;
+ }
+ this._scene.add(planes[key]);
}
- this.imagePlanesOld = this.imagePlanes;
- this.imagePlanes = planes;
+ this._planesOld = this._planes;
+ this._planes = planes;
};
MeshScene.prototype.addImagePlanes = function (planes) {
- for (var _i = 0, planes_2 = planes; _i < planes_2.length; _i++) {
- var plane = planes_2[_i];
- this.scene.add(plane);
- this.imagePlanes.push(plane);
+ for (var key in planes) {
+ if (!planes.hasOwnProperty(key)) {
+ continue;
+ }
+ var plane = planes[key];
+ this._scene.add(plane);
+ this._planes[key] = plane;
}
};
MeshScene.prototype.addImagePlanesOld = function (planes) {
- for (var _i = 0, planes_3 = planes; _i < planes_3.length; _i++) {
- var plane = planes_3[_i];
- this.sceneOld.add(plane);
- this.imagePlanesOld.push(plane);
+ for (var key in planes) {
+ if (!planes.hasOwnProperty(key)) {
+ continue;
+ }
+ var plane = planes[key];
+ this._sceneOld.add(plane);
+ this._planesOld[key] = plane;
}
};
MeshScene.prototype.setImagePlanes = function (planes) {
this._clear();
this.addImagePlanes(planes);
};
+ MeshScene.prototype.addPeripheryPlanes = function (planes) {
+ for (var key in planes) {
+ if (!planes.hasOwnProperty(key)) {
+ continue;
+ }
+ var plane = planes[key];
+ this._scenePeriphery.add(plane);
+ this._planesPeriphery[key] = plane;
+ }
+ };
+ MeshScene.prototype.setPeripheryPlanes = function (planes) {
+ this._clearPeriphery();
+ this.addPeripheryPlanes(planes);
+ };
MeshScene.prototype.setImagePlanesOld = function (planes) {
this._clearOld();
this.addImagePlanesOld(planes);
this._clearOld();
};
MeshScene.prototype._clear = function () {
- this._dispose(this.imagePlanes, this.scene);
- this.imagePlanes.length = 0;
+ this._dispose(this._planes, this._scene);
+ this._planes = {};
};
MeshScene.prototype._clearOld = function () {
- this._dispose(this.imagePlanesOld, this.sceneOld);
- this.imagePlanesOld.length = 0;
+ this._dispose(this._planesOld, this._sceneOld);
+ this._planesOld = {};
+ };
+ MeshScene.prototype._clearPeriphery = function () {
+ this._dispose(this._planesPeriphery, this._scenePeriphery);
+ this._planesPeriphery = {};
};
MeshScene.prototype._dispose = function (planes, scene) {
- for (var _i = 0, planes_4 = planes; _i < planes_4.length; _i++) {
- var plane = planes_4[_i];
+ for (var key in planes) {
+ if (!planes.hasOwnProperty(key)) {
+ continue;
+ }
+ var plane = planes[key];
scene.remove(plane);
plane.geometry.dispose();
plane.material.dispose();
exports.MeshScene = MeshScene;
exports.default = MeshScene;
-},{"three":225}],375:[function(require,module,exports){
+},{"three":226}],377:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var rxjs_1 = require("rxjs");
exports.MouseOperator = MouseOperator;
exports.default = MouseOperator;
-},{"rxjs":26,"rxjs/operators":224}],376:[function(require,module,exports){
+},{"rxjs":27,"rxjs/operators":225}],378:[function(require,module,exports){
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
var Component_1 = require("../../Component");
var Geo_1 = require("../../Geo");
var State_1 = require("../../State");
+var ComponentSize_1 = require("../utils/ComponentSize");
+/**
+ * @class ZoomComponent
+ *
+ * @classdesc Component rendering UI elements used for zooming.
+ *
+ * @example
+ * ```
+ * var viewer = new Mapillary.Viewer(
+ * "<element-id>",
+ * "<client-id>",
+ * "<my key>");
+ *
+ * var zoomComponent = viewer.getComponent("zoom");
+ * zoomComponent.configure({ size: Mapillary.ComponentSize.Small });
+ * ```
+ */
var ZoomComponent = /** @class */ (function (_super) {
__extends(ZoomComponent, _super);
function ZoomComponent(name, container, navigator) {
}
ZoomComponent.prototype._activate = function () {
var _this = this;
- this._renderSubscription = rxjs_1.combineLatest(this._navigator.stateService.currentState$, this._navigator.stateService.state$).pipe(operators_1.map(function (_a) {
- var frame = _a[0], state = _a[1];
- return [frame.state.zoom, state];
- }), operators_1.map(function (_a) {
- var zoom = _a[0], state = _a[1];
+ this._renderSubscription = rxjs_1.combineLatest(this._navigator.stateService.currentState$, this._navigator.stateService.state$, this._configuration$, this._container.renderService.size$).pipe(operators_1.map(function (_a) {
+ var frame = _a[0], state = _a[1], configuration = _a[2], size = _a[3];
+ var zoom = frame.state.zoom;
var zoomInIcon = vd.h("div.ZoomInIcon", []);
var zoomInButton = zoom >= 3 || state === State_1.State.Waiting ?
vd.h("div.ZoomInButtonDisabled", [zoomInIcon]) :
var zoomOutButton = zoom <= 0 || state === State_1.State.Waiting ?
vd.h("div.ZoomOutButtonDisabled", [zoomOutIcon]) :
vd.h("div.ZoomOutButton", { onclick: function () { _this._zoomDelta$.next(-1); } }, [zoomOutIcon]);
+ var compact = configuration.size === ComponentSize_1.default.Small ||
+ configuration.size === ComponentSize_1.default.Automatic && size.width < 640 ?
+ ".ZoomCompact" : "";
return {
name: _this._name,
- vnode: vd.h("div.ZoomContainer", { oncontextmenu: function (event) { event.preventDefault(); } }, [zoomInButton, zoomOutButton]),
+ vnode: vd.h("div.ZoomContainer" + compact, { oncontextmenu: function (event) { event.preventDefault(); } }, [zoomInButton, zoomOutButton]),
};
}))
.subscribe(this._container.domRenderer.render$);
this._zoomSubscription.unsubscribe();
};
ZoomComponent.prototype._getDefaultConfiguration = function () {
- return {};
+ return { size: ComponentSize_1.default.Automatic };
};
ZoomComponent.componentName = "zoom";
return ZoomComponent;
Component_1.ComponentService.register(ZoomComponent);
exports.default = ZoomComponent;
-},{"../../Component":274,"../../Geo":277,"../../State":281,"rxjs":26,"rxjs/operators":224,"virtual-dom":230}],377:[function(require,module,exports){
+},{"../../Component":275,"../../Geo":278,"../../State":282,"../utils/ComponentSize":373,"rxjs":27,"rxjs/operators":225,"virtual-dom":231}],379:[function(require,module,exports){
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
exports.AbortMapillaryError = AbortMapillaryError;
exports.default = AbortMapillaryError;
-},{"./MapillaryError":380}],378:[function(require,module,exports){
+},{"./MapillaryError":382}],380:[function(require,module,exports){
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
exports.ArgumentMapillaryError = ArgumentMapillaryError;
exports.default = ArgumentMapillaryError;
-},{"./MapillaryError":380}],379:[function(require,module,exports){
+},{"./MapillaryError":382}],381:[function(require,module,exports){
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
exports.GraphMapillaryError = GraphMapillaryError;
exports.default = GraphMapillaryError;
-},{"./MapillaryError":380}],380:[function(require,module,exports){
+},{"./MapillaryError":382}],382:[function(require,module,exports){
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
exports.MapillaryError = MapillaryError;
exports.default = MapillaryError;
-},{}],381:[function(require,module,exports){
+},{}],383:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var THREE = require("three");
}());
exports.Camera = Camera;
-},{"three":225}],382:[function(require,module,exports){
+},{"three":226}],384:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
+var THREE = require("three");
var Geo_1 = require("../Geo");
var geoCoords = new Geo_1.GeoCoords();
var spatial = new Geo_1.Spatial();
return translation;
}
exports.computeTranslation = computeTranslation;
+function computeProjectedPoints(transform, basicVertices, basicDirections, pointsPerLine, viewportCoords) {
+ var basicPoints = [];
+ for (var side = 0; side < basicVertices.length; ++side) {
+ var v = basicVertices[side];
+ var d = basicDirections[side];
+ for (var i = 0; i <= pointsPerLine; ++i) {
+ basicPoints.push([v[0] + d[0] * i / pointsPerLine,
+ v[1] + d[1] * i / pointsPerLine]);
+ }
+ }
+ var camera = new THREE.Camera();
+ camera.up.copy(transform.upVector());
+ camera.position.copy(new THREE.Vector3().fromArray(transform.unprojectSfM([0, 0], 0)));
+ camera.lookAt(new THREE.Vector3().fromArray(transform.unprojectSfM([0, 0], 10)));
+ camera.updateMatrix();
+ camera.updateMatrixWorld(true);
+ var projectedPoints = basicPoints
+ .map(function (basicPoint) {
+ var worldPoint = transform.unprojectBasic(basicPoint, 10000);
+ var cameraPoint = viewportCoords.worldToCamera(worldPoint, camera);
+ return [
+ Math.abs(cameraPoint[0] / cameraPoint[2]),
+ Math.abs(cameraPoint[1] / cameraPoint[2]),
+ ];
+ });
+ return projectedPoints;
+}
+exports.computeProjectedPoints = computeProjectedPoints;
-},{"../Geo":277}],383:[function(require,module,exports){
+},{"../Geo":278,"three":226}],385:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
/**
exports.GeoCoords = GeoCoords;
exports.default = GeoCoords;
-},{}],384:[function(require,module,exports){
+},{}],386:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
function sign(n) {
}
exports.segmentIntersection = segmentIntersection;
-},{}],385:[function(require,module,exports){
+},{}],387:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var THREE = require("three");
var projection = v.dot(new THREE.Vector3().fromArray(planeNormal));
return Math.asin(projection / norm);
};
+ Spatial.prototype.azimuthal = function (direction, up) {
+ var directionVector = new THREE.Vector3().fromArray(direction);
+ var upVector = new THREE.Vector3().fromArray(up);
+ var upProjection = directionVector.clone().dot(upVector);
+ var planeProjection = directionVector.clone().sub(upVector.clone().multiplyScalar(upProjection));
+ return Math.atan2(planeProjection.y, planeProjection.x);
+ };
/**
* Calculates the distance between two coordinates
* (latitude longitude pairs) in meters according to
exports.Spatial = Spatial;
exports.default = Spatial;
-},{"three":225}],386:[function(require,module,exports){
+},{"three":226}],388:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var THREE = require("three");
* @param {Array<number>} translation - Translation vector in three dimensions.
* @param {HTMLImageElement} image - Image for fallback size calculations.
*/
- function Transform(orientation, width, height, focal, scale, gpano, rotation, translation, image, textureScale, ck1, ck2) {
+ function Transform(orientation, width, height, focal, scale, gpano, rotation, translation, image, textureScale, ck1, ck2, cameraProjection) {
this._orientation = this._getValue(orientation, 1);
var imageWidth = image != null ? image.width : 4;
var imageHeight = image != null ? image.height : 3;
this._textureScale = !!textureScale ? textureScale : [1, 1];
this._ck1 = !!ck1 ? ck1 : 0;
this._ck2 = !!ck2 ? ck2 : 0;
+ this._cameraProjection = !!cameraProjection ?
+ cameraProjection :
+ !!gpano ?
+ "equirectangular" :
+ "perspective";
this._radialPeak = this._getRadialPeak(this._ck1, this._ck2);
}
Object.defineProperty(Transform.prototype, "ck1", {
enumerable: true,
configurable: true
});
+ Object.defineProperty(Transform.prototype, "cameraProjection", {
+ get: function () {
+ return this._cameraProjection;
+ },
+ enumerable: true,
+ configurable: true
+ });
Object.defineProperty(Transform.prototype, "basicAspect", {
/**
* Get basic aspect.
var z = Math.cos(lat) * Math.cos(lon);
return [x, y, z];
}
- else {
+ else if (this._cameraProjection === "fisheye") {
var _a = [sfm[0] / this._focal, sfm[1] / this._focal], dxn = _a[0], dyn = _a[1];
- var rp = this._radialPeak;
+ var dTheta = Math.sqrt(dxn * dxn + dyn * dyn);
+ var d = this._distortionFromDistortedRadius(dTheta, this._ck1, this._ck2, this._radialPeak);
+ var theta = dTheta / d;
+ var z = Math.cos(theta);
+ var r = Math.sin(theta);
+ var x = r * dxn / dTheta;
+ var y = r * dyn / dTheta;
+ return [x, y, z];
+ }
+ else {
+ var _b = [sfm[0] / this._focal, sfm[1] / this._focal], dxn = _b[0], dyn = _b[1];
var dr = Math.sqrt(dxn * dxn + dyn * dyn);
- var d = 1.0;
- for (var i = 0; i < 10; i++) {
- var r = dr / d;
- if (r > rp) {
- r = rp;
- }
- d = 1 + this._ck1 * Math.pow(r, 2) + this._ck2 * Math.pow(r, 4);
- }
+ var d = this._distortionFromDistortedRadius(dr, this._ck1, this._ck2, this._radialPeak);
var xn = dxn / d;
var yn = dyn / d;
var v = new THREE.Vector3(xn, yn, 1);
return [v.x, v.y, v.z];
}
};
+ /** Compute distortion given the distorted radius.
+ *
+ * Solves for d in the equation
+ * y = d(x, k1, k2) * x
+ * given the distorted radius, y.
+ */
+ Transform.prototype._distortionFromDistortedRadius = function (distortedRadius, k1, k2, radialPeak) {
+ var d = 1.0;
+ for (var i = 0; i < 10; i++) {
+ var radius = distortedRadius / d;
+ if (radius > radialPeak) {
+ radius = radialPeak;
+ }
+ d = 1 + k1 * Math.pow(radius, 2) + k2 * Math.pow(radius, 4);
+ }
+ return d;
+ };
/**
* Transform bearing vector (3D cartesian coordiantes on the unit sphere) to
* SfM coordinates.
(fullPanoPixel[1] - this.gpano.CroppedAreaTopPixels - this.gpano.CroppedAreaImageHeightPixels / 2) / size,
];
}
+ else if (this._cameraProjection === "fisheye") {
+ if (bearing[2] > 0) {
+ var x = bearing[0], y = bearing[1], z = bearing[2];
+ var r = Math.sqrt(x * x + y * y);
+ var theta = Math.atan2(r, z);
+ if (theta > this._radialPeak) {
+ theta = this._radialPeak;
+ }
+ var distortion = 1.0 + Math.pow(theta, 2) * (this._ck1 + Math.pow(theta, 2) * this._ck2);
+ var s = this._focal * distortion * theta / r;
+ return [s * x, s * y];
+ }
+ else {
+ return [
+ bearing[0] < 0 ? Number.NEGATIVE_INFINITY : Number.POSITIVE_INFINITY,
+ bearing[1] < 0 ? Number.NEGATIVE_INFINITY : Number.POSITIVE_INFINITY,
+ ];
+ }
+ }
else {
if (bearing[2] > 0) {
var _a = [bearing[0] / bearing[2], bearing[1] / bearing[2]], xn = _a[0], yn = _a[1];
}());
exports.Transform = Transform;
-},{"three":225}],387:[function(require,module,exports){
+},{"three":226}],389:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var THREE = require("three");
exports.default = ViewportCoords;
-},{"three":225}],388:[function(require,module,exports){
+},{"three":226}],390:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
/**
exports.FilterCreator = FilterCreator;
exports.default = FilterCreator;
-},{}],389:[function(require,module,exports){
+},{}],391:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var rxjs_1 = require("rxjs");
exports.Graph = Graph;
exports.default = Graph;
-},{"../Edge":275,"../Error":276,"../Graph":278,"rbush":25,"rxjs":26,"rxjs/operators":224}],390:[function(require,module,exports){
+},{"../Edge":276,"../Error":277,"../Graph":279,"rbush":26,"rxjs":27,"rxjs/operators":225}],392:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var geohash = require("latlon-geohash");
exports.GraphCalculator = GraphCalculator;
exports.default = GraphCalculator;
-},{"../Error":276,"../Geo":277,"latlon-geohash":21,"three":225}],391:[function(require,module,exports){
+},{"../Error":277,"../Geo":278,"latlon-geohash":21,"three":226}],393:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
/**
})(GraphMode = exports.GraphMode || (exports.GraphMode = {}));
exports.default = GraphMode;
-},{}],392:[function(require,module,exports){
+},{}],394:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var rxjs_1 = require("rxjs");
exports.GraphService = GraphService;
exports.default = GraphService;
-},{"../Graph":278,"rxjs":26,"rxjs/operators":224}],393:[function(require,module,exports){
+},{"../Graph":279,"rxjs":27,"rxjs/operators":225}],395:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var operators_1 = require("rxjs/operators");
}());
exports.ImageLoadingService = ImageLoadingService;
-},{"rxjs":26,"rxjs/operators":224}],394:[function(require,module,exports){
+},{"rxjs":27,"rxjs/operators":225}],396:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var Pbf = require("pbf");
}());
exports.MeshReader = MeshReader;
-},{"pbf":23}],395:[function(require,module,exports){
+},{"pbf":24}],397:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var operators_1 = require("rxjs/operators");
enumerable: true,
configurable: true
});
+ Object.defineProperty(Node.prototype, "cameraProjection", {
+ /**
+ * Get cameraProjection.
+ *
+ * @description Will be undefined if SfM has not been run.
+ *
+ * @returns {number} The camera projection of the image.
+ */
+ get: function () {
+ return this._fill.camera_projection_type;
+ },
+ enumerable: true,
+ configurable: true
+ });
Object.defineProperty(Node.prototype, "capturedAt", {
/**
* Get capturedAt.
*
* @returns {ILoadStatus} Value indicating the load status
* of the mesh and image.
+ *
+ * @ignore
*/
get: function () {
return this._cache.loadStatus;
*
* @returns {IEdgeStatus} Value describing the status of the
* sequence edges.
+ *
+ * @ignore
*/
get: function () {
return this._cache.sequenceEdges;
*
* @returns {IEdgeStatus} Value describing the status of the
* spatial edges.
+ *
+ * @ignore
*/
get: function () {
return this._cache.spatialEdges;
exports.Node = Node;
exports.default = Node;
-},{"rxjs/operators":224}],396:[function(require,module,exports){
+},{"rxjs/operators":225}],398:[function(require,module,exports){
(function (Buffer){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
}).call(this,require("buffer").Buffer)
-},{"../Graph":278,"../Utils":284,"buffer":7,"rxjs":26,"rxjs/operators":224}],397:[function(require,module,exports){
+},{"../Graph":279,"../Utils":285,"buffer":7,"rxjs":27,"rxjs/operators":225}],399:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
/**
exports.Sequence = Sequence;
exports.default = Sequence;
-},{}],398:[function(require,module,exports){
+},{}],400:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var THREE = require("three");
exports.EdgeCalculator = EdgeCalculator;
exports.default = EdgeCalculator;
-},{"../../Edge":275,"../../Error":276,"../../Geo":277,"three":225}],399:[function(require,module,exports){
+},{"../../Edge":276,"../../Error":277,"../../Geo":278,"three":226}],401:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var EdgeCalculatorCoefficients = /** @class */ (function () {
exports.EdgeCalculatorCoefficients = EdgeCalculatorCoefficients;
exports.default = EdgeCalculatorCoefficients;
-},{}],400:[function(require,module,exports){
+},{}],402:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var Edge_1 = require("../../Edge");
}());
exports.EdgeCalculatorDirections = EdgeCalculatorDirections;
-},{"../../Edge":275}],401:[function(require,module,exports){
+},{"../../Edge":276}],403:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var EdgeCalculatorSettings = /** @class */ (function () {
exports.EdgeCalculatorSettings = EdgeCalculatorSettings;
exports.default = EdgeCalculatorSettings;
-},{}],402:[function(require,module,exports){
+},{}],404:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
/**
EdgeDirection[EdgeDirection["Similar"] = 10] = "Similar";
})(EdgeDirection = exports.EdgeDirection || (exports.EdgeDirection = {}));
-},{}],403:[function(require,module,exports){
+},{}],405:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var rxjs_1 = require("rxjs");
exports.default = DOMRenderer;
-},{"../Render":280,"rxjs":26,"rxjs/operators":224,"virtual-dom":230}],404:[function(require,module,exports){
+},{"../Render":281,"rxjs":27,"rxjs/operators":225,"virtual-dom":231}],406:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var GLRenderStage;
})(GLRenderStage = exports.GLRenderStage || (exports.GLRenderStage = {}));
exports.default = GLRenderStage;
-},{}],405:[function(require,module,exports){
+},{}],407:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var rxjs_1 = require("rxjs");
exports.default = GLRenderer;
-},{"../Render":280,"../Utils":284,"rxjs":26,"rxjs/operators":224,"three":225}],406:[function(require,module,exports){
+},{"../Render":281,"../Utils":285,"rxjs":27,"rxjs/operators":225,"three":226}],408:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var THREE = require("three");
return elementWidth === 0 ? 0 : elementWidth / elementHeight;
};
RenderCamera.prototype._computeCurrentFov = function () {
+ if (this._perspective.aspect === 0) {
+ return 0;
+ }
if (!this._currentNodeId) {
return this._initialFov;
}
return this._interpolateFov(this._currentFov, this._previousFov, this._alpha);
};
RenderCamera.prototype._computePreviousFov = function () {
+ if (this._perspective.aspect === 0) {
+ return 0;
+ }
if (!this._currentNodeId) {
return this._initialFov;
}
this._computeVerticalFov(this._previousProjectedPoints, this._renderMode, this._zoom, this.perspective.aspect);
};
RenderCamera.prototype._computeProjectedPoints = function (transform) {
- var _this = this;
- var os = [[0.5, 0], [1, 0]];
- var ds = [[0.5, 0], [0, 0.5]];
- var pointsPerSide = 100;
- var basicPoints = [];
- for (var side = 0; side < os.length; ++side) {
- var o = os[side];
- var d = ds[side];
- for (var i = 0; i <= pointsPerSide; ++i) {
- basicPoints.push([o[0] + d[0] * i / pointsPerSide,
- o[1] + d[1] * i / pointsPerSide]);
- }
- }
- var camera = new THREE.Camera();
- camera.up.copy(transform.upVector());
- camera.position.copy(new THREE.Vector3().fromArray(transform.unprojectSfM([0, 0], 0)));
- camera.lookAt(new THREE.Vector3().fromArray(transform.unprojectSfM([0, 0], 10)));
- camera.updateMatrix();
- camera.updateMatrixWorld(true);
- var projectedPoints = basicPoints
- .map(function (basicPoint) {
- var worldPoint = transform.unprojectBasic(basicPoint, 10000);
- var cameraPoint = _this._viewportCoords.worldToCamera(worldPoint, camera);
- return [
- Math.abs(cameraPoint[0] / cameraPoint[2]),
- Math.abs(cameraPoint[1] / cameraPoint[2]),
- ];
- });
- return projectedPoints;
+ var vertices = [[0.5, 0], [1, 0]];
+ var directions = [[0.5, 0], [0, 0.5]];
+ var pointsPerLine = 100;
+ return Geo_1.Geo.computeProjectedPoints(transform, vertices, directions, pointsPerLine, this._viewportCoords);
};
RenderCamera.prototype._computeRequiredVerticalFov = function (projectedPoint, zoom, aspect) {
var maxY = Math.max(projectedPoint[0] / aspect, projectedPoint[1]);
RenderCamera.prototype._computeRotation = function (camera) {
var direction = camera.lookat.clone().sub(camera.position);
var up = camera.up.clone();
- var upProjection = direction.clone().dot(up);
- var planeProjection = direction.clone().sub(up.clone().multiplyScalar(upProjection));
- var phi = Math.atan2(planeProjection.y, planeProjection.x);
+ var phi = this._spatial.azimuthal(direction.toArray(), up.toArray());
var theta = Math.PI / 2 - this._spatial.angleToPlane(direction.toArray(), [0, 0, 1]);
return { phi: phi, theta: theta };
};
exports.RenderCamera = RenderCamera;
exports.default = RenderCamera;
-},{"../Geo":277,"../Render":280,"../State":281,"three":225}],407:[function(require,module,exports){
+},{"../Geo":278,"../Render":281,"../State":282,"three":226}],409:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
/**
})(RenderMode = exports.RenderMode || (exports.RenderMode = {}));
exports.default = RenderMode;
-},{}],408:[function(require,module,exports){
+},{}],410:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var operators_1 = require("rxjs/operators");
exports.default = RenderService;
-},{"../Geo":277,"../Render":280,"rxjs":26,"rxjs/operators":224}],409:[function(require,module,exports){
+},{"../Geo":278,"../Render":281,"rxjs":27,"rxjs/operators":225}],411:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var FrameGenerator = /** @class */ (function () {
exports.FrameGenerator = FrameGenerator;
exports.default = FrameGenerator;
-},{}],410:[function(require,module,exports){
+},{}],412:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var RotationDelta = /** @class */ (function () {
exports.RotationDelta = RotationDelta;
exports.default = RotationDelta;
-},{}],411:[function(require,module,exports){
+},{}],413:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var State;
})(State = exports.State || (exports.State = {}));
exports.default = State;
-},{}],412:[function(require,module,exports){
+},{}],414:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var State_1 = require("../State");
}());
exports.StateContext = StateContext;
-},{"../Geo":277,"../State":281}],413:[function(require,module,exports){
+},{"../Geo":278,"../State":282}],415:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var rxjs_1 = require("rxjs");
}());
exports.StateService = StateService;
-},{"../State":281,"rxjs":26,"rxjs/operators":224}],414:[function(require,module,exports){
+},{"../State":282,"rxjs":27,"rxjs/operators":225}],416:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
/**
})(TransitionMode = exports.TransitionMode || (exports.TransitionMode = {}));
exports.default = TransitionMode;
-},{}],415:[function(require,module,exports){
+},{}],417:[function(require,module,exports){
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
exports.default = EarthState;
-},{"../../State":281,"three":225}],416:[function(require,module,exports){
+},{"../../State":282,"three":226}],418:[function(require,module,exports){
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
if (this._currentNode == null) {
return;
}
+ if (rotationDelta.phi === 0 && rotationDelta.theta === 0) {
+ return;
+ }
this._desiredZoom = this._zoom;
this._desiredLookat = null;
this._requestedBasicRotation = null;
if (this._rotationDelta.isZero) {
return;
}
- this._rotationDelta.multiply(this._rotationAcceleration);
+ var alpha = this.currentNode.fullPano ? 1 : this._alpha;
+ this._rotationDelta.multiply(this._rotationAcceleration * alpha);
this._rotationDelta.threshold(this._rotationThreshold);
};
InteractiveStateBase.prototype._updateRotationBasic = function () {
exports.default = InteractiveStateBase;
-},{"../../State":281,"three":225}],417:[function(require,module,exports){
+},{"../../State":282,"three":226}],419:[function(require,module,exports){
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
exports.InteractiveWaitingState = InteractiveWaitingState;
exports.default = InteractiveWaitingState;
-},{"../../State":281}],418:[function(require,module,exports){
+},{"../../State":282}],420:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var Error_1 = require("../../Error");
for (var _i = 0, _a = this._trajectory; _i < _a.length; _i++) {
var node = _a[_i];
var translation = this._nodeToTranslation(node, this._reference);
- var transform = new Geo_1.Transform(node.orientation, node.width, node.height, node.focal, node.scale, node.gpano, node.rotation, translation, node.image, undefined, node.ck1, node.ck2);
+ var transform = new Geo_1.Transform(node.orientation, node.width, node.height, node.focal, node.scale, node.gpano, node.rotation, translation, node.image, undefined, node.ck1, node.ck2, node.cameraProjection);
this._trajectoryTransforms.push(transform);
this._trajectoryCameras.push(new Geo_1.Camera(transform));
}
throw new Error_1.ArgumentMapillaryError("Assets must be cached when node is added to trajectory");
}
var translation = this._nodeToTranslation(node, this.reference);
- var transform = new Geo_1.Transform(node.orientation, node.width, node.height, node.focal, node.scale, node.gpano, node.rotation, translation, node.image, undefined, node.ck1, node.ck2);
+ var transform = new Geo_1.Transform(node.orientation, node.width, node.height, node.focal, node.scale, node.gpano, node.rotation, translation, node.image, undefined, node.ck1, node.ck2, node.cameraProjection);
this._trajectoryTransforms.push(transform);
this._trajectoryCameras.push(new Geo_1.Camera(transform));
}
throw new Error_1.ArgumentMapillaryError("Assets must be cached when added to trajectory");
}
var translation = this._nodeToTranslation(node, this.reference);
- var transform = new Geo_1.Transform(node.orientation, node.width, node.height, node.focal, node.scale, node.gpano, node.rotation, translation, node.image, undefined, node.ck1, node.ck2);
+ var transform = new Geo_1.Transform(node.orientation, node.width, node.height, node.focal, node.scale, node.gpano, node.rotation, translation, node.image, undefined, node.ck1, node.ck2, node.cameraProjection);
this._trajectoryTransforms.unshift(transform);
this._trajectoryCameras.unshift(new Geo_1.Camera(transform));
}
}());
exports.StateBase = StateBase;
-},{"../../Error":276,"../../Geo":277,"../../State":281}],419:[function(require,module,exports){
+},{"../../Error":277,"../../Geo":278,"../../State":282}],421:[function(require,module,exports){
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
exports.TraversingState = TraversingState;
exports.default = TraversingState;
-},{"../../State":281,"@mapbox/unitbezier":2}],420:[function(require,module,exports){
+},{"../../State":282,"@mapbox/unitbezier":2}],422:[function(require,module,exports){
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
exports.WaitingState = WaitingState;
exports.default = WaitingState;
-},{"../../State":281}],421:[function(require,module,exports){
+},{"../../State":282}],423:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var rxjs_1 = require("rxjs");
exports.ImageTileLoader = ImageTileLoader;
exports.default = ImageTileLoader;
-},{"rxjs":26}],422:[function(require,module,exports){
+},{"rxjs":27}],424:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
/**
exports.ImageTileStore = ImageTileStore;
exports.default = ImageTileStore;
-},{}],423:[function(require,module,exports){
+},{}],425:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var Geo_1 = require("../Geo");
exports.RegionOfInterestCalculator = RegionOfInterestCalculator;
exports.default = RegionOfInterestCalculator;
-},{"../Geo":277}],424:[function(require,module,exports){
+},{"../Geo":278}],426:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var operators_1 = require("rxjs/operators");
exports.TextureProvider = TextureProvider;
exports.default = TextureProvider;
-},{"rxjs":26,"rxjs/operators":224,"three":225}],425:[function(require,module,exports){
+},{"rxjs":27,"rxjs/operators":225,"three":226}],427:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var DOM = /** @class */ (function () {
exports.DOM = DOM;
exports.default = DOM;
-},{}],426:[function(require,module,exports){
+},{}],428:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var EventEmitter = /** @class */ (function () {
exports.EventEmitter = EventEmitter;
exports.default = EventEmitter;
-},{}],427:[function(require,module,exports){
+},{}],429:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var Viewer_1 = require("../Viewer");
exports.Settings = Settings;
exports.default = Settings;
-},{"../Viewer":285}],428:[function(require,module,exports){
+},{"../Viewer":286}],430:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
function isBrowser() {
}
exports.isWebGLSupported = isWebGLSupported;
-},{}],429:[function(require,module,exports){
+},{}],431:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var Urls = /** @class */ (function () {
}
};
Urls._apiHost = "a.mapillary.com";
- Urls._atomicReconstructionHost = "d3necqxnn15whe.cloudfront.net";
+ Urls._atomicReconstructionHost = "atomic-reconstructions.mapillary.com";
Urls._exploreHost = "www.mapillary.com";
- Urls._imageHost = "d1cuyjsrcm0gby.cloudfront.net";
- Urls._imageTileHost = "d2qb1440i7l50o.cloudfront.net";
- Urls._meshHost = "d1brzeo354iq2l.cloudfront.net";
+ Urls._imageHost = "images.mapillary.com";
+ Urls._imageTileHost = "loris.mapillary.com";
+ Urls._meshHost = "meshes.mapillary.com";
Urls._origin = "mapillary.webgl";
Urls._scheme = "https";
return Urls;
exports.Urls = Urls;
exports.default = Urls;
-},{}],430:[function(require,module,exports){
+},{}],432:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
/**
})(Alignment = exports.Alignment || (exports.Alignment = {}));
exports.default = Alignment;
-},{}],431:[function(require,module,exports){
+},{}],433:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var rxjs_1 = require("rxjs");
exports.CacheService = CacheService;
exports.default = CacheService;
-},{"../Graph":278,"rxjs":26,"rxjs/operators":224}],432:[function(require,module,exports){
+},{"../Graph":279,"rxjs":27,"rxjs/operators":225}],434:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var operators_1 = require("rxjs/operators");
_this._subscribeCoverComponent();
_this._navigator.stateService.start();
_this._navigator.cacheService.start();
+ _this._navigator.panService.start();
_this._observer.startEmit();
});
}
ComponentController.prototype.deactivateCover = function () {
this._coverComponent.configure({ state: Component_1.CoverState.Loading });
};
- ComponentController.prototype.resize = function () {
- this._componentService.resize();
- };
ComponentController.prototype._initializeComponents = function () {
var options = this._options;
this._uFalse(options.background, "background");
.subscribe(function () {
_this._navigator.stateService.start();
_this._navigator.cacheService.start();
+ _this._navigator.panService.start();
_this._observer.startEmit();
_this._coverComponent.configure({ state: Component_1.CoverState.Hidden });
_this._componentService.deactivateCover();
_this._navigator.stateService.stop();
_this._navigator.cacheService.stop();
_this._navigator.playService.stop();
+ _this._navigator.panService.stop();
_this._componentService.activateCover();
_this._setNavigable(conf.key == null);
}
}());
exports.ComponentController = ComponentController;
-},{"../Component":274,"rxjs/operators":224}],433:[function(require,module,exports){
+},{"../Component":275,"rxjs/operators":225}],435:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var Render_1 = require("../Render");
exports.Container = Container;
exports.default = Container;
-},{"../Render":280,"../Utils":284,"../Viewer":285}],434:[function(require,module,exports){
+},{"../Render":281,"../Utils":285,"../Viewer":286}],436:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
/**
ImageSize[ImageSize["Size2048"] = 2048] = "Size2048";
})(ImageSize = exports.ImageSize || (exports.ImageSize = {}));
-},{}],435:[function(require,module,exports){
+},{}],437:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var rxjs_1 = require("rxjs");
exports.KeyboardService = KeyboardService;
exports.default = KeyboardService;
-},{"rxjs":26}],436:[function(require,module,exports){
+},{"rxjs":27}],438:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var operators_1 = require("rxjs/operators");
exports.LoadingService = LoadingService;
exports.default = LoadingService;
-},{"rxjs":26,"rxjs/operators":224}],437:[function(require,module,exports){
+},{"rxjs":27,"rxjs/operators":225}],439:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var rxjs_1 = require("rxjs");
var operators_1 = require("rxjs/operators");
-var Geo_1 = require("../Geo");
var MouseService = /** @class */ (function () {
- function MouseService(container, canvasContainer, domContainer, doc, viewportCoords) {
+ function MouseService(container, canvasContainer, domContainer, doc) {
var _this = this;
- viewportCoords = viewportCoords != null ? viewportCoords : new Geo_1.ViewportCoords();
this._activeSubject$ = new rxjs_1.BehaviorSubject(false);
this._active$ = this._activeSubject$.pipe(operators_1.distinctUntilChanged(), operators_1.publishReplay(1), operators_1.refCount());
this._claimMouse$ = new rxjs_1.Subject();
exports.MouseService = MouseService;
exports.default = MouseService;
-},{"../Geo":277,"rxjs":26,"rxjs/operators":224}],438:[function(require,module,exports){
+},{"rxjs":27,"rxjs/operators":225}],440:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var rxjs_1 = require("rxjs");
var Error_1 = require("../Error");
var State_1 = require("../State");
var Viewer_1 = require("../Viewer");
+var PanService_1 = require("./PanService");
var Navigator = /** @class */ (function () {
- function Navigator(clientId, options, token, apiV3, graphService, imageLoadingService, loadingService, stateService, cacheService, playService) {
+ function Navigator(clientId, options, token, apiV3, graphService, imageLoadingService, loadingService, stateService, cacheService, playService, panService) {
this._apiV3 = apiV3 != null ? apiV3 : new API_1.APIv3(clientId, token);
this._imageLoadingService = imageLoadingService != null ? imageLoadingService : new Graph_1.ImageLoadingService();
this._graphService = graphService != null ?
this._playService = playService != null ?
playService :
new Viewer_1.PlayService(this._graphService, this._stateService);
+ this._panService = panService != null ?
+ panService :
+ new PanService_1.PanService(this._graphService, this._stateService, options.combinedPanning);
this._keyRequested$ = new rxjs_1.BehaviorSubject(null);
this._movedToKey$ = new rxjs_1.BehaviorSubject(null);
this._request$ = null;
enumerable: true,
configurable: true
});
+ Object.defineProperty(Navigator.prototype, "panService", {
+ get: function () {
+ return this._panService;
+ },
+ enumerable: true,
+ configurable: true
+ });
Object.defineProperty(Navigator.prototype, "playService", {
get: function () {
return this._playService;
exports.Navigator = Navigator;
exports.default = Navigator;
-},{"../API":273,"../Edge":275,"../Error":276,"../Graph":278,"../State":281,"../Viewer":285,"rxjs":26,"rxjs/operators":224}],439:[function(require,module,exports){
+},{"../API":274,"../Edge":276,"../Error":277,"../Graph":279,"../State":282,"../Viewer":286,"./PanService":442,"rxjs":27,"rxjs/operators":225}],441:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var rxjs_1 = require("rxjs");
exports.Observer = Observer;
exports.default = Observer;
-},{"../Viewer":285,"rxjs":26,"rxjs/operators":224}],440:[function(require,module,exports){
+},{"../Viewer":286,"rxjs":27,"rxjs/operators":225}],442:[function(require,module,exports){
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+var rxjs_1 = require("rxjs");
+var operators_1 = require("rxjs/operators");
+var Geo = require("../geo/Geo");
+var GeoCoords_1 = require("../geo/GeoCoords");
+var GraphCalculator_1 = require("../graph/GraphCalculator");
+var Spatial_1 = require("../geo/Spatial");
+var Transform_1 = require("../geo/Transform");
+var ViewportCoords_1 = require("../geo/ViewportCoords");
+var PanMode;
+(function (PanMode) {
+ PanMode[PanMode["Disabled"] = 0] = "Disabled";
+ PanMode[PanMode["Enabled"] = 1] = "Enabled";
+ PanMode[PanMode["Started"] = 2] = "Started";
+})(PanMode || (PanMode = {}));
+var PanService = /** @class */ (function () {
+ function PanService(graphService, stateService, enabled, geoCoords, graphCalculator, spatial, viewportCoords) {
+ this._graphService = graphService;
+ this._stateService = stateService;
+ this._geoCoords = !!geoCoords ? geoCoords : new GeoCoords_1.default();
+ this._graphCalculator = !!graphCalculator ? graphCalculator : new GraphCalculator_1.default(this._geoCoords);
+ this._spatial = !!spatial ? spatial : new Spatial_1.default();
+ this._viewportCoords = !!viewportCoords ? viewportCoords : new ViewportCoords_1.default();
+ this._mode = enabled !== false ? PanMode.Enabled : PanMode.Disabled;
+ this._panNodesSubject$ = new rxjs_1.Subject();
+ this._panNodes$ = this._panNodesSubject$.pipe(operators_1.startWith([]), operators_1.publishReplay(1), operators_1.refCount());
+ this._panNodes$.subscribe();
+ }
+ Object.defineProperty(PanService.prototype, "panNodes$", {
+ get: function () {
+ return this._panNodes$;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ PanService.prototype.enable = function () {
+ if (this._mode !== PanMode.Disabled) {
+ return;
+ }
+ this._mode = PanMode.Enabled;
+ this.start();
+ };
+ PanService.prototype.disable = function () {
+ if (this._mode === PanMode.Disabled) {
+ return;
+ }
+ this.stop();
+ this._mode = PanMode.Disabled;
+ };
+ PanService.prototype.start = function () {
+ var _this = this;
+ if (this._mode !== PanMode.Enabled) {
+ return;
+ }
+ var panNodes$ = this._stateService.currentNode$.pipe(operators_1.switchMap(function (current) {
+ var current$ = rxjs_1.of(current);
+ var bounds = _this._graphCalculator.boundingBoxCorners(current.computedLatLon, 20);
+ var adjacent$ = _this._graphService
+ .cacheBoundingBox$(bounds[0], bounds[1]).pipe(operators_1.catchError(function (error) {
+ console.error("Failed to cache periphery bounding box (" + current.key + ")", error);
+ return rxjs_1.empty();
+ }), operators_1.map(function (nodes) {
+ if (current.pano) {
+ return [];
+ }
+ var potential = [];
+ for (var _i = 0, nodes_1 = nodes; _i < nodes_1.length; _i++) {
+ var node = nodes_1[_i];
+ if (node.key === current.key) {
+ continue;
+ }
+ if (node.mergeCC !== current.mergeCC) {
+ continue;
+ }
+ if (node.pano) {
+ continue;
+ }
+ if (_this._distance(node, current) > 4) {
+ continue;
+ }
+ potential.push(node);
+ }
+ return potential;
+ }));
+ return rxjs_1.combineLatest(current$, adjacent$).pipe(operators_1.withLatestFrom(_this._stateService.reference$), operators_1.map(function (_a) {
+ var _b = _a[0], cn = _b[0], adjacent = _b[1], reference = _a[1];
+ var currentDirection = _this._spatial.viewingDirection(cn.rotation);
+ var currentTranslation = Geo.computeTranslation({ lat: cn.latLon.lat, lon: cn.latLon.lon, alt: cn.alt }, cn.rotation, reference);
+ var currentTransform = _this._createTransform(cn, currentTranslation);
+ var currentAzimuthal = _this._spatial.wrap(_this._spatial.azimuthal(currentDirection.toArray(), currentTransform.upVector().toArray()), 0, 2 * Math.PI);
+ var currentProjectedPoints = _this._computeProjectedPoints(currentTransform);
+ var currentHFov = _this._computeHorizontalFov(currentProjectedPoints) / 180 * Math.PI;
+ var preferredOverlap = Math.PI / 8;
+ var left = undefined;
+ var right = undefined;
+ for (var _i = 0, adjacent_1 = adjacent; _i < adjacent_1.length; _i++) {
+ var a = adjacent_1[_i];
+ var translation = Geo.computeTranslation({ lat: a.latLon.lat, lon: a.latLon.lon, alt: a.alt }, a.rotation, reference);
+ var transform = _this._createTransform(a, translation);
+ var projectedPoints = _this._computeProjectedPoints(transform);
+ var hFov = _this._computeHorizontalFov(projectedPoints) / 180 * Math.PI;
+ var direction = _this._spatial.viewingDirection(a.rotation);
+ var azimuthal = _this._spatial.wrap(_this._spatial.azimuthal(direction.toArray(), transform.upVector().toArray()), 0, 2 * Math.PI);
+ var directionChange = _this._spatial.angleBetweenVector2(currentDirection.x, currentDirection.y, direction.x, direction.y);
+ var overlap = Number.NEGATIVE_INFINITY;
+ if (directionChange > 0) {
+ if (currentAzimuthal > azimuthal) {
+ overlap = currentAzimuthal - 2 * Math.PI + currentHFov / 2 - (azimuthal - hFov / 2);
+ }
+ else {
+ overlap = currentAzimuthal + currentHFov / 2 - (azimuthal - hFov / 2);
+ }
+ }
+ else {
+ if (currentAzimuthal < azimuthal) {
+ overlap = azimuthal + hFov / 2 - (currentAzimuthal + 2 * Math.PI - currentHFov / 2);
+ }
+ else {
+ overlap = azimuthal + hFov / 2 - (currentAzimuthal - currentHFov / 2);
+ }
+ }
+ var nonOverlap = Math.abs(hFov - overlap);
+ var distanceCost = _this._distance(a, cn);
+ var timeCost = Math.min(_this._timeDifference(a, cn), 4);
+ var overlapCost = 20 * Math.abs(overlap - preferredOverlap);
+ var fovCost = Math.min(5, 1 / Math.min(hFov / currentHFov, 1));
+ var nonOverlapCost = overlap > 0 ? -2 * nonOverlap : 0;
+ var cost = distanceCost + timeCost + overlapCost + fovCost + nonOverlapCost;
+ if (overlap > 0 &&
+ overlap < 0.5 * currentHFov &&
+ overlap < 0.5 * hFov &&
+ nonOverlap > 0.5 * currentHFov) {
+ if (directionChange > 0) {
+ if (!left) {
+ left = [cost, a, transform, hFov];
+ }
+ else {
+ if (cost < left[0]) {
+ left = [cost, a, transform, hFov];
+ }
+ }
+ }
+ else {
+ if (!right) {
+ right = [cost, a, transform, hFov];
+ }
+ else {
+ if (cost < right[0]) {
+ right = [cost, a, transform, hFov];
+ }
+ }
+ }
+ }
+ }
+ var panNodes = [];
+ if (!!left) {
+ panNodes.push([left[1], left[2], left[3]]);
+ }
+ if (!!right) {
+ panNodes.push([right[1], right[2], right[3]]);
+ }
+ return panNodes;
+ }), operators_1.startWith([]));
+ }));
+ this._panNodesSubscription = this._stateService.currentState$.pipe(operators_1.map(function (frame) {
+ return frame.state.nodesAhead > 0;
+ }), operators_1.distinctUntilChanged(), operators_1.switchMap(function (traversing) {
+ return traversing ? rxjs_1.of([]) : panNodes$;
+ }))
+ .subscribe(function (panNodes) {
+ _this._panNodesSubject$.next(panNodes);
+ });
+ this._mode = PanMode.Started;
+ };
+ PanService.prototype.stop = function () {
+ if (this._mode !== PanMode.Started) {
+ return;
+ }
+ this._panNodesSubscription.unsubscribe();
+ this._panNodesSubject$.next([]);
+ this._mode = PanMode.Enabled;
+ };
+ PanService.prototype._distance = function (node, reference) {
+ var _a = this._geoCoords.geodeticToEnu(node.latLon.lat, node.latLon.lon, node.alt, reference.latLon.lat, reference.latLon.lon, reference.alt), x = _a[0], y = _a[1], z = _a[2];
+ return Math.sqrt(x * x + y * y + z * z);
+ };
+ PanService.prototype._timeDifference = function (node, reference) {
+ return Math.abs(node.capturedAt - reference.capturedAt) / (1000 * 60 * 60 * 24 * 30);
+ };
+ PanService.prototype._createTransform = function (node, translation) {
+ return new Transform_1.Transform(node.orientation, node.width, node.height, node.focal, node.scale, node.gpano, node.rotation, translation, node.assetsCached ? node.image : undefined, undefined, node.ck1, node.ck2, node.cameraProjection);
+ };
+ PanService.prototype._computeProjectedPoints = function (transform) {
+ var vertices = [[1, 0]];
+ var directions = [[0, 0.5]];
+ var pointsPerLine = 20;
+ return Geo.computeProjectedPoints(transform, vertices, directions, pointsPerLine, this._viewportCoords);
+ };
+ PanService.prototype._computeHorizontalFov = function (projectedPoints) {
+ var _this = this;
+ var fovs = projectedPoints
+ .map(function (projectedPoint) {
+ return _this._coordToFov(projectedPoint[0]);
+ });
+ var fov = Math.min.apply(Math, fovs);
+ return fov;
+ };
+ PanService.prototype._coordToFov = function (x) {
+ return 2 * Math.atan(x) * 180 / Math.PI;
+ };
+ return PanService;
+}());
+exports.PanService = PanService;
+
+},{"../geo/Geo":384,"../geo/GeoCoords":385,"../geo/Spatial":387,"../geo/Transform":388,"../geo/ViewportCoords":389,"../graph/GraphCalculator":392,"rxjs":27,"rxjs/operators":225}],443:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var rxjs_1 = require("rxjs");
exports.PlayService = PlayService;
exports.default = PlayService;
-},{"../Edge":275,"../Graph":278,"rxjs":26,"rxjs/operators":224}],441:[function(require,module,exports){
+},{"../Edge":276,"../Graph":279,"rxjs":27,"rxjs/operators":225}],444:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var THREE = require("three");
exports.Projection = Projection;
exports.default = Projection;
-},{"../Geo":277,"three":225}],442:[function(require,module,exports){
+},{"../Geo":278,"three":226}],445:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var operators_1 = require("rxjs/operators");
exports.default = SpriteService;
-},{"../Viewer":285,"rxjs":26,"rxjs/operators":224,"three":225,"virtual-dom":230}],443:[function(require,module,exports){
+},{"../Viewer":286,"rxjs":27,"rxjs/operators":225,"three":226,"virtual-dom":231}],446:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var rxjs_1 = require("rxjs");
}());
exports.TouchService = TouchService;
-},{"rxjs":26,"rxjs/operators":224}],444:[function(require,module,exports){
+},{"rxjs":27,"rxjs/operators":225}],447:[function(require,module,exports){
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
* Return a boolean indicating if the viewer is in a navigable state.
*
* @description The navigable state indicates if the viewer supports
- * moving, i.e. calling the {@link moveToKey}, {@link moveDir`}
+ * moving, i.e. calling the {@link moveToKey}, {@link moveDir}
* and {@link moveCloseTo} methods or changing the authentication state,
* i.e. calling {@link setAuthToken}. The viewer will not be in a navigable
* state if the cover is activated and the viewer has been supplied a key.
enumerable: true,
configurable: true
});
+ /**
+ * Activate the combined panning functionality.
+ *
+ * @description The combined panning functionality is active by default.
+ */
+ Viewer.prototype.activateCombinedPanning = function () {
+ this._navigator.panService.enable();
+ };
/**
* Activate a component.
*
Viewer.prototype.activateCover = function () {
this._componentController.activateCover();
};
+ /**
+ * Deactivate the combined panning functionality.
+ *
+ * @description Deactivating the combined panning functionality
+ * could be needed in scenarios involving sequence only navigation.
+ */
+ Viewer.prototype.deactivateCombinedPanning = function () {
+ this._navigator.panService.disable();
+ };
/**
* Deactivate a component.
*
* longitude.
* @throws {Error} Propagates any IO errors to the caller.
* @throws {Error} When viewer is not navigable.
- * @throws {AbortMapillaryError} When a subsequent move request is made
+ * @throws {@link AbortMapillaryError} When a subsequent move request is made
* before the move close to call has completed.
*
* @example
* or the edges has not yet been cached.
* @throws {Error} Propagates any IO errors to the caller.
* @throws {Error} When viewer is not navigable.
- * @throws {AbortMapillaryError} When a subsequent move request is made
+ * @throws {@link AbortMapillaryError} When a subsequent move request is made
* before the move dir call has completed.
*
* @example
* @returns {Promise<Node>} Promise to the node that was navigated to.
* @throws {Error} Propagates any IO errors to the caller.
* @throws {Error} When viewer is not navigable.
- * @throws {AbortMapillaryError} When a subsequent move request is made
+ * @throws {@link AbortMapillaryError} When a subsequent move request is made
* before the move to key call has completed.
*
* @example
*/
Viewer.prototype.resize = function () {
this._container.renderService.resize$.next(null);
- this._componentController.resize();
};
/**
* Set a bearer token for authenticated API requests of
* Fired when the viewing direction of the camera changes.
*
* @description Related to the computed compass angle
- * ({@link Node.computedCa}) from SfM, not the original EXIF compass
+ * ({@link Node.computedCA}) from SfM, not the original EXIF compass
* angle.
*
* @event
* Fired when a pointing device (usually a mouse) is pressed and released at
* the same point in the viewer.
* @event
- * @type {IViewerMouseEvent} event - Viewer mouse event data.
+ * @type {@link IViewerMouseEvent} event - Viewer mouse event data.
*/
Viewer.click = "click";
/**
* Fired when the right button of the mouse is clicked within the viewer.
* @event
- * @type {IViewerMouseEvent} event - Viewer mouse event data.
+ * @type {@link IViewerMouseEvent} event - Viewer mouse event data.
*/
Viewer.contextmenu = "contextmenu";
/**
* Fired when a pointing device (usually a mouse) is clicked twice at
* the same point in the viewer.
* @event
- * @type {IViewerMouseEvent} event - Viewer mouse event data.
+ * @type {@link IViewerMouseEvent} event - Viewer mouse event data.
*/
Viewer.dblclick = "dblclick";
/**
/**
* Fired when a pointing device (usually a mouse) is pressed within the viewer.
* @event
- * @type {IViewerMouseEvent} event - Viewer mouse event data.
+ * @type {@link IViewerMouseEvent} event - Viewer mouse event data.
*/
Viewer.mousedown = "mousedown";
/**
* Fired when a pointing device (usually a mouse) is moved within the viewer.
* @description Will not fire when the mouse is actively used, e.g. for drag pan.
* @event
- * @type {IViewerMouseEvent} event - Viewer mouse event data.
+ * @type {@link IViewerMouseEvent} event - Viewer mouse event data.
*/
Viewer.mousemove = "mousemove";
/**
* Fired when a pointing device (usually a mouse) leaves the viewer's canvas.
* @event
- * @type {IViewerMouseEvent} event - Viewer mouse event data.
+ * @type {@link IViewerMouseEvent} event - Viewer mouse event data.
*/
Viewer.mouseout = "mouseout";
/**
* Fired when a pointing device (usually a mouse) is moved onto the viewer's canvas.
* @event
- * @type {IViewerMouseEvent} event - Viewer mouse event data.
+ * @type {@link IViewerMouseEvent} event - Viewer mouse event data.
*/
Viewer.mouseover = "mouseover";
/**
* Fired when a pointing device (usually a mouse) is released within the viewer.
* @event
- * @type {IViewerMouseEvent} event - Viewer mouse event data.
+ * @type {@link IViewerMouseEvent} event - Viewer mouse event data.
*/
Viewer.mouseup = "mouseup";
/**
/**
* Fired every time the viewer navigates to a new node.
* @event
- * @type {Node} node - Current node.
+ * @type {@link Node} node - Current node.
*/
Viewer.nodechanged = "nodechanged";
/**
* Fired every time the sequence edges of the current node changes.
* @event
- * @type {IEdgeStatus} status - The edge status object.
+ * @type {@link IEdgeStatus} status - The edge status object.
*/
Viewer.sequenceedgeschanged = "sequenceedgeschanged";
/**
* Fired every time the spatial edges of the current node changes.
* @event
- * @type {IEdgeStatus} status - The edge status object.
+ * @type {@link IEdgeStatus} status - The edge status object.
*/
Viewer.spatialedgeschanged = "spatialedgeschanged";
return Viewer;
}(Utils_1.EventEmitter));
exports.Viewer = Viewer;
-},{"../Utils":284,"../Viewer":285,"rxjs":26,"rxjs/operators":224,"when":271}]},{},[279])(279)
+},{"../Utils":285,"../Viewer":286,"rxjs":27,"rxjs/operators":225,"when":272}]},{},[280])(280)
});
//# sourceMappingURL=mapillary.js.map