source: node_modules/autoprefixer/data/prefixes.js@ 2058e5c

Last change on this file since 2058e5c was 2058e5c, checked in by istevanoska <ilinastevanoska@…>, 6 months ago

Working / before login

  • Property mode set to 100644
File size: 23.4 KB
RevLine 
[2058e5c]1let unpack = require('caniuse-lite/dist/unpacker/feature')
2
3function browsersSort(a, b) {
4 a = a.split(' ')
5 b = b.split(' ')
6 if (a[0] > b[0]) {
7 return 1
8 } else if (a[0] < b[0]) {
9 return -1
10 } else {
11 return Math.sign(parseFloat(a[1]) - parseFloat(b[1]))
12 }
13}
14
15// Convert Can I Use data
16function f(data, opts, callback) {
17 data = unpack(data)
18
19 if (!callback) {
20 ;[callback, opts] = [opts, {}]
21 }
22
23 let match = opts.match || /\sx($|\s)/
24 let need = []
25
26 for (let browser in data.stats) {
27 let versions = data.stats[browser]
28 for (let version in versions) {
29 let support = versions[version]
30 if (support.match(match)) {
31 need.push(browser + ' ' + version)
32 }
33 }
34 }
35
36 callback(need.sort(browsersSort))
37}
38
39// Add data for all properties
40let result = {}
41
42function prefix(names, data) {
43 for (let name of names) {
44 result[name] = Object.assign({}, data)
45 }
46}
47
48function add(names, data) {
49 for (let name of names) {
50 result[name].browsers = result[name].browsers
51 .concat(data.browsers)
52 .sort(browsersSort)
53 }
54}
55
56module.exports = result
57
58// Border Radius
59let prefixBorderRadius = require('caniuse-lite/data/features/border-radius')
60
61f(prefixBorderRadius, browsers =>
62 prefix(
63 [
64 'border-radius',
65 'border-top-left-radius',
66 'border-top-right-radius',
67 'border-bottom-right-radius',
68 'border-bottom-left-radius'
69 ],
70 {
71 browsers,
72 feature: 'border-radius',
73 mistakes: ['-khtml-', '-ms-', '-o-']
74 }
75 )
76)
77
78// Box Shadow
79let prefixBoxshadow = require('caniuse-lite/data/features/css-boxshadow')
80
81f(prefixBoxshadow, browsers =>
82 prefix(['box-shadow'], {
83 browsers,
84 feature: 'css-boxshadow',
85 mistakes: ['-khtml-']
86 })
87)
88
89// Animation
90let prefixAnimation = require('caniuse-lite/data/features/css-animation')
91
92f(prefixAnimation, browsers =>
93 prefix(
94 [
95 'animation',
96 'animation-name',
97 'animation-duration',
98 'animation-delay',
99 'animation-direction',
100 'animation-fill-mode',
101 'animation-iteration-count',
102 'animation-play-state',
103 'animation-timing-function',
104 '@keyframes'
105 ],
106 {
107 browsers,
108 feature: 'css-animation',
109 mistakes: ['-khtml-', '-ms-']
110 }
111 )
112)
113
114// Transition
115let prefixTransition = require('caniuse-lite/data/features/css-transitions')
116
117f(prefixTransition, browsers =>
118 prefix(
119 [
120 'transition',
121 'transition-property',
122 'transition-duration',
123 'transition-delay',
124 'transition-timing-function'
125 ],
126 {
127 browsers,
128 feature: 'css-transitions',
129 mistakes: ['-khtml-', '-ms-']
130 }
131 )
132)
133
134// Transform 2D
135let prefixTransform2d = require('caniuse-lite/data/features/transforms2d')
136
137f(prefixTransform2d, browsers =>
138 prefix(['transform', 'transform-origin'], {
139 browsers,
140 feature: 'transforms2d'
141 })
142)
143
144// Transform 3D
145let prefixTransforms3d = require('caniuse-lite/data/features/transforms3d')
146
147f(prefixTransforms3d, browsers => {
148 prefix(['perspective', 'perspective-origin'], {
149 browsers,
150 feature: 'transforms3d'
151 })
152 return prefix(['transform-style'], {
153 browsers,
154 feature: 'transforms3d',
155 mistakes: ['-ms-', '-o-']
156 })
157})
158
159f(prefixTransforms3d, { match: /y\sx|y\s#2/ }, browsers =>
160 prefix(['backface-visibility'], {
161 browsers,
162 feature: 'transforms3d',
163 mistakes: ['-ms-', '-o-']
164 })
165)
166
167// Gradients
168let prefixGradients = require('caniuse-lite/data/features/css-gradients')
169
170f(prefixGradients, { match: /y\sx/ }, browsers =>
171 prefix(
172 [
173 'linear-gradient',
174 'repeating-linear-gradient',
175 'radial-gradient',
176 'repeating-radial-gradient'
177 ],
178 {
179 browsers,
180 feature: 'css-gradients',
181 mistakes: ['-ms-'],
182 props: [
183 'background',
184 'background-image',
185 'border-image',
186 'mask',
187 'list-style',
188 'list-style-image',
189 'content',
190 'mask-image'
191 ]
192 }
193 )
194)
195
196f(prefixGradients, { match: /a\sx/ }, browsers => {
197 browsers = browsers.map(i => {
198 if (/firefox|op/.test(i)) {
199 return i
200 } else {
201 return `${i} old`
202 }
203 })
204 return add(
205 [
206 'linear-gradient',
207 'repeating-linear-gradient',
208 'radial-gradient',
209 'repeating-radial-gradient'
210 ],
211 {
212 browsers,
213 feature: 'css-gradients'
214 }
215 )
216})
217
218// Box sizing
219let prefixBoxsizing = require('caniuse-lite/data/features/css3-boxsizing')
220
221f(prefixBoxsizing, browsers =>
222 prefix(['box-sizing'], {
223 browsers,
224 feature: 'css3-boxsizing'
225 })
226)
227
228// Filter Effects
229let prefixFilters = require('caniuse-lite/data/features/css-filters')
230
231f(prefixFilters, browsers =>
232 prefix(['filter'], {
233 browsers,
234 feature: 'css-filters'
235 })
236)
237
238// filter() function
239let prefixFilterFunction = require('caniuse-lite/data/features/css-filter-function')
240
241f(prefixFilterFunction, browsers =>
242 prefix(['filter-function'], {
243 browsers,
244 feature: 'css-filter-function',
245 props: [
246 'background',
247 'background-image',
248 'border-image',
249 'mask',
250 'list-style',
251 'list-style-image',
252 'content',
253 'mask-image'
254 ]
255 })
256)
257
258// Backdrop-filter
259let prefixBackdropFilter = require('caniuse-lite/data/features/css-backdrop-filter')
260
261f(prefixBackdropFilter, { match: /y\sx|y\s#2/ }, browsers =>
262 prefix(['backdrop-filter'], {
263 browsers,
264 feature: 'css-backdrop-filter'
265 })
266)
267
268// element() function
269let prefixElementFunction = require('caniuse-lite/data/features/css-element-function')
270
271f(prefixElementFunction, browsers =>
272 prefix(['element'], {
273 browsers,
274 feature: 'css-element-function',
275 props: [
276 'background',
277 'background-image',
278 'border-image',
279 'mask',
280 'list-style',
281 'list-style-image',
282 'content',
283 'mask-image'
284 ]
285 })
286)
287
288// Multicolumns
289let prefixMulticolumns = require('caniuse-lite/data/features/multicolumn')
290
291f(prefixMulticolumns, browsers => {
292 prefix(
293 [
294 'columns',
295 'column-width',
296 'column-gap',
297 'column-rule',
298 'column-rule-color',
299 'column-rule-width',
300 'column-count',
301 'column-rule-style',
302 'column-span',
303 'column-fill'
304 ],
305 {
306 browsers,
307 feature: 'multicolumn'
308 }
309 )
310
311 let noff = browsers.filter(i => !/firefox/.test(i))
312 prefix(['break-before', 'break-after', 'break-inside'], {
313 browsers: noff,
314 feature: 'multicolumn'
315 })
316})
317
318// User select
319let prefixUserSelect = require('caniuse-lite/data/features/user-select-none')
320
321f(prefixUserSelect, browsers =>
322 prefix(['user-select'], {
323 browsers,
324 feature: 'user-select-none',
325 mistakes: ['-khtml-']
326 })
327)
328
329// Flexible Box Layout
330let prefixFlexbox = require('caniuse-lite/data/features/flexbox')
331
332f(prefixFlexbox, { match: /a\sx/ }, browsers => {
333 browsers = browsers.map(i => {
334 if (/ie|firefox/.test(i)) {
335 return i
336 } else {
337 return `${i} 2009`
338 }
339 })
340 prefix(['display-flex', 'inline-flex'], {
341 browsers,
342 feature: 'flexbox',
343 props: ['display']
344 })
345 prefix(['flex', 'flex-grow', 'flex-shrink', 'flex-basis'], {
346 browsers,
347 feature: 'flexbox'
348 })
349 prefix(
350 [
351 'flex-direction',
352 'flex-wrap',
353 'flex-flow',
354 'justify-content',
355 'order',
356 'align-items',
357 'align-self',
358 'align-content'
359 ],
360 {
361 browsers,
362 feature: 'flexbox'
363 }
364 )
365})
366
367f(prefixFlexbox, { match: /y\sx/ }, browsers => {
368 add(['display-flex', 'inline-flex'], {
369 browsers,
370 feature: 'flexbox'
371 })
372 add(['flex', 'flex-grow', 'flex-shrink', 'flex-basis'], {
373 browsers,
374 feature: 'flexbox'
375 })
376 add(
377 [
378 'flex-direction',
379 'flex-wrap',
380 'flex-flow',
381 'justify-content',
382 'order',
383 'align-items',
384 'align-self',
385 'align-content'
386 ],
387 {
388 browsers,
389 feature: 'flexbox'
390 }
391 )
392})
393
394// calc() unit
395let prefixCalc = require('caniuse-lite/data/features/calc')
396
397f(prefixCalc, browsers =>
398 prefix(['calc'], {
399 browsers,
400 feature: 'calc',
401 props: ['*']
402 })
403)
404
405// Background options
406let prefixBackgroundOptions = require('caniuse-lite/data/features/background-img-opts')
407
408f(prefixBackgroundOptions, browsers =>
409 prefix(['background-origin', 'background-size'], {
410 browsers,
411 feature: 'background-img-opts'
412 })
413)
414
415// background-clip: text
416let prefixBackgroundClipText = require('caniuse-lite/data/features/background-clip-text')
417
418f(prefixBackgroundClipText, browsers =>
419 prefix(['background-clip'], {
420 browsers,
421 feature: 'background-clip-text'
422 })
423)
424
425// Font feature settings
426let prefixFontFeature = require('caniuse-lite/data/features/font-feature')
427
428f(prefixFontFeature, browsers =>
429 prefix(
430 [
431 'font-feature-settings',
432 'font-variant-ligatures',
433 'font-language-override'
434 ],
435 {
436 browsers,
437 feature: 'font-feature'
438 }
439 )
440)
441
442// CSS font-kerning property
443let prefixFontKerning = require('caniuse-lite/data/features/font-kerning')
444
445f(prefixFontKerning, browsers =>
446 prefix(['font-kerning'], {
447 browsers,
448 feature: 'font-kerning'
449 })
450)
451
452// Border image
453let prefixBorderImage = require('caniuse-lite/data/features/border-image')
454
455f(prefixBorderImage, browsers =>
456 prefix(['border-image'], {
457 browsers,
458 feature: 'border-image'
459 })
460)
461
462// Selection selector
463let prefixSelection = require('caniuse-lite/data/features/css-selection')
464
465f(prefixSelection, browsers =>
466 prefix(['::selection'], {
467 browsers,
468 feature: 'css-selection',
469 selector: true
470 })
471)
472
473// Placeholder selector
474let prefixPlaceholder = require('caniuse-lite/data/features/css-placeholder')
475
476f(prefixPlaceholder, browsers => {
477 prefix(['::placeholder'], {
478 browsers: browsers.concat(['ie 10 old', 'ie 11 old', 'firefox 18 old']),
479 feature: 'css-placeholder',
480 selector: true
481 })
482})
483
484// Placeholder-shown selector
485let prefixPlaceholderShown = require('caniuse-lite/data/features/css-placeholder-shown')
486
487f(prefixPlaceholderShown, browsers => {
488 prefix([':placeholder-shown'], {
489 browsers,
490 feature: 'css-placeholder-shown',
491 selector: true
492 })
493})
494
495// Hyphenation
496let prefixHyphens = require('caniuse-lite/data/features/css-hyphens')
497
498f(prefixHyphens, browsers =>
499 prefix(['hyphens'], {
500 browsers,
501 feature: 'css-hyphens'
502 })
503)
504
505// Fullscreen selector
506let prefixFullscreen = require('caniuse-lite/data/features/fullscreen')
507
508f(prefixFullscreen, browsers =>
509 prefix([':fullscreen'], {
510 browsers,
511 feature: 'fullscreen',
512 selector: true
513 })
514)
515
516// ::backdrop pseudo-element
517// https://caniuse.com/mdn-css_selectors_backdrop
518let prefixBackdrop = require('caniuse-lite/data/features/mdn-css-backdrop-pseudo-element')
519
520f(prefixBackdrop, browsers =>
521 prefix(['::backdrop'], {
522 browsers,
523 feature: 'backdrop',
524 selector: true
525 })
526)
527
528// File selector button
529let prefixFileSelectorButton = require('caniuse-lite/data/features/css-file-selector-button')
530
531f(prefixFileSelectorButton, browsers =>
532 prefix(['::file-selector-button'], {
533 browsers,
534 feature: 'file-selector-button',
535 selector: true
536 })
537)
538
539// :autofill
540let prefixAutofill = require('caniuse-lite/data/features/css-autofill')
541
542f(prefixAutofill, browsers =>
543 prefix([':autofill'], {
544 browsers,
545 feature: 'css-autofill',
546 selector: true
547 })
548)
549
550// Tab size
551let prefixTabsize = require('caniuse-lite/data/features/css3-tabsize')
552
553f(prefixTabsize, browsers =>
554 prefix(['tab-size'], {
555 browsers,
556 feature: 'css3-tabsize'
557 })
558)
559
560// Intrinsic & extrinsic sizing
561let prefixIntrinsic = require('caniuse-lite/data/features/intrinsic-width')
562
563let sizeProps = [
564 'width',
565 'min-width',
566 'max-width',
567 'height',
568 'min-height',
569 'max-height',
570 'inline-size',
571 'min-inline-size',
572 'max-inline-size',
573 'block-size',
574 'min-block-size',
575 'max-block-size',
576 'grid',
577 'grid-template',
578 'grid-template-rows',
579 'grid-template-columns',
580 'grid-auto-columns',
581 'grid-auto-rows'
582]
583
584f(prefixIntrinsic, browsers =>
585 prefix(['max-content', 'min-content'], {
586 browsers,
587 feature: 'intrinsic-width',
588 props: sizeProps
589 })
590)
591
592f(prefixIntrinsic, { match: /x|\s#4/ }, browsers =>
593 prefix(['fill', 'fill-available'], {
594 browsers,
595 feature: 'intrinsic-width',
596 props: sizeProps
597 })
598)
599
600f(prefixIntrinsic, { match: /x|\s#5/ }, browsers => {
601 let ffFix = browsers.filter(i => {
602 let [name, version] = i.split(' ')
603 if (name === 'firefox' || name === 'and_ff') {
604 return parseInt(version) < 94
605 } else {
606 return true
607 }
608 })
609 return prefix(['fit-content'], {
610 browsers: ffFix,
611 feature: 'intrinsic-width',
612 props: sizeProps
613 })
614})
615
616// Stretch value
617
618let prefixStretch = require('caniuse-lite/data/features/css-width-stretch')
619
620f(prefixStretch, browsers => {
621 f(prefixIntrinsic, { match: /x|\s#2/ }, firefox => {
622 browsers = browsers.concat(firefox)
623 })
624 return prefix(['stretch'], {
625 browsers,
626 feature: 'css-width-stretch',
627 props: sizeProps
628 })
629})
630
631// Zoom cursors
632let prefixCursorsNew = require('caniuse-lite/data/features/css3-cursors-newer')
633
634f(prefixCursorsNew, browsers =>
635 prefix(['zoom-in', 'zoom-out'], {
636 browsers,
637 feature: 'css3-cursors-newer',
638 props: ['cursor']
639 })
640)
641
642// Grab cursors
643let prefixCursorsGrab = require('caniuse-lite/data/features/css3-cursors-grab')
644
645f(prefixCursorsGrab, browsers =>
646 prefix(['grab', 'grabbing'], {
647 browsers,
648 feature: 'css3-cursors-grab',
649 props: ['cursor']
650 })
651)
652
653// Sticky position
654let prefixSticky = require('caniuse-lite/data/features/css-sticky')
655
656f(prefixSticky, browsers =>
657 prefix(['sticky'], {
658 browsers,
659 feature: 'css-sticky',
660 props: ['position']
661 })
662)
663
664// Pointer Events
665let prefixPointer = require('caniuse-lite/data/features/pointer')
666
667f(prefixPointer, browsers =>
668 prefix(['touch-action'], {
669 browsers,
670 feature: 'pointer'
671 })
672)
673
674// Text decoration
675let prefixDecoration = require('caniuse-lite/data/features/text-decoration')
676
677f(prefixDecoration, { match: /x.*#[235]/ }, browsers =>
678 prefix(['text-decoration-skip', 'text-decoration-skip-ink'], {
679 browsers,
680 feature: 'text-decoration'
681 })
682)
683
684let prefixDecorationShorthand = require('caniuse-lite/data/features/mdn-text-decoration-shorthand')
685
686f(prefixDecorationShorthand, browsers =>
687 prefix(['text-decoration'], {
688 browsers,
689 feature: 'text-decoration'
690 })
691)
692
693let prefixDecorationColor = require('caniuse-lite/data/features/mdn-text-decoration-color')
694
695f(prefixDecorationColor, browsers =>
696 prefix(['text-decoration-color'], {
697 browsers,
698 feature: 'text-decoration'
699 })
700)
701
702let prefixDecorationLine = require('caniuse-lite/data/features/mdn-text-decoration-line')
703
704f(prefixDecorationLine, browsers =>
705 prefix(['text-decoration-line'], {
706 browsers,
707 feature: 'text-decoration'
708 })
709)
710
711let prefixDecorationStyle = require('caniuse-lite/data/features/mdn-text-decoration-style')
712
713f(prefixDecorationStyle, browsers =>
714 prefix(['text-decoration-style'], {
715 browsers,
716 feature: 'text-decoration'
717 })
718)
719
720// Text Size Adjust
721let prefixTextSizeAdjust = require('caniuse-lite/data/features/text-size-adjust')
722
723f(prefixTextSizeAdjust, browsers =>
724 prefix(['text-size-adjust'], {
725 browsers,
726 feature: 'text-size-adjust'
727 })
728)
729
730// CSS Masks
731let prefixCssMasks = require('caniuse-lite/data/features/css-masks')
732
733f(prefixCssMasks, browsers => {
734 prefix(
735 [
736 'mask-clip',
737 'mask-composite',
738 'mask-image',
739 'mask-origin',
740 'mask-repeat',
741 'mask-border-repeat',
742 'mask-border-source'
743 ],
744 {
745 browsers,
746 feature: 'css-masks'
747 }
748 )
749 prefix(
750 [
751 'mask',
752 'mask-position',
753 'mask-size',
754 'mask-border',
755 'mask-border-outset',
756 'mask-border-width',
757 'mask-border-slice'
758 ],
759 {
760 browsers,
761 feature: 'css-masks'
762 }
763 )
764})
765
766// CSS clip-path property
767let prefixClipPath = require('caniuse-lite/data/features/css-clip-path')
768
769f(prefixClipPath, browsers =>
770 prefix(['clip-path'], {
771 browsers,
772 feature: 'css-clip-path'
773 })
774)
775
776// Fragmented Borders and Backgrounds
777let prefixBoxdecoration = require('caniuse-lite/data/features/css-boxdecorationbreak')
778
779f(prefixBoxdecoration, browsers =>
780 prefix(['box-decoration-break'], {
781 browsers,
782 feature: 'css-boxdecorationbreak'
783 })
784)
785
786// CSS3 object-fit/object-position
787let prefixObjectFit = require('caniuse-lite/data/features/object-fit')
788
789f(prefixObjectFit, browsers =>
790 prefix(['object-fit', 'object-position'], {
791 browsers,
792 feature: 'object-fit'
793 })
794)
795
796// CSS Shapes
797let prefixShapes = require('caniuse-lite/data/features/css-shapes')
798
799f(prefixShapes, browsers =>
800 prefix(['shape-margin', 'shape-outside', 'shape-image-threshold'], {
801 browsers,
802 feature: 'css-shapes'
803 })
804)
805
806// CSS3 text-overflow
807let prefixTextOverflow = require('caniuse-lite/data/features/text-overflow')
808
809f(prefixTextOverflow, browsers =>
810 prefix(['text-overflow'], {
811 browsers,
812 feature: 'text-overflow'
813 })
814)
815
816// Viewport at-rule
817let prefixDeviceadaptation = require('caniuse-lite/data/features/css-deviceadaptation')
818
819f(prefixDeviceadaptation, browsers =>
820 prefix(['@viewport'], {
821 browsers,
822 feature: 'css-deviceadaptation'
823 })
824)
825
826// Resolution Media Queries
827let prefixResolut = require('caniuse-lite/data/features/css-media-resolution')
828
829f(prefixResolut, { match: /( x($| )|a #2)/ }, browsers =>
830 prefix(['@resolution'], {
831 browsers,
832 feature: 'css-media-resolution'
833 })
834)
835
836// CSS text-align-last
837let prefixTextAlignLast = require('caniuse-lite/data/features/css-text-align-last')
838
839f(prefixTextAlignLast, browsers =>
840 prefix(['text-align-last'], {
841 browsers,
842 feature: 'css-text-align-last'
843 })
844)
845
846// Crisp Edges Image Rendering Algorithm
847let prefixCrispedges = require('caniuse-lite/data/features/css-crisp-edges')
848
849f(prefixCrispedges, { match: /y x|a x #1/ }, browsers =>
850 prefix(['pixelated'], {
851 browsers,
852 feature: 'css-crisp-edges',
853 props: ['image-rendering']
854 })
855)
856
857f(prefixCrispedges, { match: /a x #2/ }, browsers =>
858 prefix(['image-rendering'], {
859 browsers,
860 feature: 'css-crisp-edges'
861 })
862)
863
864// Logical Properties
865let prefixLogicalProps = require('caniuse-lite/data/features/css-logical-props')
866
867f(prefixLogicalProps, browsers =>
868 prefix(
869 [
870 'border-inline-start',
871 'border-inline-end',
872 'margin-inline-start',
873 'margin-inline-end',
874 'padding-inline-start',
875 'padding-inline-end'
876 ],
877 {
878 browsers,
879 feature: 'css-logical-props'
880 }
881 )
882)
883
884f(prefixLogicalProps, { match: /x\s#2/ }, browsers =>
885 prefix(
886 [
887 'border-block-start',
888 'border-block-end',
889 'margin-block-start',
890 'margin-block-end',
891 'padding-block-start',
892 'padding-block-end'
893 ],
894 {
895 browsers,
896 feature: 'css-logical-props'
897 }
898 )
899)
900
901// CSS appearance
902let prefixAppearance = require('caniuse-lite/data/features/css-appearance')
903
904f(prefixAppearance, { match: /#2|x/ }, browsers =>
905 prefix(['appearance'], {
906 browsers,
907 feature: 'css-appearance'
908 })
909)
910
911// CSS Scroll snap points
912let prefixSnappoints = require('caniuse-lite/data/features/css-snappoints')
913
914f(prefixSnappoints, browsers =>
915 prefix(
916 [
917 'scroll-snap-type',
918 'scroll-snap-coordinate',
919 'scroll-snap-destination',
920 'scroll-snap-points-x',
921 'scroll-snap-points-y'
922 ],
923 {
924 browsers,
925 feature: 'css-snappoints'
926 }
927 )
928)
929
930// CSS Regions
931let prefixRegions = require('caniuse-lite/data/features/css-regions')
932
933f(prefixRegions, browsers =>
934 prefix(['flow-into', 'flow-from', 'region-fragment'], {
935 browsers,
936 feature: 'css-regions'
937 })
938)
939
940// CSS image-set
941let prefixImageSet = require('caniuse-lite/data/features/css-image-set')
942
943f(prefixImageSet, browsers =>
944 prefix(['image-set'], {
945 browsers,
946 feature: 'css-image-set',
947 props: [
948 'background',
949 'background-image',
950 'border-image',
951 'cursor',
952 'mask',
953 'mask-image',
954 'list-style',
955 'list-style-image',
956 'content'
957 ]
958 })
959)
960
961// Writing Mode
962let prefixWritingMode = require('caniuse-lite/data/features/css-writing-mode')
963
964f(prefixWritingMode, { match: /a|x/ }, browsers =>
965 prefix(['writing-mode'], {
966 browsers,
967 feature: 'css-writing-mode'
968 })
969)
970
971// Cross-Fade Function
972let prefixCrossFade = require('caniuse-lite/data/features/css-cross-fade')
973
974f(prefixCrossFade, browsers =>
975 prefix(['cross-fade'], {
976 browsers,
977 feature: 'css-cross-fade',
978 props: [
979 'background',
980 'background-image',
981 'border-image',
982 'mask',
983 'list-style',
984 'list-style-image',
985 'content',
986 'mask-image'
987 ]
988 })
989)
990
991// Read Only selector
992let prefixReadOnly = require('caniuse-lite/data/features/css-read-only-write')
993
994f(prefixReadOnly, browsers =>
995 prefix([':read-only', ':read-write'], {
996 browsers,
997 feature: 'css-read-only-write',
998 selector: true
999 })
1000)
1001
1002// Text Emphasize
1003let prefixTextEmphasis = require('caniuse-lite/data/features/text-emphasis')
1004
1005f(prefixTextEmphasis, browsers =>
1006 prefix(
1007 [
1008 'text-emphasis',
1009 'text-emphasis-position',
1010 'text-emphasis-style',
1011 'text-emphasis-color'
1012 ],
1013 {
1014 browsers,
1015 feature: 'text-emphasis'
1016 }
1017 )
1018)
1019
1020// CSS Grid Layout
1021let prefixGrid = require('caniuse-lite/data/features/css-grid')
1022
1023f(prefixGrid, browsers => {
1024 prefix(['display-grid', 'inline-grid'], {
1025 browsers,
1026 feature: 'css-grid',
1027 props: ['display']
1028 })
1029 prefix(
1030 [
1031 'grid-template-columns',
1032 'grid-template-rows',
1033 'grid-row-start',
1034 'grid-column-start',
1035 'grid-row-end',
1036 'grid-column-end',
1037 'grid-row',
1038 'grid-column',
1039 'grid-area',
1040 'grid-template',
1041 'grid-template-areas',
1042 'place-self'
1043 ],
1044 {
1045 browsers,
1046 feature: 'css-grid'
1047 }
1048 )
1049})
1050
1051f(prefixGrid, { match: /a x/ }, browsers =>
1052 prefix(['grid-column-align', 'grid-row-align'], {
1053 browsers,
1054 feature: 'css-grid'
1055 })
1056)
1057
1058// CSS text-spacing
1059let prefixTextSpacing = require('caniuse-lite/data/features/css-text-spacing')
1060
1061f(prefixTextSpacing, browsers =>
1062 prefix(['text-spacing'], {
1063 browsers,
1064 feature: 'css-text-spacing'
1065 })
1066)
1067
1068// :any-link selector
1069let prefixAnyLink = require('caniuse-lite/data/features/css-any-link')
1070
1071f(prefixAnyLink, browsers =>
1072 prefix([':any-link'], {
1073 browsers,
1074 feature: 'css-any-link',
1075 selector: true
1076 })
1077)
1078
1079// unicode-bidi
1080
1081let bidiIsolate = require('caniuse-lite/data/features/mdn-css-unicode-bidi-isolate')
1082
1083f(bidiIsolate, browsers =>
1084 prefix(['isolate'], {
1085 browsers,
1086 feature: 'css-unicode-bidi',
1087 props: ['unicode-bidi']
1088 })
1089)
1090
1091let bidiPlaintext = require('caniuse-lite/data/features/mdn-css-unicode-bidi-plaintext')
1092
1093f(bidiPlaintext, browsers =>
1094 prefix(['plaintext'], {
1095 browsers,
1096 feature: 'css-unicode-bidi',
1097 props: ['unicode-bidi']
1098 })
1099)
1100
1101let bidiOverride = require('caniuse-lite/data/features/mdn-css-unicode-bidi-isolate-override')
1102
1103f(bidiOverride, { match: /y x/ }, browsers =>
1104 prefix(['isolate-override'], {
1105 browsers,
1106 feature: 'css-unicode-bidi',
1107 props: ['unicode-bidi']
1108 })
1109)
1110
1111// overscroll-behavior selector
1112let prefixOverscroll = require('caniuse-lite/data/features/css-overscroll-behavior')
1113
1114f(prefixOverscroll, { match: /a #1/ }, browsers =>
1115 prefix(['overscroll-behavior'], {
1116 browsers,
1117 feature: 'css-overscroll-behavior'
1118 })
1119)
1120
1121// text-orientation
1122let prefixTextOrientation = require('caniuse-lite/data/features/css-text-orientation')
1123
1124f(prefixTextOrientation, browsers =>
1125 prefix(['text-orientation'], {
1126 browsers,
1127 feature: 'css-text-orientation'
1128 })
1129)
1130
1131// print-color-adjust
1132let prefixPrintAdjust = require('caniuse-lite/data/features/css-print-color-adjust')
1133
1134f(prefixPrintAdjust, browsers =>
1135 prefix(['print-color-adjust', 'color-adjust'], {
1136 browsers,
1137 feature: 'css-print-color-adjust'
1138 })
1139)
Note: See TracBrowser for help on using the repository browser.