ember-intl
Version:
Ember toolbox for internationalization.
1 lines • 114 kB
Source Map (JSON)
{"version":3,"sources":["dummy/app.js","dummy/cldrs/en-us.js","dummy/cldrs/es.js","dummy/cldrs/fr-fr.js","dummy/components/code-snippet.js","dummy/controllers/application.js","dummy/controllers/index.js","dummy/controllers/smoke.js","dummy/ember-intl/tests/ember-intl/format-cache/memoizer.jshint.js","dummy/ember-intl/tests/ember-intl/formatter-base.jshint.js","dummy/ember-intl/tests/ember-intl/helpers/base.jshint.js","dummy/ember-intl/tests/ember-intl/index.jshint.js","dummy/ember-intl/tests/ember-intl/models/locale.jshint.js","dummy/ember-intl/tests/ember-intl/utils/data.jshint.js","dummy/ember-intl/tests/ember-intl/utils/streams.jshint.js","dummy/formats.js","dummy/formatters/format-date.js","dummy/formatters/format-html-message.js","dummy/formatters/format-message.js","dummy/formatters/format-number.js","dummy/formatters/format-relative.js","dummy/formatters/format-time.js","dummy/helpers/format-date.js","dummy/helpers/format-html-message.js","dummy/helpers/format-message.js","dummy/helpers/format-number.js","dummy/helpers/format-relative.js","dummy/helpers/format-time.js","dummy/helpers/intl-get.js","dummy/initializers/ember-intl.js","dummy/locales/en-us.js","dummy/locales/es.js","dummy/locales/fr-fr.js","dummy/router.js","dummy/services/intl.js","dummy/snippets.js","dummy/templates/application.js","dummy/templates/components/code-snippet.js","dummy/templates/index.js","dummy/templates/smoke.js","dummy/tests/acceptance/smoke-test.js","dummy/tests/acceptance/smoke-test.jshint.js","dummy/tests/app.jshint.js","dummy/tests/cldrs/en-us.jshint.js","dummy/tests/cldrs/es.jshint.js","dummy/tests/cldrs/fr-fr.jshint.js","dummy/tests/controllers/application.jshint.js","dummy/tests/controllers/index.jshint.js","dummy/tests/controllers/smoke.jshint.js","dummy/tests/formats.jshint.js","dummy/tests/helpers/module-for-intl.js","dummy/tests/helpers/module-for-intl.jshint.js","dummy/tests/helpers/resolver.js","dummy/tests/helpers/resolver.jshint.js","dummy/tests/helpers/run-append.js","dummy/tests/helpers/run-append.jshint.js","dummy/tests/helpers/start-app.js","dummy/tests/helpers/start-app.jshint.js","dummy/tests/locales/en-us.jshint.js","dummy/tests/locales/es.jshint.js","dummy/tests/locales/fr-fr.jshint.js","dummy/tests/router.jshint.js","dummy/tests/test-helper.js","dummy/tests/test-helper.jshint.js","dummy/tests/unit/format-date-test.js","dummy/tests/unit/format-date-test.jshint.js","dummy/tests/unit/format-html-message-test.js","dummy/tests/unit/format-html-message-test.jshint.js","dummy/tests/unit/format-message-test.js","dummy/tests/unit/format-message-test.jshint.js","dummy/tests/unit/format-number-test.js","dummy/tests/unit/format-number-test.jshint.js","dummy/tests/unit/format-relative-test.js","dummy/tests/unit/format-relative-test.jshint.js","dummy/tests/unit/format-time-test.js","dummy/tests/unit/format-time-test.jshint.js","dummy/tests/views/select.jshint.js","dummy/views/select.js","vendor/ember-cli/app-suffix.js"],"sourcesContent":["define('dummy/app', ['exports', 'ember', 'ember/resolver', 'ember/load-initializers', 'dummy/config/environment'], function (exports, Ember, Resolver, loadInitializers, config) {\n\n 'use strict';\n\n Ember['default'].MODEL_FACTORY_INJECTIONS = true;\n\n var App = Ember['default'].Application.extend({\n modulePrefix: config['default'].modulePrefix,\n podModulePrefix: config['default'].podModulePrefix,\n Resolver: Resolver['default'],\n ready: function () {\n this.intl.setProperties({\n locales: ['en-US'],\n defaultLocale: 'en-US'\n });\n }\n });\n\n loadInitializers['default'](App, config['default'].modulePrefix);\n\n exports['default'] = App;\n\n});","define('dummy/cldrs/en-us', ['exports'], function (exports) {\n\n 'use strict';\n\n // GENERATED FILE, DO NOT COPY INTO PROJECT\n // THIS IS SOLELY FOR THE DUMMY APP SINCE IT\n // DOES NOT GO THROUGH THE BROCCOLI PLUGIN\n // WHICH PARSES OUT THE CLDR DATA BELOW\n exports['default'] = {\n locale: \"en-us\",\n 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\"}}}},\n 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\";}\n };\n\n});","define('dummy/cldrs/es', ['exports'], function (exports) {\n\n 'use strict';\n\n // GENERATED FILE, DO NOT COPY INTO PROJECT\n // THIS IS SOLELY FOR THE DUMMY APP SINCE IT\n // DOES NOT GO THROUGH THE BROCCOLI PLUGIN\n // WHICH PARSES OUT THE CLDR DATA BELOW\n exports['default'] = {\n locale: \"es\",\n 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\"}}}},\n pluralRuleFunction: function (n) {n=Math.floor(n);if(n===1)return\"one\";return\"other\";}\n };\n\n});","define('dummy/cldrs/fr-fr', ['exports'], function (exports) {\n\n 'use strict';\n\n // GENERATED FILE, DO NOT COPY INTO PROJECT\n // THIS IS SOLELY FOR THE DUMMY APP SINCE IT\n // DOES NOT GO THROUGH THE BROCCOLI PLUGIN\n // WHICH PARSES OUT THE CLDR DATA BELOW\n exports['default'] = {\n locale: \"fr-fr\",\n 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\"}}}},\n pluralRuleFunction: function (n) {var i=Math.floor(Math.abs(n));n=Math.floor(n);if(i===0||i===1)return\"one\";return\"other\";}\n };\n\n});","define('dummy/components/code-snippet', ['exports', 'ember', 'dummy/snippets'], function (exports, Ember, Snippets) {\n\n 'use strict';\n\n var Highlight = require('highlight.js');\n\n exports['default'] = Ember['default'].Component.extend({\n tagName: 'pre',\n classNameBindings: ['language'],\n unindent: true,\n\n _unindent: function(src) {\n if (!this.get('unindent')) {\n return src;\n }\n var match, min, lines = src.split(\"\\n\");\n for (var i = 0; i < lines.length; i++) {\n match = /^\\s*/.exec(lines[i]);\n if (match && (typeof min === 'undefined' || min > match[0].length)) {\n min = match[0].length;\n }\n }\n if (typeof min !== 'undefined' && min > 0) {\n src = src.replace(new RegExp(\"(\\\\n|^)\\\\s{\" + min + \"}\", 'g'), \"$1\");\n }\n return src;\n },\n\n source: function(){\n return this._unindent(\n (Snippets['default'][this.get('name')] || \"\")\n .replace(/^(\\s*\\n)*/, '')\n .replace(/\\s*$/, '')\n );\n }.property('name'),\n\n didInsertElement: function(){\n Highlight.highlightBlock(this.get('element'));\n },\n\n language: function(){\n var m = /\\.(\\w+)$/i.exec(this.get('name'));\n if (m) {\n switch (m[1].toLowerCase()) {\n case 'js':\n return 'javascript';\n case 'hbs':\n return 'handlebars';\n }\n }\n }.property('name')\n });\n\n});","define('dummy/controllers/application', ['exports', 'ember'], function (exports, Ember) {\n\n 'use strict';\n\n exports['default'] = Ember['default'].Controller.extend({\n options: ['en-US', 'fr-FR', 'es'],\n\n value: Ember['default'].computed('intl.locales', function (key, value) {\n if (arguments.length === 2) {\n this.intl.set('locales', arguments[1]);\n }\n\n return this.intl.get('locales.firstObject') || this.intl.get('locales');\n })\n });\n\n});","define('dummy/controllers/index', ['exports', 'ember'], function (exports, Ember) {\n\n 'use strict';\n\n var now = new Date();\n var yesterday = now.setDate(now.getDate() - 1);\n\n function computedNumber (number, options) {\n return Ember['default'].computed('intl.locales', function () {\n return this.intl.formatNumber(number, options);\n });\n }\n\n exports['default'] = Ember['default'].Controller.extend({\n numType: 'currency',\n num: 1000,\n yesterday: yesterday,\n deadline: Ember['default'].computed.readOnly('yesterday'),\n now: now,\n\n messages: {\n photos: '{name} took {numPhotos, plural,\\n =0 {no photos}\\n =1 {one photo}\\n other {# photos}\\n} on {takenDate, date, long}.\\n'\n },\n \n computedMessage: Ember['default'].computed(function () {\n return 'messages.product.info';\n }),\n\n incrementTime: Ember['default'].on('init', function() {\n var self = this;\n\n setInterval(function() {\n Ember['default'].run(function() {\n self.set('now', new Date());\n self.incrementProperty('num');\n });\n }, 200);\n })\n });\n\n});","define('dummy/controllers/smoke', ['exports', 'ember'], function (exports, Ember) {\n\n 'use strict';\n\n var Controller = Ember['default'].Controller;\n var computed = Ember['default'].computed;\n\n var now = new Date();\n var yesterday = new Date(now).setDate(now.getDate() - 1);\n\n\n exports['default'] = Controller.extend({\n locales: ['en-US', 'fr-FR', 'es'],\n num: 1000,\n yesterday: yesterday,\n\n currentLocale: computed('intl.locales', function (key, value) {\n if (arguments.length === 2) {\n this.set('intl.locales', arguments[1]);\n }\n\n return this.get('intl.locales.firstObject') || this.get('intl.locales');\n })\n });\n\n});","define('dummy/ember-intl/tests/ember-intl/format-cache/memoizer.jshint', function () {\n\n 'use strict';\n\n module('JSHint - ember-intl/format-cache');\n test('ember-intl/format-cache/memoizer.js should pass jshint', function() { \n ok(true, 'ember-intl/format-cache/memoizer.js should pass jshint.'); \n });\n\n});","define('dummy/ember-intl/tests/ember-intl/formatter-base.jshint', function () {\n\n 'use strict';\n\n module('JSHint - ember-intl');\n test('ember-intl/formatter-base.js should pass jshint', function() { \n ok(true, 'ember-intl/formatter-base.js should pass jshint.'); \n });\n\n});","define('dummy/ember-intl/tests/ember-intl/helpers/base.jshint', function () {\n\n 'use strict';\n\n module('JSHint - ember-intl/helpers');\n test('ember-intl/helpers/base.js should pass jshint', function() { \n ok(true, 'ember-intl/helpers/base.js should pass jshint.'); \n });\n\n});","define('dummy/ember-intl/tests/ember-intl/index.jshint', function () {\n\n 'use strict';\n\n module('JSHint - ember-intl');\n test('ember-intl/index.js should pass jshint', function() { \n ok(true, 'ember-intl/index.js should pass jshint.'); \n });\n\n});","define('dummy/ember-intl/tests/ember-intl/models/locale.jshint', function () {\n\n 'use strict';\n\n module('JSHint - ember-intl/models');\n test('ember-intl/models/locale.js should pass jshint', function() { \n ok(true, 'ember-intl/models/locale.js should pass jshint.'); \n });\n\n});","define('dummy/ember-intl/tests/ember-intl/utils/data.jshint', function () {\n\n 'use strict';\n\n module('JSHint - ember-intl/utils');\n test('ember-intl/utils/data.js should pass jshint', function() { \n ok(true, 'ember-intl/utils/data.js should pass jshint.'); \n });\n\n});","define('dummy/ember-intl/tests/ember-intl/utils/streams.jshint', function () {\n\n 'use strict';\n\n module('JSHint - ember-intl/utils');\n test('ember-intl/utils/streams.js should pass jshint', function() { \n ok(true, 'ember-intl/utils/streams.js should pass jshint.'); \n });\n\n});","define('dummy/formats', ['exports', 'ember'], function (exports, Ember) {\n\n 'use strict';\n\n exports['default'] = {\n date: {\n 'time-style': {\n hour: 'numeric',\n minute: 'numeric',\n second: 'numeric'\n }\n },\n number: {\n currency: {\n style: 'currency',\n minimumFractionDigits: 2\n },\n EUR: { style: 'currency', currency: 'EUR' },\n USD: { style: 'currency', currency: 'USD' },\n JPY: { style: 'currency', currency: 'JPY' }\n },\n time: {\n hhmmss: {\n hour: 'numeric',\n minute: 'numeric',\n second: 'numeric'\n }\n }\n };\n\n});","define('dummy/formatters/format-date', ['exports', 'ember', 'ember-intl/formatter-base'], function (exports, Ember, Formatter) {\n\n 'use strict';\n\n /**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\n\n var FormatDate = Formatter['default'].extend({\n format: function (value, hash) {\n var args = this.buildOptions(value, hash);\n var intl = this.intl;\n\n return intl.formatDate.apply(intl, args);\n }\n });\n\n FormatDate.reopenClass({\n formatOptions: [\n 'localeMatcher', 'timeZone', 'hour12', 'formatMatcher', 'weekday',\n 'era', 'year', 'month', 'day', 'hour', 'minute', 'second',\n 'timeZoneName'\n ]\n });\n\n exports['default'] = FormatDate;\n\n});","define('dummy/formatters/format-html-message', ['exports', 'ember', 'dummy/formatters/format-message'], function (exports, Ember, FormatterMessage) {\n\n 'use strict';\n\n /**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\n\n var FormatHtmlMessage = FormatterMessage['default'].extend({\n escapeProps: function (props) {\n return Object.keys(props).reduce(function (escapedProps, name) {\n var value = props[name];\n\n // TODO: Can we force string coersion here? Or would that not be needed\n // and possible mess with IntlMessageFormat?\n if (typeof value === 'string') {\n value = Ember['default'].Handlebars.Utils.escapeExpression(value);\n }\n\n escapedProps[name] = value;\n return escapedProps;\n }, {});\n },\n\n format: function (value, hash, context) {\n var icuKeys = this.extractICUKeys(value);\n var model = {};\n\n if (icuKeys && icuKeys.length) {\n model = Ember['default'].$.extend(Ember['default'].getProperties(context, icuKeys), hash);\n }\n\n var formatOptions = {\n formats: hash.format || this.filterFormatOptions(hash)\n };\n\n if (hash.locales) {\n formatOptions.locales = hash.locales;\n }\n\n return Ember['default'].String.htmlSafe(this.intl.formatMessage(value, this.escapeProps(model), formatOptions));\n }\n });\n\n exports['default'] = FormatHtmlMessage;\n\n});","define('dummy/formatters/format-message', ['exports', 'ember', 'ember-intl/formatter-base'], function (exports, Ember, Formatter) {\n\n 'use strict';\n\n /**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\n\n var validKey = /[\\w|.]/;\n\n var FormatMessage = Formatter['default'].extend({\n extractICUKeys: function (msg) {\n var length = msg.length;\n var buf = [], out = Ember['default'].A();\n var i = 0;\n var char, key;\n\n for (; i < length; i++) {\n char = msg[i];\n\n if (buf.length && !validKey.test(char)) {\n buf.shift();\n key = buf.join('');\n\n // do not include empty strings: {}\n if (key) { out.addObject(key); }\n\n buf = [];\n }\n else if (\n // does not include escaped curly braces\n // and double curly braces does not mistake the first\n // as the starting point of the key {{foo}} should return `foo`\n (char === '{' && msg[i-1] !== \"\\\\\" && msg[i+1] !== '{') ||\n buf.length\n )\n {\n buf.push(char);\n }\n }\n\n return out;\n },\n\n format: function (value, hash, context) {\n var icuKeys = this.extractICUKeys(value);\n var model;\n\n if (icuKeys && icuKeys.length) {\n model = Ember['default'].$.extend(Ember['default'].getProperties(context, icuKeys), hash);\n }\n\n var formatOptions = {\n formats: hash.format || this.filterFormatOptions(hash)\n };\n\n if (hash.locales) {\n formatOptions.locales = hash.locales;\n }\n\n return this.intl.formatMessage(value, model, formatOptions);\n }\n });\n\n FormatMessage.reopenClass({\n formatOptions: [\n 'localeMatcher', 'timeZone', 'hour12', 'formatMatcher', 'weekday',\n 'era', 'year', 'month', 'day', 'hour', 'minute', 'second',\n 'timeZoneName'\n ]\n });\n\n exports['default'] = FormatMessage;\n\n});","define('dummy/formatters/format-number', ['exports', 'ember', 'ember-intl/formatter-base'], function (exports, Ember, Formatter) {\n\n 'use strict';\n\n /**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\n\n var FormatNumber = Formatter['default'].extend({\n format: function (value, hash) {\n var args = this.buildOptions(value, hash);\n var intl = this.intl;\n\n return intl.formatNumber.apply(intl, args);\n }\n });\n\n FormatNumber.reopenClass({\n formatOptions: [\n 'localeMatcher', 'style', 'currency', 'currencyDisplay',\n 'useGrouping', 'minimumIntegerDigits', 'minimumFractionDigits',\n 'maximumFractionDigits', 'minimumSignificantDigits',\n 'maximumSignificantDigits'\n ]\n });\n\n exports['default'] = FormatNumber;\n\n});","define('dummy/formatters/format-relative', ['exports', 'ember', 'ember-intl/formatter-base'], function (exports, Ember, Formatter) {\n\n 'use strict';\n\n /**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\n\n var FormatRelative = Formatter['default'].extend({\n format: function (value, hash) {\n var args = this.buildOptions(value, hash);\n var intl = this.intl;\n\n return intl.formatRelative.apply(intl, args);\n }\n });\n\n FormatRelative.reopenClass({\n formatOptions: ['style', 'units']\n });\n\n exports['default'] = FormatRelative;\n\n});","define('dummy/formatters/format-time', ['exports', 'ember', 'ember-intl/formatter-base'], function (exports, Ember, Formatter) {\n\n 'use strict';\n\n /**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\n\n var FormatTime = Formatter['default'].extend({\n format: function (value, hash) {\n var args = this.buildOptions(value, hash);\n var intl = this.intl;\n\n return intl.formatTime.apply(intl, args);\n }\n });\n\n FormatTime.reopenClass({\n formatOptions: [\n 'localeMatcher', 'timeZone', 'hour12', 'formatMatcher', 'weekday',\n 'era', 'year', 'month', 'day', 'hour', 'minute', 'second',\n 'timeZoneName'\n ]\n });\n\n exports['default'] = FormatTime;\n\n});","define('dummy/helpers/format-date', ['exports', 'ember-intl/helpers/base'], function (exports, FormatHelper) {\n\n\t'use strict';\n\n\t/**\n\t * Copyright 2015, Yahoo! Inc.\n\t * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n\t */\n\n\texports['default'] = FormatHelper['default']('format-date');\n\n});","define('dummy/helpers/format-html-message', ['exports', 'ember-intl/helpers/base'], function (exports, FormatHelper) {\n\n\t'use strict';\n\n\t/**\n\t * Copyright 2015, Yahoo! Inc.\n\t * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n\t */\n\n\texports['default'] = FormatHelper['default']('format-html-message');\n\n});","define('dummy/helpers/format-message', ['exports', 'ember-intl/helpers/base'], function (exports, FormatHelper) {\n\n\t'use strict';\n\n\t/**\n\t * Copyright 2015, Yahoo! Inc.\n\t * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n\t */\n\n\texports['default'] = FormatHelper['default']('format-message');\n\n});","define('dummy/helpers/format-number', ['exports', 'ember-intl/helpers/base'], function (exports, FormatHelper) {\n\n\t'use strict';\n\n\t/**\n\t * Copyright 2015, Yahoo! Inc.\n\t * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n\t */\n\n\texports['default'] = FormatHelper['default']('format-number');\n\n});","define('dummy/helpers/format-relative', ['exports', 'ember-intl/helpers/base'], function (exports, FormatHelper) {\n\n\t'use strict';\n\n\t/**\n\t * Copyright 2015, Yahoo! Inc.\n\t * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n\t */\n\n\texports['default'] = FormatHelper['default']('format-relative');\n\n});","define('dummy/helpers/format-time', ['exports', 'ember-intl/helpers/base'], function (exports, FormatHelper) {\n\n\t'use strict';\n\n\t/**\n\t * Copyright 2015, Yahoo! Inc.\n\t * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n\t */\n\n\texports['default'] = FormatHelper['default']('format-time');\n\n});","define('dummy/helpers/intl-get', ['exports', 'ember', 'ember-intl/utils/streams'], function (exports, Ember, streams) {\n\n 'use strict';\n\n /**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\n\n function normalize (fullName) {\n Ember['default'].assert('Lookup name must be a string', typeof fullName === 'string');\n return fullName.toLowerCase();\n }\n\n function intlGet (key, locale) {\n Ember['default'].assert('You must pass in a message key in the form of a string.', typeof key === 'string');\n\n var intl = this.container.lookup('intl:main');\n var locales = locale ? Ember['default'].makeArray(locale) : intl.get('current');\n\n for (var i=0; i < locales.length; i++) {\n var locale = this.container.lookup('locale:' + normalize(locales[i]));\n\n if (locale) {\n var value = locale.getValue(key);\n\n if (typeof value !== 'undefined') {\n return value;\n }\n }\n }\n\n throw new ReferenceError('Could not find Intl object: ' + key);\n }\n\n exports['default'] = function (value, options) {\n var view = options.data.view;\n var types = options.types;\n var hash = streams.readHash(options.hash);\n var intl = this.container.lookup('intl:main');\n var self = this;\n\n var currentValue = value;\n var valueStream, outStreamValue;\n\n var outStream = new streams.Stream(function () {\n return outStreamValue;\n });\n\n outStream.setValue = function(_value) {\n outStreamValue = _value;\n this.notify();\n }\n \n function valueStreamChanged () {\n currentValue = valueStream.value();\n pokeStream();\n }\n\n function pokeStream () {\n outStream.setValue(intlGet.call(self, streams.read(currentValue), hash.locales));\n }\n\n if (types[0] === 'ID') {\n valueStream = view.getStream(value);\n currentValue = valueStream.value();\n valueStream.subscribe(valueStreamChanged);\n }\n\n intl.on('localesChanged', this, pokeStream);\n\n view.one('willDestroyElement', this, function () {\n intl.off('localesChanged', this, pokeStream);\n\n if (valueStream) {\n valueStream.unsubscribe(valueStreamChanged);\n }\n\n streams.destroyStream(outStream);\n });\n\n pokeStream();\n\n return outStream;\n };\n\n});","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) {\n\n 'use strict';\n\n /**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\n\n exports['default'] = {\n name: 'ember-intl',\n\n initialize: function (container, app) {\n var seen = requirejs._eak_seen;\n var prefix = app.modulePrefix;\n\n container.optionsForType('formats', {\n singleton: true,\n instantiate: false\n });\n\n container.optionsForType('locale', {\n singleton: true,\n instantiate: true\n });\n\n Object.keys(seen).filter(function (key) {\n return key.indexOf(prefix + '\\/cldrs\\/') === 0;\n }).forEach(function (key) {\n data.addLocaleData(require(key, null, null, true)['default']);\n });\n\n var ServiceKlass = app.IntlService || IntlService['default'];\n var service = ServiceKlass.create({ container: container });\n\n app.register('intl:main', service, {\n singleton: true,\n instantiate: false\n });\n\n app.intl = service;\n\n app.inject('controller', 'intl', 'intl:main');\n app.inject('component', 'intl', 'intl:main');\n app.inject('route', 'intl', 'intl:main');\n app.inject('model', 'intl', 'intl:main');\n app.inject('view', 'intl', 'intl:main');\n app.inject('formatter', 'intl', 'intl:main');\n\n if (Ember['default'].HTMLBars) {\n Ember['default'].HTMLBars._registerHelper('format-date', FormatDate['default']);\n Ember['default'].HTMLBars._registerHelper('format-time', FormatTime['default']);\n Ember['default'].HTMLBars._registerHelper('format-relative', FormatRelative['default']);\n Ember['default'].HTMLBars._registerHelper('format-number', FormatNumber['default']);\n Ember['default'].HTMLBars._registerHelper('format-html-message', FormatHtmlMessage['default']);\n Ember['default'].HTMLBars._registerHelper('format-message', FormatMessage['default']);\n }\n }\n }\n\n});","define('dummy/locales/en-us', ['exports', 'ember-intl/models/locale'], function (exports, Locale) {\n\n 'use strict';\n\n exports['default'] = Locale['default'].extend({\n messages: {\n product: {\n info: '{product} will cost {price, number, EUR} if ordered by {deadline, date, time}',\n html: {\n info: '<strong>{product}</strong> will cost <em>{price, number, EUR}</em> if ordered by {deadline, date, time}'\n },\n title: 'Hello world!'\n }\n }\n });\n\n});","define('dummy/locales/es', ['exports', 'ember-intl/models/locale'], function (exports, Locale) {\n\n 'use strict';\n\n exports['default'] = Locale['default'].extend({\n messages: {}\n });\n\n});","define('dummy/locales/fr-fr', ['exports', 'ember-intl/models/locale'], function (exports, Locale) {\n\n 'use strict';\n\n exports['default'] = Locale['default'].extend({\n messages: {\n product: {\n info: '{product} coûtera {price, number, EUR} si triés par {deadline, date, time}',\n html: {\n info: '<strong>{product}</strong> coûtera <em>{price, number, EUR}</em> si triés par {deadline, date, time}'\n }\n }\n }\n });\n\n});","define('dummy/router', ['exports', 'ember', 'dummy/config/environment'], function (exports, Ember, config) {\n\n 'use strict';\n\n var Router = Ember['default'].Router.extend({\n location: config['default'].locationType\n });\n\n Router.map(function() {\n this.route('smoke');\n });\n\n exports['default'] = Router;\n\n});","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) {\n\n 'use strict';\n\n /**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\n\n var ServiceKlass = Ember['default'].Service || Ember['default'].Controller;\n var makeArray = Ember['default'].makeArray;\n var get = Ember['default'].get;\n var on = Ember['default'].on;\n var computed = Ember['default'].computed;\n var observer = Ember['default'].observer;\n var isEmpty = Ember['default'].isEmpty;\n var isPresent = Ember['default'].isPresent;\n var run = Ember['default'].run;\n\n function assertIsDate (date, errMsg) {\n Ember['default'].assert(errMsg, isFinite(date));\n }\n\n exports['default'] = ServiceKlass.extend(Ember['default'].Evented, {\n locales: null,\n defaultLocale: null,\n\n getDateTimeFormat: null,\n getRelativeFormat: null,\n getMessageFormat: null,\n getNumberFormat: null,\n\n setupMemoizers: on('init', function () {\n this.setProperties({\n getDateTimeFormat: createFormatCache['default'](Intl.DateTimeFormat),\n getRelativeFormat: createFormatCache['default'](data.IntlRelativeFormat),\n getNumberFormat: createFormatCache['default'](Intl.NumberFormat),\n getMessageFormat: createFormatCache['default'](data.IntlMessageFormat)\n });\n }),\n\n current: computed('locales', 'defaultLocale', function () {\n var locales = makeArray(get(this, 'locales'));\n var defaultLocale = get(this, 'defaultLocale');\n\n if (isPresent(defaultLocale) && locales.indexOf(defaultLocale) === -1) {\n locales.push(defaultLocale);\n }\n\n return locales;\n }).readOnly(),\n\n formats: computed(function () {\n return this.container.lookup('formats:main', {\n instantiate: false\n }) || {};\n }).readOnly(),\n\n localeChanged: observer('current', function () {\n run.once(this, this.notifyLocaleChanged);\n }),\n\n addMessage: function (locale, key, value) {\n var localeInstance = this._getLocaleInstance(locale);\n\n return localeInstance.addMessage(key, value);\n },\n\n addMessages: function (locale, messageObject) {\n var localeInstance = this._getLocaleInstance(locale);\n\n return localeInstance.addMessages(messageObject);\n },\n\n notifyLocaleChanged: function () {\n this.trigger('localesChanged');\n },\n\n formatMessage: function (message, values, options) {\n // When `message` is a function, assume it's an IntlMessageFormat\n // instance's `format()` method passed by reference, and call it. This\n // is possible because its `this` will be pre-bound to the instance.\n if (typeof message === 'function') {\n return message(values);\n }\n\n options = options || {};\n\n var locales = makeArray(options.locales);\n var formats = options.formats || get(this, 'formats');\n\n if (isEmpty(locales)) {\n locales = get(this, 'current');\n }\n\n if (typeof message === 'string') {\n message = this.getMessageFormat(message, locales, formats);\n }\n\n return message.format(values);\n },\n\n formatTime: function (date, formatOptions, options) {\n date = new Date(date);\n assertIsDate(date, 'A date or timestamp must be provided to formatTime()');\n\n return this._format('time', date, formatOptions, options);\n },\n \n formatRelative: function (date, formatOptions, options) {\n date = new Date(date);\n assertIsDate(date, 'A date or timestamp must be provided to formatRelative()');\n\n return this._format('relative', date, formatOptions, options);\n },\n\n formatDate: function (date, formatOptions, options) {\n date = new Date(date);\n assertIsDate(date, 'A date or timestamp must be provided to formatDate()');\n\n return this._format('date', date, formatOptions, options);\n },\n\n formatNumber: function (num, formatOptions, options) {\n return this._format('number', num, formatOptions, options);\n },\n\n _format: function (type, value, formatOptions, helperOptions) {\n if (!helperOptions) {\n helperOptions = formatOptions || {};\n formatOptions = null;\n }\n\n var locales = makeArray(helperOptions.locales);\n var formats = get(this, 'formats');\n\n if (isEmpty(locales)) {\n locales = get(this, 'current');\n }\n \n if (formatOptions) {\n if (typeof formatOptions === 'string' && formats) {\n formatOptions = get(formats, type + '.' + formatOptions);\n }\n \n formatOptions = Ember['default'].$.extend({}, formatOptions, helperOptions);\n } else {\n formatOptions = helperOptions;\n }\n\n switch (type) {\n case 'date':\n case 'time':\n return this.getDateTimeFormat(locales, formatOptions).format(value);\n case 'number':\n return this.getNumberFormat(locales, formatOptions).format(value);\n case 'relative':\n return this.getRelativeFormat(locales, formatOptions).format(value);\n default:\n throw new Error('Unrecognized simple format type: ' + type);\n }\n },\n\n _getLocaleInstance: function (locale) {\n if (locale instanceof Locale['default']) {\n return locale;\n }\n\n if (typeof locale === 'string') {\n return this.container.lookup('locale:' + locale.toLowerCase());\n }\n\n throw new Error('`locale` must be a string or a locale instance');\n }\n });\n\n});","define('dummy/snippets', ['exports'], function (exports) {\n\n 'use strict';\n\n 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\",\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\",\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\",\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\",\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\" };\n\n});","define('dummy/templates/application', ['exports'], function (exports) {\n\n 'use strict';\n\n exports['default'] = Ember.HTMLBars.template((function() {\n return {\n isHTMLBars: true,\n blockParams: 0,\n cachedFragment: null,\n hasRendered: false,\n build: function build(dom) {\n var el0 = dom.createDocumentFragment();\n var el1 = dom.createElement(\"div\");\n dom.setAttribute(el1,\"class\",\"main\");\n var el2 = dom.createTextNode(\"\\n \");\n dom.appendChild(el1, el2);\n var el2 = dom.createElement(\"div\");\n dom.setAttribute(el2,\"class\",\"header\");\n var el3 = dom.createTextNode(\"\\n \");\n dom.appendChild(el2, el3);\n var el3 = dom.createElement(\"h1\");\n dom.setAttribute(el3,\"id\",\"title\");\n var el4 = dom.createTextNode(\"ember-intl\");\n dom.appendChild(el3, el4);\n dom.appendChild(el2, el3);\n var el3 = dom.createTextNode(\"\\n \");\n dom.appendChild(el2, el3);\n dom.appendChild(el1, el2);\n var el2 = dom.createTextNode(\"\\n \");\n dom.appendChild(el1, el2);\n var el2 = dom.createElement(\"div\");\n dom.setAttribute(el2,\"class\",\"content\");\n var el3 = dom.createTextNode(\"\\n \");\n dom.appendChild(el2, el3);\n var el3 = dom.createElement(\"div\");\n var el4 = dom.createTextNode(\"\\n Choose a locale: \");\n dom.appendChild(el3, el4);\n var el4 = dom.createTextNode(\"\\n \");\n dom.appendChild(el3, el4);\n dom.appendChild(el2, el3);\n var el3 = dom.createTextNode(\"\\n\\n \");\n dom.appendChild(el2, el3);\n var el3 = dom.createTextNode(\"\\n \");\n dom.appendChild(el2, el3);\n dom.appendChild(el1, el2);\n var el2 = dom.createTextNode(\"\\n\");\n dom.appendChild(el1, el2);\n dom.appendChild(el0, el1);\n var el1 = dom.createTextNode(\"\\n\");\n dom.appendChild(el0, el1);\n return el0;\n },\n render: function render(context, env, contextualElement) {\n var dom = env.dom;\n var hooks = env.hooks, get = hooks.get, inline = hooks.inline, content = hooks.content;\n dom.detectNamespace(contextualElement);\n var fragment;\n if (env.useFragmentCache && dom.canClone) {\n if (this.cachedFragment === null) {\n fragment = this.build(dom);\n if (this.hasRendered) {\n this.cachedFragment = fragment;\n } else {\n this.hasRendered = true;\n }\n }\n if (this.cachedFragment) {\n fragment = dom.cloneNode(this.cachedFragment, true);\n }\n } else {\n fragment = this.build(dom);\n }\n var element0 = dom.childAt(fragment, [0, 3]);\n var morph0 = dom.createMorphAt(dom.childAt(element0, [1]),0,1);\n var morph1 = dom.createMorphAt(element0,2,3);\n inline(env, morph0, context, \"view\", [\"select\"], {\"value\": get(env, context, \"value\"), \"content\": get(env, context, \"options\")});\n content(env, morph1, context, \"outlet\");\n return fragment;\n }\n };\n }()));\n\n});","define('dummy/templates/components/code-snippet', ['exports'], function (exports) {\n\n 'use strict';\n\n exports['default'] = Ember.HTMLBars.template((function() {\n return {\n isHTMLBars: true,\n blockParams: 0,\n cachedFragment: null,\n hasRendered: false,\n build: function build(dom) {\n var el0 = dom.createDocumentFragment();\n var el1 = dom.createTextNode(\"\");\n dom.appendChild(el0, el1);\n var el1 = dom.createTextNode(\"\\n\");\n dom.appendChild(el0, el1);\n return el0;\n },\n render: function render(context, env, contextualElement) {\n var dom = env.dom;\n var hooks = env.hooks, content = hooks.content;\n dom.detectNamespace(contextualElement);\n var fragment;\n if (env.useFragmentCache && dom.canClone) {\n if (this.cachedFragment === null) {\n fragment = this.build(dom);\n if (this.hasRendered) {\n this.cachedFragment = fragment;\n } else {\n this.hasRendered = true;\n }\n }\n if (this.cachedFragment) {\n fragment = dom.cloneNode(this.cachedFragment, true);\n }\n } else {\n fragment = this.build(dom);\n }\n if (this.cachedFragment) { dom.repairClonedNode(fragment,[0]); }\n var morph0 = dom.createMorphAt(fragment,0,1,contextualElement);\n content(env, morph0, context, \"source\");\n return fragment;\n }\n };\n }()));\n\n});","define('dummy/templates/index', ['exports'], function (exports) {\n\n 'use strict';\n\n exports['default'] = Ember.HTMLBars.template((function() {\n return {\n isHTMLBars: true,\n blockParams: 0,\n cachedFragment: null,\n hasRendered: false,\n build: function build(dom) {\n var el0 = dom.createDocumentFragment();\n var el1 = dom.createElement(\"h2\");\n var el2 = dom.createTextNode(\"Components\");\n dom.appendChild(el1, el2);\n dom.appendChild(el0, el1);\n var el1 = dom.createTextNode(\"\\n\\n\");\n dom.appendChild(el0, el1);\n var el1 = dom.createElement(\"h3\");\n var el2 = dom.createTextNode(\"Format Number\");\n dom.appendChild(el1, el2);\n dom.appendChild(el0, el1);\n var el1 = dom.createTextNode(\"\\n\");\n dom.appendChild(el0, el1);\n var el1 = dom.createElement(\"div\");\n dom.appendChild(el0, el1);\n var el1 = dom.createTextNode(\"\\n\");\n dom.appendChild(el0, el1);\n var el1 = dom.createElement(\"div\");\n dom.appendChild(el0, el1);\n var el1 = dom.createTextNode(\"\\n\");\n dom.appendChild(el0, el1);\n var el1 = dom.createElement(\"div\");\n dom.appendChild(el0, el1);\n var el1 = dom.createTextNode(\"\\n\\n\");\n dom.appendChild(el0, el1);\n var el1 = dom.createTextNode(\"\\n\\n\");\n dom.appendChild(el0, el1);\n var el1 = dom.createElement(\"h3\");\n var el2 = dom.createTextNode(\"Format Date\");\n dom.appendChild(el1, el2);\n dom.appendChild(el0, el1);\n var el1 = dom.createTextNode(\"\\n\");\n dom.appendChild(el0, el1);\n var el1 = dom.createElement(\"div\");\n dom.appendChild(el0, el1);\n var el1 = dom.createTextNode(\"\\n\");\n dom.appendChild(el0, el1);\n var el1 = dom.createElement(\"div\");\n dom.appendChild(el0, el1);\n var el1 = dom.createTextNode(\"\\n\\n\");\n dom.appendChild(el0, el1);\n var el1 = dom.createElement(\"h3\");\n var el2 = dom.createTextNode(\"Format Time\");\n dom.appendChild(el1, el2);\n dom.appendChild(el0, el1);\n var el1 = dom.createTextNode(\"\\n\");\n dom.appendChild(el0, el1);\n var el1 = dom.createElement(\"div\");\n dom.appendChild(el0, el1);\n var el1 = dom.createTextNode(\"\\n\");\n dom.appendChild(el0, el1);\n var el1 = dom.createElement(\"div\");\n dom.appendChild(el0, el1);\n var el1 = dom.createTextNode(\"\\n\\n\");\n dom.appendChild(el0, el1);\n var el1 = dom.createTextNode(\"\\n\\n\");\n dom.appendChild(el0, el1);\n var el1 = dom.createElement(\"h3\");\n var el2 = dom.createTextNode(\"Format Relative\");\n dom.appendChild(el1, el2);\n dom.appendChild(el0, el1);\n var el1 = dom.createTextNode(\"\\n\");\n dom.appendChild(el0, el1);\n var el1 = dom.createElement(\"div\");\n dom.appendChild(el0, el1);\n var el1 = dom.createTextNode(\"\\n\");\n dom.appendChild(el0, el1);\n var el1 = dom.createElement(\"div\");\n dom.appendChild(el0, el1);\n var el1 = dom