ember-introjs
Version:
An Ember Component for intro.js
1 lines • 371 kB
Source Map (JSON)
{"version":3,"sources":["license.js","loader.js","container.js","ember-babel.js","ember-console.js","ember-environment.js","ember-metal.js","rsvp.js","bootstrap"],"sourcesContent":["/*!\n * @overview Ember - JavaScript Application Framework\n * @copyright Copyright 2011-2018 Tilde Inc. and contributors\n * Portions Copyright 2006-2011 Strobe Inc.\n * Portions Copyright 2008-2011 Apple Inc. All rights reserved.\n * @license Licensed under MIT license\n * See https://raw.github.com/emberjs/ember.js/master/LICENSE\n * @version 3.0.0\n */\n","/*globals process */\nvar enifed, requireModule, Ember;\n\n// Used in ember-environment/lib/global.js\nmainContext = this; // eslint-disable-line no-undef\n\n(function() {\n function missingModule(name, referrerName) {\n if (referrerName) {\n throw new Error('Could not find module ' + name + ' required by: ' + referrerName);\n } else {\n throw new Error('Could not find module ' + name);\n }\n }\n\n function internalRequire(_name, referrerName) {\n var name = _name;\n var mod = registry[name];\n\n if (!mod) {\n name = name + '/index';\n mod = registry[name];\n }\n\n var exports = seen[name];\n\n if (exports !== undefined) {\n return exports;\n }\n\n exports = seen[name] = {};\n\n if (!mod) {\n missingModule(_name, referrerName);\n }\n\n var deps = mod.deps;\n var callback = mod.callback;\n var reified = new Array(deps.length);\n\n for (var i = 0; i < deps.length; i++) {\n if (deps[i] === 'exports') {\n reified[i] = exports;\n } else if (deps[i] === 'require') {\n reified[i] = requireModule;\n } else {\n reified[i] = internalRequire(deps[i], name);\n }\n }\n\n callback.apply(this, reified);\n\n return exports;\n }\n\n var isNode = typeof window === 'undefined' &&\n typeof process !== 'undefined' && {}.toString.call(process) === '[object process]';\n\n if (!isNode) {\n Ember = this.Ember = this.Ember || {};\n }\n\n if (typeof Ember === 'undefined') { Ember = {}; }\n\n if (typeof Ember.__loader === 'undefined') {\n var registry = {};\n var seen = {};\n\n enifed = function(name, deps, callback) {\n var value = { };\n\n if (!callback) {\n value.deps = [];\n value.callback = deps;\n } else {\n value.deps = deps;\n value.callback = callback;\n }\n\n registry[name] = value;\n };\n\n requireModule = function(name) {\n return internalRequire(name, null);\n };\n\n // setup `require` module\n requireModule['default'] = requireModule;\n\n requireModule.has = function registryHas(moduleName) {\n return !!registry[moduleName] || !!registry[moduleName + '/index'];\n };\n\n requireModule._eak_seen = registry;\n\n Ember.__loader = {\n define: enifed,\n require: requireModule,\n registry: registry\n };\n } else {\n enifed = Ember.__loader.define;\n requireModule = Ember.__loader.require;\n }\n})();\n","enifed('container', ['exports', 'ember-babel', 'ember-utils', 'ember-debug', 'ember/features', 'ember-environment'], function (exports, _emberBabel, _emberUtils, _emberDebug, _features, _emberEnvironment) {\n 'use strict';\n\n exports.Container = exports.privatize = exports.Registry = undefined;\n\n var Container = function () {\n function Container(registry) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n (0, _emberBabel.classCallCheck)(this, Container);\n\n this.registry = registry;\n this.owner = options.owner || null;\n this.cache = (0, _emberUtils.dictionary)(options.cache || null);\n this.factoryManagerCache = (0, _emberUtils.dictionary)(options.factoryManagerCache || null);\n this.isDestroyed = false;\n\n if (true) {\n this.validationCache = (0, _emberUtils.dictionary)(options.validationCache || null);\n }\n }\n\n /**\n @private\n @property registry\n @type Registry\n @since 1.11.0\n */\n\n /**\n @private\n @property cache\n @type InheritingDict\n */\n\n /**\n @private\n @property validationCache\n @type InheritingDict\n */\n\n /**\n Given a fullName return a corresponding instance.\n The default behavior is for lookup to return a singleton instance.\n The singleton is scoped to the container, allowing multiple containers\n to all have their own locally scoped singletons.\n ```javascript\n let registry = new Registry();\n let container = registry.container();\n registry.register('api:twitter', Twitter);\n let twitter = container.lookup('api:twitter');\n twitter instanceof Twitter; // => true\n // by default the container will return singletons\n let twitter2 = container.lookup('api:twitter');\n twitter2 instanceof Twitter; // => true\n twitter === twitter2; //=> true\n ```\n If singletons are not wanted, an optional flag can be provided at lookup.\n ```javascript\n let registry = new Registry();\n let container = registry.container();\n registry.register('api:twitter', Twitter);\n let twitter = container.lookup('api:twitter', { singleton: false });\n let twitter2 = container.lookup('api:twitter', { singleton: false });\n twitter === twitter2; //=> false\n ```\n @private\n @method lookup\n @param {String} fullName\n @param {Object} [options]\n @param {String} [options.source] The fullname of the request source (used for local lookup)\n @return {any}\n */\n\n\n Container.prototype.lookup = function lookup(fullName, options) {\n (true && !(this.registry.isValidFullName(fullName)) && (0, _emberDebug.assert)('fullName must be a proper full name', this.registry.isValidFullName(fullName)));\n\n return _lookup(this, this.registry.normalize(fullName), options);\n };\n\n Container.prototype.destroy = function destroy() {\n destroyDestroyables(this);\n this.isDestroyed = true;\n };\n\n Container.prototype.reset = function reset(fullName) {\n if (fullName === undefined) {\n resetCache(this);\n } else {\n resetMember(this, this.registry.normalize(fullName));\n }\n };\n\n Container.prototype.ownerInjection = function ownerInjection() {\n var _ref;\n\n return _ref = {}, _ref[_emberUtils.OWNER] = this.owner, _ref;\n };\n\n Container.prototype._resolverCacheKey = function _resolverCacheKey(name, options) {\n return this.registry.resolverCacheKey(name, options);\n };\n\n Container.prototype.factoryFor = function factoryFor(fullName) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n var normalizedName = this.registry.normalize(fullName);\n\n (true && !(this.registry.isValidFullName(normalizedName)) && (0, _emberDebug.assert)('fullName must be a proper full name', this.registry.isValidFullName(normalizedName)));\n\n\n if (options.source) {\n var expandedFullName = this.registry.expandLocalLookup(fullName, options);\n // if expandLocalLookup returns falsey, we do not support local lookup\n if (!_features.EMBER_MODULE_UNIFICATION) {\n if (!expandedFullName) {\n return;\n }\n\n normalizedName = expandedFullName;\n } else if (expandedFullName) {\n // with ember-module-unification, if expandLocalLookup returns something,\n // pass it to the resolve without the source\n normalizedName = expandedFullName;\n options = {};\n }\n }\n\n var cacheKey = this._resolverCacheKey(normalizedName, options);\n var cached = this.factoryManagerCache[cacheKey];\n\n if (cached !== undefined) {\n return cached;\n }\n\n var factory = _features.EMBER_MODULE_UNIFICATION ? this.registry.resolve(normalizedName, options) : this.registry.resolve(normalizedName);\n\n if (factory === undefined) {\n return;\n }\n\n if (true && factory && typeof factory._onLookup === 'function') {\n factory._onLookup(fullName);\n }\n\n var manager = new FactoryManager(this, factory, fullName, normalizedName);\n\n if (true) {\n manager = wrapManagerInDeprecationProxy(manager);\n }\n\n this.factoryManagerCache[cacheKey] = manager;\n return manager;\n };\n\n return Container;\n }();\n\n /*\n * Wrap a factory manager in a proxy which will not permit properties to be\n * set on the manager.\n */\n function wrapManagerInDeprecationProxy(manager) {\n if (_emberUtils.HAS_NATIVE_PROXY) {\n var validator = {\n set: function (obj, prop) {\n throw new Error('You attempted to set \"' + prop + '\" on a factory manager created by container#factoryFor. A factory manager is a read-only construct.');\n }\n };\n\n // Note:\n // We have to proxy access to the manager here so that private property\n // access doesn't cause the above errors to occur.\n var m = manager;\n var proxiedManager = {\n class: m.class,\n create: function (props) {\n return m.create(props);\n }\n };\n\n return new Proxy(proxiedManager, validator);\n }\n\n return manager;\n }\n\n function isSingleton(container, fullName) {\n return container.registry.getOption(fullName, 'singleton') !== false;\n }\n\n function isInstantiatable(container, fullName) {\n return container.registry.getOption(fullName, 'instantiate') !== false;\n }\n\n function _lookup(container, fullName) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n if (options.source) {\n var expandedFullName = container.registry.expandLocalLookup(fullName, options);\n\n if (!_features.EMBER_MODULE_UNIFICATION) {\n // if expandLocalLookup returns falsey, we do not support local lookup\n if (!expandedFullName) {\n return;\n }\n\n fullName = expandedFullName;\n } else if (expandedFullName) {\n // with ember-module-unification, if expandLocalLookup returns something,\n // pass it to the resolve without the source\n fullName = expandedFullName;\n options = {};\n }\n }\n\n if (options.singleton !== false) {\n var cacheKey = container._resolverCacheKey(fullName, options);\n var cached = container.cache[cacheKey];\n if (cached !== undefined) {\n return cached;\n }\n }\n\n return instantiateFactory(container, fullName, options);\n }\n\n function isSingletonClass(container, fullName, _ref2) {\n var instantiate = _ref2.instantiate,\n singleton = _ref2.singleton;\n\n return singleton !== false && !instantiate && isSingleton(container, fullName) && !isInstantiatable(container, fullName);\n }\n\n function isSingletonInstance(container, fullName, _ref3) {\n var instantiate = _ref3.instantiate,\n singleton = _ref3.singleton;\n\n return singleton !== false && instantiate !== false && isSingleton(container, fullName) && isInstantiatable(container, fullName);\n }\n\n function isFactoryClass(container, fullname, _ref4) {\n var instantiate = _ref4.instantiate,\n singleton = _ref4.singleton;\n\n return instantiate === false && (singleton === false || !isSingleton(container, fullname)) && !isInstantiatable(container, fullname);\n }\n\n function isFactoryInstance(container, fullName, _ref5) {\n var instantiate = _ref5.instantiate,\n singleton = _ref5.singleton;\n\n return instantiate !== false && (singleton !== false || isSingleton(container, fullName)) && isInstantiatable(container, fullName);\n }\n\n function instantiateFactory(container, fullName, options) {\n var factoryManager = _features.EMBER_MODULE_UNIFICATION && options && options.source ? container.factoryFor(fullName, options) : container.factoryFor(fullName);\n\n if (factoryManager === undefined) {\n return;\n }\n\n // SomeClass { singleton: true, instantiate: true } | { singleton: true } | { instantiate: true } | {}\n // By default majority of objects fall into this case\n if (isSingletonInstance(container, fullName, options)) {\n var cacheKey = container._resolverCacheKey(fullName, options);\n return container.cache[cacheKey] = factoryManager.create();\n }\n\n // SomeClass { singleton: false, instantiate: true }\n if (isFactoryInstance(container, fullName, options)) {\n return factoryManager.create();\n }\n\n // SomeClass { singleton: true, instantiate: false } | { instantiate: false } | { singleton: false, instantiation: false }\n if (isSingletonClass(container, fullName, options) || isFactoryClass(container, fullName, options)) {\n return factoryManager.class;\n }\n\n throw new Error('Could not create factory');\n }\n\n function buildInjections(container, injections) {\n var hash = {};\n var isDynamic = false;\n\n if (injections.length > 0) {\n if (true) {\n container.registry.validateInjections(injections);\n }\n\n var injection = void 0;\n for (var i = 0; i < injections.length; i++) {\n injection = injections[i];\n hash[injection.property] = _lookup(container, injection.fullName);\n if (!isDynamic) {\n isDynamic = !isSingleton(container, injection.fullName);\n }\n }\n }\n\n return { injections: hash, isDynamic: isDynamic };\n }\n\n function injectionsFor(container, fullName) {\n var registry = container.registry;\n\n var _fullName$split = fullName.split(':'),\n type = _fullName$split[0];\n\n var injections = registry.getTypeInjections(type).concat(registry.getInjections(fullName));\n return buildInjections(container, injections);\n }\n\n function destroyDestroyables(container) {\n var cache = container.cache;\n var keys = Object.keys(cache);\n\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n var value = cache[key];\n\n if (value.destroy) {\n value.destroy();\n }\n }\n }\n\n function resetCache(container) {\n destroyDestroyables(container);\n container.cache = (0, _emberUtils.dictionary)(null);\n container.factoryManagerCache = (0, _emberUtils.dictionary)(null);\n }\n\n function resetMember(container, fullName) {\n var member = container.cache[fullName];\n\n delete container.factoryManagerCache[fullName];\n\n if (member) {\n delete container.cache[fullName];\n\n if (member.destroy) {\n member.destroy();\n }\n }\n }\n\n var FactoryManager = function () {\n function FactoryManager(container, factory, fullName, normalizedName) {\n (0, _emberBabel.classCallCheck)(this, FactoryManager);\n\n this.container = container;\n this.owner = container.owner;\n this.class = factory;\n this.fullName = fullName;\n this.normalizedName = normalizedName;\n this.madeToString = undefined;\n this.injections = undefined;\n }\n\n FactoryManager.prototype.toString = function toString() {\n if (this.madeToString === undefined) {\n this.madeToString = this.container.registry.makeToString(this.class, this.fullName);\n }\n\n return this.madeToString;\n };\n\n FactoryManager.prototype.create = function create() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n var injectionsCache = this.injections;\n if (injectionsCache === undefined) {\n var _injectionsFor = injectionsFor(this.container, this.normalizedName),\n injections = _injectionsFor.injections,\n isDynamic = _injectionsFor.isDynamic;\n\n injectionsCache = injections;\n if (!isDynamic) {\n this.injections = injections;\n }\n }\n\n var props = (0, _emberUtils.assign)({}, injectionsCache, options);\n\n if (true) {\n var lazyInjections = void 0;\n var validationCache = this.container.validationCache;\n // Ensure that all lazy injections are valid at instantiation time\n if (!validationCache[this.fullName] && this.class && typeof this.class._lazyInjections === 'function') {\n lazyInjections = this.class._lazyInjections();\n lazyInjections = this.container.registry.normalizeInjectionsHash(lazyInjections);\n\n this.container.registry.validateInjections(lazyInjections);\n }\n\n validationCache[this.fullName] = true;\n }\n\n if (!this.class.create) {\n throw new Error('Failed to create an instance of \\'' + this.normalizedName + '\\'. Most likely an improperly defined class or' + ' an invalid module export.');\n }\n\n // required to allow access to things like\n // the customized toString, _debugContainerKey,\n // owner, etc. without a double extend and without\n // modifying the objects properties\n if (typeof this.class._initFactory === 'function') {\n this.class._initFactory(this);\n } else {\n // in the non-EmberObject case we need to still setOwner\n // this is required for supporting glimmer environment and\n // template instantiation which rely heavily on\n // `options[OWNER]` being passed into `create`\n // TODO: clean this up, and remove in future versions\n (0, _emberUtils.setOwner)(props, this.owner);\n }\n\n return this.class.create(props);\n };\n\n return FactoryManager;\n }();\n\n var VALID_FULL_NAME_REGEXP = /^[^:]+:[^:]+$/;\n var missingResolverFunctionsDeprecation = 'Passing a `resolver` function into a Registry is deprecated. Please pass in a Resolver object with a `resolve` method.';\n\n /**\n A registry used to store factory and option information keyed\n by type.\n \n A `Registry` stores the factory and option information needed by a\n `Container` to instantiate and cache objects.\n \n The API for `Registry` is still in flux and should not be considered stable.\n \n @private\n @class Registry\n @since 1.11.0\n */\n\n var Registry = function () {\n function Registry() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n (0, _emberBabel.classCallCheck)(this, Registry);\n\n this.fallback = options.fallback || null;\n this.resolver = options.resolver || null;\n\n if (_emberEnvironment.ENV._ENABLE_RESOLVER_FUNCTION_SUPPORT !== true) {\n (true && !(typeof this.resolver !== 'function') && (0, _emberDebug.assert)(missingResolverFunctionsDeprecation, typeof this.resolver !== 'function'));\n }\n\n if (typeof this.resolver === 'function' && _emberEnvironment.ENV._ENABLE_RESOLVER_FUNCTION_SUPPORT === true) {\n deprecateResolverFunction(this);\n }\n\n this.registrations = (0, _emberUtils.dictionary)(options.registrations || null);\n\n this._typeInjections = (0, _emberUtils.dictionary)(null);\n this._injections = (0, _emberUtils.dictionary)(null);\n\n this._localLookupCache = Object.create(null);\n this._normalizeCache = (0, _emberUtils.dictionary)(null);\n this._resolveCache = (0, _emberUtils.dictionary)(null);\n this._failSet = new Set();\n\n this._options = (0, _emberUtils.dictionary)(null);\n this._typeOptions = (0, _emberUtils.dictionary)(null);\n }\n\n /**\n A backup registry for resolving registrations when no matches can be found.\n @private\n @property fallback\n @type Registry\n */\n\n /**\n An object that has a `resolve` method that resolves a name.\n @private\n @property resolver\n @type Resolver\n */\n\n /**\n @private\n @property registrations\n @type InheritingDict\n */\n\n /**\n @private\n @property _typeInjections\n @type InheritingDict\n */\n\n /**\n @private\n @property _injections\n @type InheritingDict\n */\n\n /**\n @private\n @property _normalizeCache\n @type InheritingDict\n */\n\n /**\n @private\n @property _resolveCache\n @type InheritingDict\n */\n\n /**\n @private\n @property _options\n @type InheritingDict\n */\n\n /**\n @private\n @property _typeOptions\n @type InheritingDict\n */\n\n /**\n Creates a container based on this registry.\n @private\n @method container\n @param {Object} options\n @return {Container} created container\n */\n\n\n Registry.prototype.container = function container(options) {\n return new Container(this, options);\n };\n\n Registry.prototype.register = function register(fullName, factory) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n (true && !(this.isValidFullName(fullName)) && (0, _emberDebug.assert)('fullName must be a proper full name', this.isValidFullName(fullName)));\n (true && !(factory !== undefined) && (0, _emberDebug.assert)('Attempting to register an unknown factory: \\'' + fullName + '\\'', factory !== undefined));\n\n\n var normalizedName = this.normalize(fullName);\n (true && !(!this._resolveCache[normalizedName]) && (0, _emberDebug.assert)('Cannot re-register: \\'' + fullName + '\\', as it has already been resolved.', !this._resolveCache[normalizedName]));\n\n\n this._failSet.delete(normalizedName);\n this.registrations[normalizedName] = factory;\n this._options[normalizedName] = options;\n };\n\n Registry.prototype.unregister = function unregister(fullName) {\n (true && !(this.isValidFullName(fullName)) && (0, _emberDebug.assert)('fullName must be a proper full name', this.isValidFullName(fullName)));\n\n\n var normalizedName = this.normalize(fullName);\n\n this._localLookupCache = Object.create(null);\n\n delete this.registrations[normalizedName];\n delete this._resolveCache[normalizedName];\n delete this._options[normalizedName];\n this._failSet.delete(normalizedName);\n };\n\n Registry.prototype.resolve = function resolve(fullName, options) {\n (true && !(this.isValidFullName(fullName)) && (0, _emberDebug.assert)('fullName must be a proper full name', this.isValidFullName(fullName)));\n\n var factory = _resolve(this, this.normalize(fullName), options);\n if (factory === undefined && this.fallback !== null) {\n var _fallback;\n\n factory = (_fallback = this.fallback).resolve.apply(_fallback, arguments);\n }\n return factory;\n };\n\n Registry.prototype.describe = function describe(fullName) {\n if (this.resolver !== null && this.resolver.lookupDescription) {\n return this.resolver.lookupDescription(fullName);\n } else if (this.fallback !== null) {\n return this.fallback.describe(fullName);\n } else {\n return fullName;\n }\n };\n\n Registry.prototype.normalizeFullName = function normalizeFullName(fullName) {\n if (this.resolver !== null && this.resolver.normalize) {\n return this.resolver.normalize(fullName);\n } else if (this.fallback !== null) {\n return this.fallback.normalizeFullName(fullName);\n } else {\n return fullName;\n }\n };\n\n Registry.prototype.normalize = function normalize(fullName) {\n return this._normalizeCache[fullName] || (this._normalizeCache[fullName] = this.normalizeFullName(fullName));\n };\n\n Registry.prototype.makeToString = function makeToString(factory, fullName) {\n if (this.resolver !== null && this.resolver.makeToString) {\n return this.resolver.makeToString(factory, fullName);\n } else if (this.fallback !== null) {\n return this.fallback.makeToString(factory, fullName);\n } else {\n return factory.toString();\n }\n };\n\n Registry.prototype.has = function has(fullName, options) {\n if (!this.isValidFullName(fullName)) {\n return false;\n }\n\n var source = options && options.source && this.normalize(options.source);\n\n return _has(this, this.normalize(fullName), source);\n };\n\n Registry.prototype.optionsForType = function optionsForType(type, options) {\n this._typeOptions[type] = options;\n };\n\n Registry.prototype.getOptionsForType = function getOptionsForType(type) {\n var optionsForType = this._typeOptions[type];\n if (optionsForType === undefined && this.fallback !== null) {\n optionsForType = this.fallback.getOptionsForType(type);\n }\n return optionsForType;\n };\n\n Registry.prototype.options = function options(fullName) {\n var _options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n var normalizedName = this.normalize(fullName);\n this._options[normalizedName] = _options;\n };\n\n Registry.prototype.getOptions = function getOptions(fullName) {\n var normalizedName = this.normalize(fullName);\n var options = this._options[normalizedName];\n\n if (options === undefined && this.fallback !== null) {\n options = this.fallback.getOptions(fullName);\n }\n return options;\n };\n\n Registry.prototype.getOption = function getOption(fullName, optionName) {\n var options = this._options[fullName];\n\n if (options && options[optionName] !== undefined) {\n return options[optionName];\n }\n\n var type = fullName.split(':')[0];\n options = this._typeOptions[type];\n\n if (options && options[optionName] !== undefined) {\n return options[optionName];\n } else if (this.fallback !== null) {\n return this.fallback.getOption(fullName, optionName);\n }\n };\n\n Registry.prototype.typeInjection = function typeInjection(type, property, fullName) {\n (true && !(this.isValidFullName(fullName)) && (0, _emberDebug.assert)('fullName must be a proper full name', this.isValidFullName(fullName)));\n\n\n var fullNameType = fullName.split(':')[0];\n (true && !(fullNameType !== type) && (0, _emberDebug.assert)('Cannot inject a \\'' + fullName + '\\' on other ' + type + '(s).', fullNameType !== type));\n\n\n var injections = this._typeInjections[type] || (this._typeInjections[type] = []);\n\n injections.push({ property: property, fullName: fullName });\n };\n\n Registry.prototype.injection = function injection(fullName, property, injectionName) {\n (true && !(this.isValidFullName(injectionName)) && (0, _emberDebug.assert)('Invalid injectionName, expected: \\'type:name\\' got: ' + injectionName, this.isValidFullName(injectionName)));\n\n\n var normalizedInjectionName = this.normalize(injectionName);\n\n if (fullName.indexOf(':') === -1) {\n return this.typeInjection(fullName, property, normalizedInjectionName);\n }\n\n (true && !(this.isValidFullName(fullName)) && (0, _emberDebug.assert)('fullName must be a proper full name', this.isValidFullName(fullName)));\n\n var normalizedName = this.normalize(fullName);\n\n var injections = this._injections[normalizedName] || (this._injections[normalizedName] = []);\n\n injections.push({ property: property, fullName: normalizedInjectionName });\n };\n\n Registry.prototype.knownForType = function knownForType(type) {\n var localKnown = (0, _emberUtils.dictionary)(null);\n var registeredNames = Object.keys(this.registrations);\n for (var index = 0; index < registeredNames.length; index++) {\n var fullName = registeredNames[index];\n var itemType = fullName.split(':')[0];\n\n if (itemType === type) {\n localKnown[fullName] = true;\n }\n }\n\n var fallbackKnown = void 0,\n resolverKnown = void 0;\n if (this.fallback !== null) {\n fallbackKnown = this.fallback.knownForType(type);\n }\n\n if (this.resolver !== null && this.resolver.knownForType) {\n resolverKnown = this.resolver.knownForType(type);\n }\n\n return (0, _emberUtils.assign)({}, fallbackKnown, localKnown, resolverKnown);\n };\n\n Registry.prototype.isValidFullName = function isValidFullName(fullName) {\n return VALID_FULL_NAME_REGEXP.test(fullName);\n };\n\n Registry.prototype.getInjections = function getInjections(fullName) {\n var injections = this._injections[fullName] || [];\n if (this.fallback !== null) {\n injections = injections.concat(this.fallback.getInjections(fullName));\n }\n return injections;\n };\n\n Registry.prototype.getTypeInjections = function getTypeInjections(type) {\n var injections = this._typeInjections[type] || [];\n if (this.fallback !== null) {\n injections = injections.concat(this.fallback.getTypeInjections(type));\n }\n return injections;\n };\n\n Registry.prototype.resolverCacheKey = function resolverCacheKey(name, options) {\n if (!_features.EMBER_MODULE_UNIFICATION) {\n return name;\n }\n\n return options && options.source ? options.source + ':' + name : name;\n };\n\n Registry.prototype.expandLocalLookup = function expandLocalLookup(fullName, options) {\n if (this.resolver !== null && this.resolver.expandLocalLookup) {\n (true && !(this.isValidFullName(fullName)) && (0, _emberDebug.assert)('fullName must be a proper full name', this.isValidFullName(fullName)));\n (true && !(options && options.source) && (0, _emberDebug.assert)('options.source must be provided to expandLocalLookup', options && options.source));\n (true && !(this.isValidFullName(options.source)) && (0, _emberDebug.assert)('options.source must be a proper full name', this.isValidFullName(options.source)));\n\n\n var normalizedFullName = this.normalize(fullName);\n var normalizedSource = this.normalize(options.source);\n\n return _expandLocalLookup(this, normalizedFullName, normalizedSource);\n } else if (this.fallback !== null) {\n return this.fallback.expandLocalLookup(fullName, options);\n } else {\n return null;\n }\n };\n\n return Registry;\n }();\n\n function deprecateResolverFunction(registry) {\n (true && !(false) && (0, _emberDebug.deprecate)(missingResolverFunctionsDeprecation, false, { id: 'ember-application.registry-resolver-as-function', until: '3.0.0', url: 'https://emberjs.com/deprecations/v2.x#toc_registry-resolver-as-function' }));\n\n registry.resolver = { resolve: registry.resolver };\n }\n\n if (true) {\n Registry.prototype.normalizeInjectionsHash = function (hash) {\n var injections = [];\n\n for (var key in hash) {\n if (hash.hasOwnProperty(key)) {\n (true && !(this.isValidFullName(hash[key])) && (0, _emberDebug.assert)('Expected a proper full name, given \\'' + hash[key] + '\\'', this.isValidFullName(hash[key])));\n\n\n injections.push({\n property: key,\n fullName: hash[key]\n });\n }\n }\n\n return injections;\n };\n\n Registry.prototype.validateInjections = function (injections) {\n if (!injections) {\n return;\n }\n\n var fullName = void 0;\n\n for (var i = 0; i < injections.length; i++) {\n fullName = injections[i].fullName;\n\n (true && !(this.has(fullName)) && (0, _emberDebug.assert)('Attempting to inject an unknown injection: \\'' + fullName + '\\'', this.has(fullName)));\n }\n };\n }\n\n function _expandLocalLookup(registry, normalizedName, normalizedSource) {\n var cache = registry._localLookupCache;\n var normalizedNameCache = cache[normalizedName];\n\n if (!normalizedNameCache) {\n normalizedNameCache = cache[normalizedName] = Object.create(null);\n }\n\n var cached = normalizedNameCache[normalizedSource];\n\n if (cached !== undefined) {\n return cached;\n }\n\n var expanded = registry.resolver.expandLocalLookup(normalizedName, normalizedSource);\n\n return normalizedNameCache[normalizedSource] = expanded;\n }\n\n function _resolve(registry, normalizedName, options) {\n if (options && options.source) {\n // when `source` is provided expand normalizedName\n // and source into the full normalizedName\n var expandedNormalizedName = registry.expandLocalLookup(normalizedName, options);\n\n // if expandLocalLookup returns falsey, we do not support local lookup\n if (!_features.EMBER_MODULE_UNIFICATION) {\n if (!expandedNormalizedName) {\n return;\n }\n\n normalizedName = expandedNormalizedName;\n } else if (expandedNormalizedName) {\n // with ember-module-unification, if expandLocalLookup returns something,\n // pass it to the resolve without the source\n normalizedName = expandedNormalizedName;\n options = {};\n }\n }\n\n var cacheKey = registry.resolverCacheKey(normalizedName, options);\n var cached = registry._resolveCache[cacheKey];\n if (cached !== undefined) {\n return cached;\n }\n if (registry._failSet.has(cacheKey)) {\n return;\n }\n\n var resolved = void 0;\n\n if (registry.resolver) {\n resolved = registry.resolver.resolve(normalizedName, options && options.source);\n }\n\n if (resolved === undefined) {\n resolved = registry.registrations[normalizedName];\n }\n\n if (resolved === undefined) {\n registry._failSet.add(cacheKey);\n } else {\n registry._resolveCache[cacheKey] = resolved;\n }\n\n return resolved;\n }\n\n function _has(registry, fullName, source) {\n return registry.resolve(fullName, { source: source }) !== undefined;\n }\n\n var privateNames = (0, _emberUtils.dictionary)(null);\n var privateSuffix = ('' + Math.random() + Date.now()).replace('.', '');\n\n function privatize(_ref6) {\n var fullName = _ref6[0];\n\n var name = privateNames[fullName];\n if (name) {\n return name;\n }\n\n var _fullName$split2 = fullName.split(':'),\n type = _fullName$split2[0],\n rawName = _fullName$split2[1];\n\n return privateNames[fullName] = (0, _emberUtils.intern)(type + ':' + rawName + '-' + privateSuffix);\n }\n\n /*\n Public API for the container is still in flux.\n The public API, specified on the application namespace should be considered the stable API.\n // @module container\n @private\n */\n\n exports.Registry = Registry;\n exports.privatize = privatize;\n exports.Container = Container;\n});","enifed('ember-babel', ['exports'], function (exports) {\n 'use strict';\n\n exports.classCallCheck = classCallCheck;\n exports.inherits = inherits;\n exports.taggedTemplateLiteralLoose = taggedTemplateLiteralLoose;\n exports.createClass = createClass;\n exports.defaults = defaults;\n function classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError('Cannot call a class as a function');\n }\n }\n\n function inherits(subClass, superClass) {\n if (typeof superClass !== 'function' && superClass !== null) {\n throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : defaults(subClass, superClass);\n }\n\n function taggedTemplateLiteralLoose(strings, raw) {\n strings.raw = raw;\n return strings;\n }\n\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if ('value' in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n function createClass(Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n }\n\n function defaults(obj, defaults) {\n var keys = Object.getOwnPropertyNames(defaults);\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n var value = Object.getOwnPropertyDescriptor(defaults, key);\n if (value && value.configurable && obj[key] === undefined) {\n Object.defineProperty(obj, key, value);\n }\n }\n return obj;\n }\n\n var possibleConstructorReturn = exports.possibleConstructorReturn = function (self, call) {\n if (!self) {\n throw new ReferenceError('this hasn\\'t been initialized - super() hasn\\'t been called');\n }\n return call && (typeof call === 'object' || typeof call === 'function') ? call : self;\n };\n\n var slice = exports.slice = Array.prototype.slice;\n});","enifed(\"ember-console\", [\"exports\"], function (exports) {\n \"use strict\";\n\n /**\n @module ember\n */\n /**\n Inside Ember-Metal, simply uses the methods from `imports.console`.\n Override this to provide more robust logging functionality.\n \n @class Logger\n @namespace Ember\n @public\n */\n var index = {\n log: function () {\n var _console;\n\n return (_console = console).log.apply(_console, arguments);\n },\n warn: function () {\n var _console2;\n\n return (_console2 = console).warn.apply(_console2, arguments);\n },\n error: function () {\n var _console3;\n\n return (_console3 = console).error.apply(_console3, arguments);\n },\n info: function () {\n var _console4;\n\n return (_console4 = console).info.apply(_console4, arguments);\n },\n debug: function () {\n var _console6;\n\n /* eslint-disable no-console */\n if (console.debug) {\n var _console5;\n\n return (_console5 = console).debug.apply(_console5, arguments);\n }\n\n return (_console6 = console).info.apply(_console6, arguments);\n /* eslint-enable no-console */\n },\n assert: function () {\n var _console7;\n\n return (_console7 = console).assert.apply(_console7, arguments);\n }\n };\n\n exports.default = index;\n});","enifed('ember-environment', ['exports'], function (exports) {\n 'use strict';\n\n /* globals global, window, self, mainContext */\n\n // from lodash to catch fake globals\n function checkGlobal(value) {\n return value && value.Object === Object ? value : undefined;\n }\n\n // element ids can ruin global miss checks\n function checkElementIdShadowing(value) {\n return value && value.nodeType === undefined ? value : undefined;\n }\n\n // export real global\n var global$1 = checkGlobal(checkElementIdShadowing(typeof global === 'object' && global)) || checkGlobal(typeof self === 'object' && self) || checkGlobal(typeof window === 'object' && window) || mainContext || // set before strict mode in Ember loader/wrapper\n new Function('return this')(); // eval outside of strict mode\n\n function defaultTrue(v) {\n return v === false ? false : true;\n }\n\n function defaultFalse(v) {\n return v === true ? true : false;\n }\n\n function normalizeExtendPrototypes(obj) {\n if (obj === false) {\n return { String: false, Array: false, Function: false };\n } else if (!obj || obj === true) {\n return { String: true, Array: true, Function: true };\n } else {\n return {\n String: defaultTrue(obj.String),\n Array: defaultTrue(obj.Array),\n Function: defaultTrue(obj.Function)\n };\n }\n }\n\n /* globals module */\n /**\n The hash of environment variables used to control various configuration\n settings. To specify your own or override default settings, add the\n desired properties to a global hash named `EmberENV` (or `ENV` for\n backwards compatibility with earlier versions of Ember). The `EmberENV`\n hash must be created before loading Ember.\n \n @class EmberENV\n @type Object\n @public\n */\n var ENV = typeof global$1.EmberENV === 'object' && global$1.EmberENV || typeof global$1.ENV === 'object' && global$1.ENV || {};\n\n // ENABLE_ALL_FEATURES was documented, but you can't actually enable non optional features.\n if (ENV.ENABLE_ALL_FEATURES) {\n ENV.ENABLE_OPTIONAL_FEATURES = true;\n }\n\n /**\n Determines whether Ember should add to `Array`, `Function`, and `String`\n native object prototypes, a few extra methods in order to provide a more\n friendly API.\n \n We generally recommend leaving this option set to true however, if you need\n to turn it off, you can add the configuration property\n `EXTEND_PROTOTYPES` to `EmberENV` and set it to `false`.\n \n Note, when disabled (the default configuration for Ember Addons), you will\n instead have to access all methods and functions from the Ember\n namespace.\n \n @property EXTEND_PROTOTYPES\n @type Boolean\n @default true\n @for EmberENV\n @public\n */\n ENV.EXTEND_PROTOTYPES = normalizeExtendPrototypes(ENV.EXTEND_PROTOTYPES);\n\n /**\n The `LOG_STACKTRACE_ON_DEPRECATION` property, when true, tells Ember to log\n a full stack trace during deprecation warnings.\n \n @property LOG_STACKTRACE_ON_DEPRECATION\n @type Boolean\n @default true\n @for EmberENV\n @public\n */\n ENV.LOG_STACKTRACE_ON_DEPRECATION = defaultTrue(ENV.LOG_STACKTRACE_ON_DEPRECATION);\n\n /**\n The `LOG_VERSION` property, when true, tells Ember to log versions of all\n dependent libraries in use.\n \n @property LOG_VERSION\n @type Boolean\n @default true\n @for EmberENV\n @public\n */\n ENV.LOG_VERSION = defaultTrue(ENV.LOG_VERSION);\n\n /**\n Debug parameter you can turn on. This will log all bindings that fire to\n the console. This should be disabled in production code. Note that you\n can also enable this from the console or temporarily.\n \n @property LOG_BINDINGS\n @for EmberENV\n @type Boolean\n @default false\n @public\n */\n ENV.LOG_BINDINGS = defaultFalse(ENV.LOG_BINDINGS);\n\n ENV.RAISE_ON_DEPRECATION = defaultFalse(ENV.RAISE_ON_DEPRECATION);\n\n // check if window exists and actually is the global\n var hasDOM = typeof window !== 'undefined' && window === global$1 && window.document && window.document.createElement && !ENV.disableBrowserEnvironment; // is this a public thing?\n\n // legacy imports/exports/lookup stuff (should we keep this??)\n var originalContext = global$1.Ember || {};\n\n var context = {\n // import jQuery\n imports: originalContext.imports || global$1,\n // export Ember\n exports: originalContext.exports || global$1,\n // search for Namespaces\n lookup: originalContext.lookup || global$1\n };\n\n // TODO: cleanup single source of truth issues with this stuff\n var environment = hasDOM ? {\n hasDOM: true,\n isChrome: !!window.chrome && !window.opera,\n isFirefox: typeof InstallTrigger !== 'undefined',\n location: window.location,\n history: window.history,\n userAgent: window.navigator.userAgent,\n window: window\n } : {\n hasDOM: false,\n isChrome: false,\n isFirefox: false,\n location: null,\n history: null,\n userAgent: 'Lynx (textmode)',\n window: null\n };\n\n exports.ENV = ENV;\n exports.context = context;\n exports.environment = environment;\n});","enifed('ember-metal', ['exports', 'ember-environment', 'ember-utils', 'ember-debug', 'ember/features', 'ember-babel', '@glimmer/reference', 'require', 'backburner'], function (exports, emberEnvironment, emberUtils, emberDebug, features, emberBabel, reference, require, Backburner) {\n 'use strict';\n\n require = require && require.hasOwnProperty('default') ? require['default'] : require;\n Backburner = Backburner && Backburner.hasOwnProperty('default') ? Backburner['default'] : Backburner;\n\n var Ember = typeof emberEnvironment.context.imports.Ember === 'object' && emberEnvironment.context.imports.Ember || {};\n\n // Make sure these are set whether Ember was already defined or not\n Ember.isNamespace = true;\n Ember.toString = function () {\n return 'Ember';\n };\n\n /*\n When we render a rich template hierarchy, the set of events that\n *might* happen tends to be much larger than the set of events that\n actually happen. This implies that we should make listener creation &\n destruction cheap, even at the cost of making event dispatch more\n expensive.\n \n Thus we store a new listener with a single push and no new\n allocations, without even bothering to do deduplication -- we can\n save that for dispatch time, if an event actually happens.\n */\n\n /* listener flags */\n var ONCE = 1;\n var SUSPENDED = 2;\n\n var protoMethods = {\n addToListeners: function (eventName, target, method, flags) {\n if (this._listeners === undefined) {\n this._listeners = [];\n }\n this._listeners.push(eventName, target, method, flags);\n },\n _finalizeListeners: function () {\n if (this._listenersFinalized) {\n return;\n }\n if (this._listeners === undefined) {\n this._listeners = [];\n }\n var pointer = this.parent;\n while (pointer !== undefined) {\n var listeners = pointer._listeners;\n if (listeners !== undefined) {\n this._listeners = this._listeners.concat(listeners);\n }\n if (pointer._listenersFinalized) {\n break;\n }\n pointer = pointer.parent;\n }\n this._listenersFinalized = true;\n },\n removeFromListeners: function (eventName, target, method, didRemove) {\n var pointer = this;\n while (pointer !== undefined) {\n var listeners = pointer._listeners;\n if (listeners !== undefined) {\n for (var index = listeners.length - 4; index >= 0; index -= 4) {\n if (listeners[index] === eventName && (!method || listeners[index + 1] === target && listeners[index + 2] === method)) {\n if (pointer === this) {\n // we are modifying our own list, so we edit directly\n if (typeof didRemove === 'function') {\n didRemove(eventName, target, listeners[index + 2]);\n }\n listeners.splice(index, 4);\n } else {\n // we are trying to remove an inherited listener, so we do\n // just-in-time copying to detach our own listeners from\n // our inheritance chain.\n this._finalizeListeners();\n return this.removeFromListeners(eventName, target, method);\n }\n }\n }\n }\n if (pointer._listenersFinalized) {\n break;\n }\n pointer = pointer.parent;\n }\n },\n matchingListeners: function (eventName) {\n var pointer = this;\n var result = void 0;\n while (pointer !== undefined) {\n var listeners = pointer._listeners;\n if (listeners !== undefined) {\n for (var index = 0; index < listeners.length; index += 4) {\n if (listeners[index] === eventName) {\n result = result || [];\n pushUniqueListener(result, listeners, index);\n }\n }\n }\n if (pointer._listenersFinalized) {\n break;\n }\n pointer = pointer.parent;\n }\n return result;\n }\n };\n\n function pushUniqueListener(destination, source, index) {\n var target = source[index + 1];\n var method = source[index + 2];\n for (var destinationIndex = 0; destinationIndex < destination.length; destinationIndex += 3) {\n if (destination[destinationIndex] === target && destination[destinationIndex + 1] === method) {\n return;\n }\n }\n destination.push(target, method, source[index + 3]);\n }\n\n /**\n @module @ember/object\n */\n /*\n The event system uses a series of nested hashes to store listeners on an\n object. When a listener is registered, or when an event arrives, these\n hashes are consulted to determine which target and action pair to invoke.\n \n The hashes are stored in the object's meta hash, and look like this:\n \n // Object's meta hash\n {\n listeners: { // variable name: `listenerSet`\n \"foo:changed\": [ // variable name: `actions`\n target, method, flags\n ]\n }\n }\n \n */\n\n /**\n Add an event listener\n \n @method addListener\n @static\n @for @ember/object/events\n @param obj\n @param {String} eventName\n @param {Object|Function} target A target object or a function\n @param {Function|String} method A function or the name of a function to be called on `target`\n @param {Boolean} once A flag whether a function should only be called once\n @public\n */\n function addListener(obj, eventName, target, method, once) {\n true && !(!!obj && !!eventName) && emberDebug.assert('You must pass at least an object and event name to addListener', !!obj && !!eventName);\n\n if (emberEnvironment.ENV._ENABLE_DID_INIT_ATTRS_SUPPORT === true) {\n true && !(eventName !== 'didInitAttrs') && emberDebug.deprecate('didInitAttrs called in ' + (obj && obj.toString && obj.toString()) + '.', eventName