@fonixtree/magic-design 1.0.151 → 1.0.152

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.
@@ -42,6 +42,8 @@ function ProductCardModal(_a) {
42
42
  loading = _e[0],
43
43
  setLoading = _e[1];
44
44
 
45
+ var flag = true;
46
+
45
47
  var handleNext = function handleNext(e) {
46
48
  e.stopPropagation();
47
49
  setActive(function (prev) {
@@ -64,13 +66,51 @@ function ProductCardModal(_a) {
64
66
  return Math.floor(Math.random() * 21) - 10;
65
67
  };
66
68
 
69
+ var handleScroll = function handleScroll(e) {
70
+ if (flag) {
71
+ flag = false; // 统一处理 delta 值
72
+
73
+ var delta = 0;
74
+
75
+ if (e.deltaY) {
76
+ delta = e.deltaY; // 现代浏览器
77
+ } else if (e.wheelDelta) {
78
+ delta = -e.wheelDelta / 40; // 旧版浏览器,调整方向和数值
79
+ } // 判断方向
80
+
81
+
82
+ if (delta > 0) {
83
+ console.log('向下滚动..');
84
+ handleNext(e);
85
+ } else if (delta < 0) {
86
+ console.log('向上滚动');
87
+ handlePrev(e);
88
+ } // 阻止默认滚动行为(如需要)
89
+
90
+
91
+ e.preventDefault();
92
+ var scrollTimeout_1 = setTimeout(function () {
93
+ flag = true;
94
+ clearTimeout(scrollTimeout_1);
95
+ }, 2000);
96
+ }
97
+ };
98
+
67
99
  (0, _react.useEffect)(function () {
68
100
  if (autoplay) {
69
101
  var interval_1 = setInterval(handleNext, 5000);
70
102
  return function () {
71
103
  return clearInterval(interval_1);
72
104
  };
73
- }
105
+ } // 监听滚轮事件(推荐:现代浏览器)
106
+
107
+
108
+ document.addEventListener('wheel', handleScroll); // 兼容旧版浏览器(如 IE/旧 WebKit)
109
+ // document.addEventListener('mousewheel', handleScroll);
110
+
111
+ return function () {
112
+ document.removeEventListener('wheel', handleScroll); // document.removeEventListener('mousewheel', handleScroll);
113
+ };
74
114
  }, [autoplay]);
75
115
  return /*#__PURE__*/_react["default"].createElement("div", {
76
116
  className: "productCardModalWrap",
@@ -81,15 +81,13 @@ function (_super) {
81
81
  }
82
82
  }, rest), /*#__PURE__*/_react["default"].createElement(_VideoItem["default"], {
83
83
  data: data
84
- }), data.groupName.open && /*#__PURE__*/_react["default"].createElement("div", {
85
- className: "text-perch"
86
- }, /*#__PURE__*/_react["default"].createElement(_components.MetaText, {
87
- className: "canvas-ignore",
84
+ }), data.groupName.open && /*#__PURE__*/_react["default"].createElement(_components.MetaText, {
85
+ className: "text",
88
86
  data: data.groupName,
89
87
  style: {
90
88
  pointerEvents: (0, _coreUtil.isDesignMode)() ? 'unset' : 'none'
91
89
  }
92
- }))));
90
+ })));
93
91
  };
94
92
 
