* Fixed issue [#574](https://github.com/jakubpawlowicz/clean-css/issues/574) - rewriting internal URLs.
* Fixed issue [#575](https://github.com/jakubpawlowicz/clean-css/issues/575) - missing directory as a `target`.
* Fixed issue [#577](https://github.com/jakubpawlowicz/clean-css/issues/577) - `background-clip` into shorthand.
+* Fixed issue [#579](https://github.com/jakubpawlowicz/clean-css/issues/579) - `background-origin` into shorthand.
[3.2.10 / 2015-05-14](https://github.com/jakubpawlowicz/clean-css/compare/v3.2.9...v3.2.10)
==================
with the following options available:
* `'[+-]colors.opacity'` - - turn on (+) / off (-) `rgba()` / `hsla()` declarations removal
-* `'[+-]properties.backgroundSizeMerging'` - turn on / off background-size merging into shorthand
* `'[+-]properties.backgroundClipMerging'` - turn on / off background-clip merging into shorthand
+* `'[+-]properties.backgroundOriginMerging'` - turn on / off background-origin merging into shorthand
+* `'[+-]properties.backgroundSizeMerging'` - turn on / off background-size merging into shorthand
* `'[+-]properties.colors'` - turn on / off any color optimizations
* `'[+-]properties.iePrefixHack'` - turn on / off IE prefix hack removal
* `'[+-]properties.ieSuffixHack'` - turn on / off IE suffix hack removal
if (everyCombination(mayOverride, component, right, validator)) {
var disabledBackgroundMerging =
!compatibility.properties.backgroundClipMerging && component.name.indexOf('background-clip') > -1 ||
+ !compatibility.properties.backgroundOriginMerging && component.name.indexOf('background-origin') > -1 ||
!compatibility.properties.backgroundSizeMerging && component.name.indexOf('background-size') > -1;
var nonMergeableValue = compactable[right.name].nonMergeableValue === right.value[0][0];
},
properties: {
backgroundClipMerging: false, // background-clip to shorthand
+ backgroundOriginMerging: false, // background-origin to shorthand
backgroundSizeMerging: false, // background-size to shorthand
colors: true, // any kind of color transformations, like `#ff00ff` to `#f0f` or `#fff` into `red`
iePrefixHack: false, // underscore / asterisk prefix hacks on IE
},
properties: {
backgroundClipMerging: false,
+ backgroundOriginMerging: false,
backgroundSizeMerging: false,
colors: true,
iePrefixHack: true,
},
properties: {
backgroundClipMerging: false,
+ backgroundOriginMerging: false,
backgroundSizeMerging: false,
colors: true,
iePrefixHack: true,
'div{background:content-box #000}'
]
}),
- 'background-origin': cssContext({
- 'inside background shorthand': [
- 'div{background:content-box #000}',
- 'div{background:content-box #000}'
- ],
- 'into background shorthand': [
- 'div{background:#000;background-origin:content-box}',
- 'div{background:content-box border-box #000}'
- ]
- }),
'background size with +properties.backgroundSizeMerging': cssContext({
'with background-size property': [
'a{background:none;background-image:url(1.png);background-size:28px 28px}',
]);
}
},
+ 'shorthand then longhand - disabled background origin merging': {
+ 'topic': 'p{background:__ESCAPED_URL_CLEAN_CSS0__;background-origin:border-box}',
+ 'into': function (topic) {
+ assert.deepEqual(_optimize(topic, { properties: { backgroundOriginMerging: false } }), [
+ [['background', false , false], ['__ESCAPED_URL_CLEAN_CSS0__']],
+ [['background-origin', false , false], ['border-box']]
+ ]);
+ }
+ },
+ 'shorthand then longhand - enabled background origin merging': {
+ 'topic': 'p{background:__ESCAPED_URL_CLEAN_CSS0__;background-origin:border-box}',
+ 'into': function (topic) {
+ assert.deepEqual(_optimize(topic, { properties: { backgroundOriginMerging: true } }), [
+ [['background', false , false], ['__ESCAPED_URL_CLEAN_CSS0__'], ['border-box']]
+ ]);
+ }
+ },
'shorthand then longhand - non mergeable value': {
'topic': 'p{background:__ESCAPED_URL_CLEAN_CSS0__;background-color:none}',
'into': function (topic) {
assert.isTrue(options.colors.opacity);
assert.isTrue(options.properties.colors);
assert.isFalse(options.properties.backgroundClipMerging);
+ assert.isFalse(options.properties.backgroundOriginMerging);
assert.isFalse(options.properties.backgroundSizeMerging);
assert.isFalse(options.properties.iePrefixHack);
assert.isFalse(options.properties.ieSuffixHack);
'gets merged options': function(options) {
assert.isTrue(options.colors.opacity);
assert.isFalse(options.properties.backgroundClipMerging);
+ assert.isFalse(options.properties.backgroundOriginMerging);
assert.isFalse(options.properties.backgroundSizeMerging);
assert.isTrue(options.properties.colors);
assert.isFalse(options.properties.iePrefixHack);
'gets template options': function(options) {
assert.isFalse(options.colors.opacity);
assert.isFalse(options.properties.backgroundClipMerging);
+ assert.isFalse(options.properties.backgroundOriginMerging);
assert.isFalse(options.properties.backgroundSizeMerging);
assert.isTrue(options.properties.colors);
assert.isTrue(options.properties.iePrefixHack);
'gets template options': function(options) {
assert.isFalse(options.colors.opacity);
assert.isFalse(options.properties.backgroundClipMerging);
+ assert.isFalse(options.properties.backgroundOriginMerging);
assert.isFalse(options.properties.backgroundSizeMerging);
assert.isTrue(options.properties.colors);
assert.isTrue(options.properties.iePrefixHack);
'gets calculated options': function(options) {
assert.isTrue(options.colors.opacity);
assert.isFalse(options.properties.backgroundClipMerging);
+ assert.isFalse(options.properties.backgroundOriginMerging);
assert.isFalse(options.properties.backgroundSizeMerging);
assert.isTrue(options.properties.colors);
assert.isFalse(options.properties.iePrefixHack);
assert.isTrue(options.colors.opacity);
assert.isTrue(options.properties.colors);
assert.isFalse(options.properties.backgroundClipMerging);
+ assert.isFalse(options.properties.backgroundOriginMerging);
assert.isFalse(options.properties.backgroundSizeMerging);
assert.isTrue(options.properties.iePrefixHack);
assert.isFalse(options.properties.ieSuffixHack);
assert.isTrue(options.colors.opacity);
assert.isTrue(options.properties.colors);
assert.isFalse(options.properties.backgroundClipMerging);
+ assert.isFalse(options.properties.backgroundOriginMerging);
assert.isFalse(options.properties.backgroundSizeMerging);
assert.isTrue(options.properties.iePrefixHack);
assert.isFalse(options.properties.ieSuffixHack);