UNPKG

ember-intl

Version:

Ember toolbox for internationalization.

1,327 lines (1,076 loc) 93.6 kB
define('dummy/app', ['exports', 'ember', 'ember/resolver', 'ember/load-initializers', 'dummy/config/environment'], function (exports, Ember, Resolver, loadInitializers, config) { 'use strict'; Ember['default'].MODEL_FACTORY_INJECTIONS = true; var App = Ember['default'].Application.extend({ modulePrefix: config['default'].modulePrefix, podModulePrefix: config['default'].podModulePrefix, Resolver: Resolver['default'], ready: function () { this.intl.setProperties({ locales: ['en-US'], defaultLocale: 'en-US' }); } }); loadInitializers['default'](App, config['default'].modulePrefix); exports['default'] = App; }); define('dummy/cldrs/en-us', ['exports'], function (exports) { 'use strict'; // GENERATED FILE, DO NOT COPY INTO PROJECT // THIS IS SOLELY FOR THE DUMMY APP SINCE IT // DOES NOT GO THROUGH THE BROCCOLI PLUGIN // WHICH PARSES OUT THE CLDR DATA BELOW exports['default'] = { locale: "en-us", fields: {"year":{"displayName":"Year","relative":{"0":"this year","1":"next year","-1":"last year"},"relativeTime":{"future":{"one":"in {0} year","other":"in {0} years"},"past":{"one":"{0} year ago","other":"{0} years ago"}}},"month":{"displayName":"Month","relative":{"0":"this month","1":"next month","-1":"last month"},"relativeTime":{"future":{"one":"in {0} month","other":"in {0} months"},"past":{"one":"{0} month ago","other":"{0} months ago"}}},"day":{"displayName":"Day","relative":{"0":"today","1":"tomorrow","-1":"yesterday"},"relativeTime":{"future":{"one":"in {0} day","other":"in {0} days"},"past":{"one":"{0} day ago","other":"{0} days ago"}}},"hour":{"displayName":"Hour","relativeTime":{"future":{"one":"in {0} hour","other":"in {0} hours"},"past":{"one":"{0} hour ago","other":"{0} hours ago"}}},"minute":{"displayName":"Minute","relativeTime":{"future":{"one":"in {0} minute","other":"in {0} minutes"},"past":{"one":"{0} minute ago","other":"{0} minutes ago"}}},"second":{"displayName":"Second","relative":{"0":"now"},"relativeTime":{"future":{"one":"in {0} second","other":"in {0} seconds"},"past":{"one":"{0} second ago","other":"{0} seconds ago"}}}}, pluralRuleFunction: function (n) {var i=Math.floor(Math.abs(n)),v=n.toString().replace(/^[^.]*\.?/,"").length;n=Math.floor(n);if(i===1&&v===0)return"one";return"other";} }; }); define('dummy/cldrs/es', ['exports'], function (exports) { 'use strict'; // GENERATED FILE, DO NOT COPY INTO PROJECT // THIS IS SOLELY FOR THE DUMMY APP SINCE IT // DOES NOT GO THROUGH THE BROCCOLI PLUGIN // WHICH PARSES OUT THE CLDR DATA BELOW exports['default'] = { locale: "es", fields: {"year":{"displayName":"año","relative":{"0":"este año","1":"el próximo año","-1":"el año pasado"},"relativeTime":{"future":{"one":"dentro de {0} año","other":"dentro de {0} años"},"past":{"one":"hace {0} año","other":"hace {0} años"}}},"month":{"displayName":"mes","relative":{"0":"este mes","1":"el próximo mes","-1":"el mes pasado"},"relativeTime":{"future":{"one":"dentro de {0} mes","other":"dentro de {0} meses"},"past":{"one":"hace {0} mes","other":"hace {0} meses"}}},"day":{"displayName":"día","relative":{"0":"hoy","1":"mañana","2":"pasado mañana","-2":"antes de ayer","-1":"ayer"},"relativeTime":{"future":{"one":"dentro de {0} día","other":"dentro de {0} días"},"past":{"one":"hace {0} día","other":"hace {0} días"}}},"hour":{"displayName":"hora","relativeTime":{"future":{"one":"dentro de {0} hora","other":"dentro de {0} horas"},"past":{"one":"hace {0} hora","other":"hace {0} horas"}}},"minute":{"displayName":"minuto","relativeTime":{"future":{"one":"dentro de {0} minuto","other":"dentro de {0} minutos"},"past":{"one":"hace {0} minuto","other":"hace {0} minutos"}}},"second":{"displayName":"segundo","relative":{"0":"ahora"},"relativeTime":{"future":{"one":"dentro de {0} segundo","other":"dentro de {0} segundos"},"past":{"one":"hace {0} segundo","other":"hace {0} segundos"}}}}, pluralRuleFunction: function (n) {n=Math.floor(n);if(n===1)return"one";return"other";} }; }); define('dummy/cldrs/fr-fr', ['exports'], function (exports) { 'use strict'; // GENERATED FILE, DO NOT COPY INTO PROJECT // THIS IS SOLELY FOR THE DUMMY APP SINCE IT // DOES NOT GO THROUGH THE BROCCOLI PLUGIN // WHICH PARSES OUT THE CLDR DATA BELOW exports['default'] = { locale: "fr-fr", fields: {"year":{"displayName":"année","relative":{"0":"cette année","1":"l’année prochaine","-1":"l’année dernière"},"relativeTime":{"future":{"one":"dans {0} an","other":"dans {0} ans"},"past":{"one":"il y a {0} an","other":"il y a {0} ans"}}},"month":{"displayName":"mois","relative":{"0":"ce mois-ci","1":"le mois prochain","-1":"le mois dernier"},"relativeTime":{"future":{"one":"dans {0} mois","other":"dans {0} mois"},"past":{"one":"il y a {0} mois","other":"il y a {0} mois"}}},"day":{"displayName":"jour","relative":{"0":"aujourd’hui","1":"demain","2":"après-demain","-2":"avant-hier","-1":"hier"},"relativeTime":{"future":{"one":"dans {0} jour","other":"dans {0} jours"},"past":{"one":"il y a {0} jour","other":"il y a {0} jours"}}},"hour":{"displayName":"heure","relativeTime":{"future":{"one":"dans {0} heure","other":"dans {0} heures"},"past":{"one":"il y a {0} heure","other":"il y a {0} heures"}}},"minute":{"displayName":"minute","relativeTime":{"future":{"one":"dans {0} minute","other":"dans {0} minutes"},"past":{"one":"il y a {0} minute","other":"il y a {0} minutes"}}},"second":{"displayName":"seconde","relative":{"0":"maintenant"},"relativeTime":{"future":{"one":"dans {0} seconde","other":"dans {0} secondes"},"past":{"one":"il y a {0} seconde","other":"il y a {0} secondes"}}}}, pluralRuleFunction: function (n) {var i=Math.floor(Math.abs(n));n=Math.floor(n);if(i===0||i===1)return"one";return"other";} }; }); define('dummy/components/code-snippet', ['exports', 'ember', 'dummy/snippets'], function (exports, Ember, Snippets) { 'use strict'; var Highlight = require('highlight.js'); exports['default'] = Ember['default'].Component.extend({ tagName: 'pre', classNameBindings: ['language'], unindent: true, _unindent: function(src) { if (!this.get('unindent')) { return src; } var match, min, lines = src.split("\n"); for (var i = 0; i < lines.length; i++) { match = /^\s*/.exec(lines[i]); if (match && (typeof min === 'undefined' || min > match[0].length)) { min = match[0].length; } } if (typeof min !== 'undefined' && min > 0) { src = src.replace(new RegExp("(\\n|^)\\s{" + min + "}", 'g'), "$1"); } return src; }, source: function(){ return this._unindent( (Snippets['default'][this.get('name')] || "") .replace(/^(\s*\n)*/, '') .replace(/\s*$/, '') ); }.property('name'), didInsertElement: function(){ Highlight.highlightBlock(this.get('element')); }, language: function(){ var m = /\.(\w+)$/i.exec(this.get('name')); if (m) { switch (m[1].toLowerCase()) { case 'js': return 'javascript'; case 'hbs': return 'handlebars'; } } }.property('name') }); }); define('dummy/controllers/application', ['exports', 'ember'], function (exports, Ember) { 'use strict'; exports['default'] = Ember['default'].Controller.extend({ options: ['en-US', 'fr-FR', 'es'], value: Ember['default'].computed('intl.locales', function (key, value) { if (arguments.length === 2) { this.intl.set('locales', arguments[1]); } return this.intl.get('locales.firstObject') || this.intl.get('locales'); }) }); }); define('dummy/controllers/index', ['exports', 'ember'], function (exports, Ember) { 'use strict'; var now = new Date(); var yesterday = now.setDate(now.getDate() - 1); function computedNumber (number, options) { return Ember['default'].computed('intl.locales', function () { return this.intl.formatNumber(number, options); }); } exports['default'] = Ember['default'].Controller.extend({ numType: 'currency', num: 1000, yesterday: yesterday, deadline: Ember['default'].computed.readOnly('yesterday'), now: now, messages: { photos: '{name} took {numPhotos, plural,\n =0 {no photos}\n =1 {one photo}\n other {# photos}\n} on {takenDate, date, long}.\n' }, computedMessage: Ember['default'].computed(function () { return 'messages.product.info'; }), incrementTime: Ember['default'].on('init', function() { var self = this; setInterval(function() { Ember['default'].run(function() { self.set('now', new Date()); self.incrementProperty('num'); }); }, 200); }) }); }); define('dummy/controllers/smoke', ['exports', 'ember'], function (exports, Ember) { 'use strict'; var Controller = Ember['default'].Controller; var computed = Ember['default'].computed; var now = new Date(); var yesterday = new Date(now).setDate(now.getDate() - 1); exports['default'] = Controller.extend({ locales: ['en-US', 'fr-FR', 'es'], num: 1000, yesterday: yesterday, currentLocale: computed('intl.locales', function (key, value) { if (arguments.length === 2) { this.set('intl.locales', arguments[1]); } return this.get('intl.locales.firstObject') || this.get('intl.locales'); }) }); }); define('dummy/ember-intl/tests/ember-intl/format-cache/memoizer.jshint', function () { 'use strict'; module('JSHint - ember-intl/format-cache'); test('ember-intl/format-cache/memoizer.js should pass jshint', function() { ok(true, 'ember-intl/format-cache/memoizer.js should pass jshint.'); }); }); define('dummy/ember-intl/tests/ember-intl/formatter-base.jshint', function () { 'use strict'; module('JSHint - ember-intl'); test('ember-intl/formatter-base.js should pass jshint', function() { ok(true, 'ember-intl/formatter-base.js should pass jshint.'); }); }); define('dummy/ember-intl/tests/ember-intl/helpers/base.jshint', function () { 'use strict'; module('JSHint - ember-intl/helpers'); test('ember-intl/helpers/base.js should pass jshint', function() { ok(true, 'ember-intl/helpers/base.js should pass jshint.'); }); }); define('dummy/ember-intl/tests/ember-intl/index.jshint', function () { 'use strict'; module('JSHint - ember-intl'); test('ember-intl/index.js should pass jshint', function() { ok(true, 'ember-intl/index.js should pass jshint.'); }); }); define('dummy/ember-intl/tests/ember-intl/models/locale.jshint', function () { 'use strict'; module('JSHint - ember-intl/models'); test('ember-intl/models/locale.js should pass jshint', function() { ok(true, 'ember-intl/models/locale.js should pass jshint.'); }); }); define('dummy/ember-intl/tests/ember-intl/utils/data.jshint', function () { 'use strict'; module('JSHint - ember-intl/utils'); test('ember-intl/utils/data.js should pass jshint', function() { ok(true, 'ember-intl/utils/data.js should pass jshint.'); }); }); define('dummy/ember-intl/tests/ember-intl/utils/streams.jshint', function () { 'use strict'; module('JSHint - ember-intl/utils'); test('ember-intl/utils/streams.js should pass jshint', function() { ok(true, 'ember-intl/utils/streams.js should pass jshint.'); }); }); define('dummy/formats', ['exports', 'ember'], function (exports, Ember) { 'use strict'; exports['default'] = { date: { 'time-style': { hour: 'numeric', minute: 'numeric', second: 'numeric' } }, number: { currency: { style: 'currency', minimumFractionDigits: 2 }, EUR: { style: 'currency', currency: 'EUR' }, USD: { style: 'currency', currency: 'USD' }, JPY: { style: 'currency', currency: 'JPY' } }, time: { hhmmss: { hour: 'numeric', minute: 'numeric', second: 'numeric' } } }; }); define('dummy/formatters/format-date', ['exports', 'ember', 'ember-intl/formatter-base'], function (exports, Ember, Formatter) { 'use strict'; /** * Copyright 2015, Yahoo! Inc. * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms. */ var FormatDate = Formatter['default'].extend({ format: function (value, hash) { var args = this.buildOptions(value, hash); var intl = this.intl; return intl.formatDate.apply(intl, args); } }); FormatDate.reopenClass({ formatOptions: [ 'localeMatcher', 'timeZone', 'hour12', 'formatMatcher', 'weekday', 'era', 'year', 'month', 'day', 'hour', 'minute', 'second', 'timeZoneName' ] }); exports['default'] = FormatDate; }); define('dummy/formatters/format-html-message', ['exports', 'ember', 'dummy/formatters/format-message'], function (exports, Ember, FormatterMessage) { 'use strict'; /** * Copyright 2015, Yahoo! Inc. * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms. */ var FormatHtmlMessage = FormatterMessage['default'].extend({ escapeProps: function (props) { return Object.keys(props).reduce(function (escapedProps, name) { var value = props[name]; // TODO: Can we force string coersion here? Or would that not be needed // and possible mess with IntlMessageFormat? if (typeof value === 'string') { value = Ember['default'].Handlebars.Utils.escapeExpression(value); } escapedProps[name] = value; return escapedProps; }, {}); }, format: function (value, hash, context) { var icuKeys = this.extractICUKeys(value); var model = {}; if (icuKeys && icuKeys.length) { model = Ember['default'].$.extend(Ember['default'].getProperties(context, icuKeys), hash); } var formatOptions = { formats: hash.format || this.filterFormatOptions(hash) }; if (hash.locales) { formatOptions.locales = hash.locales; } return Ember['default'].String.htmlSafe(this.intl.formatMessage(value, this.escapeProps(model), formatOptions)); } }); exports['default'] = FormatHtmlMessage; }); define('dummy/formatters/format-message', ['exports', 'ember', 'ember-intl/formatter-base'], function (exports, Ember, Formatter) { 'use strict'; /** * Copyright 2015, Yahoo! Inc. * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms. */ var validKey = /[\w|.]/; var FormatMessage = Formatter['default'].extend({ extractICUKeys: function (msg) { var length = msg.length; var buf = [], out = Ember['default'].A(); var i = 0; var char, key; for (; i < length; i++) { char = msg[i]; if (buf.length && !validKey.test(char)) { buf.shift(); key = buf.join(''); // do not include empty strings: {} if (key) { out.addObject(key); } buf = []; } else if ( // does not include escaped curly braces // and double curly braces does not mistake the first // as the starting point of the key {{foo}} should return `foo` (char === '{' && msg[i-1] !== "\\" && msg[i+1] !== '{') || buf.length ) { buf.push(char); } } return out; }, format: function (value, hash, context) { var icuKeys = this.extractICUKeys(value); var model; if (icuKeys && icuKeys.length) { model = Ember['default'].$.extend(Ember['default'].getProperties(context, icuKeys), hash); } var formatOptions = { formats: hash.format || this.filterFormatOptions(hash) }; if (hash.locales) { formatOptions.locales = hash.locales; } return this.intl.formatMessage(value, model, formatOptions); } }); FormatMessage.reopenClass({ formatOptions: [ 'localeMatcher', 'timeZone', 'hour12', 'formatMatcher', 'weekday', 'era', 'year', 'month', 'day', 'hour', 'minute', 'second', 'timeZoneName' ] }); exports['default'] = FormatMessage; }); define('dummy/formatters/format-number', ['exports', 'ember', 'ember-intl/formatter-base'], function (exports, Ember, Formatter) { 'use strict'; /** * Copyright 2015, Yahoo! Inc. * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms. */ var FormatNumber = Formatter['default'].extend({ format: function (value, hash) { var args = this.buildOptions(value, hash); var intl = this.intl; return intl.formatNumber.apply(intl, args); } }); FormatNumber.reopenClass({ formatOptions: [ 'localeMatcher', 'style', 'currency', 'currencyDisplay', 'useGrouping', 'minimumIntegerDigits', 'minimumFractionDigits', 'maximumFractionDigits', 'minimumSignificantDigits', 'maximumSignificantDigits' ] }); exports['default'] = FormatNumber; }); define('dummy/formatters/format-relative', ['exports', 'ember', 'ember-intl/formatter-base'], function (exports, Ember, Formatter) { 'use strict'; /** * Copyright 2015, Yahoo! Inc. * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms. */ var FormatRelative = Formatter['default'].extend({ format: function (value, hash) { var args = this.buildOptions(value, hash); var intl = this.intl; return intl.formatRelative.apply(intl, args); } }); FormatRelative.reopenClass({ formatOptions: ['style', 'units'] }); exports['default'] = FormatRelative; }); define('dummy/formatters/format-time', ['exports', 'ember', 'ember-intl/formatter-base'], function (exports, Ember, Formatter) { 'use strict'; /** * Copyright 2015, Yahoo! Inc. * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms. */ var FormatTime = Formatter['default'].extend({ format: function (value, hash) { var args = this.buildOptions(value, hash); var intl = this.intl; return intl.formatTime.apply(intl, args); } }); FormatTime.reopenClass({ formatOptions: [ 'localeMatcher', 'timeZone', 'hour12', 'formatMatcher', 'weekday', 'era', 'year', 'month', 'day', 'hour', 'minute', 'second', 'timeZoneName' ] }); exports['default'] = FormatTime; }); define('dummy/helpers/format-date', ['exports', 'ember-intl/helpers/base'], function (exports, FormatHelper) { 'use strict'; /** * Copyright 2015, Yahoo! Inc. * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms. */ exports['default'] = FormatHelper['default']('format-date'); }); define('dummy/helpers/format-html-message', ['exports', 'ember-intl/helpers/base'], function (exports, FormatHelper) { 'use strict'; /** * Copyright 2015, Yahoo! Inc. * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms. */ exports['default'] = FormatHelper['default']('format-html-message'); }); define('dummy/helpers/format-message', ['exports', 'ember-intl/helpers/base'], function (exports, FormatHelper) { 'use strict'; /** * Copyright 2015, Yahoo! Inc. * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms. */ exports['default'] = FormatHelper['default']('format-message'); }); define('dummy/helpers/format-number', ['exports', 'ember-intl/helpers/base'], function (exports, FormatHelper) { 'use strict'; /** * Copyright 2015, Yahoo! Inc. * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms. */ exports['default'] = FormatHelper['default']('format-number'); }); define('dummy/helpers/format-relative', ['exports', 'ember-intl/helpers/base'], function (exports, FormatHelper) { 'use strict'; /** * Copyright 2015, Yahoo! Inc. * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms. */ exports['default'] = FormatHelper['default']('format-relative'); }); define('dummy/helpers/format-time', ['exports', 'ember-intl/helpers/base'], function (exports, FormatHelper) { 'use strict'; /** * Copyright 2015, Yahoo! Inc. * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms. */ exports['default'] = FormatHelper['default']('format-time'); }); define('dummy/helpers/intl-get', ['exports', 'ember', 'ember-intl/utils/streams'], function (exports, Ember, streams) { 'use strict'; /** * Copyright 2015, Yahoo! Inc. * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms. */ function normalize (fullName) { Ember['default'].assert('Lookup name must be a string', typeof fullName === 'string'); return fullName.toLowerCase(); } function intlGet (key, locale) { Ember['default'].assert('You must pass in a message key in the form of a string.', typeof key === 'string'); var intl = this.container.lookup('intl:main'); var locales = locale ? Ember['default'].makeArray(locale) : intl.get('current'); for (var i=0; i < locales.length; i++) { var locale = this.container.lookup('locale:' + normalize(locales[i])); if (locale) { var value = locale.getValue(key); if (typeof value !== 'undefined') { return value; } } } throw new ReferenceError('Could not find Intl object: ' + key); } exports['default'] = function (value, options) { var view = options.data.view; var types = options.types; var hash = streams.readHash(options.hash); var intl = this.container.lookup('intl:main'); var self = this; var currentValue = value; var valueStream, outStreamValue; var outStream = new streams.Stream(function () { return outStreamValue; }); outStream.setValue = function(_value) { outStreamValue = _value; this.notify(); } function valueStreamChanged () { currentValue = valueStream.value(); pokeStream(); } function pokeStream () { outStream.setValue(intlGet.call(self, streams.read(currentValue), hash.locales)); } if (types[0] === 'ID') { valueStream = view.getStream(value); currentValue = valueStream.value(); valueStream.subscribe(valueStreamChanged); } intl.on('localesChanged', this, pokeStream); view.one('willDestroyElement', this, function () { intl.off('localesChanged', this, pokeStream); if (valueStream) { valueStream.unsubscribe(valueStreamChanged); } streams.destroyStream(outStream); }); pokeStream(); return outStream; }; }); define('dummy/initializers/ember-intl', ['exports', 'ember', 'dummy/services/intl', 'ember-intl/utils/data', 'dummy/helpers/format-date', 'dummy/helpers/format-time', 'dummy/helpers/format-relative', 'dummy/helpers/format-number', 'dummy/helpers/intl-get', 'dummy/helpers/format-html-message', 'dummy/helpers/format-message'], function (exports, Ember, IntlService, data, FormatDate, FormatTime, FormatRelative, FormatNumber, IntlGet, FormatHtmlMessage, FormatMessage) { 'use strict'; /** * Copyright 2015, Yahoo! Inc. * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms. */ exports['default'] = { name: 'ember-intl', initialize: function (container, app) { var seen = requirejs._eak_seen; var prefix = app.modulePrefix; container.optionsForType('formats', { singleton: true, instantiate: false }); container.optionsForType('locale', { singleton: true, instantiate: true }); Object.keys(seen).filter(function (key) { return key.indexOf(prefix + '\/cldrs\/') === 0; }).forEach(function (key) { data.addLocaleData(require(key, null, null, true)['default']); }); var ServiceKlass = app.IntlService || IntlService['default']; var service = ServiceKlass.create({ container: container }); app.register('intl:main', service, { singleton: true, instantiate: false }); app.intl = service; app.inject('controller', 'intl', 'intl:main'); app.inject('component', 'intl', 'intl:main'); app.inject('route', 'intl', 'intl:main'); app.inject('model', 'intl', 'intl:main'); app.inject('view', 'intl', 'intl:main'); app.inject('formatter', 'intl', 'intl:main'); if (Ember['default'].HTMLBars) { Ember['default'].HTMLBars._registerHelper('format-date', FormatDate['default']); Ember['default'].HTMLBars._registerHelper('format-time', FormatTime['default']); Ember['default'].HTMLBars._registerHelper('format-relative', FormatRelative['default']); Ember['default'].HTMLBars._registerHelper('format-number', FormatNumber['default']); Ember['default'].HTMLBars._registerHelper('format-html-message', FormatHtmlMessage['default']); Ember['default'].HTMLBars._registerHelper('format-message', FormatMessage['default']); } } } }); define('dummy/locales/en-us', ['exports', 'ember-intl/models/locale'], function (exports, Locale) { 'use strict'; exports['default'] = Locale['default'].extend({ messages: { product: { info: '{product} will cost {price, number, EUR} if ordered by {deadline, date, time}', html: { info: '<strong>{product}</strong> will cost <em>{price, number, EUR}</em> if ordered by {deadline, date, time}' }, title: 'Hello world!' } } }); }); define('dummy/locales/es', ['exports', 'ember-intl/models/locale'], function (exports, Locale) { 'use strict'; exports['default'] = Locale['default'].extend({ messages: {} }); }); define('dummy/locales/fr-fr', ['exports', 'ember-intl/models/locale'], function (exports, Locale) { 'use strict'; exports['default'] = Locale['default'].extend({ messages: { product: { info: '{product} coûtera {price, number, EUR} si triés par {deadline, date, time}', html: { info: '<strong>{product}</strong> coûtera <em>{price, number, EUR}</em> si triés par {deadline, date, time}' } } } }); }); define('dummy/router', ['exports', 'ember', 'dummy/config/environment'], function (exports, Ember, config) { 'use strict'; var Router = Ember['default'].Router.extend({ location: config['default'].locationType }); Router.map(function() { this.route('smoke'); }); exports['default'] = Router; }); define('dummy/services/intl', ['exports', 'ember', 'ember-intl/models/locale', 'ember-intl/format-cache/memoizer', 'ember-intl/utils/data'], function (exports, Ember, Locale, createFormatCache, data) { 'use strict'; /** * Copyright 2015, Yahoo! Inc. * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms. */ var ServiceKlass = Ember['default'].Service || Ember['default'].Controller; var makeArray = Ember['default'].makeArray; var get = Ember['default'].get; var on = Ember['default'].on; var computed = Ember['default'].computed; var observer = Ember['default'].observer; var isEmpty = Ember['default'].isEmpty; var isPresent = Ember['default'].isPresent; var run = Ember['default'].run; function assertIsDate (date, errMsg) { Ember['default'].assert(errMsg, isFinite(date)); } exports['default'] = ServiceKlass.extend(Ember['default'].Evented, { locales: null, defaultLocale: null, getDateTimeFormat: null, getRelativeFormat: null, getMessageFormat: null, getNumberFormat: null, setupMemoizers: on('init', function () { this.setProperties({ getDateTimeFormat: createFormatCache['default'](Intl.DateTimeFormat), getRelativeFormat: createFormatCache['default'](data.IntlRelativeFormat), getNumberFormat: createFormatCache['default'](Intl.NumberFormat), getMessageFormat: createFormatCache['default'](data.IntlMessageFormat) }); }), current: computed('locales', 'defaultLocale', function () { var locales = makeArray(get(this, 'locales')); var defaultLocale = get(this, 'defaultLocale'); if (isPresent(defaultLocale) && locales.indexOf(defaultLocale) === -1) { locales.push(defaultLocale); } return locales; }).readOnly(), formats: computed(function () { return this.container.lookup('formats:main', { instantiate: false }) || {}; }).readOnly(), localeChanged: observer('current', function () { run.once(this, this.notifyLocaleChanged); }), addMessage: function (locale, key, value) { var localeInstance = this._getLocaleInstance(locale); return localeInstance.addMessage(key, value); }, addMessages: function (locale, messageObject) { var localeInstance = this._getLocaleInstance(locale); return localeInstance.addMessages(messageObject); }, notifyLocaleChanged: function () { this.trigger('localesChanged'); }, formatMessage: function (message, values, options) { // When `message` is a function, assume it's an IntlMessageFormat // instance's `format()` method passed by reference, and call it. This // is possible because its `this` will be pre-bound to the instance. if (typeof message === 'function') { return message(values); } options = options || {}; var locales = makeArray(options.locales); var formats = options.formats || get(this, 'formats'); if (isEmpty(locales)) { locales = get(this, 'current'); } if (typeof message === 'string') { message = this.getMessageFormat(message, locales, formats); } return message.format(values); }, formatTime: function (date, formatOptions, options) { date = new Date(date); assertIsDate(date, 'A date or timestamp must be provided to formatTime()'); return this._format('time', date, formatOptions, options); }, formatRelative: function (date, formatOptions, options) { date = new Date(date); assertIsDate(date, 'A date or timestamp must be provided to formatRelative()'); return this._format('relative', date, formatOptions, options); }, formatDate: function (date, formatOptions, options) { date = new Date(date); assertIsDate(date, 'A date or timestamp must be provided to formatDate()'); return this._format('date', date, formatOptions, options); }, formatNumber: function (num, formatOptions, options) { return this._format('number', num, formatOptions, options); }, _format: function (type, value, formatOptions, helperOptions) { if (!helperOptions) { helperOptions = formatOptions || {}; formatOptions = null; } var locales = makeArray(helperOptions.locales); var formats = get(this, 'formats'); if (isEmpty(locales)) { locales = get(this, 'current'); } if (formatOptions) { if (typeof formatOptions === 'string' && formats) { formatOptions = get(formats, type + '.' + formatOptions); } formatOptions = Ember['default'].$.extend({}, formatOptions, helperOptions); } else { formatOptions = helperOptions; } switch (type) { case 'date': case 'time': return this.getDateTimeFormat(locales, formatOptions).format(value); case 'number': return this.getNumberFormat(locales, formatOptions).format(value); case 'relative': return this.getRelativeFormat(locales, formatOptions).format(value); default: throw new Error('Unrecognized simple format type: ' + type); } }, _getLocaleInstance: function (locale) { if (locale instanceof Locale['default']) { return locale; } if (typeof locale === 'string') { return this.container.lookup('locale:' + locale.toLowerCase()); } throw new Error('`locale` must be a string or a locale instance'); } }); }); define('dummy/snippets', ['exports'], function (exports) { 'use strict'; exports['default'] = { "format-html-message.hbs":"{{format-html-message (intl-get 'messages.product.html.info')\n product='Apple watch'\n price=200\n deadline=yesterday}}\n\n{{format-html-message '<strong>{product}</strong>' product='Apple watch'}}\n", "format-message.hbs":"Reference a message key, defined in your messages module corresponding to the current locale.\n\n{{format-message (intl-get 'messages.product.info')\n product='Apple watch'\n price=200\n deadline=yesterday}}\n \n{{format-message (intl-get computedProperty)\n product='Apple watch'\n price=200\n deadline=yesterday}}\n\nPassing a static message or a message via a data-binding also works.\n\n{{format-message messages.photos\n name='Jason'\n numPhotos=num\n takenDate=yesterday}}\n \nUse within bind-attr\n\n<button {{bind-attr title=(format-message (intl-get 'messages.product.title'))}}>\n Hover to see title\n</button>\n", "format-date.hbs":"Can be represent using the format key or inline the format\n\n{{format-time now format='hhmmss'}}\n{{format-time now hour='numeric' minute='numeric' hour12=false}}\n", "format-number.hbs":"Can be represent using the format key or inline the format\n\n{{format-number num}}\n{{format-number num format='EUR'}}\n{{format-number num style='currency' currency='USD'}}\n", "format-time.hbs":"Can be represent using the format key or inline the format\n\n{{format-time now format='hhmmss'}}\n{{format-time now hour='numeric' minute='numeric' hour12=false}}\n" }; }); define('dummy/templates/application', ['exports'], function (exports) { 'use strict'; exports['default'] = Ember.HTMLBars.template((function() { return { isHTMLBars: true, blockParams: 0, cachedFragment: null, hasRendered: false, build: function build(dom) { var el0 = dom.createDocumentFragment(); var el1 = dom.createElement("div"); dom.setAttribute(el1,"class","main"); var el2 = dom.createTextNode("\n "); dom.appendChild(el1, el2); var el2 = dom.createElement("div"); dom.setAttribute(el2,"class","header"); var el3 = dom.createTextNode("\n "); dom.appendChild(el2, el3); var el3 = dom.createElement("h1"); dom.setAttribute(el3,"id","title"); var el4 = dom.createTextNode("ember-intl"); dom.appendChild(el3, el4); dom.appendChild(el2, el3); var el3 = dom.createTextNode("\n "); dom.appendChild(el2, el3); dom.appendChild(el1, el2); var el2 = dom.createTextNode("\n "); dom.appendChild(el1, el2); var el2 = dom.createElement("div"); dom.setAttribute(el2,"class","content"); var el3 = dom.createTextNode("\n "); dom.appendChild(el2, el3); var el3 = dom.createElement("div"); var el4 = dom.createTextNode("\n Choose a locale: "); dom.appendChild(el3, el4); var el4 = dom.createTextNode("\n "); dom.appendChild(el3, el4); dom.appendChild(el2, el3); var el3 = dom.createTextNode("\n\n "); dom.appendChild(el2, el3); var el3 = dom.createTextNode("\n "); dom.appendChild(el2, el3); dom.appendChild(el1, el2); var el2 = dom.createTextNode("\n"); dom.appendChild(el1, el2); dom.appendChild(el0, el1); var el1 = dom.createTextNode("\n"); dom.appendChild(el0, el1); return el0; }, render: function render(context, env, contextualElement) { var dom = env.dom; var hooks = env.hooks, get = hooks.get, inline = hooks.inline, content = hooks.content; dom.detectNamespace(contextualElement); var fragment; if (env.useFragmentCache && dom.canClone) { if (this.cachedFragment === null) { fragment = this.build(dom); if (this.hasRendered) { this.cachedFragment = fragment; } else { this.hasRendered = true; } } if (this.cachedFragment) { fragment = dom.cloneNode(this.cachedFragment, true); } } else { fragment = this.build(dom); } var element0 = dom.childAt(fragment, [0, 3]); var morph0 = dom.createMorphAt(dom.childAt(element0, [1]),0,1); var morph1 = dom.createMorphAt(element0,2,3); inline(env, morph0, context, "view", ["select"], {"value": get(env, context, "value"), "content": get(env, context, "options")}); content(env, morph1, context, "outlet"); return fragment; } }; }())); }); define('dummy/templates/components/code-snippet', ['exports'], function (exports) { 'use strict'; exports['default'] = Ember.HTMLBars.template((function() { return { isHTMLBars: true, blockParams: 0, cachedFragment: null, hasRendered: false, build: function build(dom) { var el0 = dom.createDocumentFragment(); var el1 = dom.createTextNode(""); dom.appendChild(el0, el1); var el1 = dom.createTextNode("\n"); dom.appendChild(el0, el1); return el0; }, render: function render(context, env, contextualElement) { var dom = env.dom; var hooks = env.hooks, content = hooks.content; dom.detectNamespace(contextualElement); var fragment; if (env.useFragmentCache && dom.canClone) { if (this.cachedFragment === null) { fragment = this.build(dom); if (this.hasRendered) { this.cachedFragment = fragment; } else { this.hasRendered = true; } } if (this.cachedFragment) { fragment = dom.cloneNode(this.cachedFragment, true); } } else { fragment = this.build(dom); } if (this.cachedFragment) { dom.repairClonedNode(fragment,[0]); } var morph0 = dom.createMorphAt(fragment,0,1,contextualElement); content(env, morph0, context, "source"); return fragment; } }; }())); }); define('dummy/templates/index', ['exports'], function (exports) { 'use strict'; exports['default'] = Ember.HTMLBars.template((function() { return { isHTMLBars: true, blockParams: 0, cachedFragment: null, hasRendered: false, build: function build(dom) { var el0 = dom.createDocumentFragment(); var el1 = dom.createElement("h2"); var el2 = dom.createTextNode("Components"); dom.appendChild(el1, el2); dom.appendChild(el0, el1); var el1 = dom.createTextNode("\n\n"); dom.appendChild(el0, el1); var el1 = dom.createElement("h3"); var el2 = dom.createTextNode("Format Number"); dom.appendChild(el1, el2); dom.appendChild(el0, el1); var el1 = dom.createTextNode("\n"); dom.appendChild(el0, el1); var el1 = dom.createElement("div"); dom.appendChild(el0, el1); var el1 = dom.createTextNode("\n"); dom.appendChild(el0, el1); var el1 = dom.createElement("div"); dom.appendChild(el0, el1); var el1 = dom.createTextNode("\n"); dom.appendChild(el0, el1); var el1 = dom.createElement("div"); dom.appendChild(el0, el1); var el1 = dom.createTextNode("\n\n"); dom.appendChild(el0, el1); var el1 = dom.createTextNode("\n\n"); dom.appendChild(el0, el1); var el1 = dom.createElement("h3"); var el2 = dom.createTextNode("Format Date"); dom.appendChild(el1, el2); dom.appendChild(el0, el1); var el1 = dom.createTextNode("\n"); dom.appendChild(el0, el1); var el1 = dom.createElement("div"); dom.appendChild(el0, el1); var el1 = dom.createTextNode("\n"); dom.appendChild(el0, el1); var el1 = dom.createElement("div"); dom.appendChild(el0, el1); var el1 = dom.createTextNode("\n\n"); dom.appendChild(el0, el1); var el1 = dom.createElement("h3"); var el2 = dom.createTextNode("Format Time"); dom.appendChild(el1, el2); dom.appendChild(el0, el1); var el1 = dom.createTextNode("\n"); dom.appendChild(el0, el1); var el1 = dom.createElement("div"); dom.appendChild(el0, el1); var el1 = dom.createTextNode("\n"); dom.appendChild(el0, el1); var el1 = dom.createElement("div"); dom.appendChild(el0, el1); var el1 = dom.createTextNode("\n\n"); dom.appendChild(el0, el1); var el1 = dom.createTextNode("\n\n"); dom.appendChild(el0, el1); var el1 = dom.createElement("h3"); var el2 = dom.createTextNode("Format Relative"); dom.appendChild(el1, el2); dom.appendChild(el0, el1); var el1 = dom.createTextNode("\n"); dom.appendChild(el0, el1); var el1 = dom.createElement("div"); dom.appendChild(el0, el1); var el1 = dom.createTextNode("\n"); dom.appendChild(el0, el1); var el1 = dom.createElement("div"); dom.appendChild(el0, el1); var el1 = dom.createTextNode("\n\n"); dom.appendChild(el0, el1); var el1 = dom.createElement("h3"); var el2 = dom.createTextNode("Format Message"); dom.appendChild(el1, el2); dom.appendChild(el0, el1); var el1 = dom.createTextNode("\n\n"); dom.appendChild(el0, el1); var el1 = dom.createElement("div"); var el2 = dom.createTextNode("\n "); dom.appendChild(el1, el2); var el2 = dom.createTextNode("\n"); dom.appendChild(el1, el2); dom.appendChild(el0, el1); var el1 = dom.createTextNode("\n"); dom.appendChild(el0, el1); var el1 = dom.createElement("div"); var el2 = dom.createTextNode("\n "); dom.appendChild(el1, el2); var el2 = dom.createTextNode("\n"); dom.appendChild(el1, el2); dom.appendChild(el0, el1); var el1 = dom.createTextNode("\n"); dom.appendChild(el0, el1); var el1 = dom.createElement("br"); dom.appendChild(el0, el1); var el1 = dom.createTextNode("\n"); dom.appendChild(el0, el1); var el1 = dom.createElement("button"); var el2 = dom.createTextNode("\n Use with bind-attr\n"); dom.appendChild(el1, el2); dom.appendChild(el0, el1); var el1 = dom.createTextNode("\n\n"); dom.appendChild(el0, el1); var el1 = dom.createTextNode("\n\n"); dom.appendChild(el0, el1); var el1 = dom.createElement("h3"); var el2 = dom.createTextNode("Format HTML Message"); dom.appendChild(el1, el2); dom.appendChild(el0, el1); var el1 = dom.createTextNode("\n"); dom.appendChild(el0, el1); var el1 = dom.createElement("div"); var el2 = dom.createTextNode("\n "); dom.appendChild(el1, el2); var el2 = dom.createTextNode("\n"); dom.appendChild(el1, el2); dom.appendChild(el0, el1); var el1 = dom.createTextNode("\n"); dom.appendChild(el0, el1); var el1 = dom.createElement("div"); var el2 = dom.createTextNode("\n "); dom.appendChild(el1, el2); var el2 = dom.createTextNode("\n"); dom.appendChild(el1, el2); dom.appendChild(el0, el1); var el1 = dom.createTextNode("\n\n"); dom.appendChild(el0, el1); var el1 = dom.createTextNode("\n"); dom.appendChild(el0, el1); return el0; }, render: function render(context, env, contextualElement) { var dom = env.dom; var hooks = env.hooks, get = hooks.get, inline = hooks.inline, subexpr = hooks.subexpr, element = hooks.element; dom.detectNamespace(contextualElement); var fragment; if (env.useFragmentCache && dom.canClone) { if (this.cachedFragment === null) { fragment = this.build(dom); if (this.hasRendered) { this.cachedFragment = fragment; } else { this.hasRendered = true; } } if (this.cachedFragment) { fragment = dom.cloneNode(this.cachedFragment, true); } } else { fragment = this.build(dom); } var element0 = dom.childAt(fragment, [38]); var morph0 = dom.createMorphAt(dom.childAt(fragment, [4]),-1,-1); var morph1 = dom.createMorphAt(dom.childAt(fragment, [6]),-1,-1); var morph2 = dom.createMorphAt(dom.childAt(fragment, [8]),-1,-1); var morph3 = dom.createMorphAt(fragment,9,10,contextualElement); var morph4 = dom.createMorphAt(dom.childAt(fragment, [13]),-1,-1); var morph5 = dom.createMorphAt(dom.childAt(fragment, [15]),-1,-1); var morph6 = dom.createMorphAt(dom.childAt(fragment, [19]),-1,-1); var morph7 = dom.createMorphAt(dom.childAt(fragment, [21]),-1,-1); var morph8 = dom.createMorphAt(fragment,22,23,contextualElement); var morph9 = dom.createMorphAt(dom.childAt(fragment, [26]),-1,-1); var morph10 = dom.createMorphAt(dom.childAt(fragment, [28]),-1,-1); var morph11 = dom.createMorphAt(dom.childAt(fragment, [32]),0,1); var morph12 = dom.createMorphAt(dom.childAt(fragment, [34]),0,1); var morph13 = dom.createMorphAt(fragment,39,40,contextualElement); var morph14 = dom.createMorphAt(dom.childAt(fragment, [43]),0,1); var morph15 = dom.createMorphAt(dom.childAt(fragment, [45]),0,1); var morph16 = dom.createMorphAt(fragment,46,47,contextualElement); inline(env, morph0, context, "format-number", [get(env, context, "num")], {}); inline(env, morph1, context, "format-number", [get(env, context, "num")], {"format": "EUR"}); inline(env, morph2, context, "format-number", [get(env, context, "num")], {"style": "currency", "currency": "USD"}); inline(env, morph3, context, "code-snippet", [], {"name": "format-number.hbs"}); inline(env, morph4, context, "format-date", [get(env, context, "now")], {}); inline(env, morph5, context, "format-date", [get(env, context, "yesterday")], {}); inline(env, morph6, context, "format-time", [get(env, context, "now")], {"format": "hhmmss"}); inl