95
93
  CardItem.defaultProps = {
@@ -1,10 +1,7 @@
1
1
  .slide-image-card-item-wrap {
2
2
  cursor: pointer;
3
3
 
4
- .video-wrap {}
5
-
6
- .text-perch {
4
+ .text {
7
5
  margin-top: 20px;
8
- height: 30px;
9
6
  }
10
7
  }
@@ -169,25 +169,24 @@ function (_super) {
169
169
  };
170
170
 
171
171
  VideoItem.prototype.render = function () {
172
- var _a, _b;
172
+ var _a;
173
173
 
174
- var _c, _d, _e, _f, _g, _h, _j;
174
+ var _b, _c, _d, _e, _f;
175
175
 
176
176
  var data = this.props.data;
177
- var _k = this.state,
178
- playing = _k.playing,
179
- inside = _k.inside,
180
- isNearCenter = _k.isNearCenter,
181
- flag = _k.flag,
182
- corner = _k.corner;
177
+ var _g = this.state,
178
+ playing = _g.playing,
179
+ inside = _g.inside,
180
+ isNearCenter = _g.isNearCenter,
181
+ flag = _g.flag,
182
+ corner = _g.corner;
183
183
  return /*#__PURE__*/_react["default"].createElement("div", {
184
184
  ref: this.cardRef,
185
185
  className: (0, _classnames["default"])('slide-image-video-wrap', (_a = {}, _a[corner] = inside && !isNearCenter && !flag, _a)),
186
186
  onMouseEnter: this.onMouseEnter,
187
187
  onMouseLeave: this.onMouseLeave
188
- }, ((_c = data.video) === null || _c === void 0 ? void 0 : _c.sourceUrl) && /*#__PURE__*/_react["default"].createElement("video", {
188
+ }, ((_b = data.video) === null || _b === void 0 ? void 0 : _b.sourceUrl) && /*#__PURE__*/_react["default"].createElement("video", {
189
189
  ref: this.videoRef,
190
- className: "canvas-ignore",
191
190
  loop: true,
192
191
  muted: true,
193
192
  playsinline: true,
@@ -195,15 +194,14 @@ function (_super) {
195
194
  visibility: playing ? 'visible' : 'hidden'
196
195
  }
197
196
  }, /*#__PURE__*/_react["default"].createElement("source", {
198
- src: (_d = data.video) === null || _d === void 0 ? void 0 : _d.sourceUrl,
197
+ src: (_c = data.video) === null || _c === void 0 ? void 0 : _c.sourceUrl,
199
198
  type: "video/mp4"
200
- })), ((_e = data.overilay) === null || _e === void 0 ? void 0 : _e.open) && /*#__PURE__*/_react["default"].createElement("img", {
199
+ })), ((_d = data.overilay) === null || _d === void 0 ? void 0 : _d.open) && /*#__PURE__*/_react["default"].createElement("img", {
201
200
  alt: "",
202
- className: (0, _classnames["default"])('video-img', (_b = {}, _b['canvas-ignore'] = (_f = data.video) === null || _f === void 0 ? void 0 : _f.sourceUrl, _b)),
203
- src: (_h = (_g = data.overilay) === null || _g === void 0 ? void 0 : _g.content) === null || _h === void 0 ? void 0 : _h.pcImgSrc,
201
+ className: "video-img",
202
+ src: (_f = (_e = data.overilay) === null || _e === void 0 ? void 0 : _e.content) === null || _f === void 0 ? void 0 : _f.pcImgSrc,
204
203
  style: {
205
- visibility: playing ? 'hidden' : 'visible',
206
- zIndex: ((_j = data.video) === null || _j === void 0 ? void 0 : _j.sourceUrl) ? 3 : 0
204
+ visibility: playing ? 'hidden' : 'visible'
207
205
  }
208
206
  }));
209
207
  };
@@ -80,7 +80,5 @@
80
80
 
81
81
  .video-img {
82
82
  width: 100%;
83
- position: relative;
84
- z-index: 0;
85
83
  }
86
84
  }
@@ -9,8 +9,6 @@ var _react = _interopRequireDefault(require("react"));
9
9
 
10
10
  require("./index.less");
11
11
 
12
- var _html2canvas = _interopRequireDefault(require("html2canvas"));
13
-
14
12
  var _ParallaxScroll = _interopRequireDefault(require("./components/ParallaxScroll"));
15
13
 
16
14
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
@@ -41,169 +39,6 @@ var __extends = void 0 && (void 0).__extends || function () {
41
39
  };
42
40
  }();
43
41
 
44
- var __awaiter = void 0 && (void 0).__awaiter || function (thisArg, _arguments, P, generator) {
45
- function adopt(value) {
46
- return value instanceof P ? value : new P(function (resolve) {
47
- resolve(value);
48
- });
49
- }
50
-
51
- return new (P || (P = Promise))(function (resolve, reject) {
52
- function fulfilled(value) {
53
- try {
54
- step(generator.next(value));
55
- } catch (e) {
56
- reject(e);
57
- }
58
- }
59
-
60
- function rejected(value) {
61
- try {
62
- step(generator["throw"](value));
63
- } catch (e) {
64
- reject(e);
65
- }
66
- }
67
-
68
- function step(result) {
69
- result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);
70
- }
71
-
72
- step((generator = generator.apply(thisArg, _arguments || [])).next());
73
- });
74
- };
75
-
76
- var __generator = void 0 && (void 0).__generator || function (thisArg, body) {
77
- var _ = {
78
- label: 0,
79
- sent: function sent() {
80
- if (t[0] & 1) throw t[1];
81
- return t[1];
82
- },
83
- trys: [],
84
- ops: []
85
- },
86
- f,
87
- y,
88
- t,
89
- g;
90
- return g = {
91
- next: verb(0),
92
- "throw": verb(1),
93
- "return": verb(2)
94
- }, typeof Symbol === "function" && (g[Symbol.iterator] = function () {
95
- return this;
96
- }), g;
97
-
98
- function verb(n) {
99
- return function (v) {
100
- return step([n, v]);
101
- };
102
- }
103
-
104
- function step(op) {
105
- if (f) throw new TypeError("Generator is already executing.");
106
-
107
- while (_) {
108
- try {
109
- if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
110
- if (y = 0, t) op = [op[0] & 2, t.value];
111
-
112
- switch (op[0]) {
113
- case 0:
114
- case 1:
115
- t = op;
116
- break;
117
-
118
- case 4:
119
- _.label++;
120
- return {
121
- value: op[1],
122
- done: false
123
- };
124
-
125
- case 5:
126
- _.label++;
127
- y = op[1];
128
- op = [0];
129
- continue;
130
-
131
- case 7:
132
- op = _.ops.pop();
133
-
134
- _.trys.pop();
135
-
136
- continue;
137
-
138
- default:
139
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
140
- _ = 0;
141
- continue;
142
- }
143
-
144
- if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {
145
- _.label = op[1];
146
- break;
147
- }
148
-
149
- if (op[0] === 6 && _.label < t[1]) {
150
- _.label = t[1];
151
- t = op;
152
- break;
153
- }
154
-
155
- if (t && _.label < t[2]) {
156
- _.label = t[2];
157
-
158
- _.ops.push(op);
159
-
160
- break;
161
- }
162
-
163
- if (t[2]) _.ops.pop();
164
-
165
- _.trys.pop();
166
-
167
- continue;
168
- }
169
-
170
- op = body.call(thisArg, _);
171
- } catch (e) {
172
- op = [6, e];
173
- y = 0;
174
- } finally {
175
- f = t = 0;
176
- }
177
- }
178
-
179
- if (op[0] & 5) throw op[1];
180
- return {
181
- value: op[0] ? op[1] : void 0,
182
- done: true
183
- };
184
- }
185
- };
186
-
187
- var __spreadArrays = void 0 && (void 0).__spreadArrays || function () {
188
- for (var s = 0, i = 0, il = arguments.length; i < il; i++) {
189
- s += arguments[i].length;
190
- }
191
-
192
- for (var r = Array(s), k = 0, i = 0; i < il; i++) {
193
- for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++) {
194
- r[k] = a[j];
195
- }
196
- }
197
-
198
- return r;
199
- };
200
- /* eslint-disable no-restricted-syntax */
201
-
202
- /* eslint-disable no-plusplus */
203
-
204
-
205
- var maxRipples = 10;
206
-
207
42
  var SlideImagePc =
