hart-estate-widget 0.0.66 → 0.0.69

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.
Files changed (45) hide show
  1. package/README.md +3 -0
  2. package/build/assets/css/index.css +2 -0
  3. package/build/assets/img/floor-dark.jpg +0 -0
  4. package/build/assets/img/floor-white.jpg +0 -0
  5. package/build/assets/img/grass.jpg +0 -0
  6. package/build/bundle.js +2 -0
  7. package/build/components/Application.js +2 -135
  8. package/build/components/Buttons/FullScreenButton.js +2 -50
  9. package/build/components/Buttons/TabButton.js +2 -24
  10. package/build/components/Instructions.js +2 -54
  11. package/build/components/Loader.js +2 -22
  12. package/build/components/ModelTab.js +2 -213
  13. package/build/components/PanoramaTab.js +2 -620
  14. package/build/components/RotationTab/DefaultView.js +2 -124
  15. package/build/components/RotationTab/ThreesixtyView.js +2 -45
  16. package/build/components/RotationTab/index.js +2 -194
  17. package/build/components/Widget.js +2 -110
  18. package/build/config/defaultConfig.js +2 -32
  19. package/build/enums/deviceOrientationStatuses.js +2 -11
  20. package/build/enums/deviceWidth.js +2 -21
  21. package/build/enums/imageExtentions.js +2 -16
  22. package/build/enums/rotationModes.js +2 -11
  23. package/build/index.css +1 -1
  24. package/build/index.js +2 -75
  25. package/build/locale/index.js +2 -71
  26. package/build/store/apiStore.js +2 -231
  27. package/build/store/deviceStore.js +2 -60
  28. package/build/store/fullScreenStore.js +2 -159
  29. package/build/store/houseStore.js +2 -952
  30. package/build/store/index.js +2 -124
  31. package/build/store/modelStore.js +2 -338
  32. package/build/threesixty/events.js +2 -220
  33. package/build/threesixty/index.js +2 -264
  34. package/build/utils/csg/csg-lib.js +2 -472
  35. package/build/utils/csg/csg-worker.js +2 -84
  36. package/build/utils/csg/three-csg.js +2 -277
  37. package/build/utils/helpers.js +2 -12
  38. package/build/utils/modelHelpers.js +2 -161
  39. package/build/utils/panoramaHelpers.js +2 -117
  40. package/package.json +17 -5
  41. package/build/assets/css/app.css +0 -1
  42. package/build/assets/css/app.css.map +0 -1
  43. package/build/assets/img/floor-dark.png +0 -0
  44. package/build/assets/img/floor-white.png +0 -0
  45. package/build/assets/img/grass.png +0 -0
