redhotmagma-visualization 1.28.6 → 1.29.3
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 +129 -0
- package/CommonUtils/Deferred.js +135 -0
- package/CommonUtils/Observable.js +126 -0
- package/CommonUtils/PropertyObserver.js +61 -0
- package/CommonUtils/SyncCurrentFunction.js +59 -0
- package/CommonUtils/SyncObservableEvent.js +19 -0
- package/CommonUtils/pointerEvent.js +415 -0
- package/Constants.js +23 -0
- package/DevApp.js +1049 -0
- package/ExposedModules.js +26 -0
- package/FallbackVisualization.js +26 -0
- package/PrintingEffects/ColorEmbossingEffect.js +58 -0
- package/PrintingEffects/DomingEffect.js +150 -0
- package/PrintingEffects/EmbossingEffect.js +65 -0
- package/PrintingEffects/EmbroideryEffect.js +541 -0
- package/PrintingEffects/EngravingEffect.js +65 -0
- package/PrintingEffects/PrintingEffects.js +117 -0
- package/PrintingEffects/PrintingEffectsUtils.js +53 -0
- package/PrintingEffects/resources/embroidery_multiply.jpg +0 -0
- package/PrintingEffects/resources/embroidery_screen.jpg +0 -0
- package/README.md +11 -4
- package/React/ReactBase.js +111 -0
- package/Three/Controls/OrbitControls.js +745 -0
- package/Three/Exporters/glTFExporter.js +48 -0
- package/Three/Loaders/ColladaLoader.js +2916 -0
- package/Three/Loaders/MTLLoader.js +449 -0
- package/Three/Loaders/OBJLoader.js +548 -0
- package/Three/Three2D.js +1790 -0
- package/Three/Three2DLayers.js +504 -0
- package/Three/Three3D.js +1412 -0
- package/Three/Three3DScene.js +1432 -0
- package/Three/ThreeBase.js +724 -0
- package/Utils/DesignArea/getDesignAreaCanvasSize.js +32 -0
- package/Utils/TextureBuilder/createTextureBuilder.js +334 -0
- package/Utils/TextureBuilder/textureBuilderFunctions.js +87 -0
- package/Utils/alignToElement.js +58 -0
- package/Utils/createAlphaMapFromAlphaChannel.js +50 -0
- package/Utils/createCache.js +46 -0
- package/Utils/createCanvas.js +29 -0
- package/Utils/createImageRepository.js +124 -0
- package/Utils/disposeMaterial.js +41 -0
- package/Utils/getImageSize.js +15 -0
- package/Utils/imagePreloader.js +76 -0
- package/Utils/initTextureCanvas.js +49 -0
- package/Utils/isMobileDevice.js +19 -0
- package/Utils/optimizeTextureImage.js +73 -0
- package/Utils/rememberCameraViewOffset.js +21 -0
- package/Utils/removeObject.js +22 -0
- package/Utils/restrictCameraMovement.js +45 -0
- package/Utils/setOrthographicCameraSize.js +16 -0
- package/Utils/updateFitSizeToElement.js +39 -0
- package/VisualizationContainer.js +279 -0
- package/VisualizationInterface.js +298 -0
- package/VisualizationProvider.js +38 -0
- package/__mocks__/exportedSample.svg +45 -0
- package/index.js +16 -0
- package/package.json +10 -70
- package/scripts/cpPublic.js +9 -12
- package/scripts/cpPublicLocal.js +30 -0
- package/src/CommonUtils/Observable.js +1 -0
- package/src/CommonUtils/pointerEvent.js +2 -1
- package/src/DevApp.js +2 -1
- package/src/FallbackVisualization.js +1 -5
- package/src/PrintingEffects/DomingEffect.js +1 -0
- package/src/PrintingEffects/EmbroideryEffect.js +3 -2
- package/src/React/ReactBase.js +1 -1
- package/src/Three/Controls/OrbitControls.js +2 -0
- package/src/Three/Loaders/ColladaLoader.js +111 -294
- package/src/Three/Loaders/MTLLoader.js +2 -0
- package/src/Three/Loaders/OBJLoader.js +2 -0
- package/src/Three/Three2D.js +18 -11
- package/src/Three/Three3D.js +9 -1
- package/src/Three/ThreeBase.js +14 -2
- package/src/Utils/DesignArea/getDesignAreaCanvasSize.js +1 -0
- package/src/Utils/TextureBuilder/createTextureBuilder.js +2 -0
- package/src/Utils/imagePreloader.js +1 -0
- package/src/Utils/initTextureCanvas.js +3 -0
- package/src/Utils/isMobileDevice.js +2 -0
- package/src/Utils/optimizeTextureImage.js +1 -0
- package/src/VisualizationContainer.js +3 -1
- package/src/VisualizationInterface.js +10 -1
- package/visualizationAdapterCreator.js +76 -0
- package/babel.config.js +0 -41
- package/scripts/cpPath.js +0 -151
- package/scripts/moveLibToPackageRoot.js +0 -44
- package/scripts/utils/fileSystem.js +0 -69
- package/scripts/utils/process.js +0 -19
- package/tsconfig.json +0 -22
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.withCurrentTarget = exports.withAlignTarget = exports.AlignTargetProvider = void 0;
|
|
9
|
+
|
|
10
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
11
|
+
|
|
12
|
+
var _last = _interopRequireDefault(require("lodash/last"));
|
|
13
|
+
|
|
14
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
|
15
|
+
|
|
16
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
17
|
+
|
|
18
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
19
|
+
|
|
20
|
+
function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
|
21
|
+
|
|
22
|
+
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; }
|
|
23
|
+
|
|
24
|
+
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; }
|
|
25
|
+
|
|
26
|
+
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; }
|
|
27
|
+
|
|
28
|
+
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
29
|
+
|
|
30
|
+
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
31
|
+
|
|
32
|
+
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
33
|
+
|
|
34
|
+
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
|
|
35
|
+
|
|
36
|
+
function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
|
|
37
|
+
|
|
38
|
+
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
39
|
+
|
|
40
|
+
var AlignTargetContext = /*#__PURE__*/(0, _react.createContext)({});
|
|
41
|
+
|
|
42
|
+
var AlignTargetProvider = function AlignTargetProvider(_ref) {
|
|
43
|
+
var children = _ref.children;
|
|
44
|
+
|
|
45
|
+
var _useState = (0, _react.useState)({
|
|
46
|
+
targets: [],
|
|
47
|
+
currentTarget: null,
|
|
48
|
+
alignTarget: {
|
|
49
|
+
/**
|
|
50
|
+
* Add the element to the top of the target stack
|
|
51
|
+
* @param {Element} element
|
|
52
|
+
*/
|
|
53
|
+
add: function add(element) {
|
|
54
|
+
setState(function (state) {
|
|
55
|
+
return _objectSpread(_objectSpread({}, state), {}, {
|
|
56
|
+
targets: state.targets.concat([element]),
|
|
57
|
+
currentTarget: element
|
|
58
|
+
});
|
|
59
|
+
});
|
|
60
|
+
},
|
|
61
|
+
|
|
62
|
+
/**
|
|
63
|
+
* Remove the element from the target stack
|
|
64
|
+
* @param {Element} element
|
|
65
|
+
*/
|
|
66
|
+
remove: function remove(element) {
|
|
67
|
+
setState(function (state) {
|
|
68
|
+
var targets = state.targets.filter(function (item) {
|
|
69
|
+
return item !== element;
|
|
70
|
+
});
|
|
71
|
+
var currentTarget = (0, _last["default"])(targets);
|
|
72
|
+
return _objectSpread(_objectSpread({}, state), {}, {
|
|
73
|
+
targets: targets,
|
|
74
|
+
currentTarget: currentTarget
|
|
75
|
+
});
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
}),
|
|
80
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
81
|
+
state = _useState2[0],
|
|
82
|
+
setState = _useState2[1];
|
|
83
|
+
|
|
84
|
+
return /*#__PURE__*/_react["default"].createElement(AlignTargetContext.Provider, {
|
|
85
|
+
value: state
|
|
86
|
+
}, children);
|
|
87
|
+
};
|
|
88
|
+
/**
|
|
89
|
+
* HOC to provide the add and remove functions through the alignTarget prop
|
|
90
|
+
* so the wrapped component can add or remove its element ref (eg. after mount and before unmount)
|
|
91
|
+
* @param Component
|
|
92
|
+
* @return {function(*): *}
|
|
93
|
+
*/
|
|
94
|
+
|
|
95
|
+
|
|
96
|
+
exports.AlignTargetProvider = AlignTargetProvider;
|
|
97
|
+
|
|
98
|
+
var withAlignTarget = function withAlignTarget(Component) {
|
|
99
|
+
return function (props) {
|
|
100
|
+
var _useContext = (0, _react.useContext)(AlignTargetContext),
|
|
101
|
+
alignTarget = _useContext.alignTarget;
|
|
102
|
+
|
|
103
|
+
return /*#__PURE__*/_react["default"].createElement(Component, _extends({}, props, {
|
|
104
|
+
alignTarget: alignTarget
|
|
105
|
+
}));
|
|
106
|
+
};
|
|
107
|
+
};
|
|
108
|
+
/**
|
|
109
|
+
* HOC to provide the current target element through the alignTargetElement prop
|
|
110
|
+
* so the wrapped component can react when it changes
|
|
111
|
+
* @param Component
|
|
112
|
+
* @return {function(*): *}
|
|
113
|
+
*/
|
|
114
|
+
|
|
115
|
+
|
|
116
|
+
exports.withAlignTarget = withAlignTarget;
|
|
117
|
+
|
|
118
|
+
var withCurrentTarget = function withCurrentTarget(Component) {
|
|
119
|
+
return function (props) {
|
|
120
|
+
var _useContext2 = (0, _react.useContext)(AlignTargetContext),
|
|
121
|
+
currentTarget = _useContext2.currentTarget;
|
|
122
|
+
|
|
123
|
+
return /*#__PURE__*/_react["default"].createElement(Component, _extends({}, props, {
|
|
124
|
+
alignTargetElement: currentTarget
|
|
125
|
+
}));
|
|
126
|
+
};
|
|
127
|
+
};
|
|
128
|
+
|
|
129
|
+
exports.withCurrentTarget = withCurrentTarget;
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.DeferredGroup = exports["default"] = exports.Deferred = void 0;
|
|
7
|
+
|
|
8
|
+
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
9
|
+
|
|
10
|
+
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); } }
|
|
11
|
+
|
|
12
|
+
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
|
|
13
|
+
|
|
14
|
+
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; }
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* @private
|
|
18
|
+
* @type {{}}
|
|
19
|
+
*/
|
|
20
|
+
var promises = {};
|
|
21
|
+
|
|
22
|
+
var Deferred = /*#__PURE__*/function () {
|
|
23
|
+
function Deferred() {
|
|
24
|
+
var _this = this;
|
|
25
|
+
|
|
26
|
+
var name = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
|
|
27
|
+
|
|
28
|
+
_classCallCheck(this, Deferred);
|
|
29
|
+
|
|
30
|
+
_defineProperty(this, "resolve", function () {
|
|
31
|
+
_this.remove();
|
|
32
|
+
|
|
33
|
+
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
34
|
+
args[_key] = arguments[_key];
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
_this._resolve.apply(0, args);
|
|
38
|
+
});
|
|
39
|
+
|
|
40
|
+
_defineProperty(this, "reject", function () {
|
|
41
|
+
_this.remove();
|
|
42
|
+
|
|
43
|
+
for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
|
|
44
|
+
args[_key2] = arguments[_key2];
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
_this._reject.apply(0, args);
|
|
48
|
+
});
|
|
49
|
+
|
|
50
|
+
if (promises[name]) {
|
|
51
|
+
throw new Error("Instance already exists with the name: " + name);
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
this.name = name;
|
|
55
|
+
this.promise = new Promise(function (resolve, reject) {
|
|
56
|
+
_this._resolve = resolve;
|
|
57
|
+
_this._reject = reject;
|
|
58
|
+
});
|
|
59
|
+
|
|
60
|
+
if (name) {
|
|
61
|
+
promises[name] = this;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
_createClass(Deferred, [{
|
|
66
|
+
key: "remove",
|
|
67
|
+
value: function remove() {
|
|
68
|
+
delete promises[this.name];
|
|
69
|
+
}
|
|
70
|
+
}, {
|
|
71
|
+
key: "then",
|
|
72
|
+
value: function then(fn) {
|
|
73
|
+
this.promise.then(fn);
|
|
74
|
+
}
|
|
75
|
+
}], [{
|
|
76
|
+
key: "get",
|
|
77
|
+
value: function get(name) {
|
|
78
|
+
if (!promises[name]) {
|
|
79
|
+
throw new Error("Instance does not exist with the name: " + name);
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
return promises[name];
|
|
83
|
+
}
|
|
84
|
+
}]);
|
|
85
|
+
|
|
86
|
+
return Deferred;
|
|
87
|
+
}();
|
|
88
|
+
|
|
89
|
+
exports.Deferred = Deferred;
|
|
90
|
+
var _default = Deferred;
|
|
91
|
+
exports["default"] = _default;
|
|
92
|
+
|
|
93
|
+
var DeferredGroup = /*#__PURE__*/function () {
|
|
94
|
+
function DeferredGroup() {
|
|
95
|
+
_classCallCheck(this, DeferredGroup);
|
|
96
|
+
|
|
97
|
+
_defineProperty(this, "deferredList", []);
|
|
98
|
+
|
|
99
|
+
if (arguments.length > 0) {
|
|
100
|
+
this.deferredList = this.deferredList.concat(arguments);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
_createClass(DeferredGroup, [{
|
|
105
|
+
key: "create",
|
|
106
|
+
value: function create() {
|
|
107
|
+
var name = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
|
|
108
|
+
var deferred = new Deferred(name);
|
|
109
|
+
this.add(deferred);
|
|
110
|
+
return deferred;
|
|
111
|
+
}
|
|
112
|
+
}, {
|
|
113
|
+
key: "createResolver",
|
|
114
|
+
value: function createResolver() {
|
|
115
|
+
var name = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
|
|
116
|
+
return this.create(name).resolve;
|
|
117
|
+
}
|
|
118
|
+
}, {
|
|
119
|
+
key: "add",
|
|
120
|
+
value: function add(deferred) {
|
|
121
|
+
this.deferredList.push(deferred);
|
|
122
|
+
}
|
|
123
|
+
}, {
|
|
124
|
+
key: "then",
|
|
125
|
+
value: function then(fn) {
|
|
126
|
+
return Promise.all(this.deferredList.map(function (d) {
|
|
127
|
+
return d.promise;
|
|
128
|
+
})).then(fn);
|
|
129
|
+
}
|
|
130
|
+
}]);
|
|
131
|
+
|
|
132
|
+
return DeferredGroup;
|
|
133
|
+
}();
|
|
134
|
+
|
|
135
|
+
exports.DeferredGroup = DeferredGroup;
|
|
@@ -0,0 +1,126 @@
|
|
|
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;
|
|
@@ -0,0 +1,61 @@
|
|
|
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;
|
|
@@ -0,0 +1,59 @@
|
|
|
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
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
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;
|