208
43
  /** @class */
209
44
  function (_super) {
@@ -212,239 +47,10 @@ function (_super) {
212
47
  function SlideImagePc() {
213
48
  var _this = _super !== null && _super.apply(this, arguments) || this;
214
49
 
215
- _this.state = {
216
- ripples: []
217
- };
218
- _this.canvasRef = /*#__PURE__*/_react["default"].createRef();
219
- _this.divRef = /*#__PURE__*/_react["default"].createRef();
220
- _this.parentRef = /*#__PURE__*/_react["default"].createRef();
221
- _this.canvas = null;
222
- _this.ctx = null;
223
- _this.width = 0;
224
- _this.height = 0;
225
- _this.requestId = null;
226
-
227
- _this.resizeCanvas = function () {
228
- return __awaiter(_this, void 0, void 0, function () {
229
- var _a;
230
-
231
- var _this = this;
232
-
233
- return __generator(this, function (_b) {
234
- switch (_b.label) {
235
- case 0:
236
- _a = this;
237
- return [4
238
- /*yield*/
239
- , new Promise(function (resolve) {
240
- // const _canvas = html2canvas(this.divRef.current, { scale: 1 });
241
- (0, _html2canvas["default"])(_this.divRef.current, {
242
- ignoreElements: function ignoreElements(element) {
243
- return element.classList.contains('canvas-ignore');
244
- },
245
- scale: 1,
246
- logging: true
247
- }).then(function (canvas) {
248
- resolve(canvas);
249
- }); // resolve(_canvas);
250
- })];
251
-
252
- case 1:
253
- _a.canvas = _b.sent();
254
- this.width = this.canvas.width;
255
- this.height = this.canvas.height;
256
- this.canvasRef.current.width = this.width;
257
- this.canvasRef.current.height = this.height;
258
- this.ctx = this.canvasRef.current.getContext('2d'); // if (isImageLoaded) {
259
-
260
- this.ctx.drawImage(this.canvas, 0, 0);
261
- return [2
262
- /*return*/
263
- ];
264
- }
265
- });
266
- });
267
- }; // 创建水波纹
268
-
269
-
270
- _this.createRipple = function (x, y) {
271
- var ripples = _this.state.ripples;
272
-
273
- if (ripples.length >= maxRipples) {
274
- _this.setState(function (prevState) {
275
- return {
276
- ripples: prevState.ripples.slice(1)
277
- };
278
- });
279
- }
280
-
281
- var newRipple = {
282
- x: x,
283
- y: y,
284
- radius: 0,
285
- maxRadius: Math.max(_this.width, _this.height) * 0.3,
286
- amplitude: 30,
287
- phase: 0,
288
- phaseSpeed: 0.05,
289
- expand: 2
290
- };
291
-
292
- _this.setState(function (prevState) {
293
- return {
294
- ripples: __spreadArrays(prevState.ripples, [newRipple])
295
- };
296
- });
297
- }; // 绘制水波纹效果
298
-
299
-
300
- _this.drawRipples = function () {
301
- return __awaiter(_this, void 0, void 0, function () {
302
- var ripples, tempCanvas, tempCtx, imageData, pixels, distortedImageData, distortedPixels, y, x, offsetX, offsetY, _i, ripples_1, ripple, dx, dy, distance, impact, angle, sourceX, sourceY, targetIndex, sourceIndex, _loop_1, this_1, i;
303
-
304
- return __generator(this, function (_a) {
305
- ripples = this.state.ripples; // if (!isImageLoaded) {
306
- // requestAnimationFrame(this.drawRipples);
307
- // return;
308
- // }
309
-
310
- try {
311
- this.ctx.clearRect(0, 0, this.width, this.height); // 首先绘制原始图像
312
-
313
- this.ctx.drawImage(this.canvas, 0, 0);
314
- tempCanvas = document.createElement('canvas');
315
- tempCanvas.width = this.width;
316
- tempCanvas.height = this.height;
317
- tempCtx = tempCanvas.getContext('2d'); // 复制原始图像到临时canvas
318
-
319
- tempCtx.drawImage(this.canvas, 0, 0);
320
-
321
- try {
322
- imageData = tempCtx.getImageData(0, 0, this.width, this.height);
323
- pixels = imageData.data;
324
- distortedImageData = this.ctx.createImageData(this.width, this.height);
325
- distortedPixels = distortedImageData.data; // 应用水波纹变形
326
-
327
- for (y = 0; y < this.height; y++) {
328
- for (x = 0; x < this.width; x++) {
329
- offsetX = 0;
330
- offsetY = 0; // 计算每个波纹的影响
331
-
332
- for (_i = 0, ripples_1 = ripples; _i < ripples_1.length; _i++) {
333
- ripple = ripples_1[_i];
334
- dx = x - ripple.x;
335
- dy = y - ripple.y;
336
- distance = Math.sqrt(dx * dx + dy * dy);
337
-
338
- if (distance < ripple.radius) {
339
- impact = (1 - distance / ripple.radius) * Math.sin(distance / ripple.radius * Math.PI * 4 - ripple.phase) * ripple.amplitude;
340
- angle = Math.atan2(dy, dx);
341
- offsetX += Math.cos(angle) * impact;
342
- offsetY += Math.sin(angle) * impact;
343
- }
344
- }
345
-
346
- sourceX = Math.min(Math.max(Math.round(x + offsetX), 0), this.width - 1);
347
- sourceY = Math.min(Math.max(Math.round(y + offsetY), 0), this.height - 1);
348
- targetIndex = (y * this.width + x) * 4;
349
- sourceIndex = (sourceY * this.width + sourceX) * 4; // 复制像素
350
-
351
- distortedPixels[targetIndex] = pixels[sourceIndex]; // R
352
-
353
- distortedPixels[targetIndex + 1] = pixels[sourceIndex + 1]; // G
354
-
355
- distortedPixels[targetIndex + 2] = pixels[sourceIndex + 2]; // B
356
-
357
- distortedPixels[targetIndex + 3] = pixels[sourceIndex + 3]; // A
358
- }
359
- } // 将变形后的图像绘制到主canvas
360
-
361
-
362
- this.ctx.putImageData(distortedImageData, 0, 0);
363
- } catch (error) {
364
- console.error(error);
365
- }
366
-
367
- _loop_1 = function _loop_1(i) {
368
- var ripple = ripples[i];
369
- ripple.radius += ripple.expand;
370
- ripple.phase += ripple.phaseSpeed;
371
- ripple.amplitude *= 0.98; // 移除过大或过弱的波纹
372
-
373
- if (ripple.radius > ripple.maxRadius || ripple.amplitude < 0.1) {
374
- this_1.setState(function (prevState) {
375
- return {
376
- ripples: prevState.ripples.filter(function (_, index) {
377
- return index !== i;
378
- })
379
- };
380
- });
381
- }
382
- };
383
-
384
- this_1 = this; // 更新波纹状态
385
-
386
- for (i = ripples.length - 1; i >= 0; i--) {
387
- _loop_1(i);
388
- }
389
- } catch (error) {
390
- console.error(error);
391
- }
392
-
393
- this.requestId = requestAnimationFrame(this.drawRipples);
394
- return [2
395
- /*return*/
396
- ];
397
- });
398
- });
399
- };
400
-
401
- _this.handleMouseMove = function (e) {
402
- var rect = _this.canvasRef.current.getBoundingClientRect();
403
-
404
- var x = e.clientX - rect.left;
405
- var y = e.clientY - rect.top; // 限制创建波纹的频率
406
- // if (Math.random() > 0.85) {
407
-
408
- _this.createRipple(x, y); // }
409
-
410
- };
411
-
412
- _this.initAnim = function () {
413
- return __awaiter(_this, void 0, void 0, function () {
414
- return __generator(this, function (_a) {
415
- switch (_a.label) {
416
- case 0:
417
- return [4
418
- /*yield*/
419
- , this.resizeCanvas()];
420
-
421
- case 1:
422
- _a.sent();
423
-
424
- this.drawRipples();
425
- return [2
426
- /*return*/
427
- ];
428
- }
429
- });
430
- });
431
- };
432
-
50
+ _this.state = {};
433
51
  return _this;
434
52
  }
435
53
 
436
- SlideImagePc.prototype.componentDidMount = function () {
437
- this.initAnim();
438
- this.parentRef.current.addEventListener('mousemove', this.handleMouseMove);
439
- window.addEventListener('resize', this.resizeCanvas);
440
- };
441
-
442
- SlideImagePc.prototype.componentWillUnmount = function () {
443
- this.parentRef.current.removeEventListener('mousemove', this.handleMouseMove);
444
- window.removeEventListener('resize', this.resizeCanvas);
445
- cancelAnimationFrame(this.requestId);
446
- };
447
-
448
54
  SlideImagePc.prototype.render = function () {
449
55
  var _a = this.props.panelProps,
450
56
  spacing = _a.spacing,
@@ -452,17 +58,11 @@ function (_super) {
452
58
  var columnSpace = spacing.pc.columnSpace;
453
59
  var lineSpace = spacing.pc.lineSpace;
454
60
  return /*#__PURE__*/_react["default"].createElement("div", {
455
- ref: this.parentRef,
456
61
  className: "m-slide-image-pc"
457
- }, /*#__PURE__*/_react["default"].createElement("div", {
458
- ref: this.divRef,
459
- className: "content"
460
62
  }, /*#__PURE__*/_react["default"].createElement(_ParallaxScroll["default"], {
461
63
  source: groupSource,
462
64
  xGap: columnSpace,
463
65
  yGap: lineSpace
464
- })), /*#__PURE__*/_react["default"].createElement("canvas", {
465
- ref: this.canvasRef
466
66
  }));
467
67
  };
468
68
 
@@ -1,12 +1 @@
1
- .m-slide-image-pc {
2
- canvas {
3
- position: absolute;
4
- z-index: 1;
5
- top: 0;
6
- left: 0;
7
- width: 100%;
8
- height: 100%;
9
- cursor: pointer;
10
- pointer-events: none;
11
- }
12
- }
1
+ .m-slide-image-pc {}
@@ -42,6 +42,8 @@ function ProductCardModal(_a) {
42
42
  loading = _e[0],
43
43
  setLoading = _e[1];
44
44
 
45
+ var flag = true;
46
+
45
47
  var handleNext = function handleNext(e) {
46
48
  e.stopPropagation();
47
49
  setActive(function (prev) {
@@ -64,13 +66,51 @@ function ProductCardModal(_a) {
64
66
  return Math.floor(Math.random() * 21) - 10;
65
67
  };
66
68
 
69
+ var handleScroll = function handleScroll(e) {
70
+ if (flag) {
71
+ flag = false; // 统一处理 delta 值
72
+
73
+ var delta = 0;
74
+
75
+ if (e.deltaY) {
76
+ delta = e.deltaY; // 现代浏览器
77
+ } else if (e.wheelDelta) {
78
+ delta = -e.wheelDelta / 40; // 旧版浏览器,调整方向和数值
79
+ } // 判断方向
80
+
81
+
82
+ if (delta > 0) {
83
+ console.log('向下滚动..');
84
+ handleNext(e);
85
+ } else if (delta < 0) {
86
+ console.log('向上滚动');
87
+ handlePrev(e);
88
+ } // 阻止默认滚动行为(如需要)
89
+
90
+
91
+ e.preventDefault();
92
+ var scrollTimeout_1 = setTimeout(function () {
93
+ flag = true;
94
+ clearTimeout(scrollTimeout_1);
95
+ }, 2000);
96
+ }
97
+ };
98
+
67
99
  (0, _react.useEffect)(function () {
68
100
  if (autoplay) {
69
101
  var interval_1 = setInterval(handleNext, 5000);
70
102
  return function () {
71
103
  return clearInterval(interval_1);
72
104
  };
73
- }
105
+ } // 监听滚轮事件(推荐:现代浏览器)
106
+
107
+
108
+ document.addEventListener('wheel', handleScroll); // 兼容旧版浏览器(如 IE/旧 WebKit)
109
+ // document.addEventListener('mousewheel', handleScroll);
110
+
111
+ return function () {
112
+ document.removeEventListener('wheel', handleScroll); // document.removeEventListener('mousewheel', handleScroll);
113
+ };
74
114
  }, [autoplay]);
75
115
  return /*#__PURE__*/_react["default"].createElement("div", {
76
116
  className: "productCardModalWrap",
@@ -81,15 +81,13 @@ function (_super) {
81
81
  }
82
82
  }, rest), /*#__PURE__*/_react["default"].createElement(_VideoItem["default"], {
83
83
  data: data
84
- }), data.groupName.open && /*#__PURE__*/_react["default"].createElement("div", {
85
- className: "text-perch"
86
- }, /*#__PURE__*/_react["default"].createElement(_components.MetaText, {
87
- className: "canvas-ignore",
84
+ }), data.groupName.open && /*#__PURE__*/_react["default"].createElement(_components.MetaText, {
85
+ className: "text",
88
86
  data: data.groupName,
89
87
  style: {
90
88
  pointerEvents: (0, _coreUtil.isDesignMode)() ? 'unset' : 'none'
91
89
  }
92
- }))));
90
+ })));
93
91
  };
