Начат фронтенд
This commit is contained in:
370
node_modules/autoprefixer/lib/prefixes.js
generated
vendored
370
node_modules/autoprefixer/lib/prefixes.js
generated
vendored
@@ -1,71 +1,71 @@
|
||||
let AtRule = require('./at-rule')
|
||||
let Browsers = require('./browsers')
|
||||
let vendor = require('./vendor')
|
||||
let Declaration = require('./declaration')
|
||||
let hackAlignContent = require('./hacks/align-content')
|
||||
let hackAlignItems = require('./hacks/align-items')
|
||||
let hackAlignSelf = require('./hacks/align-self')
|
||||
let Resolution = require('./resolution')
|
||||
let Transition = require('./transition')
|
||||
let Processor = require('./processor')
|
||||
let Supports = require('./supports')
|
||||
let Browsers = require('./browsers')
|
||||
let Selector = require('./selector')
|
||||
let AtRule = require('./at-rule')
|
||||
let Value = require('./value')
|
||||
let utils = require('./utils')
|
||||
let hackFullscreen = require('./hacks/fullscreen')
|
||||
let hackPlaceholder = require('./hacks/placeholder')
|
||||
let hackPlaceholderShown = require('./hacks/placeholder-shown')
|
||||
let hackFileSelectorButton = require('./hacks/file-selector-button')
|
||||
let hackFlex = require('./hacks/flex')
|
||||
let hackOrder = require('./hacks/order')
|
||||
let hackFilter = require('./hacks/filter')
|
||||
let hackGridEnd = require('./hacks/grid-end')
|
||||
let hackAnimation = require('./hacks/animation')
|
||||
let hackFlexFlow = require('./hacks/flex-flow')
|
||||
let hackFlexGrow = require('./hacks/flex-grow')
|
||||
let hackFlexWrap = require('./hacks/flex-wrap')
|
||||
let hackGridArea = require('./hacks/grid-area')
|
||||
let hackPlaceSelf = require('./hacks/place-self')
|
||||
let hackGridStart = require('./hacks/grid-start')
|
||||
let hackAlignSelf = require('./hacks/align-self')
|
||||
let hackAppearance = require('./hacks/appearance')
|
||||
let hackAutofill = require('./hacks/autofill')
|
||||
let hackFlexBasis = require('./hacks/flex-basis')
|
||||
let hackMaskBorder = require('./hacks/mask-border')
|
||||
let hackMaskComposite = require('./hacks/mask-composite')
|
||||
let hackAlignItems = require('./hacks/align-items')
|
||||
let hackUserSelect = require('./hacks/user-select')
|
||||
let hackFlexShrink = require('./hacks/flex-shrink')
|
||||
let hackBreakProps = require('./hacks/break-props')
|
||||
let hackWritingMode = require('./hacks/writing-mode')
|
||||
let hackBorderImage = require('./hacks/border-image')
|
||||
let hackAlignContent = require('./hacks/align-content')
|
||||
let hackBorderRadius = require('./hacks/border-radius')
|
||||
let hackBlockLogical = require('./hacks/block-logical')
|
||||
let hackGridTemplate = require('./hacks/grid-template')
|
||||
let hackInlineLogical = require('./hacks/inline-logical')
|
||||
let hackGridRowAlign = require('./hacks/grid-row-align')
|
||||
let hackTransformDecl = require('./hacks/transform-decl')
|
||||
let hackFlexDirection = require('./hacks/flex-direction')
|
||||
let hackImageRendering = require('./hacks/image-rendering')
|
||||
let hackBackdropFilter = require('./hacks/backdrop-filter')
|
||||
let hackBackgroundClip = require('./hacks/background-clip')
|
||||
let hackTextDecoration = require('./hacks/text-decoration')
|
||||
let hackJustifyContent = require('./hacks/justify-content')
|
||||
let hackBackgroundSize = require('./hacks/background-size')
|
||||
let hackBlockLogical = require('./hacks/block-logical')
|
||||
let hackBorderImage = require('./hacks/border-image')
|
||||
let hackBorderRadius = require('./hacks/border-radius')
|
||||
let hackBreakProps = require('./hacks/break-props')
|
||||
let hackGridRowColumn = require('./hacks/grid-row-column')
|
||||
let hackGridRowsColumns = require('./hacks/grid-rows-columns')
|
||||
let hackGridColumnAlign = require('./hacks/grid-column-align')
|
||||
let hackPrintColorAdjust = require('./hacks/print-color-adjust')
|
||||
let hackOverscrollBehavior = require('./hacks/overscroll-behavior')
|
||||
let hackGridTemplateAreas = require('./hacks/grid-template-areas')
|
||||
let hackTextEmphasisPosition = require('./hacks/text-emphasis-position')
|
||||
let hackTextDecorationSkipInk = require('./hacks/text-decoration-skip-ink')
|
||||
let hackGradient = require('./hacks/gradient')
|
||||
let hackIntrinsic = require('./hacks/intrinsic')
|
||||
let hackPixelated = require('./hacks/pixelated')
|
||||
let hackImageSet = require('./hacks/image-set')
|
||||
let hackCrossFade = require('./hacks/cross-fade')
|
||||
let hackDisplayFlex = require('./hacks/display-flex')
|
||||
let hackDisplayGrid = require('./hacks/display-grid')
|
||||
let hackFileSelectorButton = require('./hacks/file-selector-button')
|
||||
let hackFilter = require('./hacks/filter')
|
||||
let hackFilterValue = require('./hacks/filter-value')
|
||||
let hackFlex = require('./hacks/flex')
|
||||
let hackFlexBasis = require('./hacks/flex-basis')
|
||||
let hackFlexDirection = require('./hacks/flex-direction')
|
||||
let hackFlexFlow = require('./hacks/flex-flow')
|
||||
let hackFlexGrow = require('./hacks/flex-grow')
|
||||
let hackFlexShrink = require('./hacks/flex-shrink')
|
||||
let hackFlexWrap = require('./hacks/flex-wrap')
|
||||
let hackFullscreen = require('./hacks/fullscreen')
|
||||
let hackGradient = require('./hacks/gradient')
|
||||
let hackGridArea = require('./hacks/grid-area')
|
||||
let hackGridColumnAlign = require('./hacks/grid-column-align')
|
||||
let hackGridEnd = require('./hacks/grid-end')
|
||||
let hackGridRowAlign = require('./hacks/grid-row-align')
|
||||
let hackGridRowColumn = require('./hacks/grid-row-column')
|
||||
let hackGridRowsColumns = require('./hacks/grid-rows-columns')
|
||||
let hackGridStart = require('./hacks/grid-start')
|
||||
let hackGridTemplate = require('./hacks/grid-template')
|
||||
let hackGridTemplateAreas = require('./hacks/grid-template-areas')
|
||||
let hackImageRendering = require('./hacks/image-rendering')
|
||||
let hackImageSet = require('./hacks/image-set')
|
||||
let hackInlineLogical = require('./hacks/inline-logical')
|
||||
let hackIntrinsic = require('./hacks/intrinsic')
|
||||
let hackJustifyContent = require('./hacks/justify-content')
|
||||
let hackMaskBorder = require('./hacks/mask-border')
|
||||
let hackMaskComposite = require('./hacks/mask-composite')
|
||||
let hackOrder = require('./hacks/order')
|
||||
let hackOverscrollBehavior = require('./hacks/overscroll-behavior')
|
||||
let hackPixelated = require('./hacks/pixelated')
|
||||
let hackPlaceSelf = require('./hacks/place-self')
|
||||
let hackPlaceholder = require('./hacks/placeholder')
|
||||
let hackPlaceholderShown = require('./hacks/placeholder-shown')
|
||||
let hackPrintColorAdjust = require('./hacks/print-color-adjust')
|
||||
let hackTextDecoration = require('./hacks/text-decoration')
|
||||
let hackTextDecorationSkipInk = require('./hacks/text-decoration-skip-ink')
|
||||
let hackTextEmphasisPosition = require('./hacks/text-emphasis-position')
|
||||
let hackTransformDecl = require('./hacks/transform-decl')
|
||||
let hackUserSelect = require('./hacks/user-select')
|
||||
let hackWritingMode = require('./hacks/writing-mode')
|
||||
let Processor = require('./processor')
|
||||
let Resolution = require('./resolution')
|
||||
let Selector = require('./selector')
|
||||
let Supports = require('./supports')
|
||||
let Transition = require('./transition')
|
||||
let utils = require('./utils')
|
||||
let Value = require('./value')
|
||||
let vendor = require('./vendor')
|
||||
let hackAutofill = require('./hacks/autofill')
|
||||
|
||||
Selector.hack(hackAutofill)
|
||||
Selector.hack(hackFullscreen)
|
||||
@@ -156,77 +156,76 @@ class Prefixes {
|
||||
}
|
||||
|
||||
/**
|
||||
* Declaration loader with caching
|
||||
* Select prefixes from data, which is necessary for selected browsers
|
||||
*/
|
||||
decl(prop) {
|
||||
if (!declsCache.has(prop)) {
|
||||
declsCache.set(prop, Declaration.load(prop))
|
||||
}
|
||||
select(list) {
|
||||
let selected = { add: {}, remove: {} }
|
||||
|
||||
return declsCache.get(prop)
|
||||
}
|
||||
|
||||
/**
|
||||
* Group declaration by unprefixed property to check them
|
||||
*/
|
||||
group(decl) {
|
||||
let rule = decl.parent
|
||||
let index = rule.index(decl)
|
||||
let { length } = rule.nodes
|
||||
let unprefixed = this.unprefixed(decl.prop)
|
||||
|
||||
let checker = (step, callback) => {
|
||||
index += step
|
||||
while (index >= 0 && index < length) {
|
||||
let other = rule.nodes[index]
|
||||
if (other.type === 'decl') {
|
||||
if (step === -1 && other.prop === unprefixed) {
|
||||
if (!Browsers.withPrefix(other.value)) {
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
if (this.unprefixed(other.prop) !== unprefixed) {
|
||||
break
|
||||
} else if (callback(other) === true) {
|
||||
return true
|
||||
}
|
||||
|
||||
if (step === +1 && other.prop === unprefixed) {
|
||||
if (!Browsers.withPrefix(other.value)) {
|
||||
break
|
||||
}
|
||||
}
|
||||
for (let name in list) {
|
||||
let data = list[name]
|
||||
let add = data.browsers.map(i => {
|
||||
let params = i.split(' ')
|
||||
return {
|
||||
browser: `${params[0]} ${params[1]}`,
|
||||
note: params[2]
|
||||
}
|
||||
})
|
||||
|
||||
index += step
|
||||
let notes = add
|
||||
.filter(i => i.note)
|
||||
.map(i => `${this.browsers.prefix(i.browser)} ${i.note}`)
|
||||
notes = utils.uniq(notes)
|
||||
|
||||
add = add
|
||||
.filter(i => this.browsers.isSelected(i.browser))
|
||||
.map(i => {
|
||||
let prefix = this.browsers.prefix(i.browser)
|
||||
if (i.note) {
|
||||
return `${prefix} ${i.note}`
|
||||
} else {
|
||||
return prefix
|
||||
}
|
||||
})
|
||||
add = this.sort(utils.uniq(add))
|
||||
|
||||
if (this.options.flexbox === 'no-2009') {
|
||||
add = add.filter(i => !i.includes('2009'))
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
return {
|
||||
down(callback) {
|
||||
return checker(+1, callback)
|
||||
},
|
||||
up(callback) {
|
||||
return checker(-1, callback)
|
||||
let all = data.browsers.map(i => this.browsers.prefix(i))
|
||||
if (data.mistakes) {
|
||||
all = all.concat(data.mistakes)
|
||||
}
|
||||
all = all.concat(notes)
|
||||
all = utils.uniq(all)
|
||||
|
||||
if (add.length) {
|
||||
selected.add[name] = add
|
||||
if (add.length < all.length) {
|
||||
selected.remove[name] = all.filter(i => !add.includes(i))
|
||||
}
|
||||
} else {
|
||||
selected.remove[name] = all
|
||||
}
|
||||
}
|
||||
|
||||
return selected
|
||||
}
|
||||
|
||||
/**
|
||||
* Normalize prefix for remover
|
||||
* Sort vendor prefixes
|
||||
*/
|
||||
normalize(prop) {
|
||||
return this.decl(prop).normalize(prop)
|
||||
}
|
||||
sort(prefixes) {
|
||||
return prefixes.sort((a, b) => {
|
||||
let aLength = utils.removeNote(a).length
|
||||
let bLength = utils.removeNote(b).length
|
||||
|
||||
/**
|
||||
* Return prefixed version of property
|
||||
*/
|
||||
prefixed(prop, prefix) {
|
||||
prop = vendor.unprefixed(prop)
|
||||
return this.decl(prop).prefixed(prop, prefix)
|
||||
if (aLength === bLength) {
|
||||
return b.length - a.length
|
||||
} else {
|
||||
return bLength - aLength
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -234,8 +233,8 @@ class Prefixes {
|
||||
*/
|
||||
preprocess(selected) {
|
||||
let add = {
|
||||
'@supports': new Supports(Prefixes, this),
|
||||
'selectors': []
|
||||
'selectors': [],
|
||||
'@supports': new Supports(Prefixes, this)
|
||||
}
|
||||
for (let name in selected.add) {
|
||||
let prefixes = selected.add[name]
|
||||
@@ -325,76 +324,14 @@ class Prefixes {
|
||||
}
|
||||
|
||||
/**
|
||||
* Select prefixes from data, which is necessary for selected browsers
|
||||
* Declaration loader with caching
|
||||
*/
|
||||
select(list) {
|
||||
let selected = { add: {}, remove: {} }
|
||||
|
||||
for (let name in list) {
|
||||
let data = list[name]
|
||||
let add = data.browsers.map(i => {
|
||||
let params = i.split(' ')
|
||||
return {
|
||||
browser: `${params[0]} ${params[1]}`,
|
||||
note: params[2]
|
||||
}
|
||||
})
|
||||
|
||||
let notes = add
|
||||
.filter(i => i.note)
|
||||
.map(i => `${this.browsers.prefix(i.browser)} ${i.note}`)
|
||||
notes = utils.uniq(notes)
|
||||
|
||||
add = add
|
||||
.filter(i => this.browsers.isSelected(i.browser))
|
||||
.map(i => {
|
||||
let prefix = this.browsers.prefix(i.browser)
|
||||
if (i.note) {
|
||||
return `${prefix} ${i.note}`
|
||||
} else {
|
||||
return prefix
|
||||
}
|
||||
})
|
||||
add = this.sort(utils.uniq(add))
|
||||
|
||||
if (this.options.flexbox === 'no-2009') {
|
||||
add = add.filter(i => !i.includes('2009'))
|
||||
}
|
||||
|
||||
let all = data.browsers.map(i => this.browsers.prefix(i))
|
||||
if (data.mistakes) {
|
||||
all = all.concat(data.mistakes)
|
||||
}
|
||||
all = all.concat(notes)
|
||||
all = utils.uniq(all)
|
||||
|
||||
if (add.length) {
|
||||
selected.add[name] = add
|
||||
if (add.length < all.length) {
|
||||
selected.remove[name] = all.filter(i => !add.includes(i))
|
||||
}
|
||||
} else {
|
||||
selected.remove[name] = all
|
||||
}
|
||||
decl(prop) {
|
||||
if (!declsCache.has(prop)) {
|
||||
declsCache.set(prop, Declaration.load(prop))
|
||||
}
|
||||
|
||||
return selected
|
||||
}
|
||||
|
||||
/**
|
||||
* Sort vendor prefixes
|
||||
*/
|
||||
sort(prefixes) {
|
||||
return prefixes.sort((a, b) => {
|
||||
let aLength = utils.removeNote(a).length
|
||||
let bLength = utils.removeNote(b).length
|
||||
|
||||
if (aLength === bLength) {
|
||||
return b.length - a.length
|
||||
} else {
|
||||
return bLength - aLength
|
||||
}
|
||||
})
|
||||
return declsCache.get(prop)
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -408,6 +345,21 @@ class Prefixes {
|
||||
return value
|
||||
}
|
||||
|
||||
/**
|
||||
* Normalize prefix for remover
|
||||
*/
|
||||
normalize(prop) {
|
||||
return this.decl(prop).normalize(prop)
|
||||
}
|
||||
|
||||
/**
|
||||
* Return prefixed version of property
|
||||
*/
|
||||
prefixed(prop, prefix) {
|
||||
prop = vendor.unprefixed(prop)
|
||||
return this.decl(prop).prefixed(prop, prefix)
|
||||
}
|
||||
|
||||
/**
|
||||
* Return values, which must be prefixed in selected property
|
||||
*/
|
||||
@@ -423,6 +375,54 @@ class Prefixes {
|
||||
return global || values || []
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Group declaration by unprefixed property to check them
|
||||
*/
|
||||
group(decl) {
|
||||
let rule = decl.parent
|
||||
let index = rule.index(decl)
|
||||
let { length } = rule.nodes
|
||||
let unprefixed = this.unprefixed(decl.prop)
|
||||
|
||||
let checker = (step, callback) => {
|
||||
index += step
|
||||
while (index >= 0 && index < length) {
|
||||
let other = rule.nodes[index]
|
||||
if (other.type === 'decl') {
|
||||
if (step === -1 && other.prop === unprefixed) {
|
||||
if (!Browsers.withPrefix(other.value)) {
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
if (this.unprefixed(other.prop) !== unprefixed) {
|
||||
break
|
||||
} else if (callback(other) === true) {
|
||||
return true
|
||||
}
|
||||
|
||||
if (step === +1 && other.prop === unprefixed) {
|
||||
if (!Browsers.withPrefix(other.value)) {
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
index += step
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
return {
|
||||
up(callback) {
|
||||
return checker(-1, callback)
|
||||
},
|
||||
down(callback) {
|
||||
return checker(+1, callback)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = Prefixes
|
||||
|
||||
Reference in New Issue
Block a user