diff --git a/Gemfile b/Gemfile index 9784a3ff5..fbe22c895 100644 --- a/Gemfile +++ b/Gemfile @@ -47,7 +47,7 @@ gem 'onebox' gem 'http_accept_language', '~>2.0.5', require: false -gem 'ember-rails' +gem 'ember-rails', '0.18.5' gem 'ember-source', '1.12.2' gem 'barber' gem 'babel-transpiler' @@ -99,6 +99,7 @@ gem 'rest-client' gem 'rinku' gem 'sanitize' gem 'sass' +gem 'sass-rails' gem 'sidekiq' gem 'sidekiq-statistic' @@ -114,7 +115,6 @@ gem 'rack-protection' # security # in production environments by default. # allow everywhere for now cause we are allowing asset debugging in prd group :assets do - gem 'sass-rails', '~> 4.0.5' gem 'uglifier' gem 'rtlit', require: false # for css rtling end diff --git a/Gemfile.lock b/Gemfile.lock index aa5d8ef69..19ac56032 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -52,8 +52,8 @@ GEM babel-transpiler (0.7.0) babel-source (>= 4.0, < 6) execjs (~> 2.0) - barber (0.9.0) - ember-source (>= 1.0, < 2) + barber (0.11.1) + ember-source (>= 1.0, < 3) execjs (>= 1.2, < 3) better_errors (2.1.1) coderay (>= 1.0.0) @@ -65,13 +65,13 @@ GEM byebug (8.2.1) certified (1.0.0) coderay (1.1.0) - concurrent-ruby (1.0.0) + concurrent-ruby (1.0.1) connection_pool (2.2.0) crass (1.0.2) daemons (1.2.3) debug_inspector (0.0.2) diff-lcs (1.2.5) - discourse-qunit-rails (0.0.8) + discourse-qunit-rails (0.0.9) railties docile (1.1.5) domain_name (0.5.25) @@ -79,10 +79,10 @@ GEM email_reply_trimmer (0.1.3) ember-data-source (1.0.0.beta.16.1) ember-source (~> 1.8) - ember-handlebars-template (0.1.5) - barber (>= 0.9.0) - sprockets (>= 2.1, < 3.1) - ember-rails (0.18.2) + ember-handlebars-template (0.7.3) + barber (>= 0.11.0) + sprockets (>= 3.3, < 4) + ember-rails (0.18.5) active_model_serializers ember-data-source (>= 1.0.0.beta.5) ember-handlebars-template (>= 0.1.1, < 1.0) @@ -122,7 +122,6 @@ GEM guess_html_encoding (0.0.11) hashie (3.4.3) highline (1.7.8) - hike (1.2.3) hiredis (0.6.1) htmlentities (4.3.4) http-cookie (1.0.2) @@ -330,11 +329,12 @@ GEM nokogiri (>= 1.4.4) nokogumbo (~> 1.4.1) sass (3.2.19) - sass-rails (4.0.5) + sass-rails (5.0.4) railties (>= 4.0.0, < 5.0) - sass (~> 3.2.0) - sprockets (~> 2.8, <= 2.11.0) - sprockets-rails (~> 2.0.0) + sass (~> 3.1) + sprockets (>= 2.8, < 4.0) + sprockets-rails (>= 2.0, < 4.0) + tilt (>= 1.1, < 3) seed-fu (2.3.5) activerecord (>= 3.1, < 4.3) activesupport (>= 3.1, < 4.3) @@ -366,15 +366,13 @@ GEM spork-rails (4.0.0) rails (>= 3.0.0, < 5) spork (>= 1.0rc0) - sprockets (2.11.0) - hike (~> 1.2) - multi_json (~> 1.0) - rack (~> 1.0) - tilt (~> 1.1, != 1.3.0) - sprockets-rails (2.0.1) - actionpack (>= 3.0) - activesupport (>= 3.0) - sprockets (~> 2.8) + sprockets (3.6.0) + concurrent-ruby (~> 1.0) + rack (> 1, < 3) + sprockets-rails (3.0.4) + actionpack (>= 4.0) + activesupport (>= 4.0) + sprockets (>= 3.0.0) stackprof (0.2.7) therubyracer (0.12.2) libv8 (~> 3.16.14.0) @@ -385,7 +383,7 @@ GEM rack (~> 1.0) thor (0.19.1) thread_safe (0.3.5) - tilt (1.4.1) + tilt (2.0.2) timecop (0.8.0) trollop (2.1.2) tzinfo (1.2.2) @@ -416,7 +414,7 @@ DEPENDENCIES certified discourse-qunit-rails email_reply_trimmer (= 0.1.3) - ember-rails + ember-rails (= 0.18.5) ember-source (= 1.12.2) excon fabrication (= 2.9.8) @@ -485,7 +483,7 @@ DEPENDENCIES ruby-readability sanitize sass - sass-rails (~> 4.0.5) + sass-rails seed-fu (~> 2.3.5) shoulda sidekiq diff --git a/app/models/site_customization.rb b/app/models/site_customization.rb index b90c70187..a74e188a2 100644 --- a/app/models/site_customization.rb +++ b/app/models/site_customization.rb @@ -44,7 +44,7 @@ PLUGIN_API_JS name = node["name"] || node["data-template-name"] || "broken" precompiled = if name =~ /\.raw$/ - "Discourse.EmberCompatHandlebars.template(#{Barber::EmberCompatPrecompiler.compile(node.inner_html)})" + "Discourse.EmberCompatHandlebars.template(#{Barber::Precompiler.compile(node.inner_html)})" else "Ember.HTMLBars.template(#{Barber::Ember::Precompiler.compile(node.inner_html)})" end diff --git a/config/application.rb b/config/application.rb index 69a4531dd..4c217c804 100644 --- a/config/application.rb +++ b/config/application.rb @@ -144,6 +144,7 @@ module Discourse # Our templates shouldn't start with 'discourse/templates' config.handlebars.templates_root = 'discourse/templates' + config.handlebars.raw_template_namespace = "Ember.TEMPLATES" require 'discourse_redis' require 'logster/redis_store' diff --git a/config/initializers/010-discourse_iife.rb b/config/initializers/010-discourse_iife.rb index 122c2922b..275272fad 100644 --- a/config/initializers/010-discourse_iife.rb +++ b/config/initializers/010-discourse_iife.rb @@ -1,7 +1,10 @@ require 'discourse_iife' -Rails.application.assets.register_preprocessor('application/javascript', DiscourseIIFE) -unless Rails.env.production? || ENV["DISABLE_EVAL"] - require 'source_url' - Rails.application.assets.register_postprocessor('application/javascript', SourceURL) +Rails.application.config.assets.configure do |env| + env.register_preprocessor('application/javascript', DiscourseIIFE) + + unless Rails.env.production? || ENV["DISABLE_EVAL"] + require 'source_url' + env.register_postprocessor('application/javascript', SourceURL) + end end diff --git a/config/initializers/100-quiet_logger.rb b/config/initializers/100-quiet_logger.rb index ab4295f4b..55488afae 100644 --- a/config/initializers/100-quiet_logger.rb +++ b/config/initializers/100-quiet_logger.rb @@ -1,4 +1,7 @@ -Rails.application.assets.logger = Logger.new('/dev/null') +Rails.application.config.assets.configure do |env| + env.logger = Logger.new('/dev/null') +end + Rails::Rack::Logger.class_eval do def call_with_quiet_assets(env) previous_level = Rails.logger.level diff --git a/config/initializers/100-sprockets.rb b/config/initializers/100-sprockets.rb index 1159f514c..f6556e220 100644 --- a/config/initializers/100-sprockets.rb +++ b/config/initializers/100-sprockets.rb @@ -2,20 +2,18 @@ require_dependency 'sass/discourse_stylesheets' require_dependency 'sass/discourse_sass_importer' require_dependency 'sass/discourse_safe_sass_importer' -if defined?(Sass::Rails::SassTemplate) - DiscourseSassTemplate = Class.new(Sass::Rails::SassTemplate) do - def importer_class - DiscourseSassImporter - end +DiscourseSassTemplate = Class.new(Sass::Rails::SassTemplate) do + def importer_class + DiscourseSassImporter end - DiscourseScssTemplate = Class.new(DiscourseSassTemplate) do - def syntax - :scss - end - end - Rails.application.assets.register_engine '.sass', DiscourseSassTemplate - Rails.application.assets.register_engine '.scss', DiscourseScssTemplate -else - Sprockets.send(:remove_const, :SassImporter) - Sprockets::SassImporter = DiscourseSassImporter +end +DiscourseScssTemplate = Class.new(DiscourseSassTemplate) do + def syntax + :scss + end +end + +Rails.application.config.assets.configure do |env| + env.register_engine '.sass', DiscourseSassTemplate + env.register_engine '.scss', DiscourseScssTemplate end diff --git a/lib/discourse_iife.rb b/lib/discourse_iife.rb index d966539ba..10bfb7837 100644 --- a/lib/discourse_iife.rb +++ b/lib/discourse_iife.rb @@ -1,9 +1,19 @@ -class DiscourseIIFE < Sprockets::Processor +class DiscourseIIFE + def initialize(options = {}, &block) + end + + def self.instance + @instance ||= new + end + + def self.call(input) + instance.call(input) + end # Add a IIFE around our javascript - def evaluate(context, locals) - - path = context.pathname.to_s + def call(input) + path = input[:environment].context_class.new(input).pathname.to_s + data = input[:data] # Only discourse or admin paths return data unless (path =~ /\/javascripts\/discourse/ || path =~ /\/javascripts\/admin/ || path =~ /\/test\/javascripts/) diff --git a/lib/freedom_patches/better_handlebars_errors.rb b/lib/freedom_patches/better_handlebars_errors.rb index 197bd7e24..3cab31cc9 100644 --- a/lib/freedom_patches/better_handlebars_errors.rb +++ b/lib/freedom_patches/better_handlebars_errors.rb @@ -1,13 +1,13 @@ module Ember module Handlebars - class Template < Tilt::Template + class Template # Wrap in an IIFE in development mode to get the correct filename - def compile_ember_handlebars(string, ember_template = 'Handlebars') + def compile_ember_handlebars(string, ember_template = 'Handlebars', options = nil) if ::Rails.env.development? "(function() { try { return Ember.#{ember_template}.compile(#{indent(string).inspect}); } catch(err) { throw err; } })()" else - "Ember.#{ember_template}.compile(#{indent(string).inspect});" + "Ember.#{ember_template}.compile(#{indent(string).inspect}, #{options.to_json});" end end end diff --git a/lib/freedom_patches/ember_compat_handlebars.rb b/lib/freedom_patches/ember_compat_handlebars.rb index bfffaedde..fcd11b216 100644 --- a/lib/freedom_patches/ember_compat_handlebars.rb +++ b/lib/freedom_patches/ember_compat_handlebars.rb @@ -1,32 +1,47 @@ # barber patches to re-route raw compilation via ember compat handlebars -# -module Barber - class EmberCompatPrecompiler < Barber::Precompiler +class Barber::Precompiler + def sources + [File.open("#{Rails.root}/vendor/assets/javascripts/handlebars.js"), precompiler] + end - def sources - [File.open("#{Rails.root}/vendor/assets/javascripts/handlebars.js"), precompiler] - end - - def precompiler - @precompiler ||= StringIO.new < :scss, + 'css.scss' => :scss, + 'css.sass' => :sass, + 'css.erb' => :scss, + 'scss.erb' => :scss, + 'sass.erb' => :sass, + 'css.scss.erb' => :scss, + 'css.sass.erb' => :sass + }.merge!(super) + end - # Depending upon where this is passed we might either be passed a string as the - # first argument or a sprockets context. If the first argument is a sprockets - # context we store it and use it to mark dependencies. - def initialize(*args) - @context = args.first unless args.first.is_a? String - @root = Rails.root.join('app', 'assets', 'stylesheets').to_s - @same_name_warnings = Set.new - end + def special_imports + { + "plugins" => DiscoursePluginRegistry.stylesheets, + "plugins_mobile" => DiscoursePluginRegistry.mobile_stylesheets, + "plugins_desktop" => DiscoursePluginRegistry.desktop_stylesheets, + "plugins_variables" => DiscoursePluginRegistry.sass_variables, + "theme_variables" => [ColorScheme::BASE_COLORS_FILE], + "category_backgrounds" => Proc.new { |c| "body.category-#{c.full_slug} { background-image: url(#{apply_cdn(c.background_url)}) }\n" } + } + end - def extensions - { - 'css' => :scss, - 'css.scss' => :scss, - 'css.sass' => :sass, - 'css.erb' => :scss, - 'scss.erb' => :scss, - 'sass.erb' => :sass, - 'css.scss.erb' => :scss, - 'css.sass.erb' => :sass - }.merge!(super) - end - - def special_imports - { - "plugins" => DiscoursePluginRegistry.stylesheets, - "plugins_mobile" => DiscoursePluginRegistry.mobile_stylesheets, - "plugins_desktop" => DiscoursePluginRegistry.desktop_stylesheets, - "plugins_variables" => DiscoursePluginRegistry.sass_variables, - "theme_variables" => [ColorScheme::BASE_COLORS_FILE] - } - end - - def find_relative(name, base, options) - if name =~ GLOB - glob_imports(name, Pathname.new(base), options) - else + def find_relative(name, base, options) engine_from_path(name, File.dirname(base), options) end - end - def apply_cdn(url) - "#{GlobalSetting.cdn_url}#{url}" - end - - def find(name, options) - - if name == "category_backgrounds" - contents = "" - Category.where('background_url IS NOT NULL').each do |c| - if c.background_url.present? - contents << "body.category-#{c.full_slug} { background-image: url(#{apply_cdn(c.background_url)}) }\n" - end - end - return Sass::Engine.new(contents, options.merge( - filename: "#{name}.scss", - importer: self, - syntax: :scss - )) + def apply_cdn(url) + "#{GlobalSetting.cdn_url}#{url}" end - if special_imports.has_key? name - if name == "theme_variables" + def find(name, options) + + if name == "category_backgrounds" contents = "" - if color_scheme = ColorScheme.enabled - ColorScheme.base_colors.each do |n, base_hex| - override = color_scheme.colors_by_name[n] - contents << "$#{n}: ##{override ? override.hex : base_hex} !default;\n" - end - else - special_imports[name].each do |css_file| - contents << File.read(css_file) - end + Category.where('background_url IS NOT NULL').each do |c| + contents << special_imports[name].call(c) if c.background_url.present? end - Sass::Engine.new(contents, options.merge( + return ::Sass::Engine.new(contents, options.merge( filename: "#{name}.scss", importer: self, syntax: :scss )) - else - stylesheets = special_imports[name] - contents = "" - stylesheets.each do |css_file| - if css_file =~ /\.scss$/ - contents << "@import '#{css_file}';" + end + + if special_imports.has_key? name + if name == "theme_variables" + contents = "" + if color_scheme = ColorScheme.enabled + ColorScheme.base_colors.each do |n, base_hex| + override = color_scheme.colors_by_name[n] + contents << "$#{n}: ##{override ? override.hex : base_hex} !default;\n" + end else - contents << File.read(css_file) + special_imports[name].each do |css_file| + contents << File.read(css_file) + end end - depend_on(css_file) + + ::Sass::Engine.new(contents, options.merge( + filename: "#{name}.scss", + importer: self, + syntax: :scss + )) + else + stylesheets = special_imports[name] + contents = "" + stylesheets.each do |css_file| + if css_file =~ /\.scss$/ + contents << "@import '#{css_file}';" + else + contents << File.read(css_file) + end + depend_on(css_file) + end + + ::Sass::Engine.new(contents, options.merge( + filename: "#{name}.scss", + importer: self, + syntax: :scss + )) end - Sass::Engine.new(contents, options.merge( - filename: "#{name}.scss", - importer: self, - syntax: :scss - )) - end - elsif name =~ GLOB - nil # globs must be relative - else - engine_from_path(name, root, options) - end - end - - def each_globbed_file(glob, base_pathname, options) - Dir["#{base_pathname}/#{glob}"].sort.each do |filename| - next if filename == options[:filename] - yield filename # assume all matching files are requirable - end - end - - def glob_imports(glob, base_pathname, options) - contents = "" - each_globbed_file(glob, base_pathname.dirname, options) do |filename| - depend_on(filename) - unless File.directory?(filename) - contents << "@import #{Pathname.new(filename).relative_path_from(base_pathname.dirname).to_s.inspect};\n" - end - end - return nil if contents.empty? - Sass::Engine.new(contents, options.merge( - filename: base_pathname.to_s, - importer: self, - syntax: :scss - )) - end - - private - - def depend_on(filename) - if @context - @context.depend_on(filename) - @context.depend_on(globbed_file_parent(filename)) - end - end - - def globbed_file_parent(filename) - if File.directory?(filename) - File.expand_path('..', filename) else - File.dirname(filename) + engine_from_path(name, root, options) end end - def engine_from_path(name, dir, options) - full_filename, _ = Sass::Util.destructure(find_real_file(dir, name, options)) - return unless full_filename && File.readable?(full_filename) + private - depend_on(full_filename) - Sass::Engine.for_file(full_filename, options) - end + def depend_on(filename) + if @context + @context.depend_on(filename) + @context.depend_on(globbed_file_parent(filename)) + end + end + + def engine_from_path(name, dir, options) + full_filename, _ = ::Sass::Util.destructure(find_real_file(dir, name, options)) + return unless full_filename && File.readable?(full_filename) + + depend_on(full_filename) + ::Sass::Engine.for_file(full_filename, options) + end + end + + include Sass + include ::Sass::Rails::SassImporter::Globbing + + def self.special_imports + self.new('').special_imports + end end diff --git a/test/javascripts/test_helper.js b/test/javascripts/test_helper.js index 99efffb5e..852a67d18 100644 --- a/test/javascripts/test_helper.js +++ b/test/javascripts/test_helper.js @@ -1,7 +1,7 @@ /*global document, sinon, QUnit, Logster */ //= require env -//= require ../../app/assets/javascripts/preload_store +//= require preload_store //= require probes //= require jquery.debug //= require jquery.ui.widget @@ -14,8 +14,8 @@ //= require route-recognizer //= require pretender -//= require ../../app/assets/javascripts/locales/i18n -//= require ../../app/assets/javascripts/locales/en +//= require locales/i18n +//= require locales/en //= require vendor @@ -39,7 +39,7 @@ //= require plugin_tests //= require_self // -//= require ../../public/javascripts/jquery.magnific-popup-min.js +//= require jquery.magnific-popup-min.js window.inTestEnv = true; diff --git a/vendor/assets/javascripts/ember-template-compiler.js b/vendor/assets/javascripts/ember-template-compiler.js index 2e49d2435..cb84221ec 100644 --- a/vendor/assets/javascripts/ember-template-compiler.js +++ b/vendor/assets/javascripts/ember-template-compiler.js @@ -5,7 +5,7 @@ * Portions Copyright 2008-2011 Apple Inc. All rights reserved. * @license Licensed under MIT license * See https://raw.github.com/emberjs/ember.js/master/LICENSE - * @version 1.12.1 + * @version 1.12.2 */ (function() { @@ -119,7 +119,7 @@ enifed('ember-debug', ['exports', 'ember-metal/core', 'ember-metal/utils', 'embe Ember['default'].assert = function (desc, test) { var throwAssertion; - if (utils.typeOf(test) === "function") { + if (utils.typeOf(test) === 'function') { throwAssertion = !test(); } else { throwAssertion = !test; @@ -142,7 +142,7 @@ enifed('ember-debug', ['exports', 'ember-metal/core', 'ember-metal/utils', 'embe Ember['default'].warn = function (message, test) { if (!test) { Logger['default'].warn("WARNING: " + message); - if ("trace" in Logger['default']) { + if ('trace' in Logger['default']) { Logger['default'].trace(); } } @@ -179,7 +179,7 @@ enifed('ember-debug', ['exports', 'ember-metal/core', 'ember-metal/utils', 'embe Ember['default'].deprecate = function (message, test, options) { var noDeprecation; - if (typeof test === "function") { + if (typeof test === 'function') { noDeprecation = test(); } else { noDeprecation = test; @@ -203,23 +203,23 @@ enifed('ember-debug', ['exports', 'ember-metal/core', 'ember-metal/utils', 'embe } if (arguments.length === 3) { - Ember['default'].assert("options argument to Ember.deprecate should be an object", options && typeof options === "object"); + Ember['default'].assert('options argument to Ember.deprecate should be an object', options && typeof options === 'object'); if (options.url) { - message += " See " + options.url + " for more details."; + message += ' See ' + options.url + ' for more details.'; } } if (Ember['default'].LOG_STACKTRACE_ON_DEPRECATION && error.stack) { var stack; - var stackStr = ""; + var stackStr = ''; - if (error["arguments"]) { + if (error['arguments']) { // Chrome - stack = error.stack.replace(/^\s+at\s+/gm, "").replace(/^([^\(]+?)([\n$])/gm, "{anonymous}($1)$2").replace(/^Object.\s*\(([^\)]+)\)/gm, "{anonymous}($1)").split("\n"); + stack = error.stack.replace(/^\s+at\s+/gm, '').replace(/^([^\(]+?)([\n$])/gm, '{anonymous}($1)$2').replace(/^Object.\s*\(([^\)]+)\)/gm, '{anonymous}($1)').split('\n'); stack.shift(); } else { // Firefox - stack = error.stack.replace(/(?:\n@:0)?\s+$/m, "").replace(/^\(/gm, "{anonymous}(").split("\n"); + stack = error.stack.replace(/(?:\n@:0)?\s+$/m, '').replace(/^\(/gm, '{anonymous}(').split('\n'); } stackStr = "\n " + stack.slice(2).join("\n "); @@ -286,14 +286,15 @@ enifed('ember-debug', ['exports', 'ember-metal/core', 'ember-metal/utils', 'embe @method _warnIfUsingStrippedFeatureFlags @return {void} */ + function _warnIfUsingStrippedFeatureFlags(FEATURES, featuresWereStripped) { if (featuresWereStripped) { - Ember['default'].warn("Ember.ENV.ENABLE_ALL_FEATURES is only available in canary builds.", !Ember['default'].ENV.ENABLE_ALL_FEATURES); - Ember['default'].warn("Ember.ENV.ENABLE_OPTIONAL_FEATURES is only available in canary builds.", !Ember['default'].ENV.ENABLE_OPTIONAL_FEATURES); + Ember['default'].warn('Ember.ENV.ENABLE_ALL_FEATURES is only available in canary builds.', !Ember['default'].ENV.ENABLE_ALL_FEATURES); + Ember['default'].warn('Ember.ENV.ENABLE_OPTIONAL_FEATURES is only available in canary builds.', !Ember['default'].ENV.ENABLE_OPTIONAL_FEATURES); for (var key in FEATURES) { - if (FEATURES.hasOwnProperty(key) && key !== "isEnabled") { - Ember['default'].warn("FEATURE[\"" + key + "\"] is set as enabled, but FEATURE flags are only available in canary builds.", !FEATURES[key]); + if (FEATURES.hasOwnProperty(key) && key !== 'isEnabled') { + Ember['default'].warn('FEATURE["' + key + '"] is set as enabled, but FEATURE flags are only available in canary builds.', !FEATURES[key]); } } } @@ -301,29 +302,29 @@ enifed('ember-debug', ['exports', 'ember-metal/core', 'ember-metal/utils', 'embe if (!Ember['default'].testing) { // Complain if they're using FEATURE flags in builds other than canary - Ember['default'].FEATURES["features-stripped-test"] = true; + Ember['default'].FEATURES['features-stripped-test'] = true; var featuresWereStripped = true; - - delete Ember['default'].FEATURES["features-stripped-test"]; + + delete Ember['default'].FEATURES['features-stripped-test']; _warnIfUsingStrippedFeatureFlags(Ember['default'].ENV.FEATURES, featuresWereStripped); // Inform the developer about the Ember Inspector if not installed. - var isFirefox = typeof InstallTrigger !== "undefined"; + var isFirefox = typeof InstallTrigger !== 'undefined'; var isChrome = environment['default'].isChrome; - if (typeof window !== "undefined" && (isFirefox || isChrome) && window.addEventListener) { + if (typeof window !== 'undefined' && (isFirefox || isChrome) && window.addEventListener) { window.addEventListener("load", function () { if (document.documentElement && document.documentElement.dataset && !document.documentElement.dataset.emberExtension) { var downloadURL; if (isChrome) { - downloadURL = "https://chrome.google.com/webstore/detail/ember-inspector/bmdblncegkenkacieihfhpjfppoconhi"; + downloadURL = 'https://chrome.google.com/webstore/detail/ember-inspector/bmdblncegkenkacieihfhpjfppoconhi'; } else if (isFirefox) { - downloadURL = "https://addons.mozilla.org/en-US/firefox/addon/ember-inspector/"; + downloadURL = 'https://addons.mozilla.org/en-US/firefox/addon/ember-inspector/'; } - Ember['default'].debug("For more advanced debugging, install the Ember Inspector from " + downloadURL); + Ember['default'].debug('For more advanced debugging, install the Ember Inspector from ' + downloadURL); } }, false); } @@ -339,7 +340,7 @@ enifed('ember-debug', ['exports', 'ember-metal/core', 'ember-metal/utils', 'embe */ var runningNonEmberDebugJS = false; if (runningNonEmberDebugJS) { - Ember['default'].warn("Please use `ember.debug.js` instead of `ember.js` for development and debugging."); + Ember['default'].warn('Please use `ember.debug.js` instead of `ember.js` for development and debugging.'); } exports.runningNonEmberDebugJS = runningNonEmberDebugJS; @@ -377,10 +378,7 @@ enifed('ember-metal', ['exports', 'ember-metal/core', 'ember-metal/merge', 'embe computed.computed.and = computed_macros.and; computed.computed.or = computed_macros.or; computed.computed.any = computed_macros.any; - computed.computed.collect = computed_macros.collect; // END IMPORTS - - // BEGIN EXPORTS - var EmberInstrumentation = Ember['default'].Instrumentation = {}; + computed.computed.collect = computed_macros.collect;var EmberInstrumentation = Ember['default'].Instrumentation = {}; EmberInstrumentation.instrument = instrumentation.instrument; EmberInstrumentation.subscribe = instrumentation.subscribe; EmberInstrumentation.unsubscribe = instrumentation.unsubscribe; @@ -527,7 +525,7 @@ enifed('ember-metal', ['exports', 'ember-metal/core', 'ember-metal/merge', 'embe Ember['default'].Backburner = Backburner['default']; Ember['default'].libraries = new Libraries['default'](); - Ember['default'].libraries.registerCoreLibrary("Ember", Ember['default'].VERSION); + Ember['default'].libraries.registerCoreLibrary('Ember', Ember['default'].VERSION); Ember['default'].isNone = isNone['default']; Ember['default'].isEmpty = isEmpty['default']; @@ -536,7 +534,7 @@ enifed('ember-metal', ['exports', 'ember-metal/core', 'ember-metal/merge', 'embe Ember['default'].merge = merge['default']; - + /** A function may be assigned to `Ember.onerror` to be called when Ember internals encounter an error. This is useful for specialized error handling @@ -562,8 +560,8 @@ enifed('ember-metal', ['exports', 'ember-metal/core', 'ember-metal/merge', 'embe // do this for side-effects of updating Ember.assert, warn, etc when // ember-debug is present - if (Ember['default'].__loader.registry["ember-debug"]) { - requireModule("ember-debug"); + if (Ember['default'].__loader.registry['ember-debug']) { + requireModule('ember-debug'); } exports['default'] = Ember['default']; @@ -658,7 +656,7 @@ enifed('ember-metal/array', ['exports'], function (exports) { // if available, but not to use versions created by libraries like Prototype var isNativeFunc = function (func) { // This should probably work in all browsers likely to have ES5 array methods - return func && Function.prototype.toString.call(func).indexOf("[native code]") > -1; + return func && Function.prototype.toString.call(func).indexOf('[native code]') > -1; }; var defineNativeShim = function (nativeFunc, shim) { @@ -892,7 +890,7 @@ enifed('ember-metal/binding', ['exports', 'ember-metal/core', 'ember-metal/prope @return {String} string representation of binding */ toString: function () { - var oneWay = this._oneWay ? "[oneWay]" : ""; + var oneWay = this._oneWay ? '[oneWay]' : ''; return "Ember.Binding<" + utils.guidFor(this) + ">(" + this._from + " -> " + this._to + ")" + oneWay; }, @@ -909,7 +907,7 @@ enifed('ember-metal/binding', ['exports', 'ember-metal/core', 'ember-metal/prope @return {Ember.Binding} `this` */ connect: function (obj) { - Ember['default'].assert("Must pass a valid object to Ember.Binding.connect()", !!obj); + Ember['default'].assert('Must pass a valid object to Ember.Binding.connect()', !!obj); var fromPath = this._from; var toPath = this._to; @@ -936,7 +934,7 @@ enifed('ember-metal/binding', ['exports', 'ember-metal/core', 'ember-metal/prope @return {Ember.Binding} `this` */ disconnect: function (obj) { - Ember['default'].assert("Must pass a valid object to Ember.Binding.disconnect()", !!obj); + Ember['default'].assert('Must pass a valid object to Ember.Binding.disconnect()', !!obj); var twoWay = !this._oneWay; @@ -959,12 +957,12 @@ enifed('ember-metal/binding', ['exports', 'ember-metal/core', 'ember-metal/prope /* called when the from side changes */ fromDidChange: function (target) { - this._scheduleSync(target, "fwd"); + this._scheduleSync(target, 'fwd'); }, /* called when the to side changes */ toDidChange: function (target) { - this._scheduleSync(target, "back"); + this._scheduleSync(target, 'back'); }, _scheduleSync: function (obj, dir) { @@ -972,14 +970,14 @@ enifed('ember-metal/binding', ['exports', 'ember-metal/core', 'ember-metal/prope // if we haven't scheduled the binding yet, schedule it if (existingDir === undefined) { - run['default'].schedule("sync", this, this._sync, obj); + run['default'].schedule('sync', this, this._sync, obj); this._direction = dir; } // If both a 'back' and 'fwd' sync have been scheduled on the same object, // default to a 'fwd' sync so that it remains deterministic. - if (existingDir === "back" && dir === "fwd") { - this._direction = "fwd"; + if (existingDir === 'back' && dir === 'fwd') { + this._direction = 'fwd'; } }, @@ -1001,10 +999,10 @@ enifed('ember-metal/binding', ['exports', 'ember-metal/core', 'ember-metal/prope this._direction = undefined; // if we're synchronizing from the remote object... - if (direction === "fwd") { + if (direction === 'fwd') { var fromValue = getWithGlobals(obj, this._from); if (log) { - Ember['default'].Logger.log(" ", this.toString(), "->", fromValue, obj); + Ember['default'].Logger.log(' ', this.toString(), '->', fromValue, obj); } if (this._oneWay) { property_set.trySet(obj, toPath, fromValue); @@ -1014,15 +1012,15 @@ enifed('ember-metal/binding', ['exports', 'ember-metal/core', 'ember-metal/prope }); } // if we're synchronizing *to* the remote object - } else if (direction === "back") { - var toValue = property_get.get(obj, this._to); - if (log) { - Ember['default'].Logger.log(" ", this.toString(), "<-", toValue, obj); + } else if (direction === 'back') { + var toValue = property_get.get(obj, this._to); + if (log) { + Ember['default'].Logger.log(' ', this.toString(), '<-', toValue, obj); + } + observer._suspendObserver(obj, fromPath, this, this.fromDidChange, function () { + property_set.trySet(path_cache.isGlobal(fromPath) ? Ember['default'].lookup : obj, fromPath, toValue); + }); } - observer._suspendObserver(obj, fromPath, this, this.fromDidChange, function () { - property_set.trySet(path_cache.isGlobal(fromPath) ? Ember['default'].lookup : obj, fromPath, toValue); - }); - } } }; @@ -1221,6 +1219,7 @@ enifed('ember-metal/binding', ['exports', 'ember-metal/core', 'ember-metal/prope Must be relative to obj or a global path. @return {Ember.Binding} binding instance */ + function bind(obj, to, from) { return new Binding(to, from).connect(obj); } @@ -1235,6 +1234,7 @@ enifed('ember-metal/binding', ['exports', 'ember-metal/core', 'ember-metal/prope Must be relative to obj or a global path. @return {Ember.Binding} binding instance */ + function oneWay(obj, to, from) { return new Binding(to, from).oneWay().connect(obj); } @@ -1316,7 +1316,7 @@ enifed('ember-metal/chains', ['exports', 'ember-metal/core', 'ember-metal/proper } function isObject(obj) { - return obj && typeof obj === "object"; + return obj && typeof obj === 'object'; } var pendingQueue = []; @@ -1337,7 +1337,7 @@ enifed('ember-metal/chains', ['exports', 'ember-metal/core', 'ember-metal/proper q[0].add(q[1]); }); - warn("Watching an undefined global, Ember expects watched globals to be" + " setup by the time the run loop is flushed, check for typos", pendingQueue.length === 0); + warn('Watching an undefined global, Ember expects watched globals to be' + ' setup by the time the run loop is flushed, check for typos', pendingQueue.length === 0); } function addChainWatcher(obj, keyName, node) { @@ -1348,7 +1348,7 @@ enifed('ember-metal/chains', ['exports', 'ember-metal/core', 'ember-metal/proper var m = utils.meta(obj); var nodes = m.chainWatchers; - if (!m.hasOwnProperty("chainWatchers")) { + if (!m.hasOwnProperty('chainWatchers')) { // FIXME?! nodes = m.chainWatchers = {}; } @@ -1365,8 +1365,8 @@ enifed('ember-metal/chains', ['exports', 'ember-metal/core', 'ember-metal/proper return; } - var m = obj["__ember_meta__"]; - if (m && !m.hasOwnProperty("chainWatchers")) { + var m = obj['__ember_meta__']; + if (m && !m.hasOwnProperty('chainWatchers')) { return; } @@ -1413,7 +1413,7 @@ enifed('ember-metal/chains', ['exports', 'ember-metal/core', 'ember-metal/proper // // TODO: Replace this with an efficient callback that the EachProxy // can implement. - if (this._parent && this._parent._key === "@each") { + if (this._parent && this._parent._key === '@each') { this.value(); } } @@ -1423,7 +1423,7 @@ enifed('ember-metal/chains', ['exports', 'ember-metal/core', 'ember-metal/proper return; } - var meta = obj["__ember_meta__"]; + var meta = obj['__ember_meta__']; // check if object meant only to be a prototype if (meta && meta.proto === obj) { return; @@ -1435,7 +1435,7 @@ enifed('ember-metal/chains', ['exports', 'ember-metal/core', 'ember-metal/proper // if a CP only return cached value var possibleDesc = obj[key]; - var desc = possibleDesc !== null && typeof possibleDesc === "object" && possibleDesc.isDescriptor ? possibleDesc : undefined; + var desc = possibleDesc !== null && typeof possibleDesc === 'object' && possibleDesc.isDescriptor ? possibleDesc : undefined; if (desc && desc._cacheable) { if (meta.cache && key in meta.cache) { return meta.cache[key]; @@ -1502,16 +1502,16 @@ enifed('ember-metal/chains', ['exports', 'ember-metal/core', 'ember-metal/proper // global path, but object does not exist yet. // put into a queue and try to connect later. } else if (!tuple[0]) { - pendingQueue.push([this, path]); - tuple.length = 0; - return; + pendingQueue.push([this, path]); + tuple.length = 0; + return; - // global path, and object already exists - } else { - src = tuple[0]; - key = path.slice(0, 0 - (tuple[1].length + 1)); - path = tuple[1]; - } + // global path, and object already exists + } else { + src = tuple[0]; + key = path.slice(0, 0 - (tuple[1].length + 1)); + path = tuple[1]; + } tuple.length = 0; this.chain(key, path, src); @@ -1603,7 +1603,7 @@ enifed('ember-metal/chains', ['exports', 'ember-metal/core', 'ember-metal/proper chainWillChange: function (chain, path, depth, events) { if (this._key) { - path = this._key + "." + path; + path = this._key + '.' + path; } if (this._parent) { @@ -1612,7 +1612,7 @@ enifed('ember-metal/chains', ['exports', 'ember-metal/core', 'ember-metal/proper if (depth > 1) { events.push(this.value(), path); } - path = "this." + path; + path = 'this.' + path; if (this._paths[path] > 0) { events.push(this.value(), path); } @@ -1621,7 +1621,7 @@ enifed('ember-metal/chains', ['exports', 'ember-metal/core', 'ember-metal/proper chainDidChange: function (chain, path, depth, events) { if (this._key) { - path = this._key + "." + path; + path = this._key + '.' + path; } if (this._parent) { @@ -1630,7 +1630,7 @@ enifed('ember-metal/chains', ['exports', 'ember-metal/core', 'ember-metal/proper if (depth > 1) { events.push(this.value(), path); } - path = "this." + path; + path = 'this.' + path; if (this._paths[path] > 0) { events.push(this.value(), path); } @@ -1650,7 +1650,7 @@ enifed('ember-metal/chains', ['exports', 'ember-metal/core', 'ember-metal/proper // Special-case: the EachProxy relies on immediate evaluation to // establish its observers. - if (this._parent && this._parent._key === "@each") { + if (this._parent && this._parent._key === '@each') { this.value(); } } @@ -1677,9 +1677,10 @@ enifed('ember-metal/chains', ['exports', 'ember-metal/core', 'ember-metal/proper } } }; + function finishChains(obj) { // We only create meta if we really have to - var m = obj["__ember_meta__"]; + var m = obj['__ember_meta__']; var chains, chainWatchers, chainNodes; if (m) { @@ -1806,7 +1807,7 @@ enifed('ember-metal/computed', ['exports', 'ember-metal/property_set', 'ember-me */ function ComputedProperty(config, opts) { this.isDescriptor = true; - + if (typeof config === "function") { config.__ember_arity = config.length; this._getter = config; @@ -1823,15 +1824,15 @@ enifed('ember-metal/computed', ['exports', 'ember-metal/property_set', 'ember-me this._setter.__ember_arity = this._setter.length; } } - + this._dependentKeys = undefined; this._suspended = undefined; this._meta = undefined; - Ember.deprecate("Passing opts.cacheable to the CP constructor is deprecated. Invoke `volatile()` on the CP instead.", !opts || !opts.hasOwnProperty("cacheable")); + Ember.deprecate("Passing opts.cacheable to the CP constructor is deprecated. Invoke `volatile()` on the CP instead.", !opts || !opts.hasOwnProperty('cacheable')); this._cacheable = opts && opts.cacheable !== undefined ? opts.cacheable : true; // TODO: Set always to `true` once this deprecation is gone. this._dependentKeys = opts && opts.dependentKeys; - Ember.deprecate("Passing opts.readOnly to the CP constructor is deprecated. All CPs are writable by default. You can invoke `readOnly()` on the CP to change this.", !opts || !opts.hasOwnProperty("readOnly")); + Ember.deprecate("Passing opts.readOnly to the CP constructor is deprecated. All CPs are writable by default. You can invoke `readOnly()` on the CP to change this.", !opts || !opts.hasOwnProperty('readOnly')); this._readOnly = opts && (opts.readOnly !== undefined || !!opts.readOnly) || false; // TODO: Set always to `false` once this deprecation is gone. } @@ -1856,7 +1857,7 @@ enifed('ember-metal/computed', ['exports', 'ember-metal/property_set', 'ember-me @deprecated All computed properties are cacheble by default. Use `volatile()` instead to opt-out to caching. */ ComputedPropertyPrototype.cacheable = function (aFlag) { - Ember.deprecate("ComputedProperty.cacheable() is deprecated. All computed properties are cacheable by default."); + Ember.deprecate('ComputedProperty.cacheable() is deprecated. All computed properties are cacheable by default.'); this._cacheable = aFlag !== false; return this; }; @@ -1903,7 +1904,7 @@ enifed('ember-metal/computed', ['exports', 'ember-metal/property_set', 'ember-me @chainable */ ComputedPropertyPrototype.readOnly = function (readOnly) { - Ember.deprecate("Passing arguments to ComputedProperty.readOnly() is deprecated.", arguments.length === 0); + Ember.deprecate('Passing arguments to ComputedProperty.readOnly() is deprecated.', arguments.length === 0); this._readOnly = readOnly === undefined || !!readOnly; // Force to true once this deprecation is gone Ember.assert("Computed properties that define a setter using the new syntax cannot be read-only", !(this._readOnly && this._setter && this._setter !== this._getter)); @@ -2275,7 +2276,9 @@ enifed('ember-metal/computed', ['exports', 'ember-metal/property_set', 'ember-me var cp = new ComputedProperty(func); // jscs:disable - + + // Empty block on purpose + if (args) { cp.property.apply(cp, args); } @@ -2297,7 +2300,7 @@ enifed('ember-metal/computed', ['exports', 'ember-metal/property_set', 'ember-me @return {Object} the cached value */ function cacheFor(obj, key) { - var meta = obj["__ember_meta__"]; + var meta = obj['__ember_meta__']; var cache = meta && meta.cache; var ret = cache && cache[key]; @@ -2397,8 +2400,9 @@ enifed('ember-metal/computed_macros', ['exports', 'ember-metal/core', 'ember-met @return {Ember.ComputedProperty} computed property which negate the original value for property */ + function empty(dependentKey) { - return computed.computed(dependentKey + ".length", function () { + return computed.computed(dependentKey + '.length', function () { return isEmpty['default'](property_get.get(this, dependentKey)); }); } @@ -2427,8 +2431,9 @@ enifed('ember-metal/computed_macros', ['exports', 'ember-metal/core', 'ember-met @return {Ember.ComputedProperty} computed property which returns true if original value for property is not empty. */ + function notEmpty(dependentKey) { - return computed.computed(dependentKey + ".length", function () { + return computed.computed(dependentKey + '.length', function () { return !isEmpty['default'](property_get.get(this, dependentKey)); }); } @@ -2460,6 +2465,7 @@ enifed('ember-metal/computed_macros', ['exports', 'ember-metal/core', 'ember-met @return {Ember.ComputedProperty} computed property which returns true if original value for property is null or undefined. */ + function none(dependentKey) { return computed.computed(dependentKey, function () { return isNone['default'](property_get.get(this, dependentKey)); @@ -2490,6 +2496,7 @@ enifed('ember-metal/computed_macros', ['exports', 'ember-metal/core', 'ember-met @return {Ember.ComputedProperty} computed property which returns inverse of the original value for property */ + function not(dependentKey) { return computed.computed(dependentKey, function () { return !property_get.get(this, dependentKey); @@ -2522,6 +2529,7 @@ enifed('ember-metal/computed_macros', ['exports', 'ember-metal/core', 'ember-met @return {Ember.ComputedProperty} computed property which converts to boolean the original value for property */ + function bool(dependentKey) { return computed.computed(dependentKey, function () { return !!property_get.get(this, dependentKey); @@ -2556,11 +2564,12 @@ enifed('ember-metal/computed_macros', ['exports', 'ember-metal/core', 'ember-met @return {Ember.ComputedProperty} computed property which match the original value for property against a given RegExp */ + function match(dependentKey, regexp) { return computed.computed(dependentKey, function () { var value = property_get.get(this, dependentKey); - return typeof value === "string" ? regexp.test(value) : false; + return typeof value === 'string' ? regexp.test(value) : false; }); } @@ -2591,6 +2600,7 @@ enifed('ember-metal/computed_macros', ['exports', 'ember-metal/core', 'ember-met @return {Ember.ComputedProperty} computed property which returns true if the original value for property is equal to the given value. */ + function equal(dependentKey, value) { return computed.computed(dependentKey, function () { return property_get.get(this, dependentKey) === value; @@ -2624,6 +2634,7 @@ enifed('ember-metal/computed_macros', ['exports', 'ember-metal/core', 'ember-met @return {Ember.ComputedProperty} computed property which returns true if the original value for property is greater than given value. */ + function gt(dependentKey, value) { return computed.computed(dependentKey, function () { return property_get.get(this, dependentKey) > value; @@ -2657,6 +2668,7 @@ enifed('ember-metal/computed_macros', ['exports', 'ember-metal/core', 'ember-met @return {Ember.ComputedProperty} computed property which returns true if the original value for property is greater or equal then given value. */ + function gte(dependentKey, value) { return computed.computed(dependentKey, function () { return property_get.get(this, dependentKey) >= value; @@ -2690,6 +2702,7 @@ enifed('ember-metal/computed_macros', ['exports', 'ember-metal/core', 'ember-met @return {Ember.ComputedProperty} computed property which returns true if the original value for property is less then given value. */ + function lt(dependentKey, value) { return computed.computed(dependentKey, function () { return property_get.get(this, dependentKey) < value; @@ -2723,6 +2736,7 @@ enifed('ember-metal/computed_macros', ['exports', 'ember-metal/core', 'ember-met @return {Ember.ComputedProperty} computed property which returns true if the original value for property is less or equal than given value. */ + function lte(dependentKey, value) { return computed.computed(dependentKey, function () { return property_get.get(this, dependentKey) <= value; @@ -2849,6 +2863,7 @@ enifed('ember-metal/computed_macros', ['exports', 'ember-metal/core', 'ember-met one way computed property to the original value for property. @since 1.5.0 */ + function readOnly(dependentKey) { return alias['default'](dependentKey).readOnly(); } @@ -2880,15 +2895,16 @@ enifed('ember-metal/computed_macros', ['exports', 'ember-metal/core', 'ember-met a standard getter and setter, but defaults to the value from `defaultPath`. @deprecated Use `Ember.computed.oneWay` or custom CP with default instead. */ + function defaultTo(defaultPath) { return computed.computed({ get: function (key) { - Ember['default'].deprecate("Usage of Ember.computed.defaultTo is deprecated, use `Ember.computed.oneWay` instead."); + Ember['default'].deprecate('Usage of Ember.computed.defaultTo is deprecated, use `Ember.computed.oneWay` instead.'); return property_get.get(this, defaultPath); }, set: function (key, newValue, cachedValue) { - Ember['default'].deprecate("Usage of Ember.computed.defaultTo is deprecated, use `Ember.computed.oneWay` instead."); + Ember['default'].deprecate('Usage of Ember.computed.defaultTo is deprecated, use `Ember.computed.oneWay` instead.'); return newValue != null ? newValue : property_get.get(this, defaultPath); } }); @@ -2907,6 +2923,7 @@ enifed('ember-metal/computed_macros', ['exports', 'ember-metal/core', 'ember-met alias with a deprecation to the original value for property. @since 1.7.0 */ + function deprecatingAlias(dependentKey) { return computed.computed(dependentKey, { get: function (key) { @@ -2957,7 +2974,7 @@ enifed('ember-metal/core', ['exports'], function (exports) { @class Ember @static - @version 1.12.1 + @version 1.12.2 */ if ('undefined' === typeof Ember) { @@ -2986,10 +3003,10 @@ enifed('ember-metal/core', ['exports'], function (exports) { /** @property VERSION @type String - @default '1.12.1' + @default '1.12.2' @static */ - Ember.VERSION = '1.12.1'; + Ember.VERSION = '1.12.2'; /** Standard environmental variables. You can define these in a global `EmberENV` @@ -3030,7 +3047,7 @@ enifed('ember-metal/core', ['exports'], function (exports) { @static @since 1.1.0 */ - Ember.FEATURES = { 'features-stripped-test': false, 'ember-routing-named-substates': true, 'mandatory-setter': true, 'ember-htmlbars-component-generation': false, 'ember-htmlbars-component-helper': true, 'ember-htmlbars-inline-if-helper': true, 'ember-htmlbars-attribute-syntax': true, 'ember-routing-transitioning-classes': true, 'new-computed-syntax': true, 'ember-testing-checkbox-helpers': false, 'ember-metal-stream': false, 'ember-application-instance-initializers': true, 'ember-application-initializer-context': true, 'ember-router-willtransition': true, 'ember-application-visit': false, 'ember-views-component-block-info': false, 'ember-routing-core-outlet': false, 'ember-libraries-isregistered': false }; //jshint ignore:line + Ember.FEATURES = { "features-stripped-test": false, "ember-routing-named-substates": true, "mandatory-setter": true, "ember-htmlbars-component-generation": false, "ember-htmlbars-component-helper": true, "ember-htmlbars-inline-if-helper": true, "ember-htmlbars-attribute-syntax": true, "ember-routing-transitioning-classes": true, "new-computed-syntax": true, "ember-testing-checkbox-helpers": false, "ember-metal-stream": false, "ember-application-instance-initializers": true, "ember-application-initializer-context": true, "ember-router-willtransition": true, "ember-application-visit": false, "ember-views-component-block-info": false, "ember-routing-core-outlet": false, "ember-libraries-isregistered": false }; //jshint ignore:line if (Ember.ENV.FEATURES) { for (var feature in Ember.ENV.FEATURES) { @@ -3164,30 +3181,11 @@ enifed('ember-metal/core', ['exports'], function (exports) { }); enifed('ember-metal/dependent_keys', ['exports', 'ember-metal/platform/create', 'ember-metal/watching'], function (exports, o_create, watching) { - + exports.addDependentKeys = addDependentKeys; exports.removeDependentKeys = removeDependentKeys; - "REMOVE_USE_STRICT: true"; /** - @module ember-metal - */ - - // .......................................................... - // DEPENDENT KEYS - // - - // data structure: - // meta.deps = { - // 'depKey': { - // 'keyName': count, - // } - // } - - /* - This function returns a map of unique dependencies for a - given object and key. - */ - function keysForDep(depsMeta, depKey) { + "REMOVE_USE_STRICT: true";function keysForDep(depsMeta, depKey) { var keys = depsMeta[depKey]; if (!keys) { // if there are no dependencies yet for a the given key @@ -3202,8 +3200,9 @@ enifed('ember-metal/dependent_keys', ['exports', 'ember-metal/platform/create', } function metaForDeps(meta) { - return keysForDep(meta, "deps"); + return keysForDep(meta, 'deps'); } + function addDependentKeys(desc, obj, keyName, meta) { // the descriptor has a list of dependent keys, so // add all of its dependent keys. @@ -3328,6 +3327,7 @@ enifed('ember-metal/enumerable_utils', ['exports', 'ember-metal/array'], functio * * @return {Array} An array of mapped values. */ + function map(obj, callback, thisArg) { return obj.map ? obj.map(callback, thisArg) : ember_metal__array.map.call(obj, callback, thisArg); } @@ -3342,6 +3342,7 @@ enifed('ember-metal/enumerable_utils', ['exports', 'ember-metal/array'], functio * @param {Object} thisArg Value to use as this when executing *callback* * */ + function forEach(obj, callback, thisArg) { return obj.forEach ? obj.forEach(callback, thisArg) : ember_metal__array.forEach.call(obj, callback, thisArg); } @@ -3358,6 +3359,7 @@ enifed('ember-metal/enumerable_utils', ['exports', 'ember-metal/array'], functio * @return {Array} An array containing the filtered values * @since 1.4.0 */ + function filter(obj, callback, thisArg) { return obj.filter ? obj.filter(callback, thisArg) : ember_metal__array.filter.call(obj, callback, thisArg); } @@ -3372,6 +3374,7 @@ enifed('ember-metal/enumerable_utils', ['exports', 'ember-metal/array'], functio * @param {Object} index The index to start searching from * */ + function indexOf(obj, element, index) { return obj.indexOf ? obj.indexOf(element, index) : ember_metal__array.indexOf.call(obj, element, index); } @@ -3395,6 +3398,7 @@ enifed('ember-metal/enumerable_utils', ['exports', 'ember-metal/array'], functio * @return {Array} An array of indexes. * */ + function indexesOf(obj, elements) { return elements === undefined ? [] : map(elements, function (item) { return indexOf(obj, item); @@ -3411,6 +3415,7 @@ enifed('ember-metal/enumerable_utils', ['exports', 'ember-metal/array'], functio * * @return 'undefined' */ + function addObject(array, item) { var index = indexOf(array, item); if (index === -1) { @@ -3428,6 +3433,7 @@ enifed('ember-metal/enumerable_utils', ['exports', 'ember-metal/array'], functio * * @return 'undefined' */ + function removeObject(array, item) { var index = indexOf(array, item); if (index !== -1) { @@ -3486,6 +3492,7 @@ enifed('ember-metal/enumerable_utils', ['exports', 'ember-metal/array'], functio * * @return {Array} The modified array. */ + function replace(array, idx, amt, objects) { if (array.replace) { return array.replace(idx, amt, objects); @@ -3517,6 +3524,7 @@ enifed('ember-metal/enumerable_utils', ['exports', 'ember-metal/array'], functio * * @return {Array} The intersection of the two passed arrays. */ + function intersection(array1, array2) { var result = []; forEach(array1, function (element) { @@ -3571,7 +3579,7 @@ enifed('ember-metal/environment', ['exports', 'ember-metal/core'], function (exp isChrome: false, location: null, history: null, - userAgent: 'Lynx (textmode)', + userAgent: "Lynx (textmode)", global: null }; } @@ -3619,7 +3627,7 @@ enifed('ember-metal/error', ['exports', 'ember-metal/platform/create'], function }); enifed('ember-metal/events', ['exports', 'ember-metal/core', 'ember-metal/utils', 'ember-metal/platform/create'], function (exports, Ember, utils, create) { - + exports.accumulateListeners = accumulateListeners; exports.addListener = addListener; exports.suspendListener = suspendListener; @@ -3631,8 +3639,7 @@ enifed('ember-metal/events', ['exports', 'ember-metal/core', 'ember-metal/utils' exports.on = on; exports.removeListener = removeListener; - "REMOVE_USE_STRICT: true"; /* listener flags */ - var ONCE = 1; + "REMOVE_USE_STRICT: true";var ONCE = 1; var SUSPENDED = 2; /* @@ -3694,8 +3701,9 @@ enifed('ember-metal/events', ['exports', 'ember-metal/core', 'ember-metal/utils' return actions; } + function accumulateListeners(obj, eventName, otherActions) { - var meta = obj["__ember_meta__"]; + var meta = obj['__ember_meta__']; var actions = meta && meta.listeners && meta.listeners[eventName]; if (!actions) { @@ -3730,10 +3738,11 @@ enifed('ember-metal/events', ['exports', 'ember-metal/core', 'ember-metal/utils' @param {Function|String} method A function or the name of a function to be called on `target` @param {Boolean} once A flag whether a function should only be called once */ + function addListener(obj, eventName, target, method, once) { Ember['default'].assert("You must pass at least an object and event name to Ember.addListener", !!obj && !!eventName); - if (!method && "function" === typeof target) { + if (!method && 'function' === typeof target) { method = target; target = null; } @@ -3752,7 +3761,7 @@ enifed('ember-metal/events', ['exports', 'ember-metal/core', 'ember-metal/utils' actions.push(target, method, flags); - if ("function" === typeof obj.didAddListener) { + if ('function' === typeof obj.didAddListener) { obj.didAddListener(eventName, target, method); } } @@ -3772,7 +3781,7 @@ enifed('ember-metal/events', ['exports', 'ember-metal/core', 'ember-metal/utils' function removeListener(obj, eventName, target, method) { Ember['default'].assert("You must pass at least an object and event name to Ember.removeListener", !!obj && !!eventName); - if (!method && "function" === typeof target) { + if (!method && 'function' === typeof target) { method = target; target = null; } @@ -3788,7 +3797,7 @@ enifed('ember-metal/events', ['exports', 'ember-metal/core', 'ember-metal/utils' actions.splice(actionIndex, 3); - if ("function" === typeof obj.didRemoveListener) { + if ('function' === typeof obj.didRemoveListener) { obj.didRemoveListener(eventName, target, method); } } @@ -3796,7 +3805,7 @@ enifed('ember-metal/events', ['exports', 'ember-metal/core', 'ember-metal/utils' if (method) { _removeListener(target, method); } else { - var meta = obj["__ember_meta__"]; + var meta = obj['__ember_meta__']; var actions = meta && meta.listeners && meta.listeners[eventName]; if (!actions) { @@ -3826,8 +3835,9 @@ enifed('ember-metal/events', ['exports', 'ember-metal/core', 'ember-metal/utils' @param {Function|String} method A function or the name of a function to be called on `target` @param {Function} callback */ + function suspendListener(obj, eventName, target, method, callback) { - if (!method && "function" === typeof target) { + if (!method && 'function' === typeof target) { method = target; target = null; } @@ -3864,8 +3874,9 @@ enifed('ember-metal/events', ['exports', 'ember-metal/core', 'ember-metal/utils' @param {Function|String} method A function or the name of a function to be called on `target` @param {Function} callback */ + function suspendListeners(obj, eventNames, target, method, callback) { - if (!method && "function" === typeof target) { + if (!method && 'function' === typeof target) { method = target; target = null; } @@ -3908,13 +3919,14 @@ enifed('ember-metal/events', ['exports', 'ember-metal/core', 'ember-metal/utils' @for Ember @param obj */ + function watchedEvents(obj) { - var listeners = obj["__ember_meta__"].listeners; + var listeners = obj['__ember_meta__'].listeners; var ret = []; if (listeners) { for (var eventName in listeners) { - if (eventName !== "__source__" && listeners[eventName]) { + if (eventName !== '__source__' && listeners[eventName]) { ret.push(eventName); } } @@ -3936,14 +3948,15 @@ enifed('ember-metal/events', ['exports', 'ember-metal/core', 'ember-metal/utils' @param {Array} actions Optional array of actions (listeners). @return true */ + function sendEvent(obj, eventName, params, actions) { // first give object a chance to handle it - if (obj !== Ember['default'] && "function" === typeof obj.sendEvent) { + if (obj !== Ember['default'] && 'function' === typeof obj.sendEvent) { obj.sendEvent(eventName, params); } if (!actions) { - var meta = obj["__ember_meta__"]; + var meta = obj['__ember_meta__']; actions = meta && meta.listeners && meta.listeners[eventName]; } @@ -3969,7 +3982,7 @@ enifed('ember-metal/events', ['exports', 'ember-metal/core', 'ember-metal/utils' if (!target) { target = obj; } - if ("string" === typeof method) { + if ('string' === typeof method) { if (params) { utils.applyStr(target, method, params); } else { @@ -3993,8 +4006,9 @@ enifed('ember-metal/events', ['exports', 'ember-metal/core', 'ember-metal/utils' @param obj @param {String} eventName */ + function hasListeners(obj, eventName) { - var meta = obj["__ember_meta__"]; + var meta = obj['__ember_meta__']; var actions = meta && meta.listeners && meta.listeners[eventName]; return !!(actions && actions.length); @@ -4007,9 +4021,10 @@ enifed('ember-metal/events', ['exports', 'ember-metal/core', 'ember-metal/utils' @param obj @param {String} eventName */ + function listenersFor(obj, eventName) { var ret = []; - var meta = obj["__ember_meta__"]; + var meta = obj['__ember_meta__']; var actions = meta && meta.listeners && meta.listeners[eventName]; if (!actions) { @@ -4048,6 +4063,7 @@ enifed('ember-metal/events', ['exports', 'ember-metal/core', 'ember-metal/utils' @param {Function} func @return func */ + function on() { for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { args[_key] = arguments[_key]; @@ -4144,7 +4160,7 @@ enifed('ember-metal/get_properties', ['exports', 'ember-metal/property_get', 'em var propertyNames = arguments; var i = 1; - if (arguments.length === 2 && utils.typeOf(arguments[1]) === "array") { + if (arguments.length === 2 && utils.typeOf(arguments[1]) === 'array') { i = 0; propertyNames = arguments[1]; } @@ -4169,11 +4185,11 @@ enifed('ember-metal/injected_property', ['exports', 'ember-metal/core', 'ember-m function injectedPropertyGet(keyName) { var possibleDesc = this[keyName]; - var desc = possibleDesc !== null && typeof possibleDesc === "object" && possibleDesc.isDescriptor ? possibleDesc : undefined; + var desc = possibleDesc !== null && typeof possibleDesc === 'object' && possibleDesc.isDescriptor ? possibleDesc : undefined; Ember['default'].assert("Attempting to lookup an injected property on an object without a container, ensure that the object was instantiated via a container.", this.container); - return this.container.lookup(desc.type + ":" + (desc.name || keyName)); + return this.container.lookup(desc.type + ':' + (desc.name || keyName)); } InjectedProperty.prototype = create['default'](properties.Descriptor.prototype); @@ -4221,7 +4237,7 @@ enifed('ember-metal/instrumentation', ['exports', 'ember-metal/core', 'ember-met }; var time = (function () { - var perf = "undefined" !== typeof window ? window.performance || {} : {}; + var perf = 'undefined' !== typeof window ? window.performance || {} : {}; var fn = perf.now || perf.mozNow || perf.webkitNow || perf.msNow || perf.oNow; // fn.bind will be available in all the browsers that support the advanced window.performance... ;-) return fn ? fn.bind(perf) : function () { @@ -4240,8 +4256,9 @@ enifed('ember-metal/instrumentation', ['exports', 'ember-metal/core', 'ember-met @param {Function} callback Function that you're instrumenting. @param {Object} binding Context that instrument function is called with. */ + function instrument(name, _payload, callback, binding) { - if (arguments.length <= 3 && typeof _payload === "function") { + if (arguments.length <= 3 && typeof _payload === 'function') { binding = callback; callback = _payload; _payload = undefined; @@ -4322,6 +4339,7 @@ enifed('ember-metal/instrumentation', ['exports', 'ember-metal/core', 'ember-met @return {Subscriber} */ + function subscribe(pattern, object) { var paths = pattern.split("."); var path; @@ -4359,6 +4377,7 @@ enifed('ember-metal/instrumentation', ['exports', 'ember-metal/core', 'ember-met @param {Object} [subscriber] */ + function unsubscribe(subscriber) { var index; @@ -4378,6 +4397,7 @@ enifed('ember-metal/instrumentation', ['exports', 'ember-metal/core', 'ember-met @method reset @namespace Ember.Instrumentation */ + function reset() { subscribers.length = 0; cache = {}; @@ -4573,14 +4593,14 @@ enifed('ember-metal/libraries', ['exports', 'ember-metal/core', 'ember-metal/enu }, each: function (callback) { - Ember['default'].deprecate("Using Ember.libraries.each() is deprecated. Access to a list of registered libraries is currently a private API. If you are not knowingly accessing this method, your out-of-date Ember Inspector may be doing so."); + Ember['default'].deprecate('Using Ember.libraries.each() is deprecated. Access to a list of registered libraries is currently a private API. If you are not knowingly accessing this method, your out-of-date Ember Inspector may be doing so.'); enumerable_utils.forEach(this._registry, function (lib) { callback(lib.name, lib.version); }); } }; - + exports['default'] = Libraries; }); @@ -4596,27 +4616,27 @@ enifed('ember-metal/logger', ['exports', 'ember-metal/core', 'ember-metal/error' var consoleObj, logToConsole; if (Ember['default'].imports.console) { consoleObj = Ember['default'].imports.console; - } else if (typeof console !== "undefined") { + } else if (typeof console !== 'undefined') { consoleObj = console; } - var method = typeof consoleObj === "object" ? consoleObj[name] : null; + var method = typeof consoleObj === 'object' ? consoleObj[name] : null; if (method) { // Older IE doesn't support bind, but Chrome needs it - if (typeof method.bind === "function") { + if (typeof method.bind === 'function') { logToConsole = method.bind(consoleObj); - logToConsole.displayName = "console." + name; + logToConsole.displayName = 'console.' + name; return logToConsole; - } else if (typeof method.apply === "function") { + } else if (typeof method.apply === 'function') { logToConsole = function () { method.apply(consoleObj, arguments); }; - logToConsole.displayName = "console." + name; + logToConsole.displayName = 'console.' + name; return logToConsole; } else { return function () { - var message = Array.prototype.join.call(arguments, ", "); + var message = Array.prototype.join.call(arguments, ', '); method(message); }; } @@ -4656,7 +4676,7 @@ enifed('ember-metal/logger', ['exports', 'ember-metal/core', 'ember-metal/error' @for Ember.Logger @param {*} arguments */ - log: consoleMethod("log") || K, + log: consoleMethod('log') || K, /** Prints the arguments to the console with a warning icon. @@ -4669,7 +4689,7 @@ enifed('ember-metal/logger', ['exports', 'ember-metal/core', 'ember-metal/error' @for Ember.Logger @param {*} arguments */ - warn: consoleMethod("warn") || K, + warn: consoleMethod('warn') || K, /** Prints the arguments to the console with an error icon, red text and a stack trace. @@ -4682,7 +4702,7 @@ enifed('ember-metal/logger', ['exports', 'ember-metal/core', 'ember-metal/error' @for Ember.Logger @param {*} arguments */ - error: consoleMethod("error") || K, + error: consoleMethod('error') || K, /** Logs the arguments to the console. @@ -4696,7 +4716,7 @@ enifed('ember-metal/logger', ['exports', 'ember-metal/core', 'ember-metal/error' @for Ember.Logger @param {*} arguments */ - info: consoleMethod("info") || K, + info: consoleMethod('info') || K, /** Logs the arguments to the console in blue text. @@ -4710,7 +4730,7 @@ enifed('ember-metal/logger', ['exports', 'ember-metal/core', 'ember-metal/error' @for Ember.Logger @param {*} arguments */ - debug: consoleMethod("debug") || consoleMethod("info") || K, + debug: consoleMethod('debug') || consoleMethod('info') || K, /** If the value passed into `Ember.Logger.assert` is not truthy it will throw an error with a stack trace. @@ -4722,7 +4742,7 @@ enifed('ember-metal/logger', ['exports', 'ember-metal/core', 'ember-metal/error' @for Ember.Logger @param {Boolean} bool Value to test */ - assert: consoleMethod("assert") || assertPolyfill + assert: consoleMethod('assert') || assertPolyfill }; }); @@ -4757,7 +4777,7 @@ enifed('ember-metal/map', ['exports', 'ember-metal/utils', 'ember-metal/array', */ function missingFunction(fn) { - throw new TypeError("" + Object.prototype.toString.call(fn) + " is not a function"); + throw new TypeError(Object.prototype.toString.call(fn) + " is not a function"); } function missingNew(name) { @@ -4855,7 +4875,7 @@ enifed('ember-metal/map', ['exports', 'ember-metal/utils', 'ember-metal/array', @return {Boolean} */ remove: function (obj, _guid) { - Ember.deprecate("Calling `OrderedSet.prototype.remove` has been deprecated, please use `OrderedSet.prototype.delete` instead.", this._silenceRemoveDeprecation); + Ember.deprecate('Calling `OrderedSet.prototype.remove` has been deprecated, please use `OrderedSet.prototype.delete` instead.', this._silenceRemoveDeprecation); return this["delete"](obj, _guid); }, @@ -4915,7 +4935,7 @@ enifed('ember-metal/map', ['exports', 'ember-metal/utils', 'ember-metal/array', @param self */ forEach: function (fn /*, ...thisArg*/) { - if (typeof fn !== "function") { + if (typeof fn !== 'function') { missingFunction(fn); } @@ -4963,7 +4983,7 @@ enifed('ember-metal/map', ['exports', 'ember-metal/utils', 'ember-metal/array', } }; - deprecate_property.deprecateProperty(OrderedSet.prototype, "length", "size"); + deprecate_property.deprecateProperty(OrderedSet.prototype, 'length', 'size'); /** A Map stores values indexed by keys. Unlike JavaScript's @@ -5069,7 +5089,7 @@ enifed('ember-metal/map', ['exports', 'ember-metal/utils', 'ember-metal/array', @return {Boolean} true if an item was removed, false otherwise */ remove: function (key) { - Ember.deprecate("Calling `Map.prototype.remove` has been deprecated, please use `Map.prototype.delete` instead."); + Ember.deprecate('Calling `Map.prototype.remove` has been deprecated, please use `Map.prototype.delete` instead.'); return this["delete"](key); }, @@ -5121,7 +5141,7 @@ enifed('ember-metal/map', ['exports', 'ember-metal/utils', 'ember-metal/array', callback. By default, `this` is the map. */ forEach: function (callback /*, ...thisArg*/) { - if (typeof callback !== "function") { + if (typeof callback !== 'function') { missingFunction(callback); } @@ -5165,7 +5185,7 @@ enifed('ember-metal/map', ['exports', 'ember-metal/utils', 'ember-metal/array', } }; - deprecate_property.deprecateProperty(Map.prototype, "length", "size"); + deprecate_property.deprecateProperty(Map.prototype, 'length', 'size'); /** @class MapWithDefault @@ -5261,7 +5281,7 @@ enifed('ember-metal/merge', ['exports', 'ember-metal/keys'], function (exports, }); enifed('ember-metal/mixin', ['exports', 'ember-metal/core', 'ember-metal/merge', 'ember-metal/array', 'ember-metal/platform/create', 'ember-metal/property_get', 'ember-metal/property_set', 'ember-metal/utils', 'ember-metal/expand_properties', 'ember-metal/properties', 'ember-metal/computed', 'ember-metal/binding', 'ember-metal/observer', 'ember-metal/events', 'ember-metal/streams/utils'], function (exports, Ember, merge, array, o_create, property_get, property_set, utils, expandProperties, ember_metal__properties, computed, ember_metal__binding, ember_metal__observer, events, streams__utils) { - + exports.mixin = mixin; exports.required = required; exports.aliasMethod = aliasMethod; @@ -5310,14 +5330,14 @@ enifed('ember-metal/mixin', ['exports', 'ember-metal/core', 'ember-metal/merge', var ret = m.mixins; if (!ret) { ret = m.mixins = {}; - } else if (!m.hasOwnProperty("mixins")) { + } else if (!m.hasOwnProperty('mixins')) { ret = m.mixins = o_create['default'](ret); } return ret; } function isMethod(obj) { - return "function" === typeof obj && obj.isMethod !== false && obj !== Boolean && obj !== Object && obj !== Number && obj !== Array && obj !== Date && obj !== String; + return 'function' === typeof obj && obj.isMethod !== false && obj !== Boolean && obj !== Object && obj !== Number && obj !== Array && obj !== Date && obj !== String; } var CONTINUE = {}; @@ -5362,7 +5382,7 @@ enifed('ember-metal/mixin', ['exports', 'ember-metal/core', 'ember-metal/merge', // it on the original object. if (!superProperty) { var possibleDesc = base[key]; - var superDesc = possibleDesc !== null && typeof possibleDesc === "object" && possibleDesc.isDescriptor ? possibleDesc : undefined; + var superDesc = possibleDesc !== null && typeof possibleDesc === 'object' && possibleDesc.isDescriptor ? possibleDesc : undefined; superProperty = superDesc; } @@ -5389,7 +5409,7 @@ enifed('ember-metal/mixin', ['exports', 'ember-metal/core', 'ember-metal/merge', var sourceAvailable = (function () { return this; - }).toString().indexOf("return this;") > -1; + }).toString().indexOf('return this;') > -1; function giveMethodSuper(obj, key, method, values, descs) { var superMethod; @@ -5405,7 +5425,7 @@ enifed('ember-metal/mixin', ['exports', 'ember-metal/core', 'ember-metal/merge', superMethod = superMethod || obj[key]; // Only wrap the new method if the original method was a function - if (superMethod === undefined || "function" !== typeof superMethod) { + if (superMethod === undefined || 'function' !== typeof superMethod) { return method; } @@ -5414,7 +5434,7 @@ enifed('ember-metal/mixin', ['exports', 'ember-metal/core', 'ember-metal/merge', hasSuper = method.__hasSuper; if (hasSuper === undefined) { - hasSuper = method.toString().indexOf("_super") > -1; + hasSuper = method.toString().indexOf('_super') > -1; method.__hasSuper = hasSuper; } } @@ -5430,7 +5450,7 @@ enifed('ember-metal/mixin', ['exports', 'ember-metal/core', 'ember-metal/merge', var baseValue = values[key] || obj[key]; if (baseValue) { - if ("function" === typeof baseValue.concat) { + if ('function' === typeof baseValue.concat) { if (value === null || value === undefined) { return baseValue; } else { @@ -5493,7 +5513,7 @@ enifed('ember-metal/mixin', ['exports', 'ember-metal/core', 'ember-metal/merge', descs[key] = value; values[key] = undefined; } else { - if (concats && array.indexOf.call(concats, key) >= 0 || key === "concatenatedProperties" || key === "mergedProperties") { + if (concats && array.indexOf.call(concats, key) >= 0 || key === 'concatenatedProperties' || key === 'mergedProperties') { value = applyConcatenatedProperties(base, key, value, values); } else if (mergings && array.indexOf.call(mergings, key) >= 0) { value = applyMergedProperties(base, key, value, values); @@ -5516,7 +5536,7 @@ enifed('ember-metal/mixin', ['exports', 'ember-metal/core', 'ember-metal/merge', for (var i = 0, l = mixins.length; i < l; i++) { currentMixin = mixins[i]; - Ember['default'].assert("Expected hash or Mixin instance, got " + Object.prototype.toString.call(currentMixin), typeof currentMixin === "object" && currentMixin !== null && Object.prototype.toString.call(currentMixin) !== "[object Array]"); + Ember['default'].assert("Expected hash or Mixin instance, got " + Object.prototype.toString.call(currentMixin), typeof currentMixin === 'object' && currentMixin !== null && Object.prototype.toString.call(currentMixin) !== '[object Array]'); props = mixinProperties(m, currentMixin); if (props === CONTINUE) { @@ -5528,8 +5548,8 @@ enifed('ember-metal/mixin', ['exports', 'ember-metal/core', 'ember-metal/merge', if (base.willMergeMixin) { base.willMergeMixin(props); } - concats = concatenatedMixinProperties("concatenatedProperties", props, values, base); - mergings = concatenatedMixinProperties("mergedProperties", props, values, base); + concats = concatenatedMixinProperties('concatenatedProperties', props, values, base); + mergings = concatenatedMixinProperties('mergedProperties', props, values, base); for (key in props) { if (!props.hasOwnProperty(key)) { @@ -5540,7 +5560,7 @@ enifed('ember-metal/mixin', ['exports', 'ember-metal/core', 'ember-metal/merge', } // manually copy toString() because some JS engines do not enumerate it - if (props.hasOwnProperty("toString")) { + if (props.hasOwnProperty('toString')) { base.toString = props.toString; } } else if (currentMixin.mixins) { @@ -5559,7 +5579,7 @@ enifed('ember-metal/mixin', ['exports', 'ember-metal/core', 'ember-metal/merge', var bindings = m.bindings; if (!bindings) { bindings = m.bindings = {}; - } else if (!m.hasOwnProperty("bindings")) { + } else if (!m.hasOwnProperty('bindings')) { bindings = m.bindings = o_create['default'](m.bindings); } bindings[key] = value; @@ -5631,7 +5651,7 @@ enifed('ember-metal/mixin', ['exports', 'ember-metal/core', 'ember-metal/merge', if (descs[altKey] || values[altKey]) { value = values[altKey]; desc = descs[altKey]; - } else if ((possibleDesc = obj[altKey]) && possibleDesc !== null && typeof possibleDesc === "object" && possibleDesc.isDescriptor) { + } else if ((possibleDesc = obj[altKey]) && possibleDesc !== null && typeof possibleDesc === 'object' && possibleDesc.isDescriptor) { desc = possibleDesc; value = undefined; } else { @@ -5655,16 +5675,16 @@ enifed('ember-metal/mixin', ['exports', 'ember-metal/core', 'ember-metal/merge', function replaceObserversAndListeners(obj, key, observerOrListener) { var prev = obj[key]; - if ("function" === typeof prev) { - updateObserversAndListeners(obj, key, prev, "__ember_observesBefore__", ember_metal__observer.removeBeforeObserver); - updateObserversAndListeners(obj, key, prev, "__ember_observes__", ember_metal__observer.removeObserver); - updateObserversAndListeners(obj, key, prev, "__ember_listens__", events.removeListener); + if ('function' === typeof prev) { + updateObserversAndListeners(obj, key, prev, '__ember_observesBefore__', ember_metal__observer.removeBeforeObserver); + updateObserversAndListeners(obj, key, prev, '__ember_observes__', ember_metal__observer.removeObserver); + updateObserversAndListeners(obj, key, prev, '__ember_listens__', events.removeListener); } - if ("function" === typeof observerOrListener) { - updateObserversAndListeners(obj, key, observerOrListener, "__ember_observesBefore__", ember_metal__observer.addBeforeObserver); - updateObserversAndListeners(obj, key, observerOrListener, "__ember_observes__", ember_metal__observer.addObserver); - updateObserversAndListeners(obj, key, observerOrListener, "__ember_listens__", events.addListener); + if ('function' === typeof observerOrListener) { + updateObserversAndListeners(obj, key, observerOrListener, '__ember_observesBefore__', ember_metal__observer.addBeforeObserver); + updateObserversAndListeners(obj, key, observerOrListener, '__ember_observes__', ember_metal__observer.addObserver); + updateObserversAndListeners(obj, key, observerOrListener, '__ember_listens__', events.addListener); } } @@ -5688,7 +5708,7 @@ enifed('ember-metal/mixin', ['exports', 'ember-metal/core', 'ember-metal/merge', for (var i = 0, l = keys.length; i < l; i++) { key = keys[i]; - if (key === "constructor" || !values.hasOwnProperty(key)) { + if (key === 'constructor' || !values.hasOwnProperty(key)) { continue; } @@ -5729,6 +5749,7 @@ enifed('ember-metal/mixin', ['exports', 'ember-metal/core', 'ember-metal/merge', @param mixins* @return obj */ + function mixin(obj) { for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { args[_key - 1] = arguments[_key]; @@ -5835,13 +5856,14 @@ enifed('ember-metal/mixin', ['exports', 'ember-metal/core', 'ember-metal/merge', @param arguments* */ Mixin.create = function () { + // ES6TODO: this relies on a global state? + Ember['default'].anyUnprocessedMixins = true; + var M = this; + for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { args[_key2] = arguments[_key2]; } - // ES6TODO: this relies on a global state? - Ember['default'].anyUnprocessedMixins = true; - var M = this; return new M(args, undefined); }; @@ -5868,7 +5890,7 @@ enifed('ember-metal/mixin', ['exports', 'ember-metal/core', 'ember-metal/merge', for (idx = 0; idx < len; idx++) { currentMixin = arguments[idx]; - Ember['default'].assert("Expected hash or Mixin instance, got " + Object.prototype.toString.call(currentMixin), typeof currentMixin === "object" && currentMixin !== null && Object.prototype.toString.call(currentMixin) !== "[object Array]"); + Ember['default'].assert("Expected hash or Mixin instance, got " + Object.prototype.toString.call(currentMixin), typeof currentMixin === 'object' && currentMixin !== null && Object.prototype.toString.call(currentMixin) !== '[object Array]'); if (currentMixin instanceof Mixin) { mixins.push(currentMixin); @@ -5926,7 +5948,7 @@ enifed('ember-metal/mixin', ['exports', 'ember-metal/core', 'ember-metal/merge', if (obj instanceof Mixin) { return _detect(obj, this, {}); } - var m = obj["__ember_meta__"]; + var m = obj['__ember_meta__']; var mixins = m && m.mixins; if (mixins) { return !!mixins[utils.guidFor(this)]; @@ -5935,11 +5957,12 @@ enifed('ember-metal/mixin', ['exports', 'ember-metal/core', 'ember-metal/merge', }; MixinPrototype.without = function () { + var ret = new Mixin([this]); + for (var _len3 = arguments.length, args = Array(_len3), _key3 = 0; _key3 < _len3; _key3++) { args[_key3] = arguments[_key3]; } - var ret = new Mixin([this]); ret._without = args; return ret; }; @@ -5980,7 +6003,7 @@ enifed('ember-metal/mixin', ['exports', 'ember-metal/core', 'ember-metal/merge', // returns the mixins currently applied to the specified object // TODO: Make Ember.mixin Mixin.mixins = function (obj) { - var m = obj["__ember_meta__"]; + var m = obj['__ember_meta__']; var mixins = m && m.mixins; var ret = []; @@ -6002,7 +6025,7 @@ enifed('ember-metal/mixin', ['exports', 'ember-metal/core', 'ember-metal/merge', REQUIRED = new ember_metal__properties.Descriptor(); REQUIRED.toString = function () { - return "(Required Property)"; + return '(Required Property)'; }; /** @@ -6011,8 +6034,9 @@ enifed('ember-metal/mixin', ['exports', 'ember-metal/core', 'ember-metal/merge', @method required @for Ember */ + function required() { - Ember['default'].deprecate("Ember.required is deprecated as its behavior is inconsistent and unreliable.", false); + Ember['default'].deprecate('Ember.required is deprecated as its behavior is inconsistent and unreliable.', false); return REQUIRED; } @@ -6044,6 +6068,7 @@ enifed('ember-metal/mixin', ['exports', 'ember-metal/core', 'ember-metal/merge', @for Ember @param {String} methodName name of the method to alias */ + function aliasMethod(methodName) { return new Alias(methodName); } @@ -6075,6 +6100,7 @@ enifed('ember-metal/mixin', ['exports', 'ember-metal/core', 'ember-metal/merge', @param {Function} func @return func */ + function observer() { for (var _len4 = arguments.length, args = Array(_len4), _key4 = 0; _key4 < _len4; _key4++) { args[_key4] = arguments[_key4]; @@ -6132,10 +6158,11 @@ enifed('ember-metal/mixin', ['exports', 'ember-metal/core', 'ember-metal/merge', @param {Function} func @return func */ + function immediateObserver() { for (var i = 0, l = arguments.length; i < l; i++) { var arg = arguments[i]; - Ember['default'].assert("Immediate observers must observe internal properties only, not properties on other objects.", typeof arg !== "string" || arg.indexOf(".") === -1); + Ember['default'].assert("Immediate observers must observe internal properties only, not properties on other objects.", typeof arg !== "string" || arg.indexOf('.') === -1); } return observer.apply(this, arguments); @@ -6183,6 +6210,7 @@ enifed('ember-metal/mixin', ['exports', 'ember-metal/core', 'ember-metal/merge', @param {Function} func @return func */ + function beforeObserver() { for (var _len5 = arguments.length, args = Array(_len5), _key5 = 0; _key5 < _len5; _key5++) { args[_key5] = arguments[_key5]; @@ -6237,8 +6265,8 @@ enifed('ember-metal/observer', ['exports', 'ember-metal/watching', 'ember-metal/ exports.beforeObserversFor = beforeObserversFor; exports.removeBeforeObserver = removeBeforeObserver; - var AFTER_OBSERVERS = ":change"; - var BEFORE_OBSERVERS = ":before"; + var AFTER_OBSERVERS = ':change'; + var BEFORE_OBSERVERS = ':before'; function changeEvent(keyName) { return keyName + AFTER_OBSERVERS; @@ -6256,6 +6284,7 @@ enifed('ember-metal/observer', ['exports', 'ember-metal/watching', 'ember-metal/ @param {Object|Function} targetOrMethod @param {Function|String} [method] */ + function addObserver(obj, _path, target, method) { ember_metal__events.addListener(obj, changeEvent(_path), target, method); watching.watch(obj, _path); @@ -6275,6 +6304,7 @@ enifed('ember-metal/observer', ['exports', 'ember-metal/watching', 'ember-metal/ @param {Object|Function} target @param {Function|String} [method] */ + function removeObserver(obj, path, target, method) { watching.unwatch(obj, path); ember_metal__events.removeListener(obj, changeEvent(path), target, method); @@ -6290,6 +6320,7 @@ enifed('ember-metal/observer', ['exports', 'ember-metal/watching', 'ember-metal/ @param {Object|Function} target @param {Function|String} [method] */ + function addBeforeObserver(obj, path, target, method) { ember_metal__events.addListener(obj, beforeEvent(path), target, method); watching.watch(obj, path); @@ -6332,6 +6363,7 @@ enifed('ember-metal/observer', ['exports', 'ember-metal/watching', 'ember-metal/ @param {Object|Function} target @param {Function|String} [method] */ + function removeBeforeObserver(obj, path, target, method) { watching.unwatch(obj, path); ember_metal__events.removeListener(obj, beforeEvent(path), target, method); @@ -6446,7 +6478,9 @@ enifed('ember-metal/path_cache', ['exports', 'ember-metal/cache'], function (exp firstDotIndexCache: firstDotIndexCache, firstKeyCache: firstKeyCache, tailPathCache: tailPathCache - };function isGlobal(path) { + }; + + function isGlobal(path) { return isGlobalCache.get(path); } @@ -6475,23 +6509,10 @@ enifed('ember-metal/path_cache', ['exports', 'ember-metal/cache'], function (exp }); enifed('ember-metal/platform/create', ['exports', 'ember-metal/platform/define_properties'], function (exports, defineProperties) { - - 'REMOVE_USE_STRICT: true'; /** - @class platform - @namespace Ember - @static - */ - /** - Identical to `Object.create()`. Implements if not available natively. - - @since 1.8.0 - @method create - @for Ember - */ - var create; + "REMOVE_USE_STRICT: true";var create; // ES5 15.2.3.5 // http://es5.github.com/#x15.2.3.5 if (!(Object.create && !Object.create(null).hasOwnProperty)) { @@ -6504,7 +6525,7 @@ enifed('ember-metal/platform/create', ['exports', 'ember-metal/platform/define_p // Object.prototype.__proto__ === null if (supportsProto || typeof document === 'undefined') { createEmpty = function () { - return { '__proto__': null }; + return { "__proto__": null }; }; } else { // In old IE __proto__ can't be used to manually set `null`, nor does @@ -6547,13 +6568,13 @@ enifed('ember-metal/platform/create', ['exports', 'ember-metal/platform/define_p if (prototype === null) { object = createEmpty(); } else { - if (typeof prototype !== 'object' && typeof prototype !== 'function') { + if (typeof prototype !== "object" && typeof prototype !== "function") { // In the native implementation `parent` can be `null` // OR *any* `instanceof Object` (Object|Function|Array|RegExp|etc) // Use `typeof` tho, b/c in old IE, DOM elements are not `instanceof Object` // like they are in modern browsers. Using `Object.create` on DOM elements // is...err...probably inappropriate, but the native version allows for it. - throw new TypeError('Object prototype may only be an Object or null'); // same msg as Chrome + throw new TypeError("Object prototype may only be an Object or null"); // same msg as Chrome } Type.prototype = prototype; @@ -6708,10 +6729,10 @@ enifed('ember-metal/platform/define_property', ['exports'], function (exports) { defineProperty = function (obj, keyName, desc) { var isNode; - if (typeof Node === 'object') { + if (typeof Node === "object") { isNode = obj instanceof Node; } else { - isNode = typeof obj === 'object' && typeof obj.nodeType === 'number' && typeof obj.nodeName === 'string'; + isNode = typeof obj === "object" && typeof obj.nodeType === "number" && typeof obj.nodeName === "string"; } if (isNode) { @@ -6766,7 +6787,7 @@ enifed('ember-metal/properties', ['exports', 'ember-metal/core', 'ember-metal/ut function DEFAULT_GETTER_FUNCTION(name) { return function GETTER_FUNCTION() { - var meta = this["__ember_meta__"]; + var meta = this['__ember_meta__']; return meta && meta.values[name]; }; } @@ -6816,6 +6837,7 @@ enifed('ember-metal/properties', ['exports', 'ember-metal/core', 'ember-metal/ut @param {*} [data] something other than a descriptor, that will become the explicit value of this property. */ + function defineProperty(obj, keyName, desc, data, meta) { var possibleDesc, existingDesc, watching, value; @@ -6824,7 +6846,7 @@ enifed('ember-metal/properties', ['exports', 'ember-metal/core', 'ember-metal/ut } var watchEntry = meta.watching[keyName]; possibleDesc = obj[keyName]; - existingDesc = possibleDesc !== null && typeof possibleDesc === "object" && possibleDesc.isDescriptor ? possibleDesc : undefined; + existingDesc = possibleDesc !== null && typeof possibleDesc === 'object' && possibleDesc.isDescriptor ? possibleDesc : undefined; watching = watchEntry !== undefined && watchEntry > 0; @@ -6835,7 +6857,7 @@ enifed('ember-metal/properties', ['exports', 'ember-metal/core', 'ember-metal/ut if (desc instanceof Descriptor) { value = desc; - + if (watching && define_property.hasPropertyAccessors) { define_property.defineProperty(obj, keyName, { configurable: true, @@ -6853,7 +6875,7 @@ enifed('ember-metal/properties', ['exports', 'ember-metal/core', 'ember-metal/ut if (desc == null) { value = data; - + if (watching && define_property.hasPropertyAccessors) { meta.values[keyName] = data; define_property.defineProperty(obj, keyName, { @@ -6924,11 +6946,11 @@ enifed('ember-metal/property_events', ['exports', 'ember-metal/utils', 'ember-me @return {void} */ function propertyWillChange(obj, keyName) { - var m = obj["__ember_meta__"]; - var watching = m && m.watching[keyName] > 0 || keyName === "length"; + var m = obj['__ember_meta__']; + var watching = m && m.watching[keyName] > 0 || keyName === 'length'; var proto = m && m.proto; var possibleDesc = obj[keyName]; - var desc = possibleDesc !== null && typeof possibleDesc === "object" && possibleDesc.isDescriptor ? possibleDesc : undefined; + var desc = possibleDesc !== null && typeof possibleDesc === 'object' && possibleDesc.isDescriptor ? possibleDesc : undefined; if (!watching) { return; @@ -6963,11 +6985,11 @@ enifed('ember-metal/property_events', ['exports', 'ember-metal/utils', 'ember-me @return {void} */ function propertyDidChange(obj, keyName) { - var m = obj["__ember_meta__"]; - var watching = m && m.watching[keyName] > 0 || keyName === "length"; + var m = obj['__ember_meta__']; + var watching = m && m.watching[keyName] > 0 || keyName === 'length'; var proto = m && m.proto; var possibleDesc = obj[keyName]; - var desc = possibleDesc !== null && typeof possibleDesc === "object" && possibleDesc.isDescriptor ? possibleDesc : undefined; + var desc = possibleDesc !== null && typeof possibleDesc === 'object' && possibleDesc.isDescriptor ? possibleDesc : undefined; if (proto === obj) { return; @@ -6978,7 +7000,7 @@ enifed('ember-metal/property_events', ['exports', 'ember-metal/utils', 'ember-me desc.didChange(obj, keyName); } - if (!watching && keyName !== "length") { + if (!watching && keyName !== 'length') { return; } @@ -7067,7 +7089,7 @@ enifed('ember-metal/property_events', ['exports', 'ember-metal/utils', 'ember-me for (i = 0; i < keys.length; i++) { key = keys[i]; possibleDesc = obj[key]; - desc = possibleDesc !== null && typeof possibleDesc === "object" && possibleDesc.isDescriptor ? possibleDesc : undefined; + desc = possibleDesc !== null && typeof possibleDesc === 'object' && possibleDesc.isDescriptor ? possibleDesc : undefined; if (desc && desc._suspended === obj) { continue; @@ -7079,7 +7101,7 @@ enifed('ember-metal/property_events', ['exports', 'ember-metal/utils', 'ember-me } function chainsWillChange(obj, keyName, m) { - if (!(m.hasOwnProperty("chainWatchers") && m.chainWatchers[keyName])) { + if (!(m.hasOwnProperty('chainWatchers') && m.chainWatchers[keyName])) { return; } @@ -7097,7 +7119,7 @@ enifed('ember-metal/property_events', ['exports', 'ember-metal/utils', 'ember-me } function chainsDidChange(obj, keyName, m, suppressEvents) { - if (!(m && m.hasOwnProperty("chainWatchers") && m.chainWatchers[keyName])) { + if (!(m && m.hasOwnProperty('chainWatchers') && m.chainWatchers[keyName])) { return; } @@ -7168,7 +7190,7 @@ enifed('ember-metal/property_events', ['exports', 'ember-metal/utils', 'ember-me return; } - var eventName = keyName + ":before"; + var eventName = keyName + ':before'; var listeners, added; if (deferred) { listeners = beforeObserverSet.add(obj, keyName, eventName); @@ -7184,7 +7206,7 @@ enifed('ember-metal/property_events', ['exports', 'ember-metal/utils', 'ember-me return; } - var eventName = keyName + ":change"; + var eventName = keyName + ':change'; var listeners; if (deferred) { listeners = observerSet.add(obj, keyName, eventName); @@ -7237,13 +7259,14 @@ enifed('ember-metal/property_get', ['exports', 'ember-metal/core', 'ember-metal/ @param {String} keyName The property key to retrieve @return {Object} the property value or `null`. */ + function get(obj, keyName) { // Helpers that operate with 'this' within an #each - if (keyName === "") { + if (keyName === '') { return obj; } - if (!keyName && "string" === typeof obj) { + if (!keyName && 'string' === typeof obj) { keyName = obj; obj = Ember['default'].lookup; } @@ -7255,9 +7278,9 @@ enifed('ember-metal/property_get', ['exports', 'ember-metal/core', 'ember-metal/ return _getPath(obj, keyName); } - var meta = obj["__ember_meta__"]; + var meta = obj['__ember_meta__']; var possibleDesc = obj[keyName]; - var desc = possibleDesc !== null && typeof possibleDesc === "object" && possibleDesc.isDescriptor ? possibleDesc : undefined; + var desc = possibleDesc !== null && typeof possibleDesc === 'object' && possibleDesc.isDescriptor ? possibleDesc : undefined; var ret; if (desc === undefined && path_cache.isPath(keyName)) { @@ -7267,14 +7290,14 @@ enifed('ember-metal/property_get', ['exports', 'ember-metal/core', 'ember-metal/ if (desc) { return desc.get(obj, keyName); } else { - + if (define_property.hasPropertyAccessors && meta && meta.watching[keyName] > 0) { ret = meta.values[keyName]; } else { ret = obj[keyName]; } - - if (ret === undefined && "object" === typeof obj && !(keyName in obj) && "function" === typeof obj.unknownProperty) { + + if (ret === undefined && 'object' === typeof obj && !(keyName in obj) && 'function' === typeof obj.unknownProperty) { return obj.unknownProperty(keyName); } @@ -7295,13 +7318,14 @@ enifed('ember-metal/property_get', ['exports', 'ember-metal/core', 'ember-metal/ @param {String} path A path on the target or a global property path. @return {Array} a temporary array with the normalized target/path pair. */ + function normalizeTuple(target, path) { var hasThis = path_cache.hasThis(path); var isGlobal = !hasThis && path_cache.isGlobal(path); var key; if (!target && !isGlobal) { - return [undefined, ""]; + return [undefined, '']; } if (hasThis) { @@ -7329,6 +7353,7 @@ enifed('ember-metal/property_get', ['exports', 'ember-metal/core', 'ember-metal/ throw new EmberError['default']("Object in path " + path + " could not be found or was destroyed."); } } + function _getPath(root, path) { var hasThis, parts, tuple, idx, len; @@ -7373,7 +7398,7 @@ enifed('ember-metal/property_set', ['exports', 'ember-metal/core', 'ember-metal/ exports.trySet = trySet; function set(obj, keyName, value, tolerant) { - if (typeof obj === "string") { + if (typeof obj === 'string') { Ember['default'].assert("Path '" + obj + "' must be global if no obj is given.", path_cache.isGlobalPath(obj)); value = keyName; keyName = obj; @@ -7388,9 +7413,9 @@ enifed('ember-metal/property_set', ['exports', 'ember-metal/core', 'ember-metal/ var meta, possibleDesc, desc; if (obj) { - meta = obj["__ember_meta__"]; + meta = obj['__ember_meta__']; possibleDesc = obj[keyName]; - desc = possibleDesc !== null && typeof possibleDesc === "object" && possibleDesc.isDescriptor ? possibleDesc : undefined; + desc = possibleDesc !== null && typeof possibleDesc === 'object' && possibleDesc.isDescriptor ? possibleDesc : undefined; } var isUnknown, currentValue; @@ -7399,26 +7424,26 @@ enifed('ember-metal/property_set', ['exports', 'ember-metal/core', 'ember-metal/ } Ember['default'].assert("You need to provide an object and key to `set`.", !!obj && keyName !== undefined); - Ember['default'].assert("calling set on destroyed object", !obj.isDestroyed); + Ember['default'].assert('calling set on destroyed object', !obj.isDestroyed); if (desc) { desc.set(obj, keyName, value); } else { - if (obj !== null && value !== undefined && typeof obj === "object" && obj[keyName] === value) { + if (obj !== null && value !== undefined && typeof obj === 'object' && obj[keyName] === value) { return value; } - isUnknown = "object" === typeof obj && !(keyName in obj); + isUnknown = 'object' === typeof obj && !(keyName in obj); // setUnknownProperty is called if `obj` is an object, // the property does not already exist, and the // `setUnknownProperty` method exists on the object - if (isUnknown && "function" === typeof obj.setUnknownProperty) { + if (isUnknown && 'function' === typeof obj.setUnknownProperty) { obj.setUnknownProperty(keyName, value); } else if (meta && meta.watching[keyName] > 0) { if (meta.proto !== obj) { - + if (define_property.hasPropertyAccessors) { currentValue = meta.values[keyName]; } else { @@ -7428,13 +7453,13 @@ enifed('ember-metal/property_set', ['exports', 'ember-metal/core', 'ember-metal/ // only trigger a change if the value has changed if (value !== currentValue) { property_events.propertyWillChange(obj, keyName); - + if (define_property.hasPropertyAccessors) { if (currentValue === undefined && !(keyName in obj) || !Object.prototype.propertyIsEnumerable.call(obj, keyName)) { properties.defineProperty(obj, keyName, null, value); // setup mandatory setter } else { - meta.values[keyName] = value; - } + meta.values[keyName] = value; + } } else { obj[keyName] = value; } @@ -7451,26 +7476,26 @@ enifed('ember-metal/property_set', ['exports', 'ember-metal/core', 'ember-metal/ var keyName; // get the last part of the path - keyName = path.slice(path.lastIndexOf(".") + 1); + keyName = path.slice(path.lastIndexOf('.') + 1); // get the first part of the part path = path === keyName ? keyName : path.slice(0, path.length - (keyName.length + 1)); // unless the path is this, look up the first part to // get the root - if (path !== "this") { + if (path !== 'this') { root = property_get._getPath(root, path); } if (!keyName || keyName.length === 0) { - throw new EmberError['default']("Property set failed: You passed an empty path"); + throw new EmberError['default']('Property set failed: You passed an empty path'); } if (!root) { if (tolerant) { return; } else { - throw new EmberError['default']("Property set failed: object in path \"" + path + "\" could not be found or was destroyed."); + throw new EmberError['default']('Property set failed: object in path "' + path + '" could not be found or was destroyed.'); } } @@ -7490,6 +7515,7 @@ enifed('ember-metal/property_set', ['exports', 'ember-metal/core', 'ember-metal/ @param {String} path The property path to set @param {Object} value The value to set */ + function trySet(root, path, value) { return set(root, path, value, true); } @@ -7749,7 +7775,7 @@ enifed('ember-metal/run_loop', ['exports', 'ember-metal/core', 'ember-metal/util @param {Object} [arguments*] Optional arguments to be passed to the queued method. @return {void} */ - run.schedule = function () { + run.schedule = function () /* queue, target, method */{ checkAutoRun(); backburner.schedule.apply(backburner, arguments); }; @@ -7811,7 +7837,7 @@ enifed('ember-metal/run_loop', ['exports', 'ember-metal/core', 'ember-metal/util @param {Number} wait Number of milliseconds to wait. @return {*} Timer information for use in cancelling, see `run.cancel`. */ - run.later = function () { + run.later = function () /*target, method*/{ return backburner.later.apply(backburner, arguments); }; @@ -7828,11 +7854,12 @@ enifed('ember-metal/run_loop', ['exports', 'ember-metal/core', 'ember-metal/util @return {Object} Timer information for use in cancelling, see `run.cancel`. */ run.once = function () { + checkAutoRun(); + for (var _len3 = arguments.length, args = Array(_len3), _key3 = 0; _key3 < _len3; _key3++) { args[_key3] = arguments[_key3]; } - checkAutoRun(); args.unshift('actions'); return backburner.scheduleOnce.apply(backburner, args); }; @@ -7888,7 +7915,7 @@ enifed('ember-metal/run_loop', ['exports', 'ember-metal/core', 'ember-metal/util @param {Object} [args*] Optional arguments to pass to the timeout. @return {Object} Timer information for use in cancelling, see `run.cancel`. */ - run.scheduleOnce = function () { + run.scheduleOnce = function () /*queue, target, method*/{ checkAutoRun(); return backburner.scheduleOnce.apply(backburner, arguments); }; @@ -8148,7 +8175,6 @@ enifed('ember-metal/run_loop', ['exports', 'ember-metal/core', 'ember-metal/util run.queues.splice(array.indexOf.call(run.queues, after) + 1, 0, name); } }; - /* queue, target, method */ /*target, method*/ /*queue, target, method*/ }); enifed('ember-metal/set_properties', ['exports', 'ember-metal/property_events', 'ember-metal/property_set', 'ember-metal/keys'], function (exports, property_events, property_set, keys) { @@ -8341,7 +8367,7 @@ enifed('ember-metal/streams/stream', ['exports', 'ember-metal/platform/create', isStream: true, init: function () { - this.state = "dirty"; + this.state = 'dirty'; this.cache = undefined; this.subscriberHead = null; this.subscriberTail = null; @@ -8372,10 +8398,10 @@ enifed('ember-metal/streams/stream', ['exports', 'ember-metal/platform/create', }, value: function () { - if (this.state === "clean") { + if (this.state === 'clean') { return this.cache; - } else if (this.state === "dirty") { - this.state = "clean"; + } else if (this.state === 'dirty') { + this.state = 'clean'; return this.cache = this.valueFn(); } // TODO: Ensure value is never called on a destroyed stream @@ -8397,8 +8423,8 @@ enifed('ember-metal/streams/stream', ['exports', 'ember-metal/platform/create', }, notifyExcept: function (callbackToSkip, contextToSkip) { - if (this.state === "clean") { - this.state = "dirty"; + if (this.state === 'clean') { + this.state = 'dirty'; this._notifySubscribers(callbackToSkip, contextToSkip); } }, @@ -8456,8 +8482,8 @@ enifed('ember-metal/streams/stream', ['exports', 'ember-metal/platform/create', }, destroy: function () { - if (this.state !== "destroyed") { - this.state = "destroyed"; + if (this.state !== 'destroyed') { + this.state = 'destroyed'; var children = this.children; for (var key in children) { @@ -8520,7 +8546,7 @@ enifed('ember-metal/streams/stream_binding', ['exports', 'ember-metal/platform/c this.senderCallback = callback; this.senderContext = context; this.senderValue = value; - run['default'].schedule("sync", this, this._sync); + run['default'].schedule('sync', this, this._sync); } else if (this.senderContext !== this) { this.senderCallback = callback; this.senderContext = context; @@ -8529,7 +8555,7 @@ enifed('ember-metal/streams/stream_binding', ['exports', 'ember-metal/platform/c }, _sync: function () { - if (this.state === "destroyed") { + if (this.state === 'destroyed') { return; } @@ -8544,7 +8570,7 @@ enifed('ember-metal/streams/stream_binding', ['exports', 'ember-metal/platform/c this.senderValue = undefined; // Force StreamBindings to always notify - this.state = "clean"; + this.state = 'clean'; this.notifyExcept(senderCallback, senderContext); }, @@ -8593,6 +8619,7 @@ enifed('ember-metal/streams/utils', ['exports', './stream'], function (exports, @param {Object} [context] the callback will be executed with this context if it is provided */ + function subscribe(object, callback, context) { if (object && object.isStream) { object.subscribe(callback, context); @@ -8610,6 +8637,7 @@ enifed('ember-metal/streams/utils', ['exports', './stream'], function (exports, @param {Function} callback function originally passed to `subscribe()` @param {Object} [context] object originally passed to `subscribe()` */ + function unsubscribe(object, callback, context) { if (object && object.isStream) { object.unsubscribe(callback, context); @@ -8626,6 +8654,7 @@ enifed('ember-metal/streams/utils', ['exports', './stream'], function (exports, @param {Object|Stream} object object to return the value of @return the stream's current value, or the non-stream object itself */ + function read(object) { if (object && object.isStream) { return object.value(); @@ -8646,6 +8675,7 @@ enifed('ember-metal/streams/utils', ['exports', './stream'], function (exports, the values of stream objects retaining their original position and replaced with the stream's current value. */ + function readArray(array) { var length = array.length; var ret = new Array(length); @@ -8668,6 +8698,7 @@ enifed('ember-metal/streams/utils', ['exports', './stream'], function (exports, the case of non-stream objects, and the streams' current values in the case of stream objects. */ + function readHash(object) { var ret = {}; for (var key in object) { @@ -8686,6 +8717,7 @@ enifed('ember-metal/streams/utils', ['exports', './stream'], function (exports, @return {Boolean} `true` if the array contains a stream/bound value, `false` otherwise */ + function scanArray(array) { var length = array.length; var containsStream = false; @@ -8710,6 +8742,7 @@ enifed('ember-metal/streams/utils', ['exports', './stream'], function (exports, @return {Boolean} `true` if the object contains a stream/bound value, `false` otherwise */ + function scanHash(hash) { var containsStream = false; @@ -8736,6 +8769,7 @@ enifed('ember-metal/streams/utils', ['exports', './stream'], function (exports, provided separator, and any stream array members having been replaced by the current value of the stream */ + function concat(array, separator) { // TODO: Create subclass ConcatStream < Stream. Defer // subscribing to streams until the value() is called. @@ -8788,6 +8822,7 @@ enifed('ember-metal/streams/utils', ['exports', './stream'], function (exports, non-stream object, the return value of the provided function `fn`. */ + function chain(value, fn) { if (isStream(value)) { var stream = new Stream['default'](fn); @@ -8801,7 +8836,7 @@ enifed('ember-metal/streams/utils', ['exports', './stream'], function (exports, }); enifed('ember-metal/utils', ['exports', 'ember-metal/core', 'ember-metal/platform/create', 'ember-metal/platform/define_property', 'ember-metal/array'], function (exports, Ember, o_create, define_property, array) { - + exports.uuid = uuid; exports.generateGuid = generateGuid; exports.guidFor = guidFor; @@ -8819,18 +8854,7 @@ enifed('ember-metal/utils', ['exports', 'ember-metal/core', 'ember-metal/platfor exports.isArray = isArray; exports.canInvoke = canInvoke; - "REMOVE_USE_STRICT: true"; /** - @module ember-metal - */ - - /** - Previously we used `Ember.$.uuid`, however `$.uuid` has been removed from - jQuery master. We'll just bootstrap our own uuid now. - - @private - @return {Number} the uuid - */ - var _uuid = 0; + "REMOVE_USE_STRICT: true";var _uuid = 0; /** Generates a universally unique identifier. This method @@ -8841,6 +8865,7 @@ enifed('ember-metal/utils', ['exports', 'ember-metal/core', 'ember-metal/platfor @public @return {Number} [description] */ + function uuid() { return ++_uuid; } @@ -8853,7 +8878,7 @@ enifed('ember-metal/utils', ['exports', 'ember-metal/core', 'ember-metal/platfor @type String @final */ - var GUID_PREFIX = "ember"; + var GUID_PREFIX = 'ember'; // Used for guid generation... var numberCache = []; @@ -8893,7 +8918,7 @@ enifed('ember-metal/utils', ['exports', 'ember-metal/core', 'ember-metal/platfor Some numbers: http://jsperf.com/eval-vs-keys/8 - Known Trick™ + Known Trickâ„¢ @private @return {String} interned version of the provided string @@ -8923,7 +8948,7 @@ enifed('ember-metal/utils', ['exports', 'ember-metal/core', 'ember-metal/platfor @type String @final */ - var GUID_KEY = intern("__ember" + +new Date()); + var GUID_KEY = intern('__ember' + +new Date()); var GUID_DESC = { writable: true, @@ -8954,7 +8979,7 @@ enifed('ember-metal/utils', ['exports', 'ember-metal/core', 'ember-metal/platfor }; var EMBER_META_PROPERTY = { - name: "__ember_meta__", + name: '__ember_meta__', descriptor: META_DESC }; @@ -8964,7 +8989,7 @@ enifed('ember-metal/utils', ['exports', 'ember-metal/core', 'ember-metal/platfor }; var NEXT_SUPER_PROPERTY = { - name: "__nextSuper", + name: '__nextSuper', descriptor: undefinedDescriptor }; @@ -9003,6 +9028,7 @@ enifed('ember-metal/utils', ['exports', 'ember-metal/core', 'ember-metal/platfor @param {Object} obj any object, string, number, Element, or primitive @return {String} the unique guid for this instance. */ + function guidFor(obj) { // special cases where we don't want to add a key to object @@ -9019,26 +9045,26 @@ enifed('ember-metal/utils', ['exports', 'ember-metal/core', 'ember-metal/platfor // Don't allow prototype changes to String etc. to change the guidFor switch (type) { - case "number": + case 'number': ret = numberCache[obj]; if (!ret) { - ret = numberCache[obj] = "nu" + obj; + ret = numberCache[obj] = 'nu' + obj; } return ret; - case "string": + case 'string': ret = stringCache[obj]; if (!ret) { - ret = stringCache[obj] = "st" + uuid(); + ret = stringCache[obj] = 'st' + uuid(); } return ret; - case "boolean": - return obj ? "(true)" : "(false)"; + case 'boolean': + return obj ? '(true)' : '(false)'; default: if (obj[GUID_KEY]) { @@ -9046,11 +9072,11 @@ enifed('ember-metal/utils', ['exports', 'ember-metal/core', 'ember-metal/platfor } if (obj === Object) { - return "(Object)"; + return '(Object)'; } if (obj === Array) { - return "(Array)"; + return '(Array)'; } ret = GUID_PREFIX + uuid(); @@ -9106,11 +9132,11 @@ enifed('ember-metal/utils', ['exports', 'ember-metal/core', 'ember-metal/platfor // Placeholder for non-writable metas. var EMPTY_META = new Meta(null); - + if (define_property.hasPropertyAccessors) { EMPTY_META.values = {}; } - + /** Retrieves the meta hash for an object. If `writable` is true ensures the @@ -9141,24 +9167,24 @@ enifed('ember-metal/utils', ['exports', 'ember-metal/core', 'ember-metal/platfor if (obj.__defineNonEnumerable) { obj.__defineNonEnumerable(EMBER_META_PROPERTY); } else { - define_property.defineProperty(obj, "__ember_meta__", META_DESC); + define_property.defineProperty(obj, '__ember_meta__', META_DESC); } } ret = new Meta(obj); - + if (define_property.hasPropertyAccessors) { ret.values = {}; } - + obj.__ember_meta__ = ret; } else if (ret.source !== obj) { if (obj.__defineNonEnumerable) { obj.__defineNonEnumerable(EMBER_META_PROPERTY); } else { - define_property.defineProperty(obj, "__ember_meta__", META_DESC); + define_property.defineProperty(obj, '__ember_meta__', META_DESC); } ret = o_create['default'](ret); @@ -9167,16 +9193,17 @@ enifed('ember-metal/utils', ['exports', 'ember-metal/core', 'ember-metal/platfor ret.cacheMeta = undefined; ret.source = obj; - + if (define_property.hasPropertyAccessors) { ret.values = o_create['default'](ret.values); } - - obj["__ember_meta__"] = ret; + + obj['__ember_meta__'] = ret; } return ret; } + function getMeta(obj, property) { var _meta = meta(obj, false); return _meta[property]; @@ -9221,6 +9248,7 @@ enifed('ember-metal/utils', ['exports', 'ember-metal/core', 'ember-metal/platfor (or meta property) if one does not already exist or if it's shared with its constructor */ + function metaPath(obj, path, writable) { Ember['default'].deprecate("Ember.metaPath is deprecated and will be removed from future releases."); var _meta = meta(obj, writable); @@ -9261,6 +9289,7 @@ enifed('ember-metal/utils', ['exports', 'ember-metal/core', 'ember-metal/platfor @param {Function} superFunc The super function. @return {Function} wrapped function. */ + function wrap(func, superFunc) { function superWrapper() { var ret; @@ -9330,9 +9359,9 @@ enifed('ember-metal/utils', ['exports', 'ember-metal/core', 'ember-metal/platfor var modulePath, type; if (typeof EmberArray === "undefined") { - modulePath = "ember-runtime/mixins/array"; + modulePath = 'ember-runtime/mixins/array'; if (Ember['default'].__loader.registry[modulePath]) { - EmberArray = Ember['default'].__loader.require(modulePath)["default"]; + EmberArray = Ember['default'].__loader.require(modulePath)['default']; } } @@ -9347,10 +9376,10 @@ enifed('ember-metal/utils', ['exports', 'ember-metal/core', 'ember-metal/platfor } type = typeOf(obj); - if ("array" === type) { + if ('array' === type) { return true; } - if (obj.length !== undefined && "object" === type) { + if (obj.length !== undefined && 'object' === type) { return true; } return false; @@ -9378,6 +9407,7 @@ enifed('ember-metal/utils', ['exports', 'ember-metal/core', 'ember-metal/platfor @param {Object} obj the object @return {Array} */ + function makeArray(obj) { if (obj === null || obj === undefined) { return []; @@ -9403,7 +9433,7 @@ enifed('ember-metal/utils', ['exports', 'ember-metal/core', 'ember-metal/platfor @return {Boolean} */ function canInvoke(obj, methodName) { - return !!(obj && typeof obj[methodName] === "function"); + return !!(obj && typeof obj[methodName] === 'function'); } /** @@ -9425,6 +9455,7 @@ enifed('ember-metal/utils', ['exports', 'ember-metal/core', 'ember-metal/platfor @param {Array} [args] The arguments to pass to the method @return {*} the return value of the invoked method or undefined if it cannot be invoked */ + function tryInvoke(obj, methodName, args) { if (canInvoke(obj, methodName)) { return args ? applyStr(obj, methodName, args) : applyStr(obj, methodName); @@ -9438,7 +9469,7 @@ enifed('ember-metal/utils', ['exports', 'ember-metal/core', 'ember-metal/platfor // jscs:disable try {} finally { count++; - throw new Error("needsFinallyFixTest"); + throw new Error('needsFinallyFixTest'); } // jscs:enable } catch (e) {} @@ -9677,25 +9708,25 @@ enifed('ember-metal/utils', ['exports', 'ember-metal/core', 'ember-metal/platfor // ES6TODO: Depends on Ember.Object which is defined in runtime. if (typeof EmberObject === "undefined") { - modulePath = "ember-runtime/system/object"; + modulePath = 'ember-runtime/system/object'; if (Ember['default'].__loader.registry[modulePath]) { - EmberObject = Ember['default'].__loader.require(modulePath)["default"]; + EmberObject = Ember['default'].__loader.require(modulePath)['default']; } } - ret = item === null || item === undefined ? String(item) : TYPE_MAP[toString.call(item)] || "object"; + ret = item === null || item === undefined ? String(item) : TYPE_MAP[toString.call(item)] || 'object'; - if (ret === "function") { + if (ret === 'function') { if (EmberObject && EmberObject.detect(item)) { - ret = "class"; + ret = 'class'; } - } else if (ret === "object") { + } else if (ret === 'object') { if (item instanceof Error) { - ret = "error"; + ret = 'error'; } else if (EmberObject && item instanceof EmberObject) { - ret = "instance"; + ret = 'instance'; } else if (item instanceof Date) { - ret = "date"; + ret = 'date'; } } @@ -9715,13 +9746,14 @@ enifed('ember-metal/utils', ['exports', 'ember-metal/core', 'ember-metal/platfor @return {String} A description of the object @since 1.4.0 */ + function inspect(obj) { var type = typeOf(obj); - if (type === "array") { - return "[" + obj + "]"; + if (type === 'array') { + return '[' + obj + ']'; } - if (type !== "object") { - return obj + ""; + if (type !== 'object') { + return obj + ''; } var v; @@ -9729,14 +9761,14 @@ enifed('ember-metal/utils', ['exports', 'ember-metal/core', 'ember-metal/platfor for (var key in obj) { if (obj.hasOwnProperty(key)) { v = obj[key]; - if (v === "toString") { + if (v === 'toString') { continue; } // ignore useless items - if (typeOf(v) === "function") { + if (typeOf(v) === 'function') { v = "function() { ... }"; } - if (v && typeof v.toString !== "function") { + if (v && typeof v.toString !== 'function') { ret.push(key + ": " + toString.call(v)); } else { ret.push(key + ": " + v); @@ -9753,6 +9785,7 @@ enifed('ember-metal/utils', ['exports', 'ember-metal/core', 'ember-metal/platfor @param {Function} method @param {Array} args */ + function apply(t, m, a) { var l = a && a.length; if (!a || !l) { @@ -9779,6 +9812,7 @@ enifed('ember-metal/utils', ['exports', 'ember-metal/core', 'ember-metal/platfor @param {String} method @param {Array} args */ + function applyStr(t, m, a) { var l = a && a.length; if (!a || !l) { @@ -9822,7 +9856,7 @@ enifed('ember-metal/watch_key', ['exports', 'ember-metal/core', 'ember-metal/uti function watchKey(obj, keyName, meta) { // can't watch length on Array - it is special... - if (keyName === "length" && utils.typeOf(obj) === "array") { + if (keyName === 'length' && utils.typeOf(obj) === 'array') { return; } @@ -9834,33 +9868,33 @@ enifed('ember-metal/watch_key', ['exports', 'ember-metal/core', 'ember-metal/uti watching[keyName] = 1; var possibleDesc = obj[keyName]; - var desc = possibleDesc !== null && typeof possibleDesc === "object" && possibleDesc.isDescriptor ? possibleDesc : undefined; + var desc = possibleDesc !== null && typeof possibleDesc === 'object' && possibleDesc.isDescriptor ? possibleDesc : undefined; if (desc && desc.willWatch) { desc.willWatch(obj, keyName); } - if ("function" === typeof obj.willWatchProperty) { + if ('function' === typeof obj.willWatchProperty) { obj.willWatchProperty(keyName); } - + if (define_property.hasPropertyAccessors) { handleMandatorySetter(m, obj, keyName); } - + } else { watching[keyName] = (watching[keyName] || 0) + 1; } } - + var handleMandatorySetter = function handleMandatorySetter(m, obj, keyName) { var descriptor = Object.getOwnPropertyDescriptor && Object.getOwnPropertyDescriptor(obj, keyName); var configurable = descriptor ? descriptor.configurable : true; var isWritable = descriptor ? descriptor.writable : true; - var hasValue = descriptor ? "value" in descriptor : true; + var hasValue = descriptor ? 'value' in descriptor : true; var possibleDesc = descriptor && descriptor.value; - var isDescriptor = possibleDesc !== null && typeof possibleDesc === "object" && possibleDesc.isDescriptor; + var isDescriptor = possibleDesc !== null && typeof possibleDesc === 'object' && possibleDesc.isDescriptor; if (isDescriptor) { return; @@ -9877,7 +9911,7 @@ enifed('ember-metal/watch_key', ['exports', 'ember-metal/core', 'ember-metal/uti }); } }; - + // This is super annoying, but required until // https://github.com/babel/babel/issues/906 is resolved @@ -9891,16 +9925,16 @@ enifed('ember-metal/watch_key', ['exports', 'ember-metal/core', 'ember-metal/uti watching[keyName] = 0; var possibleDesc = obj[keyName]; - var desc = possibleDesc !== null && typeof possibleDesc === "object" && possibleDesc.isDescriptor ? possibleDesc : undefined; + var desc = possibleDesc !== null && typeof possibleDesc === 'object' && possibleDesc.isDescriptor ? possibleDesc : undefined; if (desc && desc.didUnwatch) { desc.didUnwatch(obj, keyName); } - if ("function" === typeof obj.didUnwatchProperty) { + if ('function' === typeof obj.didUnwatchProperty) { obj.didUnwatchProperty(keyName); } - + if (!desc && define_property.hasPropertyAccessors && keyName in obj) { define_property.defineProperty(obj, keyName, { configurable: true, @@ -9918,7 +9952,7 @@ enifed('ember-metal/watch_key', ['exports', 'ember-metal/core', 'ember-metal/uti get: properties.DEFAULT_GETTER_FUNCTION(keyName) }); } - + } else if (watching[keyName] > 1) { watching[keyName]--; } @@ -9942,9 +9976,10 @@ enifed('ember-metal/watch_path', ['exports', 'ember-metal/utils', 'ember-metal/c } return ret; } + function watchPath(obj, keyPath, meta) { // can't watch length on Array - it is special... - if (keyPath === "length" && utils.typeOf(obj) === "array") { + if (keyPath === 'length' && utils.typeOf(obj) === 'array') { return; } @@ -9984,7 +10019,7 @@ enifed('ember-metal/watching', ['exports', 'ember-metal/utils', 'ember-metal/cha function watch(obj, _keyPath, m) { // can't watch length on Array - it is special... - if (_keyPath === "length" && utils.typeOf(obj) === "array") { + if (_keyPath === 'length' && utils.typeOf(obj) === 'array') { return; } @@ -9996,14 +10031,15 @@ enifed('ember-metal/watching', ['exports', 'ember-metal/utils', 'ember-metal/cha } function isWatching(obj, key) { - var meta = obj["__ember_meta__"]; + var meta = obj['__ember_meta__']; return (meta && meta.watching[key]) > 0; } watch.flushPending = chains.flushPendingChains; + function unwatch(obj, _keyPath, m) { // can't watch length on Array - it is special... - if (_keyPath === "length" && utils.typeOf(obj) === "array") { + if (_keyPath === 'length' && utils.typeOf(obj) === 'array') { return; } @@ -10025,12 +10061,13 @@ enifed('ember-metal/watching', ['exports', 'ember-metal/utils', 'ember-metal/cha @param {Object} obj the object to destroy @return {void} */ + function destroy(obj) { - var meta = obj["__ember_meta__"]; + var meta = obj['__ember_meta__']; var node, nodes, key, nodeObject; if (meta) { - obj["__ember_meta__"] = null; + obj['__ember_meta__'] = null; // remove chainWatchers to remove circular references that would prevent GC node = meta.chains; if (node) { @@ -10062,27 +10099,27 @@ enifed('ember-metal/watching', ['exports', 'ember-metal/utils', 'ember-metal/cha }); enifed('ember-template-compiler', ['exports', 'ember-metal/core', 'ember-template-compiler/system/precompile', 'ember-template-compiler/system/compile', 'ember-template-compiler/system/template', 'ember-template-compiler/plugins', 'ember-template-compiler/plugins/transform-each-in-to-hash', 'ember-template-compiler/plugins/transform-with-as-to-hash', 'ember-template-compiler/compat'], function (exports, _Ember, precompile, compile, template, plugins, TransformEachInToHash, TransformWithAsToHash) { - 'use strict'; + 'use strict'; - plugins.registerPlugin("ast", TransformWithAsToHash['default']); - plugins.registerPlugin("ast", TransformEachInToHash['default']); + plugins.registerPlugin('ast', TransformWithAsToHash['default']); + plugins.registerPlugin('ast', TransformEachInToHash['default']); - exports._Ember = _Ember['default']; - exports.precompile = precompile['default']; - exports.compile = compile['default']; - exports.template = template['default']; - exports.registerPlugin = plugins.registerPlugin; + exports._Ember = _Ember['default']; + exports.precompile = precompile['default']; + exports.compile = compile['default']; + exports.template = template['default']; + exports.registerPlugin = plugins.registerPlugin; }); enifed('ember-template-compiler/compat', ['ember-metal/core', 'ember-template-compiler/compat/precompile', 'ember-template-compiler/system/compile', 'ember-template-compiler/system/template'], function (Ember, precompile, compile, template) { - 'use strict'; + 'use strict'; - var EmberHandlebars = Ember['default'].Handlebars = Ember['default'].Handlebars || {}; + var EmberHandlebars = Ember['default'].Handlebars = Ember['default'].Handlebars || {}; - EmberHandlebars.precompile = precompile['default']; - EmberHandlebars.compile = compile['default']; - EmberHandlebars.template = template['default']; + EmberHandlebars.precompile = precompile['default']; + EmberHandlebars.compile = compile['default']; + EmberHandlebars.template = template['default']; }); enifed('ember-template-compiler/compat/precompile', ['exports', 'ember-template-compiler/system/compile_options'], function (exports, compileOptions) { @@ -10130,6 +10167,7 @@ enifed('ember-template-compiler/plugins', ['exports'], function (exports) { @private @method registerASTPlugin */ + function registerPlugin(type, Plugin) { if (!plugins[type]) { throw new Error('Attempting to register "' + Plugin + '" as "' + type + '" which is not a valid HTMLBars plugin type.'); @@ -10260,7 +10298,7 @@ enifed('ember-template-compiler/plugins/transform-with-as-to-hash', ['exports'], if (pluginContext.validate(node)) { if (node.program && node.program.blockParams.length) { - throw new Error("You cannot use keyword (`{{with foo as bar}}`) and block params (`{{with foo as |bar|}}`) at the same time."); + throw new Error('You cannot use keyword (`{{with foo as bar}}`) and block params (`{{with foo as |bar|}}`) at the same time.'); } Ember.deprecate("Using {{with}} without block syntax is deprecated. " + "Please use standard block form (`{{#with foo as |bar|}}`) " + (moduleName ? " in `" + moduleName + "` " : "") + "instead.", false, { url: "http://emberjs.com/deprecations/v1.x/#toc_code-as-code-sytnax-for-code-with-code" }); @@ -10275,7 +10313,7 @@ enifed('ember-template-compiler/plugins/transform-with-as-to-hash', ['exports'], }; TransformWithAsToHash.prototype.validate = function TransformWithAsToHash_validate(node) { - return node.type === "BlockStatement" && node.sexpr.path.original === "with" && node.sexpr.params.length === 3 && node.sexpr.params[1].type === "PathExpression" && node.sexpr.params[1].original === "as"; + return node.type === 'BlockStatement' && node.sexpr.path.original === 'with' && node.sexpr.params.length === 3 && node.sexpr.params[1].type === 'PathExpression' && node.sexpr.params[1].original === 'as'; }; exports['default'] = TransformWithAsToHash; @@ -10286,23 +10324,13 @@ enifed('ember-template-compiler/system/compile', ['exports', 'ember-template-com 'use strict'; - var compile; /** - Uses HTMLBars `compile` function to process a string into a compiled template. - - This is not present in production builds. - - @private - @method compile - @param {String} templateString This is the string to be compiled by HTMLBars. - @param {Object} options This is an options hash to augment the compiler options. - */ - exports['default'] = function (templateString, options) { - if (!compile && Ember.__loader.registry["htmlbars-compiler/compiler"]) { - compile = requireModule("htmlbars-compiler/compiler").compile; + var compile;exports['default'] = function (templateString, options) { + if (!compile && Ember.__loader.registry['htmlbars-compiler/compiler']) { + compile = requireModule('htmlbars-compiler/compiler').compile; } if (!compile) { - throw new Error("Cannot call `compile` without the template compiler loaded. Please load `ember-template-compiler.js` prior to calling `compile`."); + throw new Error('Cannot call `compile` without the template compiler loaded. Please load `ember-template-compiler.js` prior to calling `compile`.'); } var templateSpec = compile(templateString, compileOptions['default'](options)); @@ -10322,7 +10350,7 @@ enifed('ember-template-compiler/system/compile_options', ['exports', 'ember-meta exports['default'] = function (_options) { var disableComponentGeneration = true; - + var options = _options || {}; // When calling `Ember.Handlebars.compile()` a second argument of `true` // had a special meaning (long since lost), this just gaurds against @@ -10331,7 +10359,7 @@ enifed('ember-template-compiler/system/compile_options', ['exports', 'ember-meta options = {}; } - options.revision = "Ember@1.12.1"; + options.revision = 'Ember@1.12.2'; options.disableComponentGeneration = disableComponentGeneration; options.plugins = plugins['default']; @@ -10382,6 +10410,12 @@ enifed('ember-template-compiler/system/template', ['exports'], function (exports @submodule ember-template-compiler */ + exports['default'] = function (templateSpec) { + templateSpec.isTop = true; + templateSpec.isMethod = false; + + return templateSpec; + } /** Augments the default precompiled output of an HTMLBars template with additional information needed by Ember. @@ -10391,13 +10425,6 @@ enifed('ember-template-compiler/system/template', ['exports'], function (exports @param {Function} templateSpec This is the compiled HTMLBars template spec. */ - exports['default'] = function (templateSpec) { - templateSpec.isTop = true; - templateSpec.isMethod = false; - - return templateSpec; - } - }); enifed("htmlbars-compiler", ["./htmlbars-compiler/compiler","exports"], @@ -11080,7 +11107,7 @@ enifed("htmlbars-compiler/hydration-opcode-compiler", HydrationOpcodeCompiler.prototype.mustache = function(mustache, childIndex, childCount) { this.pushMorphPlaceholderNode(childIndex, childCount); - + var sexpr = mustache.sexpr; var morphNum = this.morphNum++; @@ -11290,7 +11317,7 @@ enifed("htmlbars-compiler/template-compiler", function TemplateCompiler(options) { this.options = options || {}; - this.revision = this.options.revision || "HTMLBars@v0.11.3"; + this.revision = this.options.revision || "HTMLBars@0.11.4.d11ed3e4"; this.fragmentOpcodeCompiler = new FragmentOpcodeCompiler(); this.fragmentCompiler = new FragmentJavaScriptCompiler(); this.hydrationOpcodeCompiler = new HydrationOpcodeCompiler(); @@ -12336,7 +12363,7 @@ enifed("htmlbars-syntax/handlebars/compiler/parser", var $0 = $$.length - 1; switch (yystate) { - case 1: return $$[$0-1]; + case 1: return $$[$0-1]; break; case 2:this.$ = new yy.Program($$[$0], null, {}, yy.locInfo(this._$)); break; @@ -12376,7 +12403,7 @@ enifed("htmlbars-syntax/handlebars/compiler/parser", program.chained = true; this.$ = { strip: $$[$0-2].strip, program: program, chain: true }; - + break; case 19:this.$ = $$[$0]; break; @@ -12420,7 +12447,7 @@ enifed("htmlbars-syntax/handlebars/compiler/parser", break; case 39:this.$ = yy.preparePath(false, $$[$0], this._$); break; - case 40: $$[$0-2].push({part: $$[$0], separator: $$[$0-1]}); this.$ = $$[$0-2]; + case 40: $$[$0-2].push({part: $$[$0], separator: $$[$0-1]}); this.$ = $$[$0-2]; break; case 41:this.$ = [{part: $$[$0]}]; break; @@ -12741,22 +12768,22 @@ enifed("htmlbars-syntax/handlebars/compiler/parser", this.begin("mu"); } if(yy_.yytext) return 14; - + break; case 1:return 14; break; case 2: this.popState(); return 14; - + break; case 3: yy_.yytext = yy_.yytext.substr(5, yy_.yyleng-9); this.popState(); return 16; - + break; - case 4: return 14; + case 4: return 14; break; case 5: this.popState(); @@ -12767,13 +12794,13 @@ enifed("htmlbars-syntax/handlebars/compiler/parser", break; case 7:return 52; break; - case 8: return 17; + case 8: return 17; break; case 9: this.popState(); this.begin('raw'); return 19; - + break; case 10:return 42; break; @@ -13057,7 +13084,7 @@ enifed("htmlbars-syntax/handlebars/compiler/whitespace-control", return mustache.strip; }; - WhitespaceControl.prototype.PartialStatement = + WhitespaceControl.prototype.PartialStatement = WhitespaceControl.prototype.CommentStatement = function(node) { var strip = node.strip || {}; return { @@ -13811,7 +13838,7 @@ enifed("htmlbars-syntax/utils", function(__dependency1__, __exports__) { "use strict"; var indexOfArray = __dependency1__.indexOfArray; - // Regex to validate the identifier for block parameters. + // Regex to validate the identifier for block parameters. // Based on the ID validation regex in Handlebars. var ID_INVERSE_PATTERN = /[!"#%-,\.\/;->@\[-\^`\{-~]/; @@ -17089,4 +17116,4 @@ requireModule("ember-template-compiler"); ; if (typeof exports === "object") { module.exports = Ember.__loader.require("ember-template-compiler"); - }//# sourceMappingURL=ember-template-compiler.map \ No newline at end of file + }//# sourceMappingURL=ember-template-compiler.map