Skip to content

Commit 5e5d599

Browse files
author
Bart Veneman
committed
improve analysis of animations
1 parent 3d3d792 commit 5e5d599

11 files changed

+98
-104
lines changed

src/__fixtures__/bol-com-20190617.json

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -53919,19 +53919,19 @@
5391953919
"total": 126,
5392053920
"totalUnique": 15,
5392153921
"unique": {
53922-
"750ms": 1,
53923-
"250ms": 5,
53924-
"0s": 2,
5392553922
".25s": 70,
5392653923
"2s": 1,
5392753924
"1s": 4,
5392853925
"1.4s": 2,
5392953926
".15s": 17,
5393053927
".3s": 9,
5393153928
".5s": 7,
53929+
"750ms": 1,
5393253930
".2s": 2,
5393353931
"330ms": 1,
5393453932
"130ms": 2,
53933+
"250ms": 5,
53934+
"0s": 2,
5393553935
".4s": 1,
5393653936
"200ms": 2
5393753937
},
@@ -53941,18 +53941,18 @@
5394153941
"total": 118,
5394253942
"totalUnique": 12,
5394353943
"unique": {
53944-
"linear": 6,
53945-
"cubic-bezier(0,1,0,1)": 4,
53946-
"cubic-bezier(1,0,1,0)": 5,
53947-
"cubic-bezier(.4,0,.6,1)": 3,
53948-
"cubic-bezier(0,0,.2,1)": 2,
5394953944
"ease-out": 5,
53945+
"linear": 6,
5395053946
"steps(8)": 1,
5395153947
"ease-in-out": 19,
5395253948
"ease-in": 66,
5395353949
"cubic-bezier(.175,.885,.32,1.275)": 2,
5395453950
"ease": 4,
53955-
"cubic-bezier(0,0,.3,1)": 1
53951+
"cubic-bezier(0,1,0,1)": 4,
53952+
"cubic-bezier(1,0,1,0)": 5,
53953+
"cubic-bezier(0,0,.3,1)": 1,
53954+
"cubic-bezier(.4,0,.6,1)": 3,
53955+
"cubic-bezier(0,0,.2,1)": 2
5395653956
},
5395753957
"uniquenessRatio": 0.1016949152542373
5395853958
}

src/__fixtures__/bootstrap-5.0.0.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22788,7 +22788,6 @@
2278822788
"total": 64,
2278922789
"totalUnique": 10,
2279022790
"unique": {
22791-
"1.5s": 2,
2279222791
"0.15s": 46,
2279322792
"0.1s": 2,
2279422793
"0.35s": 1,
@@ -22797,7 +22796,8 @@
2279722796
"1s": 2,
2279822797
"0.3s": 2,
2279922798
"0s": 1,
22800-
"0.75s": 4
22799+
"0.75s": 4,
22800+
"1.5s": 2
2280122801
},
2280222802
"uniquenessRatio": 0.15625
2280322803
},

src/__fixtures__/cnn-20220403.json

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -143983,14 +143983,11 @@
143983143983
"total": 652,
143984143984
"totalUnique": 30,
143985143985
"unique": {
143986-
"1s": 29,
143987-
".1s": 20,
143988-
"175ms": 4,
143989-
"0.1s": 9,
143990-
"400ms": 1,
143991143986
".2s": 112,
143987+
"1s": 29,
143992143988
".5s": 34,
143993143989
".4s": 103,
143990+
".1s": 20,
143994143991
".3s": 108,
143995143992
".7s": 6,
143996143993
"0s": 18,
@@ -144000,17 +143997,20 @@
144000143997
"0.5s": 18,
144001143998
"0.25s": 7,
144002143999
".6s": 8,
144000+
"175ms": 4,
144003144001
".15s": 9,
144004144002
"75ms": 4,
144005144003
"1915ms": 3,
144006144004
"2098ms": 3,
144007144005
"2.13s": 3,
144008144006
".07s": 2,
144009144007
"0.2s": 36,
144008+
"0.1s": 9,
144010144009
"0.3s": 32,
144011144010
"0.7s": 2,
144012144011
"0.6s": 2,
144013144012
"0.15s": 1,
144013+
"400ms": 1,
144014144014
"300ms": 3,
144015144015
"150ms": 1
144016144016
},
@@ -144020,12 +144020,12 @@
144020144020
"total": 327,
144021144021
"totalUnique": 7,
144022144022
"unique": {
144023-
"linear": 30,
144024-
"cubic-bezier(.2,.9,.3,1.1)": 3,
144025-
"cubic-bezier(0.2, 0.9, 0.3, 1.1)": 1,
144026144023
"ease-in-out": 47,
144027144024
"ease": 195,
144025+
"linear": 30,
144026+
"cubic-bezier(.2,.9,.3,1.1)": 3,
144028144027
"ease-out": 45,
144028+
"cubic-bezier(0.2, 0.9, 0.3, 1.1)": 1,
144029144029
"ease-in": 6
144030144030
},
144031144031
"uniquenessRatio": 0.021406727828746176