94
92
 
95
93
  CardItem.defaultProps = {
@@ -1,10 +1,7 @@
1
1
  .slide-image-card-item-wrap {
2
2
  cursor: pointer;
3
3
 
4
- .video-wrap {}
5
-
6
- .text-perch {
4
+ .text {
7
5
  margin-top: 20px;
8
- height: 30px;
9
6
  }
10
7
  }
@@ -169,25 +169,24 @@ function (_super) {
169
169
  };
170
170
 
171
171
  VideoItem.prototype.render = function () {
172
- var _a, _b;
172
+ var _a;
173
173
 
174
- var _c, _d, _e, _f, _g, _h, _j;
174
+ var _b, _c, _d, _e, _f;
175
175
 
176
176
  var data = this.props.data;
177
- var _k = this.state,
178
- playing = _k.playing,
179
- inside = _k.inside,
180
- isNearCenter = _k.isNearCenter,
181
- flag = _k.flag,
182
- corner = _k.corner;
177
+ var _g = this.state,
178
+ playing = _g.playing,
179
+ inside = _g.inside,
180
+ isNearCenter = _g.isNearCenter,
181
+ flag = _g.flag,
182
+ corner = _g.corner;
183
183
  return /*#__PURE__*/_react["default"].createElement("div", {
184
184
  ref: this.cardRef,
185
185
  className: (0, _classnames["default"])('slide-image-video-wrap', (_a = {}, _a[corner] = inside && !isNearCenter && !flag, _a)),
186
186
  onMouseEnter: this.onMouseEnter,
187
187
  onMouseLeave: this.onMouseLeave
188
- }, ((_c = data.video) === null || _c === void 0 ? void 0 : _c.sourceUrl) && /*#__PURE__*/_react["default"].createElement("video", {
188
+ }, ((_b = data.video) === null || _b === void 0 ? void 0 : _b.sourceUrl) && /*#__PURE__*/_react["default"].createElement("video", {
189
189
  ref: this.videoRef,
190
- className: "canvas-ignore",
191
190
  loop: true,
192
191
  muted: true,
193
192
  playsinline: true,
@@ -195,15 +194,14 @@ function (_super) {
195
194
  visibility: playing ? 'visible' : 'hidden'
196
195
  }
197
196
  }, /*#__PURE__*/_react["default"].createElement("source", {
198
- src: (_d = data.video) === null || _d === void 0 ? void 0 : _d.sourceUrl,
197
+ src: (_c = data.video) === null || _c === void 0 ? void 0 : _c.sourceUrl,
199
198
  type: "video/mp4"
200
- })), ((_e = data.overilay) === null || _e === void 0 ? void 0 : _e.open) && /*#__PURE__*/_react["default"].createElement("img", {
199
+ })), ((_d = data.overilay) === null || _d === void 0 ? void 0 : _d.open) && /*#__PURE__*/_react["default"].createElement("img", {
201
200
  alt: "",
202
- className: (0, _classnames["default"])('video-img', (_b = {}, _b['canvas-ignore'] = (_f = data.video) === null || _f === void 0 ? void 0 : _f.sourceUrl, _b)),
203
- src: (_h = (_g = data.overilay) === null || _g === void 0 ? void 0 : _g.content) === null || _h === void 0 ? void 0 : _h.pcImgSrc,
201
+ className: "video-img",
202
+ src: (_f = (_e = data.overilay) === null || _e === void 0 ? void 0 : _e.content) === null || _f === void 0 ? void 0 : _f.pcImgSrc,
204
203
  style: {
205
- visibility: playing ? 'hidden' : 'visible',
206
- zIndex: ((_j = data.video) === null || _j === void 0 ? void 0 : _j.sourceUrl) ? 3 : 0
204
+ visibility: playing ? 'hidden' : 'visible'
207
205
  }
208
206
  }));
209
207
  };
@@ -80,7 +80,5 @@
80
80
 
81
81
  .video-img {
82
82
  width: 100%;
83
- position: relative;
84
- z-index: 0;
85
83
  }
86
84
  }
@@ -9,8 +9,6 @@ var _react = _interopRequireDefault(require("react"));
9
9
 
10
10
  require("./index.less");
11
11
 
12
- var _html2canvas = _interopRequireDefault(require("html2canvas"));
13
-
14
12
  var _ParallaxScroll = _interopRequireDefault(require("./components/ParallaxScroll"));
15
13
 
16
14
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
@@ -41,169 +39,6 @@ var __extends = void 0 && (void 0).__extends || function () {
41
39
  };
42
40
  }();
