compass 1.0.0.alpha.21 → 1.0.0.rc.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Rakefile +11 -5
- data/features/command_line.feature +5 -25
- data/features/step_definitions/command_line_steps.rb +3 -3
- data/lib/compass.rb +2 -2
- data/lib/compass/actions.rb +4 -3
- data/lib/compass/commands/update_project.rb +50 -45
- data/lib/compass/commands/watch_project.rb +62 -13
- data/lib/compass/compiler.rb +2 -0
- data/lib/compass/configuration/adapters.rb +21 -0
- data/lib/compass/configuration/helpers.rb +8 -0
- data/lib/compass/deprecation.rb +19 -0
- data/lib/compass/exec/global_options_parser.rb +0 -4
- data/lib/compass/generated_version.rb +4 -0
- data/lib/compass/logger.rb +31 -18
- data/lib/compass/sass_compiler.rb +134 -0
- data/lib/compass/sass_extensions/functions/sprites.rb +3 -3
- data/lib/compass/sprite_importer.rb +1 -1
- data/lib/compass/version.rb +29 -31
- data/test/fixtures/stylesheets/compass/css/background-clip.css +2 -0
- data/test/fixtures/stylesheets/compass/css/background-origin.css +2 -0
- data/test/fixtures/stylesheets/compass/css/background-size.css +3 -0
- data/test/fixtures/stylesheets/compass/css/browser-support.css +22 -11
- data/test/fixtures/stylesheets/compass/css/filters.css +6 -6
- data/test/fixtures/stylesheets/compass/css/grid_background.css +4 -0
- data/test/fixtures/stylesheets/compass/css/support.css +6 -6
- data/test/fixtures/stylesheets/compass/css/transition.css +19 -0
- data/test/fixtures/stylesheets/compass/css/vertical_rhythm_with_ems.css +1 -0
- data/test/fixtures/stylesheets/compass/css/vertical_rhythm_with_px.css +1 -0
- data/test/fixtures/stylesheets/compass/css/vertical_rhythm_with_rems.css +1 -0
- data/test/fixtures/stylesheets/sourcemaps/css/another_simple.css +1 -0
- data/test/fixtures/stylesheets/sourcemaps/css/another_simple.css.map +2 -1
- data/test/fixtures/stylesheets/sourcemaps/css/simple.css +1 -0
- data/test/fixtures/stylesheets/sourcemaps/css/simple.css.map +2 -1
- data/test/fixtures/stylesheets/sourcemaps/css/with_libraries.css +1 -0
- data/test/fixtures/stylesheets/sourcemaps/css/with_libraries.css.map +2 -1
- data/test/integrations/compass_test.rb +5 -4
- data/test/units/caniuse_test.rb +8 -2
- data/test/units/command_line_test.rb +3 -3
- data/test/units/compiler_test.rb +7 -2
- data/test/units/configuration_test.rb +1 -1
- metadata +9 -22
- data/RELEASE_VERSION +0 -1
- data/VERSION +0 -1
- data/lib/compass/watcher.rb +0 -11
- data/lib/compass/watcher/compiler.rb +0 -60
- data/lib/compass/watcher/project_watcher.rb +0 -179
- data/lib/compass/watcher/watch.rb +0 -51
- data/test/fixtures/stylesheets/valid/css/another_simple.css +0 -4
- data/test/fixtures/stylesheets/valid/css/simple.css +0 -4
- data/test/units/watcher/compiler_test.rb +0 -39
- data/test/units/watcher/project_watcher_test.rb +0 -85
- data/test/units/watcher/watch_test.rb +0 -42
@@ -95,9 +95,17 @@ module Compass
|
|
95
95
|
end
|
96
96
|
end
|
97
97
|
|
98
|
+
# @deprecated
|
98
99
|
def compiler
|
100
|
+
Compass::Deprecation.deprecated!(:compiler_accessor,
|
101
|
+
"Compass.compiler is deprecated. Use Compass.sass_compiler instead.")
|
102
|
+
Compass::Deprecation.mark_as_issued(:compass_compiler_constructor)
|
99
103
|
Compass::Compiler.new(*Compass.configuration.to_compiler_arguments)
|
100
104
|
end
|
105
|
+
|
106
|
+
def sass_compiler(*args)
|
107
|
+
Compass::SassCompiler.new(*args)
|
108
|
+
end
|
101
109
|
end
|
102
110
|
end
|
103
111
|
|
@@ -0,0 +1,19 @@
|
|
1
|
+
module Compass
|
2
|
+
module Deprecation
|
3
|
+
class << self
|
4
|
+
attr_accessor :issued_deprecations
|
5
|
+
end
|
6
|
+
self.issued_deprecations = {}
|
7
|
+
|
8
|
+
def self.deprecated!(identifier, message)
|
9
|
+
return if Deprecation.issued_deprecations[identifier]
|
10
|
+
Deprecation.issued_deprecations[identifier] = true
|
11
|
+
warn message
|
12
|
+
warn "Called from #{caller[1]}"
|
13
|
+
end
|
14
|
+
|
15
|
+
def self.mark_as_issued(identifier)
|
16
|
+
Deprecation.issued_deprecations[identifier] = true
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -45,10 +45,6 @@ module Compass::Exec::GlobalOptionsParser
|
|
45
45
|
self.options[:force] = true
|
46
46
|
end
|
47
47
|
|
48
|
-
opts.on('--dry-run', :NONE, 'Dry Run. Tells you what it plans to do.') do
|
49
|
-
self.options[:dry_run] = true
|
50
|
-
end
|
51
|
-
|
52
48
|
opts.on('--boring', :NONE, 'Turn off colorized output.') do
|
53
49
|
self.options[:color_output] = false
|
54
50
|
end
|
data/lib/compass/logger.rb
CHANGED
@@ -2,9 +2,7 @@ module Compass
|
|
2
2
|
|
3
3
|
class Logger
|
4
4
|
|
5
|
-
|
6
|
-
|
7
|
-
COLORS = { :clear => 0, :red => 31, :green => 32, :yellow => 33 }
|
5
|
+
COLORS = { :clear => 0, :red => 31, :green => 32, :yellow => 33, :blue => 34 }
|
8
6
|
|
9
7
|
ACTION_COLORS = {
|
10
8
|
:error => :red,
|
@@ -12,8 +10,14 @@ module Compass
|
|
12
10
|
:info => :green,
|
13
11
|
:compile => :green,
|
14
12
|
:overwrite => :yellow,
|
13
|
+
:modified => :yellow,
|
14
|
+
:clean => :yellow,
|
15
|
+
:write => :green,
|
15
16
|
:create => :green,
|
16
17
|
:remove => :yellow,
|
18
|
+
:delete => :yellow,
|
19
|
+
:deleted => :yellow,
|
20
|
+
:created => :yellow,
|
17
21
|
:exists => :green,
|
18
22
|
:directory => :green,
|
19
23
|
:identical => :green,
|
@@ -21,8 +25,9 @@ module Compass
|
|
21
25
|
:unchanged => :yellow
|
22
26
|
}
|
23
27
|
|
28
|
+
DEFAULT_ACTIONS = ACTION_COLORS.keys
|
24
29
|
|
25
|
-
attr_accessor :actions, :options
|
30
|
+
attr_accessor :actions, :options, :time
|
26
31
|
|
27
32
|
def initialize(*actions)
|
28
33
|
self.options = actions.last.is_a?(Hash) ? actions.pop : {}
|
@@ -33,6 +38,9 @@ module Compass
|
|
33
38
|
# Record an action that has occurred
|
34
39
|
def record(action, *arguments)
|
35
40
|
msg = ""
|
41
|
+
if time
|
42
|
+
msg << Time.now.strftime("%I:%M:%S.%3N %p")
|
43
|
+
end
|
36
44
|
msg << color(ACTION_COLORS[action]) if Compass.configuration.color_output
|
37
45
|
msg << "#{action_padding(action)}#{action}"
|
38
46
|
msg << color(:clear) if Compass.configuration.color_output
|
@@ -40,22 +48,26 @@ module Compass
|
|
40
48
|
log msg
|
41
49
|
end
|
42
50
|
|
51
|
+
def green
|
52
|
+
wrap(:green) { yield }
|
53
|
+
end
|
54
|
+
|
43
55
|
def red
|
44
|
-
|
45
|
-
$stdout.write(color(:red))
|
46
|
-
yield
|
47
|
-
ensure
|
48
|
-
$stderr.write(color(:clear))
|
49
|
-
$stdout.write(color(:clear))
|
56
|
+
wrap(:red) { yield }
|
50
57
|
end
|
51
58
|
|
52
59
|
def yellow
|
53
|
-
|
54
|
-
|
60
|
+
wrap(:yellow) { yield }
|
61
|
+
end
|
62
|
+
|
63
|
+
def wrap(c, reset_to = :clear)
|
64
|
+
$stderr.write(color(c))
|
65
|
+
$stdout.write(color(c))
|
55
66
|
yield
|
56
67
|
ensure
|
57
|
-
$stderr.write(color(
|
58
|
-
$stdout.write(color(
|
68
|
+
$stderr.write(color(reset_to))
|
69
|
+
$stdout.write(color(reset_to))
|
70
|
+
$stdout.flush
|
59
71
|
end
|
60
72
|
|
61
73
|
def color(c)
|
@@ -70,11 +82,13 @@ module Compass
|
|
70
82
|
end
|
71
83
|
end
|
72
84
|
|
85
|
+
# Emit a log message without a trailing newline
|
73
86
|
def emit(msg)
|
74
87
|
print msg
|
88
|
+
$stdout.flush
|
75
89
|
end
|
76
90
|
|
77
|
-
# Emit a log message
|
91
|
+
# Emit a log message with a trailing newline
|
78
92
|
def log(msg)
|
79
93
|
puts msg
|
80
94
|
$stdout.flush
|
@@ -91,15 +105,14 @@ module Compass
|
|
91
105
|
end
|
92
106
|
end
|
93
107
|
|
94
|
-
class NullLogger
|
108
|
+
class NullLogger < Logger
|
95
109
|
def record(*args)
|
96
110
|
end
|
97
111
|
|
98
112
|
def log(msg)
|
99
113
|
end
|
100
114
|
|
101
|
-
def
|
102
|
-
yield
|
115
|
+
def emit(msg)
|
103
116
|
end
|
104
117
|
end
|
105
118
|
end
|
@@ -0,0 +1,134 @@
|
|
1
|
+
require 'sass/plugin'
|
2
|
+
|
3
|
+
class Compass::SassCompiler
|
4
|
+
|
5
|
+
include Compass::Actions
|
6
|
+
|
7
|
+
attr_writer :logger
|
8
|
+
attr_reader :error_count
|
9
|
+
attr_accessor :config
|
10
|
+
attr_accessor :display_compilation_times
|
11
|
+
attr_accessor :working_path
|
12
|
+
attr_accessor :only_sass_files
|
13
|
+
|
14
|
+
def initialize(options = {}, config = Compass.configuration)
|
15
|
+
options = options.dup
|
16
|
+
self.config = config
|
17
|
+
self.display_compilation_times = options.delete(:time)
|
18
|
+
self.working_path = options.delete(:working_path) || Dir.pwd
|
19
|
+
self.only_sass_files = options.delete(:only_sass_files) || []
|
20
|
+
plugin_options = config.to_sass_plugin_options.merge(options)
|
21
|
+
if only_sass_files.any?
|
22
|
+
plugin_options[:template_location] = []
|
23
|
+
plugin_options[:load_paths] = config.sass_load_paths
|
24
|
+
end
|
25
|
+
plugin_options[:always_update] = true if options.delete(:force)
|
26
|
+
@compiler = Sass::Plugin::Compiler.new(plugin_options)
|
27
|
+
@start_times = {}
|
28
|
+
@error_count = 0
|
29
|
+
|
30
|
+
public_methods(true).grep(/^when_/).each do |callback|
|
31
|
+
@compiler.send(callback.to_s.sub(/^when_/, 'on_')) {|*args| send(callback, *args) }
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
def compile!
|
36
|
+
@compiler.update_stylesheets(individual_files)
|
37
|
+
end
|
38
|
+
|
39
|
+
def watch!(options = {}, &block)
|
40
|
+
skip_initial_update = options.fetch(:skip_initial_update, false)
|
41
|
+
begin
|
42
|
+
@compiler.watch(individual_files, options.merge(:skip_initial_update => skip_initial_update), &block)
|
43
|
+
rescue Sass::SyntaxError => e
|
44
|
+
skip_initial_update = true
|
45
|
+
retry
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
def individual_files
|
50
|
+
only_sass_files.map {|sass_file| [sass_file, corresponding_css_file(sass_file)]}
|
51
|
+
end
|
52
|
+
|
53
|
+
def clean!
|
54
|
+
@compiler.clean(individual_files)
|
55
|
+
end
|
56
|
+
|
57
|
+
def file_list
|
58
|
+
@compiler.file_list(individual_files)
|
59
|
+
end
|
60
|
+
|
61
|
+
def when_updating_stylesheets(individual_files)
|
62
|
+
@start_times = {}
|
63
|
+
@error_count = 0
|
64
|
+
end
|
65
|
+
|
66
|
+
def when_compilation_starting(sass_file, css, sourcemap)
|
67
|
+
@start_times[sass_file] = Time.now
|
68
|
+
end
|
69
|
+
|
70
|
+
def when_template_created(sass_file)
|
71
|
+
logger.record :created, relativize(sass_file)
|
72
|
+
end
|
73
|
+
|
74
|
+
def when_template_deleted(sass_file)
|
75
|
+
logger.record :deleted, relativize(sass_file)
|
76
|
+
end
|
77
|
+
|
78
|
+
def when_template_modified(sass_file)
|
79
|
+
logger.record :modified, relativize(sass_file)
|
80
|
+
end
|
81
|
+
|
82
|
+
def when_updated_stylesheet(sass_file, css, sourcemap)
|
83
|
+
if css && display_compilation_times && @start_times[sass_file]
|
84
|
+
duration = ((Time.now - @start_times[sass_file]) * 1000).round / 1000.0
|
85
|
+
logger.record :write, "#{relativize(css)} (#{duration}s)"
|
86
|
+
else
|
87
|
+
logger.record :write, relativize(css) if css
|
88
|
+
end
|
89
|
+
config.run_stylesheet_saved(css) if css
|
90
|
+
|
91
|
+
logger.record :write, relativize(sourcemap) if sourcemap
|
92
|
+
config.run_sourcemap_saved(sourcemap) if sourcemap
|
93
|
+
end
|
94
|
+
|
95
|
+
def when_creating_directory(dirname)
|
96
|
+
logger.record :directory, relativize(dirname)
|
97
|
+
end
|
98
|
+
|
99
|
+
def when_deleting_css(filename)
|
100
|
+
logger.record :delete, relativize(filename)
|
101
|
+
config.run_stylesheet_removed(filename) if filename
|
102
|
+
end
|
103
|
+
|
104
|
+
def when_deleting_sourcemap(filename)
|
105
|
+
logger.record :delete, relativize(filename)
|
106
|
+
config.run_sourcemap_removed(filename) if filename
|
107
|
+
end
|
108
|
+
|
109
|
+
def when_compilation_error(error, sass_file, css_file, sourcemap_file)
|
110
|
+
@error_count += 1
|
111
|
+
if relativize(error.sass_filename) == relativize(sass_file)
|
112
|
+
logger.record :error, "#{relativize(error.sass_filename)} (Line #{error.sass_line}: #{error.message})"
|
113
|
+
else
|
114
|
+
logger.record :error, "#{relativize(sass_file)} (Line #{error.sass_line} of #{relativize(error.sass_filename)}: #{error.message})"
|
115
|
+
end
|
116
|
+
config.run_stylesheet_error(sass_file, error.message)
|
117
|
+
end
|
118
|
+
|
119
|
+
def logger
|
120
|
+
@logger ||= Compass::Logger.new
|
121
|
+
end
|
122
|
+
|
123
|
+
def corresponding_css_file(sass_file)
|
124
|
+
"#{config.css_path}/#{stylesheet_name(sass_file)}.css"
|
125
|
+
end
|
126
|
+
|
127
|
+
def stylesheet_name(sass_file)
|
128
|
+
if sass_file.index(config.sass_path) == 0
|
129
|
+
sass_file[(config.sass_path.length + 1)..-6].sub(/\.css$/,'')
|
130
|
+
else
|
131
|
+
raise Compass::Error, "Individual stylesheets must be in the sass directory."
|
132
|
+
end
|
133
|
+
end
|
134
|
+
end
|
@@ -120,9 +120,9 @@ module Compass::SassExtensions::Functions::Sprites
|
|
120
120
|
verify_map(map, "sprite")
|
121
121
|
verify_sprite(sprite)
|
122
122
|
if image = map.image_for(sprite.value)
|
123
|
-
image_path = Pathname.new(File.expand_path(image.file
|
124
|
-
|
125
|
-
quoted_string(image_path.relative_path_from(
|
123
|
+
image_path = Pathname.new(File.expand_path(image.file))
|
124
|
+
images_path = Pathname.new(File.expand_path(Compass.configuration.images_path))
|
125
|
+
quoted_string(image_path.relative_path_from(images_path).to_s)
|
126
126
|
else
|
127
127
|
missing_image!(map, sprite)
|
128
128
|
end
|
data/lib/compass/version.rb
CHANGED
@@ -1,44 +1,42 @@
|
|
1
|
+
require 'compass/generated_version'
|
1
2
|
module Compass
|
2
3
|
module Version
|
3
|
-
# Returns a hash representing the semantic version of the current compass release.
|
4
|
-
# See http://semver.org/ for more details.
|
5
|
-
#
|
6
|
-
# The :major, :minor, and :patch keys have their respective release numbers.
|
7
|
-
# The :string key contains a human-readable string representation of the version.
|
8
|
-
# The :prerelease key will have the current pre-release state
|
9
|
-
# The :build key will have the current pre-release build
|
10
|
-
def version
|
11
|
-
@version ||= read_version
|
12
|
-
end
|
13
|
-
|
14
|
-
protected
|
15
|
-
|
16
4
|
def scope(file) # :nodoc:
|
17
5
|
File.join(File.dirname(__FILE__), '..', '..', file)
|
18
6
|
end
|
19
7
|
|
20
|
-
def
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
8
|
+
def parse_version(version, name)
|
9
|
+
nil_or_int = lambda{|i| i.nil? ? nil : i.to_i}
|
10
|
+
segments = version.split(".")
|
11
|
+
{
|
12
|
+
:string => version,
|
13
|
+
:name => name,
|
14
|
+
:major => nil_or_int.call(segments.shift),
|
15
|
+
:minor => nil_or_int.call(segments.shift),
|
16
|
+
:patch => nil_or_int.call(segments.shift),
|
17
|
+
:state => segments.shift,
|
18
|
+
:iteration => nil_or_int.call(segments.shift)
|
19
|
+
}
|
20
|
+
end
|
21
|
+
|
22
|
+
# Returns a hash representing the version.
|
23
|
+
# The :major, :minor, and :teeny keys have their respective numbers.
|
24
|
+
# The :string key contains a human-readable string representation of the version.
|
25
|
+
# The :rev key will have the current revision hash.
|
26
|
+
#
|
27
|
+
# This method swiped from Haml and then modified, some credit goes to Nathan Weizenbaum
|
28
|
+
def version
|
29
|
+
Compass::VERSION_DETAILS
|
31
30
|
end
|
32
31
|
end
|
33
32
|
|
34
33
|
extend Compass::Version
|
35
34
|
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
version[:string]
|
40
|
-
else
|
41
|
-
super
|
42
|
-
end
|
35
|
+
unless defined?(VERSION)
|
36
|
+
VERSION = File.read(scope("VERSION")).strip
|
37
|
+
VERSION_NAME = File.read(scope("VERSION_NAME")).strip
|
43
38
|
end
|
39
|
+
|
40
|
+
VERSION_DETAILS = parse_version(VERSION, VERSION_NAME)
|
41
|
+
|
44
42
|
end
|
@@ -1,9 +1,11 @@
|
|
1
1
|
.background-clip {
|
2
2
|
-moz-background-clip: border;
|
3
|
+
-o-background-clip: border-box;
|
3
4
|
-webkit-background-clip: border;
|
4
5
|
background-clip: border-box; }
|
5
6
|
|
6
7
|
.background-clip-multiple {
|
7
8
|
-moz-background-clip: border, padding, content;
|
9
|
+
-o-background-clip: border-box, padding-box, content-box;
|
8
10
|
-webkit-background-clip: border, padding, content;
|
9
11
|
background-clip: border-box, padding-box, content-box; }
|
@@ -1,9 +1,11 @@
|
|
1
1
|
.background-origin {
|
2
2
|
-moz-background-origin: border;
|
3
|
+
-o-background-origin: border-box;
|
3
4
|
-webkit-background-origin: border;
|
4
5
|
background-origin: border-box; }
|
5
6
|
|
6
7
|
.background-origin-multiple {
|
7
8
|
-moz-background-origin: border, padding, content;
|
9
|
+
-o-background-origin: border-box, padding-box, content-box;
|
8
10
|
-webkit-background-origin: border, padding, content;
|
9
11
|
background-origin: border-box, padding-box, content-box; }
|
@@ -1,14 +1,17 @@
|
|
1
1
|
.background-size-default {
|
2
2
|
-moz-background-size: 100% auto;
|
3
|
+
-o-background-size: 100% auto;
|
3
4
|
-webkit-background-size: 100% auto;
|
4
5
|
background-size: 100% auto; }
|
5
6
|
|
6
7
|
.background-size-single {
|
7
8
|
-moz-background-size: 50% 25%;
|
9
|
+
-o-background-size: 50% 25%;
|
8
10
|
-webkit-background-size: 50% 25%;
|
9
11
|
background-size: 50% 25%; }
|
10
12
|
|
11
13
|
.background-size-multiple {
|
12
14
|
-moz-background-size: 4em 3em, 100% auto, 50%;
|
15
|
+
-o-background-size: 4em 3em, 100% auto, 50%;
|
13
16
|
-webkit-background-size: 4em 3em, 100% auto, 50%;
|
14
17
|
background-size: 4em 3em, 100% auto, 50%; }
|
@@ -7,6 +7,7 @@
|
|
7
7
|
border-radius: -webkit;
|
8
8
|
border-radius-unprefixed-at: "2.2";
|
9
9
|
css-animation: -webkit;
|
10
|
+
css-appearance: -webkit;
|
10
11
|
css-boxshadow: -webkit;
|
11
12
|
css-boxshadow-unprefixed-at: "4";
|
12
13
|
css-canvas: -webkit;
|
@@ -31,8 +32,9 @@
|
|
31
32
|
user-select-none: -webkit; }
|
32
33
|
|
33
34
|
.android-chrome {
|
34
|
-
versions: "
|
35
|
+
versions: "36";
|
35
36
|
css-animation: -webkit;
|
37
|
+
css-appearance: -webkit;
|
36
38
|
css-canvas: -webkit;
|
37
39
|
css-filters: -webkit;
|
38
40
|
css-masks: -webkit;
|
@@ -42,12 +44,12 @@
|
|
42
44
|
intrinsic-width: -webkit;
|
43
45
|
multicolumn: -webkit;
|
44
46
|
text-stroke: -webkit;
|
45
|
-
transforms2d: -webkit;
|
46
47
|
transforms3d: -webkit;
|
47
48
|
user-select-none: -webkit; }
|
48
49
|
|
49
50
|
.android-firefox {
|
50
|
-
versions: "
|
51
|
+
versions: "31";
|
52
|
+
css-appearance: -moz;
|
51
53
|
css-hyphens: -moz;
|
52
54
|
css-placeholder: -moz;
|
53
55
|
css3-tabsize: -moz;
|
@@ -64,6 +66,7 @@
|
|
64
66
|
border-image-unprefixed-at: "10";
|
65
67
|
calc: -webkit;
|
66
68
|
css-animation: -webkit;
|
69
|
+
css-appearance: -webkit;
|
67
70
|
css-boxshadow: -webkit;
|
68
71
|
css-boxshadow-unprefixed-at: "10";
|
69
72
|
css-canvas: -webkit;
|
@@ -86,7 +89,7 @@
|
|
86
89
|
user-select-none: -webkit; }
|
87
90
|
|
88
91
|
.chrome {
|
89
|
-
versions: "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30", "31", "32", "33", "34", "35", "36", "37", "38";
|
92
|
+
versions: "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30", "31", "32", "33", "34", "35", "36", "37", "38", "39";
|
90
93
|
border-image: -webkit;
|
91
94
|
border-image-unprefixed-at: "16";
|
92
95
|
border-radius: -webkit;
|
@@ -94,6 +97,7 @@
|
|
94
97
|
calc: -webkit;
|
95
98
|
calc-unprefixed-at: "26";
|
96
99
|
css-animation: -webkit;
|
100
|
+
css-appearance: -webkit;
|
97
101
|
css-boxshadow: -webkit;
|
98
102
|
css-boxshadow-unprefixed-at: "10";
|
99
103
|
css-canvas: -webkit;
|
@@ -124,7 +128,7 @@
|
|
124
128
|
user-select-none: -webkit; }
|
125
129
|
|
126
130
|
.firefox {
|
127
|
-
versions: "2", "3", "3.5", "3.6", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30", "31", "32", "33";
|
131
|
+
versions: "2", "3", "3.5", "3.6", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30", "31", "32", "33", "34";
|
128
132
|
background-img-opts: -moz;
|
129
133
|
background-img-opts-unprefixed-at: "4";
|
130
134
|
border-image: -moz;
|
@@ -135,6 +139,7 @@
|
|
135
139
|
calc-unprefixed-at: "16";
|
136
140
|
css-animation: -moz;
|
137
141
|
css-animation-unprefixed-at: "16";
|
142
|
+
css-appearance: -moz;
|
138
143
|
css-boxshadow: -moz;
|
139
144
|
css-boxshadow-unprefixed-at: "4";
|
140
145
|
css-gradients: -moz;
|
@@ -152,6 +157,7 @@
|
|
152
157
|
css3-boxsizing-unprefixed-at: "29";
|
153
158
|
css3-tabsize: -moz;
|
154
159
|
font-feature: -moz;
|
160
|
+
font-feature-unprefixed-at: "32";
|
155
161
|
inline-block: prefix-no-longer-needed;
|
156
162
|
inline-block-unprefixed-at: "3";
|
157
163
|
intrinsic-width: -moz;
|
@@ -190,6 +196,7 @@
|
|
190
196
|
calc: -webkit;
|
191
197
|
calc-unprefixed-at: "7.0-7.1";
|
192
198
|
css-animation: -webkit;
|
199
|
+
css-appearance: -webkit;
|
193
200
|
css-boxshadow: -webkit;
|
194
201
|
css-boxshadow-unprefixed-at: "5.0-5.1";
|
195
202
|
css-canvas: -webkit;
|
@@ -210,7 +217,6 @@
|
|
210
217
|
css3-boxsizing: -webkit;
|
211
218
|
css3-boxsizing-unprefixed-at: "5.0-5.1";
|
212
219
|
flexbox: -webkit;
|
213
|
-
font-feature: -webkit;
|
214
220
|
intrinsic-width: -webkit;
|
215
221
|
multicolumn: -webkit;
|
216
222
|
text-size-adjust: -webkit;
|
@@ -226,6 +232,7 @@
|
|
226
232
|
border-image: -webkit;
|
227
233
|
border-image-unprefixed-at: "15";
|
228
234
|
css-animation: -webkit;
|
235
|
+
css-appearance: -webkit;
|
229
236
|
css-canvas: -webkit;
|
230
237
|
css-filters: -webkit;
|
231
238
|
css-gradients: -webkit;
|
@@ -250,7 +257,9 @@
|
|
250
257
|
text-overflow-unprefixed-at: "11";
|
251
258
|
text-stroke: -webkit;
|
252
259
|
transforms2d: -webkit;
|
260
|
+
transforms2d-unprefixed-at: "23";
|
253
261
|
transforms3d: -webkit;
|
262
|
+
transforms3d-unprefixed-at: "23";
|
254
263
|
user-select-none: -webkit; }
|
255
264
|
|
256
265
|
.opera-mini {
|
@@ -258,10 +267,11 @@
|
|
258
267
|
text-overflow: -o; }
|
259
268
|
|
260
269
|
.opera-mobile {
|
261
|
-
versions: "10", "11.5", "12", "12.1", "
|
270
|
+
versions: "10", "11.5", "12", "12.1", "22";
|
262
271
|
border-image: -o;
|
263
|
-
border-image-unprefixed-at: "
|
272
|
+
border-image-unprefixed-at: "22";
|
264
273
|
css-animation: prefix-no-longer-needed;
|
274
|
+
css-appearance: prefix-no-longer-needed;
|
265
275
|
css-canvas: prefix-no-longer-needed;
|
266
276
|
css-filters: prefix-no-longer-needed;
|
267
277
|
css-gradients: prefix-no-longer-needed;
|
@@ -271,15 +281,15 @@
|
|
271
281
|
css-reflections: prefix-no-longer-needed;
|
272
282
|
css-repeating-gradients: prefix-no-longer-needed;
|
273
283
|
css-repeating-gradients-unprefixed-at: "12.1";
|
274
|
-
css-transitions:
|
284
|
+
css-transitions: -o;
|
275
285
|
css-transitions-unprefixed-at: "12.1";
|
276
286
|
css3-tabsize: -o;
|
277
|
-
css3-tabsize-unprefixed-at: "
|
287
|
+
css3-tabsize-unprefixed-at: "22";
|
278
288
|
font-feature: prefix-no-longer-needed;
|
279
289
|
intrinsic-width: prefix-no-longer-needed;
|
280
290
|
multicolumn: prefix-no-longer-needed;
|
281
291
|
object-fit: -o;
|
282
|
-
object-fit-unprefixed-at: "
|
292
|
+
object-fit-unprefixed-at: "22";
|
283
293
|
text-overflow: -o;
|
284
294
|
text-overflow-unprefixed-at: "12.1";
|
285
295
|
text-stroke: prefix-no-longer-needed;
|
@@ -296,6 +306,7 @@
|
|
296
306
|
calc: -webkit;
|
297
307
|
calc-unprefixed-at: "6.1";
|
298
308
|
css-animation: -webkit;
|
309
|
+
css-appearance: -webkit;
|
299
310
|
css-boxshadow: -webkit;
|
300
311
|
css-boxshadow-unprefixed-at: "5.1";
|
301
312
|
css-canvas: -webkit;
|