redhotmagma-visualization 1.28.0-beta.2 → 1.28.2
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/README.md +4 -11
- package/babel.config.js +41 -0
- package/package.json +72 -6
- package/public/libs/draco/README.md +32 -0
- package/public/libs/draco/draco_decoder.js +52 -0
- package/public/libs/draco/draco_decoder.wasm +0 -0
- package/public/libs/draco/draco_encoder.js +33 -0
- package/public/libs/draco/draco_wasm_wrapper.js +104 -0
- package/public/libs/draco/gltf/draco_decoder.js +48 -0
- package/public/libs/draco/gltf/draco_decoder.wasm +0 -0
- package/public/libs/draco/gltf/draco_encoder.js +33 -0
- package/public/libs/draco/gltf/draco_wasm_wrapper.js +104 -0
- package/scripts/cpPath.js +151 -0
- package/scripts/cpPublic.js +39 -0
- package/scripts/moveLibToPackageRoot.js +44 -0
- package/scripts/utils/fileSystem.js +69 -0
- package/scripts/utils/process.js +19 -0
- package/src/CommonUtils/Observable.js +0 -1
- package/src/CommonUtils/pointerEvent.js +1 -2
- package/src/DevApp.js +1 -2
- package/src/FallbackVisualization.js +5 -1
- package/src/PrintingEffects/DomingEffect.js +0 -1
- package/src/PrintingEffects/EmbroideryEffect.js +2 -3
- package/src/React/ReactBase.js +1 -1
- package/src/Three/Controls/OrbitControls.js +0 -2
- package/src/Three/Loaders/ColladaLoader.js +294 -111
- package/src/Three/Loaders/MTLLoader.js +0 -2
- package/src/Three/Loaders/OBJLoader.js +0 -2
- package/src/Three/Three2D.js +6 -7
- package/src/Three/Three3D.js +1 -9
- package/src/Three/ThreeBase.js +1 -10
- package/src/Utils/DesignArea/getDesignAreaCanvasSize.js +0 -1
- package/src/Utils/TextureBuilder/createTextureBuilder.js +0 -2
- package/src/Utils/imagePreloader.js +0 -1
- package/src/Utils/initTextureCanvas.js +0 -3
- package/src/Utils/isMobileDevice.js +0 -2
- package/src/Utils/optimizeTextureImage.js +0 -1
- package/src/VisualizationContainer.js +1 -3
- package/src/VisualizationInterface.js +1 -10
- package/tsconfig.json +22 -0
- package/AlignTargetProvider.js +0 -129
- package/CommonUtils/Deferred.js +0 -135
- package/CommonUtils/Observable.js +0 -126
- package/CommonUtils/PropertyObserver.js +0 -61
- package/CommonUtils/SyncCurrentFunction.js +0 -59
- package/CommonUtils/SyncObservableEvent.js +0 -19
- package/CommonUtils/pointerEvent.js +0 -415
- package/Constants.js +0 -23
- package/DevApp.js +0 -1049
- package/ExposedModules.js +0 -26
- package/FallbackVisualization.js +0 -26
- package/PrintingEffects/ColorEmbossingEffect.js +0 -58
- package/PrintingEffects/DomingEffect.js +0 -150
- package/PrintingEffects/EmbossingEffect.js +0 -65
- package/PrintingEffects/EmbroideryEffect.js +0 -541
- package/PrintingEffects/EngravingEffect.js +0 -65
- package/PrintingEffects/PrintingEffects.js +0 -117
- package/PrintingEffects/PrintingEffectsUtils.js +0 -53
- package/PrintingEffects/resources/embroidery_multiply.jpg +0 -0
- package/PrintingEffects/resources/embroidery_screen.jpg +0 -0
- package/React/ReactBase.js +0 -111
- package/Three/Controls/OrbitControls.js +0 -745
- package/Three/Exporters/glTFExporter.js +0 -48
- package/Three/Loaders/ColladaLoader.js +0 -2916
- package/Three/Loaders/MTLLoader.js +0 -449
- package/Three/Loaders/OBJLoader.js +0 -548
- package/Three/Three2D.js +0 -1778
- package/Three/Three2DLayers.js +0 -504
- package/Three/Three3D.js +0 -1412
- package/Three/Three3DScene.js +0 -1432
- package/Three/ThreeBase.js +0 -722
- package/Utils/DesignArea/getDesignAreaCanvasSize.js +0 -32
- package/Utils/TextureBuilder/createTextureBuilder.js +0 -334
- package/Utils/TextureBuilder/textureBuilderFunctions.js +0 -87
- package/Utils/alignToElement.js +0 -58
- package/Utils/createAlphaMapFromAlphaChannel.js +0 -50
- package/Utils/createCache.js +0 -46
- package/Utils/createCanvas.js +0 -29
- package/Utils/createImageRepository.js +0 -124
- package/Utils/disposeMaterial.js +0 -41
- package/Utils/getImageSize.js +0 -15
- package/Utils/imagePreloader.js +0 -76
- package/Utils/initTextureCanvas.js +0 -49
- package/Utils/isMobileDevice.js +0 -19
- package/Utils/optimizeTextureImage.js +0 -73
- package/Utils/rememberCameraViewOffset.js +0 -21
- package/Utils/removeObject.js +0 -22
- package/Utils/restrictCameraMovement.js +0 -45
- package/Utils/setOrthographicCameraSize.js +0 -16
- package/Utils/updateFitSizeToElement.js +0 -39
- package/VisualizationContainer.js +0 -279
- package/VisualizationInterface.js +0 -293
- package/VisualizationProvider.js +0 -38
- package/__mocks__/exportedSample.svg +0 -45
- package/index.js +0 -16
- package/visualizationAdapterCreator.js +0 -76
|
@@ -1,126 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports["default"] = exports.Observable = void 0;
|
|
7
|
-
|
|
8
|
-
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); } }
|
|
9
|
-
|
|
10
|
-
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); }); }; }
|
|
11
|
-
|
|
12
|
-
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
13
|
-
|
|
14
|
-
function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
|
|
15
|
-
|
|
16
|
-
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
|
|
17
|
-
|
|
18
|
-
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
19
|
-
|
|
20
|
-
var Observable = /*#__PURE__*/function () {
|
|
21
|
-
function Observable(object) {
|
|
22
|
-
_classCallCheck(this, Observable);
|
|
23
|
-
|
|
24
|
-
_defineProperty(this, "_eventListeners", []);
|
|
25
|
-
|
|
26
|
-
_defineProperty(this, "_object", null);
|
|
27
|
-
|
|
28
|
-
this._object = object;
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
_createClass(Observable, [{
|
|
32
|
-
key: "on",
|
|
33
|
-
value: function on(eventName, callback) {
|
|
34
|
-
if (this.indexOf(eventName, callback) !== -1) {
|
|
35
|
-
// eslint-disable-next-line no-console
|
|
36
|
-
console.warn("The following callback is already added to the event: ".concat(eventName), callback);
|
|
37
|
-
return;
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
this._eventListeners.push({
|
|
41
|
-
eventName: eventName,
|
|
42
|
-
callback: callback
|
|
43
|
-
});
|
|
44
|
-
}
|
|
45
|
-
}, {
|
|
46
|
-
key: "off",
|
|
47
|
-
value: function off(eventName, callback) {
|
|
48
|
-
var idx = this.indexOf(eventName, callback);
|
|
49
|
-
|
|
50
|
-
if (idx !== -1) {
|
|
51
|
-
this._eventListeners.splice(idx, 1);
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
}, {
|
|
55
|
-
key: "indexOf",
|
|
56
|
-
value: function indexOf(eventName, callback) {
|
|
57
|
-
for (var o = 0; o < this._eventListeners.length; o++) {
|
|
58
|
-
var el = this._eventListeners[o];
|
|
59
|
-
|
|
60
|
-
if (el.eventName === eventName && el.callback === callback) {
|
|
61
|
-
return o;
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
return -1;
|
|
66
|
-
}
|
|
67
|
-
}, {
|
|
68
|
-
key: "dispatch",
|
|
69
|
-
value: function dispatch(eventName, params) {
|
|
70
|
-
var _this = this;
|
|
71
|
-
|
|
72
|
-
var direct = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
|
|
73
|
-
|
|
74
|
-
var notify = function notify() {
|
|
75
|
-
return Promise.all(_this._eventListeners.filter(function (el) {
|
|
76
|
-
return el.eventName === eventName;
|
|
77
|
-
}).map(function (el) {
|
|
78
|
-
return el.callback.call(_this._object, {
|
|
79
|
-
eventName: eventName,
|
|
80
|
-
time: new Date(),
|
|
81
|
-
data: params
|
|
82
|
-
});
|
|
83
|
-
}));
|
|
84
|
-
};
|
|
85
|
-
|
|
86
|
-
if (direct) {
|
|
87
|
-
return notify();
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
return new Promise(function (resolve) {
|
|
91
|
-
setTimeout( /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {
|
|
92
|
-
return regeneratorRuntime.wrap(function _callee$(_context) {
|
|
93
|
-
while (1) {
|
|
94
|
-
switch (_context.prev = _context.next) {
|
|
95
|
-
case 0:
|
|
96
|
-
_context.t0 = resolve;
|
|
97
|
-
_context.next = 3;
|
|
98
|
-
return notify();
|
|
99
|
-
|
|
100
|
-
case 3:
|
|
101
|
-
_context.t1 = _context.sent;
|
|
102
|
-
(0, _context.t0)(_context.t1);
|
|
103
|
-
|
|
104
|
-
case 5:
|
|
105
|
-
case "end":
|
|
106
|
-
return _context.stop();
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
}, _callee);
|
|
110
|
-
})));
|
|
111
|
-
});
|
|
112
|
-
}
|
|
113
|
-
}, {
|
|
114
|
-
key: "dispose",
|
|
115
|
-
value: function dispose() {
|
|
116
|
-
this._eventListeners = [];
|
|
117
|
-
this._object = undefined;
|
|
118
|
-
}
|
|
119
|
-
}]);
|
|
120
|
-
|
|
121
|
-
return Observable;
|
|
122
|
-
}();
|
|
123
|
-
|
|
124
|
-
exports.Observable = Observable;
|
|
125
|
-
var _default = Observable;
|
|
126
|
-
exports["default"] = _default;
|
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.observeProperty = void 0;
|
|
7
|
-
|
|
8
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
|
|
9
|
-
|
|
10
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
11
|
-
|
|
12
|
-
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
13
|
-
|
|
14
|
-
var isDataDescriptor = function isDataDescriptor(descriptorObject) {
|
|
15
|
-
return descriptorObject.hasOwnProperty("value");
|
|
16
|
-
};
|
|
17
|
-
/**
|
|
18
|
-
* Decorator function to observe the change of a property value
|
|
19
|
-
* It calls the original set or get if there was any
|
|
20
|
-
* @param {object} object
|
|
21
|
-
* @param {string|number|symbol} prop
|
|
22
|
-
* @param {function} onChange
|
|
23
|
-
*/
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
var observeProperty = function observeProperty(object, prop, onChange) {
|
|
27
|
-
var descriptor = Object.getOwnPropertyDescriptor(object, prop);
|
|
28
|
-
var _get = descriptor.get,
|
|
29
|
-
_set = descriptor.set;
|
|
30
|
-
|
|
31
|
-
var _value;
|
|
32
|
-
|
|
33
|
-
var dispose = function dispose() {
|
|
34
|
-
if (isDataDescriptor(descriptor)) {
|
|
35
|
-
Object.defineProperty(object, prop, _objectSpread(_objectSpread({}, descriptor), {}, {
|
|
36
|
-
value: _value
|
|
37
|
-
}));
|
|
38
|
-
} else {
|
|
39
|
-
Object.defineProperty(object, prop, descriptor);
|
|
40
|
-
}
|
|
41
|
-
};
|
|
42
|
-
|
|
43
|
-
Object.defineProperty(object, prop, {
|
|
44
|
-
set: function set(value) {
|
|
45
|
-
if (value !== _value) {
|
|
46
|
-
_value = value;
|
|
47
|
-
_set && _set.call(object, value);
|
|
48
|
-
onChange({
|
|
49
|
-
prop: prop,
|
|
50
|
-
value: value,
|
|
51
|
-
dispose: dispose
|
|
52
|
-
});
|
|
53
|
-
}
|
|
54
|
-
},
|
|
55
|
-
get: function get() {
|
|
56
|
-
return _get ? _get.call(object) : _value;
|
|
57
|
-
}
|
|
58
|
-
});
|
|
59
|
-
};
|
|
60
|
-
|
|
61
|
-
exports.observeProperty = observeProperty;
|
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.syncCurrent = syncCurrent;
|
|
7
|
-
|
|
8
|
-
var _Deferred = require("./Deferred");
|
|
9
|
-
|
|
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
|
-
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
|
-
function syncCurrent(cb) {
|
|
15
|
-
var current;
|
|
16
|
-
return /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {
|
|
17
|
-
var prev,
|
|
18
|
-
deferredSync,
|
|
19
|
-
_args = arguments;
|
|
20
|
-
return regeneratorRuntime.wrap(function _callee$(_context) {
|
|
21
|
-
while (1) {
|
|
22
|
-
switch (_context.prev = _context.next) {
|
|
23
|
-
case 0:
|
|
24
|
-
prev = current;
|
|
25
|
-
deferredSync = new _Deferred.Deferred();
|
|
26
|
-
current = {
|
|
27
|
-
started: false,
|
|
28
|
-
promise: deferredSync.promise
|
|
29
|
-
};
|
|
30
|
-
_context.t0 = prev && prev.started;
|
|
31
|
-
|
|
32
|
-
if (!_context.t0) {
|
|
33
|
-
_context.next = 7;
|
|
34
|
-
break;
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
_context.next = 7;
|
|
38
|
-
return prev.promise;
|
|
39
|
-
|
|
40
|
-
case 7:
|
|
41
|
-
current.started = true;
|
|
42
|
-
_context.prev = 8;
|
|
43
|
-
_context.next = 11;
|
|
44
|
-
return cb.apply(void 0, _args);
|
|
45
|
-
|
|
46
|
-
case 11:
|
|
47
|
-
_context.prev = 11;
|
|
48
|
-
// always resolve to ensure the next update runs
|
|
49
|
-
deferredSync.resolve();
|
|
50
|
-
return _context.finish(11);
|
|
51
|
-
|
|
52
|
-
case 14:
|
|
53
|
-
case "end":
|
|
54
|
-
return _context.stop();
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
}, _callee, null, [[8,, 11, 14]]);
|
|
58
|
-
}));
|
|
59
|
-
}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.syncObservableEvent = void 0;
|
|
7
|
-
|
|
8
|
-
var syncObservableEvent = function syncObservableEvent(observable, eventName) {
|
|
9
|
-
return new Promise(function (resolve) {
|
|
10
|
-
var resolveAndCleanUp = function resolveAndCleanUp() {
|
|
11
|
-
resolve();
|
|
12
|
-
observable.off(eventName, resolveAndCleanUp);
|
|
13
|
-
};
|
|
14
|
-
|
|
15
|
-
observable.on(eventName, resolveAndCleanUp);
|
|
16
|
-
});
|
|
17
|
-
};
|
|
18
|
-
|
|
19
|
-
exports.syncObservableEvent = syncObservableEvent;
|
|
@@ -1,415 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.createZoomHandler = exports.createPinchZoomListener = exports.createMouseWheelEventListener = exports.createPointerMoveEventListener = exports.createPointerEventListener = exports.createPointerHitListener = exports.createPositionChangeChecker = exports.getPointFromPointerEvent = void 0;
|
|
7
|
-
|
|
8
|
-
/**
|
|
9
|
-
* @param {MouseEvent|TouchEvent} evt
|
|
10
|
-
* @param {HTMLElement} relativeTo
|
|
11
|
-
* @returns {{x: number, y: number}}
|
|
12
|
-
*/
|
|
13
|
-
var getPointFromPointerEvent = function getPointFromPointerEvent(evt, relativeTo) {
|
|
14
|
-
var x, y;
|
|
15
|
-
var touches = evt.changedTouches && evt.changedTouches.length > 0 && evt.changedTouches || evt.touches;
|
|
16
|
-
|
|
17
|
-
if (touches && touches.length > 0) {
|
|
18
|
-
x = touches[0].clientX;
|
|
19
|
-
y = touches[0].clientY;
|
|
20
|
-
} else {
|
|
21
|
-
x = evt.clientX;
|
|
22
|
-
y = evt.clientY;
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
if (relativeTo) {
|
|
26
|
-
var _relativeTo$getBoundi = relativeTo.getBoundingClientRect(),
|
|
27
|
-
top = _relativeTo$getBoundi.top,
|
|
28
|
-
left = _relativeTo$getBoundi.left;
|
|
29
|
-
|
|
30
|
-
x -= left;
|
|
31
|
-
y -= top;
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
return {
|
|
35
|
-
x: x,
|
|
36
|
-
y: y
|
|
37
|
-
};
|
|
38
|
-
};
|
|
39
|
-
/**
|
|
40
|
-
* Creates and stores the print of the event position for later comparison.
|
|
41
|
-
* It can be used to create a position change checker function, in order to solve the problem
|
|
42
|
-
* of Chrome's automatically triggered mousemove event when clicking without moving the mouse.
|
|
43
|
-
* @param evt
|
|
44
|
-
* @returns {function(*=): boolean}
|
|
45
|
-
*/
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
exports.getPointFromPointerEvent = getPointFromPointerEvent;
|
|
49
|
-
|
|
50
|
-
var createPositionChangeChecker = function createPositionChangeChecker(evt) {
|
|
51
|
-
var getPositionPrint = function getPositionPrint(evt) {
|
|
52
|
-
return "" + evt.pageX + "-" + evt.pageY;
|
|
53
|
-
};
|
|
54
|
-
|
|
55
|
-
var initialPrint = getPositionPrint(evt);
|
|
56
|
-
return function (evt) {
|
|
57
|
-
return initialPrint !== getPositionPrint(evt);
|
|
58
|
-
};
|
|
59
|
-
};
|
|
60
|
-
/**
|
|
61
|
-
* Creates a "hit" event listener.
|
|
62
|
-
* It detects a single tap (or click) - if the pointer was released without moving.
|
|
63
|
-
* @param element
|
|
64
|
-
* @param {function} fn The event handler function
|
|
65
|
-
* @returns {function()} A function to be called to remove the event listeners
|
|
66
|
-
*/
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
exports.createPositionChangeChecker = createPositionChangeChecker;
|
|
70
|
-
|
|
71
|
-
var createPointerHitListener = function createPointerHitListener(element, fn) {
|
|
72
|
-
var moved = false;
|
|
73
|
-
var checkPositionChange = false; // preventing the emulated mouse events after touchend
|
|
74
|
-
// see https://developer.mozilla.org/en-US/docs/Web/API/Touch_events/Supporting_both_TouchEvent_and_MouseEvent
|
|
75
|
-
|
|
76
|
-
var preventEmulatedEvents = function preventEmulatedEvents(cb) {
|
|
77
|
-
return function (evt) {
|
|
78
|
-
if (!moved && evt.type === "touchend") {
|
|
79
|
-
evt.preventDefault();
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
cb(evt);
|
|
83
|
-
};
|
|
84
|
-
};
|
|
85
|
-
|
|
86
|
-
var startHandler = function startHandler(evt) {
|
|
87
|
-
moved = false;
|
|
88
|
-
var isTouch = (evt.changedTouches || evt.touches || []).length > 0;
|
|
89
|
-
|
|
90
|
-
if (isTouch) {
|
|
91
|
-
// in case of touch events we can skip the check, the events are fired correctly
|
|
92
|
-
checkPositionChange = false;
|
|
93
|
-
element.addEventListener("touchmove", moveHandler, true);
|
|
94
|
-
element.addEventListener("touchend", endHandler);
|
|
95
|
-
} else {
|
|
96
|
-
checkPositionChange = createPositionChangeChecker(evt);
|
|
97
|
-
element.addEventListener("mousemove", moveHandler);
|
|
98
|
-
element.addEventListener("mouseup", endHandler);
|
|
99
|
-
}
|
|
100
|
-
};
|
|
101
|
-
|
|
102
|
-
var moveHandler = function moveHandler(evt) {
|
|
103
|
-
if (checkPositionChange) {
|
|
104
|
-
moved = checkPositionChange(evt);
|
|
105
|
-
} else {
|
|
106
|
-
moved = true;
|
|
107
|
-
}
|
|
108
|
-
};
|
|
109
|
-
|
|
110
|
-
var endHandler = preventEmulatedEvents(function () {
|
|
111
|
-
!moved && fn.apply(void 0, arguments);
|
|
112
|
-
element.removeEventListener("touchmove", moveHandler, true);
|
|
113
|
-
element.removeEventListener("mousemove", moveHandler);
|
|
114
|
-
element.removeEventListener("touchend", endHandler);
|
|
115
|
-
element.removeEventListener("mouseup", endHandler);
|
|
116
|
-
});
|
|
117
|
-
element.addEventListener("mousedown", startHandler);
|
|
118
|
-
element.addEventListener("touchstart", startHandler);
|
|
119
|
-
return function () {
|
|
120
|
-
element.removeEventListener("mousedown", startHandler);
|
|
121
|
-
element.removeEventListener("touchstart", startHandler);
|
|
122
|
-
};
|
|
123
|
-
};
|
|
124
|
-
/**
|
|
125
|
-
* Creates a general pointer event listener (for mouse and touch events)
|
|
126
|
-
* @param element
|
|
127
|
-
* @param {string} name The name of the event phase ('start'|'move'|'end')
|
|
128
|
-
* @param {function} fn The event handler function
|
|
129
|
-
* @returns {function()} A function to be called to remove the event listeners
|
|
130
|
-
*/
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
exports.createPointerHitListener = createPointerHitListener;
|
|
134
|
-
|
|
135
|
-
var createPointerEventListener = function createPointerEventListener(element, name, fn) {
|
|
136
|
-
var touchName, mouseName;
|
|
137
|
-
|
|
138
|
-
switch (name) {
|
|
139
|
-
case "start":
|
|
140
|
-
{
|
|
141
|
-
touchName = "touchstart";
|
|
142
|
-
mouseName = "mousedown";
|
|
143
|
-
break;
|
|
144
|
-
}
|
|
145
|
-
|
|
146
|
-
case "move":
|
|
147
|
-
{
|
|
148
|
-
touchName = "touchmove";
|
|
149
|
-
mouseName = "mousemove";
|
|
150
|
-
break;
|
|
151
|
-
}
|
|
152
|
-
|
|
153
|
-
case "end":
|
|
154
|
-
{
|
|
155
|
-
touchName = "touchend";
|
|
156
|
-
mouseName = "mouseup";
|
|
157
|
-
break;
|
|
158
|
-
}
|
|
159
|
-
}
|
|
160
|
-
|
|
161
|
-
var tolerance = 1; // ms
|
|
162
|
-
|
|
163
|
-
var timeStamp = 0;
|
|
164
|
-
|
|
165
|
-
var touchHandler = function touchHandler(evt) {
|
|
166
|
-
timeStamp = evt.timeStamp;
|
|
167
|
-
|
|
168
|
-
for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
|
|
169
|
-
args[_key - 1] = arguments[_key];
|
|
170
|
-
}
|
|
171
|
-
|
|
172
|
-
fn.apply(void 0, [evt].concat(args));
|
|
173
|
-
};
|
|
174
|
-
|
|
175
|
-
var mouseHandler = function mouseHandler(evt) {
|
|
176
|
-
if (evt.timeStamp - timeStamp < tolerance) {
|
|
177
|
-
// eslint-disable-next-line no-console
|
|
178
|
-
console.log("Skipped double event handling.");
|
|
179
|
-
return;
|
|
180
|
-
} // for 'start' we call the function only if the element is is the target (or contained by the target)
|
|
181
|
-
// for others it has to be called in every case
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
if (name !== "start" || evt.target === element || evt.target.contains(element)) {
|
|
185
|
-
for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {
|
|
186
|
-
args[_key2 - 1] = arguments[_key2];
|
|
187
|
-
}
|
|
188
|
-
|
|
189
|
-
fn.apply(void 0, [evt].concat(args));
|
|
190
|
-
}
|
|
191
|
-
};
|
|
192
|
-
|
|
193
|
-
element.addEventListener(touchName, touchHandler);
|
|
194
|
-
window.addEventListener(mouseName, mouseHandler);
|
|
195
|
-
return function () {
|
|
196
|
-
element.removeEventListener(touchName, touchHandler);
|
|
197
|
-
window.removeEventListener(mouseName, mouseHandler);
|
|
198
|
-
};
|
|
199
|
-
};
|
|
200
|
-
/**
|
|
201
|
-
* Helper function to get the distance of two points
|
|
202
|
-
* @param {number} x1
|
|
203
|
-
* @param {number} x2
|
|
204
|
-
* @param {number} y1
|
|
205
|
-
* @param {number} y2
|
|
206
|
-
* @return {number}
|
|
207
|
-
*/
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
exports.createPointerEventListener = createPointerEventListener;
|
|
211
|
-
|
|
212
|
-
var getTwoPointsDistance = function getTwoPointsDistance(x1, x2, y1, y2) {
|
|
213
|
-
return Math.sqrt(Math.pow(x1 - x2, 2) + Math.pow(y1 - y2, 2));
|
|
214
|
-
};
|
|
215
|
-
/**
|
|
216
|
-
* Returns the distance between the first two touch points
|
|
217
|
-
* @param {array} touches The touches list from the touch event
|
|
218
|
-
* @return {null|number} The distance
|
|
219
|
-
*/
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
var getTouchDistance = function getTouchDistance(_ref) {
|
|
223
|
-
var touches = _ref.touches;
|
|
224
|
-
|
|
225
|
-
if (!touches || touches.length < 2) {
|
|
226
|
-
return null;
|
|
227
|
-
}
|
|
228
|
-
|
|
229
|
-
return getTwoPointsDistance(touches[0].clientX, touches[1].clientX, touches[0].clientY, touches[1].clientY);
|
|
230
|
-
};
|
|
231
|
-
/**
|
|
232
|
-
* Creates a pointer move event listener (for mouse and touch events)
|
|
233
|
-
* @param element
|
|
234
|
-
* @param {function} fn The event handler function
|
|
235
|
-
* @returns {function()} A function to be called to remove the event listeners
|
|
236
|
-
*/
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
var createPointerMoveEventListener = function createPointerMoveEventListener(element, fn) {
|
|
240
|
-
var moveListener = null;
|
|
241
|
-
|
|
242
|
-
var removeMoveListener = function removeMoveListener() {
|
|
243
|
-
if (moveListener) {
|
|
244
|
-
moveListener();
|
|
245
|
-
moveListener = null;
|
|
246
|
-
}
|
|
247
|
-
};
|
|
248
|
-
|
|
249
|
-
var getPointFromMultipleTouchEvent = function getPointFromMultipleTouchEvent(evt, prevPosition) {
|
|
250
|
-
if (!prevPosition || !evt.touches || evt.touches.length < 2) {
|
|
251
|
-
return getPointFromPointerEvent(evt);
|
|
252
|
-
}
|
|
253
|
-
|
|
254
|
-
var x = null;
|
|
255
|
-
var y = null;
|
|
256
|
-
var distance = null;
|
|
257
|
-
|
|
258
|
-
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); // Get the closest touch event to the previous one
|
|
260
|
-
|
|
261
|
-
if (distance === null || newDistance < distance) {
|
|
262
|
-
distance = newDistance;
|
|
263
|
-
x = evt.touches[i].clientX;
|
|
264
|
-
y = evt.touches[i].clientY;
|
|
265
|
-
}
|
|
266
|
-
}
|
|
267
|
-
|
|
268
|
-
return {
|
|
269
|
-
x: x,
|
|
270
|
-
y: y
|
|
271
|
-
};
|
|
272
|
-
};
|
|
273
|
-
|
|
274
|
-
var startListener = createPointerEventListener(element, "start", function (evt) {
|
|
275
|
-
var prevPosition = getPointFromMultipleTouchEvent(evt);
|
|
276
|
-
var prevZoomDistance = getTouchDistance(evt);
|
|
277
|
-
removeMoveListener();
|
|
278
|
-
moveListener = createPointerEventListener(element, "move", function (evt) {
|
|
279
|
-
var currentPosition = getPointFromMultipleTouchEvent(evt, prevPosition);
|
|
280
|
-
var currentZoomDistance = getTouchDistance(evt);
|
|
281
|
-
var change = {
|
|
282
|
-
x: currentPosition.x - prevPosition.x,
|
|
283
|
-
y: currentPosition.y - prevPosition.y,
|
|
284
|
-
zoom: prevZoomDistance !== null && currentZoomDistance !== null ? currentZoomDistance / prevZoomDistance : null
|
|
285
|
-
};
|
|
286
|
-
prevPosition = currentPosition;
|
|
287
|
-
prevZoomDistance = currentZoomDistance;
|
|
288
|
-
|
|
289
|
-
for (var _len3 = arguments.length, args = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {
|
|
290
|
-
args[_key3 - 1] = arguments[_key3];
|
|
291
|
-
}
|
|
292
|
-
|
|
293
|
-
fn.apply(void 0, [evt, change].concat(args));
|
|
294
|
-
});
|
|
295
|
-
});
|
|
296
|
-
var endListener = createPointerEventListener(element, "end", function () {
|
|
297
|
-
removeMoveListener();
|
|
298
|
-
});
|
|
299
|
-
return function () {
|
|
300
|
-
startListener();
|
|
301
|
-
endListener();
|
|
302
|
-
removeMoveListener();
|
|
303
|
-
};
|
|
304
|
-
};
|
|
305
|
-
/**
|
|
306
|
-
* Creates a mouse wheel event listener
|
|
307
|
-
* @param {HTMLElement} element
|
|
308
|
-
* @param {function} fn The event handler function
|
|
309
|
-
* @returns {function} A function to be called to remove the event listener
|
|
310
|
-
*/
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
exports.createPointerMoveEventListener = createPointerMoveEventListener;
|
|
314
|
-
|
|
315
|
-
var createMouseWheelEventListener = function createMouseWheelEventListener(element, fn) {
|
|
316
|
-
var handler = function handler(evt) {
|
|
317
|
-
for (var _len4 = arguments.length, args = new Array(_len4 > 1 ? _len4 - 1 : 0), _key4 = 1; _key4 < _len4; _key4++) {
|
|
318
|
-
args[_key4 - 1] = arguments[_key4];
|
|
319
|
-
}
|
|
320
|
-
|
|
321
|
-
fn.apply(void 0, [evt].concat(args));
|
|
322
|
-
};
|
|
323
|
-
|
|
324
|
-
element.addEventListener("wheel", handler);
|
|
325
|
-
return function () {
|
|
326
|
-
element.removeEventListener("wheel", handler);
|
|
327
|
-
};
|
|
328
|
-
};
|
|
329
|
-
/**
|
|
330
|
-
* Creates a "pinch zoom" listener using touch events
|
|
331
|
-
* @param {HTMLElement} element
|
|
332
|
-
* @param {function} fn The event handler function
|
|
333
|
-
* @param {number} sensitivity The min distance to call the wrapped event handler
|
|
334
|
-
* @return {function} A function to be called to remove the event listener
|
|
335
|
-
*/
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
exports.createMouseWheelEventListener = createMouseWheelEventListener;
|
|
339
|
-
|
|
340
|
-
var createPinchZoomListener = function createPinchZoomListener(element, fn) {
|
|
341
|
-
var sensitivity = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 10;
|
|
342
|
-
var prevDistance;
|
|
343
|
-
|
|
344
|
-
var startHandler = function startHandler(evt) {
|
|
345
|
-
if (evt.touches.length < 2) {
|
|
346
|
-
return;
|
|
347
|
-
}
|
|
348
|
-
|
|
349
|
-
element.addEventListener("touchmove", moveHandler);
|
|
350
|
-
element.addEventListener("touchend", endHandler);
|
|
351
|
-
prevDistance = getTouchDistance(evt);
|
|
352
|
-
};
|
|
353
|
-
|
|
354
|
-
var moveHandler = function moveHandler(evt) {
|
|
355
|
-
if (evt.touches.length < 2) {
|
|
356
|
-
cleanUpListeners();
|
|
357
|
-
return;
|
|
358
|
-
}
|
|
359
|
-
|
|
360
|
-
var distance = getTouchDistance(evt);
|
|
361
|
-
|
|
362
|
-
if (Math.abs(distance - prevDistance) > sensitivity) {
|
|
363
|
-
fn(evt, {
|
|
364
|
-
prevDistance: prevDistance,
|
|
365
|
-
distance: distance
|
|
366
|
-
});
|
|
367
|
-
prevDistance = distance;
|
|
368
|
-
}
|
|
369
|
-
};
|
|
370
|
-
|
|
371
|
-
var endHandler = function endHandler() {
|
|
372
|
-
return element.removeEventListener("touchmove", moveHandler);
|
|
373
|
-
};
|
|
374
|
-
|
|
375
|
-
element.addEventListener("touchstart", startHandler);
|
|
376
|
-
|
|
377
|
-
var cleanUpListeners = function cleanUpListeners() {
|
|
378
|
-
element.removeEventListener("touchstart", startHandler);
|
|
379
|
-
};
|
|
380
|
-
|
|
381
|
-
return cleanUpListeners;
|
|
382
|
-
};
|
|
383
|
-
/**
|
|
384
|
-
* Creates a general zoom handler that includes mouse wheel and the two finger pinch as well
|
|
385
|
-
* @param {HTMLElement} element
|
|
386
|
-
* @param {function} fn The event handler function
|
|
387
|
-
* @return {function} A function to be called to remove the event listeners
|
|
388
|
-
*/
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
exports.createPinchZoomListener = createPinchZoomListener;
|
|
392
|
-
|
|
393
|
-
var createZoomHandler = function createZoomHandler(element, fn) {
|
|
394
|
-
var cleanUpMouseWheelListener = createMouseWheelEventListener(element, function (evt) {
|
|
395
|
-
var eventDelta = evt.deltaY || evt.detail;
|
|
396
|
-
var direction = eventDelta > 0 ? "out" : "in";
|
|
397
|
-
fn(evt, {
|
|
398
|
-
direction: direction
|
|
399
|
-
});
|
|
400
|
-
});
|
|
401
|
-
var cleanUpPinchZoomListener = createPinchZoomListener(element, function (evt, data) {
|
|
402
|
-
var distance = data.distance,
|
|
403
|
-
prevDistance = data.prevDistance;
|
|
404
|
-
var direction = distance / prevDistance < 1 ? "out" : "in";
|
|
405
|
-
fn(evt, {
|
|
406
|
-
direction: direction
|
|
407
|
-
});
|
|
408
|
-
});
|
|
409
|
-
return function () {
|
|
410
|
-
cleanUpMouseWheelListener();
|
|
411
|
-
cleanUpPinchZoomListener();
|
|
412
|
-
};
|
|
413
|
-
};
|
|
414
|
-
|
|
415
|
-
exports.createZoomHandler = createZoomHandler;
|
package/Constants.js
DELETED
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.Numeric = exports.EventTypes = void 0;
|
|
7
|
-
var EventTypes = {
|
|
8
|
-
Intersection: "Visualization/Intersection",
|
|
9
|
-
ClickAway: "Visualization/ClickAway",
|
|
10
|
-
ModelLoaded: "Visualization/ModelLoaded",
|
|
11
|
-
MaterialUpdated: "Visualization/MaterialUpdated",
|
|
12
|
-
Error: "Visualization/Error",
|
|
13
|
-
Initialized: "Visualization/Initialized",
|
|
14
|
-
LoadStart: "Visualization/LoadStart",
|
|
15
|
-
LoadFinished: "Visualization/LoadFinished",
|
|
16
|
-
LoadError: "Visualization/LoadError",
|
|
17
|
-
Zoomed: "Visualization/Zoomed"
|
|
18
|
-
};
|
|
19
|
-
exports.EventTypes = EventTypes;
|
|
20
|
-
var Numeric = {
|
|
21
|
-
TwoPI: 2 * Math.PI
|
|
22
|
-
};
|
|
23
|
-
exports.Numeric = Numeric;
|