@fonixtree/magic-design 1.0.152 → 1.0.154

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 (23) hide show
  1. package/es/common/ProductCardModal/index.js +2 -1
  2. package/es/common/ProductCardModal/index.less +2 -0
  3. package/es/composite-comp/dito/components/SearchBanner/mobile/index.js +3 -1
  4. package/es/composite-comp/dito/components/SlideImage/pc/components/CardItem/index.js +2 -1
  5. package/es/composite-comp/dito/components/SlideImage/pc/components/CardItem/index.less +0 -2
  6. package/es/composite-comp/dito/components/SlideImage/pc/components/VideoItem/imgs/cursor.png +0 -0
  7. package/es/composite-comp/dito/components/SlideImage/pc/components/VideoItem/imgs/d.png +0 -0
  8. package/es/composite-comp/dito/components/SlideImage/pc/components/VideoItem/index.js +46 -93
  9. package/es/composite-comp/dito/components/SlideImage/pc/components/VideoItem/index.less +43 -62
  10. package/es/meta-comp/components/Text/index.js +6 -2
  11. package/es/meta-comp/components/Text/index.less +3 -0
  12. package/lib/common/ProductCardModal/index.js +2 -1
  13. package/lib/common/ProductCardModal/index.less +2 -0
  14. package/lib/composite-comp/dito/components/SearchBanner/mobile/index.js +3 -1
  15. package/lib/composite-comp/dito/components/SlideImage/pc/components/CardItem/index.js +2 -1
  16. package/lib/composite-comp/dito/components/SlideImage/pc/components/CardItem/index.less +0 -2
  17. package/lib/composite-comp/dito/components/SlideImage/pc/components/VideoItem/imgs/cursor.png +0 -0
  18. package/lib/composite-comp/dito/components/SlideImage/pc/components/VideoItem/imgs/d.png +0 -0
  19. package/lib/composite-comp/dito/components/SlideImage/pc/components/VideoItem/index.js +46 -93
  20. package/lib/composite-comp/dito/components/SlideImage/pc/components/VideoItem/index.less +43 -62
  21. package/lib/meta-comp/components/Text/index.js +6 -2
  22. package/lib/meta-comp/components/Text/index.less +3 -0
  23. package/package.json +1 -1
@@ -63,7 +63,8 @@ function ProductCardModal(_a) {
63
63
  };
64
64
 
65
65
  var randomRotateY = function randomRotateY() {
66
- return Math.floor(Math.random() * 21) - 10;
66
+ // return Math.floor(Math.random() * 21) - 10;
67
+ return Math.floor((index % 2 === 0 ? -index : index) * 0.1 * 21) - 10;
67
68
  };
68
69
 
69
70
  var handleScroll = function handleScroll(e) {
@@ -61,6 +61,7 @@
61
61
  top: 5%;
62
62
  right: 5%;
63
63
  cursor: pointer;
64
+ z-index: 3;
64
65
  }
65
66
 
66
67
  .dotIcon {
@@ -96,6 +97,7 @@
96
97
  position: absolute;
97
98
  bottom: 25%;
98
99
  left: 55%;
100
+ z-index: 3;
99
101
  cursor: pointer;
100
102
  }
101
103
  }
@@ -29,6 +29,8 @@ var _coreUtil = require("../../../../../utils/coreUtil");
29
29
 
30
30
  var _mobx = require("../../../../../mobx");
31
31
 
32
+ var _locale = require("../../../../../locale");
33
+
32
34
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
33
35
 
34
36
  var __extends = void 0 && (void 0).__extends || function () {
@@ -218,7 +220,7 @@ function (_super) {
218
220
  if (window.magicDesign.pushGA) {
219
221
  window.magicDesign.pushGA({}, 'select_promotion', {
220
222
  event_section: 'Search_Banner',
221
- promotion_name: item.image.content.h5ImgSrc ? item.image.content.h5Name : i18n('BANNER_GROUP_NAME')
223
+ promotion_name: item.image.content.h5ImgSrc ? item.image.content.h5Name : (0, _locale.i18n)('BANNER_GROUP_NAME')
222
224
  });
223
225
  }
224
226
  }
@@ -80,12 +80,13 @@ function (_super) {
80
80
  return (0, _coreUtil.clickUrl)(data.clickUrl || '');
81
81
  }
82
82
  }, rest), /*#__PURE__*/_react["default"].createElement(_VideoItem["default"], {
83
+ cursor: data.clickUrl || '',
83
84
  data: data
84
85
  }), data.groupName.open && /*#__PURE__*/_react["default"].createElement(_components.MetaText, {
85
86
  className: "text",
86
87
  data: data.groupName,
87
88
  style: {
88
- pointerEvents: (0, _coreUtil.isDesignMode)() ? 'unset' : 'none'
89
+ cursor: data.clickUrl ? 'pointer' : 'unset'
89
90
  }
90
91
  })));