src/__fixtures__/facebook-20190319.json

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -37013,24 +37013,24 @@
3701337013
"totalUnique": 22,
3701437014
"unique": {
3701537015
"200ms": 13,
37016-
".7s": 1,
37017-
"1s": 4,
37018-
"16s": 1,
37019-
".5s": 7,
37020-
"5s": 1,
37021-
"4s": 1,
37022-
"2000ms": 1,
37023-
"2s": 1,
37024-
"250ms": 3,
3702537016
".3s": 3,
3702637017
"1.5s": 1,
3702737018
"50ms": 1,
37019+
".7s": 1,
37020+
"1s": 4,
37021+
".5s": 7,
3702837022
".25s": 2,
37023+
"250ms": 3,
3702937024
"1.2s": 3,
3703037025
"100ms": 2,
3703137026
".2s": 1,
3703237027
"150ms": 4,
3703337028
"300ms": 4,
37029+
"16s": 1,
37030+
"5s": 1,
37031+
"4s": 1,
37032+
"2000ms": 1,
37033+
"2s": 1,
3703437034
".1s": 1,
3703537035
"1ms": 1,
3703637036
"550ms": 1
@@ -37041,22 +37041,22 @@
3704137041
"total": 50,
3704237042
"totalUnique": 17,
3704337043
"unique": {
37044+
"cubic-bezier(.08,.52,.52,1)": 5,
37045+
"ease-in-out": 8,
3704437046
"ease": 10,
3704537047
"linear": 5,
37046-
"cubic-bezier(.895, .03, .685, .22)": 2,
37047-
"cubic-bezier(.165, .84, .44, 1)": 2,
3704837048
"ease-out": 8,
37049-
"cubic-bezier(.5, 0, .5, 1)": 1,
37050-
"steps(60, end)": 1,
37051-
"steps(4, start)": 1,
37052-
"ease-in-out": 8,
37053-
"var(--fds-soft)": 1,
37054-
"cubic-bezier(.08,.52,.52,1)": 5,
3705537049
"steps(20, end)": 1,
3705637050
"cubic-bezier(.19, 1, .22, 1)": 1,
3705737051
"cubic-bezier(.23, 1, .32, 1)": 1,
3705837052
"cubic-bezier(.08, .52, .52, 1)": 1,
3705937053
"ease-in": 1,
37054+
"cubic-bezier(.895, .03, .685, .22)": 2,
37055+
"cubic-bezier(.165, .84, .44, 1)": 2,
37056+
"cubic-bezier(.5, 0, .5, 1)": 1,
37057+
"steps(60, end)": 1,
37058+
"steps(4, start)": 1,
37059+
"var(--fds-soft)": 1,
3706037060
"cubic-bezier(.1, .7, .1, 1)": 1
3706137061
},
3706237062
"uniquenessRatio": 0.34

src/__fixtures__/gazelle-20210905.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -88384,7 +88384,6 @@
8838488384
"total": 392,
8838588385
"totalUnique": 34,
8838688386
"unique": {
88387-
".35s": 3,
8838888387
"0.3s": 37,
8838988388
"250ms": 19,
8839088389
".75s": 1,
@@ -88410,6 +88409,7 @@
8841088409
"0.1s": 3,
8841188410
"1400ms": 7,
8841288411
".15s": 9,
88412+
".35s": 3,
8841388413
"2s": 3,
8841488414
"0.15s": 3,
8841588415
"0.35s": 1,
@@ -88425,11 +88425,11 @@
8842588425
"total": 285,
8842688426
"totalUnique": 8,
8842788427
"unique": {
88428-
"ease": 132,
8842988428
"ease-out": 7,
8843088429
"ease-in-out": 79,
8843188430
"linear": 32,
8843288431
"cubic-bezier(.25, .1, .25, 1)": 19,
88432+
"ease": 132,
8843388433
"steps(4, end)": 7,
8843488434
"cubic-bezier(0.25, 0.8, 0.25, 1)": 8,
8843588435
"cubic-bezier(0.4, 0, 0.2, 1)": 1

src/__fixtures__/github-20210501.json

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -33549,16 +33549,16 @@
3354933549
"total": 31,
3355033550
"totalUnique": 13,
3355133551
"unique": {
33552+
".2s": 4,
3355233553
".1s\n": 3,
33554+
".12s": 1,
3355333555
".1s": 1,
3355433556
"1s": 3,
3355533557
".3s\n": 2,
3355633558
".3s": 5,
3355733559
".15s": 1,
3355833560
"2s": 1,
3355933561
".5s\n": 1,
33560-
".2s": 4,
33561-
".12s": 1,
3356233562
"1.06s": 2,
3356333563
"3s": 1,
3356433564
".4s": 6
@@ -33569,16 +33569,16 @@
3356933569
"total": 19,
3357033570
"totalUnique": 12,
3357133571
"unique": {
33572+
"cubic-bezier(.3, 0, .5, 1)": 3,
33573+
"ease-out": 2,
3357233574
"ease-in": 1,
3357333575
"ease-in-out\n": 1,
3357433576
"ease-out\n": 1,
33575-
"ease-out": 2,
3357633577
"ease-in\n": 1,
3357733578
"ease": 1,
3357833579
"ease-in-out": 2,
3357933580
"cubic-bezier(.2, 0, .13, 1.5)\n": 1,
3358033581
"linear": 2,
33581-
"cubic-bezier(.3, 0, .5, 1)": 3,
3358233582
"steps(1)": 2,
3358333583
"cubic-bezier(.73, .005, .22, 1)": 2
3358433584
},

src/__fixtures__/lego-20190617.json

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -21160,17 +21160,17 @@
2116021160
"totalUnique": 13,
2116121161
"unique": {
2116221162
"0": 2,
21163-
"400ms": 1,
21164-
".3s": 7,
21165-
".15s": 8,
21166-
".5s,.4s": 2,
2116721163
".2s": 7,
21168-
".1s": 2,
2116921164
"150ms": 7,
21165+
"400ms": 1,
2117021166
"0s": 10,
2117121167
"100ms": 1,
2117221168
"300ms": 4,
21169+
".3s": 7,
2117321170
"2s": 2,
21171+
".15s": 8,
21172+
".5s,.4s": 2,
21173+
".1s": 2,
2117421174
".5s": 2
2117521175
},
2117621176
"uniquenessRatio": 0.23636363636363636
@@ -21179,9 +21179,9 @@
2117921179
"total": 36,
2118021180
"totalUnique": 4,
2118121181
"unique": {
21182-
"linear": 12,
21183-
"ease-in-out": 11,
2118421182
"ease": 7,
21183+
"ease-in-out": 11,
21184+
"linear": 12,
2118521185
"ease-out": 6
2118621186
},
2118721187
"uniquenessRatio": 0.1111111111111111

src/__fixtures__/smashing-magazine-20190319.json

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -90168,20 +90168,20 @@
9016890168
"total": 1467,
9016990169
"totalUnique": 20,
9017090170
"unique": {
90171-
".2s": 590,
9017290171
".1s": 280,
90173-
".6s": 42,
90174-
"1s": 16,
90175-
".4s": 134,
90176-
".5s": 32,
90177-
".55s": 4,
9017890172
".3s": 225,
90173+
".2s": 590,
9017990174
".25s": 10,
90175+
".4s": 134,
90176+
".6s": 42,
9018090177
"2s": 4,
9018190178
"5s": 12,
90179+
".5s": 32,
9018290180
".8s": 8,
9018390181
".15s": 16,
9018490182
"0s": 54,
90183+
"1s": 16,
90184+
".55s": 4,
9018590185
"1.5s": 4,
9018690186
".75s": 4,
9018790187
".7s": 8,
@@ -90195,14 +90195,14 @@
9019590195
"total": 1093,
9019690196
"totalUnique": 10,
9019790197
"unique": {
90198-
"ease-in-out": 300,
90199-
"cubic-bezier(.67,.17,.32,.95)": 4,
9020090198
"ease-in": 32,
9020190199
"ease-out": 623,
9020290200
"cubic-bezier(.17,.67,.45,2.01)": 30,
90201+
"ease-in-out": 300,
9020390202
"linear": 56,
9020490203
"ease": 24,
9020590204
"cubic-bezier(.39,.575,.565,1)": 12,
90205+
"cubic-bezier(.67,.17,.32,.95)": 4,
9020690206
"cubic-bezier(.175,.885,.32,1.275)": 4,
9020790207
"cubic-bezier(.77,0,.175,1)": 8
9020890208
},

src/__fixtures__/trello-20190617.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37522,9 +37522,9 @@
3752237522
"total": 34,
3752337523
"totalUnique": 3,
3752437524
"unique": {
37525-
"ease-out": 4,
3752637525
"ease-in-out": 24,
37527-
"ease": 6
37526+
"ease": 6,
37527+
"ease-out": 4
3752837528
},
3752937529
"uniquenessRatio": 0.08823529411764706
3753037530
}

src/index.js

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import { colorFunctions, colorNames } from './values/colors.js'
66
import { isFontFamilyKeyword, getFamilyFromFont } from './values/font-families.js'
77
import { isFontSizeKeyword, getSizeFromFont } from './values/font-sizes.js'
88
import { isValueKeyword } from './values/values.js'
9-
import { analyzeAnimations } from './values/animations.js'
9+
import { analyzeAnimation } from './values/animations.js'
1010
import { isAstVendorPrefixed } from './values/vendor-prefix.js'
1111
import { analyzeAtRules } from './atrules/atrules.js'
1212
import { ContextCollection } from './context-collection.js'
@@ -105,9 +105,8 @@ const analyze = (css) => {
105105
const boxShadows = new CountableCollection()
106106
const fontFamilies = new CountableCollection()
107107
const fontSizes = new CountableCollection()
108-
const animations = []
109-
const timingFunctions = []
110-
const durations = []
108+
const timingFunctions = new CountableCollection()
109+
const durations = new CountableCollection()
111110
const colors = new ContextCollection()
112111
const units = new ContextCollection()
113112

@@ -257,7 +256,13 @@ const analyze = (css) => {
257256
}
258257
break
259258
} else if (isProperty('transition', property) || isProperty('animation', property)) {
260-
animations.push(node.children)
259+
const [times, fns] = analyzeAnimation(node.children, stringifyNode)
260+
for (let i = 0; i < times.length; i++) {
261+
durations.push(times[i])
262+
}
263+
for (let i = 0; i < fns.length; i++) {
264+
timingFunctions.push(fns[i])
265+
}
261266
break
262267
} else if (isProperty('animation-duration', property) || isProperty('transition-duration', property)) {
263268
durations.push(stringifyNode(node))
@@ -451,7 +456,10 @@ const analyze = (css) => {
451456
zindexes: zindex.count(),
452457
textShadows: textShadows.count(),
453458
boxShadows: boxShadows.count(),
454-
animations: analyzeAnimations({ animations, timingFunctions, durations, stringifyNode }),
459+
animations: {
460+
durations: durations.count(),
461+
timingFunctions: timingFunctions.count(),
462+
},
455463
prefixes: vendorPrefixedValues.count(),
456464
units: units.count(),
457465
},

0 commit comments

Comments
 (0)