@@ -1,220 +1,2 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = void 0;
7
-
8
- var _react = _interopRequireDefault(require("react"));
9
-
10
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
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); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
17
-
18
- function _classPrivateFieldInitSpec(obj, privateMap, value) { _checkPrivateRedeclaration(obj, privateMap); privateMap.set(obj, value); }
19
-
20
- function _checkPrivateRedeclaration(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError("Cannot initialize the same private elements twice on an object"); } }
21
-
22
- function _classPrivateFieldGet(receiver, privateMap) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, "get"); return _classApplyDescriptorGet(receiver, descriptor); }
23
-
24
- function _classApplyDescriptorGet(receiver, descriptor) { if (descriptor.get) { return descriptor.get.call(receiver); } return descriptor.value; }
25
-
26
- function _classPrivateFieldSet(receiver, privateMap, value) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, "set"); _classApplyDescriptorSet(receiver, descriptor, value); return value; }
27
-
28
- function _classExtractFieldDescriptor(receiver, privateMap, action) { if (!privateMap.has(receiver)) { throw new TypeError("attempted to " + action + " private field on non-instance"); } return privateMap.get(receiver); }
29
-
30
- function _classApplyDescriptorSet(receiver, descriptor, value) { if (descriptor.set) { descriptor.set.call(receiver, value); } else { if (!descriptor.writable) { throw new TypeError("attempted to set read only private field"); } descriptor.value = value; } }
31
-
32
- var _dragOrigin = /*#__PURE__*/new WeakMap();
33
-
34
- var _options = /*#__PURE__*/new WeakMap();
35
-
36
- var _eventHandlers = /*#__PURE__*/new WeakMap();
37
-
38
- var Events = /*#__PURE__*/function () {
39
- function Events(threesixty, options) {
40
- var _this = this;
41
-
42
- _classCallCheck(this, Events);
43
-
44
- _classPrivateFieldInitSpec(this, _dragOrigin, {
45
- writable: true,
46
- value: null
47
- });
48
-
49
- _classPrivateFieldInitSpec(this, _options, {
50
- writable: true,
51
- value: null
52
- });
53
-
54
- _classPrivateFieldInitSpec(this, _eventHandlers, {
55
- writable: true,
56
- value: null
57
- });
58
-
59
- _classPrivateFieldSet(this, _options, options);
60
-
61
- _classPrivateFieldSet(this, _eventHandlers, {
62
- container: {
63
- mousedown: function mousedown(e) {
64
- if (e.button !== 0) return;
65
-
66
- _classPrivateFieldSet(_this, _dragOrigin, e.pageX);
67
- },
68
- touchstart: function touchstart(e) {
69
- return _classPrivateFieldSet(_this, _dragOrigin, e.touches[0].clientX);
70
- },
71
- touchend: function touchend() {
72
- return _classPrivateFieldSet(_this, _dragOrigin, null);
73
- }
74
- },
75
- prev: {
76
- mousedown: function mousedown(e) {
77
- e.preventDefault();
78
- threesixty.play(true);
79
- },
80
- mouseup: function mouseup(e) {
81
- e.preventDefault();
82
- threesixty.stop();
83
- },
84
- touchstart: function touchstart(e) {
85
- e.preventDefault();
86
- threesixty.prev();
87
- }
88
- },
89
- next: {
90
- mousedown: function mousedown(e) {
91
- e.preventDefault();
92
- threesixty.play();
93
- },
94
- mouseup: function mouseup(e) {
95
- e.preventDefault();
96
- threesixty.stop();
97
- },
98
- touchstart: function touchstart(e) {
99
- e.preventDefault();
100
- threesixty.next();
101
- }
102
- },
103
- global: {
104
- mouseup: function mouseup() {
105
- return _classPrivateFieldSet(_this, _dragOrigin, null);
106
- },
107
- mousemove: function mousemove(e) {
108
- if (_classPrivateFieldGet(_this, _dragOrigin) && Math.abs(_classPrivateFieldGet(_this, _dragOrigin) - e.pageX) > _classPrivateFieldGet(_this, _options).dragTolerance) {
109
- threesixty.stop();
110
- _classPrivateFieldGet(_this, _dragOrigin) > e.pageX ? threesixty.prev() : threesixty.next();
111
-
112
- _classPrivateFieldSet(_this, _dragOrigin, e.pageX);
113
- }
114
- },
115
- touchmove: function touchmove(e) {
116
- if (e.touches.length === 2) return;
117
- if (e.touches.length === 1) e.stopPropagation();
118
-
119
- if (_classPrivateFieldGet(_this, _dragOrigin) && Math.abs(_classPrivateFieldGet(_this, _dragOrigin) - e.touches[0].clientX) > _classPrivateFieldGet(_this, _options).swipeTolerance) {
120
- threesixty.stop();
121
- _classPrivateFieldGet(_this, _dragOrigin) > e.touches[0].clientX ? threesixty.prev() : threesixty.next();
122
-
123
- _classPrivateFieldSet(_this, _dragOrigin, e.touches[0].clientX);
124
- }
125
- },
126
- keydown: function keydown(e) {
127
- if ([37, 39].includes(e.keyCode)) {
128
- threesixty.play(37 === e.keyCode);
129
- }
130
- },
131
- keyup: function keyup(e) {
132
- if ([37, 39].includes(e.keyCode)) {
133
- threesixty.stop();
134
- }
135
- }
136
- }
137
- });
138
-
139
- this._initEvents();
140
- }
141
-
142
- _createClass(Events, [{
143
- key: "destroy",
144
- value: function destroy() {
145
- _classPrivateFieldGet(this, _options).swipeTarget.removeEventListener('mousedown', _classPrivateFieldGet(this, _eventHandlers).container.mousedown);
146
-
147
- _classPrivateFieldGet(this, _options).swipeTarget.removeEventListener('touchstart', _classPrivateFieldGet(this, _eventHandlers).container.touchstart);
148
-
149
- _classPrivateFieldGet(this, _options).swipeTarget.removeEventListener('touchend', _classPrivateFieldGet(this, _eventHandlers).container.touchend);
150
-
151
- global.removeEventListener('mouseup', _classPrivateFieldGet(this, _eventHandlers).global.mouseup);
152
- global.removeEventListener('mousemove', _classPrivateFieldGet(this, _eventHandlers).global.mousemove);
153
-
154
- _classPrivateFieldGet(this, _options).parentElement.removeEventListener('touchmove', _classPrivateFieldGet(this, _eventHandlers).global.touchmove);
155
-
156
- global.removeEventListener('keydown', _classPrivateFieldGet(this, _eventHandlers).global.keydown);
157
- global.removeEventListener('keyup', _classPrivateFieldGet(this, _eventHandlers).global.keyup);
158
-
159
- if (_classPrivateFieldGet(this, _options).prev) {
160
- _classPrivateFieldGet(this, _options).prev.removeEventListener('mousedown', _classPrivateFieldGet(this, _eventHandlers).prev.mousedown);
161
-
162
- _classPrivateFieldGet(this, _options).prev.removeEventListener('mouseup', _classPrivateFieldGet(this, _eventHandlers).prev.mouseup);
163
-
164
- _classPrivateFieldGet(this, _options).prev.removeEventListener('touchstart', _classPrivateFieldGet(this, _eventHandlers).prev.touchstart);
165
- }
166
-
167
- if (_classPrivateFieldGet(this, _options).next) {
168
- _classPrivateFieldGet(this, _options).next.removeEventListener('mousedown', _classPrivateFieldGet(this, _eventHandlers).next.mousedown);
169
-
170
- _classPrivateFieldGet(this, _options).next.removeEventListener('mouseup', _classPrivateFieldGet(this, _eventHandlers).next.mouseup);
171
-
172
- _classPrivateFieldGet(this, _options).next.removeEventListener('touchstart', _classPrivateFieldGet(this, _eventHandlers).next.touchstart);
173
- }
174
- }
175
- }, {
176
- key: "_initEvents",
177
- value: function _initEvents() {
178
- if (_classPrivateFieldGet(this, _options).draggable) {
179
- _classPrivateFieldGet(this, _options).swipeTarget.addEventListener('mousedown', _classPrivateFieldGet(this, _eventHandlers).container.mousedown);
180
-
181
- global.addEventListener('mouseup', _classPrivateFieldGet(this, _eventHandlers).global.mouseup);
182
- global.addEventListener('mousemove', _classPrivateFieldGet(this, _eventHandlers).global.mousemove);
183
- }
184
-
185
- if (_classPrivateFieldGet(this, _options).swipeable) {
186
- _classPrivateFieldGet(this, _options).swipeTarget.addEventListener('touchstart', _classPrivateFieldGet(this, _eventHandlers).container.touchstart);
187
-
188
- _classPrivateFieldGet(this, _options).swipeTarget.addEventListener('touchend', _classPrivateFieldGet(this, _eventHandlers).container.touchend);
189
-
190
- _classPrivateFieldGet(this, _options).parentElement.addEventListener('touchmove', _classPrivateFieldGet(this, _eventHandlers).global.touchmove);
191
- }
192
-
193
- if (_classPrivateFieldGet(this, _options).keys) {
194
- global.addEventListener('keydown', _classPrivateFieldGet(this, _eventHandlers).global.keydown);
195
- global.addEventListener('keyup', _classPrivateFieldGet(this, _eventHandlers).global.keyup);
196
- }
197
-
198
- if (_classPrivateFieldGet(this, _options).prev) {
199
- _classPrivateFieldGet(this, _options).prev.addEventListener('mousedown', _classPrivateFieldGet(this, _eventHandlers).prev.mousedown);
200
-
201
- _classPrivateFieldGet(this, _options).prev.addEventListener('mouseup', _classPrivateFieldGet(this, _eventHandlers).prev.mouseup);
202
-
203
- _classPrivateFieldGet(this, _options).prev.addEventListener('touchstart', _classPrivateFieldGet(this, _eventHandlers).prev.touchstart);
204
- }
205
-
206
- if (_classPrivateFieldGet(this, _options).next) {
207
- _classPrivateFieldGet(this, _options).next.addEventListener('mousedown', _classPrivateFieldGet(this, _eventHandlers).next.mousedown);
208
-
209
- _classPrivateFieldGet(this, _options).next.addEventListener('mouseup', _classPrivateFieldGet(this, _eventHandlers).next.mouseup);
210
-
211
- _classPrivateFieldGet(this, _options).next.addEventListener('touchstart', _classPrivateFieldGet(this, _eventHandlers).next.touchstart);
212
- }
213
- }
214
- }]);
215
-
216
- return Events;
217
- }();
218
-
219
- var _default = Events;
220
- exports.default = _default;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _react=_interopRequireDefault(require("react"));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function _classCallCheck(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function _defineProperties(e,t){for(var s=0;s<t.length;s++){var i=t[s];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}function _createClass(e,t,s){return t&&_defineProperties(e.prototype,t),s&&_defineProperties(e,s),Object.defineProperty(e,"prototype",{writable:!1}),e}function _classPrivateFieldInitSpec(e,t,s){_checkPrivateRedeclaration(e,t),t.set(e,s)}function _checkPrivateRedeclaration(e,t){if(t.has(e))throw new TypeError("Cannot initialize the same private elements twice on an object")}function _classPrivateFieldGet(e,t){return _classApplyDescriptorGet(e,_classExtractFieldDescriptor(e,t,"get"))}function _classApplyDescriptorGet(e,t){return t.get?t.get.call(e):t.value}function _classPrivateFieldSet(e,t,s){return _classApplyDescriptorSet(e,_classExtractFieldDescriptor(e,t,"set"),s),s}function _classExtractFieldDescriptor(e,t,s){if(t.has(e))return t.get(e);throw new TypeError("attempted to "+s+" private field on non-instance")}function _classApplyDescriptorSet(e,t,s){if(t.set)t.set.call(e,s);else{if(!t.writable)throw new TypeError("attempted to set read only private field");t.value=s}}var _dragOrigin=new WeakMap,_options=new WeakMap,_eventHandlers=new WeakMap,Events=function(){function i(t,e){var s=this;_classCallCheck(this,i),_classPrivateFieldInitSpec(this,_dragOrigin,{writable:!0,value:null}),_classPrivateFieldInitSpec(this,_options,{writable:!0,value:null}),_classPrivateFieldInitSpec(this,_eventHandlers,{writable:!0,value:null}),_classPrivateFieldSet(this,_options,e),_classPrivateFieldSet(this,_eventHandlers,{container:{mousedown:function(e){0===e.button&&_classPrivateFieldSet(s,_dragOrigin,e.pageX)},touchstart:function(e){return _classPrivateFieldSet(s,_dragOrigin,e.touches[0].clientX)},touchend:function(){return _classPrivateFieldSet(s,_dragOrigin,null)}},prev:{mousedown:function(e){e.preventDefault(),t.play(!0)},mouseup:function(e){e.preventDefault(),t.stop()},touchstart:function(e){e.preventDefault(),t.prev()}},next:{mousedown:function(e){e.preventDefault(),t.play()},mouseup:function(e){e.preventDefault(),t.stop()},touchstart:function(e){e.preventDefault(),t.next()}},global:{mouseup:function(){return _classPrivateFieldSet(s,_dragOrigin,null)},mousemove:function(e){_classPrivateFieldGet(s,_dragOrigin)&&Math.abs(_classPrivateFieldGet(s,_dragOrigin)-e.pageX)>_classPrivateFieldGet(s,_options).dragTolerance&&(t.stop(),_classPrivateFieldGet(s,_dragOrigin)>e.pageX?t.prev():t.next(),_classPrivateFieldSet(s,_dragOrigin,e.pageX))},touchmove:function(e){2!==e.touches.length&&(1===e.touches.length&&e.stopPropagation(),_classPrivateFieldGet(s,_dragOrigin)&&Math.abs(_classPrivateFieldGet(s,_dragOrigin)-e.touches[0].clientX)>_classPrivateFieldGet(s,_options).swipeTolerance&&(t.stop(),_classPrivateFieldGet(s,_dragOrigin)>e.touches[0].clientX?t.prev():t.next(),_classPrivateFieldSet(s,_dragOrigin,e.touches[0].clientX)))},keydown:function(e){[37,39].includes(e.keyCode)&&t.play(37===e.keyCode)},keyup:function(e){[37,39].includes(e.keyCode)&&t.stop()}}}),this._initEvents()}return _createClass(i,[{key:"destroy",value:function(){_classPrivateFieldGet(this,_options).swipeTarget.removeEventListener("mousedown",_classPrivateFieldGet(this,_eventHandlers).container.mousedown),_classPrivateFieldGet(this,_options).swipeTarget.removeEventListener("touchstart",_classPrivateFieldGet(this,_eventHandlers).container.touchstart),_classPrivateFieldGet(this,_options).swipeTarget.removeEventListener("touchend",_classPrivateFieldGet(this,_eventHandlers).container.touchend),global.removeEventListener("mouseup",_classPrivateFieldGet(this,_eventHandlers).global.mouseup),global.removeEventListener("mousemove",_classPrivateFieldGet(this,_eventHandlers).global.mousemove),_classPrivateFieldGet(this,_options).parentElement.removeEventListener("touchmove",_classPrivateFieldGet(this,_eventHandlers).global.touchmove),global.removeEventListener("keydown",_classPrivateFieldGet(this,_eventHandlers).global.keydown),global.removeEventListener("keyup",_classPrivateFieldGet(this,_eventHandlers).global.keyup),_classPrivateFieldGet(this,_options).prev&&(_classPrivateFieldGet(this,_options).prev.removeEventListener("mousedown",_classPrivateFieldGet(this,_eventHandlers).prev.mousedown),_classPrivateFieldGet(this,_options).prev.removeEventListener("mouseup",_classPrivateFieldGet(this,_eventHandlers).prev.mouseup),_classPrivateFieldGet(this,_options).prev.removeEventListener("touchstart",_classPrivateFieldGet(this,_eventHandlers).prev.touchstart)),_classPrivateFieldGet(this,_options).next&&(_classPrivateFieldGet(this,_options).next.removeEventListener("mousedown",_classPrivateFieldGet(this,_eventHandlers).next.mousedown),_classPrivateFieldGet(this,_options).next.removeEventListener("mouseup",_classPrivateFieldGet(this,_eventHandlers).next.mouseup),_classPrivateFieldGet(this,_options).next.removeEventListener("touchstart",_classPrivateFieldGet(this,_eventHandlers).next.touchstart))}},{key:"_initEvents",value:function(){_classPrivateFieldGet(this,_options).draggable&&(_classPrivateFieldGet(this,_options).swipeTarget.addEventListener("mousedown",_classPrivateFieldGet(this,_eventHandlers).container.mousedown),global.addEventListener("mouseup",_classPrivateFieldGet(this,_eventHandlers).global.mouseup),global.addEventListener("mousemove",_classPrivateFieldGet(this,_eventHandlers).global.mousemove)),_classPrivateFieldGet(this,_options).swipeable&&(_classPrivateFieldGet(this,_options).swipeTarget.addEventListener("touchstart",_classPrivateFieldGet(this,_eventHandlers).container.touchstart),_classPrivateFieldGet(this,_options).swipeTarget.addEventListener("touchend",_classPrivateFieldGet(this,_eventHandlers).container.touchend),_classPrivateFieldGet(this,_options).parentElement.addEventListener("touchmove",_classPrivateFieldGet(this,_eventHandlers).global.touchmove)),_classPrivateFieldGet(this,_options).keys&&(global.addEventListener("keydown",_classPrivateFieldGet(this,_eventHandlers).global.keydown),global.addEventListener("keyup",_classPrivateFieldGet(this,_eventHandlers).global.keyup)),_classPrivateFieldGet(this,_options).prev&&(_classPrivateFieldGet(this,_options).prev.addEventListener("mousedown",_classPrivateFieldGet(this,_eventHandlers).prev.mousedown),_classPrivateFieldGet(this,_options).prev.addEventListener("mouseup",_classPrivateFieldGet(this,_eventHandlers).prev.mouseup),_classPrivateFieldGet(this,_options).prev.addEventListener("touchstart",_classPrivateFieldGet(this,_eventHandlers).prev.touchstart)),_classPrivateFieldGet(this,_options).next&&(_classPrivateFieldGet(this,_options).next.addEventListener("mousedown",_classPrivateFieldGet(this,_eventHandlers).next.mousedown),_classPrivateFieldGet(this,_options).next.addEventListener("mouseup",_classPrivateFieldGet(this,_eventHandlers).next.mouseup),_classPrivateFieldGet(this,_options).next.addEventListener("touchstart",_classPrivateFieldGet(this,_eventHandlers).next.touchstart))}}]),i}(),_default=Events;exports.default=_default;
2
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRocmVlc2l4dHkvZXZlbnRzLmpzIl0sIm5hbWVzIjpbIl9yZWFjdCIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiRXZlbnRzIiwidGhyZWVzaXh0eSIsIm9wdGlvbnMiLCJfdGhpcyIsInRoaXMiLCJfY2xhc3NDYWxsQ2hlY2siLCJfY2xhc3NQcml2YXRlRmllbGRJbml0U3BlYyIsIl9kcmFnT3JpZ2luIiwid3JpdGFibGUiLCJ2YWx1ZSIsIl9vcHRpb25zIiwiX2V2ZW50SGFuZGxlcnMiLCJfY2xhc3NQcml2YXRlRmllbGRTZXQiLCJjb250YWluZXIiLCJtb3VzZWRvd24iLCJlIiwiYnV0dG9uIiwicGFnZVgiLCJ0b3VjaHN0YXJ0IiwidG91Y2hlcyIsImNsaWVudFgiLCJ0b3VjaGVuZCIsInByZXYiLCJwcmV2ZW50RGVmYXVsdCIsInBsYXkiLCJtb3VzZXVwIiwic3RvcCIsIm5leHQiLCJnbG9iYWwiLCJtb3VzZW1vdmUiLCJfY2xhc3NQcml2YXRlRmllbGRHZXQiLCJNYXRoIiwiYWJzIiwiZHJhZ1RvbGVyYW5jZSIsInRvdWNobW92ZSIsImxlbmd0aCIsInN0b3BQcm9wYWdhdGlvbiIsInN3aXBlVG9sZXJhbmNlIiwia2V5ZG93biIsImluY2x1ZGVzIiwia2V5Q29kZSIsImtleXVwIiwic3dpcGVUYXJnZXQiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwicGFyZW50RWxlbWVudCIsImRyYWdnYWJsZSIsImFkZEV2ZW50TGlzdGVuZXIiLCJzd2lwZWFibGUiLCJrZXlzIiwiX2luaXRFdmVudHMiXSwibWFwcGluZ3MiOiIyRkFBQSxJQUFBQSxPQUFBQyx1QkFBQUMsUUFBQSxVLDg0Q0FFTUMsTyxXQU1KLFNBQUFBLEVBQVlDLEVBQVlDLEdBQVMsSUFBQUMsRUFBQUMsS0FBQUMsZ0JBQUFELEtBQUFKLEdBQUFNLDJCQUFBRixLQUFBRyxZQUFBLENBQUFDLFVBQUEsRUFBQUMsTUFMbkIsT0FLbUJILDJCQUFBRixLQUFBTSxTQUFBLENBQUFG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b3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuXG5jbGFzcyBFdmVudHMge1xuICAjZHJhZ09yaWdpbiA9IG51bGw7XG4gICNvcHRpb25zID0gbnVsbDtcblxuICAjZXZlbnRIYW5kbGVycyA9IG51bGw7XG5cbiAgY29uc3RydWN0b3IodGhyZWVzaXh0eSwgb3B0aW9ucykge1xuICAgIHRoaXMuI29wdGlvbnMgPSBvcHRpb25zO1xuXG4gICAgdGhpcy4jZXZlbnRIYW5kbGVycyA9IHtcbiAgICAgIGNvbnRhaW5lcjoge1xuICAgICAgICBtb3VzZWRvd246IChlKSA9PiB7XG4gICAgICAgICAgaWYgKGUuYnV0dG9uICE9PSAwKSByZXR1cm47XG4gICAgICAgICAgdGhpcy4jZHJhZ09yaWdpbiA9IGUucGFnZVg7XG4gICAgICAgIH0sXG4gICAgICAgIHRvdWNoc3RhcnQ6IChlKSA9PiB0aGlzLiNkcmFnT3JpZ2luID0gZS50b3VjaGVzWzBdLmNsaWVudFgsXG4gICAgICAgIHRvdWNoZW5kOiAoKSA9PiB0aGlzLiNkcmFnT3JpZ2luID0gbnVsbCxcbiAgICAgIH0sXG4gICAgICBwcmV2OiB7XG4gICAgICAgIG1vdXNlZG93bjogKGUpID0+IHtcbiAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgdGhyZWVzaXh0eS5wbGF5KHRydWUpO1xuICAgICAgICB9LFxuICAgICAgICBtb3VzZXVwOiAoZSkgPT4ge1xuICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICB0aHJlZXNpeHR5LnN0b3AoKTtcbiAgICAgICAgfSxcbiAgICAgICAgdG91Y2hzdGFydDogKGUpID0+IHtcbiAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgdGhyZWVzaXh0eS5wcmV2KCk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBuZXh0OiB7XG4gICAgICAgIG1vdXNlZG93bjogKGUpID0+IHtcbiAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgdGhyZWVzaXh0eS5wbGF5KCk7XG4gICAgICAgIH0sXG4gICAgICAgIG1vdXNldXA6IChlKSA9PiB7XG4gICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIHRocmVlc2l4dHkuc3RvcCgpO1xuICAgICAgICB9LFxuICAgICAgICB0b3VjaHN0YXJ0OiAoZSkgPT4ge1xuICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICB0aHJlZXNpeHR5Lm5leHQoKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIGdsb2JhbDoge1xuICAgICAgICBtb3VzZXVwOiAoKSA9PiB0aGlzLiNkcmFnT3JpZ2luID0gbnVsbCxcbiAgICAgICAgbW91c2Vtb3ZlOiAoZSkgPT4ge1xuICAgICAgICAgIGlmICh0aGlzLiNkcmFnT3JpZ2luICYmIE1hdGguYWJzKHRoaXMuI2RyYWdPcmlnaW4gLSBlLnBhZ2VYKSA+IHRoaXMuI29wdGlvbnMuZHJhZ1RvbGVyYW5jZSkge1xuICAgICAgICAgICAgdGhyZWVzaXh0eS5zdG9wKCk7XG4gICAgICAgICAgICB0aGlzLiNkcmFnT3JpZ2luID4gZS5wYWdlWCA/IHRocmVlc2l4dHkucHJldigpIDogdGhyZWVzaXh0eS5uZXh0KCk7XG4gICAgICAgICAgICB0aGlzLiNkcmFnT3JpZ2luID0gZS5wYWdlWDtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHRvdWNobW92ZTogKGUpID0+IHtcbiAgICAgICAgICBpZiAoZS50b3VjaGVzLmxlbmd0aCA9PT0gMikgcmV0dXJuO1xuICAgICAgICAgIGlmIChlLnRvdWNoZXMubGVuZ3RoID09PSAxKSBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgIGlmICh0aGlzLiNkcmFnT3JpZ2luICYmIE1hdGguYWJzKHRoaXMuI2RyYWdPcmlnaW4gLSBlLnRvdWNoZXNbMF0uY2xpZW50WCkgPiB0aGlzLiNvcHRpb25zLnN3aXBlVG9sZXJhbmNlKSB7XG4gICAgICAgICAgICB0aHJlZXNpeHR5LnN0b3AoKTtcbiAgICAgICAgICAgIHRoaXMuI2RyYWdPcmlnaW4gPiBlLnRvdWNoZXNbMF0uY2xpZW50WCA/IHRocmVlc2l4dHkucHJldigpIDogdGhyZWVzaXh0eS5uZXh0KCk7XG4gICAgICAgICAgICB0aGlzLiNkcmFnT3JpZ2luID0gZS50b3VjaGVzWzBdLmNsaWVudFg7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBrZXlkb3duOiAoZSkgPT4ge1xuICAgICAgICAgIGlmIChbMzcsIDM5XS5pbmNsdWRlcyhlLmtleUNvZGUpKSB7XG4gICAgICAgICAgICB0aHJlZXNpeHR5LnBsYXkoMzcgPT09IGUua2V5Q29kZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBrZXl1cDogKGUpID0+IHtcbiAgICAgICAgICBpZiAoWzM3LCAzOV0uaW5jbHVkZXMoZS5rZXlDb2RlKSkge1xuICAgICAgICAgICAgdGhyZWVzaXh0eS5zdG9wKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfTtcblxuICAgIHRoaXMuX2luaXRFdmVudHMoKTtcbiAgfVxuXG4gIGRlc3Ryb3koKSB7XG4gICAgdGhpcy4jb3B0aW9ucy5zd2lwZVRhcmdldC5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZWRvd24nLCB0aGlzLiNldmVudEhhbmRsZXJzLmNvbnRhaW5lci5tb3VzZWRvd24pO1xuICAgIHRoaXMuI29wdGlvbnMuc3dpcGVUYXJnZXQucmVtb3ZlRXZlbnRMaXN0ZW5lcigndG91Y2hzdGFydCcsIHRoaXMuI2V2ZW50SGFuZGxlcnMuY29udGFpbmVyLnRvdWNoc3RhcnQpO1xuICAgIHRoaXMuI29wdGlvbnMuc3dpcGVUYXJnZXQucmVtb3ZlRXZlbnRMaXN0ZW5lcigndG91Y2hlbmQnLCB0aGlzLiNldmVudEhhbmRsZXJzLmNvbnRhaW5lci50b3VjaGVuZCk7XG5cbiAgICBnbG9iYWwucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIHRoaXMuI2V2ZW50SGFuZGxlcnMuZ2xvYmFsLm1vdXNldXApO1xuICAgIGdsb2JhbC5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZW1vdmUnLCB0aGlzLiNldmVudEhhbmRsZXJzLmdsb2JhbC5tb3VzZW1vdmUpO1xuICAgIHRoaXMuI29wdGlvbnMucGFyZW50RWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCd0b3VjaG1vdmUnLCB0aGlzLiNldmVudEhhbmRsZXJzLmdsb2JhbC50b3VjaG1vdmUpO1xuICAgIGdsb2JhbC5yZW1vdmVFdmVudExpc3RlbmVyKCdrZXlkb3duJywgdGhpcy4jZXZlbnRIYW5kbGVycy5nbG9iYWwua2V5ZG93bik7XG4gICAgZ2xvYmFsLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2tleXVwJywgdGhpcy4jZXZlbnRIYW5kbGVycy5nbG9iYWwua2V5dXApO1xuXG4gICAgaWYgKHRoaXMuI29wdGlvbnMucHJldikge1xuICAgICAgdGhpcy4jb3B0aW9ucy5wcmV2LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNlZG93bicsIHRoaXMuI2V2ZW50SGFuZGxlcnMucHJldi5tb3VzZWRvd24pO1xuICAgICAgdGhpcy4jb3B0aW9ucy5wcmV2LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCB0aGlzLiNldmVudEhhbmRsZXJzLnByZXYubW91c2V1cCk7XG4gICAgICB0aGlzLiNvcHRpb25zLnByZXYucmVtb3ZlRXZlbnRMaXN0ZW5lcigndG91Y2hzdGFydCcsIHRoaXMuI2V2ZW50SGFuZGxlcnMucHJldi50b3VjaHN0YXJ0KTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy4jb3B0aW9ucy5uZXh0KSB7XG4gICAgICB0aGlzLiNvcHRpb25zLm5leHQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2Vkb3duJywgdGhpcy4jZXZlbnRIYW5kbGVycy5uZXh0Lm1vdXNlZG93bik7XG4gICAgICB0aGlzLiNvcHRpb25zLm5leHQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIHRoaXMuI2V2ZW50SGFuZGxlcnMubmV4dC5tb3VzZXVwKTtcbiAgICAgIHRoaXMuI29wdGlvbnMubmV4dC5yZW1vdmVFdmVudExpc3RlbmVyKCd0b3VjaHN0YXJ0JywgdGhpcy4jZXZlbnRIYW5kbGVycy5uZXh0LnRvdWNoc3RhcnQpO1xuICAgIH1cbiAgfVxuXG4gIF9pbml0RXZlbnRzKCkge1xuICAgIGlmICh0aGlzLiNvcHRpb25zLmRyYWdnYWJsZSkge1xuICAgICAgdGhpcy4jb3B0aW9ucy5zd2lwZVRhcmdldC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWRvd24nLCB0aGlzLiNldmVudEhhbmRsZXJzLmNvbnRhaW5lci5tb3VzZWRvd24pO1xuICAgICAgZ2xvYmFsLmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCB0aGlzLiNldmVudEhhbmRsZXJzLmdsb2JhbC5tb3VzZXVwKTtcbiAgICAgIGdsb2JhbC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZW1vdmUnLCB0aGlzLiNldmVudEhhbmRsZXJzLmdsb2JhbC5tb3VzZW1vdmUpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLiNvcHRpb25zLnN3aXBlYWJsZSkge1xuICAgICAgdGhpcy4jb3B0aW9ucy5zd2lwZVRhcmdldC5hZGRFdmVudExpc3RlbmVyKCd0b3VjaHN0YXJ0JywgdGhpcy4jZXZlbnRIYW5kbGVycy5jb250YWluZXIudG91Y2hzdGFydCk7XG4gICAgICB0aGlzLiNvcHRpb25zLnN3aXBlVGFyZ2V0LmFkZEV2ZW50TGlzdGVuZXIoJ3RvdWNoZW5kJywgdGhpcy4jZXZlbnRIYW5kbGVycy5jb250YWluZXIudG91Y2hlbmQpO1xuICAgICAgdGhpcy4jb3B0aW9ucy5wYXJlbnRFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3RvdWNobW92ZScsIHRoaXMuI2V2ZW50SGFuZGxlcnMuZ2xvYmFsLnRvdWNobW92ZSk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuI29wdGlvbnMua2V5cykge1xuICAgICAgZ2xvYmFsLmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCB0aGlzLiNldmVudEhhbmRsZXJzLmdsb2JhbC5rZXlkb3duKTtcbiAgICAgIGdsb2JhbC5hZGRFdmVudExpc3RlbmVyKCdrZXl1cCcsIHRoaXMuI2V2ZW50SGFuZGxlcnMuZ2xvYmFsLmtleXVwKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy4jb3B0aW9ucy5wcmV2KSB7XG4gICAgICB0aGlzLiNvcHRpb25zLnByZXYuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vkb3duJywgdGhpcy4jZXZlbnRIYW5kbGVycy5wcmV2Lm1vdXNlZG93bik7XG4gICAgICB0aGlzLiNvcHRpb25zLnByZXYuYWRkRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIHRoaXMuI2V2ZW50SGFuZGxlcnMucHJldi5tb3VzZXVwKTtcbiAgICAgIHRoaXMuI29wdGlvbnMucHJldi5hZGRFdmVudExpc3RlbmVyKCd0b3VjaHN0YXJ0JywgdGhpcy4jZXZlbnRIYW5kbGVycy5wcmV2LnRvdWNoc3RhcnQpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLiNvcHRpb25zLm5leHQpIHtcbiAgICAgIHRoaXMuI29wdGlvbnMubmV4dC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWRvd24nLCB0aGlzLiNldmVudEhhbmRsZXJzLm5leHQubW91c2Vkb3duKTtcbiAgICAgIHRoaXMuI29wdGlvbnMubmV4dC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgdGhpcy4jZXZlbnRIYW5kbGVycy5uZXh0Lm1vdXNldXApO1xuICAgICAgdGhpcy4jb3B0aW9ucy5uZXh0LmFkZEV2ZW50TGlzdGVuZXIoJ3RvdWNoc3RhcnQnLCB0aGlzLiNldmVudEhhbmRsZXJzLm5leHQudG91Y2hzdGFydCk7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IEV2ZW50cztcbiJdfQ==
@@ -1,264 +1,2 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = void 0;
7
-
8
- var _react = _interopRequireDefault(require("react"));
9
-
10
- var _events2 = _interopRequireDefault(require("./events"));
11
-
12
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
13
-
14
- function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
15
-
16
- 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); } }
17
-
18
- function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
19
-
20
- function _classPrivateFieldInitSpec(obj, privateMap, value) { _checkPrivateRedeclaration(obj, privateMap); privateMap.set(obj, value); }
21
-
22
- function _checkPrivateRedeclaration(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError("Cannot initialize the same private elements twice on an object"); } }
23
-
24
- function _classPrivateFieldGet(receiver, privateMap) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, "get"); return _classApplyDescriptorGet(receiver, descriptor); }
25
-
26
- function _classApplyDescriptorGet(receiver, descriptor) { if (descriptor.get) { return descriptor.get.call(receiver); } return descriptor.value; }
27
-
28
- function _classPrivateFieldSet(receiver, privateMap, value) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, "set"); _classApplyDescriptorSet(receiver, descriptor, value); return value; }
29
-
30
- function _classExtractFieldDescriptor(receiver, privateMap, action) { if (!privateMap.has(receiver)) { throw new TypeError("attempted to " + action + " private field on non-instance"); } return privateMap.get(receiver); }
31
-
32
- function _classApplyDescriptorSet(receiver, descriptor, value) { if (descriptor.set) { descriptor.set.call(receiver, value); } else { if (!descriptor.writable) { throw new TypeError("attempted to set read only private field"); } descriptor.value = value; } }
33
-
34
- var _options = /*#__PURE__*/new WeakMap();
35
-
36
- var _index = /*#__PURE__*/new WeakMap();
37
-
38
- var _loopTimeoutId = /*#__PURE__*/new WeakMap();
39
-
40
- var _looping = /*#__PURE__*/new WeakMap();
41
-
42
- var _events = /*#__PURE__*/new WeakMap();
43
-
44
- var _sprite = /*#__PURE__*/new WeakMap();
45
-
46
- var ThreeSixty = /*#__PURE__*/function () {
47
- function ThreeSixty(container, options) {
48
- _classCallCheck(this, ThreeSixty);
49
-
50
- _classPrivateFieldInitSpec(this, _options, {
51
- writable: true,
52
- value: null
53
- });
54
-
55
- _classPrivateFieldInitSpec(this, _index, {
56
- writable: true,
57
- value: 0
58
- });
59
-
60
- _classPrivateFieldInitSpec(this, _loopTimeoutId, {
61
- writable: true,
62
- value: null
63
- });
64
-
65
- _classPrivateFieldInitSpec(this, _looping, {
66
- writable: true,
67
- value: false
68
- });
69
-
70
- _classPrivateFieldInitSpec(this, _events, {
71
- writable: true,
72
- value: null
73
- });
74
-
75
- _classPrivateFieldInitSpec(this, _sprite, {
76
- writable: true,
77
- value: false
78
- });
79
-
80
- this.container = container;
81
-
82
- _classPrivateFieldSet(this, _options, Object.assign({
83
- width: 300,
84
- height: 300,
85
- aspectRatio: 0,
86
- count: 0,
87
- perRow: 0,
88
- speed: 100,
89
- dragTolerance: 10,
90
- swipeTolerance: 10,
91
- draggable: true,
92
- swipeable: true,
93
- keys: true,
94
- inverted: false
95
- }, options));
96
-
97
- _classPrivateFieldGet(this, _options).swipeTarget = _classPrivateFieldGet(this, _options).swipeTarget || this.container;
98
-
99
- _classPrivateFieldSet(this, _sprite, !Array.isArray(_classPrivateFieldGet(this, _options).image));
100
-
101
- if (!this.sprite) {
102
- _classPrivateFieldGet(this, _options).count = _classPrivateFieldGet(this, _options).image.length;
103
- }
104
-
105
- Object.freeze(_classPrivateFieldGet(this, _options));
106
-
107
- _classPrivateFieldSet(this, _events, new _events2.default(this, _classPrivateFieldGet(this, _options)));
108
-
109
- this._windowResizeListener = this._windowResizeListener.bind(this);
110
-
111
- this._initContainer();
112
- }
113
-
114
- _createClass(ThreeSixty, [{
115
- key: "isResponsive",
116
- get: function get() {
117
- return _classPrivateFieldGet(this, _options).aspectRatio > 0;
118
- }
119
- }, {
120
- key: "containerWidth",
121
- get: function get() {
122
- return this.isResponsive ? this.container.clientWidth : _classPrivateFieldGet(this, _options).width;
123
- }
124
- }, {
125
- key: "containerHeight",
126
- get: function get() {
127
- return this.isResponsive ? this.container.clientWidth * _classPrivateFieldGet(this, _options).aspectRatio : _classPrivateFieldGet(this, _options).height;
128
- }
129
- }, {
130
- key: "index",
131
- get: function get() {
132
- return _classPrivateFieldGet(this, _index);
133
- }
134
- }, {
135
- key: "looping",
136
- get: function get() {
137
- return _classPrivateFieldGet(this, _looping);
138
- }
139
- }, {
140
- key: "sprite",
141
- get: function get() {
142
- return _classPrivateFieldGet(this, _sprite);
143
- }
144
- }, {
145
- key: "next",
146
- value: function next() {
147
- this.goto(_classPrivateFieldGet(this, _options).inverted ? _classPrivateFieldGet(this, _index) - 1 : _classPrivateFieldGet(this, _index) + 1);
148
- }
149
- }, {
150
- key: "prev",
151
- value: function prev() {
152
- this.goto(_classPrivateFieldGet(this, _options).inverted ? _classPrivateFieldGet(this, _index) + 1 : _classPrivateFieldGet(this, _index) - 1);
153
- }
154
- }, {
155
- key: "goto",
156
- value: function goto(index) {
157
- _classPrivateFieldSet(this, _index, (_classPrivateFieldGet(this, _options).count + index) % _classPrivateFieldGet(this, _options).count);
158
-
159
- this._update();
160
- }
161
- }, {
162
- key: "play",
163
- value: function play(reversed) {
164
- if (this.looping) {
165
- return;
166
- }
167
-
168
- this._loop(reversed);
169
-
170
- _classPrivateFieldSet(this, _looping, true);
171
- }
172
- }, {
173
- key: "stop",
174
- value: function stop() {
175
- if (!this.looping) {
176
- return;
177
- }
178
-
179
- global.clearTimeout(_classPrivateFieldGet(this, _loopTimeoutId));
180
-
181
- _classPrivateFieldSet(this, _looping, false);
182
- }
183
- }, {
184
- key: "toggle",
185
- value: function toggle(reversed) {
186
- this.looping ? this.stop() : this.play(reversed);
187
- }
188
- }, {
189
- key: "destroy",
190
- value: function destroy() {
191
- this.stop();
192
-
193
- _classPrivateFieldGet(this, _events).destroy();
194
-
195
- this.container.style.width = '';
196
- this.container.style.height = '';
197
- this.container.style.backgroundImage = '';
198
- this.container.style.backgroundPositionX = '';
199
- this.container.style.backgroundPositionY = '';
200
- this.container.style.backgroundSize = '';
201
-
202
- if (this.isResponsive) {
203
- window.removeEventListener('resize', this._windowResizeListener);
204
- }
205
- }
206
- }, {
207
- key: "_loop",
208
- value: function _loop(reversed) {
209
- var _this = this;
210
-
211
- reversed ? this.prev() : this.next();
212
-
213
- _classPrivateFieldSet(this, _loopTimeoutId, global.setTimeout(function () {
214
- _this._loop(reversed);
215
- }, _classPrivateFieldGet(this, _options).speed));
216
- }
217
- }, {
218
- key: "_update",
219
- value: function _update() {
220
- if (this.sprite) {
221
- this.container.style.backgroundPositionX = -(_classPrivateFieldGet(this, _index) % _classPrivateFieldGet(this, _options).perRow) * this.containerWidth + 'px';
222
- this.container.style.backgroundPositionY = -Math.floor(_classPrivateFieldGet(this, _index) / _classPrivateFieldGet(this, _options).perRow) * this.containerHeight + 'px';
223
- } else {
224
- this.container.style.backgroundImage = "url(\"".concat(_classPrivateFieldGet(this, _options).image[_classPrivateFieldGet(this, _index)], "\")");
225
- }
226
- }
227
- }, {
228
- key: "_windowResizeListener",
229
- value: function _windowResizeListener() {
230
- this.container.style.height = this.containerHeight + 'px';
231
-
232
- this._update();
233
- }
234
- }, {
235
- key: "_initContainer",
236
- value: function _initContainer() {
237
- if (!this.isResponsive) {
238
- this.container.style.width = this.containerWidth + 'px';
239
- }
240
-
241
- this.container.style.height = this.containerHeight + 'px';
242
-
243
- if (this.sprite) {
244
- this.container.style.backgroundImage = "url(\"".concat(_classPrivateFieldGet(this, _options).image, "\")");
245
-
246
- var cols = _classPrivateFieldGet(this, _options).perRow;
247
-
248
- var rows = Math.ceil(_classPrivateFieldGet(this, _options).count / _classPrivateFieldGet(this, _options).perRow);
249
- this.container.style.backgroundSize = cols * 100 + '% ' + rows * 100 + '%';
250
- }
251
-
252
- if (this.isResponsive) {
253
- window.addEventListener('resize', this._windowResizeListener);
254
- }
255
-
256
- this._update();
257
- }
258
- }]);
259
-
260
- return ThreeSixty;
261
- }();
262
-
263
- var _default = ThreeSixty;
264
- exports.default = _default;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _react=_interopRequireDefault(require("react")),_events2=_interopRequireDefault(require("./events"));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function _classCallCheck(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function _defineProperties(e,t){for(var i=0;i<t.length;i++){var s=t[i];s.enumerable=s.enumerable||!1,s.configurable=!0,"value"in s&&(s.writable=!0),Object.defineProperty(e,s.key,s)}}function _createClass(e,t,i){return t&&_defineProperties(e.prototype,t),i&&_defineProperties(e,i),Object.defineProperty(e,"prototype",{writable:!1}),e}function _classPrivateFieldInitSpec(e,t,i){_checkPrivateRedeclaration(e,t),t.set(e,i)}function _checkPrivateRedeclaration(e,t){if(t.has(e))throw new TypeError("Cannot initialize the same private elements twice on an object")}function _classPrivateFieldGet(e,t){return _classApplyDescriptorGet(e,_classExtractFieldDescriptor(e,t,"get"))}function _classApplyDescriptorGet(e,t){return t.get?t.get.call(e):t.value}function _classPrivateFieldSet(e,t,i){return _classApplyDescriptorSet(e,_classExtractFieldDescriptor(e,t,"set"),i),i}function _classExtractFieldDescriptor(e,t,i){if(t.has(e))return t.get(e);throw new TypeError("attempted to "+i+" private field on non-instance")}function _classApplyDescriptorSet(e,t,i){if(t.set)t.set.call(e,i);else{if(!t.writable)throw new TypeError("attempted to set read only private field");t.value=i}}var _options=new WeakMap,_index=new WeakMap,_loopTimeoutId=new WeakMap,_looping=new WeakMap,_events=new WeakMap,_sprite=new WeakMap,ThreeSixty=function(){function i(e,t){_classCallCheck(this,i),_classPrivateFieldInitSpec(this,_options,{writable:!0,value:null}),_classPrivateFieldInitSpec(this,_index,{writable:!0,value:0}),_classPrivateFieldInitSpec(this,_loopTimeoutId,{writable:!0,value:null}),_classPrivateFieldInitSpec(this,_looping,{writable:!0,value:!1}),_classPrivateFieldInitSpec(this,_events,{writable:!0,value:null}),_classPrivateFieldInitSpec(this,_sprite,{writable:!0,value:!1}),this.container=e,_classPrivateFieldSet(this,_options,Object.assign({width:300,height:300,aspectRatio:0,count:0,perRow:0,speed:100,dragTolerance:10,swipeTolerance:10,draggable:!0,swipeable:!0,keys:!0,inverted:!1},t)),_classPrivateFieldGet(this,_options).swipeTarget=_classPrivateFieldGet(this,_options).swipeTarget||this.container,_classPrivateFieldSet(this,_sprite,!Array.isArray(_classPrivateFieldGet(this,_options).image)),this.sprite||(_classPrivateFieldGet(this,_options).count=_classPrivateFieldGet(this,_options).image.length),Object.freeze(_classPrivateFieldGet(this,_options)),_classPrivateFieldSet(this,_events,new _events2.default(this,_classPrivateFieldGet(this,_options))),this._windowResizeListener=this._windowResizeListener.bind(this),this._initContainer()}return _createClass(i,[{key:"isResponsive",get:function(){return 0<_classPrivateFieldGet(this,_options).aspectRatio}},{key:"containerWidth",get:function(){return this.isResponsive?this.container.clientWidth:_classPrivateFieldGet(this,_options).width}},{key:"containerHeight",get:function(){return this.isResponsive?this.container.clientWidth*_classPrivateFieldGet(this,_options).aspectRatio:_classPrivateFieldGet(this,_options).height}},{key:"index",get:function(){return _classPrivateFieldGet(this,_index)}},{key:"looping",get:function(){return _classPrivateFieldGet(this,_looping)}},{key:"sprite",get:function(){return _classPrivateFieldGet(this,_sprite)}},{key:"next",value:function(){this.goto(_classPrivateFieldGet(this,_options).inverted?_classPrivateFieldGet(this,_index)-1:_classPrivateFieldGet(this,_index)+1)}},{key:"prev",value:function(){this.goto(_classPrivateFieldGet(this,_options).inverted?_classPrivateFieldGet(this,_index)+1:_classPrivateFieldGet(this,_index)-1)}},{key:"goto",value:function(e){_classPrivateFieldSet(this,_index,(_classPrivateFieldGet(this,_options).count+e)%_classPrivateFieldGet(this,_options).count),this._update()}},{key:"play",value:function(e){this.looping||(this._loop(e),_classPrivateFieldSet(this,_looping,!0))}},{key:"stop",value:function(){this.looping&&(global.clearTimeout(_classPrivateFieldGet(this,_loopTimeoutId)),_classPrivateFieldSet(this,_looping,!1))}},{key:"toggle",value:function(e){this.looping?this.stop():this.play(e)}},{key:"destroy",value:function(){this.stop(),_classPrivateFieldGet(this,_events).destroy(),this.container.style.width="",this.container.style.height="",this.container.style.backgroundImage="",this.container.style.backgroundPositionX="",this.container.style.backgroundPositionY="",this.container.style.backgroundSize="",this.isResponsive&&window.removeEventListener("resize",this._windowResizeListener)}},{key:"_loop",value:function(e){var t=this;e?this.prev():this.next(),_classPrivateFieldSet(this,_loopTimeoutId,global.setTimeout(function(){t._loop(e)},_classPrivateFieldGet(this,_options).speed))}},{key:"_update",value:function(){this.sprite?(this.container.style.backgroundPositionX=-(_classPrivateFieldGet(this,_index)%_classPrivateFieldGet(this,_options).perRow)*this.containerWidth+"px",this.container.style.backgroundPositionY=-Math.floor(_classPrivateFieldGet(this,_index)/_classPrivateFieldGet(this,_options).perRow)*this.containerHeight+"px"):this.container.style.backgroundImage='url("'.concat(_classPrivateFieldGet(this,_options).image[_classPrivateFieldGet(this,_index)],'")')}},{key:"_windowResizeListener",value:function(){this.container.style.height=this.containerHeight+"px",this._update()}},{key:"_initContainer",value:function(){var e,t;this.isResponsive||(this.container.style.width=this.containerWidth+"px"),this.container.style.height=this.containerHeight+"px",this.sprite&&(this.container.style.backgroundImage='url("'.concat(_classPrivateFieldGet(this,_options).image,'")'),e=_classPrivateFieldGet(this,_options).perRow,t=Math.ceil(_classPrivateFieldGet(this,_options).count/_classPrivateFieldGet(this,_options).perRow),this.container.style.backgroundSize=100*e+"% "+100*t+"%"),this.isResponsive&&window.addEventListener("resize",this._windowResizeListener),this._update()}}]),i}(),_default=ThreeSixty;exports.default=_default;
2
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRocmVlc2l4dHkvaW5kZXguanMiXSwibmFtZXMiOlsiX3JlYWN0IiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfZXZlbnRzMiIsIlRocmVlU2l4dHkiLCJjb250YWluZXIiLCJvcHRpb25zIiwiX2NsYXNzQ2FsbENoZWNrIiwidGhpcyIsIl9jbGFzc1ByaXZhdGVGaWVsZEluaXRTcGVjIiwiX29wdGlvbnMiLCJ3cml0YWJsZSIsInZhbHVlIiwiX2luZGV4IiwiX2xvb3BUaW1lb3V0SWQiLCJfbG9vcGluZyIsIl9ldmVudHMiLCJfc3ByaXRlIiwiX2NsYXNzUHJpdmF0ZUZpZWxkU2V0IiwiT2JqZWN0IiwiYXNzaWduIiwid2lkdGgiLCJoZWlnaHQiLCJhc3BlY3RSYXRpbyIsImNvdW50IiwicGVyUm93Iiwic3BlZWQiLCJkcmFnVG9sZXJhbmNlIiwic3dpcGVUb2xlcmFuY2UiLCJkcmFnZ2FibGUiLCJzd2lwZWFibGUiLCJrZXlzIiwiaW52ZXJ0ZWQiLCJfY2xhc3NQcml2YXRlRmllbGRHZXQiLCJzd2lwZVRhcmdldCIsIkFycmF5IiwiaXNBcnJheSIsImltYWdlIiwic3ByaXRlIiwibGVuZ3RoIiwiZnJlZXplIiwiRXZlbnRzIiwiX3dpbmRvd1Jlc2l6ZUxpc3RlbmVyIiwiYmluZCIsImlzUmVzcG9uc2l2ZSIsImNsaWVudFdpZHRoIiwiZ290byIsImluZGV4IiwicmV2ZXJzZWQiLCJsb29waW5nIiwiZ2xvYmFsIiwiY2xlYXJUaW1lb3V0Iiwic3RvcCIsInBsYXkiLCJkZXN0cm95Iiwic3R5bGUiLCJiYWNrZ3JvdW5kSW1hZ2UiLCJiYWNrZ3JvdW5kUG9zaXRpb25YIiwiYmFja2dyb3VuZFBvc2l0aW9uWSIsImJhY2tncm91bmRTaXplIiwid2luZG93IiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsIl90aGlzIiwicHJldiIsIm5leHQiLCJzZXRUaW1lb3V0IiwiX2xvb3AiLCJjb250YWluZXJXaWR0aCIsIk1hdGgiLCJmbG9vciIsImNvbnRhaW5lckhlaWdodCIsImNvbmNhdCIsIl91cGRhdGUiLCJyb3dzIiwiY2VpbCIsImNvbHMiLCJhZGRFdmVudExpc3RlbmVyIl0sIm1hcHBpbmdzIjoiMkZBQUEsSUFBQUEsT0FBQUMsdUJBQUFDLFFBQUEsVUFFQUMsU0FBQUYsdUJBQUFDLFFBQUEsYSxzOENBRU1FLFcsV0FVSixTQUFBQSxFQUFZQyxFQUFXQyxHQUFTQyxnQkFBQUMsS0FBQUosR0FBQUssMkJBQUFELEtBQUFFLFNBQUEsQ0FBQUMsVUFBQSxFQUFBQyxNQVRyQixPQVNxQkgsMkJBQUFELEtBQUFLLE9BQUEsQ0FBQUYsVUFBQSxFQUFBQyxNQVJ2QixJQVF1QkgsMkJBQUFELEtBQUFNLGVBQUEsQ0FBQUgsVUFBQSxFQUFBQyxNQU5mLE9BTWVILDJCQUFBRCxLQUFBTyxTQUFBLENBQUFKLFVBQUEsRUFBQUMsT0FabEMsSUFZa0NILDJCQUFBRCxLQUFBUSxRQUFBLENBQUFMLFVBQUEsRUFBQUMsTUFIdEIsT0FHc0JILDJCQUFBRCxLQUFBUyxRQUFBLENBQUFOLFVBQUEsRUFBQUMsT0FGdEIsSUFHUkosS0FBS0gsVUFBWUEsRUFFakJhLHNCQUFBVixLQUFBRSxTQUFnQlMsT0FBT0MsT0FBTyxDQUM1QkMsTUFBTyxJQUNQQyxPQUFRLElBQ1JDLFlBQWEsRUFDYkMsTUFBTyxFQUNQQyxPQUFRLEVBQ1JDLE1BQU8sSUFDUEMsY0FBZSxHQUNmQyxlQUFnQixHQUNoQkMsV0FBVyxFQUNYQyxXQUFXLEVBQ1hDLE1BQU0sRUFDTkMsVUFBVSxHQUNUMUIsSUFFSDJCLHNCQUFBekIsS0FBQUUsVUFBY3dCLFlBQWNELHNCQUFBekIsS0FBQUUsVUFBY3dCLGFBQWUxQixLQUFLSCxVQUU5RGEsc0JBQUFWLEtBQUFTLFNBQWdCa0IsTUFBTUMsUUFBUUgsc0JBQUF6QixLQUFBRSxVQUFjMkIsUUFDdkM3QixLQUFLOEIsU0FDUkwsc0JBQUF6QixLQUFBRSxVQUFjYyxNQUFRUyxzQkFBQXpCLEtBQUFFLFVBQWMyQixNQUFNRSxRQUc1Q3BCLE9BQU9xQixPQUFQ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QUssU0FzRVQsUSxtQ0FJSixXQUNFTCxLQUFLSCxVQXZFUGtELE1BQUFqQyxPQUFPZCxLQUFBOEQsZ0JBQUEsS0F3RUw5RCxLQXZFQWdFLFksNEJBMEVGLFdBTUUsSUF0RUtBLEVBQ05DLEVBZ0VNakUsS0F4RVBvQyxlQUNFcEMsS0FBS3NDLFVBQUtTLE1BQUFsQyxNQUFBYixLQUFBMkQsZUFBY25DLE1BMEV4QnhCLEtBQUtILFVBQVVrRCxNQUFNakMsT0FBU2QsS0FBSzhELGdCQUFrQixLQUVqRDlELEtBekVOOEIsU0FDRTlCLEtBQUFILFVBQUFrRCxNQUFBQyxnQkFBQSxRQUFBZSxPQUFldEMsc0JBQUF6QixLQUFBRSxVQUFBMkIsTUFBZixNQUVLbUMsRUFBTHZDLHNCQUFBekIsS0FBQUUsVUFBQWUsT0FDRGdELEVBQUFMLEtBQUFNLEtBQUF6QyxzQkFBQXpCLEtBQUFFLFVBQUFjLE1BQUFTLHNCQUFBekIsS0FBQUUsVUFBQWUsUUEwRUdqQixLQUFLSCxVQUFVa0QsTUFBTUksZUFBeUIsSUFBUGdCLEVBQWMsS0FBZSxJQUFQRixFQUFjLEtBdkU3RWpFLEtBQUlvQyxjQTJFRmdCLE9BMUVBZ0IsaUJBQUEsU0FBQXBFLEtBQUFrQyx1QkE2RUZsQyxLQTFFQWdFLGMsY0E4RVdwRSIsImZpbGUiOiJ0aHJlZXNpeHR5L2luZGV4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcblxuaW1wb3J0IEV2ZW50cyBmcm9tICcuL2V2ZW50cyc7XG5cbmNsYXNzIFRocmVlU2l4dHkge1xuICAjb3B0aW9ucyA9IG51bGw7XG4gICNpbmRleCA9IDA7XG5cbiAgI2xvb3BUaW1lb3V0SWQgPSBudWxsO1xuICAjbG9vcGluZyA9IGZhbHNlO1xuXG4gICNldmVudHMgPSBudWxsO1xuICAjc3ByaXRlID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoY29udGFpbmVyLCBvcHRpb25zKSB7XG4gICAgdGhpcy5jb250YWluZXIgPSBjb250YWluZXI7XG5cbiAgICB0aGlzLiNvcHRpb25zID0gT2JqZWN0LmFzc2lnbih7XG4gICAgICB3aWR0aDogMzAwLFxuICAgICAgaGVpZ2h0OiAzMDAsXG4gICAgICBhc3BlY3RSYXRpbzogMCxcbiAgICAgIGNvdW50OiAwLFxuICAgICAgcGVyUm93OiAwLFxuICAgICAgc3BlZWQ6IDEwMCxcbiAgICAgIGRyYWdUb2xlcmFuY2U6IDEwLFxuICAgICAgc3dpcGVUb2xlcmFuY2U6IDEwLFxuICAgICAgZHJhZ2dhYmxlOiB0cnVlLFxuICAgICAgc3dpcGVhYmxlOiB0cnVlLFxuICAgICAga2V5czogdHJ1ZSxcbiAgICAgIGludmVydGVkOiBmYWxzZVxuICAgIH0sIG9wdGlvbnMpO1xuXG4gICAgdGhpcy4jb3B0aW9ucy5zd2lwZVRhcmdldCA9IHRoaXMuI29wdGlvbnMuc3dpcGVUYXJnZXQgfHwgdGhpcy5jb250YWluZXI7XG5cbiAgICB0aGlzLiNzcHJpdGUgPSAhQXJyYXkuaXNBcnJheSh0aGlzLiNvcHRpb25zLmltYWdlKTtcbiAgICBpZiAoIXRoaXMuc3ByaXRlKSB7XG4gICAgICB0aGlzLiNvcHRpb25zLmNvdW50ID0gdGhpcy4jb3B0aW9ucy5pbWFnZS5sZW5ndGg7XG4gICAgfVxuXG4gICAgT2JqZWN0LmZyZWV6ZSh0aGlzLiNvcHRpb25zKTtcblxuICAgIHRoaXMuI2V2ZW50cyA9IG5ldyBFdmVudHModGhpcywgdGhpcy4jb3B0aW9ucyk7XG5cbiAgICB0aGlzLl93aW5kb3dSZXNpemVMaXN0ZW5lciA9IHRoaXMuX3dpbmRvd1Jlc2l6ZUxpc3RlbmVyLmJpbmQodGhpcyk7XG5cbiAgICB0aGlzLl9pbml0Q29udGFpbmVyKCk7XG4gIH1cblxuICBnZXQgaXNSZXNwb25zaXZlKCkge1xuICAgIHJldHVybiB0aGlzLiNvcHRpb25zLmFzcGVjdFJhdGlvID4gMDtcbiAgfVxuXG4gIGdldCBjb250YWluZXJXaWR0aCgpIHtcbiAgICByZXR1cm4gdGhpcy5pc1Jlc3BvbnNpdmUgPyB0aGlzLmNvbnRhaW5lci5jbGllbnRXaWR0aCA6IHRoaXMuI29wdGlvbnMud2lkdGg7XG4gIH1cblxuICBnZXQgY29udGFpbmVySGVpZ2h0KCkge1xuICAgIHJldHVybiB0aGlzLmlzUmVzcG9uc2l2ZVxuICAgICAgPyB0aGlzLmNvbnRhaW5lci5jbGllbnRXaWR0aCAqIHRoaXMuI29wdGlvbnMuYXNwZWN0UmF0aW9cbiAgICAgIDogdGhpcy4jb3B0aW9ucy5oZWlnaHQ7XG4gIH1cblxuICBnZXQgaW5kZXgoKSB7XG4gICAgcmV0dXJuIHRoaXMuI2luZGV4O1xuICB9XG5cbiAgZ2V0IGxvb3BpbmcoKSB7XG4gICAgcmV0dXJuIHRoaXMuI2xvb3Bpbmc7XG4gIH1cblxuICBnZXQgc3ByaXRlKCkge1xuICAgIHJldHVybiB0aGlzLiNzcHJpdGU7XG4gIH1cblxuICBuZXh0KCkge1xuICAgIHRoaXMuZ290byh0aGlzLiNvcHRpb25zLmludmVydGVkID8gdGhpcy4jaW5kZXggLSAxIDogdGhpcy4jaW5kZXggKyAxKTtcbiAgfVxuXG4gIHByZXYoKSB7XG4gICAgdGhpcy5nb3RvKHRoaXMuI29wdGlvbnMuaW52ZXJ0ZWQgPyB0aGlzLiNpbmRleCArIDEgOiB0aGlzLiNpbmRleCAtIDEpO1xuICB9XG5cbiAgZ290byhpbmRleCkge1xuICAgIHRoaXMuI2luZGV4ID0gKHRoaXMuI29wdGlvbnMuY291bnQgKyBpbmRleCkgJSB0aGlzLiNvcHRpb25zLmNvdW50O1xuXG4gICAgdGhpcy5fdXBkYXRlKCk7XG4gIH1cblxuICBwbGF5IChyZXZlcnNlZCkge1xuICAgIGlmICh0aGlzLmxvb3BpbmcpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9sb29wKHJldmVyc2VkKTtcbiAgICB0aGlzLiNsb29waW5nID0gdHJ1ZTtcbiAgfVxuXG4gIHN0b3AgKCkge1xuICAgIGlmICghdGhpcy5sb29waW5nKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgZ2xvYmFsLmNsZWFyVGltZW91dCh0aGlzLiNsb29wVGltZW91dElkKTtcbiAgICB0aGlzLiNsb29waW5nID0gZmFsc2U7XG4gIH1cblxuICB0b2dnbGUocmV2ZXJzZWQpIHtcbiAgICB0aGlzLmxvb3BpbmcgPyB0aGlzLnN0b3AoKSA6IHRoaXMucGxheShyZXZlcnNlZCk7XG4gIH1cblxuICBkZXN0cm95KCkge1xuICAgIHRoaXMuc3RvcCgpO1xuXG4gICAgdGhpcy4jZXZlbnRzLmRlc3Ryb3koKTtcblxuICAgIHRoaXMuY29udGFpbmVyLnN0eWxlLndpZHRoID0gJyc7XG4gICAgdGhpcy5jb250YWluZXIuc3R5bGUuaGVpZ2h0ID0gJyc7XG4gICAgdGhpcy5jb250YWluZXIuc3R5bGUuYmFja2dyb3VuZEltYWdlID0gJyc7XG4gICAgdGhpcy5jb250YWluZXIuc3R5bGUuYmFja2dyb3VuZFBvc2l0aW9uWCA9ICcnO1xuICAgIHRoaXMuY29udGFpbmVyLnN0eWxlLmJhY2tncm91bmRQb3NpdGlvblkgPSAnJztcbiAgICB0aGlzLmNvbnRhaW5lci5zdHlsZS5iYWNrZ3JvdW5kU2l6ZSA9ICcnO1xuXG4gICAgaWYgKHRoaXMuaXNSZXNwb25zaXZlKSB7XG4gICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgdGhpcy5fd2luZG93UmVzaXplTGlzdGVuZXIpO1xuICAgIH1cbiAgfVxuXG4gIF9sb29wKHJldmVyc2VkKSB7XG4gICAgcmV2ZXJzZWQgPyB0aGlzLnByZXYoKSA6IHRoaXMubmV4dCgpO1xuXG4gICAgdGhpcy4jbG9vcFRpbWVvdXRJZCA9IGdsb2JhbC5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuX2xvb3AocmV2ZXJzZWQpO1xuICAgIH0sIHRoaXMuI29wdGlvbnMuc3BlZWQpO1xuICB9XG5cbiAgX3VwZGF0ZSAoKSB7XG4gICAgaWYgKHRoaXMuc3ByaXRlKSB7XG4gICAgICB0aGlzLmNvbnRhaW5lci5zdHlsZS5iYWNrZ3JvdW5kUG9zaXRpb25YID0gLSh0aGlzLiNpbmRleCAlIHRoaXMuI29wdGlvbnMucGVyUm93KSAqIHRoaXMuY29udGFpbmVyV2lkdGggKyAncHgnO1xuICAgICAgdGhpcy5jb250YWluZXIuc3R5bGUuYmFja2dyb3VuZFBvc2l0aW9uWSA9IC1NYXRoLmZsb29yKHRoaXMuI2luZGV4IC8gdGhpcy4jb3B0aW9ucy5wZXJSb3cpICogdGhpcy5jb250YWluZXJIZWlnaHQgKyAncHgnO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmNvbnRhaW5lci5zdHlsZS5iYWNrZ3JvdW5kSW1hZ2UgPSBgdXJsKFwiJHt0aGlzLiNvcHRpb25zLmltYWdlW3RoaXMuI2luZGV4XX1cIilgO1xuICAgIH1cbiAgfVxuXG4gIF93aW5kb3dSZXNpemVMaXN0ZW5lcigpIHtcbiAgICB0aGlzLmNvbnRhaW5lci5zdHlsZS5oZWlnaHQgPSB0aGlzLmNvbnRhaW5lckhlaWdodCArICdweCc7XG4gICAgdGhpcy5fdXBkYXRlKCk7XG4gIH1cblxuICBfaW5pdENvbnRhaW5lcigpIHtcbiAgICBpZiAoIXRoaXMuaXNSZXNwb25zaXZlKSB7XG4gICAgICB0aGlzLmNvbnRhaW5lci5zdHlsZS53aWR0aCA9IHRoaXMuY29udGFpbmVyV2lkdGggKyAncHgnO1xuICAgIH1cbiAgICB0aGlzLmNvbnRhaW5lci5zdHlsZS5oZWlnaHQgPSB0aGlzLmNvbnRhaW5lckhlaWdodCArICdweCc7XG5cbiAgICBpZiAodGhpcy5zcHJpdGUpIHtcbiAgICAgIHRoaXMuY29udGFpbmVyLnN0eWxlLmJhY2tncm91bmRJbWFnZSA9IGB1cmwoXCIke3RoaXMuI29wdGlvbnMuaW1hZ2V9XCIpYDtcblxuICAgICAgY29uc3QgY29scyA9IHRoaXMuI29wdGlvbnMucGVyUm93O1xuICAgICAgY29uc3Qgcm93cyA9IE1hdGguY2VpbCh0aGlzLiNvcHRpb25zLmNvdW50IC8gdGhpcy4jb3B0aW9ucy5wZXJSb3cpO1xuICAgICAgdGhpcy5jb250YWluZXIuc3R5bGUuYmFja2dyb3VuZFNpemUgPSAoY29scyAqIDEwMCkgKyAnJSAnICsgKHJvd3MgKiAxMDApICsgJyUnO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmlzUmVzcG9uc2l2ZSkge1xuICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHRoaXMuX3dpbmRvd1Jlc2l6ZUxpc3RlbmVyKTtcbiAgICB9XG5cbiAgICB0aGlzLl91cGRhdGUoKTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBUaHJlZVNpeHR5O1xuIl19