source: frontend/node_modules/autoprefixer/data/prefixes.js

Last change on this file was 9af201e, checked in by MBK <marija.karapandzova@…>, 12 days ago

Fix frontend appearance

  • Property mode set to 100644
File size: 23.4 KB
Line 
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-position-x',
754 'mask-position-y',
755 'mask-size',
756 'mask-border',
757 'mask-border-outset',
758 'mask-border-width',
759 'mask-border-slice'
760 ],
761 {
762 browsers,
763 feature: 'css-masks'
764 }
765 )
766})
767
768// CSS clip-path property
769let prefixClipPath = require('caniuse-lite/data/features/css-clip-path')
770
771f(prefixClipPath, browsers =>
772 prefix(['clip-path'], {
773 browsers,
774 feature: 'css-clip-path'
775 })
776)
777
778// Fragmented Borders and Backgrounds
779let prefixBoxdecoration = require('caniuse-lite/data/features/css-boxdecorationbreak')
780
781f(prefixBoxdecoration, browsers =>
782 prefix(['box-decoration-break'], {
783 browsers,
784 feature: 'css-boxdecorationbreak'
785 })
786)
787
788// CSS3 object-fit/object-position
789let prefixObjectFit = require('caniuse-lite/data/features/object-fit')
790
791f(prefixObjectFit, browsers =>
792 prefix(['object-fit', 'object-position'], {
793 browsers,
794 feature: 'object-fit'
795 })
796)
797
798// CSS Shapes
799let prefixShapes = require('caniuse-lite/data/features/css-shapes')
800
801f(prefixShapes, browsers =>
802 prefix(['shape-margin', 'shape-outside', 'shape-image-threshold'], {
803 browsers,
804 feature: 'css-shapes'
805 })
806)
807
808// CSS3 text-overflow
809let prefixTextOverflow = require('caniuse-lite/data/features/text-overflow')
810
811f(prefixTextOverflow, browsers =>
812 prefix(['text-overflow'], {
813 browsers,
814 feature: 'text-overflow'
815 })
816)
817
818// Viewport at-rule
819let prefixDeviceadaptation = require('caniuse-lite/data/features/css-deviceadaptation')
820
821f(prefixDeviceadaptation, browsers =>
822 prefix(['@viewport'], {
823 browsers,
824 feature: 'css-deviceadaptation'
825 })
826)
827
828// Resolution Media Queries
829let prefixResolut = require('caniuse-lite/data/features/css-media-resolution')
830
831f(prefixResolut, { match: /( x($| )|a #2)/ }, browsers =>
832 prefix(['@resolution'], {
833 browsers,
834 feature: 'css-media-resolution'
835 })
836)
837
838// CSS text-align-last
839let prefixTextAlignLast = require('caniuse-lite/data/features/css-text-align-last')
840
841f(prefixTextAlignLast, browsers =>
842 prefix(['text-align-last'], {
843 browsers,
844 feature: 'css-text-align-last'
845 })
846)
847
848// Crisp Edges Image Rendering Algorithm
849let prefixCrispedges = require('caniuse-lite/data/features/css-crisp-edges')
850
851f(prefixCrispedges, { match: /y x|a x #1/ }, browsers =>
852 prefix(['pixelated'], {
853 browsers,
854 feature: 'css-crisp-edges',
855 props: ['image-rendering']
856 })
857)
858
859f(prefixCrispedges, { match: /a x #2/ }, browsers =>
860 prefix(['image-rendering'], {
861 browsers,
862 feature: 'css-crisp-edges'
863 })
864)
865
866// Logical Properties
867let prefixLogicalProps = require('caniuse-lite/data/features/css-logical-props')
868
869f(prefixLogicalProps, browsers =>
870 prefix(
871 [
872 'border-inline-start',
873 'border-inline-end',
874 'margin-inline-start',
875 'margin-inline-end',
876 'padding-inline-start',
877 'padding-inline-end'
878 ],
879 {
880 browsers,
881 feature: 'css-logical-props'
882 }
883 )
884)
885
886f(prefixLogicalProps, { match: /x\s#2/ }, browsers =>
887 prefix(
888 [
889 'border-block-start',
890 'border-block-end',
891 'margin-block-start',
892 'margin-block-end',
893 'padding-block-start',
894 'padding-block-end'
895 ],
896 {
897 browsers,
898 feature: 'css-logical-props'
899 }
900 )
901)
902
903// CSS appearance
904let prefixAppearance = require('caniuse-lite/data/features/css-appearance')
905
906f(prefixAppearance, { match: /#2|x/ }, browsers =>
907 prefix(['appearance'], {
908 browsers,
909 feature: 'css-appearance'
910 })
911)
912
913// CSS Scroll snap points
914let prefixSnappoints = require('caniuse-lite/data/features/css-snappoints')
915
916f(prefixSnappoints, browsers =>
917 prefix(
918 [
919 'scroll-snap-type',
920 'scroll-snap-coordinate',
921 'scroll-snap-destination',
922 'scroll-snap-points-x',
923 'scroll-snap-points-y'
924 ],
925 {
926 browsers,
927 feature: 'css-snappoints'
928 }
929 )
930)
931
932// CSS Regions
933let prefixRegions = require('caniuse-lite/data/features/css-regions')
934
935f(prefixRegions, browsers =>
936 prefix(['flow-into', 'flow-from', 'region-fragment'], {
937 browsers,
938 feature: 'css-regions'
939 })
940)
941
942// CSS image-set
943let prefixImageSet = require('caniuse-lite/data/features/css-image-set')
944
945f(prefixImageSet, browsers =>
946 prefix(['image-set'], {
947 browsers,
948 feature: 'css-image-set',
949 props: [
950 'background',
951 'background-image',
952 'border-image',
953 'cursor',
954 'mask',
955 'mask-image',
956 'list-style',
957 'list-style-image',
958 'content'
959 ]
960 })
961)
962
963// Writing Mode
964let prefixWritingMode = require('caniuse-lite/data/features/css-writing-mode')
965
966f(prefixWritingMode, { match: /a|x/ }, browsers =>
967 prefix(['writing-mode'], {
968 browsers,
969 feature: 'css-writing-mode'
970 })
971)
972
973// Cross-Fade Function
974let prefixCrossFade = require('caniuse-lite/data/features/css-cross-fade')
975
976f(prefixCrossFade, browsers =>
977 prefix(['cross-fade'], {
978 browsers,
979 feature: 'css-cross-fade',
980 props: [
981 'background',
982 'background-image',
983 'border-image',
984 'mask',
985 'list-style',
986 'list-style-image',
987 'content',
988 'mask-image'
989 ]
990 })
991)
992
993// Read Only selector
994let prefixReadOnly = require('caniuse-lite/data/features/css-read-only-write')
995
996f(prefixReadOnly, browsers =>
997 prefix([':read-only', ':read-write'], {
998 browsers,
999 feature: 'css-read-only-write',
1000 selector: true
1001 })
1002)
1003
1004// Text Emphasize
1005let prefixTextEmphasis = require('caniuse-lite/data/features/text-emphasis')
1006
1007f(prefixTextEmphasis, browsers =>
1008 prefix(
1009 [
1010 'text-emphasis',
1011 'text-emphasis-position',
1012 'text-emphasis-style',
1013 'text-emphasis-color'
1014 ],
1015 {
1016 browsers,
1017 feature: 'text-emphasis'
1018 }
1019 )
1020)
1021
1022// CSS Grid Layout
1023let prefixGrid = require('caniuse-lite/data/features/css-grid')
1024
1025f(prefixGrid, browsers => {
1026 prefix(['display-grid', 'inline-grid'], {
1027 browsers,
1028 feature: 'css-grid',
1029 props: ['display']
1030 })
1031 prefix(
1032 [
1033 'grid-template-columns',
1034 'grid-template-rows',
1035 'grid-row-start',
1036 'grid-column-start',
1037 'grid-row-end',
1038 'grid-column-end',
1039 'grid-row',
1040 'grid-column',
1041 'grid-area',
1042 'grid-template',
1043 'grid-template-areas',
1044 'place-self'
1045 ],
1046 {
1047 browsers,
1048 feature: 'css-grid'
1049 }
1050 )
1051})
1052
1053f(prefixGrid, { match: /a x/ }, browsers =>
1054 prefix(['grid-column-align', 'grid-row-align'], {
1055 browsers,
1056 feature: 'css-grid'
1057 })
1058)
1059
1060// CSS text-spacing
1061let prefixTextSpacing = require('caniuse-lite/data/features/css-text-spacing')
1062
1063f(prefixTextSpacing, browsers =>
1064 prefix(['text-spacing'], {
1065 browsers,
1066 feature: 'css-text-spacing'
1067 })
1068)
1069
1070// :any-link selector
1071let prefixAnyLink = require('caniuse-lite/data/features/css-any-link')
1072
1073f(prefixAnyLink, browsers =>
1074 prefix([':any-link'], {
1075 browsers,
1076 feature: 'css-any-link',
1077 selector: true
1078 })
1079)
1080
1081// unicode-bidi
1082
1083let bidiIsolate = require('caniuse-lite/data/features/mdn-css-unicode-bidi-isolate')
1084
1085f(bidiIsolate, browsers =>
1086 prefix(['isolate'], {
1087 browsers,
1088 feature: 'css-unicode-bidi',
1089 props: ['unicode-bidi']
1090 })
1091)
1092
1093let bidiPlaintext = require('caniuse-lite/data/features/mdn-css-unicode-bidi-plaintext')
1094
1095f(bidiPlaintext, browsers =>
1096 prefix(['plaintext'], {
1097 browsers,
1098 feature: 'css-unicode-bidi',
1099 props: ['unicode-bidi']
1100 })
1101)
1102
1103let bidiOverride = require('caniuse-lite/data/features/mdn-css-unicode-bidi-isolate-override')
1104
1105f(bidiOverride, { match: /y x/ }, browsers =>
1106 prefix(['isolate-override'], {
1107 browsers,
1108 feature: 'css-unicode-bidi',
1109 props: ['unicode-bidi']
1110 })
1111)
1112
1113// overscroll-behavior selector
1114let prefixOverscroll = require('caniuse-lite/data/features/css-overscroll-behavior')
1115
1116f(prefixOverscroll, { match: /a #1/ }, browsers =>
1117 prefix(['overscroll-behavior'], {
1118 browsers,
1119 feature: 'css-overscroll-behavior'
1120 })
1121)
1122
1123// text-orientation
1124let prefixTextOrientation = require('caniuse-lite/data/features/css-text-orientation')
1125
1126f(prefixTextOrientation, browsers =>
1127 prefix(['text-orientation'], {
1128 browsers,
1129 feature: 'css-text-orientation'
1130 })
1131)
1132
1133// print-color-adjust
1134let prefixPrintAdjust = require('caniuse-lite/data/features/css-print-color-adjust')
1135
1136f(prefixPrintAdjust, browsers =>
1137 prefix(['print-color-adjust', 'color-adjust'], {
1138 browsers,
1139 feature: 'css-print-color-adjust'
1140 })
1141)
Note: See TracBrowser for help on using the repository browser.