Skip to content

Commit ad7b9a3

Browse files
committed
fix(ui-engine-bug): modify duration
1 parent 59c3f74 commit ad7b9a3

1 file changed

Lines changed: 19 additions & 26 deletions

File tree

packages/canvas/container/src/container.ts

Lines changed: 19 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -468,37 +468,30 @@ const setSelectRect = (
468468

469469
const getElementDurationTime = (elementId?: string) => {
470470
const element = elementId ? querySelectById(elementId) : getDocument().body
471-
const durationTime = window.getComputedStyle(element).getPropertyValue('transition-duration')
472-
const delayTime = window.getComputedStyle(element).getPropertyValue('transition-delay')
473-
const transition = window.getComputedStyle(element).getPropertyValue('transition')
474-
let delayArray: string[] = []
475-
if (transition) {
476-
const delayRegex = /([0-9]+(\.[0-9]+)?)(s|ms|S|MS)/
477-
const transitions = transition.split(',')
478-
transitions.forEach((item) => {
479-
const parts = item.trim().split(' ')
480-
delayArray = delayArray.concat(parts)
471+
const transitionDuration = window.getComputedStyle(element).getPropertyValue('transition-duration')
472+
const transitionDelay = window.getComputedStyle(element).getPropertyValue('transition-delay')
473+
let delayTime = 0
474+
const getMaxMillisecondNumber = (arr: string[]) => {
475+
const millisecondNumber = arr.map((item) => {
476+
const unit = item.slice(-2)
477+
if (unit === 'ms') {
478+
return parseFloat(item)
479+
} else {
480+
return parseFloat(item) * 1000
481+
}
481482
})
482-
delayArray = delayArray.filter((delay) => delayRegex.test(delay))
483+
return millisecondNumber.length ? Math.max(...millisecondNumber) : 0
483484
}
484-
485-
if (durationTime) {
486-
delayArray.push(durationTime)
485+
if (transitionDuration) {
486+
const transitionDurations = transitionDuration.split(',')
487+
delayTime += getMaxMillisecondNumber(transitionDurations)
487488
}
488489

489-
if (delayTime) {
490-
delayArray.push(delayTime)
490+
if (transitionDelay) {
491+
const transitionDelays = transitionDelay.split(',')
492+
delayTime += getMaxMillisecondNumber(transitionDelays)
491493
}
492-
493-
const delayTimes: any[] = delayArray.map((item) => {
494-
const unit = item.slice(-2)
495-
if (unit === 'ms') {
496-
return parseFloat(item)
497-
} else {
498-
return parseFloat(item) * 1000
499-
}
500-
})
501-
return delayTimes.length ? Math.max(...delayTimes) : 300
494+
return delayTime === 0 ? 300 : delayTime
502495
}
503496

504497
export const updateRect = (id?: string) => {

0 commit comments

Comments
 (0)