CoolFace
Datasetpublic

basant307/AI_Governance_Project

sourceHugging Faceapache-2.0updated 2mo agoView on Hugging Face
0likes48downloads
prefixes.js1140 linesDownload Raw Back to data
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 18  } else if (a[0] < b[0]) {9    return -110  } else {11    return Math.sign(parseFloat(a[1]) - parseFloat(b[1]))12  }13}14 15// Convert Can I Use data16function 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 properties40let 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].browsers51      .concat(data.browsers)52      .sort(browsersSort)53  }54}55 56module.exports = result57 58// Border Radius59let 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 Shadow79let 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// Animation90let 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// Transition115let 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 2D135let 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 3D145let 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// Gradients168let 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 i200    } 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 sizing219let 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 Effects229let 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() function239let 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-filter259let 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() function269let 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// Multicolumns289let 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 select319let 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 Layout330let 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 i336    } 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() unit395let 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 options406let 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: text416let 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 settings426let 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 property443let 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 image453let 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 selector463let prefixSelection = require('caniuse-lite/data/features/css-selection')464 465f(prefixSelection, browsers =>466  prefix(['::selection'], {467    browsers,468    feature: 'css-selection',469    selector: true470  })471)472 473// Placeholder selector474let 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: true481  })482})483 484// Placeholder-shown selector485let 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: true492  })493})494 495// Hyphenation496let 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 selector506let prefixFullscreen = require('caniuse-lite/data/features/fullscreen')507 508f(prefixFullscreen, browsers =>509  prefix([':fullscreen'], {510    browsers,511    feature: 'fullscreen',512    selector: true513  })514)515 516// ::backdrop pseudo-element517// https://caniuse.com/mdn-css_selectors_backdrop518let 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: true525  })526)527 528// File selector button529let 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: true536  })537)538 539// :autofill540let prefixAutofill = require('caniuse-lite/data/features/css-autofill')541 542f(prefixAutofill, browsers =>543  prefix([':autofill'], {544    browsers,545    feature: 'css-autofill',546    selector: true547  })548)549 550// Tab size551let 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 sizing561let 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: sizeProps589  })590)591 592f(prefixIntrinsic, { match: /x|\s#4/ }, browsers =>593  prefix(['fill', 'fill-available'], {594    browsers,595    feature: 'intrinsic-width',596    props: sizeProps597  })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) < 94605    } else {606      return true607    }608  })609  return prefix(['fit-content'], {610    browsers: ffFix,611    feature: 'intrinsic-width',612    props: sizeProps613  })614})615 616// Stretch value617 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: sizeProps628  })629})630 631// Zoom cursors632let 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 cursors643let 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 position654let 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 Events665let 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 decoration675let 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 Adjust721let 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 Masks731let 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 property767let 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 Backgrounds777let 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-position787let 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 Shapes797let 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-overflow807let 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-rule817let 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 Queries827let 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-last837let 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 Algorithm847let 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 Properties865let 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 appearance902let 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 points912let 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 Regions931let 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-set941let 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 Mode962let 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 Function972let 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 selector992let 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: true999  })1000)1001 1002// Text Emphasize1003let 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 Layout1021let 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-spacing1059let 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 selector1069let 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: true1076  })1077)1078 1079// unicode-bidi1080 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 selector1112let 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-orientation1122let 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-adjust1132let 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)1140 
basant307/AI_Governance_Project · CoolFace