Skip to content

Commit c9bc585

Browse files
committed
fix: 🐛 fix mousewheel passive && scale step
1 parent d08e41e commit c9bc585

File tree

9 files changed

+29
-63
lines changed

9 files changed

+29
-63
lines changed

.babelrc.js

Lines changed: 0 additions & 10 deletions
This file was deleted.

develop/index.html

Lines changed: 0 additions & 11 deletions
This file was deleted.

develop/index.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,4 @@ import * as React from 'react'
22
import ReactDOM from 'react-dom'
33
import App from './App'
44

5-
ReactDOM.render(<App></App>, document.getElementById('app'))
5+
ReactDOM.render(<App />, document.getElementById('app'))

develop/style.scss

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
body {
22
padding: 20px;
33
margin: 0px;
4-
background: red;
54
}
65

76
.container {

doczrc.js

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,12 @@ export default {
88
typescript: true,
99
protocol: process.env.NODE_ENV === 'production' ? 'https' : 'http',
1010
themeConfig: {
11-
mode: 'light'
11+
mode: 'light',
12+
styles: {
13+
sidebar: `
14+
z-index: 998;
15+
`
16+
}
1217
},
1318
codeSandbox: false,
1419
hashRouter: true,

src/lib/ImgPreview/ImgPreview.tsx

Lines changed: 12 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ export interface PreviewInstanceInterface {
3030
preview: PreviewInterface
3131
show: () => void
3232
hide: () => void
33-
component: ImgPpreview
33+
component: ImgPreview
3434
destroy: () => void
3535
}
3636
export interface PreviewInstanceCallback {
@@ -41,7 +41,7 @@ function find<T>(list: T[], arg: T): number {
4141
return list.findIndex(each => each === arg)
4242
}
4343
let observer: IntersectionObserver = null
44-
export default class ImgPpreview extends PureComponent<{}, PreviewState> {
44+
export default class ImgPreview extends PureComponent<{}, PreviewState> {
4545
static newInstance: (callback: PreviewInstanceCallback) => void
4646
$el: HTMLElement = null
4747
$close: HTMLElement = null
@@ -106,7 +106,7 @@ export default class ImgPpreview extends PureComponent<{}, PreviewState> {
106106
* window的按钮监听
107107
* 监听Esc按钮, 触发隐藏
108108
* @event
109-
* @memberof ImgPpreview
109+
* @memberof ImgPreview
110110
*/
111111
windowKeyUpHandle = (e: KeyboardEvent) => {
112112
// e.stopPropagation()
@@ -125,7 +125,7 @@ export default class ImgPpreview extends PureComponent<{}, PreviewState> {
125125
* 隐藏图片浏览器
126126
* 只有在点击关闭按钮或者浏览器外的地方才触发
127127
* @event
128-
* @memberof ImgPpreview
128+
* @memberof ImgPreview
129129
*/
130130
hideHandle = (e: React.MouseEvent) => {
131131
const { target } = e
@@ -200,7 +200,7 @@ export default class ImgPpreview extends PureComponent<{}, PreviewState> {
200200
/**
201201
* 初始化图片的position以及transform属性
202202
*
203-
* @memberof ImgPpreview
203+
* @memberof ImgPreview
204204
*/
205205
initImage() {
206206
this.setState(
@@ -282,17 +282,15 @@ export default class ImgPpreview extends PureComponent<{}, PreviewState> {
282282
* @event
283283
*/
284284
mouseWheelHandle = (e: React.WheelEvent<HTMLDivElement>) => {
285-
e.preventDefault()
286-
e.stopPropagation()
287285
// 放大缩小功能
288286
// const delta = e.wheelDelta ? e.wheelDelta : -(e.detail || 0)
289287
let { scale } = this.state
290288
if (-e.deltaY < 0) {
291289
// 放大
292-
scale *= 1.2
290+
scale *= 1.1
293291
} else {
294292
// 缩小
295-
scale *= 0.8
293+
scale *= 0.9
296294
}
297295
this.setState({
298296
scale
@@ -303,7 +301,7 @@ export default class ImgPpreview extends PureComponent<{}, PreviewState> {
303301
* 监听图片的onLoad事件
304302
* 设置初始的宽高
305303
*
306-
* @memberof ImgPpreview
304+
* @memberof ImgPreview
307305
*/
308306
imgOnLoad = e => {
309307
const img = e.target as HTMLImageElement
@@ -344,7 +342,7 @@ export default class ImgPpreview extends PureComponent<{}, PreviewState> {
344342
* 设置宽高和左边
345343
*
346344
* @readonly
347-
* @memberof ImgPpreview
345+
* @memberof ImgPreview
348346
*/
349347
get imgSty(): CSSProperties {
350348
const { rotate, top, left } = this.state
@@ -533,9 +531,9 @@ export default class ImgPpreview extends PureComponent<{}, PreviewState> {
533531
}
534532
}
535533

536-
ImgPpreview.newInstance = function newPreviewInstance(callback) {
534+
ImgPreview.newInstance = function newPreviewInstance(callback) {
537535
const div = document.createElement('div')
538-
function ref(ins: ImgPpreview) {
536+
function ref(ins: ImgPreview) {
539537
callback({
540538
preview(current, list) {
541539
ins.exportPreview(current, list)
@@ -554,5 +552,5 @@ ImgPpreview.newInstance = function newPreviewInstance(callback) {
554552
})
555553
}
556554
document.body.appendChild(div)
557-
ReactDOM.render(<ImgPpreview ref={ref} />, div)
555+
ReactDOM.render(<ImgPreview ref={ref} />, div)
558556
}

src/lib/ImgPreview/__test__/ImgPreview.test.tsx

Lines changed: 8 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -141,31 +141,23 @@ describe('test img transform', () => {
141141
wrapper.update()
142142
describe('test scale', () => {
143143
let expectScale = 0.75
144-
const preventDefault = jest.fn()
145-
const stopPropagation = jest.fn()
146144
it('test scale down', () => {
147145
// setTimeout(() => {
148146
expect(ins.state.scale).toEqual(expectScale)
149147
container.simulate('wheel', {
150-
deltaY: -10,
151-
preventDefault,
152-
stopPropagation
148+
deltaY: -10
153149
})
154-
expect(preventDefault).toBeCalledTimes(1)
155-
expect(stopPropagation).toBeCalledTimes(1)
156-
expectScale *= 0.8
150+
expectScale *= 0.9
157151
expect(ins.state.scale).toEqual(expectScale)
158152
// done()
159153
// }, 50)
160154
})
161155
it('test scale up', () => {
162156
// setTimeout(() => {
163157
container.simulate('wheel', {
164-
deltaY: 10,
165-
preventDefault,
166-
stopPropagation
158+
deltaY: 10
167159
})
168-
expectScale *= 1.2
160+
expectScale *= 1.1
169161
expect(ins.state.scale).toEqual(expectScale)
170162
// done()
171163
// }, 50)
@@ -258,15 +250,15 @@ describe('test change index', () => {
258250
const event = new KeyboardEvent('keyup', {
259251
keyCode: 39
260252
} as KeyboardEventInit)
261-
window.dispatchEvent(event)
253+
window.document.dispatchEvent(event)
262254
expect(ins.state.current).toEqual(1)
263255
expect(wrapper.find(imgCurrent).prop('src')).toEqual(src[1])
264256
})
265257
it('test keyup code 37 is prev', () => {
266258
const event = new KeyboardEvent('keyup', {
267259
keyCode: 37
268260
} as KeyboardEventInit)
269-
window.dispatchEvent(event)
261+
window.document.dispatchEvent(event)
270262
expect(ins.state.current).toEqual(0)
271263
expect(wrapper.find(imgCurrent).prop('src')).toEqual(src[0])
272264
})
@@ -322,14 +314,11 @@ describe('test show/hide', () => {
322314
const event = new KeyboardEvent('keyup', {
323315
keyCode: 27
324316
} as KeyboardEventInit)
325-
window.dispatchEvent(event)
317+
window.document.dispatchEvent(event)
326318
expect(hide).toBeCalledTimes(1)
327319
const bodyHideHandle = jest.spyOn(ins, 'hideHandle')
328320
ins.show()
329-
const bodyClickEvent = new MouseEvent('click', {
330-
bubbles: true
331-
})
332-
document.body.dispatchEvent(bodyClickEvent)
321+
wrapper.simulate('click')
333322
expect(bodyHideHandle).toBeCalledTimes(1)
334323
})
335324
})

src/lib/ImgPreview/index.ts

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,6 @@ function getInstance(callback: PreviewInstanceCallback) {
1414
return
1515
}
1616
Preview.newInstance((instance: PreviewInstanceInterface) => {
17-
if(ins) {
18-
callback(ins)
19-
return
20-
}
2117
ins = instance
2218
callback(instance)
2319
})
@@ -37,7 +33,7 @@ function exec(fun: string) {
3733
}
3834
}
3935

40-
export const Api: {destroy: () => void, preview: PreviewInterface, show: () => void, hide: () => void} = {
36+
const Api: {destroy: () => void, preview: PreviewInterface, show: () => void, hide: () => void} = {
4137
preview: null,
4238
show: null,
4339
hide: null,

src/lib/ImgPreview/style.scss

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@
3737
}
3838
.img-viewer-current {
3939
position: relative;
40-
transition: transform .3s ease-in-out;
40+
// transition: transform .1s linear;
4141
animation: preview-ani 0.3s ease-in-out;
4242
}
4343
@keyframes preview-ani {

0 commit comments

Comments
 (0)