compass 1.0.0.alpha.21 → 1.0.0.rc.0
Sign up to get free protection for your applications and to get access to all the features.
- 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;
|