91
92
  };
@@ -1,6 +1,4 @@
1
1
  .slide-image-card-item-wrap {
2
- cursor: pointer;
3
-
4
2
  .text {
5
3
  margin-top: 20px;
6
4
  }
@@ -11,8 +11,6 @@ var _classnames = _interopRequireDefault(require("classnames"));
11
11
 
12
12
  require("./index.less");
13
13
 
14
- var _lodash = _interopRequireDefault(require("lodash.throttle"));
15
-
16
14
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
17
15
 
18
16
  var __extends = void 0 && (void 0).__extends || function () {
@@ -51,13 +49,11 @@ function (_super) {
51
49
 
52
50
  _this.state = {
53
51
  playing: false,
54
- inside: false,
55
- isNearCenter: false,
56
- flag: false,
57
- corner: ''
52
+ videoPoster: ''
58
53
  };
59
54
  _this.videoRef = /*#__PURE__*/_react["default"].createRef();
60
55
  _this.cardRef = /*#__PURE__*/_react["default"].createRef();
56
+ _this.canvasRef = /*#__PURE__*/_react["default"].createRef();
61
57
 
62
58
  _this.onMouseEnter = function () {
63
59
  var _a;
@@ -81,85 +77,38 @@ function (_super) {
81
77
  _this.setState({
82
78
  playing: false
83
79
  });
84
- }; // 获取元素中心坐标
85
-
86
-
87
- _this.getCenter = function (element) {
88
- var rect = element.getBoundingClientRect();
89
- return {
90
- x: rect.left + rect.width / 2,
91
- y: rect.top + rect.height / 2
92
- };
93
- }; // 判断是否在中心区域
94
-
95
-
96
- _this.checkMouseNearCenter = function (e, radius) {
97
- if (radius === void 0) {
98
- radius = 20;
99
- }
100
-
101
- var center = _this.getCenter(e.target); // 计算鼠标与中心的距离
102
-
103
-
104
- var distance = Math.sqrt(Math.pow(e.clientX - center.x, 2) + Math.pow(e.clientY - center.y, 2));
105
- return distance <= radius;
106
- }; // 判断鼠标方位
107
-
108
-
109
- _this.getMousePos = function (e) {
110
- var rect = e.target.getBoundingClientRect();
111
- var x = e.clientX - rect.left; // 鼠标相对于元素的 X 坐标
112
-
113
- var y = e.clientY - rect.top; // 鼠标相对于元素的 Y 坐标
114
- // 判断区域
115
-
116
- var isLeft = x < rect.width / 2;
117
- var isTop = y < rect.height / 2;
118
- var corner = '';
119
- if (isLeft && isTop) corner = 'topLeft';else if (!isLeft && isTop) corner = 'topRight';else if (isLeft && !isTop) corner = 'bottomLeft';else corner = 'bottomRight';
120
- return corner;
121
- };
122
-
123
- _this.handleMouseMove = (0, _lodash["default"])(function (e) {
124
- var dom = _this.cardRef.current;
125
- var size = parseInt(getComputedStyle(dom).width);
126
- var x = size * 0.5 + e.offsetX * 0.5; // 提升灵敏度
127
-
128
- var y = size * 0.5 + e.offsetY * 0.5;
129
- dom.style.setProperty('--x', x);
130
- dom.style.setProperty('--y', y);
131
- dom.style.setProperty('--size', size);
132
-
133
- var isNear = _this.checkMouseNearCenter(e);
134
-
135
- var corner = _this.getMousePos(e);
136
-
137
- if (isNear) _this.setState({
138
- flag: true
139
- });
140
-
141
- _this.setState({
142
- isNearCenter: isNear,
143
- inside: true,
144
- corner: corner
145
- });
146
- });
147
-
148
- _this.handleMouseLeave = function () {
149
- _this.setState({
150
- inside: false,
151
- flag: false,
152
- corner: ''
153
- });
154
80
  };
155
81
 
156
82
  return _this;
157
83
  }
158
84
 
159
85
  VideoItem.prototype.componentDidMount = function () {
86
+ var _this = this;
87
+
160
88
  var dom = this.cardRef.current;
161
89
  dom.addEventListener('mousemove', this.handleMouseMove);
162
90
  dom.addEventListener('mouseleave', this.handleMouseLeave);
91
+
92
+ if (this.videoRef.current) {
93
+ var video_1 = this.videoRef.current;
94
+ var canvas_1 = this.canvasRef.current;
95
+ video_1.addEventListener('loadedmetadata', function () {
96
+ // 确保跳转到第一帧
97
+ video_1.currentTime = 0;
98
+ });
99
+ video_1.addEventListener('seeked', function () {
100
+ // 设置Canvas尺寸与视频一致
101
+ canvas_1.width = video_1.offsetWidth;
102
+ canvas_1.height = video_1.offsetHeight; // 绘制视频帧到Canvas
103
+
104
+ var ctx = canvas_1.getContext('2d');
105
+ ctx.drawImage(video_1, 0, 0, canvas_1.width, canvas_1.height); // 转换为缩略图
106
+
107
+ _this.setState({
108
+ videoPoster: canvas_1.toDataURL('image/png')
109
+ });
110
+ });
111
+ }
163
112
  };
164
113
 
165
114
  VideoItem.prototype.componentWillUnmount = function () {
@@ -169,23 +118,23 @@ function (_super) {
169
118
  };
170
119
 
171
120
  VideoItem.prototype.render = function () {
172
- var _a;
173
-
174
- var _b, _c, _d, _e, _f;
175
-
176
- var data = this.props.data;
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;
121
+ var _a, _b, _c, _d, _e, _f;
122
+
123
+ var _g = this.props,
124
+ data = _g.data,
125
+ cursor = _g.cursor;
126
+ var _h = this.state,
127
+ playing = _h.playing,
128
+ videoPoster = _h.videoPoster;
129
+ var img = ((_b = (_a = data.overilay) === null || _a === void 0 ? void 0 : _a.content) === null || _b === void 0 ? void 0 : _b.pcImgSrc) || videoPoster;
183
130
  return /*#__PURE__*/_react["default"].createElement("div", {
184
131
  ref: this.cardRef,
185
- className: (0, _classnames["default"])('slide-image-video-wrap', (_a = {}, _a[corner] = inside && !isNearCenter && !flag, _a)),
132
+ className: (0, _classnames["default"])('slide-image-video-wrap', {
133
+ cursor: cursor
134
+ }),
186
135
  onMouseEnter: this.onMouseEnter,
187
136
  onMouseLeave: this.onMouseLeave
188
- }, ((_b = data.video) === null || _b === void 0 ? void 0 : _b.sourceUrl) && /*#__PURE__*/_react["default"].createElement("video", {
137
+ }, ((_c = data.video) === null || _c === void 0 ? void 0 : _c.sourceUrl) && /*#__PURE__*/_react["default"].createElement("video", {
189
138
  ref: this.videoRef,
190
139
  loop: true,
191
140
  muted: true,
@@ -194,15 +143,19 @@ function (_super) {
194
143
  visibility: playing ? 'visible' : 'hidden'
195
144
  }
196
145
  }, /*#__PURE__*/_react["default"].createElement("source", {
197
- src: (_c = data.video) === null || _c === void 0 ? void 0 : _c.sourceUrl,
146
+ src: (_d = data.video) === null || _d === void 0 ? void 0 : _d.sourceUrl,
198
147
  type: "video/mp4"
199
- })), ((_d = data.overilay) === null || _d === void 0 ? void 0 : _d.open) && /*#__PURE__*/_react["default"].createElement("img", {
148
+ })), ((_e = data.overilay) === null || _e === void 0 ? void 0 : _e.open) && img && /*#__PURE__*/_react["default"].createElement("img", {
200
149
  alt: "",
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,
150
+ className: (0, _classnames["default"])('video-img', {
151
+ cover: (_f = data.video) === null || _f === void 0 ? void 0 : _f.sourceUrl
152
+ }),
153
+ src: img,
203
154
  style: {
204
155
  visibility: playing ? 'hidden' : 'visible'
205
156
  }
157
+ }), /*#__PURE__*/_react["default"].createElement("canvas", {
158
+ ref: this.canvasRef
206
159
  }));
207
160
  };
208
161
 
@@ -1,84 +1,65 @@
1
1
  .slide-image-video-wrap {
2
2
  position: relative;
3
3
  transition: border-radius 0.2s ease;
4
- overflow: hidden;
5
- cursor: pointer;
4
+ display: flex;
5
+ border-radius: 16px;
6
6
  --dx: calc(var(--size) - var(--x));
7
7
  --dy: calc(var(--size) - var(--y));
8
8
 
9
- // &.hover {
10
- // border-radius:
11
- // ~"calc(var(--x)/var(--size)*100%)"
12
- // ~"calc(var(--dx)/var(--size)*100%)"
13
- // ~"calc(var(--dx)/var(--size)*100%)"
14
- // ~"calc(var(--x)/var(--size)*100%) /"
15
- // ~"calc(var(--y)/var(--size)*100%)"
16
- // ~"calc(var(--y)/var(--size)*100%)"
17
- // ~"calc(var(--dy)/var(--size)*100%)"
18
- // ~"calc(var(--dy)/var(--size)*100%)";
19
- // }
20
-
21
- &.topLeft {
22
- border-radius:
23
- ~"calc(var(--x)/var(--size)*100%)"
24
- ~"0"
25
- ~"0"
26
- ~"0 /"
27
- ~"calc(var(--y)/var(--size)*100%)"
28
- ~"0"
29
- ~"0"
30
- ~"0";
9
+ &.cursor {
10
+ cursor: url('./imgs/cursor.png'), pointer;
31
11
  }
32
12
 
33
- &.topRight {
34
- border-radius:
35
- ~"0"
36
- ~"calc(var(--x)/var(--size)*100%)"
37
- ~"0"
38
- ~"0 /"
39
- ~"0"
40
- ~"calc(var(--y)/var(--size)*100%)"
41
- ~"0"
42
- ~"0";
13
+ &:hover {
14
+ box-shadow: 0px 12px 48px 0px #00000029;
43
15
  }
44
16
 
45
- &.bottomRight {
46
- border-radius:
47
- ~"0"
48
- ~"0"
49
- ~"calc(var(--x)/var(--size)*100%)"
50
- ~"0 /"
51
- ~"0"
52
- ~"0"
53
- ~"calc(var(--y)/var(--size)*100%)"
54
- ~"0";
17
+ &:after {
18
+ content: '';
19
+ display: block;
20
+ width: 180%;
21
+ height: 180%;
22
+ min-height: 100vw / 2.5;
23
+ position: absolute;
24
+ transform: translate(-20%, -20%) scale(0);
25
+ opacity: 0;
26
+ z-index: -1;
27
+ background-image: url('./imgs/d.png');
28
+ background-size: 100%;
29
+ background-repeat: no-repeat;
30
+ background-position: center;
31
+ transition: all 0.3s ease-out;
32
+ pointer-events: none;
55
33
  }
56
34
 
57
- &.bottomLeft {
58
- border-radius:
59
- ~"0"
60
- ~"0"
61
- ~"0"
62
- ~"calc(var(--x)/var(--size)*100%) /"
63
- ~"0"
64
- ~"0"
65
- ~"0"
66
- ~"calc(var(--y)/var(--size)*100%)";
35
+ &:hover:after {
36
+ transform: translate(-20%, -20%) scale(1);
37
+ opacity: 1;
67
38
  }
68
39
 
69
40
  video {
70
- position: absolute;
71
- top: 0;
72
- right: 0;
73
- left: 0;
74
- bottom: 0;
75
- object-fit: cover;
76
41
  width: 100%;
77
- height: 100%;
78
- z-index: 2;
42
+ border-radius: 16px;
79
43
  }
80
44
 
81
45
  .video-img {
82
46
  width: 100%;
47
+ border-radius: 16px;
48
+
49
+ &.cover {
50
+ position: absolute;
51
+ top: 0;
52
+ right: 0;
53
+ left: 0;
54
+ bottom: 0;
55
+ object-fit: cover;
56
+ width: 100%;
57
+ height: 100%;
58
+ z-index: 2;
59
+ }
60
+ }
61
+
62
+ canvas {
63
+ display: none;
83
64
  }
84
65
  }
@@ -263,7 +263,9 @@ function (_super) {
263
263
  }
264
264
  }, /*#__PURE__*/_react["default"].createElement("div", {
265
265
  ref: this.textRef,
266
- className: (0, _classnames["default"])('m-meta-text', className),
266
+ className: (0, _classnames["default"])('m-meta-text', className, {
267
+ cursor: data.content.clickUrl
268
+ }),
267
269
  dangerouslySetInnerHTML: {
268
270
  __html: data.html || data.text
269
271
  },
@@ -279,7 +281,9 @@ function (_super) {
279
281
 
280
282
  return /*#__PURE__*/_react["default"].createElement("div", {
281
283
  ref: this.textRef,
282
- className: (0, _classnames["default"])('m-meta-text', 'quill-text-content-wrap', className),
284
+ className: (0, _classnames["default"])('m-meta-text', 'quill-text-content-wrap', className, {
285
+ cursor: data.content.clickUrl
286
+ }),
283
287
  dangerouslySetInnerHTML: {
284
288
  __html: data.html || data.text
285
289
  },
@@ -56,6 +56,9 @@
56
56
  .m-meta-text {
57
57
  display: block;
58
58
 
59
+ &.cursor {
60
+ cursor: pointer;
61
+ }
59
62
 
60
63
  ol,
61
64
  ul,
@@ -63,7 +63,8 @@ function ProductCardModal(_a) {
63
63
  };
64
64
 
65
65
  var randomRotateY = function randomRotateY() {
66
- return Math.floor(Math.random() * 21) - 10;
66
+ // return Math.floor(Math.random() * 21) - 10;
67
+ return Math.floor((index % 2 === 0 ? -index : index) * 0.1 * 21) - 10;
67
68
  };
68
69
 
69
70
  var handleScroll = function handleScroll(e) {
@@ -61,6 +61,7 @@
61
61
  top: 5%;
62
62
  right: 5%;
63
63
  cursor: pointer;
64
+ z-index: 3;
64
65
  }
65
66
 
66
67
  .dotIcon {
@@ -96,6 +97,7 @@
96
97
  position: absolute;
97
98
  bottom: 25%;
98
99
  left: 55%;
100
+ z-index: 3;
99
101
  cursor: pointer;
100
102
  }
101
103
  }
@@ -29,6 +29,8 @@ var _coreUtil = require("../../../../../utils/coreUtil");
29
29
 
30
30
  var _mobx = require("../../../../../mobx");
31
31
 
32
+ var _locale = require("../../../../../locale");
33
+
32
34
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
33
35
 
34
36
  var __extends = void 0 && (void 0).__extends || function () {
@@ -218,7 +220,7 @@ function (_super) {
218
220
  if (window.magicDesign.pushGA) {
219
221
  window.magicDesign.pushGA({}, 'select_promotion', {
220
222
  event_section: 'Search_Banner',
221
- promotion_name: item.image.content.h5ImgSrc ? item.image.content.h5Name : i18n('BANNER_GROUP_NAME')
223
+ promotion_name: item.image.content.h5ImgSrc ? item.image.content.h5Name : (0, _locale.i18n)('BANNER_GROUP_NAME')
222
224
  });
223
225
  }
224
226
  }
@@ -80,12 +80,13 @@ function (_super) {
80
80
  return (0, _coreUtil.clickUrl)(data.clickUrl || '');
81
81
  }
82
82
  }, rest), /*#__PURE__*/_react["default"].createElement(_VideoItem["default"], {
83
+ cursor: data.clickUrl || '',
83
84
  data: data
84
85
  }), data.groupName.open && /*#__PURE__*/_react["default"].createElement(_components.MetaText, {
85
86
  className: "text",
86
87
  data: data.groupName,
87
88
  style: {
88
- pointerEvents: (0, _coreUtil.isDesignMode)() ? 'unset' : 'none'
89
+ cursor: data.clickUrl ? 'pointer' : 'unset'
89
90
  }
90
91
  })));
91
92
  };
@@ -1,6 +1,4 @@
1
1
  .slide-image-card-item-wrap {
2
- cursor: pointer;
3
-
4
2
  .text {
5
3
  margin-top: 20px;
6
4
  }
@@ -11,8 +11,6 @@ var _classnames = _interopRequireDefault(require("classnames"));
11
11
 
12
12
  require("./index.less");
13
13
 
14
- var _lodash = _interopRequireDefault(require("lodash.throttle"));
15
-
16
14
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
17
15
 
18
16
  var __extends = void 0 && (void 0).__extends || function () {
@@ -51,13 +49,11 @@ function (_super) {
51
49
 
52
50
  _this.state = {
53
51
  playing: false,
54
- inside: false,
55
- isNearCenter: false,
56
- flag: false,
57
- corner: ''
52
+ videoPoster: ''
58
53
  };
59
54
  _this.videoRef = /*#__PURE__*/_react["default"].createRef();
60
55
  _this.cardRef = /*#__PURE__*/_react["default"].createRef();
56
+ _this.canvasRef = /*#__PURE__*/_react["default"].createRef();
61
57
 
62
58
  _this.onMouseEnter = function () {
63
59
  var _a;
@@ -81,85 +77,38 @@ function (_super) {
81
77
  _this.setState({
82
78
  playing: false
83
79
  });
84
- }; // 获取元素中心坐标
85
-
86
-
87
- _this.getCenter = function (element) {
88
- var rect = element.getBoundingClientRect();
89
- return {
90
- x: rect.left + rect.width / 2,
91
- y: rect.top + rect.height / 2
92
- };
93
- }; // 判断是否在中心区域
94
-
95
-
96
- _this.checkMouseNearCenter = function (e, radius) {
97
- if (radius === void 0) {
98
- radius = 20;
99
- }
100
-
101
- var center = _this.getCenter(e.target); // 计算鼠标与中心的距离
102
-
103
-
104
- var distance = Math.sqrt(Math.pow(e.clientX - center.x, 2) + Math.pow(e.clientY - center.y, 2));
105
- return distance <= radius;
106
- }; // 判断鼠标方位
107
-
108
-
109
- _this.getMousePos = function (e) {
110
- var rect = e.target.getBoundingClientRect();
111
- var x = e.clientX - rect.left; // 鼠标相对于元素的 X 坐标
112
-
113
- var y = e.clientY - rect.top; // 鼠标相对于元素的 Y 坐标
114
- // 判断区域
115
-
116
- var isLeft = x < rect.width / 2;
117
- var isTop = y < rect.height / 2;
118
- var corner = '';
119
- if (isLeft && isTop) corner = 'topLeft';else if (!isLeft && isTop) corner = 'topRight';else if (isLeft && !isTop) corner = 'bottomLeft';else corner = 'bottomRight';
120
- return corner;
121
- };
122
-
123
- _this.handleMouseMove = (0, _lodash["default"])(function (e) {
124
- var dom = _this.cardRef.current;
125
- var size = parseInt(getComputedStyle(dom).width);
126
- var x = size * 0.5 + e.offsetX * 0.5; // 提升灵敏度
127
-
128
- var y = size * 0.5 + e.offsetY * 0.5;
129
- dom.style.setProperty('--x', x);
130
- dom.style.setProperty('--y', y);
131
- dom.style.setProperty('--size', size);
132
-
133
- var isNear = _this.checkMouseNearCenter(e);
134
-
135
- var corner = _this.getMousePos(e);
136
-
137
- if (isNear) _this.setState({
138
- flag: true
139
- });
140
-
141
- _this.setState({
142
- isNearCenter: isNear,
143
- inside: true,
144
- corner: corner
145
- });
146
- });
147
-
148
- _this.handleMouseLeave = function () {
149
- _this.setState({
150
- inside: false,
151
- flag: false,
152
- corner: ''
153
- });
154
80
  };
155
81
 
156
82
  return _this;
157
83
  }
158
84
 
159
85
  VideoItem.prototype.componentDidMount = function () {
86
+ var _this = this;
87
+
160
88
  var dom = this.cardRef.current;
161
89
  dom.addEventListener('mousemove', this.handleMouseMove);
162
90
  dom.addEventListener('mouseleave', this.handleMouseLeave);
91
+
92
+ if (this.videoRef.current) {
93
+ var video_1 = this.videoRef.current;
94
+ var canvas_1 = this.canvasRef.current;
95
+ video_1.addEventListener('loadedmetadata', function () {
96
+ // 确保跳转到第一帧
97
+ video_1.currentTime = 0;
98
+ });
99
+ video_1.addEventListener('seeked', function () {
100
+ // 设置Canvas尺寸与视频一致
101
+ canvas_1.width = video_1.offsetWidth;
102
+ canvas_1.height = video_1.offsetHeight; // 绘制视频帧到Canvas
103
+
104
+ var ctx = canvas_1.getContext('2d');
105
+ ctx.drawImage(video_1, 0, 0, canvas_1.width, canvas_1.height); // 转换为缩略图
106
+
107
+ _this.setState({
108
+ videoPoster: canvas_1.toDataURL('image/png')
109
+ });
110
+ });
111
+ }
163
112
  };
164
113
 
165
114
  VideoItem.prototype.componentWillUnmount = function () {
@@ -169,23 +118,23 @@ function (_super) {
169
118
  };
170
119
 
171
120
  VideoItem.prototype.render = function () {
172
- var _a;
173
-
174
- var _b, _c, _d, _e, _f;
175
-
176
- var data = this.props.data;
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;
121
+ var _a, _b, _c, _d, _e, _f;
122
+
123
+ var _g = this.props,
124
+ data = _g.data,
125
+ cursor = _g.cursor;
126
+ var _h = this.state,
127
+ playing = _h.playing,
128
+ videoPoster = _h.videoPoster;
129
+ var img = ((_b = (_a = data.overilay) === null || _a === void 0 ? void 0 : _a.content) === null || _b === void 0 ? void 0 : _b.pcImgSrc) || videoPoster;
183
130
  return /*#__PURE__*/_react["default"].createElement("div", {
184
131
  ref: this.cardRef,
185
- className: (0, _classnames["default"])('slide-image-video-wrap', (_a = {}, _a[corner] = inside && !isNearCenter && !flag, _a)),
132
+ className: (0, _classnames["default"])('slide-image-video-wrap', {
133
+ cursor: cursor
134
+ }),
186
135
  onMouseEnter: this.onMouseEnter,
187
136
  onMouseLeave: this.onMouseLeave
188
- }, ((_b = data.video) === null || _b === void 0 ? void 0 : _b.sourceUrl) && /*#__PURE__*/_react["default"].createElement("video", {
137
+ }, ((_c = data.video) === null || _c === void 0 ? void 0 : _c.sourceUrl) && /*#__PURE__*/_react["default"].createElement("video", {
189
138
  ref: this.videoRef,
190
139
  loop: true,
191
140
  muted: true,
@@ -194,15 +143,19 @@ function (_super) {
194
143
  visibility: playing ? 'visible' : 'hidden'
195
144
  }
196
145
  }, /*#__PURE__*/_react["default"].createElement("source", {
197
- src: (_c = data.video) === null || _c === void 0 ? void 0 : _c.sourceUrl,
146
+ src: (_d = data.video) === null || _d === void 0 ? void 0 : _d.sourceUrl,
198
147
  type: "video/mp4"
199
- })), ((_d = data.overilay) === null || _d === void 0 ? void 0 : _d.open) && /*#__PURE__*/_react["default"].createElement("img", {
148
+ })), ((_e = data.overilay) === null || _e === void 0 ? void 0 : _e.open) && img && /*#__PURE__*/_react["default"].createElement("img", {
200
149
  alt: "",
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,
150
+ className: (0, _classnames["default"])('video-img', {
151
+ cover: (_f = data.video) === null || _f === void 0 ? void 0 : _f.sourceUrl
152
+ }),
153
+ src: img,
203
154
  style: {
204
155
  visibility: playing ? 'hidden' : 'visible'
205
156
  }
157
+ }), /*#__PURE__*/_react["default"].createElement("canvas", {
158
+ ref: this.canvasRef
206
159
  }));
207
160
  };
208
161
 
@@ -1,84 +1,65 @@
1
1
  .slide-image-video-wrap {
2
2
  position: relative;
3
3
  transition: border-radius 0.2s ease;
4
- overflow: hidden;
5
- cursor: pointer;
4
+ display: flex;
5
+ border-radius: 16px;
6
6
  --dx: calc(var(--size) - var(--x));
7
7
  --dy: calc(var(--size) - var(--y));
8
8
 
9
- // &.hover {
10
- // border-radius:
11
- // ~"calc(var(--x)/var(--size)*100%)"
12
- // ~"calc(var(--dx)/var(--size)*100%)"
13
- // ~"calc(var(--dx)/var(--size)*100%)"
14
- // ~"calc(var(--x)/var(--size)*100%) /"
15
- // ~"calc(var(--y)/var(--size)*100%)"
16
- // ~"calc(var(--y)/var(--size)*100%)"
17
- // ~"calc(var(--dy)/var(--size)*100%)"
18
- // ~"calc(var(--dy)/var(--size)*100%)";
19
- // }
20
-
21
- &.topLeft {
22
- border-radius:
23
- ~"calc(var(--x)/var(--size)*100%)"
24
- ~"0"
25
- ~"0"
26
- ~"0 /"
27
- ~"calc(var(--y)/var(--size)*100%)"
28
- ~"0"
29
- ~"0"
30
- ~"0";
9
+ &.cursor {
10
+ cursor: url('./imgs/cursor.png'), pointer;
31
11
  }
32
12
 
33
- &.topRight {
34
- border-radius:
35
- ~"0"
36
- ~"calc(var(--x)/var(--size)*100%)"
37
- ~"0"
38
- ~"0 /"
39
- ~"0"
40
- ~"calc(var(--y)/var(--size)*100%)"
41
- ~"0"
42
- ~"0";
13
+ &:hover {
14
+ box-shadow: 0px 12px 48px 0px #00000029;
43
15
  }
44
16
 
45
- &.bottomRight {
46
- border-radius:
47
- ~"0"
48
- ~"0"
49
- ~"calc(var(--x)/var(--size)*100%)"
50
- ~"0 /"
51
- ~"0"
52
- ~"0"
53
- ~"calc(var(--y)/var(--size)*100%)"
54
- ~"0";
17
+ &:after {
18
+ content: '';
19
+ display: block;
20
+ width: 180%;
21
+ height: 180%;
22
+ min-height: 100vw / 2.5;
23
+ position: absolute;
24
+ transform: translate(-20%, -20%) scale(0);
25
+ opacity: 0;
26
+ z-index: -1;
27
+ background-image: url('./imgs/d.png');
28
+ background-size: 100%;
29
+ background-repeat: no-repeat;
30
+ background-position: center;
31
+ transition: all 0.3s ease-out;
32
+ pointer-events: none;
55
33
  }
56
34
 
57
- &.bottomLeft {
58
- border-radius:
59
- ~"0"
60
- ~"0"
61
- ~"0"
62
- ~"calc(var(--x)/var(--size)*100%) /"
63
- ~"0"
64
- ~"0"
65
- ~"0"
66
- ~"calc(var(--y)/var(--size)*100%)";
35
+ &:hover:after {
36
+ transform: translate(-20%, -20%) scale(1);
37
+ opacity: 1;
67
38
  }
68
39
 
69
40
  video {
70
- position: absolute;
71
- top: 0;
72
- right: 0;
73
- left: 0;
74
- bottom: 0;
75
- object-fit: cover;
76
41
  width: 100%;
77
- height: 100%;
78
- z-index: 2;
42
+ border-radius: 16px;
79
43
  }
80
44
 
81
45
  .video-img {
82
46
  width: 100%;
47
+ border-radius: 16px;
48
+
49
+ &.cover {
50
+ position: absolute;
51
+ top: 0;
52
+ right: 0;
53
+ left: 0;
54
+ bottom: 0;
55
+ object-fit: cover;
56
+ width: 100%;
57
+ height: 100%;
58
+ z-index: 2;
59
+ }
60
+ }
61
+
62
+ canvas {
63
+ display: none;
83
64
  }
84
65
  }
@@ -263,7 +263,9 @@ function (_super) {
263
263
  }
264
264
  }, /*#__PURE__*/_react["default"].createElement("div", {
265
265
  ref: this.textRef,
266
- className: (0, _classnames["default"])('m-meta-text', className),
266
+ className: (0, _classnames["default"])('m-meta-text', className, {
267
+ cursor: data.content.clickUrl
268
+ }),
267
269
  dangerouslySetInnerHTML: {
268
270
  __html: data.html || data.text
269
271
  },
@@ -279,7 +281,9 @@ function (_super) {
279
281
 
280
282
  return /*#__PURE__*/_react["default"].createElement("div", {
281
283
  ref: this.textRef,
282
- className: (0, _classnames["default"])('m-meta-text', 'quill-text-content-wrap', className),
284
+ className: (0, _classnames["default"])('m-meta-text', 'quill-text-content-wrap', className, {
285
+ cursor: data.content.clickUrl
286
+ }),
283
287
  dangerouslySetInnerHTML: {
284
288
  __html: data.html || data.text
285
289
  },
@@ -56,6 +56,9 @@
56
56
  .m-meta-text {
57
57
  display: block;
58
58
 
59
+ &.cursor {
60
+ cursor: pointer;
61
+ }
59
62
 
60
63
  ol,
61
64
  ul,
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.152",
4
+ "version": "1.0.154",
5
5
  "description": "Magic Design",
6
6
  "license": "MIT",
7
7
  "module": "es/index.js",