diff --git a/lib/optimizer/level-2/compactable.js b/lib/optimizer/level-2/compactable.js index 88c3ea19f..e77c635d2 100644 --- a/lib/optimizer/level-2/compactable.js +++ b/lib/optimizer/level-2/compactable.js @@ -57,11 +57,17 @@ var compactable = { }, 'background-clip': { canOverride: canOverride.always, + componentOf: [ + 'background' + ], defaultValue: 'border-box', shortestValue: 'border-box' }, 'background-color': { canOverride: canOverride.color, + componentOf: [ + 'background' + ], defaultValue: 'transparent', multiplexLastOnly: true, nonMergeableValue: 'none', @@ -69,32 +75,50 @@ var compactable = { }, 'background-image': { canOverride: canOverride.backgroundImage, + componentOf: [ + 'background' + ], defaultValue: 'none' }, 'background-origin': { canOverride: canOverride.always, + componentOf: [ + 'background' + ], defaultValue: 'padding-box', shortestValue: 'border-box' }, 'background-repeat': { canOverride: canOverride.always, + componentOf: [ + 'background' + ], defaultValue: ['repeat'], doubleValues: true }, 'background-position': { canOverride: canOverride.alwaysButIntoFunction, + componentOf: [ + 'background' + ], defaultValue: ['0', '0'], doubleValues: true, shortestValue: '0' }, 'background-size': { canOverride: canOverride.alwaysButIntoFunction, + componentOf: [ + 'background' + ], defaultValue: ['auto'], doubleValues: true, shortestValue: '0 0' }, 'background-attachment': { canOverride: canOverride.always, + componentOf: [ + 'background' + ], defaultValue: 'scroll' }, 'border': { @@ -106,22 +130,206 @@ var compactable = { 'border-color' ], defaultValue: 'none', + overridesShorthands: [ + 'border-bottom', + 'border-left', + 'border-right', + 'border-top' + ], + restore: restore.withoutDefaults, + shorthand: true, + shorthandComponents: true + }, + 'border-bottom': { + breakUp: breakUp.border, + canOverride: canOverride.border, + components: [ + 'border-bottom-width', + 'border-bottom-style', + 'border-bottom-color' + ], + defaultValue: 'none', restore: restore.withoutDefaults, shorthand: true }, + 'border-bottom-color': { + canOverride: canOverride.color, + componentOf: [ + 'border-bottom', + 'border-color' + ], + defaultValue: 'none' + }, + 'border-bottom-style': { + canOverride: canOverride.always, + componentOf: [ + 'border-bottom', + 'border-style' + ], + defaultValue: 'none' + }, + 'border-bottom-width': { + canOverride: canOverride.unit, + componentOf: [ + 'border-bottom', + 'border-width' + ], + defaultValue: 'medium', + shortestValue: '0' + }, 'border-color': { + breakUp: breakUp.fourValues, + canOverride: canOverride.color, + componentOf: ['border'], + components: [ + 'border-top-color', + 'border-right-color', + 'border-bottom-color', + 'border-left-color' + ], + defaultValue: 'none', + restore: restore.fourValues, + shortestValue: 'red', + shorthand: true + }, + 'border-left': { + breakUp: breakUp.border, + canOverride: canOverride.border, + components: [ + 'border-left-width', + 'border-left-style', + 'border-left-color' + ], + defaultValue: 'none', + restore: restore.withoutDefaults, + shorthand: true + }, + 'border-left-color': { canOverride: canOverride.color, + componentOf: [ + 'border-color', + 'border-left' + ], + defaultValue: 'none' + }, + 'border-left-style': { + canOverride: canOverride.always, + componentOf: [ + 'border-left', + 'border-style' + ], + defaultValue: 'none' + }, + 'border-left-width': { + canOverride: canOverride.unit, + componentOf: [ + 'border-left', + 'border-width' + ], + defaultValue: 'medium', + shortestValue: '0' + }, + 'border-right': { + breakUp: breakUp.border, + canOverride: canOverride.border, + components: [ + 'border-right-width', + 'border-right-style', + 'border-right-color' + ], defaultValue: 'none', + restore: restore.withoutDefaults, shorthand: true }, + 'border-right-color': { + canOverride: canOverride.color, + componentOf: [ + 'border-color', + 'border-right' + ], + defaultValue: 'none' + }, + 'border-right-style': { + canOverride: canOverride.always, + componentOf: [ + 'border-right', + 'border-style' + ], + defaultValue: 'none' + }, + 'border-right-width': { + canOverride: canOverride.unit, + componentOf: [ + 'border-right', + 'border-width' + ], + defaultValue: 'medium', + shortestValue: '0' + }, 'border-style': { + breakUp: breakUp.fourValues, canOverride: canOverride.always, + componentOf: [ + 'border' + ], + components: [ + 'border-top-style', + 'border-right-style', + 'border-bottom-style', + 'border-left-style' + ], defaultValue: 'none', + restore: restore.fourValues, shorthand: true }, + 'border-top': { + breakUp: breakUp.border, + canOverride: canOverride.border, + components: [ + 'border-top-width', + 'border-top-style', + 'border-top-color' + ], + defaultValue: 'none', + restore: restore.withoutDefaults, + shorthand: true + }, + 'border-top-color': { + canOverride: canOverride.color, + componentOf: [ + 'border-color', + 'border-top' + ], + defaultValue: 'none' + }, + 'border-top-style': { + canOverride: canOverride.always, + componentOf: [ + 'border-style', + 'border-top' + ], + defaultValue: 'none' + }, + 'border-top-width': { + canOverride: canOverride.unit, + componentOf: [ + 'border-top', + 'border-width' + ], + defaultValue: 'medium', + shortestValue: '0' + }, 'border-width': { + breakUp: breakUp.fourValues, canOverride: canOverride.unit, + components: [ + 'border-top-width', + 'border-right-width', + 'border-bottom-width', + 'border-left-width' + ], defaultValue: 'medium', + restore: restore.fourValues, shortestValue: '0', shorthand: true }, @@ -150,6 +358,9 @@ var compactable = { }, 'list-style-type' : { canOverride: canOverride.always, + componentOf: [ + 'list-style' + ], defaultValue: '__hack', // NOTE: we can't tell the real default value here, it's 'disc' for