redhotmagma-visualization 1.41.0 → 1.42.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AlignTargetProvider.js +50 -79
- package/CommonUtils/Deferred.js +11 -38
- package/CommonUtils/Observable.js +29 -48
- package/CommonUtils/PropertyObserver.js +10 -17
- package/CommonUtils/SyncCurrentFunction.js +33 -42
- package/CommonUtils/SyncObservableEvent.js +2 -6
- package/CommonUtils/pointerEvent.js +50 -98
- package/Constants.js +6 -6
- package/DevApp.js +187 -309
- package/ExposedModules.js +2 -9
- package/FallbackVisualization.js +4 -10
- package/PrintingEffects/ColorEmbossingEffect.js +15 -26
- package/PrintingEffects/DomingEffect.js +29 -52
- package/PrintingEffects/EmbossingEffect.js +17 -29
- package/PrintingEffects/EmbroideryEffect.js +251 -362
- package/PrintingEffects/EngravingEffect.js +17 -29
- package/PrintingEffects/PrintingEffects.js +44 -73
- package/PrintingEffects/PrintingEffectsUtils.js +1 -7
- package/React/ReactBase.js +15 -47
- package/Three/Controls/OrbitControls.js +105 -126
- package/Three/Exporters/glTFExporter.js +2 -6
- package/Three/Loaders/ColladaLoader.js +202 -550
- package/Three/Loaders/MTLLoader.js +33 -64
- package/Three/Loaders/OBJLoader.js +48 -80
- package/Three/Three2D.js +750 -1014
- package/Three/Three2DLayers.js +217 -341
- package/Three/Three3D.js +530 -800
- package/Three/Three3DScene.js +484 -780
- package/Three/ThreeBase.js +145 -230
- package/Utils/DesignArea/getDesignAreaCanvasSize.js +3 -11
- package/Utils/TextureBuilder/createTextureBuilder.js +133 -193
- package/Utils/TextureBuilder/textureBuilderFunctions.js +11 -27
- package/Utils/alignToElement.js +13 -24
- package/Utils/canvasBlur.js +27 -45
- package/Utils/createAlphaMapFromAlphaChannel.js +11 -21
- package/Utils/createBakedShadow.js +38 -42
- package/Utils/createCache.js +0 -4
- package/Utils/createCanvas.js +3 -9
- package/Utils/createImageRepository.js +63 -87
- package/Utils/disposeMaterial.js +4 -14
- package/Utils/getImageSize.js +1 -2
- package/Utils/imagePreloader.js +36 -48
- package/Utils/initTextureCanvas.js +6 -18
- package/Utils/isMobileDevice.js +3 -7
- package/Utils/optimizeTextureImage.js +13 -29
- package/Utils/rememberCameraViewOffset.js +8 -11
- package/Utils/removeObject.js +0 -4
- package/Utils/restrictCameraMovement.js +2 -12
- package/Utils/setLightShadow.js +3 -5
- package/Utils/setOrthographicCameraSize.js +0 -1
- package/Utils/updateFitSizeToElement.js +4 -9
- package/VisualizationContainer.js +37 -90
- package/VisualizationInterface.js +32 -67
- package/VisualizationProvider.js +5 -15
- package/index.js +2 -9
- package/package.json +6 -7
- package/scripts/cpPublicLocal.js +7 -2
- package/src/CommonUtils/Observable.js +1 -0
- package/src/CommonUtils/pointerEvent.js +17 -0
- package/src/Constants.js +2 -0
- package/src/DevApp.js +1 -2
- package/src/Three/Three2D.js +105 -1
- package/src/Three/ThreeBase.js +31 -3
- package/src/Utils/TextureBuilder/createTextureBuilder.js +12 -3
- package/src/VisualizationContainer.js +8 -2
- package/src/index.js +2 -3
- package/visualizationAdapterCreator.js +6 -23
|
@@ -1,58 +1,49 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
|
|
3
4
|
Object.defineProperty(exports, "__esModule", {
|
|
4
5
|
value: true
|
|
5
6
|
});
|
|
6
7
|
exports.syncCurrent = syncCurrent;
|
|
7
|
-
|
|
8
8
|
var _Deferred = require("./Deferred");
|
|
9
|
-
|
|
9
|
+
function _regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = "function" == typeof Symbol ? Symbol : {}, a = i.iterator || "@@iterator", c = i.asyncIterator || "@@asyncIterator", u = i.toStringTag || "@@toStringTag"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, ""); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, "_invoke", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: "normal", arg: t.call(e, r) }; } catch (t) { return { type: "throw", arg: t }; } } e.wrap = wrap; var h = "suspendedStart", l = "suspendedYield", f = "executing", s = "completed", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { ["next", "throw", "return"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if ("throw" !== c.type) { var u = c.arg, h = u.value; return h && "object" == _typeof(h) && n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { invoke("next", t, i, a); }, function (t) { invoke("throw", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke("throw", t, i, a); }); } a(c.arg); } var r; o(this, "_invoke", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error("Generator is already running"); if (o === s) { if ("throw" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else "return" === n.method && n.abrupt("return", n.arg); o = f; var p = tryCatch(e, r, n); if ("normal" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } "throw" === p.type && (o = s, n.method = "throw", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, "throw" === n && e.iterator["return"] && (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n && (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; var i = tryCatch(o, e.iterator, r.arg); if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method && (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = "normal", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: "root" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || "" === e) { var r = e[a]; if (r) return r.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + " is not iterable"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { var e = "function" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { return this; }), define(g, "toString", function () { return "[object Generator]"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if ("throw" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = "throw", a.arg = e, r.next = n, o && (r.method = "next", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if ("root" === i.tryLoc) return handle("end"); if (i.tryLoc <= this.prev) { var c = n.call(i, "catchLoc"), u = n.call(i, "finallyLoc"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error("try statement without catch or finally"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, "finallyLoc") && this.prev < o.finallyLoc) { var i = o; break; } } i && ("break" === t || "continue" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if ("throw" === t.type) throw t.arg; return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, "catch": function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if ("throw" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, "next" === this.method && (this.arg = t), y; } }, e; }
|
|
10
10
|
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
|
|
11
|
-
|
|
12
11
|
function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
|
|
13
|
-
|
|
14
12
|
function syncCurrent(cb) {
|
|
15
13
|
var current;
|
|
16
|
-
return /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/
|
|
14
|
+
return /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
|
|
17
15
|
var prev,
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
return
|
|
21
|
-
while (1) {
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
if (!_context.t0) {
|
|
33
|
-
_context.next = 7;
|
|
34
|
-
break;
|
|
35
|
-
}
|
|
36
|
-
|
|
16
|
+
deferredSync,
|
|
17
|
+
_args = arguments;
|
|
18
|
+
return _regeneratorRuntime().wrap(function _callee$(_context) {
|
|
19
|
+
while (1) switch (_context.prev = _context.next) {
|
|
20
|
+
case 0:
|
|
21
|
+
prev = current;
|
|
22
|
+
deferredSync = new _Deferred.Deferred();
|
|
23
|
+
current = {
|
|
24
|
+
started: false,
|
|
25
|
+
promise: deferredSync.promise
|
|
26
|
+
};
|
|
27
|
+
_context.t0 = prev && prev.started;
|
|
28
|
+
if (!_context.t0) {
|
|
37
29
|
_context.next = 7;
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
}
|
|
30
|
+
break;
|
|
31
|
+
}
|
|
32
|
+
_context.next = 7;
|
|
33
|
+
return prev.promise;
|
|
34
|
+
case 7:
|
|
35
|
+
current.started = true;
|
|
36
|
+
_context.prev = 8;
|
|
37
|
+
_context.next = 11;
|
|
38
|
+
return cb.apply(void 0, _args);
|
|
39
|
+
case 11:
|
|
40
|
+
_context.prev = 11;
|
|
41
|
+
// always resolve to ensure the next update runs
|
|
42
|
+
deferredSync.resolve();
|
|
43
|
+
return _context.finish(11);
|
|
44
|
+
case 14:
|
|
45
|
+
case "end":
|
|
46
|
+
return _context.stop();
|
|
56
47
|
}
|
|
57
48
|
}, _callee, null, [[8,, 11, 14]]);
|
|
58
49
|
}));
|
|
@@ -4,16 +4,12 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.syncObservableEvent = void 0;
|
|
7
|
-
|
|
8
|
-
var syncObservableEvent = function syncObservableEvent(observable, eventName) {
|
|
7
|
+
var syncObservableEvent = exports.syncObservableEvent = function syncObservableEvent(observable, eventName) {
|
|
9
8
|
return new Promise(function (resolve) {
|
|
10
9
|
var resolveAndCleanUp = function resolveAndCleanUp() {
|
|
11
10
|
resolve();
|
|
12
11
|
observable.off(eventName, resolveAndCleanUp);
|
|
13
12
|
};
|
|
14
|
-
|
|
15
13
|
observable.on(eventName, resolveAndCleanUp);
|
|
16
14
|
});
|
|
17
|
-
};
|
|
18
|
-
|
|
19
|
-
exports.syncObservableEvent = syncObservableEvent;
|
|
15
|
+
};
|
|
@@ -3,17 +3,15 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.
|
|
7
|
-
|
|
6
|
+
exports.getPointFromPointerEvent = exports.createZoomHandler = exports.createPositionChangeChecker = exports.createPointerMoveEventListener = exports.createPointerHitListener = exports.createPointerEventListener = exports.createPinchZoomListener = exports.createMouseWheelEventListener = exports.createMouseMoveListener = void 0;
|
|
8
7
|
/**
|
|
9
8
|
* @param {MouseEvent|TouchEvent} evt
|
|
10
9
|
* @param {HTMLElement} relativeTo
|
|
11
10
|
* @returns {{x: number, y: number}}
|
|
12
11
|
*/
|
|
13
|
-
var getPointFromPointerEvent = function getPointFromPointerEvent(evt, relativeTo) {
|
|
12
|
+
var getPointFromPointerEvent = exports.getPointFromPointerEvent = function getPointFromPointerEvent(evt, relativeTo) {
|
|
14
13
|
var x, y;
|
|
15
14
|
var touches = evt.changedTouches && evt.changedTouches.length > 0 && evt.changedTouches || evt.touches;
|
|
16
|
-
|
|
17
15
|
if (touches && touches.length > 0) {
|
|
18
16
|
x = touches[0].clientX;
|
|
19
17
|
y = touches[0].clientY;
|
|
@@ -21,21 +19,19 @@ var getPointFromPointerEvent = function getPointFromPointerEvent(evt, relativeTo
|
|
|
21
19
|
x = evt.clientX;
|
|
22
20
|
y = evt.clientY;
|
|
23
21
|
}
|
|
24
|
-
|
|
25
22
|
if (relativeTo) {
|
|
26
23
|
var _relativeTo$getBoundi = relativeTo.getBoundingClientRect(),
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
24
|
+
top = _relativeTo$getBoundi.top,
|
|
25
|
+
left = _relativeTo$getBoundi.left;
|
|
30
26
|
x -= left;
|
|
31
27
|
y -= top;
|
|
32
28
|
}
|
|
33
|
-
|
|
34
29
|
return {
|
|
35
30
|
x: x,
|
|
36
31
|
y: y
|
|
37
32
|
};
|
|
38
33
|
};
|
|
34
|
+
|
|
39
35
|
/**
|
|
40
36
|
* Creates and stores the print of the event position for later comparison.
|
|
41
37
|
* It can be used to create a position change checker function, in order to solve the problem
|
|
@@ -43,20 +39,16 @@ var getPointFromPointerEvent = function getPointFromPointerEvent(evt, relativeTo
|
|
|
43
39
|
* @param evt
|
|
44
40
|
* @returns {function(*=): boolean}
|
|
45
41
|
*/
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
exports.getPointFromPointerEvent = getPointFromPointerEvent;
|
|
49
|
-
|
|
50
|
-
var createPositionChangeChecker = function createPositionChangeChecker(evt) {
|
|
42
|
+
var createPositionChangeChecker = exports.createPositionChangeChecker = function createPositionChangeChecker(evt) {
|
|
51
43
|
var getPositionPrint = function getPositionPrint(evt) {
|
|
52
44
|
return "" + evt.pageX + "-" + evt.pageY;
|
|
53
45
|
};
|
|
54
|
-
|
|
55
46
|
var initialPrint = getPositionPrint(evt);
|
|
56
47
|
return function (evt) {
|
|
57
48
|
return initialPrint !== getPositionPrint(evt);
|
|
58
49
|
};
|
|
59
50
|
};
|
|
51
|
+
|
|
60
52
|
/**
|
|
61
53
|
* Creates a "hit" event listener.
|
|
62
54
|
* It detects a single tap (or click) - if the pointer was released without moving.
|
|
@@ -64,29 +56,23 @@ var createPositionChangeChecker = function createPositionChangeChecker(evt) {
|
|
|
64
56
|
* @param {function} fn The event handler function
|
|
65
57
|
* @returns {function()} A function to be called to remove the event listeners
|
|
66
58
|
*/
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
exports.createPositionChangeChecker = createPositionChangeChecker;
|
|
70
|
-
|
|
71
|
-
var createPointerHitListener = function createPointerHitListener(element, fn) {
|
|
59
|
+
var createPointerHitListener = exports.createPointerHitListener = function createPointerHitListener(element, fn) {
|
|
72
60
|
var moved = false;
|
|
73
|
-
var checkPositionChange = false;
|
|
74
|
-
// see https://developer.mozilla.org/en-US/docs/Web/API/Touch_events/Supporting_both_TouchEvent_and_MouseEvent
|
|
61
|
+
var checkPositionChange = false;
|
|
75
62
|
|
|
63
|
+
// preventing the emulated mouse events after touchend
|
|
64
|
+
// see https://developer.mozilla.org/en-US/docs/Web/API/Touch_events/Supporting_both_TouchEvent_and_MouseEvent
|
|
76
65
|
var preventEmulatedEvents = function preventEmulatedEvents(cb) {
|
|
77
66
|
return function (evt) {
|
|
78
67
|
if (!moved && evt.type === "touchend") {
|
|
79
68
|
evt.preventDefault();
|
|
80
69
|
}
|
|
81
|
-
|
|
82
70
|
cb(evt);
|
|
83
71
|
};
|
|
84
72
|
};
|
|
85
|
-
|
|
86
73
|
var startHandler = function startHandler(evt) {
|
|
87
74
|
moved = false;
|
|
88
75
|
var isTouch = (evt.changedTouches || evt.touches || []).length > 0;
|
|
89
|
-
|
|
90
76
|
if (isTouch) {
|
|
91
77
|
// in case of touch events we can skip the check, the events are fired correctly
|
|
92
78
|
checkPositionChange = false;
|
|
@@ -98,7 +84,6 @@ var createPointerHitListener = function createPointerHitListener(element, fn) {
|
|
|
98
84
|
element.addEventListener("mouseup", endHandler);
|
|
99
85
|
}
|
|
100
86
|
};
|
|
101
|
-
|
|
102
87
|
var moveHandler = function moveHandler(evt) {
|
|
103
88
|
if (checkPositionChange) {
|
|
104
89
|
moved = checkPositionChange(evt);
|
|
@@ -106,7 +91,6 @@ var createPointerHitListener = function createPointerHitListener(element, fn) {
|
|
|
106
91
|
moved = true;
|
|
107
92
|
}
|
|
108
93
|
};
|
|
109
|
-
|
|
110
94
|
var endHandler = preventEmulatedEvents(function () {
|
|
111
95
|
!moved && fn.apply(void 0, arguments);
|
|
112
96
|
element.removeEventListener("touchmove", moveHandler, true);
|
|
@@ -121,6 +105,7 @@ var createPointerHitListener = function createPointerHitListener(element, fn) {
|
|
|
121
105
|
element.removeEventListener("touchstart", startHandler);
|
|
122
106
|
};
|
|
123
107
|
};
|
|
108
|
+
|
|
124
109
|
/**
|
|
125
110
|
* Creates a general pointer event listener (for mouse and touch events)
|
|
126
111
|
* @param element
|
|
@@ -128,13 +113,8 @@ var createPointerHitListener = function createPointerHitListener(element, fn) {
|
|
|
128
113
|
* @param {function} fn The event handler function
|
|
129
114
|
* @returns {function()} A function to be called to remove the event listeners
|
|
130
115
|
*/
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
exports.createPointerHitListener = createPointerHitListener;
|
|
134
|
-
|
|
135
|
-
var createPointerEventListener = function createPointerEventListener(element, name, fn) {
|
|
116
|
+
var createPointerEventListener = exports.createPointerEventListener = function createPointerEventListener(element, name, fn) {
|
|
136
117
|
var touchName, mouseName;
|
|
137
|
-
|
|
138
118
|
switch (name) {
|
|
139
119
|
case "start":
|
|
140
120
|
{
|
|
@@ -142,14 +122,12 @@ var createPointerEventListener = function createPointerEventListener(element, na
|
|
|
142
122
|
mouseName = "mousedown";
|
|
143
123
|
break;
|
|
144
124
|
}
|
|
145
|
-
|
|
146
125
|
case "move":
|
|
147
126
|
{
|
|
148
127
|
touchName = "touchmove";
|
|
149
128
|
mouseName = "mousemove";
|
|
150
129
|
break;
|
|
151
130
|
}
|
|
152
|
-
|
|
153
131
|
case "end":
|
|
154
132
|
{
|
|
155
133
|
touchName = "touchend";
|
|
@@ -157,39 +135,30 @@ var createPointerEventListener = function createPointerEventListener(element, na
|
|
|
157
135
|
break;
|
|
158
136
|
}
|
|
159
137
|
}
|
|
160
|
-
|
|
161
138
|
var tolerance = 1; // ms
|
|
162
|
-
|
|
163
139
|
var timeStamp = 0;
|
|
164
|
-
|
|
165
140
|
var touchHandler = function touchHandler(evt) {
|
|
166
141
|
timeStamp = evt.timeStamp;
|
|
167
|
-
|
|
168
142
|
for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
|
|
169
143
|
args[_key - 1] = arguments[_key];
|
|
170
144
|
}
|
|
171
|
-
|
|
172
145
|
fn.apply(void 0, [evt].concat(args));
|
|
173
146
|
};
|
|
174
|
-
|
|
175
147
|
var mouseHandler = function mouseHandler(evt) {
|
|
176
148
|
if (evt.timeStamp - timeStamp < tolerance) {
|
|
177
149
|
// eslint-disable-next-line no-console
|
|
178
150
|
console.log("Skipped double event handling.");
|
|
179
151
|
return;
|
|
180
|
-
}
|
|
152
|
+
}
|
|
153
|
+
// for 'start' we call the function only if the element is is the target (or contained by the target)
|
|
181
154
|
// for others it has to be called in every case
|
|
182
|
-
|
|
183
|
-
|
|
184
155
|
if (name !== "start" || evt.target === element || evt.target.contains(element)) {
|
|
185
156
|
for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {
|
|
186
157
|
args[_key2 - 1] = arguments[_key2];
|
|
187
158
|
}
|
|
188
|
-
|
|
189
159
|
fn.apply(void 0, [evt].concat(args));
|
|
190
160
|
}
|
|
191
161
|
};
|
|
192
|
-
|
|
193
162
|
element.addEventListener(touchName, touchHandler);
|
|
194
163
|
window.addEventListener(mouseName, mouseHandler);
|
|
195
164
|
return function () {
|
|
@@ -197,6 +166,26 @@ var createPointerEventListener = function createPointerEventListener(element, na
|
|
|
197
166
|
window.removeEventListener(mouseName, mouseHandler);
|
|
198
167
|
};
|
|
199
168
|
};
|
|
169
|
+
var createMouseMoveListener = exports.createMouseMoveListener = function createMouseMoveListener(element, _ref) {
|
|
170
|
+
var onEnter = _ref.onEnter,
|
|
171
|
+
onMove = _ref.onMove,
|
|
172
|
+
onLeave = _ref.onLeave;
|
|
173
|
+
var enterHandler = function enterHandler() {
|
|
174
|
+
onEnter && onEnter.apply(void 0, arguments);
|
|
175
|
+
onMove && element.addEventListener("mousemove", onMove);
|
|
176
|
+
};
|
|
177
|
+
var leaveHandler = function leaveHandler() {
|
|
178
|
+
onLeave && onLeave.apply(void 0, arguments);
|
|
179
|
+
onMove && element.removeEventListener("mousemove", onMove);
|
|
180
|
+
};
|
|
181
|
+
element.addEventListener("mouseenter", enterHandler);
|
|
182
|
+
element.addEventListener("mouseleave", leaveHandler);
|
|
183
|
+
return function () {
|
|
184
|
+
element.removeEventListener("mouseenter", enterHandler);
|
|
185
|
+
element.removeEventListener("mouseleave", leaveHandler);
|
|
186
|
+
};
|
|
187
|
+
};
|
|
188
|
+
|
|
200
189
|
/**
|
|
201
190
|
* Helper function to get the distance of two points
|
|
202
191
|
* @param {number} x1
|
|
@@ -205,72 +194,59 @@ var createPointerEventListener = function createPointerEventListener(element, na
|
|
|
205
194
|
* @param {number} y2
|
|
206
195
|
* @return {number}
|
|
207
196
|
*/
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
exports.createPointerEventListener = createPointerEventListener;
|
|
211
|
-
|
|
212
197
|
var getTwoPointsDistance = function getTwoPointsDistance(x1, x2, y1, y2) {
|
|
213
198
|
return Math.sqrt(Math.pow(x1 - x2, 2) + Math.pow(y1 - y2, 2));
|
|
214
199
|
};
|
|
200
|
+
|
|
215
201
|
/**
|
|
216
202
|
* Returns the distance between the first two touch points
|
|
217
203
|
* @param {array} touches The touches list from the touch event
|
|
218
204
|
* @return {null|number} The distance
|
|
219
205
|
*/
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
var getTouchDistance = function getTouchDistance(_ref) {
|
|
223
|
-
var touches = _ref.touches;
|
|
224
|
-
|
|
206
|
+
var getTouchDistance = function getTouchDistance(_ref2) {
|
|
207
|
+
var touches = _ref2.touches;
|
|
225
208
|
if (!touches || touches.length < 2) {
|
|
226
209
|
return null;
|
|
227
210
|
}
|
|
228
|
-
|
|
229
211
|
return getTwoPointsDistance(touches[0].clientX, touches[1].clientX, touches[0].clientY, touches[1].clientY);
|
|
230
212
|
};
|
|
213
|
+
|
|
231
214
|
/**
|
|
232
215
|
* Creates a pointer move event listener (for mouse and touch events)
|
|
233
216
|
* @param element
|
|
234
217
|
* @param {function} fn The event handler function
|
|
235
218
|
* @returns {function()} A function to be called to remove the event listeners
|
|
236
219
|
*/
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
var createPointerMoveEventListener = function createPointerMoveEventListener(element, fn) {
|
|
220
|
+
var createPointerMoveEventListener = exports.createPointerMoveEventListener = function createPointerMoveEventListener(element, fn) {
|
|
240
221
|
var moveListener = null;
|
|
241
|
-
|
|
242
222
|
var removeMoveListener = function removeMoveListener() {
|
|
243
223
|
if (moveListener) {
|
|
244
224
|
moveListener();
|
|
245
225
|
moveListener = null;
|
|
246
226
|
}
|
|
247
227
|
};
|
|
248
|
-
|
|
249
228
|
var getPointFromMultipleTouchEvent = function getPointFromMultipleTouchEvent(evt, prevPosition) {
|
|
250
229
|
if (!prevPosition || !evt.touches || evt.touches.length < 2) {
|
|
251
230
|
return getPointFromPointerEvent(evt);
|
|
252
231
|
}
|
|
253
|
-
|
|
254
232
|
var x = null;
|
|
255
233
|
var y = null;
|
|
256
234
|
var distance = null;
|
|
257
|
-
|
|
258
235
|
for (var i = 0; i < evt.touches.length; i++) {
|
|
259
|
-
var newDistance = getTwoPointsDistance(evt.touches[i].clientX, prevPosition.x, evt.touches[i].clientY, prevPosition.y);
|
|
236
|
+
var newDistance = getTwoPointsDistance(evt.touches[i].clientX, prevPosition.x, evt.touches[i].clientY, prevPosition.y);
|
|
260
237
|
|
|
238
|
+
// Get the closest touch event to the previous one
|
|
261
239
|
if (distance === null || newDistance < distance) {
|
|
262
240
|
distance = newDistance;
|
|
263
241
|
x = evt.touches[i].clientX;
|
|
264
242
|
y = evt.touches[i].clientY;
|
|
265
243
|
}
|
|
266
244
|
}
|
|
267
|
-
|
|
268
245
|
return {
|
|
269
246
|
x: x,
|
|
270
247
|
y: y
|
|
271
248
|
};
|
|
272
249
|
};
|
|
273
|
-
|
|
274
250
|
var startListener = createPointerEventListener(element, "start", function (evt) {
|
|
275
251
|
var prevPosition = getPointFromMultipleTouchEvent(evt);
|
|
276
252
|
var prevZoomDistance = getTouchDistance(evt);
|
|
@@ -285,11 +261,9 @@ var createPointerMoveEventListener = function createPointerMoveEventListener(ele
|
|
|
285
261
|
};
|
|
286
262
|
prevPosition = currentPosition;
|
|
287
263
|
prevZoomDistance = currentZoomDistance;
|
|
288
|
-
|
|
289
264
|
for (var _len3 = arguments.length, args = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {
|
|
290
265
|
args[_key3 - 1] = arguments[_key3];
|
|
291
266
|
}
|
|
292
|
-
|
|
293
267
|
fn.apply(void 0, [evt, change].concat(args));
|
|
294
268
|
});
|
|
295
269
|
});
|
|
@@ -302,30 +276,26 @@ var createPointerMoveEventListener = function createPointerMoveEventListener(ele
|
|
|
302
276
|
removeMoveListener();
|
|
303
277
|
};
|
|
304
278
|
};
|
|
279
|
+
|
|
305
280
|
/**
|
|
306
281
|
* Creates a mouse wheel event listener
|
|
307
282
|
* @param {HTMLElement} element
|
|
308
283
|
* @param {function} fn The event handler function
|
|
309
284
|
* @returns {function} A function to be called to remove the event listener
|
|
310
285
|
*/
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
exports.createPointerMoveEventListener = createPointerMoveEventListener;
|
|
314
|
-
|
|
315
|
-
var createMouseWheelEventListener = function createMouseWheelEventListener(element, fn) {
|
|
286
|
+
var createMouseWheelEventListener = exports.createMouseWheelEventListener = function createMouseWheelEventListener(element, fn) {
|
|
316
287
|
var handler = function handler(evt) {
|
|
317
288
|
for (var _len4 = arguments.length, args = new Array(_len4 > 1 ? _len4 - 1 : 0), _key4 = 1; _key4 < _len4; _key4++) {
|
|
318
289
|
args[_key4 - 1] = arguments[_key4];
|
|
319
290
|
}
|
|
320
|
-
|
|
321
291
|
fn.apply(void 0, [evt].concat(args));
|
|
322
292
|
};
|
|
323
|
-
|
|
324
293
|
element.addEventListener("wheel", handler);
|
|
325
294
|
return function () {
|
|
326
295
|
element.removeEventListener("wheel", handler);
|
|
327
296
|
};
|
|
328
297
|
};
|
|
298
|
+
|
|
329
299
|
/**
|
|
330
300
|
* Creates a "pinch zoom" listener using touch events
|
|
331
301
|
* @param {HTMLElement} element
|
|
@@ -333,32 +303,23 @@ var createMouseWheelEventListener = function createMouseWheelEventListener(eleme
|
|
|
333
303
|
* @param {number} sensitivity The min distance to call the wrapped event handler
|
|
334
304
|
* @return {function} A function to be called to remove the event listener
|
|
335
305
|
*/
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
exports.createMouseWheelEventListener = createMouseWheelEventListener;
|
|
339
|
-
|
|
340
|
-
var createPinchZoomListener = function createPinchZoomListener(element, fn) {
|
|
306
|
+
var createPinchZoomListener = exports.createPinchZoomListener = function createPinchZoomListener(element, fn) {
|
|
341
307
|
var sensitivity = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 10;
|
|
342
308
|
var prevDistance;
|
|
343
|
-
|
|
344
309
|
var startHandler = function startHandler(evt) {
|
|
345
310
|
if (evt.touches.length < 2) {
|
|
346
311
|
return;
|
|
347
312
|
}
|
|
348
|
-
|
|
349
313
|
element.addEventListener("touchmove", moveHandler);
|
|
350
314
|
element.addEventListener("touchend", endHandler);
|
|
351
315
|
prevDistance = getTouchDistance(evt);
|
|
352
316
|
};
|
|
353
|
-
|
|
354
317
|
var moveHandler = function moveHandler(evt) {
|
|
355
318
|
if (evt.touches.length < 2) {
|
|
356
319
|
cleanUpListeners();
|
|
357
320
|
return;
|
|
358
321
|
}
|
|
359
|
-
|
|
360
322
|
var distance = getTouchDistance(evt);
|
|
361
|
-
|
|
362
323
|
if (Math.abs(distance - prevDistance) > sensitivity) {
|
|
363
324
|
fn(evt, {
|
|
364
325
|
prevDistance: prevDistance,
|
|
@@ -367,30 +328,23 @@ var createPinchZoomListener = function createPinchZoomListener(element, fn) {
|
|
|
367
328
|
prevDistance = distance;
|
|
368
329
|
}
|
|
369
330
|
};
|
|
370
|
-
|
|
371
331
|
var endHandler = function endHandler() {
|
|
372
332
|
return element.removeEventListener("touchmove", moveHandler);
|
|
373
333
|
};
|
|
374
|
-
|
|
375
334
|
element.addEventListener("touchstart", startHandler);
|
|
376
|
-
|
|
377
335
|
var cleanUpListeners = function cleanUpListeners() {
|
|
378
336
|
element.removeEventListener("touchstart", startHandler);
|
|
379
337
|
};
|
|
380
|
-
|
|
381
338
|
return cleanUpListeners;
|
|
382
339
|
};
|
|
340
|
+
|
|
383
341
|
/**
|
|
384
342
|
* Creates a general zoom handler that includes mouse wheel and the two finger pinch as well
|
|
385
343
|
* @param {HTMLElement} element
|
|
386
344
|
* @param {function} fn The event handler function
|
|
387
345
|
* @return {function} A function to be called to remove the event listeners
|
|
388
346
|
*/
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
exports.createPinchZoomListener = createPinchZoomListener;
|
|
392
|
-
|
|
393
|
-
var createZoomHandler = function createZoomHandler(element, fn) {
|
|
347
|
+
var createZoomHandler = exports.createZoomHandler = function createZoomHandler(element, fn) {
|
|
394
348
|
var cleanUpMouseWheelListener = createMouseWheelEventListener(element, function (evt) {
|
|
395
349
|
var eventDelta = evt.deltaY || evt.detail;
|
|
396
350
|
var direction = eventDelta > 0 ? "out" : "in";
|
|
@@ -400,7 +354,7 @@ var createZoomHandler = function createZoomHandler(element, fn) {
|
|
|
400
354
|
});
|
|
401
355
|
var cleanUpPinchZoomListener = createPinchZoomListener(element, function (evt, data) {
|
|
402
356
|
var distance = data.distance,
|
|
403
|
-
|
|
357
|
+
prevDistance = data.prevDistance;
|
|
404
358
|
var direction = distance / prevDistance < 1 ? "out" : "in";
|
|
405
359
|
fn(evt, {
|
|
406
360
|
direction: direction
|
|
@@ -410,6 +364,4 @@ var createZoomHandler = function createZoomHandler(element, fn) {
|
|
|
410
364
|
cleanUpMouseWheelListener();
|
|
411
365
|
cleanUpPinchZoomListener();
|
|
412
366
|
};
|
|
413
|
-
};
|
|
414
|
-
|
|
415
|
-
exports.createZoomHandler = createZoomHandler;
|
|
367
|
+
};
|
package/Constants.js
CHANGED
|
@@ -4,7 +4,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.Numeric = exports.EventTypes = void 0;
|
|
7
|
-
var EventTypes = {
|
|
7
|
+
var EventTypes = exports.EventTypes = {
|
|
8
8
|
Intersection: "Visualization/Intersection",
|
|
9
9
|
ClickAway: "Visualization/ClickAway",
|
|
10
10
|
ModelLoaded: "Visualization/ModelLoaded",
|
|
@@ -14,10 +14,10 @@ var EventTypes = {
|
|
|
14
14
|
LoadStart: "Visualization/LoadStart",
|
|
15
15
|
LoadFinished: "Visualization/LoadFinished",
|
|
16
16
|
LoadError: "Visualization/LoadError",
|
|
17
|
-
Zoomed: "Visualization/Zoomed"
|
|
17
|
+
Zoomed: "Visualization/Zoomed",
|
|
18
|
+
HoverIn: "Visualization/HoverIn",
|
|
19
|
+
HoverOut: "Visualization/HoverOut"
|
|
18
20
|
};
|
|
19
|
-
exports.
|
|
20
|
-
var Numeric = {
|
|
21
|
+
var Numeric = exports.Numeric = {
|
|
21
22
|
TwoPI: 2 * Math.PI
|
|
22
|
-
};
|
|
23
|
-
exports.Numeric = Numeric;
|
|
23
|
+
};
|