43
41
 
44
- var __awaiter = void 0 && (void 0).__awaiter || function (thisArg, _arguments, P, generator) {
45
- function adopt(value) {
46
- return value instanceof P ? value : new P(function (resolve) {
47
- resolve(value);
48
- });
49
- }
50
-
51
- return new (P || (P = Promise))(function (resolve, reject) {
52
- function fulfilled(value) {
53
- try {
54
- step(generator.next(value));
55
- } catch (e) {
56
- reject(e);
57
- }
58
- }
59
-
60
- function rejected(value) {
61
- try {
62
- step(generator["throw"](value));
63
- } catch (e) {
64
- reject(e);
65
- }
66
- }
67
-
68
- function step(result) {
69
- result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);
70
- }
71
-
72
- step((generator = generator.apply(thisArg, _arguments || [])).next());
73
- });
74
- };
75
-
76
- var __generator = void 0 && (void 0).__generator || function (thisArg, body) {
77
- var _ = {
78
- label: 0,
79
- sent: function sent() {
80
- if (t[0] & 1) throw t[1];
81
- return t[1];
82
- },
83
- trys: [],
84
- ops: []
85
- },
86
- f,
87
- y,
88
- t,
89
- g;
90
- return g = {
91
- next: verb(0),
92
- "throw": verb(1),
93
- "return": verb(2)
94
- }, typeof Symbol === "function" && (g[Symbol.iterator] = function () {
95
- return this;
96
- }), g;
97
-
98
- function verb(n) {
99
- return function (v) {
100
- return step([n, v]);
101
- };
102
- }
103
-
104
- function step(op) {
105
- if (f) throw new TypeError("Generator is already executing.");
106
-
107
- while (_) {
108
- try {
109
- if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
110
- if (y = 0, t) op = [op[0] & 2, t.value];
111
-
112
- switch (op[0]) {
113
- case 0:
114
- case 1:
115
- t = op;
116
- break;
117
-
118
- case 4:
119
- _.label++;
120
- return {
121
- value: op[1],
122
- done: false
123
- };
124
-
125
- case 5:
126
- _.label++;
127
- y = op[1];
128
- op = [0];
129
- continue;
130
-
131
- case 7:
132
- op = _.ops.pop();
133
-
134
- _.trys.pop();
135
-
136
- continue;
137
-
138
- default:
139
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
140
- _ = 0;
141
- continue;
142
- }
143
-
144
- if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {
145
- _.label = op[1];
146
- break;
147
- }
148
-
149
- if (op[0] === 6 && _.label < t[1]) {
150
- _.label = t[1];
151
- t = op;
152
- break;
153
- }
154
-
155
- if (t && _.label < t[2]) {
156
- _.label = t[2];
157
-
158
- _.ops.push(op);
159
-
160
- break;
161
- }
162
-
163
- if (t[2]) _.ops.pop();
164
-
165
- _.trys.pop();
166
-
167
- continue;
168
- }
169
-
170
- op = body.call(thisArg, _);
171
- } catch (e) {
172
- op = [6, e];
173
- y = 0;
174
- } finally {
175
- f = t = 0;
176
- }
177
- }
178
-
179
- if (op[0] & 5) throw op[1];
180
- return {
181
- value: op[0] ? op[1] : void 0,
182
- done: true
183
- };
184
- }
185
- };
186
-
187
- var __spreadArrays = void 0 && (void 0).__spreadArrays || function () {
188
- for (var s = 0, i = 0, il = arguments.length; i < il; i++) {
189
- s += arguments[i].length;
190
- }
191
-
192
- for (var r = Array(s), k = 0, i = 0; i < il; i++) {
193
- for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++) {
194
- r[k] = a[j];
195
- }
196
- }
197
-
198
- return r;
199
- };
200
- /* eslint-disable no-restricted-syntax */
201
-
202
- /* eslint-disable no-plusplus */
203
-
204
-
205
- var maxRipples = 10;
206
-
207
42
  var SlideImagePc =
208
43
  /** @class */
209
44
  function (_super) {
@@ -212,239 +47,10 @@ function (_super) {
212
47
  function SlideImagePc() {
213
48
  var _this = _super !== null && _super.apply(this, arguments) || this;
214
49
 
215
- _this.state = {
216
- ripples: []
217
- };
218
- _this.canvasRef = /*#__PURE__*/_react["default"].createRef();
219
- _this.divRef = /*#__PURE__*/_react["default"].createRef();
220
- _this.parentRef = /*#__PURE__*/_react["default"].createRef();
221
- _this.canvas = null;
222
- _this.ctx = null;
223
- _this.width = 0;
224
- _this.height = 0;
225
- _this.requestId = null;
226
-
227
- _this.resizeCanvas = function () {
228
- return __awaiter(_this, void 0, void 0, function () {
229
- var _a;
230
-
231
- var _this = this;
232
-
233
- return __generator(this, function (_b) {
234
- switch (_b.label) {
235
- case 0:
236
- _a = this;
237
- return [4
238
- /*yield*/
239
- , new Promise(function (resolve) {
240
- // const _canvas = html2canvas(this.divRef.current, { scale: 1 });
241
- (0, _html2canvas["default"])(_this.divRef.current, {
242
- ignoreElements: function ignoreElements(element) {
243
- return element.classList.contains('canvas-ignore');
244
- },
245
- scale: 1,
246
- logging: true
247
- }).then(function (canvas) {
248
- resolve(canvas);
249
- }); // resolve(_canvas);
250
- })];
251
-
252
- case 1:
253
- _a.canvas = _b.sent();
254
- this.width = this.canvas.width;
255
- this.height = this.canvas.height;
256
- this.canvasRef.current.width = this.width;
257
- this.canvasRef.current.height = this.height;
258
- this.ctx = this.canvasRef.current.getContext('2d'); // if (isImageLoaded) {
259
-
260
- this.ctx.drawImage(this.canvas, 0, 0);
261
- return [2
262
- /*return*/
263
- ];
264
- }
265
- });
266
- });
267
- }; // 创建水波纹
268
-
269
-
270
- _this.createRipple = function (x, y) {
271
- var ripples = _this.state.ripples;
272
-
273
- if (ripples.length >= maxRipples) {
274
- _this.setState(function (prevState) {
275
- return {
276
- ripples: prevState.ripples.slice(1)
277
- };
278
- });
279
- }
280
-
281
- var newRipple = {
282
- x: x,
283
- y: y,
284
- radius: 0,
285
- maxRadius: Math.max(_this.width, _this.height) * 0.3,
286
- amplitude: 30,
287
- phase: 0,
288
- phaseSpeed: 0.05,
289
- expand: 2
290
- };
291
-
292
- _this.setState(function (prevState) {
293
- return {
294
- ripples: __spreadArrays(prevState.ripples, [newRipple])
295
- };
296
- });
297
- }; // 绘制水波纹效果
298
-
299
-
300
- _this.drawRipples = function () {
301
- return __awaiter(_this, void 0, void 0, function () {
302
- var ripples, tempCanvas, tempCtx, imageData, pixels, distortedImageData, distortedPixels, y, x, offsetX, offsetY, _i, ripples_1, ripple, dx, dy, distance, impact, angle, sourceX, sourceY, targetIndex, sourceIndex, _loop_1, this_1, i;
303
-
304
- return __generator(this, function (_a) {
305
- ripples = this.state.ripples; // if (!isImageLoaded) {
306
- // requestAnimationFrame(this.drawRipples);
307
- // return;
308
- // }
309
-
310
- try {
311
- this.ctx.clearRect(0, 0, this.width, this.height); // 首先绘制原始图像
312
-
313
- this.ctx.drawImage(this.canvas, 0, 0);
314
- tempCanvas = document.createElement('canvas');
315
- tempCanvas.width = this.width;
316
- tempCanvas.height = this.height;
317
- tempCtx = tempCanvas.getContext('2d'); // 复制原始图像到临时canvas
318
-
319
- tempCtx.drawImage(this.canvas, 0, 0);
320
-
321
- try {
322
- imageData = tempCtx.getImageData(0, 0, this.width, this.height);
323
- pixels = imageData.data;
324
- distortedImageData = this.ctx.createImageData(this.width, this.height);
325
- distortedPixels = distortedImageData.data; // 应用水波纹变形
326
-
327
- for (y = 0; y < this.height; y++) {
328
- for (x = 0; x < this.width; x++) {
329
- offsetX = 0;
330
- offsetY = 0; // 计算每个波纹的影响
331
-
332
- for (_i = 0, ripples_1 = ripples; _i < ripples_1.length; _i++) {
333
- ripple = ripples_1[_i];
334
- dx = x - ripple.x;
335
- dy = y - ripple.y;
336
- distance = Math.sqrt(dx * dx + dy * dy);
337
-
338
- if (distance < ripple.radius) {
339
- impact = (1 - distance / ripple.radius) * Math.sin(distance / ripple.radius * Math.PI * 4 - ripple.phase) * ripple.amplitude;
340
- angle = Math.atan2(dy, dx);
341
- offsetX += Math.cos(angle) * impact;
342
- offsetY += Math.sin(angle) * impact;
343
- }
344
- }
345
-
346
- sourceX = Math.min(Math.max(Math.round(x + offsetX), 0), this.width - 1);
347
- sourceY = Math.min(Math.max(Math.round(y + offsetY), 0), this.height - 1);
348
- targetIndex = (y * this.width + x) * 4;
349
- sourceIndex = (sourceY * this.width + sourceX) * 4; // 复制像素
350
-
351
- distortedPixels[targetIndex] = pixels[sourceIndex]; // R
352
-
353
- distortedPixels[targetIndex + 1] = pixels[sourceIndex + 1]; // G
354
-
355
- distortedPixels[targetIndex + 2] = pixels[sourceIndex + 2]; // B
356
-
357
- distortedPixels[targetIndex + 3] = pixels[sourceIndex + 3]; // A
358
- }
359
- } // 将变形后的图像绘制到主canvas
360
-
361
-
362
- this.ctx.putImageData(distortedImageData, 0, 0);
363
- } catch (error) {
364
- console.error(error);
365
- }
366
-
367
- _loop_1 = function _loop_1(i) {
368
- var ripple = ripples[i];
369
- ripple.radius += ripple.expand;
370
- ripple.phase += ripple.phaseSpeed;
371
- ripple.amplitude *= 0.98; // 移除过大或过弱的波纹
372
-
373
- if (ripple.radius > ripple.maxRadius || ripple.amplitude < 0.1) {
374
- this_1.setState(function (prevState) {
375
- return {
376
- ripples: prevState.ripples.filter(function (_, index) {
377
- return index !== i;
378
- })
379
- };
380
- });
381
- }
382
- };
383
-
384
- this_1 = this; // 更新波纹状态
385
-
386
- for (i = ripples.length - 1; i >= 0; i--) {
387
- _loop_1(i);
388
- }
389
- } catch (error) {
390
- console.error(error);
391
- }
392
-
393
- this.requestId = requestAnimationFrame(this.drawRipples);
394
- return [2
395
- /*return*/
396
- ];
397
- });
398
- });
399
- };
400
-
401
- _this.handleMouseMove = function (e) {
402
- var rect = _this.canvasRef.current.getBoundingClientRect();
403
-
404
- var x = e.clientX - rect.left;
405
- var y = e.clientY - rect.top; // 限制创建波纹的频率
406
- // if (Math.random() > 0.85) {
407
-
408
- _this.createRipple(x, y); // }
409
-
410
- };
411
-
412
- _this.initAnim = function () {
413
- return __awaiter(_this, void 0, void 0, function () {
414
- return __generator(this, function (_a) {
415
- switch (_a.label) {
416
- case 0:
417
- return [4
418
- /*yield*/
419
- , this.resizeCanvas()];
420
-
421
- case 1:
422
- _a.sent();
423
-
424
- this.drawRipples();
425
- return [2
426
- /*return*/
427
- ];
428
- }
429
- });
430
- });
431
- };
432
-
50
+ _this.state = {};
433
51
  return _this;
434
52
  }
435
53
 
436
- SlideImagePc.prototype.componentDidMount = function () {
437
- this.initAnim();
438
- this.parentRef.current.addEventListener('mousemove', this.handleMouseMove);
439
- window.addEventListener('resize', this.resizeCanvas);
440
- };
441
-
442
- SlideImagePc.prototype.componentWillUnmount = function () {
443
- this.parentRef.current.removeEventListener('mousemove', this.handleMouseMove);
444
- window.removeEventListener('resize', this.resizeCanvas);
445
- cancelAnimationFrame(this.requestId);
446
- };
447
-
448
54
  SlideImagePc.prototype.render = function () {
449
55
  var _a = this.props.panelProps,
450
56
  spacing = _a.spacing,
@@ -452,17 +58,11 @@ function (_super) {
452
58
  var columnSpace = spacing.pc.columnSpace;
453
59
  var lineSpace = spacing.pc.lineSpace;
454
60
  return /*#__PURE__*/_react["default"].createElement("div", {
455
- ref: this.parentRef,
456
61
  className: "m-slide-image-pc"
457
- }, /*#__PURE__*/_react["default"].createElement("div", {
458
- ref: this.divRef,
459
- className: "content"
460
62
  }, /*#__PURE__*/_react["default"].createElement(_ParallaxScroll["default"], {
461
63
  source: groupSource,
462
64
  xGap: columnSpace,
463
65
  yGap: lineSpace
464
- })), /*#__PURE__*/_react["default"].createElement("canvas", {
465
- ref: this.canvasRef
466
66
  }));
467
67
  };
468
68
 
@@ -1,12 +1 @@
1
- .m-slide-image-pc {
2
- canvas {
3
- position: absolute;
4
- z-index: 1;
5
- top: 0;
6
- left: 0;
7
- width: 100%;
8
- height: 100%;
9
- cursor: pointer;
10
- pointer-events: none;
11
- }
12
- }
1
+ .m-slide-image-pc {}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@fonixtree/magic-design",
3
3
  "author": "Cylon Team",
4
- "version": "1.0.151",
4
+ "version": "1.0.152",
5
5
  "description": "Magic Design",
6
6
  "license": "MIT",
7
7
  "module": "es/index.js",