{"version":3,"file":"ractive.js","sources":["../src/Ractive.js","../src/Ractive/static/findPlugin.js","../src/Ractive/static/keypaths.js","../src/extend/_macro.js","../src/extend/_extend.js","../src/Ractive/static/use.js","../src/Ractive/static/sharedGet.js","../src/Ractive/static/sharedSet.js","../src/Ractive/static/styles.js","../src/Ractive/static/styleGet.js","../src/Ractive/static/isInstance.js","../src/Ractive/prototype.js","../src/Ractive/prototype/use.js","../src/Ractive/prototype/updateModel.js","../src/Ractive/prototype/unshift.js","../src/Ractive/prototype/unrender.js","../src/Ractive/prototype/unlink.js","../src/Ractive/prototype/transition.js","../src/Ractive/prototype/toText.js","../src/Ractive/prototype/toHTML.js","../src/Ractive/prototype/toCSS.js","../src/Ractive/prototype/toggle.js","../src/Ractive/prototype/subtract.js","../src/Ractive/prototype/splice.js","../src/Ractive/prototype/sort.js","../src/Ractive/prototype/shift.js","../src/Ractive/prototype/set.js","../src/Ractive/prototype/reverse.js","../src/Ractive/prototype/resetTemplate.js","../src/Ractive/prototype/resetPartial.js","../src/Ractive/prototype/reset.js","../src/Ractive/prototype/render.js","../src/Ractive/render.js","../src/Ractive/initialise.js","../src/view/Fragment.js","../src/view/helpers/processItems.js","../src/view/items/createItem.js","../src/view/items/Await.js","../src/view/items/asyncProxy.js","../src/view/items/component/getComponentConstructor.js","../src/view/items/Triple.js","../src/view/items/triple/insertHtml.js","../src/view/items/element/Transition.js","../src/view/items/element/transitions/createTransitions.js","../src/view/items/element/transitions/hyphenate.js","../src/view/items/element/transitions/prefix.js","../src/config/visibility.js","../src/view/items/Text.js","../src/view/items/element/specials/Textarea.js","../src/view/items/element/specials/Select.js","../src/view/items/Section.js","../src/view/RepeatedFragment.js","../src/model/specials/KeyModel.js","../src/view/items/Partial.js","../src/view/items/partial/getPartialTemplate.js","../src/view/items/element/specials/Option.js","../src/view/items/component/Mapping.js","../src/utils/parseJSON.js","../src/view/items/element/specials/Input.js","../src/view/items/Interpolator.js","../src/view/items/shared/Mustache.js","../src/view/items/shared/progressiveText.js","../src/view/items/shared/EventDirective.js","../src/view/items/component/RactiveEvent.js","../src/view/items/element/ElementEvents.js","../src/view/items/element/specials/Form.js","../src/view/items/Element.js","../src/view/items/element/binding/selectBinding.js","../src/view/items/element/binding/SingleSelectBinding.js","../src/view/items/element/binding/RadioNameBinding.js","../src/view/items/element/binding/RadioBinding.js","../src/view/items/element/binding/NumericBinding.js","../src/view/items/element/binding/MultipleSelectBinding.js","../src/utils/getSelectedOptions.js","../src/view/items/element/binding/FileBinding.js","../src/view/items/element/binding/GenericBinding.js","../src/view/items/element/binding/ContentEditableBinding.js","../src/view/items/element/binding/CheckboxNameBinding.js","../src/view/items/element/binding/getBindingGroup.js","../src/view/items/element/binding/CheckboxBinding.js","../src/view/items/element/binding/handleDomEvent.js","../src/view/items/element/binding/Binding.js","../src/view/items/Doctype.js","../src/view/items/element/Decorator.js","../src/view/items/shared/directiveArgs.js","../src/view/items/Component.js","../src/Ractive/construct.js","../src/Ractive/helpers/subscribe.js","../src/model/RootModel.js","../src/model/specials/RactiveModel.js","../src/Ractive/prototype/teardown.js","../src/view/items/Comment.js","../src/view/items/element/BindingFlag.js","../src/view/items/element/Attribute.js","../src/view/items/element/ConditionalAttribute.js","../src/view/items/element/attribute/propertyNames.js","../src/view/items/element/attribute/getUpdateDelegate.js","../src/view/helpers/specialAttrs.js","../src/view/items/Alias.js","../src/view/resolvers/resolve.js","../src/view/resolvers/ReferenceExpressionProxy.js","../src/view/resolvers/ExpressionProxy.js","../src/model/Computation.js","../src/model/ComputationChild.js","../src/view/items/shared/Item.js","../src/Ractive/config/config.js","../src/Ractive/config/deprecate.js","../src/Ractive/config/wrapPrototypeMethod.js","../src/Ractive/config/registries.js","../src/Ractive/config/custom/template.js","../src/Ractive/config/custom/data.js","../src/Ractive/config/custom/css/css.js","../src/model/specials/CSSModel.js","../src/Ractive/static/styleSet.js","../src/utils/id.js","../src/Ractive/config/custom/css/transform.js","../src/utils/cleanCss.js","../src/Ractive/config/custom/adapt.js","../src/global/css.js","../src/Ractive/prototype/readLink.js","../src/Ractive/prototype/push.js","../src/Ractive/prototype/pop.js","../src/Ractive/prototype/once.js","../src/Ractive/prototype/on.js","../src/Ractive/prototype/off.js","../src/Ractive/prototype/shared/notEmptyString.js","../src/Ractive/prototype/shared/trim.js","../src/Ractive/prototype/observeOnce.js","../src/Ractive/prototype/observe.js","../src/Ractive/prototype/observe/Array.js","../src/Ractive/prototype/observe/Pattern.js","../src/Ractive/prototype/observe/Observer.js","../src/Ractive/prototype/link.js","../src/Ractive/prototype/insert.js","../src/utils/dom.js","../src/config/namespaces.js","../src/Ractive/prototype/getContext.js","../src/Ractive/static/getContext.js","../src/Ractive/prototype/get.js","../src/Ractive/prototype/fire.js","../src/shared/Context.js","../src/Ractive/prototype/update.js","../src/Ractive/prototype/shared/makeArrayMethod.js","../src/shared/getNewIndices.js","../src/view/items/shared/findElement.js","../src/Ractive/prototype/findParent.js","../src/Ractive/prototype/findContainer.js","../src/Ractive/prototype/findComponent.js","../src/Ractive/prototype/findAllComponents.js","../src/Ractive/prototype/findAll.js","../src/Ractive/prototype/find.js","../src/Ractive/prototype/detachChild.js","../src/Ractive/prototype/detach.js","../src/Ractive/prototype/compute.js","../src/Ractive/prototype/attachChild.js","../src/shared/anchors.js","../src/events/Hook.js","../src/events/fireEvent.js","../src/events/eventStack.js","../src/Ractive/prototype/animate.js","../src/Ractive/prototype/add.js","../src/Ractive/prototype/shared/add.js","../src/shared/set.js","../src/shared/getRactiveContext.js","../src/view/resolvers/resolveReference.js","../src/model/specials/SharedModel.js","../src/model/Model.js","../src/model/helpers/getPrefixer.js","../src/shared/Ticker.js","../src/global/runloop.js","../src/global/TransitionManager.js","../src/Ractive/helpers/getComputationSignature.js","../src/Ractive/config/runtime-parser.js","../src/parse/_parse.js","../src/Ractive/shared.js","../src/parse/utils/insertExpressions.js","../src/parse/converters/readTemplate.js","../src/parse/converters/readPartialDefinitionSection.js","../src/parse/converters/readText.js","../src/parse/converters/readElement.js","../src/utils/hyphenateCamel.js","../src/parse/converters/element/readClosingTag.js","../src/parse/utils/cleanup.js","../src/parse/utils/trimWhitespace.js","../src/parse/utils/stripStandalones.js","../src/parse/converters/readHtmlComment.js","../src/parse/converters/mustache/readSection.js","../src/parse/converters/mustache/handlebarsBlockCodes.js","../src/parse/converters/mustache/section/readInlineBlock.js","../src/parse/converters/mustache/section/readClosing.js","../src/parse/converters/mustache/readInterpolator.js","../src/parse/converters/mustache/readMustacheComment.js","../src/parse/converters/mustache/readPartial.js","../src/parse/converters/mustache/readAliases.js","../src/parse/converters/mustache/readUnescaped.js","../src/parse/converters/mustache/readTriple.js","../src/parse/converters/readMustache.js","../src/parse/converters/element/readAttribute.js","../src/parse/utils/refineExpression.js","../src/parse/utils/flattenExpression.js","../src/parse/converters/readExpressionOrReference.js","../src/parse/converters/expressions/shared/readExpressionList.js","../src/parse/converters/readExpression.js","../src/parse/converters/expressions/readConditional.js","../src/parse/converters/expressions/readLogicalOr.js","../src/parse/converters/expressions/readTypeof.js","../src/parse/converters/expressions/readMemberOrInvocation.js","../src/parse/converters/expressions/shared/readRefinement.js","../src/parse/converters/expressions/readPrimary.js","../src/parse/converters/expressions/primary/readBracketedExpression.js","../src/parse/converters/expressions/primary/readReference.js","../src/parse/converters/expressions/primary/readLiteral.js","../src/parse/converters/expressions/primary/literal/readArrayLiteral.js","../src/parse/converters/expressions/primary/literal/readObjectLiteral.js","../src/parse/converters/expressions/primary/literal/objectLiteral/keyValuePairs.js","../src/parse/converters/expressions/primary/literal/objectLiteral/keyValuePair.js","../src/parse/converters/expressions/shared/readKey.js","../src/parse/converters/expressions/shared/patterns.js","../src/parse/converters/expressions/primary/literal/readTemplateStringLiteral.js","../src/parse/converters/expressions/primary/literal/readStringLiteral.js","../src/parse/converters/expressions/primary/literal/stringLiteral/makeQuotedStringMatcher.js","../src/parse/converters/expressions/primary/literal/readBooleanLiteral.js","../src/parse/converters/expressions/primary/literal/readNumberLiteral.js","../src/parse/converters/expressions/shared/errors.js","../src/utils/html.js","../src/parse/converters/utils/getLowestIndex.js","../src/utils/escapeRegExp.js","../src/parse/converters/expressions/primary/literal/readRegexpLiteral.js","../src/parse/converters/mustache/readDelimiterChange.js","../src/config/types.js","../src/parse/Parser.js","../src/config/template.js","../src/shared/getFunction.js","../src/parse/utils/createFunction.js","../src/model/LinkModel.js","../src/shared/rebind.js","../src/shared/methodCallers.js","../src/global/capture.js","../src/model/ModelBase.js","../src/utils/bind.js","../src/utils/array.js","../src/shared/keypaths.js","../src/Ractive/static/interpolators.js","../src/shared/interpolate.js","../src/shared/registry.js","../src/config/errors.js","../src/utils/log.js","../src/utils/noop.js","../src/config/environment.js","../src/Ractive/static/easing.js","../src/Ractive/config/defaults.js","../src/polyfills/requestAnimationFrame.js","../src/polyfills/Promise.js","../src/polyfills/performance.now.js","../src/polyfills/node.contains.js","../src/polyfills/array.find.js","../src/utils/is.js","../src/utils/object.js","../src/polyfills/Object.assign.js"],"sourcesContent":["import './polyfills/Object.assign';\nimport './polyfills/array.find';\nimport './polyfills/node.contains';\nimport './polyfills/performance.now';\nimport './polyfills/Promise';\nimport './polyfills/requestAnimationFrame';\n\nimport defaults from './Ractive/config/defaults';\nimport easing from './Ractive/static/easing';\nimport interpolators from './Ractive/static/interpolators';\nimport { svg, win } from './config/environment';\nimport proto from './Ractive/prototype';\nimport { extend, extendWith } from './extend/_extend';\nimport macro from './extend/_macro';\nimport parse from './parse/_parse';\nimport getContext from './Ractive/static/getContext';\nimport isInstance from './Ractive/static/isInstance';\nimport use from './Ractive/static/use';\nimport construct from './Ractive/construct';\nimport initialise from './Ractive/initialise';\nimport { getCSS } from './global/css';\nimport { escapeKey, unescapeKey, normalise } from './shared/keypaths';\nimport { joinKeys, splitKeypath } from './Ractive/static/keypaths';\nimport shared from './Ractive/shared';\nimport { findPlugin } from './Ractive/static/findPlugin';\nimport parseJSON from './utils/parseJSON';\nimport CSSModel from './model/specials/CSSModel';\nimport { data as sharedData } from './model/specials/SharedModel';\nimport { extern } from './shared/getRactiveContext';\nimport { warn } from 'utils/log';\n\nimport { assign, defineProperty, defineProperties } from 'utils/object';\n\nexport default function Ractive(options) {\n if (!(this instanceof Ractive)) return new Ractive(options);\n\n construct(this, options || {});\n initialise(this, options || {}, {});\n}\n\n// check to see if we're being asked to force Ractive as a global for some weird environments\nif (win && !win.Ractive) {\n let opts = '';\n const script =\n document.currentScript ||\n /* istanbul ignore next */ document.querySelector('script[data-ractive-options]');\n\n if (script) opts = script.getAttribute('data-ractive-options') || '';\n\n /* istanbul ignore next */\n if (~opts.indexOf('ForceGlobal')) win.Ractive = Ractive;\n} else if (win) {\n warn(`Ractive already appears to be loaded while loading BUILD_PLACEHOLDER_VERSION.`);\n}\n\nassign(Ractive.prototype, proto, defaults);\nRactive.prototype.constructor = Ractive;\n\n// alias prototype as `defaults`\nRactive.defaults = Ractive.prototype;\n\n// share defaults with the parser\nshared.defaults = Ractive.defaults;\nshared.Ractive = Ractive;\n\n// static properties\ndefineProperties(Ractive, {\n // debug flag\n DEBUG: { writable: true, value: true },\n DEBUG_PROMISES: { writable: true, value: true },\n\n // static methods:\n extend: { value: extend },\n extendWith: { value: extendWith },\n escapeKey: { value: escapeKey },\n evalObjectString: { value: parseJSON },\n findPlugin: { value: findPlugin },\n getContext: { value: getContext },\n getCSS: { value: getCSS },\n isInstance: { value: isInstance },\n joinKeys: { value: joinKeys },\n macro: { value: macro },\n normaliseKeypath: { value: normalise },\n parse: { value: parse },\n splitKeypath: { value: splitKeypath },\n // sharedSet and styleSet are in _extend because circular refs\n unescapeKey: { value: unescapeKey },\n use: { value: use },\n\n // support\n enhance: { writable: true, value: false },\n svg: { value: svg },\n\n // version\n VERSION: { value: 'BUILD_PLACEHOLDER_VERSION' },\n\n // plugins\n adaptors: { writable: true, value: {} },\n components: { writable: true, value: {} },\n decorators: { writable: true, value: {} },\n easing: { writable: true, value: easing },\n events: { writable: true, value: {} },\n extensions: { value: [] },\n helpers: { writable: true, value: defaults.helpers },\n interpolators: { writable: true, value: interpolators },\n partials: { writable: true, value: {} },\n transitions: { writable: true, value: {} },\n\n // CSS variables\n cssData: { configurable: true, value: {} },\n\n // access to @shared without an instance\n sharedData: { value: sharedData },\n\n // for getting the source Ractive lib from a constructor\n Ractive: { value: Ractive },\n\n // to allow extending contexts\n Context: { value: extern.Context.prototype }\n});\n\n// cssData must already be in place\ndefineProperty(Ractive, '_cssModel', {\n configurable: true,\n value: new CSSModel(Ractive)\n});\n\ndefineProperty(Ractive.prototype, 'rendered', {\n get() {\n return this.fragment && this.fragment.rendered;\n }\n});\n","import { findInViewHierarchy } from 'shared/registry';\n\nexport function findPlugin(name, type, instance) {\n return findInViewHierarchy(type, instance, name);\n}\n","import { escapeKey, splitKeypath as splitKeypathI, unescapeKey } from 'shared/keypaths';\n\nexport function joinKeys(...keys) {\n return keys.map(escapeKey).join('.');\n}\n\nexport function splitKeypath(keypath) {\n return splitKeypathI(keypath).map(unescapeKey);\n}\n","import styleGet from '../Ractive/static/styleGet';\nimport styleSet from '../Ractive/static/styleSet';\nimport CSSModel from 'src/model/specials/CSSModel';\nimport { assign, create, defineProperties, defineProperty } from 'utils/object';\nimport { isFunction } from 'utils/is';\n\nimport { initCSS } from 'src/Ractive/config/custom/css/css';\n\nexport default function macro(fn, opts) {\n if (!isFunction(fn)) throw new Error(`The macro must be a function`);\n\n assign(fn, opts);\n\n defineProperties(fn, {\n extensions: { value: [] },\n _cssIds: { value: [] },\n cssData: { value: assign(create(this.cssData), fn.cssData || {}) },\n\n styleGet: { value: styleGet.bind(fn) },\n styleSet: { value: styleSet.bind(fn) }\n });\n\n defineProperty(fn, '_cssModel', { value: new CSSModel(fn) });\n\n if (fn.css) initCSS(fn, fn, fn);\n\n this.extensions.push(fn);\n\n return fn;\n}\n","import config from '../Ractive/config/config';\nimport dataConfigurator from '../Ractive/config/custom/data';\nimport construct from '../Ractive/construct';\nimport initialise from '../Ractive/initialise';\nimport Ractive from '../Ractive';\nimport isInstance from '../Ractive/static/isInstance';\nimport styleSet from '../Ractive/static/styleSet';\nimport styleGet from '../Ractive/static/styleGet';\nimport { addStyle, hasStyle } from '../Ractive/static/styles';\nimport sharedSet from '../Ractive/static/sharedSet';\nimport sharedGet from '../Ractive/static/sharedGet';\nimport use from '../Ractive/static/use';\nimport { create, defineProperties, toPairs, defineProperty } from 'utils/object';\nimport { isArray, isFunction } from 'utils/is';\n\nconst callsSuper = /super\\s*\\(|\\.call\\s*\\(\\s*this/;\n\nexport function extend(...options) {\n if (!options.length) {\n return extendOne(this);\n } else {\n return options.reduce(extendOne, this);\n }\n}\n\nexport function extendWith(Class, options = {}) {\n return extendOne(this, options, Class);\n}\n\nfunction extendOne(Parent, options = {}, Target) {\n let proto;\n let Child = isFunction(Target) && Target;\n\n if (options.prototype instanceof Ractive) {\n throw new Error(`Ractive no longer supports multiple inheritance.`);\n }\n\n if (Child) {\n if (!(Child.prototype instanceof Parent)) {\n throw new Error(\n `Only classes that inherit the appropriate prototype may be used with extend`\n );\n }\n if (!callsSuper.test(Child.toString())) {\n throw new Error(`Only classes that call super in their constructor may be used with extend`);\n }\n\n proto = Child.prototype;\n } else {\n Child = function(options) {\n if (!(this instanceof Child)) return new Child(options);\n\n construct(this, options || {});\n initialise(this, options || {}, {});\n };\n\n proto = create(Parent.prototype);\n proto.constructor = Child;\n\n Child.prototype = proto;\n }\n\n // Static properties\n defineProperties(Child, {\n // alias prototype as defaults\n defaults: { value: proto },\n\n extend: { value: extend, writable: true, configurable: true },\n extendWith: { value: extendWith, writable: true, configurable: true },\n extensions: { value: [] },\n use: { value: use },\n\n isInstance: { value: isInstance },\n\n Parent: { value: Parent },\n Ractive: { value: Ractive },\n\n styleGet: { value: styleGet.bind(Child), configurable: true },\n styleSet: { value: styleSet.bind(Child), configurable: true }\n });\n\n // extend configuration\n config.extend(Parent, proto, options, Child);\n\n // store event and observer registries on the constructor when extending\n Child._on = (Parent._on || []).concat(toPairs(options.on));\n Child._observe = (Parent._observe || []).concat(toPairs(options.observe));\n\n Parent.extensions.push(Child);\n\n // attribute defs are not inherited, but they need to be stored\n if (options.attributes) {\n let attrs;\n\n // allow an array of optional props or an object with arrays for optional and required props\n if (isArray(options.attributes)) {\n attrs = { optional: options.attributes, required: [] };\n } else {\n attrs = options.attributes;\n }\n\n // make sure the requisite keys actually store arrays\n if (!isArray(attrs.required)) attrs.required = [];\n if (!isArray(attrs.optional)) attrs.optional = [];\n\n Child.attributes = attrs;\n }\n\n dataConfigurator.extend(Parent, proto, options, Child);\n\n defineProperty(Child, 'helpers', { writable: true, value: proto.helpers });\n\n if (isArray(options.use)) Child.use.apply(Child, options.use);\n\n return Child;\n}\n\ndefineProperties(Ractive, {\n sharedGet: { value: sharedGet },\n sharedSet: { value: sharedSet },\n styleGet: { configurable: true, value: styleGet.bind(Ractive) },\n styleSet: { configurable: true, value: styleSet.bind(Ractive) },\n addCSS: { configurable: false, value: addStyle.bind(Ractive) },\n hasCSS: { configurable: false, value: hasStyle.bind(Ractive) }\n});\n","import { isFunction } from 'utils/is';\n\nexport default function use(...plugins) {\n plugins.forEach(p => {\n isFunction(p) &&\n p({\n proto: this.prototype,\n Ractive: this.Ractive,\n instance: this\n });\n });\n return this;\n}\n","import SharedModel from '../../model/specials/SharedModel';\nimport { splitKeypath } from 'shared/keypaths';\n\nexport default function sharedGet(keypath, opts) {\n return SharedModel.joinAll(splitKeypath(keypath)).get(true, opts);\n}\n","import { build, set } from '../../shared/set';\nimport SharedModel from '../../model/specials/SharedModel';\nimport { isObjectType } from 'utils/is';\n\nexport default function sharedSet(keypath, value, options) {\n const opts = isObjectType(keypath) ? value : options;\n const model = SharedModel;\n\n return set(build({ viewmodel: model }, keypath, value, true), opts);\n}\n","import { isFunction } from 'utils/is';\nimport { addCSS, applyCSS } from 'src/global/css';\nimport { recomputeCSS } from './styleSet';\n\nconst styles = [];\n\nexport function addStyle(id, css) {\n if (styles.find(s => s.id === id))\n throw new Error(`Extra styles with the id '${id}' have already been added.`);\n styles.push({ id, css });\n\n if (!this.css) {\n Object.defineProperty(this, 'css', { configurable: false, writable: false, value: buildCSS });\n }\n\n if (!this._cssDef) {\n Object.defineProperty(this, '_cssDef', {\n configurable: true,\n writable: false,\n value: {\n transform: false,\n id: 'Ractive.addStyle'\n }\n });\n\n addCSS(this._cssDef);\n }\n\n recomputeCSS(this);\n applyCSS(true);\n}\n\nfunction buildCSS(data) {\n return styles\n .map(s => `\\n/* ---- extra style ${s.id} */\\n` + (isFunction(s.css) ? s.css(data) : s.css))\n .join('');\n}\n\nexport function hasStyle(id) {\n return !!styles.find(s => s.id === id);\n}\n","import { splitKeypath } from 'shared/keypaths';\n\nexport default function styleGet(keypath, opts) {\n return this._cssModel.joinAll(splitKeypath(keypath)).get(true, opts);\n}\n","export default function isInstance(object) {\n return object && object instanceof this;\n}\n","import add from './prototype/add';\nimport animate from './prototype/animate';\nimport attachChild from './prototype/attachChild';\nimport compute from './prototype/compute';\nimport detach from './prototype/detach';\nimport detachChild from './prototype/detachChild';\nimport find from './prototype/find';\nimport findAll from './prototype/findAll';\nimport findAllComponents from './prototype/findAllComponents';\nimport findComponent from './prototype/findComponent';\nimport findContainer from './prototype/findContainer';\nimport findParent from './prototype/findParent';\nimport fire from './prototype/fire';\nimport get from './prototype/get';\nimport getContext from './prototype/getContext';\nimport insert from './prototype/insert';\nimport link from './prototype/link';\nimport observe from './prototype/observe';\nimport observeOnce from './prototype/observeOnce';\nimport off from './prototype/off';\nimport on from './prototype/on';\nimport once from './prototype/once';\nimport pop from './prototype/pop';\nimport push from './prototype/push';\nimport readLink from './prototype/readLink';\nimport render from './prototype/render';\nimport reset from './prototype/reset';\nimport resetPartial from './prototype/resetPartial';\nimport resetTemplate from './prototype/resetTemplate';\nimport reverse from './prototype/reverse';\nimport set from './prototype/set';\nimport shift from './prototype/shift';\nimport sort from './prototype/sort';\nimport splice from './prototype/splice';\nimport subtract from './prototype/subtract';\nimport teardown from './prototype/teardown';\nimport toggle from './prototype/toggle';\nimport toCSS from './prototype/toCSS';\nimport toHTML from './prototype/toHTML';\nimport toText from './prototype/toText';\nimport transition from './prototype/transition';\nimport unlink from './prototype/unlink';\nimport unrender from './prototype/unrender';\nimport unshift from './prototype/unshift';\nimport update from './prototype/update';\nimport updateModel from './prototype/updateModel';\nimport use from './prototype/use';\n\nconst proto = {\n add,\n animate,\n attachChild,\n compute,\n detach,\n detachChild,\n find,\n findAll,\n findAllComponents,\n findComponent,\n findContainer,\n findParent,\n fire,\n get,\n getContext,\n insert,\n link,\n observe,\n observeOnce,\n off,\n on,\n once,\n pop,\n push,\n readLink,\n render,\n reset,\n resetPartial,\n resetTemplate,\n reverse,\n set,\n shift,\n sort,\n splice,\n subtract,\n teardown,\n toggle,\n toCSS,\n toCss: toCSS,\n toHTML,\n toHtml: toHTML,\n toText,\n transition,\n unlink,\n unrender,\n unshift,\n update,\n updateModel,\n use\n};\n\nexport default proto;\n","export default function use(...plugins) {\n plugins.forEach(p => {\n p({\n proto: this,\n Ractive: this.constructor.Ractive,\n instance: this\n });\n });\n return this;\n}\n","import { splitKeypath } from 'shared/keypaths';\nimport runloop from 'src/global/runloop';\n\nexport default function Ractive$updateModel(keypath, cascade) {\n const promise = runloop.start();\n\n if (!keypath) {\n this.viewmodel.updateFromBindings(true);\n } else {\n this.viewmodel.joinAll(splitKeypath(keypath)).updateFromBindings(cascade !== false);\n }\n\n runloop.end();\n\n return promise;\n}\n","import makeArrayMethod from './shared/makeArrayMethod';\nexport default makeArrayMethod('unshift').path;\n","import hooks from 'src/events/Hook';\nimport { warnIfDebug } from 'utils/log';\nimport { removeFromArray } from 'utils/array';\nimport runloop from 'src/global/runloop';\n\nexport default function Ractive$unrender() {\n if (!this.fragment.rendered) {\n warnIfDebug('ractive.unrender() was called on a Ractive instance that was not rendered');\n return Promise.resolve();\n }\n\n this.unrendering = true;\n const promise = runloop.start();\n\n hooks.unrendering.fire(this);\n\n // If this is a component, and the component isn't marked for destruction,\n // don't detach nodes from the DOM unnecessarily\n const shouldDestroy =\n !this.component ||\n (this.component.anchor || {}).shouldDestroy ||\n this.component.shouldDestroy ||\n this.shouldDestroy;\n this.fragment.unrender(shouldDestroy);\n if (shouldDestroy) this.destroyed = true;\n\n removeFromArray(this.el.__ractive_instances__, this);\n\n hooks.unrender.fire(this);\n\n runloop.end();\n this.unrendering = false;\n\n return promise;\n}\n","import { splitKeypath } from 'shared/keypaths';\nimport runloop from 'src/global/runloop';\n\nexport default function unlink(here) {\n const promise = runloop.start();\n this.viewmodel.joinAll(splitKeypath(here), { lastLink: false }).unlink();\n runloop.end();\n return promise;\n}\n","import runloop from 'src/global/runloop';\nimport Transition from '../../view/items/element/Transition';\nimport { fatal } from 'utils/log';\nimport { isObject } from 'utils/is';\n\nexport default function Ractive$transition(name, node, params) {\n if (node instanceof HTMLElement) {\n // good to go\n } else if (isObject(node)) {\n // omitted, use event node\n params = node;\n }\n\n // if we allow query selector, then it won't work\n // simple params like \"fast\"\n\n // else if ( typeof node === 'string' ) {\n // \t// query selector\n // \tnode = this.find( node )\n // }\n\n node = node || this.event.node;\n\n if (!node || !node._ractive) {\n fatal(`No node was supplied for transition ${name}`);\n }\n\n params = params || {};\n const owner = node._ractive.proxy;\n const transition = new Transition({ owner, up: owner.up, name, params });\n transition.bind();\n\n const promise = runloop.start();\n runloop.registerTransition(transition);\n runloop.end();\n\n promise.then(() => transition.unbind());\n return promise;\n}\n","export default function toText() {\n return this.fragment.toString(false);\n}\n","export default function Ractive$toHTML() {\n return this.fragment.toString(true);\n}\n","import { getCSS } from 'src/global/css';\nimport { keys } from 'utils/object';\n\nexport default function Ractive$toCSS() {\n const cssIds = [this.cssId, ...this.findAllComponents().map(c => c.cssId)];\n const uniqueCssIds = keys(cssIds.reduce((ids, id) => ((ids[id] = true), ids), {}));\n return getCSS(uniqueCssIds);\n}\n","import { badArguments } from 'config/errors';\nimport { gather, set } from 'shared/set';\nimport { isString } from 'utils/is';\n\nexport default function Ractive$toggle(keypath, options) {\n if (!isString(keypath)) {\n throw new TypeError(badArguments);\n }\n\n return set(\n gather(this, keypath, null, options && options.isolated).map(m => [m, !m.get()]),\n options\n );\n}\n","import add from './shared/add';\nimport { isNumber, isObjectType } from 'utils/is';\n\nexport default function Ractive$subtract(keypath, d, options) {\n const num = isNumber(d) ? -d : -1;\n const opts = isObjectType(d) ? d : options;\n return add(this, keypath, num, opts);\n}\n","import makeArrayMethod from './shared/makeArrayMethod';\nexport default makeArrayMethod('splice').path;\n","import makeArrayMethod from './shared/makeArrayMethod';\nexport default makeArrayMethod('sort').path;\n","import makeArrayMethod from './shared/makeArrayMethod';\nexport default makeArrayMethod('shift').path;\n","import { build, set } from 'shared/set';\nimport { isObjectType } from 'utils/is';\n\nexport default function Ractive$set(keypath, value, options) {\n const ractive = this;\n\n const opts = isObjectType(keypath) ? value : options;\n\n return set(build(ractive, keypath, value, opts && opts.isolated), opts);\n}\n","import makeArrayMethod from './shared/makeArrayMethod';\nexport default makeArrayMethod('reverse').path;\n","import { createDocumentFragment } from 'utils/dom';\nimport Fragment from 'src/view/Fragment';\nimport runloop from 'src/global/runloop';\nimport { default as templateConfigurator } from '../config/custom/template';\n\n// TODO should resetTemplate be asynchronous? i.e. should it be a case\n// of outro, update template, intro? I reckon probably not, since that\n// could be achieved with unrender-resetTemplate-render. Also, it should\n// conceptually be similar to resetPartial, which couldn't be async\n\nexport default function Ractive$resetTemplate(template) {\n templateConfigurator.init(null, this, { template });\n\n const transitionsEnabled = this.transitionsEnabled;\n this.transitionsEnabled = false;\n\n // Is this is a component, we need to set the `shouldDestroy`\n // flag, otherwise it will assume by default that a parent node\n // will be detached, and therefore it doesn't need to bother\n // detaching its own nodes\n const component = this.component;\n if (component) component.shouldDestroy = true;\n this.unrender();\n if (component) component.shouldDestroy = false;\n\n const promise = runloop.start();\n\n // remove existing fragment and create new one\n this.fragment.unbind().unrender(true);\n\n this.fragment = new Fragment({\n template: this.template,\n root: this,\n owner: this\n });\n\n const docFrag = createDocumentFragment();\n this.fragment.bind(this.viewmodel).render(docFrag);\n\n // if this is a component, its el may not be valid, so find a\n // target based on the component container\n if (component && !component.external) {\n this.fragment.findParentNode().insertBefore(docFrag, component.findNextNode());\n } else {\n this.el.insertBefore(docFrag, this.anchor);\n }\n\n runloop.end();\n\n this.transitionsEnabled = transitionsEnabled;\n\n return promise;\n}\n","import runloop from 'src/global/runloop';\nimport { PARTIAL, COMPONENT, ELEMENT } from 'config/types';\nimport { isArray } from 'utils/is';\nimport { handleChange } from 'shared/methodCallers';\n\nfunction collect(source, name, attr, dest) {\n source.forEach(item => {\n // queue to rerender if the item is a partial and the current name matches\n if (item.type === PARTIAL && (item.refName === name || item.name === name)) {\n item.inAttribute = attr;\n dest.push(item);\n return; // go no further\n }\n\n // if it has a fragment, process its items\n if (item.fragment) {\n collect(item.fragment.iterations || item.fragment.items, name, attr, dest);\n } else if (isArray(item.items)) {\n // or if it is itself a fragment, process its items\n collect(item.items, name, attr, dest);\n } else if (item.type === COMPONENT && item.instance) {\n // or if it is a component, step in and process its items\n // ...unless the partial is shadowed\n if (item.instance.partials[name]) return;\n collect(item.instance.fragment.items, name, attr, dest);\n }\n\n // if the item is an element, process its attributes too\n if (item.type === ELEMENT) {\n if (isArray(item.attributes)) {\n collect(item.attributes, name, true, dest);\n }\n }\n });\n}\n\nexport default function(name, partial) {\n const collection = [];\n collect(this.fragment.items, name, false, collection);\n\n const promise = runloop.start();\n\n this.partials[name] = partial;\n collection.forEach(handleChange);\n\n runloop.end();\n\n return promise;\n}\n","import runloop from 'src/global/runloop';\nimport config from '../config/config';\nimport hooks from '../../events/Hook';\nimport dataConfigurator from '../config/custom/data';\nimport { isObjectType } from 'utils/is';\n\nconst shouldRerender = ['template', 'partials', 'components', 'decorators', 'events'];\n\nexport default function Ractive$reset(data) {\n data = data || {};\n\n if (!isObjectType(data)) {\n throw new Error('The reset method takes either no arguments, or an object containing new data');\n }\n\n // TEMP need to tidy this up\n data = dataConfigurator.init(this.constructor, this, { data });\n\n const promise = runloop.start();\n\n // If the root object is wrapped, try and use the wrapper's reset value\n const wrapper = this.viewmodel.wrapper;\n if (wrapper && wrapper.reset) {\n if (wrapper.reset(data) === false) {\n // reset was rejected, we need to replace the object\n this.viewmodel.set(data);\n }\n } else {\n this.viewmodel.set(data);\n }\n\n // reset config items and track if need to rerender\n const changes = config.reset(this);\n let rerender;\n\n let i = changes.length;\n while (i--) {\n if (shouldRerender.indexOf(changes[i]) > -1) {\n rerender = true;\n break;\n }\n }\n\n if (rerender) {\n hooks.unrender.fire(this);\n this.fragment.resetTemplate(this.template);\n hooks.render.fire(this);\n hooks.complete.fire(this);\n }\n\n runloop.end();\n\n hooks.reset.fire(this, data);\n\n return promise;\n}\n","import { getElement } from 'utils/dom';\nimport { toArray } from 'utils/array';\nimport { warnIfDebug } from 'utils/log';\nimport render from '../render';\nimport { teardown } from 'shared/methodCallers';\n\nexport default function Ractive$render(target, anchor) {\n if (this.torndown) {\n warnIfDebug('ractive.render() was called on a Ractive instance that was already torn down');\n return Promise.resolve();\n }\n\n target = getElement(target) || this.el;\n\n if (!this.append && target) {\n // Teardown any existing instances *before* trying to set up the new one -\n // avoids certain weird bugs\n const others = target.__ractive_instances__;\n if (others) others.forEach(teardown);\n\n // make sure we are the only occupants\n if (!this.enhance) {\n target.innerHTML = ''; // TODO is this quicker than removeChild? Initial research inconclusive\n }\n }\n\n const occupants = this.enhance ? toArray(target.childNodes) : null;\n const promise = render(this, target, anchor, occupants);\n\n if (occupants) {\n while (occupants.length) target.removeChild(occupants.pop());\n }\n\n return promise;\n}\n","import { doc } from 'config/environment';\nimport { applyCSS } from 'src/global/css';\nimport hooks from 'src/events/Hook';\nimport { getElement } from 'utils/dom';\nimport runloop from 'src/global/runloop';\nimport { createFragment } from './initialise';\n\nexport default function render(ractive, target, anchor, occupants) {\n // set a flag to let any transitions know that this instance is currently rendering\n ractive.rendering = true;\n\n const promise = runloop.start();\n runloop.scheduleTask(() => hooks.render.fire(ractive), true);\n\n if (ractive.fragment.rendered) {\n throw new Error(\n 'You cannot call ractive.render() on an already rendered instance! Call ractive.unrender() first'\n );\n }\n\n if (ractive.destroyed) {\n ractive.destroyed = false;\n ractive.fragment = createFragment(ractive).bind(ractive.viewmodel);\n }\n\n anchor = getElement(anchor) || ractive.anchor;\n\n ractive.el = ractive.target = target;\n ractive.anchor = anchor;\n\n // ensure encapsulated CSS is up-to-date\n if (ractive.cssId) applyCSS();\n\n if (target) {\n (target.__ractive_instances__ || (target.__ractive_instances__ = [])).push(ractive);\n\n if (anchor) {\n const docFrag = doc.createDocumentFragment();\n ractive.fragment.render(docFrag);\n target.insertBefore(docFrag, anchor);\n } else {\n ractive.fragment.render(target, occupants);\n }\n }\n\n runloop.end();\n ractive.rendering = false;\n\n return promise.then(() => {\n if (ractive.torndown) return;\n\n hooks.complete.fire(ractive);\n });\n}\n","import { logIfDebug, warnIfDebug, warnOnceIfDebug } from 'utils/log';\nimport { getElement } from 'utils/dom';\nimport { isArray } from 'utils/is';\nimport config from './config/config';\nimport Fragment from 'src/view/Fragment';\nimport hooks from 'src/events/Hook';\nimport Ractive from '../Ractive';\nimport subscribe from './helpers/subscribe';\n\nexport default function initialise(ractive, userOptions, options) {\n // initialize settable computeds\n const computed = ractive.viewmodel.computed;\n if (computed) {\n for (const k in computed) {\n if (k in ractive.viewmodel.value && computed[k] && !computed[k].isReadonly) {\n computed[k].set(ractive.viewmodel.value[k]);\n }\n }\n }\n\n // init config from Parent and options\n config.init(ractive.constructor, ractive, userOptions);\n\n hooks.config.fire(ractive);\n\n hooks.init.begin(ractive);\n\n const fragment = (ractive.fragment = createFragment(ractive, options));\n if (fragment) fragment.bind(ractive.viewmodel);\n\n hooks.init.end(ractive);\n\n // general config done, set up observers\n subscribe(ractive, userOptions, 'observe');\n\n // call any passed in plugins\n if (isArray(userOptions.use))\n ractive.use.apply(ractive, userOptions.use.filter(p => !p.construct));\n\n if (fragment) {\n // render automatically ( if `el` is specified )\n const el = (ractive.el = ractive.target = getElement(ractive.el || ractive.target));\n if (el && !ractive.component) {\n const promise = ractive.render(el, ractive.append);\n\n if (Ractive.DEBUG_PROMISES) {\n promise.catch(err => {\n warnOnceIfDebug(\n 'Promise debugging is enabled, to help solve errors that happen asynchronously. Some browsers will log unhandled promise rejections, in which case you can safely disable promise debugging:\\n Ractive.DEBUG_PROMISES = false;'\n );\n warnIfDebug('An error happened during rendering', { ractive });\n logIfDebug(err);\n\n throw err;\n });\n }\n }\n }\n}\n\nexport function createFragment(ractive, options = {}) {\n if (ractive.template) {\n const cssIds = [].concat(ractive.constructor._cssIds || [], options.cssIds || []);\n\n return new Fragment({\n owner: ractive,\n template: ractive.template,\n cssIds\n });\n }\n}\n","import { ELEMENT, YIELDER } from 'config/types';\nimport runloop from 'src/global/runloop';\nimport { findMap } from 'utils/array';\nimport { getContext, findParentWithContext } from 'shared/getRactiveContext';\nimport { shuffled, toEscapedString, toString } from 'shared/methodCallers';\nimport createItem from './items/createItem';\nimport processItems from './helpers/processItems';\nimport parseJSON from 'utils/parseJSON';\nimport { createDocumentFragment } from 'utils/dom';\nimport KeyModel from 'src/model/specials/KeyModel';\n\nexport default class Fragment {\n constructor(options) {\n this.owner = options.owner; // The item that owns this fragment - an element, section, partial, or attribute\n\n this.isRoot = !options.owner.up;\n this.parent = this.isRoot ? null : this.owner.up;\n this.ractive = options.ractive || (this.isRoot ? options.owner : this.parent.ractive);\n\n this.componentParent = this.isRoot && this.ractive.component ? this.ractive.component.up : null;\n if (!this.isRoot || this.ractive.delegate) {\n this.delegate = this.owner.containerFragment\n ? this.owner.containerFragment && this.owner.containerFragment.delegate\n : (this.componentParent && this.componentParent.delegate) ||\n (this.parent && this.parent.delegate);\n } else {\n this.delegate = false;\n }\n\n this.context = null;\n this.rendered = false;\n\n // encapsulated styles should be inherited until they get applied by an element\n if ('cssIds' in options) {\n this.cssIds = options.cssIds && options.cssIds.length && options.cssIds;\n } else {\n this.cssIds = this.parent ? this.parent.cssIds : null;\n }\n\n this.dirty = false;\n this.dirtyValue = true; // used for attribute values\n\n this.template = options.template || [];\n this.createItems();\n }\n\n bind(context) {\n this.context = context;\n const len = this.items.length;\n for (let i = 0; i < len; i++) this.items[i].bind();\n this.bound = true;\n\n // in rare cases, a forced resolution (or similar) will cause the\n // fragment to be dirty before it's even finished binding. In those\n // cases we update immediately\n if (this.dirty) this.update();\n\n return this;\n }\n\n bubble() {\n this.dirtyValue = true;\n\n if (!this.dirty) {\n this.dirty = true;\n\n if (this.isRoot) {\n // TODO encapsulate 'is component root, but not overall root' check?\n if (this.ractive.component) {\n this.ractive.component.bubble();\n } else if (this.bound) {\n runloop.addFragment(this);\n }\n } else {\n this.owner.bubble(this.index);\n }\n }\n }\n\n createItems() {\n // this is a hot code path\n const max = this.template.length;\n this.items = [];\n for (let i = 0; i < max; i++) {\n this.items[i] = createItem({\n up: this,\n template: this.template[i],\n index: i\n });\n }\n }\n\n destroyed() {\n const len = this.items.length;\n for (let i = 0; i < len; i++) this.items[i].destroyed();\n if (this.pathModel) this.pathModel.destroyed();\n if (this.rootModel) this.rootModel.destroyed();\n }\n\n detach() {\n const docFrag = createDocumentFragment();\n const xs = this.items;\n const len = xs.length;\n for (let i = 0; i < len; i++) {\n docFrag.appendChild(xs[i].detach());\n }\n return docFrag;\n }\n\n find(selector, options) {\n return findMap(this.items, i => i.find(selector, options));\n }\n\n findAll(selector, options) {\n if (this.items) {\n this.items.forEach(i => i.findAll && i.findAll(selector, options));\n }\n }\n\n findComponent(name, options) {\n return findMap(this.items, i => i.findComponent(name, options));\n }\n\n findAllComponents(name, options) {\n if (this.items) {\n this.items.forEach(i => i.findAllComponents && i.findAllComponents(name, options));\n }\n }\n\n findContext() {\n const base = findParentWithContext(this);\n if (!base || !base.context) return this.ractive.viewmodel;\n else return base.context;\n }\n\n findNextNode(item) {\n // search for the next node going forward\n if (item) {\n let it;\n for (let i = item.index + 1; i < this.items.length; i++) {\n it = this.items[i];\n if (!it || !it.firstNode) continue;\n\n const node = it.firstNode(true);\n if (node) return node;\n }\n }\n\n // if this is the root fragment, and there are no more items,\n // it means we're at the end...\n if (this.isRoot) {\n if (this.ractive.component) {\n return this.ractive.component.up.findNextNode(this.ractive.component);\n }\n\n // TODO possible edge case with other content\n // appended to this.ractive.el?\n return null;\n }\n\n if (this.parent) return this.owner.findNextNode(this); // the argument is in case the parent is a RepeatedFragment\n }\n\n findParentNode() {\n let fragment = this;\n\n do {\n if (fragment.owner.type === ELEMENT) {\n return fragment.owner.node;\n }\n\n if (fragment.isRoot && !fragment.ractive.component) {\n // TODO encapsulate check\n return fragment.ractive.el;\n }\n\n if (fragment.owner.type === YIELDER) {\n fragment = fragment.owner.containerFragment;\n } else {\n fragment = fragment.componentParent || fragment.parent; // TODO ugh\n }\n } while (fragment);\n\n throw new Error('Could not find parent node'); // TODO link to issue tracker\n }\n\n firstNode(skipParent) {\n const node = findMap(this.items, i => i.firstNode(true));\n if (node) return node;\n if (skipParent) return null;\n\n return this.parent.findNextNode(this.owner);\n }\n\n getKey() {\n return this.keyModel || (this.keyModel = new KeyModel(this.key));\n }\n\n getIndex() {\n return this.idxModel || (this.idxModel = new KeyModel(this.index));\n }\n\n rebind(next) {\n this.context = next;\n if (this.rootModel) this.rootModel.context = this.context;\n if (this.pathModel) this.pathModel.context = this.context;\n }\n\n rebound(update) {\n this.items.forEach(x => x.rebound(update));\n if (update) {\n if (this.rootModel) this.rootModel.applyValue(this.context.getKeypath(this.ractive.root));\n if (this.pathModel) this.pathModel.applyValue(this.context.getKeypath());\n }\n }\n\n render(target, occupants) {\n if (this.rendered) throw new Error('Fragment is already rendered!');\n this.rendered = true;\n\n const xs = this.items;\n const len = xs.length;\n for (let i = 0; i < len; i++) {\n xs[i].render(target, occupants);\n }\n }\n\n resetTemplate(template) {\n const wasBound = this.bound;\n const wasRendered = this.rendered;\n\n // TODO ensure transitions are disabled globally during reset\n\n if (wasBound) {\n if (wasRendered) this.unrender(true);\n this.unbind();\n }\n\n this.template = template;\n this.createItems();\n\n if (wasBound) {\n this.bind(this.context);\n\n if (wasRendered) {\n const parentNode = this.findParentNode();\n const anchor = this.findNextNode();\n\n if (anchor) {\n const docFrag = createDocumentFragment();\n this.render(docFrag);\n parentNode.insertBefore(docFrag, anchor);\n } else {\n this.render(parentNode);\n }\n }\n }\n }\n\n shuffled() {\n this.items.forEach(shuffled);\n if (this.rootModel) this.rootModel.applyValue(this.context.getKeypath(this.ractive.root));\n if (this.pathModel) this.pathModel.applyValue(this.context.getKeypath());\n }\n\n toString(escape) {\n return this.items.map(escape ? toEscapedString : toString).join('');\n }\n\n unbind() {\n this.context = null;\n const len = this.items.length;\n for (let i = 0; i < len; i++) this.items[i].unbind();\n this.bound = false;\n\n return this;\n }\n\n unrender(shouldDestroy) {\n const len = this.items.length;\n for (let i = 0; i < len; i++) this.items[i].unrender(shouldDestroy);\n this.rendered = false;\n }\n\n update() {\n if (this.dirty) {\n if (!this.updating) {\n this.dirty = false;\n this.updating = true;\n const len = this.items.length;\n for (let i = 0; i < len; i++) this.items[i].update();\n this.updating = false;\n } else if (this.isRoot) {\n runloop.addFragmentToRoot(this);\n }\n }\n }\n\n valueOf() {\n if (this.items.length === 1) {\n return this.items[0].valueOf();\n }\n\n if (this.dirtyValue) {\n const values = {};\n const source = processItems(this.items, values, this.ractive._guid);\n const parsed = parseJSON(source, values);\n\n this.value = parsed ? parsed.value : this.toString();\n\n this.dirtyValue = false;\n }\n\n return this.value;\n }\n}\nFragment.prototype.getContext = getContext;\nFragment.prototype.getKeypath = getKeypath;\n\nexport function getKeypath(root) {\n const base = findParentWithContext(this);\n let model;\n if (root) {\n if (!this.rootModel) {\n this.rootModel = new KeyModel(\n this.context.getKeypath(this.ractive.root),\n this.context,\n this.ractive.root\n );\n model = this.rootModel;\n } else return this.rootModel;\n } else {\n if (!this.pathModel) {\n this.pathModel = new KeyModel(this.context.getKeypath(), this.context);\n model = this.pathModel;\n } else return this.pathModel;\n }\n\n if (base && base.context) base.getKeypath(root).registerChild(model);\n\n return model;\n}\n","import { TEXT } from 'config/types';\n\n// TODO all this code needs to die\nexport default function processItems(items, values, guid, counter = 0) {\n return items\n .map(item => {\n if (item.type === TEXT) {\n return item.template;\n }\n\n if (item.fragment) {\n if (item.fragment.iterations) {\n return item.fragment.iterations\n .map(fragment => {\n return processItems(fragment.items, values, guid, counter);\n })\n .join('');\n } else {\n return processItems(item.fragment.items, values, guid, counter);\n }\n }\n\n const placeholderId = `${guid}-${counter++}`;\n const model = item.model || item.newModel;\n\n values[placeholderId] = model\n ? model.wrapper\n ? model.wrapperValue\n : model.get()\n : undefined;\n\n return '${' + placeholderId + '}';\n })\n .join('');\n}\n","import {\n ALIAS,\n ANCHOR,\n AWAIT,\n COMMENT,\n COMPONENT,\n DOCTYPE,\n ELEMENT,\n INTERPOLATOR,\n PARTIAL,\n SECTION,\n TRIPLE,\n YIELDER\n} from 'config/types';\nimport { ATTRIBUTE, BINDING_FLAG, DECORATOR, EVENT, TRANSITION } from 'config/types';\nimport Alias from './Alias';\nimport Attribute from './element/Attribute';\nimport BindingFlag from './element/BindingFlag';\nimport Comment from './Comment';\nimport Component from './Component';\nimport Decorator from './element/Decorator';\nimport Doctype from './Doctype';\nimport Form from './element/specials/Form';\nimport Element from './Element';\nimport EventDirective from './shared/EventDirective';\nimport Interpolator from './Interpolator';\nimport Input from './element/specials/Input';\nimport Mapping from './component/Mapping';\nimport Option from './element/specials/Option';\nimport Partial from './Partial';\nimport Section from './Section';\nimport Select from './element/specials/Select';\nimport Textarea from './element/specials/Textarea';\nimport Text from './Text';\nimport Transition from './element/Transition';\nimport Triple from './Triple';\nimport getComponentConstructor from './component/getComponentConstructor';\nimport findElement from './shared/findElement';\nimport { findInstance } from 'shared/registry';\nimport asyncProxy from './asyncProxy';\nimport Await from './Await';\nimport { isString, isFunction } from 'utils/is';\n\nconst constructors = {};\nconstructors[ALIAS] = Alias;\nconstructors[ANCHOR] = Component;\nconstructors[AWAIT] = Await;\nconstructors[DOCTYPE] = Doctype;\nconstructors[INTERPOLATOR] = Interpolator;\nconstructors[PARTIAL] = Partial;\nconstructors[SECTION] = Section;\nconstructors[TRIPLE] = Triple;\nconstructors[YIELDER] = Partial;\n\nconstructors[ATTRIBUTE] = Attribute;\nconstructors[BINDING_FLAG] = BindingFlag;\nconstructors[DECORATOR] = Decorator;\nconstructors[EVENT] = EventDirective;\nconstructors[TRANSITION] = Transition;\nconstructors[COMMENT] = Comment;\n\nconst specialElements = {\n doctype: Doctype,\n form: Form,\n input: Input,\n option: Option,\n select: Select,\n textarea: Textarea\n};\n\nexport default function createItem(options) {\n if (isString(options.template)) {\n return new Text(options);\n }\n\n let ctor;\n let name;\n const type = options.template.t;\n\n if (type === ELEMENT) {\n name = options.template.e;\n\n // could be a macro partial\n ctor = findInstance('partials', options.up.ractive, name);\n if (ctor) {\n ctor = ctor.partials[name];\n if (ctor.styleSet) {\n options.macro = ctor;\n return new Partial(options);\n }\n }\n\n // could be component or element\n ctor = getComponentConstructor(options.up.ractive, name);\n if (ctor) {\n if (isFunction(ctor.then)) {\n return asyncProxy(ctor, options);\n } else if (isFunction(ctor)) {\n return new Component(options, ctor);\n }\n }\n\n ctor = specialElements[name.toLowerCase()] || Element;\n return new ctor(options);\n }\n\n let Item;\n\n // component mappings are a special case of attribute\n if (type === ATTRIBUTE) {\n let el = options.owner;\n if (!el || (el.type !== ANCHOR && el.type !== COMPONENT && el.type !== ELEMENT)) {\n el = findElement(options.up);\n }\n options.element = el;\n\n Item = el.type === COMPONENT || el.type === ANCHOR ? Mapping : Attribute;\n } else {\n Item = constructors[type];\n }\n\n if (!Item) throw new Error(`Unrecognised item type ${type}`);\n\n return new Item(options);\n}\n","import { ATTRIBUTE, CATCH, ELEMENT, ELSE, INTERPOLATOR, SECTION, THEN } from 'src/config/types';\nimport Partial from './Partial';\nimport { assign } from 'utils/object';\nimport { isFunction } from 'utils/is';\n\nfunction extract(tpl, type, name) {\n const p = tpl.f.find(s => s.t === type);\n if (p) {\n if (p.n)\n return [\n {\n t: 19,\n n: 54,\n f: p.f || [],\n z: [{ n: p.n, x: { r: `__await.${name}` } }]\n }\n ];\n else return p.f || [];\n } else return [];\n}\n\nexport default function Await(options) {\n const tpl = options.template;\n\n const success = extract(tpl, THEN, 'value');\n const error = extract(tpl, CATCH, 'error');\n const pending = extract(tpl, SECTION);\n const undef = extract(tpl, ELSE);\n\n const opts = assign({}, options, {\n template: {\n t: ELEMENT,\n m: [\n {\n t: ATTRIBUTE,\n n: 'for',\n f: [{ t: INTERPOLATOR, r: tpl.r, rx: tpl.rx, x: tpl.x }]\n }\n ]\n },\n macro(handle, attrs) {\n handle.aliasLocal('__await');\n\n function update(attrs) {\n if (attrs.for && isFunction(attrs.for.then)) {\n handle.setTemplate(pending);\n\n attrs.for.then(\n v => {\n handle.set('@local.value', v);\n handle.setTemplate(success);\n },\n e => {\n handle.set('@local.error', e);\n handle.setTemplate(error);\n }\n );\n } else if (attrs.for === undefined) {\n handle.setTemplate(undef);\n } else {\n handle.set('@local.value', attrs.for);\n handle.setTemplate(success);\n }\n }\n\n update(attrs);\n\n return {\n update\n };\n }\n });\n\n opts.macro.attributes = ['for'];\n\n return new Partial(opts);\n}\n","import Partial from './Partial';\nimport { ELEMENT } from 'config/types';\nimport { assign } from 'utils/object';\n\nexport default function asyncProxy(promise, options) {\n const partials = options.template.p || {};\n const name = options.template.e;\n\n const opts = assign({}, options, {\n template: { t: ELEMENT, e: name },\n macro(handle) {\n handle.setTemplate(partials['async-loading'] || []);\n promise.then(\n cmp => {\n options.up.ractive.components[name] = cmp;\n if (partials['async-loaded']) {\n handle.partials.component = [options.template];\n handle.setTemplate(partials['async-loaded']);\n } else {\n handle.setTemplate([options.template]);\n }\n },\n err => {\n if (partials['async-failed']) {\n handle.aliasLocal('error', 'error');\n handle.set('@local.error', err);\n handle.setTemplate(partials['async-failed']);\n } else {\n handle.setTemplate([]);\n }\n }\n );\n }\n });\n return new Partial(opts);\n}\n","import { noRegistryFunctionReturn } from 'config/errors';\nimport { warnIfDebug } from 'utils/log';\nimport { findInstance } from 'shared/registry';\nimport { hasOwn } from 'utils/object';\nimport { isFunction, isString } from 'utils/is';\n\n// finds the component constructor in the registry or view hierarchy registries\nexport default function getComponentConstructor(ractive, name) {\n const instance = findInstance('components', ractive, name);\n let Component;\n\n if (instance) {\n Component = instance.components[name];\n\n if (Component && !Component.isInstance) {\n if (Component.default && Component.default.isInstance) Component = Component.default;\n else if (!Component.then && isFunction(Component)) {\n // function option, execute and store for reset\n const fn = Component.bind(instance);\n fn.isOwner = hasOwn(instance.components, name);\n Component = fn();\n\n if (!Component) {\n warnIfDebug(noRegistryFunctionReturn, name, 'component', 'component', {\n ractive\n });\n return;\n }\n\n if (isString(Component)) {\n // allow string lookup\n Component = getComponentConstructor(ractive, Component);\n }\n\n Component._fn = fn;\n instance.components[name] = Component;\n }\n }\n }\n\n return Component;\n}\n","import { createDocumentFragment, matches } from 'utils/dom';\nimport { detachNode } from 'utils/dom';\nimport { decodeCharacterReferences } from 'utils/html';\nimport runloop from 'src/global/runloop';\nimport Mustache from './shared/Mustache';\nimport insertHtml from './triple/insertHtml';\nimport { inAttribute } from './element/Attribute';\n\nexport default class Triple extends Mustache {\n constructor(options) {\n super(options);\n }\n\n detach() {\n const docFrag = createDocumentFragment();\n if (this.nodes) this.nodes.forEach(node => docFrag.appendChild(node));\n return docFrag;\n }\n\n find(selector) {\n const len = this.nodes.length;\n let i;\n\n for (i = 0; i < len; i += 1) {\n const node = this.nodes[i];\n\n if (node.nodeType !== 1) continue;\n\n if (matches(node, selector)) return node;\n\n const queryResult = node.querySelector(selector);\n if (queryResult) return queryResult;\n }\n\n return null;\n }\n\n findAll(selector, options) {\n const { result } = options;\n const len = this.nodes.length;\n let i;\n\n for (i = 0; i < len; i += 1) {\n const node = this.nodes[i];\n\n if (node.nodeType !== 1) continue;\n\n if (matches(node, selector)) result.push(node);\n\n const queryAllResult = node.querySelectorAll(selector);\n if (queryAllResult) {\n result.push.apply(result, queryAllResult);\n }\n }\n }\n\n findComponent() {\n return null;\n }\n\n firstNode() {\n return this.rendered && this.nodes[0];\n }\n\n render(target, occupants, anchor) {\n if (!this.nodes) {\n const html = this.model ? this.model.get() : '';\n this.nodes = insertHtml(html, target);\n }\n\n let nodes = this.nodes;\n\n // progressive enhancement\n if (occupants) {\n let i = -1;\n let next;\n\n // start with the first node that should be rendered\n while (occupants.length && (next = this.nodes[i + 1])) {\n let n;\n // look through the occupants until a matching node is found\n while ((n = occupants.shift())) {\n const t = n.nodeType;\n\n if (\n t === next.nodeType &&\n ((t === 1 && n.outerHTML === next.outerHTML) ||\n ((t === 3 || t === 8) && n.nodeValue === next.nodeValue))\n ) {\n this.nodes.splice(++i, 1, n); // replace the generated node with the existing one\n break;\n } else {\n target.removeChild(n); // remove the non-matching existing node\n }\n }\n }\n\n if (i >= 0) {\n // update the list of remaining nodes to attach, excluding any that were replaced by existing nodes\n nodes = this.nodes.slice(i);\n }\n\n // update the anchor to be the next occupant\n if (occupants.length) anchor = occupants[0];\n }\n\n // attach any remainging nodes to the parent\n if (nodes.length) {\n const frag = createDocumentFragment();\n nodes.forEach(n => frag.appendChild(n));\n\n if (anchor) {\n target.insertBefore(frag, anchor);\n } else {\n target.appendChild(frag);\n }\n }\n\n this.rendered = true;\n }\n\n toString() {\n let value = this.model && this.model.get();\n value = value != null ? '' + value : '';\n\n return inAttribute() ? decodeCharacterReferences(value) : value;\n }\n\n unrender() {\n if (this.nodes)\n this.nodes.forEach(node => {\n // defer detachment until all relevant outros are done\n runloop.detachWhenReady({\n node,\n detach() {\n detachNode(node);\n }\n });\n });\n this.rendered = false;\n this.nodes = null;\n }\n\n update() {\n if (this.rendered && this.dirty) {\n this.dirty = false;\n\n this.unrender();\n this.render(this.up.findParentNode(), null, this.up.findNextNode(this));\n } else {\n // make sure to reset the dirty flag even if not rendered\n this.dirty = false;\n }\n }\n}\n","import { svg } from 'config/namespaces';\nimport { createElement } from 'utils/dom';\n\nconst elementCache = {};\n\nlet ieBug;\nlet ieBlacklist;\n\ntry {\n createElement('table').innerHTML = 'foo';\n} catch (/* istanbul ignore next */ err) {\n ieBug = true;\n\n ieBlacklist = {\n TABLE: ['<table class=\"x\">', '</table>'],\n THEAD: ['<table><thead class=\"x\">', '</thead></table>'],\n TBODY: ['<table><tbody class=\"x\">', '</tbody></table>'],\n TR: ['<table><tr class=\"x\">', '</tr></table>'],\n SELECT: ['<select class=\"x\">', '</select>']\n };\n}\n\nexport default function(html, node) {\n const nodes = [];\n\n // render 0 and false\n if (html == null || html === '') return nodes;\n\n let container;\n let wrapper;\n let selectedOption;\n\n /* istanbul ignore if */\n if (ieBug && (wrapper = ieBlacklist[node.tagName])) {\n container = element('DIV');\n container.innerHTML = wrapper[0] + html + wrapper[1];\n container = container.querySelector('.x');\n\n if (container.tagName === 'SELECT') {\n selectedOption = container.options[container.selectedIndex];\n }\n } else if (node.namespaceURI === svg) {\n container = element('DIV');\n container.innerHTML = '<svg class=\"x\">' + html + '</svg>';\n container = container.querySelector('.x');\n } else if (node.tagName === 'TEXTAREA') {\n container = createElement('div');\n\n if (typeof container.textContent !== 'undefined') {\n container.textContent = html;\n } else {\n container.innerHTML = html;\n }\n } else {\n container = element(node.tagName);\n container.innerHTML = html;\n\n if (container.tagName === 'SELECT') {\n selectedOption = container.options[container.selectedIndex];\n }\n }\n\n let child;\n while ((child = container.firstChild)) {\n nodes.push(child);\n container.removeChild(child);\n }\n\n // This is really annoying. Extracting <option> nodes from the\n // temporary container <select> causes the remaining ones to\n // become selected. So now we have to deselect them. IE8, you\n // amaze me. You really do\n // ...and now Chrome too\n let i;\n if (node.tagName === 'SELECT') {\n i = nodes.length;\n while (i--) {\n if (nodes[i] !== selectedOption) {\n nodes[i].selected = false;\n }\n }\n }\n\n return nodes;\n}\n\nfunction element(tagName) {\n return elementCache[tagName] || (elementCache[tagName] = createElement(tagName));\n}\n","import { win } from 'config/environment';\nimport { addToArray, removeFromArray } from 'utils/array';\nimport { isArray, isObject, isFunction, isNumber, isString } from 'utils/is';\nimport noop from 'utils/noop';\nimport { warnOnceIfDebug } from 'utils/log';\nimport { missingPlugin } from 'config/errors';\nimport { findInViewHierarchy } from 'shared/registry';\nimport { visible } from 'config/visibility';\nimport findElement from '../shared/findElement';\nimport prefix from './transitions/prefix';\nimport createTransitions from './transitions/createTransitions';\nimport { resolveArgs, setupArgsFn } from '../shared/directiveArgs';\nimport { assign, hasOwn, keys } from 'utils/object';\n\nconst getComputedStyle = win && win.getComputedStyle;\nconst resolved = Promise.resolve();\n\nconst names = {\n t0: 'intro-outro',\n t1: 'intro',\n t2: 'outro'\n};\n\nexport default class Transition {\n constructor(options) {\n this.owner = options.owner || options.up.owner || findElement(options.up);\n this.element = this.owner.attributeByName ? this.owner : findElement(options.up);\n this.ractive = this.owner.ractive;\n this.template = options.template;\n this.up = options.up;\n this.options = options;\n this.onComplete = [];\n }\n\n animateStyle(style, value, options) {\n if (arguments.length === 4) {\n throw new Error(\n 't.animateStyle() returns a promise - use .then() instead of passing a callback'\n );\n }\n\n // Special case - page isn't visible. Don't animate anything, because\n // that way you'll never get CSS transitionend events\n if (!visible) {\n this.setStyle(style, value);\n return resolved;\n }\n\n let to;\n\n if (isString(style)) {\n to = {};\n to[style] = value;\n } else {\n to = style;\n\n // shuffle arguments\n options = value;\n }\n\n return new Promise(fulfil => {\n // Edge case - if duration is zero, set style synchronously and complete\n if (!options.duration) {\n this.setStyle(to);\n fulfil();\n return;\n }\n\n // Get a list of the properties we're animating\n const propertyNames = keys(to);\n const changedProperties = [];\n\n // Store the current styles\n const computedStyle = getComputedStyle(this.node);\n\n let i = propertyNames.length;\n while (i--) {\n const prop = propertyNames[i];\n const name = prefix(prop);\n\n const current = computedStyle[prefix(prop)];\n\n // record the starting points\n const init = this.node.style[name];\n if (!(name in this.originals)) this.originals[name] = this.node.style[name];\n this.node.style[name] = to[prop];\n this.targets[name] = this.node.style[name];\n this.node.style[name] = init;\n\n // we need to know if we're actually changing anything\n if (current != to[prop]) {\n // use != instead of !==, so we can compare strings with numbers\n changedProperties.push(name);\n\n // if we happened to prefix, make sure there is a properly prefixed value\n to[name] = to[prop];\n\n // make the computed style explicit, so we can animate where\n // e.g. height='auto'\n this.node.style[name] = current;\n }\n }\n\n // If we're not actually changing anything, the transitionend event\n // will never fire! So we complete early\n if (!changedProperties.length) {\n fulfil();\n return;\n }\n\n createTransitions(this, to, options, changedProperties, fulfil);\n });\n }\n\n bind() {\n const options = this.options;\n const type = options.template && options.template.v;\n if (type) {\n if (type === 't0' || type === 't1') this.element.intro = this;\n if (type === 't0' || type === 't2') this.element.outro = this;\n this.eventName = names[type];\n }\n\n const ractive = this.owner.ractive;\n\n this.name = options.name || options.template.n;\n\n if (options.params) {\n this.params = options.params;\n }\n\n if (isFunction(this.name)) {\n this._fn = this.name;\n this.name = this._fn.name;\n } else {\n this._fn = findInViewHierarchy('transitions', ractive, this.name);\n }\n\n if (!this._fn) {\n warnOnceIfDebug(missingPlugin(this.name, 'transition'), { ractive });\n }\n\n setupArgsFn(this, options.template);\n }\n\n getParams() {\n if (this.params) return this.params;\n\n // get expression args if supplied\n if (this.fn) {\n const values = resolveArgs(this, this.template, this.up).map(model => {\n if (!model) return undefined;\n\n return model.get();\n });\n return this.fn.apply(this.ractive, values);\n }\n }\n\n getStyle(props) {\n const computedStyle = getComputedStyle(this.node);\n\n if (isString(props)) {\n return computedStyle[prefix(props)];\n }\n\n if (!isArray(props)) {\n throw new Error(\n 'Transition$getStyle must be passed a string, or an array of strings representing CSS properties'\n );\n }\n\n const styles = {};\n\n let i = props.length;\n while (i--) {\n const prop = props[i];\n let value = computedStyle[prefix(prop)];\n\n if (value === '0px') value = 0;\n styles[prop] = value;\n }\n\n return styles;\n }\n\n processParams(params, defaults) {\n if (isNumber(params)) {\n params = { duration: params };\n } else if (isString(params)) {\n if (params === 'slow') {\n params = { duration: 600 };\n } else if (params === 'fast') {\n params = { duration: 200 };\n } else {\n params = { duration: 400 };\n }\n } else if (!params) {\n params = {};\n }\n\n return assign({}, defaults, params);\n }\n\n registerCompleteHandler(fn) {\n addToArray(this.onComplete, fn);\n }\n\n setStyle(style, value) {\n if (isString(style)) {\n const name = prefix(style);\n if (!hasOwn(this.originals, name)) this.originals[name] = this.node.style[name];\n this.node.style[name] = value;\n this.targets[name] = this.node.style[name];\n } else {\n let prop;\n for (prop in style) {\n if (hasOwn(style, prop)) {\n this.setStyle(prop, style[prop]);\n }\n }\n }\n\n return this;\n }\n\n shouldFire(type) {\n if (!this.ractive.transitionsEnabled) return false;\n\n // check for noIntro and noOutro cases, which only apply when the owner ractive is rendering and unrendering, respectively\n if (type === 'intro' && this.ractive.rendering && nearestProp('noIntro', this.ractive, true))\n return false;\n if (type === 'outro' && this.ractive.unrendering && nearestProp('noOutro', this.ractive, false))\n return false;\n\n const params = this.getParams(); // this is an array, the params object should be the first member\n // if there's not a parent element, this can't be nested, so roll on\n if (!this.element.parent) return true;\n\n // if there is a local param, it takes precedent\n if (params && params[0] && isObject(params[0]) && 'nested' in params[0]) {\n if (params[0].nested !== false) return true;\n } else {\n // use the nearest instance setting\n // find the nearest instance that actually has a nested setting\n if (nearestProp('nestedTransitions', this.ractive) !== false) return true;\n }\n\n // check to see if this is actually a nested transition\n let el = this.element.parent;\n while (el) {\n if (el[type] && el[type].starting) return false;\n el = el.parent;\n }\n\n return true;\n }\n\n start() {\n const node = (this.node = this.element.node);\n const originals = (this.originals = {}); //= node.getAttribute( 'style' );\n const targets = (this.targets = {});\n\n let completed;\n const args = this.getParams();\n\n // create t.complete() - we don't want this on the prototype,\n // because we don't want `this` silliness when passing it as\n // an argument\n this.complete = noReset => {\n this.starting = false;\n if (completed) {\n return;\n }\n\n this.onComplete.forEach(fn => fn());\n if (!noReset && this.isIntro) {\n for (const k in targets) {\n if (node.style[k] === targets[k]) node.style[k] = originals[k];\n }\n }\n\n this._manager.remove(this);\n\n completed = true;\n };\n\n // If the transition function doesn't exist, abort\n if (!this._fn) {\n this.complete();\n return;\n }\n\n const promise = this._fn.apply(this.ractive, [this].concat(args));\n if (promise) promise.then(this.complete);\n }\n\n toString() {\n return '';\n }\n\n unbind() {\n if (!this.element.attributes.unbinding) {\n const type = this.options && this.options.template && this.options.template.v;\n if (type === 't0' || type === 't1') this.element.intro = null;\n if (type === 't0' || type === 't2') this.element.outro = null;\n }\n }\n\n unregisterCompleteHandler(fn) {\n removeFromArray(this.onComplete, fn);\n }\n}\n\nconst proto = Transition.prototype;\nproto.destroyed = proto.firstNode = proto.rebound = proto.render = proto.unrender = proto.update = noop;\n\nfunction nearestProp(prop, ractive, rendering) {\n let instance = ractive;\n while (instance) {\n if (\n hasOwn(instance, prop) &&\n (rendering === undefined || rendering ? instance.rendering : instance.unrendering)\n )\n return instance[prop];\n instance = instance.component && instance.component.ractive;\n }\n\n return ractive[prop];\n}\n","import { missingPlugin } from 'config/errors';\nimport { isClient } from 'config/environment';\nimport { warnIfDebug, warnOnceIfDebug } from 'utils/log';\nimport { createElement } from 'utils/dom';\nimport interpolate from 'shared/interpolate';\nimport Ticker from 'shared/Ticker';\nimport hyphenate from './hyphenate';\nimport { isFunction, isString } from 'utils/is';\n\nlet createTransitions;\n\nif (!isClient) {\n createTransitions = null;\n} else {\n const testStyle = createElement('div').style;\n const linear = x => x;\n\n const canUseCssTransitions = {};\n const cannotUseCssTransitions = {};\n\n // determine some facts about our environment\n let TRANSITION;\n let TRANSITIONEND;\n let CSS_TRANSITIONS_ENABLED;\n let TRANSITION_DURATION;\n let TRANSITION_PROPERTY;\n let TRANSITION_TIMING_FUNCTION;\n\n if (testStyle.transition !== undefined) {\n TRANSITION = 'transition';\n TRANSITIONEND = 'transitionend';\n CSS_TRANSITIONS_ENABLED = true;\n } else if (testStyle.webkitTransition !== undefined) {\n TRANSITION = 'webkitTransition';\n TRANSITIONEND = 'webkitTransitionEnd';\n CSS_TRANSITIONS_ENABLED = true;\n } else {\n CSS_TRANSITIONS_ENABLED = false;\n }\n\n if (TRANSITION) {\n TRANSITION_DURATION = TRANSITION + 'Duration';\n TRANSITION_PROPERTY = TRANSITION + 'Property';\n TRANSITION_TIMING_FUNCTION = TRANSITION + 'TimingFunction';\n }\n\n createTransitions = function(t, to, options, changedProperties, resolve) {\n // Wait a beat (otherwise the target styles will be applied immediately)\n // TODO use a fastdom-style mechanism?\n setTimeout(() => {\n let jsTransitionsComplete;\n let cssTransitionsComplete;\n let cssTimeout; // eslint-disable-line prefer-const\n\n function transitionDone() {\n clearTimeout(cssTimeout);\n }\n\n function checkComplete() {\n if (jsTransitionsComplete && cssTransitionsComplete) {\n t.unregisterCompleteHandler(transitionDone);\n // will changes to events and fire have an unexpected consequence here?\n t.ractive.fire(t.name + ':end', t.node, t.isIntro);\n resolve();\n }\n }\n\n // this is used to keep track of which elements can use CSS to animate\n // which properties\n const hashPrefix = (t.node.namespaceURI || '') + t.node.tagName;\n\n // need to reset transition properties\n const style = t.node.style;\n const previous = {\n property: style[TRANSITION_PROPERTY],\n timing: style[TRANSITION_TIMING_FUNCTION],\n duration: style[TRANSITION_DURATION]\n };\n\n function transitionEndHandler(event) {\n const index = changedProperties.indexOf(event.propertyName);\n\n if (index !== -1) {\n changedProperties.splice(index, 1);\n }\n\n if (changedProperties.length) {\n // still transitioning...\n return;\n }\n\n clearTimeout(cssTimeout);\n cssTransitionsDone();\n }\n\n function cssTransitionsDone() {\n style[TRANSITION_PROPERTY] = previous.property;\n style[TRANSITION_TIMING_FUNCTION] = previous.duration;\n style[TRANSITION_DURATION] = previous.timing;\n\n t.node.removeEventListener(TRANSITIONEND, transitionEndHandler, false);\n\n cssTransitionsComplete = true;\n checkComplete();\n }\n\n t.node.addEventListener(TRANSITIONEND, transitionEndHandler, false);\n\n // safety net in case transitionend never fires\n cssTimeout = setTimeout(() => {\n changedProperties = [];\n cssTransitionsDone();\n }, options.duration + (options.delay || 0) + 50);\n t.registerCompleteHandler(transitionDone);\n\n style[TRANSITION_PROPERTY] = changedProperties.join(',');\n const easingName = hyphenate(options.easing || 'linear');\n style[TRANSITION_TIMING_FUNCTION] = easingName;\n const cssTiming = style[TRANSITION_TIMING_FUNCTION] === easingName;\n style[TRANSITION_DURATION] = options.duration / 1000 + 's';\n\n setTimeout(() => {\n let i = changedProperties.length;\n let hash;\n let originalValue = null;\n let index;\n const propertiesToTransitionInJs = [];\n let prop;\n let suffix;\n let interpolator;\n\n while (i--) {\n prop = changedProperties[i];\n hash = hashPrefix + prop;\n\n if (cssTiming && CSS_TRANSITIONS_ENABLED && !cannotUseCssTransitions[hash]) {\n const initial = style[prop];\n style[prop] = to[prop];\n\n // If we're not sure if CSS transitions are supported for\n // this tag/property combo, find out now\n if (!(hash in canUseCssTransitions)) {\n originalValue = t.getStyle(prop);\n\n // if this property is transitionable in this browser,\n // the current style will be different from the target style\n canUseCssTransitions[hash] = t.getStyle(prop) != to[prop];\n cannotUseCssTransitions[hash] = !canUseCssTransitions[hash];\n\n // Reset, if we're going to use timers after all\n if (cannotUseCssTransitions[hash]) {\n style[prop] = initial;\n }\n }\n }\n\n if (!cssTiming || !CSS_TRANSITIONS_ENABLED || cannotUseCssTransitions[hash]) {\n // we need to fall back to timer-based stuff\n if (originalValue === null) originalValue = t.getStyle(prop);\n\n // need to remove this from changedProperties, otherwise transitionEndHandler\n // will get confused\n index = changedProperties.indexOf(prop);\n if (index === -1) {\n warnIfDebug(\n 'Something very strange happened with transitions. Please raise an issue at https://github.com/ractivejs/ractive/issues - thanks!',\n { node: t.node }\n );\n } else {\n changedProperties.splice(index, 1);\n }\n\n // TODO Determine whether this property is animatable at all\n\n suffix = /[^\\d]*$/.exec(originalValue)[0];\n interpolator = interpolate(parseFloat(originalValue), parseFloat(to[prop]));\n\n // ...then kick off a timer-based transition\n if (interpolator) {\n propertiesToTransitionInJs.push({\n name: prop,\n interpolator,\n suffix\n });\n } else {\n style[prop] = to[prop];\n }\n\n originalValue = null;\n }\n }\n\n // javascript transitions\n if (propertiesToTransitionInJs.length) {\n let easing;\n\n if (isString(options.easing)) {\n easing = t.ractive.easing[options.easing];\n\n if (!easing) {\n warnOnceIfDebug(missingPlugin(options.easing, 'easing'));\n easing = linear;\n }\n } else if (isFunction(options.easing)) {\n easing = options.easing;\n } else {\n easing = linear;\n }\n\n new Ticker({\n duration: options.duration,\n easing,\n step(pos) {\n let i = propertiesToTransitionInJs.length;\n while (i--) {\n const prop = propertiesToTransitionInJs[i];\n style[prop.name] = prop.interpolator(pos) + prop.suffix;\n }\n },\n complete() {\n jsTransitionsComplete = true;\n checkComplete();\n }\n });\n } else {\n jsTransitionsComplete = true;\n }\n\n if (changedProperties.length) {\n style[TRANSITION_PROPERTY] = changedProperties.join(',');\n } else {\n style[TRANSITION_PROPERTY] = 'none';\n\n // We need to cancel the transitionEndHandler, and deal with\n // the fact that it will never fire\n t.node.removeEventListener(TRANSITIONEND, transitionEndHandler, false);\n cssTransitionsComplete = true;\n checkComplete();\n }\n }, 0);\n }, options.delay || 0);\n };\n}\n\nexport default createTransitions;\n","import { vendors } from 'config/environment';\n\nconst vendorPattern = new RegExp('^(?:' + vendors.join('|') + ')([A-Z])');\n\nexport default function(str) {\n /* istanbul ignore next */\n if (!str) return ''; // edge case\n\n /* istanbul ignore next */\n if (vendorPattern.test(str)) str = '-' + str;\n\n return str.replace(/[A-Z]/g, match => '-' + match.toLowerCase());\n}\n","import { isClient, vendors } from 'config/environment';\nimport { createElement } from 'utils/dom';\nimport hyphenateCamel from 'utils/hyphenateCamel';\n\nlet prefix;\n\n/* istanbul ignore next */\nif (!isClient) {\n prefix = null;\n} else {\n const prefixCache = {};\n const testStyle = createElement('div').style;\n\n // technically this also normalizes on hyphenated styles as well\n prefix = function(prop) {\n if (!prefixCache[prop]) {\n const name = hyphenateCamel(prop);\n\n if (testStyle[prop] !== undefined) {\n prefixCache[prop] = name;\n } else {\n /* istanbul ignore next */\n // test vendors...\n let i = vendors.length;\n while (i--) {\n const vendor = `-${vendors[i]}-${name}`;\n if (testStyle[vendor] !== undefined) {\n prefixCache[prop] = vendor;\n break;\n }\n }\n }\n }\n\n return prefixCache[prop];\n };\n}\n\nexport default prefix;\n","import { win, doc, vendors } from './environment';\n\nexport let visible;\nlet hidden = 'hidden';\n\nif (doc) {\n let prefix;\n\n /* istanbul ignore next */\n if (hidden in doc) {\n prefix = '';\n } else {\n let i = vendors.length;\n while (i--) {\n const vendor = vendors[i];\n hidden = vendor + 'Hidden';\n\n if (hidden in doc) {\n prefix = vendor;\n break;\n }\n }\n }\n\n /* istanbul ignore else */\n if (prefix !== undefined) {\n doc.addEventListener(prefix + 'visibilitychange', onChange);\n onChange();\n } else {\n // gah, we're in an old browser\n if ('onfocusout' in doc) {\n doc.addEventListener('focusout', onHide);\n doc.addEventListener('focusin', onShow);\n } else {\n win.addEventListener('pagehide', onHide);\n win.addEventListener('blur', onHide);\n\n win.addEventListener('pageshow', onShow);\n win.addEventListener('focus', onShow);\n }\n\n visible = true; // until proven otherwise. Not ideal but hey\n }\n}\n\nfunction onChange() {\n visible = !doc[hidden];\n}\n\n/* istanbul ignore next */\nfunction onHide() {\n visible = false;\n}\n\n/* istanbul ignore next */\nfunction onShow() {\n visible = true;\n}\n","import { TEXT } from 'config/types';\nimport { escapeHtml } from 'utils/html';\nimport { detachNode } from 'utils/dom';\nimport noop from 'utils/noop';\nimport Item from './shared/Item';\nimport progressiveText from './shared/progressiveText';\nimport { inAttributes } from './element/ConditionalAttribute';\n\nexport default class Text extends Item {\n constructor(options) {\n super(options);\n this.type = TEXT;\n }\n\n detach() {\n return detachNode(this.node);\n }\n\n firstNode() {\n return this.node;\n }\n\n render(target, occupants) {\n if (inAttributes()) return;\n this.rendered = true;\n\n progressiveText(this, target, occupants, this.template);\n }\n\n toString(escape) {\n return escape ? escapeHtml(this.template) : this.template;\n }\n\n unrender(shouldDestroy) {\n if (this.rendered && shouldDestroy) this.detach();\n this.rendered = false;\n }\n\n valueOf() {\n return this.template;\n }\n}\n\nconst proto = Text.prototype;\nproto.bind = proto.unbind = proto.update = noop;\n","import { ATTRIBUTE } from 'config/types';\nimport runloop from 'src/global/runloop';\nimport Input from './Input';\nimport { isBindable } from '../binding/selectBinding';\nimport createItem from '../../createItem';\nimport Fragment from '../../../Fragment';\n\nexport default class Textarea extends Input {\n constructor(options) {\n const template = options.template;\n\n options.deferContent = true;\n\n super(options);\n\n // check for single interpolator binding\n if (!this.attributeByName.value) {\n if (template.f && isBindable({ template })) {\n (this.attributes || (this.attributes = [])).push(\n createItem({\n owner: this,\n template: { t: ATTRIBUTE, f: template.f, n: 'value' },\n up: this.up\n })\n );\n } else {\n this.fragment = new Fragment({\n owner: this,\n cssIds: null,\n template: template.f\n });\n }\n }\n }\n\n bubble() {\n if (!this.dirty) {\n this.dirty = true;\n\n if (this.rendered && !this.binding && this.fragment) {\n runloop.scheduleTask(() => {\n this.dirty = false;\n this.node.value = this.fragment.toString();\n });\n }\n\n this.up.bubble(); // default behaviour\n }\n }\n}\n","import { toArray } from 'utils/array';\nimport getSelectedOptions from 'utils/getSelectedOptions';\nimport Element from '../../Element';\nimport { isArray, isFunction } from 'utils/is';\n\nexport default class Select extends Element {\n constructor(options) {\n super(options);\n this.options = [];\n }\n\n foundNode(node) {\n if (this.binding) {\n const selectedOptions = getSelectedOptions(node);\n\n if (selectedOptions.length > 0) {\n this.selectedOptions = selectedOptions;\n }\n }\n }\n\n render(target, occupants) {\n super.render(target, occupants);\n this.sync();\n\n const node = this.node;\n\n let i = node.options.length;\n while (i--) {\n node.options[i].defaultSelected = node.options[i].selected;\n }\n\n this.rendered = true;\n }\n\n sync() {\n const selectNode = this.node;\n\n if (!selectNode) return;\n\n const options = toArray(selectNode.options);\n\n if (this.selectedOptions) {\n options.forEach(o => {\n if (this.selectedOptions.indexOf(o) >= 0) o.selected = true;\n else o.selected = false;\n });\n this.binding.setFromNode(selectNode);\n delete this.selectedOptions;\n return;\n }\n\n const selectValue = this.getAttribute('value');\n const isMultiple = this.getAttribute('multiple');\n const array = isMultiple && isArray(selectValue);\n\n // If the <select> has a specified value, that should override\n // these options\n if (selectValue !== undefined) {\n let optionWasSelected;\n\n options.forEach(o => {\n const optionValue = o._ractive ? o._ractive.value : o.value;\n const shouldSelect = isMultiple\n ? array && this.valueContains(selectValue, optionValue)\n : this.compare(selectValue, optionValue);\n\n if (shouldSelect) {\n optionWasSelected = true;\n }\n\n o.selected = shouldSelect;\n });\n\n if (!optionWasSelected && !isMultiple) {\n if (this.binding) {\n this.binding.forceUpdate();\n }\n }\n } else if (this.binding && this.binding.forceUpdate) {\n // Otherwise the value should be initialised according to which\n // <option> element is selected, if twoway binding is in effect\n this.binding.forceUpdate();\n }\n }\n valueContains(selectValue, optionValue) {\n let i = selectValue.length;\n while (i--) {\n if (this.compare(optionValue, selectValue[i])) return true;\n }\n }\n compare(optionValue, selectValue) {\n const comparator = this.getAttribute('value-comparator');\n if (comparator) {\n if (isFunction(comparator)) {\n return comparator(selectValue, optionValue);\n }\n if (selectValue && optionValue) {\n return selectValue[comparator] == optionValue[comparator];\n }\n }\n return selectValue == optionValue;\n }\n update() {\n const dirty = this.dirty;\n super.update();\n if (dirty) {\n this.sync();\n }\n }\n}\n","import {\n SECTION_EACH,\n SECTION_IF,\n SECTION_IF_WITH,\n SECTION_UNLESS,\n SECTION_WITH\n} from 'config/types';\nimport { createDocumentFragment } from 'utils/dom';\nimport { isArray, isObject, isObjectLike } from 'utils/is';\nimport { keep } from 'shared/set';\nimport runloop from 'src/global/runloop';\nimport Fragment from '../Fragment';\nimport RepeatedFragment from '../RepeatedFragment';\nimport { MustacheContainer } from './shared/Mustache';\nimport { keys } from 'utils/object';\n\nfunction isEmpty(value) {\n return (\n !value ||\n (isArray(value) && value.length === 0) ||\n (isObject(value) && keys(value).length === 0)\n );\n}\n\nfunction getType(value, hasIndexRef) {\n if (hasIndexRef || isArray(value)) return SECTION_EACH;\n if (isObjectLike(value)) return SECTION_IF_WITH;\n if (value === undefined) return null;\n return SECTION_IF;\n}\n\nexport default class Section extends MustacheContainer {\n constructor(options) {\n super(options);\n\n this.sectionType = options.template.n || null;\n this.templateSectionType = this.sectionType;\n this.subordinate = options.template.l === 1;\n this.fragment = null;\n }\n\n bind() {\n super.bind();\n\n if (this.subordinate) {\n this.sibling = this.up.items[this.up.items.indexOf(this) - 1];\n this.sibling.nextSibling = this;\n }\n\n // if we managed to bind, we need to create children\n if (this.model) {\n this.dirty = true;\n this.update();\n } else if (\n this.sectionType &&\n this.sectionType === SECTION_UNLESS &&\n (!this.sibling || !this.sibling.isTruthy())\n ) {\n this.fragment = new Fragment({\n owner: this,\n template: this.template.f\n }).bind();\n }\n }\n\n detach() {\n const frag = this.fragment || this.detached;\n return frag ? frag.detach() : super.detach();\n }\n\n isTruthy() {\n if (this.subordinate && this.sibling.isTruthy()) return true;\n const value = !this.model ? undefined : this.model.isRoot ? this.model.value : this.model.get();\n return !!value && (this.templateSectionType === SECTION_IF_WITH || !isEmpty(value));\n }\n\n rebind(next, previous, safe) {\n if (super.rebind(next, previous, safe)) {\n if (this.fragment && this.sectionType !== SECTION_IF && this.sectionType !== SECTION_UNLESS) {\n this.fragment.rebind(next);\n }\n }\n }\n\n rebound(update) {\n if (this.model) {\n if (this.model.rebound) this.model.rebound(update);\n else {\n super.unbind();\n super.bind();\n if (\n this.sectionType === SECTION_WITH ||\n this.sectionType === SECTION_IF_WITH ||\n this.sectionType === SECTION_EACH\n ) {\n if (this.fragment) this.fragment.rebind(this.model);\n }\n\n if (update) this.bubble();\n }\n }\n if (this.fragment) this.fragment.rebound(update);\n }\n\n render(target, occupants) {\n this.rendered = true;\n if (this.fragment) this.fragment.render(target, occupants);\n }\n\n shuffle(newIndices) {\n if (this.fragment && this.sectionType === SECTION_EACH) {\n this.fragment.shuffle(newIndices);\n }\n }\n\n unbind() {\n super.unbind();\n if (this.fragment) this.fragment.unbind();\n }\n\n unrender(shouldDestroy) {\n if (this.rendered && this.fragment) this.fragment.unrender(shouldDestroy);\n this.rendered = false;\n }\n\n update() {\n if (!this.dirty) return;\n\n if (this.fragment && this.sectionType !== SECTION_IF && this.sectionType !== SECTION_UNLESS) {\n this.fragment.context = this.model;\n }\n\n if (!this.model && this.sectionType !== SECTION_UNLESS) return;\n\n this.dirty = false;\n\n const value = !this.model ? undefined : this.model.isRoot ? this.model.value : this.model.get();\n const siblingFalsey = !this.subordinate || !this.sibling.isTruthy();\n const lastType = this.sectionType;\n\n // watch for switching section types\n if (this.sectionType === null || this.templateSectionType === null)\n this.sectionType = getType(value, this.template.i);\n if (lastType && lastType !== this.sectionType && this.fragment) {\n if (this.rendered) {\n this.fragment.unbind().unrender(true);\n }\n\n this.fragment = null;\n }\n\n let newFragment;\n\n const fragmentShouldExist =\n this.sectionType === SECTION_EACH || // each always gets a fragment, which may have no iterations\n this.sectionType === SECTION_WITH || // with (partial context) always gets a fragment\n (siblingFalsey && (this.sectionType === SECTION_UNLESS ? !this.isTruthy() : this.isTruthy())); // if, unless, and if-with depend on siblings and the condition\n\n if (fragmentShouldExist) {\n if (!this.fragment) this.fragment = this.detached;\n\n if (this.fragment) {\n // check for detached fragment\n if (this.detached) {\n attach(this, this.fragment);\n this.detached = false;\n this.rendered = true;\n }\n\n if (!this.fragment.bound) this.fragment.bind(this.model);\n this.fragment.update();\n } else {\n if (this.sectionType === SECTION_EACH) {\n newFragment = new RepeatedFragment({\n owner: this,\n template: this.template.f,\n indexRef: this.template.i\n }).bind(this.model);\n } else {\n // only with and if-with provide context - if and unless do not\n const context =\n this.sectionType !== SECTION_IF && this.sectionType !== SECTION_UNLESS\n ? this.model\n : null;\n newFragment = new Fragment({\n owner: this,\n template: this.template.f\n }).bind(context);\n }\n }\n } else {\n if (this.fragment && this.rendered) {\n if (keep !== true) {\n this.fragment.unbind().unrender(true);\n } else {\n this.unrender(false);\n this.detached = this.fragment;\n runloop.promise().then(() => {\n if (this.detached) this.detach();\n });\n }\n } else if (this.fragment) {\n this.fragment.unbind();\n }\n\n this.fragment = null;\n }\n\n if (newFragment) {\n if (this.rendered) {\n attach(this, newFragment);\n }\n\n this.fragment = newFragment;\n }\n\n if (this.nextSibling) {\n this.nextSibling.dirty = true;\n this.nextSibling.update();\n }\n }\n}\n\nfunction attach(section, fragment) {\n const anchor = section.up.findNextNode(section);\n\n if (anchor) {\n const docFrag = createDocumentFragment();\n fragment.render(docFrag);\n\n anchor.parentNode.insertBefore(docFrag, anchor);\n } else {\n fragment.render(section.up.findParentNode());\n }\n}\n","import { createDocumentFragment } from 'utils/dom';\nimport { isArray, isObject, isObjectType } from 'utils/is';\nimport { findMap, buildNewIndices } from 'utils/array';\nimport { toEscapedString, toString, shuffled } from 'shared/methodCallers';\nimport Fragment, { getKeypath } from './Fragment';\nimport { ELEMENT } from 'config/types';\nimport { getContext } from 'shared/getRactiveContext';\nimport { keys } from 'utils/object';\nimport KeyModel from 'src/model/specials/KeyModel';\nimport { splitKeypath } from '../shared/keypaths';\nimport resolve from './resolvers/resolve';\n\nconst keypathString = /^\"(\\\\\"|[^\"])+\"$/;\n\nexport default class RepeatedFragment {\n constructor(options) {\n this.parent = options.owner.up;\n\n // bit of a hack, so reference resolution works without another\n // layer of indirection\n this.up = this;\n this.owner = options.owner;\n this.ractive = this.parent.ractive;\n this.delegate =\n this.ractive.delegate !== false && (this.parent.delegate || findDelegate(this.parent));\n // delegation disabled by directive\n if (this.delegate && this.delegate.delegate === false) this.delegate = false;\n // let the element know it's a delegate handler\n if (this.delegate) this.delegate.delegate = this.delegate;\n\n // encapsulated styles should be inherited until they get applied by an element\n this.cssIds = 'cssIds' in options ? options.cssIds : this.parent ? this.parent.cssIds : null;\n\n this.context = null;\n this.rendered = false;\n this.iterations = [];\n\n this.template = options.template;\n\n this.indexRef = options.indexRef;\n this.keyRef = options.keyRef;\n\n this.pendingNewIndices = null;\n this.previousIterations = null;\n\n // track array versus object so updates of type rest\n this.isArray = false;\n }\n\n bind(context) {\n this.context = context;\n this.bound = true;\n const value = context.get();\n\n const aliases = (this.aliases = this.owner.template.z && this.owner.template.z.slice());\n\n const shuffler = aliases && aliases.find(a => a.n === 'shuffle');\n if (shuffler && shuffler.x && shuffler.x.x) {\n if (shuffler.x.x.s === 'true') this.shuffler = true;\n else if (keypathString.test(shuffler.x.x.s))\n this.shuffler = splitKeypath(shuffler.x.x.s.slice(1, -1));\n }\n\n if (this.shuffler) this.values = shuffleValues(this, this.shuffler);\n\n if (this.source) this.source.model.unbind(this.source);\n const source = context.isComputed && aliases && aliases.find(a => a.n === 'source');\n if (source && source.x && source.x.r) {\n const model = resolve(this, source.x);\n this.source = {\n handleChange() {},\n rebind(next) {\n this.model.unregister(this);\n this.model = next;\n next.register(this);\n }\n };\n this.source.model = model;\n model.register(this.source);\n }\n\n // {{#each array}}...\n if ((this.isArray = isArray(value))) {\n // we can't use map, because of sparse arrays\n this.iterations = [];\n const max = (this.length = value.length);\n for (let i = 0; i < max; i += 1) {\n this.iterations[i] = this.createIteration(i, i);\n }\n } else if (isObject(value)) {\n // {{#each object}}...\n this.isArray = false;\n\n // TODO this is a dreadful hack. There must be a neater way\n if (this.indexRef) {\n const refs = this.indexRef.split(',');\n this.keyRef = refs[0];\n this.indexRef = refs[1];\n }\n\n const ks = keys(value);\n this.length = ks.length;\n\n this.iterations = ks.map((key, index) => {\n return this.createIteration(key, index);\n });\n }\n\n return this;\n }\n\n bubble(index) {\n if (!this.bubbled) this.bubbled = [];\n this.bubbled.push(index);\n\n if (!this.rebounding) this.owner.bubble();\n }\n\n createIteration(key, index) {\n const fragment = new Fragment({\n owner: this,\n template: this.template\n });\n\n fragment.isIteration = true;\n fragment.delegate = this.delegate;\n\n if (this.aliases) fragment.aliases = {};\n swizzleFragment(this, fragment, key, index);\n\n return fragment.bind(fragment.context);\n }\n\n destroyed() {\n const len = this.iterations.length;\n for (let i = 0; i < len; i++) this.iterations[i].destroyed();\n if (this.pathModel) this.pathModel.destroyed();\n if (this.rootModel) this.rootModel.destroyed();\n }\n\n detach() {\n const docFrag = createDocumentFragment();\n this.iterations.forEach(fragment => docFrag.appendChild(fragment.detach()));\n return docFrag;\n }\n\n find(selector, options) {\n return findMap(this.iterations, i => i.find(selector, options));\n }\n\n findAll(selector, options) {\n return this.iterations.forEach(i => i.findAll(selector, options));\n }\n\n findAllComponents(name, options) {\n return this.iterations.forEach(i => i.findAllComponents(name, options));\n }\n\n findComponent(name, options) {\n return findMap(this.iterations, i => i.findComponent(name, options));\n }\n\n findContext() {\n return this.context;\n }\n\n findNextNode(iteration) {\n if (iteration.index < this.iterations.length - 1) {\n for (let i = iteration.index + 1; i < this.iterations.length; i++) {\n const node = this.iterations[i].firstNode(true);\n if (node) return node;\n }\n }\n\n return this.owner.findNextNode();\n }\n\n firstNode(skipParent) {\n return this.iterations[0] ? this.iterations[0].firstNode(skipParent) : null;\n }\n\n getLast() {\n return this.lastModel || (this.lastModel = new KeyModel(this.length - 1));\n }\n\n rebind(next) {\n this.context = next;\n if (this.source) return;\n this.iterations.forEach(fragment => {\n swizzleFragment(this, fragment, fragment.key, fragment.index);\n });\n }\n\n rebound(update) {\n this.context = this.owner.model;\n this.iterations.forEach((f, i) => {\n f.context = contextFor(this, f, i);\n f.rebound(update);\n });\n }\n\n render(target, occupants) {\n const xs = this.iterations;\n if (xs) {\n const len = xs.length;\n for (let i = 0; i < len; i++) {\n xs[i].render(target, occupants);\n }\n }\n\n this.rendered = true;\n }\n\n shuffle(newIndices, merge) {\n if (!this.pendingNewIndices) this.previousIterations = this.iterations.slice();\n\n if (!this.pendingNewIndices) this.pendingNewIndices = [];\n\n this.pendingNewIndices.push(newIndices);\n\n const iterations = [];\n\n newIndices.forEach((newIndex, oldIndex) => {\n if (newIndex === -1) return;\n\n const fragment = this.iterations[oldIndex];\n iterations[newIndex] = fragment;\n\n if (newIndex !== oldIndex && fragment) {\n fragment.dirty = true;\n if (merge) fragment.shouldRebind = 1;\n }\n });\n\n this.iterations = iterations;\n\n // if merging, we're in the midst of an update already\n if (!merge) this.bubble();\n }\n\n shuffled() {\n this.iterations.forEach(shuffled);\n }\n\n toString(escape) {\n return this.iterations ? this.iterations.map(escape ? toEscapedString : toString).join('') : '';\n }\n\n unbind() {\n this.bound = false;\n if (this.source) this.source.model.unregister(this.source);\n const iterations = this.pendingNewIndices ? this.previousIterations : this.iterations;\n const len = iterations.length;\n for (let i = 0; i < len; i++) iterations[i].unbind();\n return this;\n }\n\n unrender(shouldDestroy) {\n let len = this.iterations.length;\n for (let i = 0; i < len; i++) this.iterations[i].unrender(shouldDestroy);\n if (this.pendingNewIndices && this.previousIterations) {\n len = this.previousIterations.length;\n for (let i = 0; i < len; i++) this.previousIterations[i].unrender(shouldDestroy);\n }\n this.rendered = false;\n }\n\n update() {\n if (this.pendingNewIndices) {\n this.bubbled.length = 0;\n this.updatePostShuffle();\n return;\n }\n\n if (this.updating) return;\n this.updating = true;\n\n if (this.shuffler) {\n const values = shuffleValues(this, this.shuffler);\n this.shuffle(buildNewIndices(this.values, values), true);\n this.updatePostShuffle();\n } else {\n let len = this.iterations.length;\n for (let i = 0; i < len; i++) {\n const f = this.iterations[i];\n f && f.idxModel && f.idxModel.applyValue(i);\n }\n\n const value = this.context.get();\n const wasArray = this.isArray;\n\n let toRemove;\n let oldKeys;\n let reset = true;\n let i;\n\n if ((this.isArray = isArray(value))) {\n // if there's a source to map back to, make sure everything stays bound correctly\n if (this.source) {\n this.rebounding = 1;\n const source = this.source.model.get();\n this.iterations.forEach((f, c) => {\n if (c < value.length && f.lastValue !== value[c] && ~(i = source.indexOf(value[c]))) {\n swizzleFragment(this, f, c, c);\n f.rebound(true);\n }\n });\n this.rebounding = 0;\n }\n\n if (wasArray) {\n reset = false;\n if (this.iterations.length > value.length) {\n toRemove = this.iterations.splice(value.length);\n }\n }\n } else if (isObject(value) && !wasArray) {\n reset = false;\n toRemove = [];\n oldKeys = {};\n i = this.iterations.length;\n\n while (i--) {\n const fragment = this.iterations[i];\n if (fragment.key in value) {\n oldKeys[fragment.key] = true;\n } else {\n this.iterations.splice(i, 1);\n toRemove.push(fragment);\n }\n }\n }\n\n const newLength = isArray(value) ? value.length : isObject(value) ? keys(value).length : 0;\n this.length = newLength;\n this.updateLast();\n\n if (reset) {\n toRemove = this.iterations;\n this.iterations = [];\n }\n\n if (toRemove) {\n len = toRemove.length;\n for (let i = 0; i < len; i++) toRemove[i].unbind().unrender(true);\n }\n\n // update the remaining ones\n if (!reset && this.isArray && this.bubbled && this.bubbled.length) {\n const bubbled = this.bubbled;\n this.bubbled = [];\n len = bubbled.length;\n for (let i = 0; i < len; i++)\n this.iterations[bubbled[i]] && this.iterations[bubbled[i]].update();\n } else {\n len = this.iterations.length;\n for (let i = 0; i < len; i++) this.iterations[i].update();\n }\n\n // add new iterations\n let docFrag;\n let fragment;\n\n if (newLength > this.iterations.length) {\n docFrag = this.rendered ? createDocumentFragment() : null;\n i = this.iterations.length;\n\n if (isArray(value)) {\n while (i < value.length) {\n fragment = this.createIteration(i, i);\n\n this.iterations.push(fragment);\n if (this.rendered) fragment.render(docFrag);\n\n i += 1;\n }\n } else if (isObject(value)) {\n // TODO this is a dreadful hack. There must be a neater way\n if (this.indexRef && !this.keyRef) {\n const refs = this.indexRef.split(',');\n this.keyRef = refs[0];\n this.indexRef = refs[1];\n }\n\n keys(value).forEach(key => {\n if (!oldKeys || !(key in oldKeys)) {\n fragment = this.createIteration(key, i);\n\n this.iterations.push(fragment);\n if (this.rendered) fragment.render(docFrag);\n\n i += 1;\n }\n });\n }\n\n if (this.rendered) {\n const parentNode = this.parent.findParentNode();\n const anchor = this.parent.findNextNode(this.owner);\n\n parentNode.insertBefore(docFrag, anchor);\n }\n }\n }\n\n this.updating = false;\n }\n\n updateLast() {\n if (this.lastModel) this.lastModel.applyValue(this.length - 1);\n }\n\n updatePostShuffle() {\n const newIndices = this.pendingNewIndices[0];\n const parentNode = this.rendered ? this.parent.findParentNode() : null;\n const nextNode = parentNode && this.owner.findNextNode();\n const docFrag = parentNode ? createDocumentFragment() : null;\n\n // map first shuffle through\n this.pendingNewIndices.slice(1).forEach(indices => {\n newIndices.forEach((newIndex, oldIndex) => {\n newIndices[oldIndex] = indices[newIndex];\n });\n });\n\n const len = (this.length = this.context.get().length);\n const prev = this.previousIterations;\n const iters = this.iterations;\n const value = this.context.get();\n const stash = {};\n let idx, dest, pos, next, anchor, rebound;\n\n const map = new Array(newIndices.length);\n newIndices.forEach((e, i) => (map[e] = i));\n\n this.updateLast();\n\n idx = pos = 0;\n while (idx < len) {\n dest = newIndices[pos];\n next = null;\n rebound = false;\n\n if (dest === -1) {\n // drop it like it's hot\n prev[pos].unbind().unrender(true);\n prev[pos++] = 0;\n } else if (dest > idx) {\n // need to stash or pull one up\n next = newIndices[pos + 1]; // TODO: maybe a shouldMove function that tracks multiple entries?\n if (next <= dest) {\n stash[dest] = prev[pos];\n prev[pos++] = null;\n } else {\n next = stash[idx] || prev[map[idx]];\n prev[map[idx]] = null;\n anchor = prev[nextRendered(pos, newIndices, prev)];\n anchor = (anchor && parentNode && anchor.firstNode()) || nextNode;\n\n if (next) {\n rebound = this.source && next.lastValue !== value[idx];\n swizzleFragment(this, next, idx, idx);\n if (parentNode) parentNode.insertBefore(next.detach(), anchor);\n } else {\n next = iters[idx] = this.createIteration(idx, idx);\n if (parentNode) {\n next.render(docFrag);\n parentNode.insertBefore(docFrag, anchor);\n }\n }\n\n idx++;\n }\n } else {\n // all is well\n next = iters[idx];\n anchor = prev[nextRendered(pos, newIndices, prev)];\n anchor = (anchor && parentNode && anchor.firstNode()) || nextNode;\n if (!next) {\n next = iters[idx] = this.createIteration(idx, idx);\n if (parentNode) {\n next.render(docFrag);\n parentNode.insertBefore(docFrag, anchor);\n }\n } else if (pos !== idx || stash[idx]) {\n rebound = this.source && next.lastValue !== value[idx];\n swizzleFragment(this, next, idx, idx);\n if (stash[idx] && parentNode) parentNode.insertBefore(next.detach(), anchor);\n }\n\n idx++;\n prev[pos++] = null;\n }\n\n if (next && isObjectType(next)) {\n if (next.shouldRebind || rebound) {\n next.rebound(rebound);\n next.shouldRebind = 0;\n }\n next.update();\n next.shuffled();\n }\n }\n\n // clean up any stragglers\n const plen = prev.length;\n for (let i = 0; i < plen; i++) prev[i] && prev[i].unbind().unrender(true);\n\n if (this.shuffler) this.values = shuffleValues(this, this.shuffler);\n\n this.pendingNewIndices = null;\n this.previousIterations = null;\n }\n}\n\nRepeatedFragment.prototype.getContext = getContext;\nRepeatedFragment.prototype.getKeypath = getKeypath;\n\n// find the topmost delegate\nfunction findDelegate(start) {\n let frag = start;\n let delegate, el;\n\n out: while (frag) {\n // find next element\n el = 0;\n while (!el && frag) {\n if (frag.owner.type === ELEMENT) el = frag.owner;\n if (frag.owner.ractive && frag.owner.ractive.delegate === false) break out;\n frag = frag.parent || frag.componentParent;\n }\n\n if (el.delegate === false) break out;\n delegate = el.delegate || el;\n\n // find next repeated fragment\n while (frag) {\n if (frag.iterations) break;\n if (frag.owner.ractive && frag.owner.ractive.delegate === false) break out;\n frag = frag.parent || frag.componentParent;\n }\n }\n\n return delegate;\n}\n\nfunction nextRendered(start, newIndices, frags) {\n const len = newIndices.length;\n for (let i = start; i < len; i++) {\n if (~newIndices[i] && frags[i] && frags[i].rendered) return i;\n }\n}\n\nfunction swizzleFragment(section, fragment, key, idx) {\n const model = section.context ? contextFor(section, fragment, key) : undefined;\n\n fragment.key = key;\n fragment.index = idx;\n fragment.context = model;\n if (section.source) fragment.lastValue = model && model.get();\n\n if (fragment.idxModel) fragment.idxModel.applyValue(idx);\n if (fragment.keyModel) fragment.keyModel.applyValue(key);\n if (fragment.pathModel) {\n fragment.pathModel.context = model;\n fragment.pathModel.applyValue(model.getKeypath());\n }\n if (fragment.rootModel) {\n fragment.rootModel.context = model;\n fragment.rootModel.applyValue(model.getKeypath(fragment.ractive.root));\n }\n\n // handle any aliases\n const aliases = fragment.aliases;\n section.aliases &&\n section.aliases.forEach(a => {\n if (a.x.r === '.') aliases[a.n] = model;\n else if (a.x.r === '@index') aliases[a.n] = fragment.getIndex();\n else if (a.x.r === '@key') aliases[a.n] = fragment.getKey();\n else if (a.x.r === '@keypath') aliases[a.n] = fragment.getKeypath();\n else if (a.x.r === '@rootpath') aliases[a.n] = fragment.getKeypath(true);\n });\n}\n\nfunction shuffleValues(section, shuffler) {\n if (shuffler === true) {\n return section.context.get().slice();\n } else {\n return section.context.get().map(v => shuffler.reduce((a, c) => a && a[c], v));\n }\n}\n\nfunction contextFor(section, fragment, key) {\n if (section.source) {\n let idx;\n const source = section.source.model.get();\n if (source.indexOf && ~(idx = source.indexOf(section.context.joinKey(key).get())))\n return section.source.model.joinKey(idx);\n }\n\n return section.context.joinKey(key);\n}\n","import { addToArray, removeFromArray } from 'utils/array';\nimport { unescapeKey } from 'shared/keypaths';\nimport { capture } from 'src/global/capture';\nimport { handleChange } from 'src/shared/methodCallers';\nimport noop from 'utils/noop';\n\nexport default class KeyModel {\n constructor(value, context, instance) {\n this.value = this.key = value;\n this.context = context;\n this.isReadonly = this.isKey = true;\n this.deps = [];\n this.links = [];\n this.children = [];\n this.instance = instance;\n }\n\n applyValue(value) {\n if (value !== this.value) {\n this.value = this.key = value;\n this.deps.forEach(handleChange);\n this.links.forEach(handleChange);\n this.children.forEach(c => {\n c.applyValue(c.context.getKeypath(c.instance));\n });\n }\n }\n\n destroyed() {\n if (this.upstream) this.upstream.unregisterChild(this);\n }\n\n get(shouldCapture) {\n if (shouldCapture) capture(this);\n return unescapeKey(this.value);\n }\n\n getKeypath() {\n return unescapeKey(this.value);\n }\n\n has() {\n return false;\n }\n\n rebind(next, previous) {\n let i = this.deps.length;\n while (i--) this.deps[i].rebind(next, previous, false);\n\n i = this.links.length;\n while (i--) this.links[i].relinking(next, false);\n }\n\n register(dependant) {\n this.deps.push(dependant);\n }\n\n registerChild(child) {\n addToArray(this.children, child);\n child.upstream = this;\n }\n\n registerLink(link) {\n addToArray(this.links, link);\n }\n\n unregister(dependant) {\n removeFromArray(this.deps, dependant);\n }\n\n unregisterChild(child) {\n removeFromArray(this.children, child);\n }\n\n unregisterLink(link) {\n removeFromArray(this.links, link);\n }\n}\n\nKeyModel.prototype.reference = noop;\nKeyModel.prototype.unreference = noop;\n","import { ELEMENT, PARTIAL, SECTION, SECTION_WITH, YIELDER } from 'config/types';\nimport { assign, create, hasOwn, keys } from 'utils/object';\nimport { isArray, isFunction, isObjectType, isString } from 'utils/is';\nimport noop from 'utils/noop';\nimport { MustacheContainer } from './shared/Mustache';\nimport Fragment from '../Fragment';\nimport getPartialTemplate from './partial/getPartialTemplate';\nimport { resolveAliases } from './Alias';\nimport { warnOnceIfDebug, warnIfDebug } from 'utils/log';\nimport parser from 'src/Ractive/config/runtime-parser';\nimport runloop from 'src/global/runloop';\nimport { applyCSS } from 'src/global/css';\nimport { splitKeypath } from 'shared/keypaths';\n\nexport default function Partial(options) {\n MustacheContainer.call(this, options);\n\n const tpl = options.template;\n\n // yielder is a special form of partial that will later require special handling\n if (tpl.t === YIELDER) {\n this.yielder = 1;\n } else if (tpl.t === ELEMENT) {\n // this is a macro partial, complete with macro constructor\n // leaving this as an element will confuse up-template searches\n this.type = PARTIAL;\n this.macro = options.macro;\n }\n}\n\nconst proto = (Partial.prototype = create(MustacheContainer.prototype));\n\nassign(proto, {\n constructor: Partial,\n\n bind() {\n const template = this.template;\n\n if (this.yielder) {\n // the container is the instance that owns this node\n this.container = this.up.ractive;\n this.component = this.container.component;\n this.containerFragment = this.up;\n\n // normal component\n if (this.component) {\n // yields skip the owning instance and go straight to the surrounding context\n this.up = this.component.up;\n\n // {{yield}} is equivalent to {{yield content}}\n if (!template.r && !template.x && !template.tx) this.refName = 'content';\n } else {\n // plain-ish instance that may be attached to a parent later\n this.fragment = new Fragment({\n owner: this,\n template: []\n });\n this.fragment.bind();\n return;\n }\n }\n\n // this is a macro/super partial\n if (this.macro) {\n this.fn = this.macro;\n } else {\n // this is a plain partial or yielder\n if (!this.refName) this.refName = template.r;\n\n // if the refName exists as a partial, this is a plain old partial reference where no model binding will happen\n if (this.refName) {\n partialFromValue(this, this.refName);\n }\n\n // this is a dynamic/inline partial\n if (!this.partial && !this.fn) {\n MustacheContainer.prototype.bind.call(this);\n if (this.model) partialFromValue(this, this.model.get());\n }\n }\n\n if (!this.partial && !this.fn) {\n warnOnceIfDebug(`Could not find template for partial '${this.name}'`);\n }\n\n createFragment(this, this.partial || []);\n\n // macro/super partial\n if (this.fn) initMacro(this);\n\n this.fragment.bind();\n },\n\n bubble() {\n if (!this.dirty) {\n this.dirty = true;\n\n if (this.yielder) {\n this.containerFragment.bubble();\n } else {\n this.up.bubble();\n }\n }\n },\n\n findNextNode() {\n return (this.containerFragment || this.up).findNextNode(this);\n },\n\n handleChange() {\n this.dirtyTemplate = true;\n this.externalChange = true;\n this.bubble();\n },\n\n rebound(update) {\n const aliases = this.fragment && this.fragment.aliases;\n if (aliases) {\n for (const k in aliases) {\n if (aliases[k].rebound) aliases[k].rebound(update);\n else {\n aliases[k].unreference();\n aliases[k] = 0;\n }\n }\n if (this.template.z) {\n resolveAliases(this.template.z, this.containerFragment || this.up, aliases);\n }\n }\n if (this._attrs) {\n keys(this._attrs).forEach(k => this._attrs[k].rebound(update));\n }\n MustacheContainer.prototype.rebound.call(this, update);\n },\n\n refreshAttrs() {\n keys(this._attrs).forEach(k => {\n this.handle.attributes[k] = !this._attrs[k].items.length || this._attrs[k].valueOf();\n });\n },\n\n resetTemplate() {\n if (this.fn && this.proxy) {\n if (this.externalChange) {\n if (isFunction(this.proxy.teardown)) this.proxy.teardown();\n this.fn = this.proxy = null;\n } else {\n this.partial = this.fnTemplate;\n return true;\n }\n }\n\n const partial = this.partial;\n this.partial = null;\n\n if (this.refName) {\n this.partial = getPartialTemplate(this.ractive, this.refName, this.up);\n }\n\n if (!this.partial && this.model) {\n partialFromValue(this, this.model.get());\n }\n\n if (!this.fn && partial === this.partial) return false;\n\n this.unbindAttrs();\n\n if (this.fn) {\n initMacro(this);\n if (isFunction(this.proxy.render)) runloop.scheduleTask(() => this.proxy.render());\n } else if (!this.partial) {\n warnOnceIfDebug(`Could not find template for partial '${this.name}'`);\n }\n\n return true;\n },\n\n render(target, occupants) {\n if (this.fn && this.fn._cssDef && !this.fn._cssDef.applied) applyCSS();\n\n this.fragment.render(target, occupants);\n\n if (this.proxy && isFunction(this.proxy.render)) this.proxy.render();\n },\n\n unbind() {\n this.fragment.unbind();\n\n this.fragment.aliases = null;\n\n this.unbindAttrs();\n\n MustacheContainer.prototype.unbind.call(this);\n },\n\n unbindAttrs() {\n if (this._attrs) {\n keys(this._attrs).forEach(k => {\n this._attrs[k].unbind();\n });\n }\n },\n\n unrender(shouldDestroy) {\n if (this.proxy && isFunction(this.proxy.teardown)) this.proxy.teardown();\n\n this.fragment.unrender(shouldDestroy);\n },\n\n update() {\n const proxy = this.proxy;\n this.updating = 1;\n\n if (this.dirtyAttrs) {\n this.dirtyAttrs = false;\n keys(this._attrs).forEach(k => this._attrs[k].update());\n this.refreshAttrs();\n if (isFunction(proxy.update)) proxy.update(this.handle.attributes);\n }\n\n if (this.dirtyTemplate) {\n this.dirtyTemplate = false;\n this.resetTemplate() && this.fragment.resetTemplate(this.partial || []);\n }\n\n if (this.dirty) {\n this.dirty = false;\n if (proxy && isFunction(proxy.invalidate)) proxy.invalidate();\n this.fragment.update();\n }\n\n this.externalChange = false;\n this.updating = 0;\n }\n});\n\nfunction createFragment(self, partial) {\n self.partial = partial;\n contextifyTemplate(self);\n\n const options = {\n owner: self,\n template: self.partial\n };\n\n if (self.yielder) options.ractive = self.container.parent;\n\n if (self.fn) options.cssIds = self.fn._cssIds;\n\n const fragment = (self.fragment = new Fragment(options));\n\n // partials may have aliases that need to be in place before binding\n if (self.template.z) {\n fragment.aliases = resolveAliases(self.template.z, self.containerFragment || self.up);\n }\n}\n\nfunction contextifyTemplate(self) {\n if (self.template.c) {\n self.partial = [{ t: SECTION, n: SECTION_WITH, f: self.partial }];\n assign(self.partial[0], self.template.c);\n if (self.yielder) self.partial[0].y = self;\n }\n}\n\nfunction partialFromValue(self, value, okToParse) {\n let tpl = value;\n\n if (isArray(tpl)) {\n self.partial = tpl;\n } else if (tpl && isObjectType(tpl)) {\n if (isArray(tpl.t)) self.partial = tpl.t;\n else if (isString(tpl.template))\n self.partial = parsePartial(tpl.template, tpl.template, self.ractive).t;\n } else if (isFunction(tpl) && tpl.styleSet) {\n self.fn = tpl;\n if (self.fragment) self.fragment.cssIds = tpl._cssIds;\n } else if (tpl != null) {\n tpl = getPartialTemplate(self.ractive, '' + tpl, self.containerFragment || self.up);\n if (tpl) {\n self.name = value;\n if (tpl.styleSet) {\n self.fn = tpl;\n if (self.fragment) self.fragment.cssIds = tpl._cssIds;\n } else self.partial = tpl;\n } else if (okToParse) {\n self.partial = parsePartial('' + value, '' + value, self.ractive).t;\n } else {\n self.name = value;\n }\n }\n\n return self.partial;\n}\n\nfunction setTemplate(template) {\n partialFromValue(this, template, true);\n\n if (!this.initing) {\n this.dirtyTemplate = true;\n this.fnTemplate = this.partial;\n\n if (this.updating) {\n this.bubble();\n runloop.promise();\n } else {\n const promise = runloop.start();\n\n this.bubble();\n runloop.end();\n\n return promise;\n }\n }\n}\n\nfunction aliasLocal(ref, name) {\n const aliases = this.fragment.aliases || (this.fragment.aliases = {});\n if (!name) {\n aliases[ref] = this._data;\n } else {\n aliases[name] = this._data.joinAll(splitKeypath(ref));\n }\n}\n\nconst extras = 'extra-attributes';\n\nfunction initMacro(self) {\n const fn = self.fn;\n const fragment = self.fragment;\n\n // defensively copy the template in case it changes\n const template = (self.template = assign({}, self.template));\n const handle = (self.handle = fragment.getContext({\n proxy: self,\n aliasLocal,\n name: self.template.e || self.name,\n attributes: {},\n setTemplate: setTemplate.bind(self),\n template\n }));\n\n if (!template.p) template.p = {};\n template.p = handle.partials = assign({}, template.p);\n if (!hasOwn(template.p, 'content')) template.p.content = template.f || [];\n\n if (isArray(fn.attributes)) {\n self._attrs = {};\n\n const invalidate = function() {\n this.dirty = true;\n self.dirtyAttrs = true;\n self.bubble();\n };\n\n if (isArray(template.m)) {\n const attrs = template.m;\n template.p[extras] = template.m = attrs.filter(a => !~fn.attributes.indexOf(a.n));\n attrs.filter(a => ~fn.attributes.indexOf(a.n)).forEach(a => {\n const fragment = new Fragment({\n template: a.f,\n owner: self\n });\n fragment.bubble = invalidate;\n fragment.findFirstNode = noop;\n self._attrs[a.n] = fragment;\n });\n } else {\n template.p[extras] = [];\n }\n } else {\n template.p[extras] = template.m;\n }\n\n if (self._attrs) {\n keys(self._attrs).forEach(k => {\n self._attrs[k].bind();\n });\n self.refreshAttrs();\n }\n\n self.initing = 1;\n self.proxy = fn(handle, handle.attributes) || {};\n if (!self.partial) self.partial = [];\n self.fnTemplate = self.partial;\n self.initing = 0;\n\n contextifyTemplate(self);\n fragment.resetTemplate(self.partial);\n}\n\nfunction parsePartial(name, partial, ractive) {\n let parsed;\n\n try {\n parsed = parser.parse(partial, parser.getParseOptions(ractive));\n } catch (e) {\n warnIfDebug(`Could not parse partial from expression '${name}'\\n${e.message}`);\n }\n\n return parsed || { t: [] };\n}\n","import { noRegistryFunctionReturn } from 'config/errors';\nimport { warnIfDebug } from 'utils/log';\nimport { fillGaps, hasOwn } from 'utils/object';\nimport parser from 'src/Ractive/config/runtime-parser';\nimport { findInstance } from 'shared/registry';\nimport { isArray, isFunction } from 'utils/is';\n\nexport default function getPartialTemplate(ractive, name, up) {\n // If the partial in instance or view heirarchy instances, great\n let partial = getPartialFromRegistry(ractive, name, up || {});\n if (partial) return partial;\n\n // Does it exist on the page as a script tag?\n partial = parser.fromId(name, { noThrow: true });\n if (partial) {\n // parse and register to this ractive instance\n const parsed = parser.parseFor(partial, ractive);\n\n // register extra partials on the ractive instance if they don't already exist\n if (parsed.p) fillGaps(ractive.partials, parsed.p);\n\n // register (and return main partial if there are others in the template)\n return (ractive.partials[name] = parsed.t);\n }\n}\n\nfunction getPartialFromRegistry(ractive, name, up) {\n // if there was an instance up-hierarchy, cool\n let partial = findParentPartial(name, up.owner);\n if (partial) return partial;\n\n // find first instance in the ractive or view hierarchy that has this partial\n const instance = findInstance('partials', ractive, name);\n\n if (!instance) {\n return;\n }\n\n partial = instance.partials[name];\n\n // partial is a function?\n let fn;\n if (isFunction(partial)) {\n fn = partial;\n // super partial\n if (fn.styleSet) return fn;\n\n fn = partial.bind(instance);\n fn.isOwner = hasOwn(instance.partials, name);\n partial = fn.call(ractive, parser);\n }\n\n if (!partial && partial !== '') {\n warnIfDebug(noRegistryFunctionReturn, name, 'partial', 'partial', {\n ractive\n });\n return;\n }\n\n // If this was added manually to the registry,\n // but hasn't been parsed, parse it now\n if (!parser.isParsed(partial)) {\n // use the parseOptions of the ractive instance on which it was found\n const parsed = parser.parseFor(partial, instance);\n\n // Partials cannot contain nested partials!\n // TODO add a test for this\n if (parsed.p) {\n warnIfDebug('Partials ({{>%s}}) cannot contain nested inline partials', name, { ractive });\n }\n\n // if fn, use instance to store result, otherwise needs to go\n // in the correct point in prototype chain on instance or constructor\n const target = fn ? instance : findOwner(instance, name);\n\n // may be a template with partials, which need to be registered and main template extracted\n target.partials[name] = partial = parsed.t;\n }\n\n // store for reset\n if (fn) partial._fn = fn;\n\n return partial.v ? partial.t : partial;\n}\n\nfunction findOwner(ractive, key) {\n return hasOwn(ractive.partials, key) ? ractive : findConstructor(ractive.constructor, key);\n}\n\nfunction findConstructor(constructor, key) {\n if (!constructor) {\n return;\n }\n return hasOwn(constructor.partials, key) ? constructor : findConstructor(constructor.Parent, key);\n}\n\nfunction findParentPartial(name, parent) {\n if (parent) {\n if (\n parent.template &&\n parent.template.p &&\n !isArray(parent.template.p) &&\n hasOwn(parent.template.p, name)\n ) {\n return parent.template.p[name];\n } else if (parent.up && parent.up.owner) {\n return findParentPartial(name, parent.up.owner);\n }\n }\n}\n","import { removeFromArray } from 'utils/array';\nimport Element from '../../Element';\nimport findElement from '../../shared/findElement';\nimport { isArray } from 'utils/is';\n\nexport default class Option extends Element {\n constructor(options) {\n const template = options.template;\n if (!template.a) template.a = {};\n\n // If the value attribute is missing, use the element's content,\n // as long as it isn't disabled\n if (template.a.value === undefined && !('disabled' in template.a)) {\n template.a.value = template.f || '';\n }\n\n super(options);\n\n this.select = findElement(this.parent || this.up, false, 'select');\n }\n\n bind() {\n if (!this.select) {\n super.bind();\n return;\n }\n\n // If the select has a value, it overrides the `selected` attribute on\n // this option - so we delete the attribute\n const selectedAttribute = this.attributeByName.selected;\n if (selectedAttribute && this.select.getAttribute('value') !== undefined) {\n const index = this.attributes.indexOf(selectedAttribute);\n this.attributes.splice(index, 1);\n delete this.attributeByName.selected;\n }\n\n super.bind();\n this.select.options.push(this);\n }\n\n bubble() {\n // if we're using content as value, may need to update here\n const value = this.getAttribute('value');\n if (this.node && this.node.value !== value) {\n this.node._ractive.value = value;\n }\n super.bubble();\n }\n\n getAttribute(name) {\n const attribute = this.attributeByName[name];\n return attribute\n ? attribute.getValue()\n : name === 'value' && this.fragment\n ? this.fragment.valueOf()\n : undefined;\n }\n\n isSelected() {\n const optionValue = this.getAttribute('value');\n\n if (optionValue === undefined || !this.select) {\n return false;\n }\n\n const selectValue = this.select.getAttribute('value');\n\n if (this.select.compare(selectValue, optionValue)) {\n return true;\n }\n\n if (this.select.getAttribute('multiple') && isArray(selectValue)) {\n let i = selectValue.length;\n while (i--) {\n if (this.select.compare(selectValue[i], optionValue)) {\n return true;\n }\n }\n }\n }\n\n render(target, occupants) {\n super.render(target, occupants);\n\n if (!this.attributeByName.value) {\n this.node._ractive.value = this.getAttribute('value');\n }\n }\n\n unbind() {\n super.unbind();\n\n if (this.select) {\n removeFromArray(this.select.options, this);\n }\n }\n}\n","import { INTERPOLATOR } from '../../../config/types';\nimport Item from '../shared/Item';\nimport Fragment from '../../Fragment';\nimport findElement from '../shared/findElement';\nimport parseJSON from '../../../utils/parseJSON';\nimport resolve from '../../resolvers/resolve';\nimport runloop from '../../../global/runloop';\nimport { warnIfDebug } from 'utils/log';\nimport { splitKeypath } from 'shared/keypaths';\nimport { isArray, isObjectType, isString } from 'utils/is';\n\nexport default class Mapping extends Item {\n constructor(options) {\n super(options);\n\n this.name = options.template.n;\n\n this.owner = options.owner || options.up.owner || options.element || findElement(options.up);\n this.element =\n options.element || (this.owner.attributeByName ? this.owner : findElement(options.up));\n this.up = this.element.up; // shared\n this.ractive = this.up.ractive;\n\n this.element.attributeByName[this.name] = this;\n\n this.value = options.template.f;\n }\n\n bind() {\n const template = this.template.f;\n const viewmodel = this.element.instance.viewmodel;\n\n if (template === 0) {\n // empty attributes are `true`\n viewmodel.joinKey(this.name).set(true);\n } else if (isString(template)) {\n const parsed = parseJSON(template);\n viewmodel.joinKey(this.name).set(parsed ? parsed.value : template);\n } else if (isArray(template)) {\n createMapping(this, true);\n }\n }\n\n rebound(update) {\n if (this.boundFragment) this.boundFragment.rebound(update);\n if (this.link) {\n this.model = resolve(this.up, this.template.f[0]);\n const model = this.element.instance.viewmodel.joinAll(splitKeypath(this.name));\n model.link(this.model, this.name, { mapping: true });\n }\n }\n\n render() {}\n\n unbind() {\n if (this.model) this.model.unregister(this);\n if (this.boundFragment) this.boundFragment.unbind();\n\n if (this.element.bound) {\n if (this.link.target === this.model) this.link.owner.unlink();\n }\n }\n\n unrender() {}\n\n update() {\n if (this.dirty) {\n this.dirty = false;\n if (this.boundFragment) this.boundFragment.update();\n }\n }\n}\n\nfunction createMapping(item) {\n const template = item.template.f;\n const viewmodel = item.element.instance.viewmodel;\n const childData = viewmodel.value;\n\n if (template.length === 1 && template[0].t === INTERPOLATOR) {\n const model = resolve(item.up, template[0]);\n const val = model.get(false);\n\n // if the interpolator is not static\n if (!template[0].s) {\n item.model = model;\n item.link = viewmodel.createLink(item.name, model, template[0].r, {\n mapping: true\n });\n\n // initialize parent side of the mapping from child data\n if (val === undefined && !model.isReadonly && item.name in childData) {\n model.set(childData[item.name]);\n }\n } else if (!isObjectType(val) || template[0].x) {\n // copy non-object, non-computed vals through\n viewmodel.joinKey(splitKeypath(item.name)).set(val);\n } else {\n // warn about trying to copy an object\n warnIfDebug(`Cannot copy non-computed object value from static mapping '${item.name}'`);\n }\n\n // if the item isn't going to manage the model, give it a change to tear down if it's computed\n if (model !== item.model) model.unregister();\n } else {\n item.boundFragment = new Fragment({\n owner: item,\n template\n }).bind();\n\n item.model = viewmodel.joinKey(splitKeypath(item.name));\n item.model.set(item.boundFragment.valueOf());\n\n // item is a *bit* of a hack\n item.boundFragment.bubble = () => {\n Fragment.prototype.bubble.call(item.boundFragment);\n // defer this to avoid mucking around model deps if there happens to be an expression involved\n runloop.scheduleTask(() => {\n item.boundFragment.update();\n item.model.set(item.boundFragment.valueOf());\n });\n };\n }\n}\n","import Parser from 'parse/Parser';\nimport readStringLiteral from 'parse/converters/expressions/primary/literal/readStringLiteral';\nimport readKey from 'parse/converters/expressions/shared/readKey';\nimport { hasOwn, keys } from 'utils/object';\n\n// simple JSON parser, without the restrictions of JSON parse\n// (i.e. having to double-quote keys).\n//\n// If passed a hash of values as the second argument, ${placeholders}\n// will be replaced with those values\n\nconst specials = {\n true: true,\n false: false,\n null: null,\n undefined\n};\n\nconst specialsPattern = new RegExp('^(?:' + keys(specials).join('|') + ')');\nconst numberPattern = /^(?:[+-]?)(?:(?:(?:0|[1-9]\\d*)?\\.\\d+)|(?:(?:0|[1-9]\\d*)\\.)|(?:0|[1-9]\\d*))(?:[eE][+-]?\\d+)?/;\nconst placeholderPattern = /\\$\\{([^\\}]+)\\}/g;\nconst placeholderAtStartPattern = /^\\$\\{([^\\}]+)\\}/;\nconst onlyWhitespace = /^\\s*$/;\n\nconst JsonParser = Parser.extend({\n init(str, options) {\n this.values = options.values;\n this.sp();\n },\n\n postProcess(result) {\n if (result.length !== 1 || !onlyWhitespace.test(this.leftover)) {\n return null;\n }\n\n return { value: result[0].v };\n },\n\n converters: [\n function getPlaceholder(parser) {\n if (!parser.values) return null;\n\n const placeholder = parser.matchPattern(placeholderAtStartPattern);\n\n if (placeholder && hasOwn(parser.values, placeholder)) {\n return { v: parser.values[placeholder] };\n }\n },\n\n function getSpecial(parser) {\n const special = parser.matchPattern(specialsPattern);\n if (special) return { v: specials[special] };\n },\n\n function getNumber(parser) {\n const number = parser.matchPattern(numberPattern);\n if (number) return { v: +number };\n },\n\n function getString(parser) {\n const stringLiteral = readStringLiteral(parser);\n const values = parser.values;\n\n if (stringLiteral && values) {\n return {\n v: stringLiteral.v.replace(\n placeholderPattern,\n (match, $1) => ($1 in values ? values[$1] : $1)\n )\n };\n }\n\n return stringLiteral;\n },\n\n function getObject(parser) {\n if (!parser.matchString('{')) return null;\n\n const result = {};\n\n parser.sp();\n\n if (parser.matchString('}')) {\n return { v: result };\n }\n\n let pair;\n while ((pair = getKeyValuePair(parser))) {\n result[pair.key] = pair.value;\n\n parser.sp();\n\n if (parser.matchString('}')) {\n return { v: result };\n }\n\n if (!parser.matchString(',')) {\n return null;\n }\n }\n\n return null;\n },\n\n function getArray(parser) {\n if (!parser.matchString('[')) return null;\n\n const result = [];\n\n parser.sp();\n\n if (parser.matchString(']')) {\n return { v: result };\n }\n\n let valueToken;\n while ((valueToken = parser.read())) {\n result.push(valueToken.v);\n\n parser.sp();\n\n if (parser.matchString(']')) {\n return { v: result };\n }\n\n if (!parser.matchString(',')) {\n return null;\n }\n\n parser.sp();\n }\n\n return null;\n }\n ]\n});\n\nfunction getKeyValuePair(parser) {\n parser.sp();\n\n const key = readKey(parser);\n\n if (!key) return null;\n\n const pair = { key };\n\n parser.sp();\n if (!parser.matchString(':')) {\n return null;\n }\n parser.sp();\n\n const valueToken = parser.read();\n\n if (!valueToken) return null;\n\n pair.value = valueToken.v;\n return pair;\n}\n\nexport default function(str, values) {\n const parser = new JsonParser(str, { values });\n return parser.result;\n}\n","import Element from '../../Element';\nimport { isFunction } from 'utils/is';\n\nexport default class Input extends Element {\n render(target, occupants) {\n super.render(target, occupants);\n this.node.defaultValue = this.node.value;\n }\n compare(value, attrValue) {\n const comparator = this.getAttribute('value-comparator');\n if (comparator) {\n if (isFunction(comparator)) {\n return comparator(value, attrValue);\n }\n if (value && attrValue) {\n return value[comparator] == attrValue[comparator];\n }\n }\n return value == attrValue;\n }\n}\n","import progressiveText from './shared/progressiveText';\nimport { escapeHtml } from 'utils/html';\nimport { safeToStringValue } from 'utils/dom';\nimport { detachNode } from 'utils/dom';\nimport Mustache from './shared/Mustache';\nimport { inAttributes } from './element/ConditionalAttribute';\n\nexport default class Interpolator extends Mustache {\n bubble() {\n if (this.owner) this.owner.bubble();\n super.bubble();\n }\n\n detach() {\n return detachNode(this.node);\n }\n\n firstNode() {\n return this.node;\n }\n\n getString() {\n return this.model ? safeToStringValue(this.model.get()) : '';\n }\n\n render(target, occupants) {\n if (inAttributes()) return;\n const value = (this.value = this.getString());\n\n this.rendered = true;\n\n progressiveText(this, target, occupants, value);\n }\n\n toString(escape) {\n const string = this.getString();\n return escape ? escapeHtml(string) : string;\n }\n\n unrender(shouldDestroy) {\n if (shouldDestroy) this.detach();\n this.rendered = false;\n }\n\n update() {\n if (this.dirty) {\n this.dirty = false;\n if (this.rendered) {\n const value = this.getString();\n if (value !== this.value) this.node.data = this.value = value;\n }\n }\n }\n\n valueOf() {\n return this.model ? this.model.get() : undefined;\n }\n}\n","import { rebindMatch } from 'shared/rebind';\nimport Item, { ContainerItem } from './Item';\nimport resolve from '../../resolvers/resolve';\nimport { assign } from 'utils/object';\n\nexport default class Mustache extends Item {\n constructor(options) {\n super(options);\n\n if (options.owner) this.parent = options.owner;\n\n this.isStatic = !!options.template.s;\n\n this.model = null;\n this.dirty = false;\n }\n\n bind(pre) {\n // yield mustaches and inner contexts should resolve in container context\n const start = this.template.y\n ? this.template.y.containerFragment\n : this.containerFragment || this.up;\n // try to find a model for this view\n const model = pre || resolve(start, this.template);\n\n if (model) {\n const value = model.get();\n\n if (this.isStatic) {\n this.model = { get: () => value };\n model.unreference();\n return;\n }\n\n model.register(this);\n this.model = model;\n }\n }\n\n handleChange() {\n this.bubble();\n }\n\n rebind(next, previous, safe) {\n if (this.isStatic) return;\n\n next = rebindMatch(this.template, next, previous, this.up);\n if (next === this.model) return false;\n\n if (this.model) {\n this.model.unregister(this);\n }\n if (next) next.addShuffleRegister(this, 'mark');\n this.model = next;\n if (!safe) this.handleChange();\n return true;\n }\n\n rebound(update) {\n if (this.model) {\n if (this.model.rebound) this.model.rebound(update);\n else {\n // check to see if the model actually changed...\n // yield mustaches and inner contexts should resolve in container context\n const start = this.template.y\n ? this.template.y.containerFragment\n : this.containerFragment || this.up;\n // try to find a model for this view\n const model = resolve(start, this.template);\n if (model !== this.model) {\n this.model.unregister(this);\n this.bind(model);\n }\n }\n\n if (update) this.bubble();\n }\n if (this.fragment) this.fragment.rebound(update);\n }\n\n unbind() {\n if (!this.isStatic) {\n this.model && this.model.unregister(this);\n this.model = undefined;\n }\n }\n}\n\nexport function MustacheContainer(options) {\n Mustache.call(this, options);\n}\n\nconst proto = (MustacheContainer.prototype = Object.create(ContainerItem.prototype));\n\nassign(proto, Mustache.prototype, { constructor: MustacheContainer });\n","import { doc } from 'config/environment';\n\nexport default function progressiveText(item, target, occupants, text) {\n if (occupants) {\n let n = occupants[0];\n if (n && n.nodeType === 3) {\n const idx = n.nodeValue.indexOf(text);\n occupants.shift();\n\n if (idx === 0) {\n if (n.nodeValue.length !== text.length) {\n occupants.unshift(n.splitText(text.length));\n }\n } else {\n n.nodeValue = text;\n }\n } else {\n n = item.node = doc.createTextNode(text);\n if (occupants[0]) {\n target.insertBefore(n, occupants[0]);\n } else {\n target.appendChild(n);\n }\n }\n\n item.node = n;\n } else {\n if (!item.node) item.node = doc.createTextNode(text);\n target.appendChild(item.node);\n }\n}\n","import { ANCHOR, COMPONENT } from 'config/types';\nimport { warnIfDebug, warnOnceIfDebug } from 'utils/log';\nimport { addToArray, removeFromArray } from 'utils/array';\nimport noop from 'utils/noop';\nimport fireEvent from 'src/events/fireEvent';\nimport { splitKeypath } from 'shared/keypaths';\nimport { findInViewHierarchy } from 'shared/registry';\nimport findElement from './findElement';\nimport { DOMEvent, CustomEvent } from '../element/ElementEvents';\nimport RactiveEvent from '../component/RactiveEvent';\nimport { resolveArgs, setupArgsFn } from '../shared/directiveArgs';\nimport Context from 'src/shared/Context';\nimport { isArray, isString } from 'utils/is';\nimport getFunction from 'shared/getFunction';\nimport resolveReference from '../../resolvers/resolveReference';\n\nconst specialPattern = /^(event|arguments|@node|@event|@context)(\\..+)?$/;\nconst dollarArgsPattern = /^\\$(\\d+)(\\..+)?$/;\n\nexport default class EventDirective {\n constructor(options) {\n this.owner = options.owner || options.up.owner || findElement(options.up);\n this.element = this.owner.attributeByName ? this.owner : findElement(options.up, true);\n this.template = options.template;\n this.up = options.up;\n this.ractive = options.up.ractive;\n this.events = [];\n }\n\n bind() {\n if (this.element.type === COMPONENT || this.element.type === ANCHOR) {\n this.template.n.forEach(n => {\n this.events.push(new RactiveEvent(this.element, n));\n });\n } else {\n let args;\n if ((args = this.template.a)) {\n const rs = args.r.map(r => {\n const model = resolveReference(this.up, r);\n return model ? model.get() : undefined;\n });\n try {\n args = getFunction(args.s, rs.length).apply(null, rs);\n } catch (err) {\n args = null;\n warnIfDebug(\n `Failed to compute args for event on-${this.template.n.join('- ')}: ${err.message ||\n err}`\n );\n }\n }\n\n this.template.n.forEach(n => {\n const fn = findInViewHierarchy('events', this.ractive, n);\n if (fn) {\n this.events.push(new CustomEvent(fn, this.element, n, args));\n } else {\n this.events.push(new DOMEvent(n, this.element));\n }\n });\n }\n\n // method calls\n this.models = null;\n\n addToArray(this.element.events || (this.element.events = []), this);\n\n setupArgsFn(this, this.template);\n if (!this.fn) this.action = this.template.f;\n\n this.events.forEach(e => e.bind(this));\n }\n\n destroyed() {\n this.events.forEach(e => e.unrender());\n }\n\n fire(event, args = []) {\n const context =\n event instanceof Context && event.refire ? event : this.element.getContext(event);\n\n if (this.fn) {\n const values = [];\n\n const models = resolveArgs(this, this.template, this.up, {\n specialRef(ref) {\n const specialMatch = specialPattern.exec(ref);\n if (specialMatch) {\n // on-click=\"foo(event.node)\"\n return {\n special: specialMatch[1],\n keys: specialMatch[2] ? splitKeypath(specialMatch[2].substr(1)) : []\n };\n }\n\n const dollarMatch = dollarArgsPattern.exec(ref);\n if (dollarMatch) {\n // on-click=\"foo($1)\"\n return {\n special: 'arguments',\n keys: [dollarMatch[1] - 1].concat(\n dollarMatch[2] ? splitKeypath(dollarMatch[2].substr(1)) : []\n )\n };\n }\n }\n });\n\n if (models) {\n models.forEach(model => {\n if (!model) return values.push(undefined);\n\n if (model.special) {\n const which = model.special;\n let obj;\n\n if (which === '@node') {\n obj = this.element.node;\n } else if (which === '@event') {\n obj = event && event.event;\n } else if (which === 'event') {\n warnOnceIfDebug(\n `The event reference available to event directives is deprecated and should be replaced with @context and @event`\n );\n obj = context;\n } else if (which === '@context') {\n obj = context;\n } else {\n obj = args;\n }\n\n const keys = model.keys.slice();\n\n while (obj && keys.length) obj = obj[keys.shift()];\n return values.push(obj);\n }\n\n if (model.wrapper) {\n return values.push(model.wrapperValue);\n }\n\n values.push(model.get());\n });\n }\n\n // make event available as `this.event`\n const ractive = this.ractive;\n const oldEvent = ractive.event;\n\n ractive.event = context;\n const returned = this.fn.apply(ractive, values);\n let result = returned.pop();\n\n // Auto prevent and stop if return is explicitly false\n if (result === false) {\n const original = event ? event.original : undefined;\n if (original) {\n original.preventDefault && original.preventDefault();\n original.stopPropagation && original.stopPropagation();\n } else {\n warnOnceIfDebug(\n `handler '${this.template.n.join(\n ' '\n )}' returned false, but there is no event available to cancel`\n );\n }\n } else if (!returned.length && isArray(result) && isString(result[0])) {\n // watch for proxy events\n result = fireEvent(this.ractive, result.shift(), context, result);\n }\n\n ractive.event = oldEvent;\n\n return result;\n } else {\n return fireEvent(this.ractive, this.action, context, args);\n }\n }\n\n handleChange() {}\n\n render() {\n this.events.forEach(e => e.render(this));\n }\n\n toString() {\n return '';\n }\n\n unbind() {\n removeFromArray(this.element.events, this);\n this.events.forEach(e => e.unbind());\n }\n\n unrender() {\n this.events.forEach(e => e.unrender());\n }\n}\n\nconst proto = EventDirective.prototype;\nproto.firstNode = proto.rebound = proto.update = noop;\n","import Context from '../../../shared/Context';\n\nexport default class RactiveEvent {\n constructor(component, name) {\n this.component = component;\n this.name = name;\n this.handler = null;\n }\n\n bind(directive) {\n const ractive = this.component.instance;\n\n this.handler = ractive.on(this.name, (...args) => {\n // watch for reproxy\n if (args[0] instanceof Context) {\n const ctx = args.shift();\n ctx.component = ractive;\n directive.fire(ctx, args);\n } else {\n directive.fire({}, args);\n }\n\n // cancel bubbling\n return false;\n });\n }\n\n render() {}\n\n unbind() {\n this.handler.cancel();\n }\n\n unrender() {}\n}\n","import { fatal } from 'utils/log';\nimport runloop from 'src/global/runloop';\nimport { win } from 'config/environment';\n\n// because IE\nconst whitelist = {\n animationend: 1,\n animationiteration: 1,\n animationstart: 1,\n transitioncancel: 1,\n transitionend: 1,\n transitionstart: 1,\n transitionrun: 1\n};\n\nclass DOMEvent {\n constructor(name, owner) {\n if (name.indexOf('*') !== -1) {\n fatal(\n `Only component proxy-events may contain \"*\" wildcards, <${\n owner.name\n } on-${name}=\"...\"/> is not valid`\n );\n }\n\n this.name = name;\n this.owner = owner;\n this.handler = null;\n }\n\n bind() {}\n\n render(directive) {\n const name = this.name;\n\n const register = () => {\n const node = this.owner.node;\n const on = `on${name}`;\n\n // this is probably a custom event fired from a decorator or manually\n if (!(on in node) && !(on in win) && !whitelist[name]) return;\n\n this.owner.on(\n name,\n (this.handler = event => {\n return directive.fire({\n node,\n original: event,\n event,\n name\n });\n })\n );\n };\n\n if (name !== 'load') {\n // schedule events so that they take place after twoway binding\n runloop.scheduleTask(register, true);\n } else {\n // unless its a load event\n register();\n }\n }\n\n unbind() {}\n\n unrender() {\n if (this.handler) this.owner.off(this.name, this.handler);\n }\n}\n\nclass CustomEvent {\n constructor(eventPlugin, owner, name, args) {\n this.eventPlugin = eventPlugin;\n this.owner = owner;\n this.name = name;\n this.handler = null;\n this.args = args;\n }\n\n bind() {}\n\n render(directive) {\n runloop.scheduleTask(() => {\n const node = this.owner.node;\n\n this.handler = this.eventPlugin.apply(\n this.owner.ractive,\n [\n node,\n (event = {}) => {\n if (event.original) event.event = event.original;\n else event.original = event.event;\n\n event.name = this.name;\n event.node = event.node || node;\n return directive.fire(event);\n }\n ].concat(this.args || [])\n );\n });\n }\n\n unbind() {}\n\n unrender() {\n this.handler.teardown();\n }\n}\n\nexport { DOMEvent, CustomEvent };\n","import runloop from 'src/global/runloop';\nimport Element from '../../Element';\n\nexport default class Form extends Element {\n constructor(options) {\n super(options);\n this.formBindings = [];\n }\n\n render(target, occupants) {\n super.render(target, occupants);\n this.on('reset', handleReset);\n }\n\n unrender(shouldDestroy) {\n this.off('reset', handleReset);\n super.unrender(shouldDestroy);\n }\n}\n\nfunction handleReset() {\n const element = this._ractive.proxy;\n\n runloop.start();\n element.formBindings.forEach(updateModel);\n runloop.end();\n}\n\nfunction updateModel(binding) {\n binding.model.set(binding.resetValue);\n}\n","import { ATTRIBUTE, BINDING_FLAG, DECORATOR, DELEGATE_FLAG, EVENT, TRANSITION } from 'config/types';\nimport { win } from 'config/environment';\nimport { html, svg } from 'config/namespaces';\nimport { toArray, addToArray, removeFromArray } from 'utils/array';\nimport { escapeHtml, voidElements } from 'utils/html';\nimport { createElement, detachNode, matches, safeAttributeString } from 'utils/dom';\nimport runloop from 'src/global/runloop';\nimport Context from 'shared/Context';\nimport { destroyed } from 'shared/methodCallers';\nimport { ContainerItem } from './shared/Item';\nimport Fragment from '../Fragment';\nimport ConditionalAttribute from './element/ConditionalAttribute';\nimport createItem from './createItem';\nimport findElement from './shared/findElement';\nimport selectBinding from './element/binding/selectBinding';\nimport { assign, create, defineProperty, keys } from 'utils/object';\nimport { isString } from 'utils/is';\n\nconst endsWithSemi = /;\\s*$/;\n\nexport default class Element extends ContainerItem {\n constructor(options) {\n super(options);\n\n this.name = options.template.e.toLowerCase();\n\n // find parent element\n this.parent = findElement(this.up, false);\n\n if (this.parent && this.parent.name === 'option') {\n throw new Error(\n `An <option> element cannot contain other elements (encountered <${this.name}>)`\n );\n }\n\n this.decorators = [];\n\n // create attributes\n this.attributeByName = {};\n\n let attrs;\n let n, attr, val, cls, name, template, leftovers;\n\n const m = this.template.m;\n const len = (m && m.length) || 0;\n\n for (let i = 0; i < len; i++) {\n template = m[i];\n if (template.g) {\n (this.statics || (this.statics = {}))[template.n] = isString(template.f)\n ? template.f\n : template.n;\n } else {\n switch (template.t) {\n case ATTRIBUTE:\n case BINDING_FLAG:\n case DECORATOR:\n case EVENT:\n case TRANSITION:\n attr = createItem({\n owner: this,\n up: this.up,\n template\n });\n\n n = template.n;\n\n attrs = attrs || (attrs = this.attributes = []);\n\n if (n === 'value') val = attr;\n else if (n === 'name') name = attr;\n else if (n === 'class') cls = attr;\n else attrs.push(attr);\n\n break;\n\n case DELEGATE_FLAG:\n this.delegate = false;\n break;\n\n default:\n (leftovers || (leftovers = [])).push(template);\n break;\n }\n }\n }\n\n if (val) attrs.push(val);\n if (name) attrs.push(name);\n if (cls) attrs.unshift(cls);\n\n if (leftovers) {\n (attrs || (this.attributes = [])).push(\n new ConditionalAttribute({\n owner: this,\n up: this.up,\n template: leftovers\n })\n );\n\n // empty leftovers array\n leftovers = [];\n }\n\n // create children\n if (options.template.f && !options.deferContent) {\n this.fragment = new Fragment({\n template: options.template.f,\n owner: this,\n cssIds: null\n });\n }\n\n this.binding = null; // filled in later\n }\n\n bind() {\n const attrs = this.attributes;\n if (attrs) {\n attrs.binding = true;\n const len = attrs.length;\n for (let i = 0; i < len; i++) attrs[i].bind();\n attrs.binding = false;\n }\n\n if (this.fragment) this.fragment.bind();\n\n // create two-way binding if necessary\n if (!this.binding) this.recreateTwowayBinding();\n else this.binding.bind();\n }\n\n createTwowayBinding() {\n if ('twoway' in this ? this.twoway : this.ractive.twoway) {\n const Binding = selectBinding(this);\n if (Binding) {\n const binding = new Binding(this);\n if (binding && binding.model) return binding;\n }\n }\n }\n\n destroyed() {\n if (this.attributes) this.attributes.forEach(destroyed);\n if (this.fragment) this.fragment.destroyed();\n }\n\n detach() {\n // if this element is no longer rendered, the transitions are complete and the attributes can be torn down\n if (!this.rendered) this.destroyed();\n\n return detachNode(this.node);\n }\n\n find(selector, options) {\n if (this.node && matches(this.node, selector)) return this.node;\n if (this.fragment) {\n return this.fragment.find(selector, options);\n }\n }\n\n findAll(selector, options) {\n const { result } = options;\n\n if (matches(this.node, selector)) {\n result.push(this.node);\n }\n\n if (this.fragment) {\n this.fragment.findAll(selector, options);\n }\n }\n\n findNextNode() {\n return null;\n }\n\n firstNode() {\n return this.node;\n }\n\n getAttribute(name) {\n if (this.statics && name in this.statics) return this.statics[name];\n const attribute = this.attributeByName[name];\n return attribute ? attribute.getValue() : undefined;\n }\n\n getContext(...assigns) {\n if (this.fragment) return this.fragment.getContext(...assigns);\n\n if (!this.ctx) this.ctx = new Context(this.up, this);\n assigns.unshift(create(this.ctx));\n return assign.apply(null, assigns);\n }\n\n off(event, callback, capture = false) {\n const delegate = this.up.delegate;\n const ref = this.listeners && this.listeners[event];\n\n if (!ref) return;\n removeFromArray(ref, callback);\n\n if (delegate) {\n const listeners =\n (delegate.listeners || (delegate.listeners = [])) &&\n (delegate.listeners[event] || (delegate.listeners[event] = []));\n if (listeners.refs && !--listeners.refs) delegate.off(event, delegateHandler, true);\n } else if (this.rendered) {\n const n = this.node;\n const add = n.addEventListener;\n const rem = n.removeEventListener;\n\n if (!ref.length) {\n rem.call(n, event, handler, capture);\n } else if (ref.length && !ref.refs && capture) {\n rem.call(n, event, handler, true);\n add.call(n, event, handler, false);\n }\n }\n }\n\n on(event, callback, capture = false) {\n const delegate = this.up.delegate;\n const ref = (this.listeners || (this.listeners = {}))[event] || (this.listeners[event] = []);\n\n if (delegate) {\n const listeners =\n ((delegate.listeners || (delegate.listeners = [])) && delegate.listeners[event]) ||\n (delegate.listeners[event] = []);\n if (!listeners.refs) {\n listeners.refs = 0;\n delegate.on(event, delegateHandler, true);\n listeners.refs++;\n } else {\n listeners.refs++;\n }\n } else if (this.rendered) {\n const n = this.node;\n const add = n.addEventListener;\n const rem = n.removeEventListener;\n\n if (!ref.length) {\n add.call(n, event, handler, capture);\n } else if (ref.length && !ref.refs && capture) {\n rem.call(n, event, handler, false);\n add.call(n, event, handler, true);\n }\n }\n\n addToArray(this.listeners[event], callback);\n }\n\n recreateTwowayBinding() {\n if (this.binding) {\n this.binding.unbind();\n this.binding.unrender();\n }\n\n if ((this.binding = this.createTwowayBinding())) {\n this.binding.bind();\n if (this.rendered) this.binding.render();\n }\n }\n\n rebound(update) {\n super.rebound(update);\n if (this.attributes) this.attributes.forEach(x => x.rebound(update));\n if (this.binding) this.binding.rebound(update);\n }\n\n render(target, occupants) {\n // TODO determine correct namespace\n this.namespace = getNamespace(this);\n\n let node;\n let existing = false;\n\n if (occupants) {\n let n;\n while ((n = occupants.shift())) {\n if (\n n.nodeName.toUpperCase() === this.template.e.toUpperCase() &&\n n.namespaceURI === this.namespace\n ) {\n this.node = node = n;\n existing = true;\n break;\n } else {\n detachNode(n);\n }\n }\n }\n\n if (!existing && this.node) {\n node = this.node;\n target.appendChild(node);\n existing = true;\n }\n\n if (!node) {\n const name = this.template.e;\n node = createElement(\n this.namespace === html ? name.toLowerCase() : name,\n this.namespace,\n this.getAttribute('is')\n );\n this.node = node;\n }\n\n if (this.statics) {\n keys(this.statics).forEach(k => {\n node.setAttribute(k, this.statics[k]);\n });\n }\n\n // tie the node to this vdom element\n defineProperty(node, '_ractive', {\n value: {\n proxy: this\n },\n configurable: true\n });\n\n if (existing && this.foundNode) this.foundNode(node);\n\n // register intro before rendering content so children can find the intro\n const intro = this.intro;\n if (intro && intro.shouldFire('intro')) {\n intro.isIntro = true;\n intro.isOutro = false;\n runloop.registerTransition(intro);\n }\n\n if (this.fragment) {\n const children = existing ? toArray(node.childNodes) : undefined;\n\n this.fragment.render(node, children);\n\n // clean up leftover children\n if (children) {\n children.forEach(detachNode);\n }\n }\n\n if (existing) {\n // store initial values for two-way binding\n if (this.binding && this.binding.wasUndefined) this.binding.setFromNode(node);\n // remove unused attributes\n let i = node.attributes.length;\n while (i--) {\n const name = node.attributes[i].name;\n if (!(name in this.attributeByName) && (!this.statics || !(name in this.statics)))\n node.removeAttribute(name);\n }\n }\n\n // Is this a top-level node of a component? If so, we may need to add\n // a data-ractive-css attribute, for CSS encapsulation\n if (this.up.cssIds) {\n node.setAttribute('data-ractive-css', this.up.cssIds.map(x => `{${x}}`).join(' '));\n }\n\n if (this.attributes) {\n const len = this.attributes.length;\n for (let i = 0; i < len; i++) this.attributes[i].render();\n }\n if (this.binding) this.binding.render();\n\n if (!this.up.delegate && this.listeners) {\n const ls = this.listeners;\n for (const k in ls) {\n if (ls[k] && ls[k].length) this.node.addEventListener(k, handler, !!ls[k].refs);\n }\n }\n\n if (!existing) {\n target.appendChild(node);\n }\n\n this.rendered = true;\n }\n\n toString() {\n const tagName = this.template.e;\n\n let attrs = (this.attributes && this.attributes.map(stringifyAttribute).join('')) || '';\n\n if (this.statics)\n keys(this.statics).forEach(\n k => k !== 'class' && k !== 'style' && (attrs = ` ${k}=\"${this.statics[k]}\"` + attrs)\n );\n\n // Special case - selected options\n if (this.name === 'option' && this.isSelected()) {\n attrs += ' selected';\n }\n\n // Special case - two-way radio name bindings\n if (this.name === 'input' && inputIsCheckedRadio(this)) {\n attrs += ' checked';\n }\n\n // Special case style and class attributes and directives\n let style = this.statics ? this.statics.style : undefined;\n let cls = this.statics ? this.statics.class : undefined;\n this.attributes &&\n this.attributes.forEach(attr => {\n if (attr.name === 'class') {\n cls = (cls || '') + (cls ? ' ' : '') + safeAttributeString(attr.getString());\n } else if (attr.name === 'style') {\n style = (style || '') + (style ? ' ' : '') + safeAttributeString(attr.getString());\n if (style && !endsWithSemi.test(style)) style += ';';\n } else if (attr.style) {\n style =\n (style || '') +\n (style ? ' ' : '') +\n `${attr.style}: ${safeAttributeString(attr.getString())};`;\n } else if (attr.inlineClass && attr.getValue()) {\n cls = (cls || '') + (cls ? ' ' : '') + attr.inlineClass;\n }\n });\n // put classes first, then inline style\n if (style !== undefined) attrs = ' style' + (style ? `=\"${style}\"` : '') + attrs;\n if (cls !== undefined) attrs = ' class' + (cls ? `=\"${cls}\"` : '') + attrs;\n\n if (this.up.cssIds) {\n attrs += ` data-ractive-css=\"${this.up.cssIds.map(x => `{${x}}`).join(' ')}\"`;\n }\n\n let str = `<${tagName}${attrs}>`;\n\n if (voidElements[this.name.toLowerCase()]) return str;\n\n // Special case - textarea\n if (this.name === 'textarea' && this.getAttribute('value') !== undefined) {\n str += escapeHtml(this.getAttribute('value'));\n } else if (this.getAttribute('contenteditable') !== undefined) {\n // Special case - contenteditable\n str += this.getAttribute('value') || '';\n }\n\n if (this.fragment) {\n str += this.fragment.toString(!/^(?:script|style)$/i.test(this.template.e)); // escape text unless script/style\n }\n\n str += `</${tagName}>`;\n return str;\n }\n\n unbind() {\n const attrs = this.attributes;\n if (attrs) {\n attrs.unbinding = true;\n const len = attrs.length;\n for (let i = 0; i < len; i++) attrs[i].unbind();\n attrs.unbinding = false;\n }\n\n if (this.binding) this.binding.unbind();\n if (this.fragment) this.fragment.unbind();\n }\n\n unrender(shouldDestroy) {\n if (!this.rendered) return;\n this.rendered = false;\n\n // unrendering before intro completed? complete it now\n // TODO should be an API for aborting transitions\n const transition = this.intro;\n if (transition && transition.complete) transition.complete();\n\n // Detach as soon as we can\n if (this.name === 'option') {\n // <option> elements detach immediately, so that\n // their parent <select> element syncs correctly, and\n // since option elements can't have transitions anyway\n this.detach();\n } else if (shouldDestroy) {\n runloop.detachWhenReady(this);\n }\n\n // outro transition\n const outro = this.outro;\n if (outro && outro.shouldFire('outro')) {\n outro.isIntro = false;\n outro.isOutro = true;\n runloop.registerTransition(outro);\n }\n\n if (this.fragment) this.fragment.unrender();\n\n if (this.binding) this.binding.unrender();\n }\n\n update() {\n if (this.dirty) {\n this.dirty = false;\n\n const attrs = this.attributes;\n if (attrs) {\n const len = attrs.length;\n for (let i = 0; i < len; i++) attrs[i].update();\n }\n\n if (this.fragment) this.fragment.update();\n }\n }\n}\n\nfunction inputIsCheckedRadio(element) {\n const nameAttr = element.attributeByName.name;\n return (\n element.getAttribute('type') === 'radio' &&\n (nameAttr || {}).interpolator &&\n element.getAttribute('value') === nameAttr.interpolator.model.get()\n );\n}\n\nfunction stringifyAttribute(attribute) {\n const str = attribute.toString();\n return str ? ' ' + str : '';\n}\n\nfunction getNamespace(element) {\n // Use specified namespace...\n const xmlns = element.getAttribute('xmlns');\n if (xmlns) return xmlns;\n\n // ...or SVG namespace, if this is an <svg> element\n if (element.name === 'svg') return svg;\n\n const parent = element.parent;\n\n if (parent) {\n // ...or HTML, if the parent is a <foreignObject>\n if (parent.name === 'foreignobject') return html;\n\n // ...or inherit from the parent node\n return parent.node.namespaceURI;\n }\n\n return element.ractive.el.namespaceURI;\n}\n\nfunction delegateHandler(ev) {\n const name = ev.type;\n const end = ev.currentTarget;\n const endEl = end._ractive && end._ractive.proxy;\n let node = ev.target;\n let bubble = true;\n let listeners;\n\n // starting with the origin node, walk up the DOM looking for ractive nodes with a matching event listener\n while (bubble && node && node !== end) {\n const proxy = node._ractive && node._ractive.proxy;\n if (proxy && proxy.up.delegate === endEl && shouldFire(ev, node, end)) {\n listeners = proxy.listeners && proxy.listeners[name];\n\n if (listeners) {\n const len = listeners.length;\n for (let i = 0; i < len; i++) bubble = listeners[i].call(node, ev) !== false && bubble;\n }\n }\n\n node = node.parentNode || node.correspondingUseElement; // SVG with a <use> element in certain environments\n }\n\n return bubble;\n}\n\nconst UIEvent = win !== null ? win.UIEvent : null;\nfunction shouldFire(event, start, end) {\n if (UIEvent && event instanceof UIEvent) {\n let node = start;\n while (node && node !== end) {\n if (node.disabled) return false;\n node = node.parentNode || node.correspondingUseElement;\n }\n }\n\n return true;\n}\n\nfunction handler(ev) {\n const el = this._ractive.proxy;\n let listeners;\n if (el.listeners && (listeners = el.listeners[ev.type])) {\n const len = listeners.length;\n for (let i = 0; i < len; i++) listeners[i].call(this, ev);\n }\n}\n","import { INTERPOLATOR, TRIPLE } from 'config/types';\nimport { warnIfDebug } from 'utils/log';\nimport CheckboxBinding from './CheckboxBinding';\nimport CheckboxNameBinding from './CheckboxNameBinding';\nimport ContentEditableBinding from './ContentEditableBinding';\nimport FileBinding from './FileBinding';\nimport GenericBinding from './GenericBinding';\nimport MultipleSelectBinding from './MultipleSelectBinding';\nimport NumericBinding from './NumericBinding';\nimport RadioBinding from './RadioBinding';\nimport RadioNameBinding from './RadioNameBinding';\nimport SingleSelectBinding from './SingleSelectBinding';\n\nexport function isBindable(attribute) {\n // The fragment must be a single non-string fragment\n if (\n !attribute ||\n !attribute.template.f ||\n attribute.template.f.length !== 1 ||\n attribute.template.f[0].s\n )\n return false;\n\n // A binding is an interpolator `{{ }}`, yey.\n if (attribute.template.f[0].t === INTERPOLATOR) return true;\n\n // The above is probably the only true case. For the rest, show an appropriate\n // warning before returning false.\n\n // You can't bind a triple curly. HTML values on an attribute makes no sense.\n if (attribute.template.f[0].t === TRIPLE)\n warnIfDebug('It is not possible create a binding using a triple mustache.');\n\n return false;\n}\n\nexport default function selectBinding(element) {\n const name = element.name;\n const attributes = element.attributeByName;\n if (name !== 'input' && name !== 'textarea' && name !== 'select' && !attributes.contenteditable)\n return;\n const isBindableByValue = isBindable(attributes.value);\n const isBindableByContentEditable = isBindable(attributes.contenteditable);\n const isContentEditable = element.getAttribute('contenteditable');\n\n // contenteditable\n // Bind if the contenteditable is true or a binding that may become true.\n if ((isContentEditable || isBindableByContentEditable) && isBindableByValue)\n return ContentEditableBinding;\n\n // <input>\n if (name === 'input') {\n const type = element.getAttribute('type');\n\n if (type === 'radio') {\n const isBindableByName = isBindable(attributes.name);\n const isBindableByChecked = isBindable(attributes.checked);\n\n // For radios we can either bind the name or checked, but not both.\n // Name binding is handed instead.\n if (isBindableByName && isBindableByChecked) {\n warnIfDebug(\n 'A radio input can have two-way binding on its name attribute, or its checked attribute - not both',\n { ractive: element.root }\n );\n return RadioNameBinding;\n }\n\n if (isBindableByName) return RadioNameBinding;\n\n if (isBindableByChecked) return RadioBinding;\n\n // Dead end. Unknown binding on radio input.\n return null;\n }\n\n if (type === 'checkbox') {\n const isBindableByName = isBindable(attributes.name);\n const isBindableByChecked = isBindable(attributes.checked);\n\n // A checkbox with bindings for both name and checked. Checked treated as\n // the checkbox value, name is treated as a regular binding.\n //\n // See https://github.com/ractivejs/ractive/issues/1749\n if (isBindableByName && isBindableByChecked) return CheckboxBinding;\n\n if (isBindableByName) return CheckboxNameBinding;\n\n if (isBindableByChecked) return CheckboxBinding;\n\n // Dead end. Unknown binding on checkbox input.\n return null;\n }\n\n if (type === 'file' && isBindableByValue) return FileBinding;\n\n if (type === 'number' && isBindableByValue) return NumericBinding;\n\n if (type === 'range' && isBindableByValue) return NumericBinding;\n\n // Some input of unknown type (browser usually falls back to text).\n if (isBindableByValue) return GenericBinding;\n\n // Dead end. Some unknown input and an unbindable.\n return null;\n }\n\n // <select>\n if (name === 'select' && isBindableByValue) {\n return element.getAttribute('multiple') ? MultipleSelectBinding : SingleSelectBinding;\n }\n\n // <textarea>\n if (name === 'textarea' && isBindableByValue) return GenericBinding;\n\n // Dead end. Some unbindable element.\n return null;\n}\n","import runloop from 'src/global/runloop';\nimport getSelectedOptions from 'utils/getSelectedOptions';\nimport Binding from './Binding';\nimport handleDomEvent from './handleDomEvent';\n\nexport default class SingleSelectBinding extends Binding {\n forceUpdate() {\n const value = this.getValue();\n\n if (value !== undefined) {\n this.attribute.locked = true;\n runloop.scheduleTask(() => (this.attribute.locked = false));\n this.model.set(value);\n }\n }\n\n getInitialValue() {\n if (this.element.getAttribute('value') !== undefined) {\n return;\n }\n\n const options = this.element.options;\n const len = options.length;\n\n if (!len) return;\n\n let value;\n let optionWasSelected;\n let i = len;\n\n // take the final selected option...\n while (i--) {\n const option = options[i];\n\n if (option.getAttribute('selected')) {\n if (!option.getAttribute('disabled')) {\n value = option.getAttribute('value');\n }\n\n optionWasSelected = true;\n break;\n }\n }\n\n // or the first non-disabled option, if none are selected\n if (!optionWasSelected) {\n while (++i < len) {\n if (!options[i].getAttribute('disabled')) {\n value = options[i].getAttribute('value');\n break;\n }\n }\n }\n\n // This is an optimisation (aka hack) that allows us to forgo some\n // other more expensive work\n // TODO does it still work? seems at odds with new architecture\n if (value !== undefined) {\n this.element.attributeByName.value.value = value;\n }\n\n return value;\n }\n\n getValue() {\n const options = this.node.options;\n const len = options.length;\n\n let i;\n for (i = 0; i < len; i += 1) {\n const option = options[i];\n\n if (options[i].selected && !options[i].disabled) {\n return option._ractive ? option._ractive.value : option.value;\n }\n }\n }\n\n render() {\n super.render();\n this.element.on('change', handleDomEvent);\n }\n\n setFromNode(node) {\n const option = getSelectedOptions(node)[0];\n this.model.set(option._ractive ? option._ractive.value : option.value);\n }\n\n unrender() {\n this.element.off('change', handleDomEvent);\n }\n}\n","import Binding from './Binding';\nimport getBindingGroup from './getBindingGroup';\nimport handleDomEvent from './handleDomEvent';\n\nfunction getValue() {\n const checked = this.bindings.filter(b => b.node.checked);\n if (checked.length > 0) {\n return checked[0].element.getAttribute('value');\n }\n}\n\nexport default class RadioNameBinding extends Binding {\n constructor(element) {\n super(element, 'name');\n\n this.group = getBindingGroup('radioname', this.model, getValue);\n this.group.add(this);\n\n if (element.checked) {\n this.group.value = this.getValue();\n }\n\n this.attribute.interpolator.pathChanged = () => this.updateName();\n }\n\n bind() {\n if (!this.group.bound) {\n this.group.bind();\n }\n }\n\n getInitialValue() {\n if (this.element.getAttribute('checked')) {\n return this.element.getAttribute('value');\n }\n }\n\n getValue() {\n return this.element.getAttribute('value');\n }\n\n handleChange() {\n // If this <input> is the one that's checked, then the value of its\n // `name` model gets set to its value\n if (this.node.checked) {\n this.group.value = this.getValue();\n super.handleChange();\n }\n\n this.updateName();\n }\n\n lastVal(setting, value) {\n if (!this.group) return;\n if (setting) this.group.lastValue = value;\n else return this.group.lastValue;\n }\n\n rebind(next, previous) {\n super.rebind(next, previous);\n this.updateName();\n }\n\n rebound(update) {\n super.rebound(update);\n this.updateName();\n }\n\n render() {\n super.render();\n\n const node = this.node;\n\n this.updateName();\n node.checked = this.element.compare(this.model.get(), this.element.getAttribute('value'));\n\n this.element.on('change', handleDomEvent);\n\n if (node.attachEvent) {\n this.element.on('click', handleDomEvent);\n }\n }\n\n setFromNode(node) {\n if (node.checked) {\n this.group.model.set(this.element.getAttribute('value'));\n }\n }\n\n unbind() {\n this.group.remove(this);\n }\n\n unrender() {\n const el = this.element;\n\n el.off('change', handleDomEvent);\n el.off('click', handleDomEvent);\n }\n\n updateName() {\n if (this.node) this.node.name = `{{${this.model.getKeypath()}}}`;\n }\n}\n","import runloop from 'src/global/runloop';\nimport { removeFromArray } from 'utils/array';\nimport Binding from './Binding';\nimport handleDomEvent from './handleDomEvent';\n\nconst siblings = {};\n\nfunction getSiblings(hash) {\n return siblings[hash] || (siblings[hash] = []);\n}\n\nexport default class RadioBinding extends Binding {\n constructor(element) {\n super(element, 'checked');\n\n this.siblings = getSiblings(this.ractive._guid + this.element.getAttribute('name'));\n this.siblings.push(this);\n }\n\n getValue() {\n return this.node.checked;\n }\n\n handleChange() {\n runloop.start();\n\n this.siblings.forEach(binding => {\n binding.model.set(binding.getValue());\n });\n\n runloop.end();\n }\n\n render() {\n super.render();\n\n this.element.on('change', handleDomEvent);\n\n if (this.node.attachEvent) {\n this.element.on('click', handleDomEvent);\n }\n }\n\n setFromNode(node) {\n this.model.set(node.checked);\n }\n\n unbind() {\n removeFromArray(this.siblings, this);\n }\n\n unrender() {\n this.element.off('change', handleDomEvent);\n this.element.off('click', handleDomEvent);\n }\n}\n","import GenericBinding from './GenericBinding';\n\nexport default class NumericBinding extends GenericBinding {\n getInitialValue() {\n return undefined;\n }\n\n getValue() {\n const value = parseFloat(this.node.value);\n return isNaN(value) ? undefined : value;\n }\n\n setFromNode(node) {\n const value = parseFloat(node.value);\n if (!isNaN(value)) this.model.set(value);\n }\n}\n","import { arrayContentsMatch } from 'utils/array';\nimport getSelectedOptions from 'utils/getSelectedOptions';\nimport Binding from './Binding';\nimport handleDomEvent from './handleDomEvent';\n\nexport default class MultipleSelectBinding extends Binding {\n getInitialValue() {\n return this.element.options\n .filter(option => option.getAttribute('selected'))\n .map(option => option.getAttribute('value'));\n }\n\n getValue() {\n const options = this.element.node.options;\n const len = options.length;\n\n const selectedValues = [];\n\n for (let i = 0; i < len; i += 1) {\n const option = options[i];\n\n if (option.selected) {\n const optionValue = option._ractive ? option._ractive.value : option.value;\n selectedValues.push(optionValue);\n }\n }\n\n return selectedValues;\n }\n\n handleChange() {\n const attribute = this.attribute;\n const previousValue = attribute.getValue();\n\n const value = this.getValue();\n\n if (previousValue === undefined || !arrayContentsMatch(value, previousValue)) {\n super.handleChange();\n }\n\n return this;\n }\n\n render() {\n super.render();\n\n this.element.on('change', handleDomEvent);\n\n if (this.model.get() === undefined) {\n // get value from DOM, if possible\n this.handleChange();\n }\n }\n\n setFromNode(node) {\n const selectedOptions = getSelectedOptions(node);\n let i = selectedOptions.length;\n const result = new Array(i);\n\n while (i--) {\n const option = selectedOptions[i];\n result[i] = option._ractive ? option._ractive.value : option.value;\n }\n\n this.model.set(result);\n }\n\n unrender() {\n this.element.off('change', handleDomEvent);\n }\n}\n","import { toArray } from './array';\n\nexport default function getSelectedOptions(select) {\n /* istanbul ignore next */\n return select.selectedOptions\n ? toArray(select.selectedOptions)\n : select.options\n ? toArray(select.options).filter(option => option.selected)\n : [];\n}\n","import GenericBinding from './GenericBinding';\n\nexport default class FileBinding extends GenericBinding {\n getInitialValue() {\n /* istanbul ignore next */\n return undefined;\n }\n\n getValue() {\n /* istanbul ignore next */\n return this.node.files;\n }\n\n render() {\n /* istanbul ignore next */\n this.element.lazy = false;\n /* istanbul ignore next */\n super.render();\n }\n\n setFromNode(node) {\n /* istanbul ignore next */\n this.model.set(node.files);\n }\n}\n","import { isNumeric } from 'utils/is';\nimport Binding from './Binding';\nimport handleDomEvent from './handleDomEvent';\n\nfunction handleBlur() {\n handleDomEvent.call(this);\n\n const value = this._ractive.binding.model.get();\n this.value = value == undefined ? '' : value;\n}\n\nfunction handleDelay(delay) {\n let timeout;\n\n return function() {\n if (timeout) clearTimeout(timeout);\n\n timeout = setTimeout(() => {\n const binding = this._ractive.binding;\n if (binding.rendered) handleDomEvent.call(this);\n timeout = null;\n }, delay);\n };\n}\n\nexport default class GenericBinding extends Binding {\n getInitialValue() {\n return '';\n }\n\n getValue() {\n return this.node.value;\n }\n\n render() {\n super.render();\n\n // any lazy setting for this element overrides the root\n // if the value is a number, it's a timeout\n let lazy = this.ractive.lazy;\n let timeout = false;\n const el = this.element;\n\n if ('lazy' in this.element) {\n lazy = this.element.lazy;\n }\n\n if (isNumeric(lazy)) {\n timeout = +lazy;\n lazy = false;\n }\n\n this.handler = timeout ? handleDelay(timeout) : handleDomEvent;\n\n const node = this.node;\n\n el.on('change', handleDomEvent);\n\n if (node.type !== 'file') {\n if (!lazy) {\n el.on('input', this.handler);\n\n // IE is a special snowflake\n if (node.attachEvent) {\n el.on('keyup', this.handler);\n }\n }\n\n el.on('blur', handleBlur);\n }\n }\n\n unrender() {\n const el = this.element;\n this.rendered = false;\n\n el.off('change', handleDomEvent);\n el.off('input', this.handler);\n el.off('keyup', this.handler);\n el.off('blur', handleBlur);\n }\n}\n","import Binding from './Binding';\nimport handleDomEvent from './handleDomEvent';\n\nexport default class ContentEditableBinding extends Binding {\n getInitialValue() {\n return this.element.fragment ? this.element.fragment.toString() : '';\n }\n\n getValue() {\n return this.element.node.innerHTML;\n }\n\n render() {\n super.render();\n\n const el = this.element;\n\n el.on('change', handleDomEvent);\n el.on('blur', handleDomEvent);\n\n if (!this.ractive.lazy) {\n el.on('input', handleDomEvent);\n\n if (this.node.attachEvent) {\n el.on('keyup', handleDomEvent);\n }\n }\n }\n\n setFromNode(node) {\n this.model.set(node.innerHTML);\n }\n\n unrender() {\n const el = this.element;\n\n el.off('blur', handleDomEvent);\n el.off('change', handleDomEvent);\n el.off('input', handleDomEvent);\n el.off('keyup', handleDomEvent);\n }\n}\n","import Binding from './Binding';\nimport getBindingGroup from './getBindingGroup';\nimport handleDomEvent from './handleDomEvent';\nimport { isArray } from 'utils/is';\n\nconst push = [].push;\n\nfunction getValue() {\n const all = this.bindings\n .filter(b => b.node && b.node.checked)\n .map(b => b.element.getAttribute('value'));\n const res = [];\n all.forEach(v => {\n if (!this.bindings[0].arrayContains(res, v)) res.push(v);\n });\n return res;\n}\n\nexport default class CheckboxNameBinding extends Binding {\n constructor(element) {\n super(element, 'name');\n\n this.checkboxName = true; // so that ractive.updateModel() knows what to do with this\n\n // Each input has a reference to an array containing it and its\n // group, as two-way binding depends on being able to ascertain\n // the status of all inputs within the group\n this.group = getBindingGroup('checkboxes', this.model, getValue);\n this.group.add(this);\n\n if (this.noInitialValue) {\n this.group.noInitialValue = true;\n }\n\n // If no initial value was set, and this input is checked, we\n // update the model\n if (this.group.noInitialValue && this.element.getAttribute('checked')) {\n const existingValue = this.model.get();\n const bindingValue = this.element.getAttribute('value');\n\n if (!this.arrayContains(existingValue, bindingValue)) {\n push.call(existingValue, bindingValue); // to avoid triggering runloop with array adaptor\n }\n }\n }\n\n bind() {\n if (!this.group.bound) {\n this.group.bind();\n }\n }\n\n getInitialValue() {\n // This only gets called once per group (of inputs that\n // share a name), because it only gets called if there\n // isn't an initial value. By the same token, we can make\n // a note of that fact that there was no initial value,\n // and populate it using any `checked` attributes that\n // exist (which users should avoid, but which we should\n // support anyway to avoid breaking expectations)\n this.noInitialValue = true; // TODO are noInitialValue and wasUndefined the same thing?\n return [];\n }\n\n getValue() {\n return this.group.value;\n }\n\n handleChange() {\n this.isChecked = this.element.node.checked;\n this.group.value = this.model.get();\n const value = this.element.getAttribute('value');\n if (this.isChecked && !this.arrayContains(this.group.value, value)) {\n this.group.value.push(value);\n } else if (!this.isChecked && this.arrayContains(this.group.value, value)) {\n this.removeFromArray(this.group.value, value);\n }\n // make sure super knows there's a change\n this.lastValue = null;\n super.handleChange();\n }\n\n render() {\n super.render();\n\n const node = this.node;\n\n const existingValue = this.model.get();\n const bindingValue = this.element.getAttribute('value');\n\n if (isArray(existingValue)) {\n this.isChecked = this.arrayContains(existingValue, bindingValue);\n } else {\n this.isChecked = this.element.compare(existingValue, bindingValue);\n }\n node.name = '{{' + this.model.getKeypath() + '}}';\n node.checked = this.isChecked;\n\n this.element.on('change', handleDomEvent);\n\n // in case of IE emergency, bind to click event as well\n if (this.node.attachEvent) {\n this.element.on('click', handleDomEvent);\n }\n }\n\n setFromNode(node) {\n this.group.bindings.forEach(binding => (binding.wasUndefined = true));\n\n if (node.checked) {\n const valueSoFar = this.group.getValue();\n valueSoFar.push(this.element.getAttribute('value'));\n\n this.group.model.set(valueSoFar);\n }\n }\n\n unbind() {\n this.group.remove(this);\n }\n\n unrender() {\n const el = this.element;\n\n el.off('change', handleDomEvent);\n el.off('click', handleDomEvent);\n }\n\n arrayContains(selectValue, optionValue) {\n let i = selectValue.length;\n while (i--) {\n if (this.element.compare(optionValue, selectValue[i])) return true;\n }\n return false;\n }\n\n removeFromArray(array, item) {\n if (!array) return;\n let i = array.length;\n while (i--) {\n if (this.element.compare(item, array[i])) {\n array.splice(i, 1);\n }\n }\n }\n}\n","import { removeFromArray } from 'utils/array';\nimport Binding from './Binding';\n\nexport default function getBindingGroup(group, model, getValue) {\n const hash = `${group}-bindingGroup`;\n return model[hash] || (model[hash] = new BindingGroup(hash, model, getValue));\n}\n\nclass BindingGroup {\n constructor(hash, model, getValue) {\n this.model = model;\n this.hash = hash;\n this.getValue = () => {\n this.value = getValue.call(this);\n return this.value;\n };\n\n this.bindings = [];\n }\n\n add(binding) {\n this.bindings.push(binding);\n }\n\n bind() {\n this.value = this.model.get();\n this.model.registerTwowayBinding(this);\n this.bound = true;\n }\n\n remove(binding) {\n removeFromArray(this.bindings, binding);\n if (!this.bindings.length) {\n this.unbind();\n }\n }\n\n unbind() {\n this.model.unregisterTwowayBinding(this);\n this.bound = false;\n delete this.model[this.hash];\n }\n}\n\nBindingGroup.prototype.rebind = Binding.prototype.rebind;\n","import Binding from './Binding';\nimport handleDomEvent from './handleDomEvent';\n\nexport default class CheckboxBinding extends Binding {\n constructor(element) {\n super(element, 'checked');\n }\n\n render() {\n super.render();\n\n this.element.on('change', handleDomEvent);\n\n if (this.node.attachEvent) {\n this.element.on('click', handleDomEvent);\n }\n }\n\n unrender() {\n this.element.off('change', handleDomEvent);\n this.element.off('click', handleDomEvent);\n }\n\n getInitialValue() {\n return !!this.element.getAttribute('checked');\n }\n\n getValue() {\n return this.node.checked;\n }\n\n setFromNode(node) {\n this.model.set(node.checked);\n }\n}\n","// This is the handler for DOM events that would lead to a change in the model\n// (i.e. change, sometimes, input, and occasionally click and keyup)\nexport default function handleDomEvent() {\n this._ractive.binding.handleChange();\n}\n","import runloop from 'src/global/runloop';\nimport { warnOnceIfDebug } from 'utils/log';\nimport noop from 'utils/noop';\nimport findElement from '../../shared/findElement';\n\nexport default class Binding {\n constructor(element, name = 'value') {\n this.element = element;\n this.ractive = element.ractive;\n this.attribute = element.attributeByName[name];\n\n const interpolator = this.attribute.interpolator;\n interpolator.twowayBinding = this;\n\n const model = interpolator.model;\n\n if (model.isReadonly && !model.setRoot) {\n const keypath = model.getKeypath().replace(/^@/, '');\n warnOnceIfDebug(\n `Cannot use two-way binding on <${\n element.name\n }> element: ${keypath} is read-only. To suppress this warning use <${\n element.name\n } twoway='false'...>`,\n { ractive: this.ractive }\n );\n return false;\n }\n\n this.attribute.isTwoway = true;\n this.model = model;\n\n // initialise value, if it's undefined\n let value = model.get();\n this.wasUndefined = value === undefined;\n\n if (value === undefined && this.getInitialValue) {\n value = this.getInitialValue();\n model.set(value);\n }\n this.lastVal(true, value);\n\n const parentForm = findElement(this.element, false, 'form');\n if (parentForm) {\n this.resetValue = value;\n parentForm.formBindings.push(this);\n }\n }\n\n bind() {\n this.model.registerTwowayBinding(this);\n }\n\n handleChange() {\n const value = this.getValue();\n if (this.lastVal() === value) return;\n\n runloop.start();\n this.attribute.locked = true;\n this.model.set(value);\n this.lastVal(true, value);\n\n // if the value changes before observers fire, unlock to be updatable cause something weird and potentially freezy is up\n if (this.model.get() !== value) this.attribute.locked = false;\n else runloop.scheduleTask(() => (this.attribute.locked = false));\n\n runloop.end();\n }\n\n lastVal(setting, value) {\n if (setting) this.lastValue = value;\n else return this.lastValue;\n }\n\n rebind(next, previous) {\n if (this.model && this.model === previous) previous.unregisterTwowayBinding(this);\n if (next) {\n this.model = next;\n runloop.scheduleTask(() => next.registerTwowayBinding(this));\n }\n }\n\n rebound() {\n if (this.model) this.model.unregisterTwowayBinding(this);\n this.model = this.attribute.interpolator.model;\n this.model.registerTwowayBinding(this);\n }\n\n render() {\n this.node = this.element.node;\n this.node._ractive.binding = this;\n this.rendered = true; // TODO is this used anywhere?\n }\n\n setFromNode(node) {\n this.model.set(node.value);\n }\n\n unbind() {\n this.model.unregisterTwowayBinding(this);\n }\n}\n\nBinding.prototype.unrender = noop;\n","import noop from 'utils/noop';\nimport Item from './shared/Item';\n\nexport default class Doctype extends Item {\n toString() {\n return '<!DOCTYPE' + this.template.a + '>';\n }\n}\n\nconst proto = Doctype.prototype;\nproto.bind = proto.render = proto.teardown = proto.unbind = proto.unrender = proto.update = noop;\n","import { findInViewHierarchy } from 'shared/registry';\nimport { warnOnce } from 'utils/log';\nimport { missingPlugin } from 'config/errors';\nimport noop from 'utils/noop';\nimport runloop from 'src/global/runloop';\nimport { rebindMatch } from 'src/shared/rebind';\nimport findElement from '../shared/findElement';\nimport { setupArgsFn, teardownArgsFn } from '../shared/directiveArgs';\n\nconst missingDecorator = {\n update: noop,\n teardown: noop\n};\n\nexport default class Decorator {\n constructor(options) {\n this.owner = options.owner || options.up.owner || findElement(options.up);\n this.element = this.owner.attributeByName ? this.owner : findElement(options.up);\n this.up = options.up || this.owner.up;\n this.ractive = this.owner.ractive;\n const template = (this.template = options.template);\n\n this.name = template.n;\n\n this.node = null;\n this.handle = null;\n\n this.element.decorators.push(this);\n }\n\n bind() {\n setupArgsFn(this, this.template, this.up, { register: true });\n }\n\n bubble() {\n if (!this.dirty) {\n this.dirty = true;\n // decorators may be owned directly by an element or by a fragment if conditional\n this.owner.bubble();\n this.up.bubble();\n }\n }\n\n destroyed() {\n if (this.handle) {\n this.handle.teardown();\n this.handle = null;\n }\n this.shouldDestroy = true;\n }\n\n handleChange() {\n this.bubble();\n }\n\n rebind(next, previous, safe) {\n const idx = this.models.indexOf(previous);\n if (!~idx) return;\n\n next = rebindMatch(this.template.f.r[idx], next, previous);\n if (next === previous) return;\n\n previous.unregister(this);\n this.models.splice(idx, 1, next);\n if (next) next.addShuffleRegister(this, 'mark');\n\n if (!safe) this.bubble();\n }\n\n rebound(update) {\n teardownArgsFn(this, this.template);\n setupArgsFn(this, this.template, this.up, { register: true });\n if (update) this.bubble();\n }\n\n render() {\n this.shouldDestroy = false;\n if (this.handle) this.unrender();\n runloop.scheduleTask(() => {\n // bail if the host element has managed to become unrendered\n if (!this.element.rendered) return;\n\n const fn = findInViewHierarchy('decorators', this.ractive, this.name);\n\n if (!fn) {\n warnOnce(missingPlugin(this.name, 'decorator'));\n this.handle = missingDecorator;\n return;\n }\n\n this.node = this.element.node;\n\n let args;\n if (this.fn) {\n args = this.models.map(model => {\n if (!model) return undefined;\n\n return model.get();\n });\n args = this.fn.apply(this.ractive, args);\n }\n\n this.handle = fn.apply(this.ractive, [this.node].concat(args));\n\n if (!this.handle || !this.handle.teardown) {\n throw new Error(\n `The '${this.name}' decorator must return an object with a teardown method`\n );\n }\n\n // watch out for decorators that cause their host element to be unrendered\n if (this.shouldDestroy) this.destroyed();\n }, true);\n }\n\n toString() {\n return '';\n }\n\n unbind() {\n teardownArgsFn(this, this.template);\n }\n\n unrender(shouldDestroy) {\n if ((!shouldDestroy || this.element.rendered) && this.handle) {\n this.handle.teardown();\n this.handle = null;\n }\n }\n\n update() {\n const instance = this.handle;\n\n if (!this.dirty) {\n if (instance && instance.invalidate) {\n runloop.scheduleTask(() => instance.invalidate(), true);\n }\n return;\n }\n\n this.dirty = false;\n\n if (instance) {\n if (!instance.update) {\n this.unrender();\n this.render();\n } else {\n const args = this.models.map(model => model && model.get());\n instance.update.apply(this.ractive, this.fn.apply(this.ractive, args));\n }\n }\n }\n}\n\nDecorator.prototype.firstNode = noop;\n","import getFunction from 'shared/getFunction';\nimport resolveReference from '../../resolvers/resolveReference';\n\nexport function setupArgsFn(item, template, fragment, opts = {}) {\n if (template && template.f && template.f.s) {\n item.fn = getFunction(template.f.s, template.f.r.length);\n if (opts.register === true) {\n item.models = resolveArgs(item, template, fragment, opts);\n }\n }\n}\n\nexport function resolveArgs(item, template, fragment, opts = {}) {\n return template.f.r.map((ref, i) => {\n let model;\n\n if (opts.specialRef && (model = opts.specialRef(ref, i))) return model;\n\n model = resolveReference(fragment, ref);\n if (opts.register === true) {\n model.register(item);\n }\n\n return model;\n });\n}\n\nexport function teardownArgsFn(item, template) {\n if (template && template.f && template.f.s) {\n if (item.models)\n item.models.forEach(m => {\n if (m && m.unregister) m.unregister(item);\n });\n item.models = null;\n }\n}\n","import runloop from 'src/global/runloop';\nimport { updateAnchors } from 'shared/anchors';\nimport { bind, render as callRender, unbind, unrender, update } from 'shared/methodCallers';\nimport { teardown } from 'src/Ractive/prototype/teardown';\nimport getRactiveContext from 'shared/getRactiveContext';\nimport { warnIfDebug } from 'utils/log';\nimport { createDocumentFragment } from 'utils/dom';\nimport {\n ANCHOR,\n ATTRIBUTE,\n BINDING_FLAG,\n COMPONENT,\n DECORATOR,\n EVENT,\n TRANSITION,\n YIELDER\n} from 'config/types';\nimport construct from 'src/Ractive/construct';\nimport initialise from 'src/Ractive/initialise';\nimport render from 'src/Ractive/render';\nimport Item from './shared/Item';\nimport ConditionalAttribute from './element/ConditionalAttribute';\nimport createItem from './createItem';\nimport parser from 'src/Ractive/config/runtime-parser';\nimport { assign, create } from 'utils/object';\nimport { isArray, isString } from 'utils/is';\n\nexport default class Component extends Item {\n constructor(options, ComponentConstructor) {\n super(options);\n let template = options.template;\n this.isAnchor = template.t === ANCHOR;\n this.type = this.isAnchor ? ANCHOR : COMPONENT; // override ELEMENT from super\n let attrs = template.m;\n\n const partials = template.p || {};\n if (!('content' in partials)) partials.content = template.f || [];\n this._partials = partials; // TEMP\n\n if (this.isAnchor) {\n this.name = template.n;\n\n this.addChild = addChild;\n this.removeChild = removeChild;\n } else {\n const instance = create(ComponentConstructor.prototype);\n\n this.instance = instance;\n this.name = template.e;\n\n if (instance.el || instance.target) {\n warnIfDebug(\n `The <${this.name}> component has a default '${\n instance.el ? 'el' : 'target'\n }' property; it has been disregarded`\n );\n instance.el = instance.target = null;\n }\n\n // find container\n let fragment = options.up;\n let container;\n while (fragment) {\n if (fragment.owner.type === YIELDER) {\n container = fragment.owner.container;\n break;\n }\n\n fragment = fragment.parent;\n }\n\n // add component-instance-specific properties\n instance.parent = this.up.ractive;\n instance.container = container || null;\n instance.root = instance.parent.root;\n instance.component = this;\n\n construct(this.instance, { partials });\n\n // these can be modified during construction\n template = this.template;\n attrs = template.m;\n\n // allow components that are so inclined to add programmatic mappings\n if (isArray(this.mappings)) {\n attrs = (attrs || []).concat(this.mappings);\n } else if (isString(this.mappings)) {\n attrs = (attrs || []).concat(parser.parse(this.mappings, { attributes: true }).t);\n }\n\n // for hackability, this could be an open option\n // for any ractive instance, but for now, just\n // for components and just for ractive...\n instance._inlinePartials = partials;\n }\n\n this.attributeByName = {};\n this.attributes = [];\n\n if (attrs) {\n const leftovers = [];\n attrs.forEach(template => {\n switch (template.t) {\n case ATTRIBUTE:\n case EVENT:\n this.attributes.push(\n createItem({\n owner: this,\n up: this.up,\n template\n })\n );\n break;\n\n case TRANSITION:\n case BINDING_FLAG:\n case DECORATOR:\n break;\n\n default:\n leftovers.push(template);\n break;\n }\n });\n\n if (leftovers.length) {\n this.attributes.push(\n new ConditionalAttribute({\n owner: this,\n up: this.up,\n template: leftovers\n })\n );\n }\n }\n\n this.eventHandlers = [];\n }\n\n bind() {\n if (!this.isAnchor) {\n this.attributes.forEach(bind);\n this.eventHandlers.forEach(bind);\n\n initialise(\n this.instance,\n {\n partials: this._partials\n },\n {\n cssIds: this.up.cssIds\n }\n );\n\n if (this.instance.target || this.instance.el) this.extern = true;\n\n this.bound = true;\n }\n }\n\n bubble() {\n if (!this.dirty) {\n this.dirty = true;\n this.up.bubble();\n }\n }\n\n destroyed() {\n if (!this.isAnchor && this.instance.fragment) this.instance.fragment.destroyed();\n }\n\n detach() {\n if (this.isAnchor) {\n if (this.instance) return this.instance.fragment.detach();\n return createDocumentFragment();\n }\n\n return this.instance.fragment.detach();\n }\n\n find(selector, options) {\n if (this.instance) return this.instance.fragment.find(selector, options);\n }\n\n findAll(selector, options) {\n if (this.instance) this.instance.fragment.findAll(selector, options);\n }\n\n findComponent(name, options) {\n if (!name || this.name === name) return this.instance;\n\n if (this.instance.fragment) {\n return this.instance.fragment.findComponent(name, options);\n }\n }\n\n findAllComponents(name, options) {\n const { result } = options;\n\n if (this.instance && (!name || this.name === name)) {\n result.push(this.instance);\n }\n\n if (this.instance) this.instance.findAllComponents(name, options);\n }\n\n firstNode(skipParent) {\n if (this.instance) return this.instance.fragment.firstNode(skipParent);\n }\n\n getContext(...assigns) {\n assigns.unshift(this.instance);\n return getRactiveContext.apply(null, assigns);\n }\n\n rebound(update) {\n this.attributes.forEach(x => x.rebound(update));\n }\n\n render(target, occupants) {\n if (this.isAnchor) {\n this.rendered = true;\n this.target = target;\n\n if (!checking.length) {\n checking.push(this.ractive);\n if (occupants) {\n this.occupants = occupants;\n checkAnchors();\n this.occupants = null;\n } else {\n runloop.scheduleTask(checkAnchors, true);\n }\n }\n } else {\n this.attributes.forEach(callRender);\n this.eventHandlers.forEach(callRender);\n\n if (this.extern) {\n this.instance.delegate = false;\n this.instance.render();\n } else {\n render(this.instance, target, null, occupants);\n }\n\n this.rendered = true;\n }\n }\n\n shuffled() {\n super.shuffled();\n this.instance &&\n !this.instance.isolated &&\n this.instance.fragment &&\n this.instance.fragment.shuffled();\n }\n\n toString() {\n if (this.instance) return this.instance.toHTML();\n }\n\n unbind() {\n if (!this.isAnchor) {\n this.bound = false;\n\n this.attributes.forEach(unbind);\n\n teardown(this.instance, () => runloop.promise());\n }\n }\n\n unrender(shouldDestroy) {\n this.shouldDestroy = shouldDestroy;\n\n if (this.isAnchor) {\n if (this.item) unrenderItem(this, this.item);\n this.target = null;\n if (!checking.length) {\n checking.push(this.ractive);\n runloop.scheduleTask(checkAnchors, true);\n }\n } else {\n this.instance.unrender();\n this.instance.el = this.instance.target = null;\n this.attributes.forEach(unrender);\n this.eventHandlers.forEach(unrender);\n }\n\n this.rendered = false;\n }\n\n update() {\n this.dirty = false;\n if (this.instance) {\n this.instance.fragment.update();\n this.attributes.forEach(update);\n this.eventHandlers.forEach(update);\n }\n }\n}\n\nfunction addChild(meta) {\n if (this.item) this.removeChild(this.item);\n\n const child = meta.instance;\n meta.anchor = this;\n\n meta.up = this.up;\n meta.name = meta.nameOption || this.name;\n this.name = meta.name;\n\n if (!child.isolated) child.viewmodel.attached(this.up);\n\n // render as necessary\n if (this.rendered) {\n renderItem(this, meta);\n }\n}\n\nfunction removeChild(meta) {\n // unrender as necessary\n if (this.item === meta) {\n unrenderItem(this, meta);\n this.name = this.template.n;\n }\n}\n\nfunction renderItem(anchor, meta) {\n if (!anchor.rendered) return;\n\n meta.shouldDestroy = false;\n meta.up = anchor.up;\n\n anchor.item = meta;\n anchor.instance = meta.instance;\n const nextNode = anchor.up.findNextNode(anchor);\n\n if (meta.instance.fragment.rendered) {\n meta.instance.unrender();\n }\n\n meta.partials = meta.instance.partials;\n meta.instance.partials = assign(create(meta.partials), meta.partials, anchor._partials);\n\n meta.instance.fragment.unbind();\n meta.instance.fragment.componentParent = anchor.up;\n meta.instance.fragment.bind(meta.instance.viewmodel);\n\n anchor.attributes.forEach(bind);\n anchor.eventHandlers.forEach(bind);\n anchor.attributes.forEach(callRender);\n anchor.eventHandlers.forEach(callRender);\n\n const target = anchor.up.findParentNode();\n render(meta.instance, target, target.contains(nextNode) ? nextNode : null, anchor.occupants);\n\n if (meta.lastBound !== anchor) {\n meta.lastBound = anchor;\n }\n}\n\nfunction unrenderItem(anchor, meta) {\n if (!anchor.rendered) return;\n\n meta.shouldDestroy = true;\n meta.instance.unrender();\n\n anchor.eventHandlers.forEach(unrender);\n anchor.attributes.forEach(unrender);\n anchor.eventHandlers.forEach(unbind);\n anchor.attributes.forEach(unbind);\n\n meta.instance.el = meta.instance.anchor = null;\n meta.instance.fragment.componentParent = null;\n meta.up = null;\n meta.anchor = null;\n anchor.item = null;\n anchor.instance = null;\n}\n\nlet checking = [];\nexport function checkAnchors() {\n const list = checking;\n checking = [];\n\n list.forEach(updateAnchors);\n}\n","import { fatal, warnIfDebug, welcome } from 'utils/log';\nimport { missingPlugin } from 'config/errors';\nimport { ensureArray, combine } from 'utils/array';\nimport { findInViewHierarchy } from 'shared/registry';\nimport dataConfigurator from './config/custom/data';\nimport RootModel from 'src/model/RootModel';\nimport hooks from 'src/events/Hook';\nimport subscribe from './helpers/subscribe';\nimport Ractive from '../Ractive';\nimport { ATTRIBUTE, BINDING_FLAG, DECORATOR, INTERPOLATOR, TRANSITION } from 'config/types';\nimport { assign, create, hasOwn } from 'utils/object';\nimport { isArray, isString } from 'utils/is';\nimport { compute } from 'src/Ractive/prototype/compute';\nimport getRactiveContext from '../shared/getRactiveContext';\n\nconst registryNames = [\n 'adaptors',\n 'components',\n 'decorators',\n 'easing',\n 'events',\n 'interpolators',\n 'partials',\n 'transitions'\n];\n\nconst protoRegistries = ['computed', 'helpers'];\n\nlet uid = 0;\n\nexport default function construct(ractive, options) {\n if (Ractive.DEBUG) welcome();\n\n initialiseProperties(ractive);\n handleAttributes(ractive);\n\n // set up event subscribers\n subscribe(ractive, options, 'on');\n\n // if there's not a delegation setting, inherit from parent if it's not default\n if (\n !hasOwn(options, 'delegate') &&\n ractive.parent &&\n ractive.parent.delegate !== ractive.delegate\n ) {\n ractive.delegate = false;\n }\n\n // plugins that need to run at construct\n if (isArray(options.use)) {\n ractive.use.apply(ractive, options.use.filter(p => p.construct));\n }\n\n hooks.construct.fire(ractive, options);\n if (options.onconstruct) options.onconstruct.call(ractive, getRactiveContext(ractive), options);\n\n // Add registries\n let i = registryNames.length;\n while (i--) {\n const name = registryNames[i];\n ractive[name] = assign(create(ractive.constructor[name] || null), options[name]);\n }\n\n i = protoRegistries.length;\n while (i--) {\n const name = protoRegistries[i];\n ractive[name] = assign(create(ractive.constructor.prototype[name]), options[name]);\n }\n\n if (ractive._attributePartial) {\n ractive.partials['extra-attributes'] = ractive._attributePartial;\n delete ractive._attributePartial;\n }\n\n // Create a viewmodel\n const viewmodel = new RootModel({\n adapt: getAdaptors(ractive, ractive.adapt, options),\n data: dataConfigurator.init(ractive.constructor, ractive, options),\n ractive\n });\n\n // once resolved, share the adaptors array between the root model and instance\n ractive.adapt = viewmodel.adaptors;\n\n ractive.viewmodel = viewmodel;\n\n for (const k in ractive.computed) {\n compute.call(ractive, k, ractive.computed[k]);\n }\n}\n\nfunction getAdaptors(ractive, protoAdapt, options) {\n protoAdapt = protoAdapt.map(lookup);\n const adapt = ensureArray(options.adapt).map(lookup);\n\n const srcs = [protoAdapt, adapt];\n if (ractive.parent && !ractive.isolated) {\n srcs.push(ractive.parent.viewmodel.adaptors);\n }\n\n return combine.apply(null, srcs);\n\n function lookup(adaptor) {\n if (isString(adaptor)) {\n adaptor = findInViewHierarchy('adaptors', ractive, adaptor);\n\n if (!adaptor) {\n fatal(missingPlugin(adaptor, 'adaptor'));\n }\n }\n\n return adaptor;\n }\n}\n\nfunction initialiseProperties(ractive) {\n // Generate a unique identifier, for places where you'd use a weak map if it\n // existed\n ractive._guid = 'r-' + uid++;\n\n // events\n ractive._subs = create(null);\n ractive._nsSubs = 0;\n\n // storage for item configuration from instantiation to reset,\n // like dynamic functions or original values\n ractive._config = {};\n\n // events\n ractive.event = null;\n ractive._eventQueue = [];\n\n // observers\n ractive._observers = [];\n\n // external children\n ractive._children = [];\n ractive._children.byName = {};\n ractive.children = ractive._children;\n\n if (!ractive.component) {\n ractive.root = ractive;\n ractive.parent = ractive.container = null; // TODO container still applicable?\n }\n}\n\nfunction handleAttributes(ractive) {\n const component = ractive.component;\n const attributes = ractive.constructor.attributes;\n\n if (attributes && component) {\n const tpl = component.template;\n const attrs = tpl.m ? tpl.m.slice() : [];\n\n // grab all of the passed attribute names\n const props = attrs.filter(a => a.t === ATTRIBUTE).map(a => a.n);\n\n // warn about missing requireds\n attributes.required.forEach(p => {\n if (!~props.indexOf(p)) {\n warnIfDebug(`Component '${component.name}' requires attribute '${p}' to be provided`);\n }\n });\n\n // set up a partial containing non-property attributes\n const all = attributes.optional.concat(attributes.required);\n const partial = [];\n let i = attrs.length;\n while (i--) {\n const a = attrs[i];\n if (a.t === ATTRIBUTE && !~all.indexOf(a.n)) {\n if (attributes.mapAll) {\n // map the attribute if requested and make the extra attribute in the partial refer to the mapping\n partial.unshift({\n t: ATTRIBUTE,\n n: a.n,\n f: [{ t: INTERPOLATOR, r: `~/${a.n}` }]\n });\n } else {\n // transfer the attribute to the extra attributes partal\n partial.unshift(attrs.splice(i, 1)[0]);\n }\n } else if (\n !attributes.mapAll &&\n (a.t === DECORATOR || a.t === TRANSITION || a.t === BINDING_FLAG)\n ) {\n partial.unshift(attrs.splice(i, 1)[0]);\n }\n }\n\n if (partial.length) component.template = { t: tpl.t, e: tpl.e, f: tpl.f, m: attrs, p: tpl.p };\n ractive._attributePartial = partial;\n }\n}\n","import { create, toPairs } from 'utils/object';\nimport { isFunction, isObjectType } from 'utils/is';\n\nexport default function subscribe(instance, options, type) {\n const subs = (instance.constructor[`_${type}`] || []).concat(toPairs(options[type] || []));\n const single = type === 'on' ? 'once' : `${type}Once`;\n\n subs.forEach(([target, config]) => {\n if (isFunction(config)) {\n instance[type](target, config);\n } else if (isObjectType(config) && isFunction(config.handler)) {\n instance[config.once ? single : type](target, config.handler, create(config));\n }\n });\n}\n","import { capture } from 'src/global/capture';\nimport Model from './Model';\nimport { handleChange, mark } from 'shared/methodCallers';\nimport RactiveModel from './specials/RactiveModel';\nimport SharedModel, { GlobalModel, SharedModel as SharedBase } from './specials/SharedModel';\nimport { splitKeypath, unescapeKey } from 'shared/keypaths';\nimport resolveReference from 'src/view/resolvers/resolveReference';\nimport noop from 'utils/noop';\n\nconst specialModels = {\n '@this'(root) {\n return root.getRactiveModel();\n },\n '@global'() {\n return GlobalModel;\n },\n '@shared'() {\n return SharedModel;\n },\n '@style'(root) {\n return root.getRactiveModel().joinKey('cssData');\n },\n '@helpers'(root) {\n return root.getHelpers();\n }\n};\nspecialModels['@'] = specialModels['@this'];\n\nexport default class RootModel extends Model {\n constructor(options) {\n super(null, null);\n\n this.isRoot = true;\n this.root = this;\n this.ractive = options.ractive; // TODO sever this link\n\n this.value = options.data;\n this.adaptors = options.adapt;\n this.adapt();\n }\n\n attached(fragment) {\n attachImplicits(this, fragment);\n }\n\n createLink(keypath, target, targetPath, options) {\n const keys = splitKeypath(keypath);\n\n let model = this;\n while (keys.length) {\n const key = keys.shift();\n model = model.childByKey[key] || model.joinKey(key);\n }\n\n return model.link(target, targetPath, options);\n }\n\n detached() {\n detachImplicits(this);\n }\n\n get(shouldCapture, options) {\n if (shouldCapture) capture(this);\n\n if (!options || options.virtual !== false) {\n return this.getVirtual();\n } else {\n return this.value;\n }\n }\n\n getHelpers() {\n if (!this.helpers) this.helpers = new SharedBase(this.ractive.helpers, 'helpers', this.ractive);\n return this.helpers;\n }\n\n getKeypath() {\n return '';\n }\n\n getRactiveModel() {\n return this.ractiveModel || (this.ractiveModel = new RactiveModel(this.ractive));\n }\n\n getValueChildren() {\n const children = super.getValueChildren(this.value);\n\n this.children.forEach(child => {\n if (child._link) {\n const idx = children.indexOf(child);\n if (~idx) children.splice(idx, 1, child._link);\n else children.push(child._link);\n }\n });\n\n return children;\n }\n\n has(key) {\n if (key[0] === '~' && key[1] === '/') key = key.slice(2);\n if (specialModels[key] || key === '') return true;\n\n if (super.has(key)) {\n return true;\n } else {\n const unescapedKey = unescapeKey(key);\n\n // mappings/links and computations\n if (this.childByKey[unescapedKey] && this.childByKey[unescapedKey]._link) return true;\n }\n }\n\n joinKey(key, opts) {\n if (key[0] === '~' && key[1] === '/') key = key.slice(2);\n\n if (key[0] === '@') {\n const fn = specialModels[key];\n if (fn) return fn(this);\n } else {\n return super.joinKey(key, opts);\n }\n }\n\n set(value) {\n // TODO wrapping root node is a baaaad idea. We should prevent this\n const wrapper = this.wrapper;\n if (wrapper) {\n const shouldTeardown = !wrapper.reset || wrapper.reset(value) === false;\n\n if (shouldTeardown) {\n wrapper.teardown();\n this.wrapper = null;\n this.value = value;\n this.adapt();\n }\n } else {\n this.value = value;\n this.adapt();\n }\n\n this.deps.forEach(handleChange);\n this.children.forEach(mark);\n }\n\n retrieve() {\n return this.wrapper ? this.wrapper.get() : this.value;\n }\n\n teardown() {\n super.teardown();\n this.ractiveModel && this.ractiveModel.teardown();\n }\n}\nRootModel.prototype.update = noop;\n\nfunction attachImplicits(model, fragment) {\n if (model._link && model._link.implicit && model._link.isDetached()) {\n model.attach(fragment);\n }\n\n // look for virtual children to relink and cascade\n for (const k in model.childByKey) {\n if (k in model.value) {\n attachImplicits(model.childByKey[k], fragment);\n } else if (!model.childByKey[k]._link || model.childByKey[k]._link.isDetached()) {\n const mdl = resolveReference(fragment, k);\n if (mdl) {\n model.childByKey[k].link(mdl, k, { implicit: true });\n }\n }\n }\n}\n\nfunction detachImplicits(model) {\n if (model._link && model._link.implicit) {\n model.unlink();\n }\n\n for (const k in model.childByKey) {\n detachImplicits(model.childByKey[k]);\n }\n}\n","import { SharedModel } from './SharedModel';\nimport { Missing } from '../LinkModel';\nimport { create } from 'utils/object';\n\nexport default class RactiveModel extends SharedModel {\n constructor(ractive) {\n super(ractive, '@this');\n this.ractive = ractive;\n }\n\n joinKey(key) {\n const model = super.joinKey(key);\n\n if ((key === 'root' || key === 'parent') && !model.isLink) return initLink(model, key);\n else if (key === 'data') return this.ractive.viewmodel;\n else if (key === 'cssData') return this.ractive.constructor._cssModel;\n\n return model;\n }\n}\n\nfunction initLink(model, key) {\n model.applyValue = function(value) {\n this.parent.value[key] = value;\n if (value && value.viewmodel) {\n this.link(value.viewmodel.getRactiveModel(), key);\n this._link.markedAll();\n } else {\n this.link(create(Missing), key);\n this._link.markedAll();\n }\n };\n\n if (key === 'root') {\n const mark = model.mark;\n model.mark = function(force) {\n if (this._marking) return;\n this._marking = true;\n mark.apply(this, force);\n this._marking = false;\n };\n }\n\n model.applyValue(model.parent.ractive[key], key);\n model._link.set = v => model.applyValue(v);\n model._link.applyValue = v => model.applyValue(v);\n\n return model._link;\n}\n","import hooks from 'src/events/Hook';\nimport { removeFromArray } from 'utils/array';\nimport { cancel } from 'shared/methodCallers';\nimport { warnIfDebug } from 'utils/log';\n\n// Teardown. This goes through the root fragment and all its children, removing observers\n// and generally cleaning up after itself\n\nexport default function Ractive$teardown() {\n if (this.torndown) {\n warnIfDebug('ractive.teardown() was called on a Ractive instance that was already torn down');\n return Promise.resolve();\n }\n\n this.shouldDestroy = true;\n return teardown(this, () => (this.fragment.rendered ? this.unrender() : Promise.resolve()));\n}\n\nexport function teardown(instance, getPromise) {\n instance.torndown = true;\n instance.fragment.unbind();\n instance._observers.slice().forEach(cancel);\n\n if (instance.el && instance.el.__ractive_instances__) {\n removeFromArray(instance.el.__ractive_instances__, instance);\n }\n\n const promise = getPromise();\n\n hooks.teardown.fire(instance);\n\n promise.then(() => {\n hooks.destruct.fire(instance);\n instance.viewmodel.teardown();\n });\n\n return promise;\n}\n","import Item from './shared/Item';\nimport noop from 'utils/noop';\nimport { detachNode } from 'utils/dom';\nimport { doc } from 'config/environment';\nimport { assign, create } from 'utils/object';\n\nexport default function Comment(options) {\n Item.call(this, options);\n}\n\nconst proto = create(Item.prototype);\n\nassign(proto, {\n bind: noop,\n unbind: noop,\n update: noop,\n\n detach() {\n return detachNode(this.node);\n },\n\n firstNode() {\n return this.node;\n },\n\n render(target) {\n this.rendered = true;\n\n this.node = doc.createComment(this.template.c);\n target.appendChild(this.node);\n },\n\n toString() {\n return `<!-- ${this.template.c} -->`;\n },\n\n unrender(shouldDestroy) {\n if (this.rendered && shouldDestroy) this.detach();\n this.rendered = false;\n }\n});\n\nComment.prototype = proto;\n","import { INTERPOLATOR, ELEMENT } from 'config/types';\nimport Item from '../shared/Item';\nimport Fragment from '../../Fragment';\nimport findElement from '../shared/findElement';\nimport { isArray } from 'utils/is';\n\nexport default class BindingFlag extends Item {\n constructor(options) {\n super(options);\n\n this.owner = options.owner || options.up.owner || findElement(options.up);\n this.element = this.owner.attributeByName ? this.owner : findElement(options.up);\n this.flag = options.template.v === 'l' ? 'lazy' : 'twoway';\n this.bubbler = this.owner === this.element ? this.element : this.up;\n\n if (this.element.type === ELEMENT) {\n if (isArray(options.template.f)) {\n this.fragment = new Fragment({\n owner: this,\n template: options.template.f\n });\n }\n\n this.interpolator =\n this.fragment &&\n this.fragment.items.length === 1 &&\n this.fragment.items[0].type === INTERPOLATOR &&\n this.fragment.items[0];\n }\n }\n\n bind() {\n if (this.fragment) this.fragment.bind();\n set(this, this.getValue(), true);\n }\n\n bubble() {\n if (!this.dirty) {\n this.bubbler.bubble();\n this.dirty = true;\n }\n }\n\n getValue() {\n if (this.fragment) return this.fragment.valueOf();\n else if ('value' in this) return this.value;\n else if ('f' in this.template) return this.template.f;\n else return true;\n }\n\n render() {\n set(this, this.getValue(), true);\n }\n\n toString() {\n return '';\n }\n\n unbind() {\n if (this.fragment) this.fragment.unbind();\n\n delete this.element[this.flag];\n }\n\n unrender() {\n if (this.element.rendered) this.element.recreateTwowayBinding();\n }\n\n update() {\n if (this.dirty) {\n this.dirty = false;\n if (this.fragment) this.fragment.update();\n set(this, this.getValue(), true);\n }\n }\n}\n\nfunction set(flag, value, update) {\n if (value === 0) {\n flag.value = true;\n } else if (value === 'true') {\n flag.value = true;\n } else if (value === 'false' || value === '0') {\n flag.value = false;\n } else {\n flag.value = value;\n }\n\n const current = flag.element[flag.flag];\n flag.element[flag.flag] = flag.value;\n if (update && !flag.element.attributes.binding && current !== flag.value) {\n flag.element.recreateTwowayBinding();\n }\n\n return flag.value;\n}\n","import { INTERPOLATOR } from 'config/types';\nimport namespaces from 'config/namespaces';\nimport { safeAttributeString } from 'utils/dom';\nimport { booleanAttributes } from 'utils/html';\nimport hyphenateCamel from 'utils/hyphenateCamel';\nimport Fragment from '../../Fragment';\nimport Item from '../shared/Item';\nimport findElement from '../shared/findElement';\nimport getUpdateDelegate from './attribute/getUpdateDelegate';\nimport propertyNames from './attribute/propertyNames';\nimport { inAttributes } from './ConditionalAttribute';\nimport { isArray, isString } from 'utils/is';\n\nfunction lookupNamespace(node, prefix) {\n const qualified = `xmlns:${prefix}`;\n\n while (node) {\n if (node.hasAttribute && node.hasAttribute(qualified)) return node.getAttribute(qualified);\n node = node.parentNode;\n }\n\n return namespaces[prefix];\n}\n\nlet attribute = false;\nexport function inAttribute() {\n return attribute;\n}\n\nexport default class Attribute extends Item {\n constructor(options) {\n super(options);\n\n this.name = options.template.n;\n this.namespace = null;\n\n this.owner = options.owner || options.up.owner || options.element || findElement(options.up);\n this.element =\n options.element || (this.owner.attributeByName ? this.owner : findElement(options.up));\n this.up = options.up; // shared\n this.ractive = this.up.ractive;\n\n this.rendered = false;\n this.updateDelegate = null;\n this.fragment = null;\n\n this.element.attributeByName[this.name] = this;\n\n if (!isArray(options.template.f)) {\n this.value = options.template.f;\n if (this.value === 0) {\n this.value = '';\n } else if (this.value === undefined) {\n this.value = true;\n }\n return;\n } else {\n this.fragment = new Fragment({\n owner: this,\n template: options.template.f\n });\n }\n\n this.interpolator =\n this.fragment &&\n this.fragment.items.length === 1 &&\n this.fragment.items[0].type === INTERPOLATOR &&\n this.fragment.items[0];\n\n if (this.interpolator) this.interpolator.owner = this;\n }\n\n bind() {\n if (this.fragment) {\n this.fragment.bind();\n }\n }\n\n bubble() {\n if (!this.dirty) {\n this.up.bubble();\n this.element.bubble();\n this.dirty = true;\n }\n }\n\n firstNode() {}\n\n getString() {\n attribute = true;\n const value = this.fragment\n ? this.fragment.toString()\n : this.value != null\n ? '' + this.value\n : '';\n attribute = false;\n return value;\n }\n\n // TODO could getValue ever be called for a static attribute,\n // or can we assume that this.fragment exists?\n getValue() {\n attribute = true;\n const value = this.fragment\n ? this.fragment.valueOf()\n : booleanAttributes[this.name.toLowerCase()]\n ? true\n : this.value;\n attribute = false;\n return value;\n }\n\n render() {\n const node = this.element.node;\n this.node = node;\n\n // should we use direct property access, or setAttribute?\n if (!node.namespaceURI || node.namespaceURI === namespaces.html) {\n this.propertyName = propertyNames[this.name] || this.name;\n\n if (node[this.propertyName] !== undefined) {\n this.useProperty = true;\n }\n\n // is attribute a boolean attribute or 'value'? If so we're better off doing e.g.\n // node.selected = true rather than node.setAttribute( 'selected', '' )\n if (booleanAttributes[this.name.toLowerCase()] || this.isTwoway) {\n this.isBoolean = true;\n }\n\n if (this.propertyName === 'value') {\n node._ractive.value = this.value;\n }\n }\n\n if (node.namespaceURI) {\n const index = this.name.indexOf(':');\n if (index !== -1) {\n this.namespace = lookupNamespace(node, this.name.slice(0, index));\n } else {\n this.namespace = node.namespaceURI;\n }\n }\n\n this.rendered = true;\n this.updateDelegate = getUpdateDelegate(this);\n this.updateDelegate();\n }\n\n toString() {\n if (inAttributes()) return '';\n attribute = true;\n\n const value = this.getValue();\n\n // Special case - select and textarea values (should not be stringified)\n if (\n this.name === 'value' &&\n (this.element.getAttribute('contenteditable') !== undefined ||\n (this.element.name === 'select' || this.element.name === 'textarea'))\n ) {\n return;\n }\n\n // Special case – bound radio `name` attributes\n if (\n this.name === 'name' &&\n this.element.name === 'input' &&\n this.interpolator &&\n this.element.getAttribute('type') === 'radio'\n ) {\n return `name=\"{{${this.interpolator.model.getKeypath()}}}\"`;\n }\n\n // Special case - style and class attributes and directives\n if (\n this.owner === this.element &&\n (this.name === 'style' || this.name === 'class' || this.style || this.inlineClass)\n ) {\n return;\n }\n\n if (\n !this.rendered &&\n this.owner === this.element &&\n (!this.name.indexOf('style-') || !this.name.indexOf('class-'))\n ) {\n if (!this.name.indexOf('style-')) {\n this.style = hyphenateCamel(this.name.substr(6));\n } else {\n this.inlineClass = this.name.substr(6);\n }\n\n return;\n }\n\n if (booleanAttributes[this.name.toLowerCase()])\n return value\n ? isString(value)\n ? `${this.name}=\"${safeAttributeString(value)}\"`\n : this.name\n : '';\n if (value == null) return '';\n\n const str = safeAttributeString(this.getString());\n attribute = false;\n\n return str ? `${this.name}=\"${str}\"` : this.name;\n }\n\n unbind() {\n if (this.fragment) this.fragment.unbind();\n }\n\n unrender() {\n this.updateDelegate(true);\n\n this.rendered = false;\n }\n\n update() {\n if (this.dirty) {\n let binding;\n this.dirty = false;\n if (this.fragment) this.fragment.update();\n if (this.rendered) this.updateDelegate();\n if (this.isTwoway && !this.locked) {\n this.interpolator.twowayBinding.lastVal(true, this.interpolator.model.get());\n } else if (this.name === 'value' && (binding = this.element.binding)) {\n // special case: name bound element with dynamic value\n const attr = binding.attribute;\n if (attr && !attr.dirty && attr.rendered) {\n this.element.binding.attribute.updateDelegate();\n }\n }\n }\n }\n}\n","import { doc } from 'config/environment';\nimport { svg } from 'config/namespaces';\nimport { createElement } from 'utils/dom';\nimport { toArray } from 'utils/array';\nimport noop from 'utils/noop';\nimport Fragment from '../../Fragment';\nimport Item from '../shared/Item';\n\nconst div = doc ? createElement('div') : null;\n\nlet attributes = false;\nexport function inAttributes() {\n return attributes;\n}\n\nexport default class ConditionalAttribute extends Item {\n constructor(options) {\n super(options);\n\n this.attributes = [];\n\n this.owner = options.owner;\n\n this.fragment = new Fragment({\n ractive: this.ractive,\n owner: this,\n template: this.template\n });\n\n // this fragment can't participate in node-y things\n this.fragment.findNextNode = noop;\n\n this.dirty = false;\n }\n\n bind() {\n this.fragment.bind();\n }\n\n bubble() {\n if (!this.dirty) {\n this.dirty = true;\n this.owner.bubble();\n }\n }\n\n destroyed() {\n this.unrender();\n }\n\n render() {\n this.node = this.owner.node;\n if (this.node) {\n this.isSvg = this.node.namespaceURI === svg;\n }\n\n attributes = true;\n if (!this.rendered) this.fragment.render();\n\n this.rendered = true;\n this.dirty = true; // TODO this seems hacky, but necessary for tests to pass in browser AND node.js\n this.update();\n attributes = false;\n }\n\n toString() {\n return this.fragment.toString();\n }\n\n unbind() {\n this.fragment.unbind();\n }\n\n unrender() {\n this.rendered = false;\n this.fragment.unrender();\n }\n\n update() {\n let str;\n let attrs;\n\n if (this.dirty) {\n this.dirty = false;\n\n const current = attributes;\n attributes = true;\n this.fragment.update();\n\n if (this.rendered && this.node) {\n str = this.fragment.toString();\n\n attrs = parseAttributes(str, this.isSvg);\n\n // any attributes that previously existed but no longer do\n // must be removed\n this.attributes.filter(a => notIn(attrs, a)).forEach(a => {\n this.node.removeAttribute(a.name);\n });\n\n attrs.forEach(a => {\n this.node.setAttribute(a.name, a.value);\n });\n\n this.attributes = attrs;\n }\n\n attributes = current || false;\n }\n }\n}\n\nconst onlyWhitespace = /^\\s*$/;\nfunction parseAttributes(str, isSvg) {\n if (onlyWhitespace.test(str)) return [];\n const tagName = isSvg ? 'svg' : 'div';\n return str\n ? (div.innerHTML = `<${tagName} ${str}></${tagName}>`) && toArray(div.childNodes[0].attributes)\n : [];\n}\n\nfunction notIn(haystack, needle) {\n let i = haystack.length;\n\n while (i--) {\n if (haystack[i].name === needle.name) {\n return false;\n }\n }\n\n return true;\n}\n","export default {\n 'accept-charset': 'acceptCharset',\n accesskey: 'accessKey',\n bgcolor: 'bgColor',\n class: 'className',\n codebase: 'codeBase',\n colspan: 'colSpan',\n contenteditable: 'contentEditable',\n datetime: 'dateTime',\n dirname: 'dirName',\n for: 'htmlFor',\n 'http-equiv': 'httpEquiv',\n ismap: 'isMap',\n maxlength: 'maxLength',\n novalidate: 'noValidate',\n pubdate: 'pubDate',\n readonly: 'readOnly',\n rowspan: 'rowSpan',\n tabindex: 'tabIndex',\n usemap: 'useMap'\n};\n","import { html } from 'config/namespaces';\nimport { safeToStringValue } from 'utils/dom';\nimport { arrayContains } from 'utils/array';\nimport noop from 'utils/noop';\nimport hyphenateCamel from 'utils/hyphenateCamel';\nimport { readStyle, readClass } from 'src/view/helpers/specialAttrs';\nimport { keys as objectKeys } from 'utils/object';\nimport { isArray, isString } from 'utils/is';\n\nconst textTypes = [\n undefined,\n 'text',\n 'search',\n 'url',\n 'email',\n 'hidden',\n 'password',\n 'search',\n 'reset',\n 'submit'\n];\n\nexport default function getUpdateDelegate(attribute) {\n const { element, name } = attribute;\n\n if (name === 'value') {\n if (attribute.interpolator) attribute.interpolator.bound = true;\n\n // special case - selects\n if (element.name === 'select' && name === 'value') {\n return element.getAttribute('multiple') ? updateMultipleSelectValue : updateSelectValue;\n }\n\n if (element.name === 'textarea') return updateStringValue;\n\n // special case - contenteditable\n if (element.getAttribute('contenteditable') != null) return updateContentEditableValue;\n\n // special case - <input>\n if (element.name === 'input') {\n const type = element.getAttribute('type');\n\n // type='file' value='{{fileList}}'>\n if (type === 'file') return noop; // read-only\n\n // type='radio' name='{{twoway}}'\n if (type === 'radio' && element.binding && element.binding.attribute.name === 'name')\n return updateRadioValue;\n\n if (~textTypes.indexOf(type)) return updateStringValue;\n }\n\n return updateValue;\n }\n\n const node = element.node;\n\n // special case - <input type='radio' name='{{twoway}}' value='foo'>\n if (attribute.isTwoway && name === 'name') {\n if (node.type === 'radio') return updateRadioName;\n if (node.type === 'checkbox') return updateCheckboxName;\n }\n\n if (name === 'style') return updateStyleAttribute;\n\n if (name.indexOf('style-') === 0) return updateInlineStyle;\n\n // special case - class names. IE fucks things up, again\n if (name === 'class' && (!node.namespaceURI || node.namespaceURI === html))\n return updateClassName;\n\n if (name.indexOf('class-') === 0) return updateInlineClass;\n\n if (attribute.isBoolean) {\n const type = element.getAttribute('type');\n if (attribute.interpolator && name === 'checked' && (type === 'checkbox' || type === 'radio'))\n attribute.interpolator.bound = true;\n return updateBoolean;\n }\n\n if (attribute.namespace && attribute.namespace !== attribute.node.namespaceURI)\n return updateNamespacedAttribute;\n\n return updateAttribute;\n}\n\nfunction updateMultipleSelectValue(reset) {\n let value = this.getValue();\n\n if (!isArray(value)) value = [value];\n\n const options = this.node.options;\n let i = options.length;\n\n if (reset) {\n while (i--) options[i].selected = false;\n } else {\n while (i--) {\n const option = options[i];\n const optionValue = option._ractive ? option._ractive.value : option.value; // options inserted via a triple don't have _ractive\n\n option.selected = arrayContains(value, optionValue);\n }\n }\n}\n\nfunction updateSelectValue(reset) {\n const value = this.getValue();\n\n if (!this.locked) {\n // TODO is locked still a thing?\n this.node._ractive.value = value;\n\n const options = this.node.options;\n let i = options.length;\n let wasSelected = false;\n\n if (reset) {\n while (i--) options[i].selected = false;\n } else {\n while (i--) {\n const option = options[i];\n const optionValue = option._ractive ? option._ractive.value : option.value; // options inserted via a triple don't have _ractive\n if (option.disabled && option.selected) wasSelected = true;\n\n if (optionValue == value) {\n // double equals as we may be comparing numbers with strings\n option.selected = true;\n return;\n }\n }\n }\n\n if (!wasSelected) this.node.selectedIndex = -1;\n }\n}\n\nfunction updateContentEditableValue(reset) {\n const value = this.getValue();\n\n if (!this.locked) {\n if (reset) this.node.innerHTML = '';\n else this.node.innerHTML = value === undefined ? '' : value;\n }\n}\n\nfunction updateRadioValue(reset) {\n const node = this.node;\n const wasChecked = node.checked;\n\n const value = this.getValue();\n\n if (reset) return (node.checked = false);\n\n //node.value = this.element.getAttribute( 'value' );\n node.value = this.node._ractive.value = value;\n node.checked = this.element.compare(value, this.element.getAttribute('name'));\n\n // This is a special case - if the input was checked, and the value\n // changed so that it's no longer checked, the twoway binding is\n // most likely out of date. To fix it we have to jump through some\n // hoops... this is a little kludgy but it works\n if (wasChecked && !node.checked && this.element.binding && this.element.binding.rendered) {\n this.element.binding.group.model.set(this.element.binding.group.getValue());\n }\n}\n\nfunction updateValue(reset) {\n if (!this.locked) {\n if (reset) {\n this.node.removeAttribute('value');\n this.node.value = this.node._ractive.value = null;\n } else {\n const value = this.getValue();\n\n this.node.value = this.node._ractive.value = value;\n this.node.setAttribute('value', safeToStringValue(value));\n }\n }\n}\n\nfunction updateStringValue(reset) {\n if (!this.locked) {\n if (reset) {\n this.node._ractive.value = '';\n this.node.removeAttribute('value');\n } else {\n const value = this.getValue();\n\n this.node._ractive.value = value;\n\n this.node.value = safeToStringValue(value);\n this.node.setAttribute('value', safeToStringValue(value));\n }\n }\n}\n\nfunction updateRadioName(reset) {\n if (reset) this.node.checked = false;\n else this.node.checked = this.element.compare(this.getValue(), this.element.binding.getValue());\n}\n\nfunction updateCheckboxName(reset) {\n const { element, node } = this;\n const binding = element.binding;\n\n const value = this.getValue();\n const valueAttribute = element.getAttribute('value');\n\n if (reset) {\n // TODO: WAT?\n }\n\n if (!isArray(value)) {\n binding.isChecked = node.checked = element.compare(value, valueAttribute);\n } else {\n let i = value.length;\n while (i--) {\n if (element.compare(valueAttribute, value[i])) {\n binding.isChecked = node.checked = true;\n return;\n }\n }\n binding.isChecked = node.checked = false;\n }\n}\n\nfunction updateStyleAttribute(reset) {\n const props = reset ? {} : readStyle(this.getValue() || '');\n const style = this.node.style;\n const keys = objectKeys(props);\n const prev = this.previous || [];\n\n let i = 0;\n while (i < keys.length) {\n if (keys[i] in style) {\n const safe = props[keys[i]].replace('!important', '');\n style.setProperty(keys[i], safe, safe.length !== props[keys[i]].length ? 'important' : '');\n }\n i++;\n }\n\n // remove now-missing attrs\n i = prev.length;\n while (i--) {\n if (!~keys.indexOf(prev[i]) && prev[i] in style) style.setProperty(prev[i], '', '');\n }\n\n this.previous = keys;\n}\n\nfunction updateInlineStyle(reset) {\n if (!this.style) {\n this.style = hyphenateCamel(this.name.substr(6));\n }\n\n if (reset && this.node.style.getPropertyValue(this.style) !== this.last) return;\n\n const value = reset ? '' : safeToStringValue(this.getValue());\n const safe = value.replace('!important', '');\n this.node.style.setProperty(this.style, safe, safe.length !== value.length ? 'important' : '');\n this.last = this.node.style.getPropertyValue(this.style);\n}\n\nfunction updateClassName(reset) {\n const value = reset ? [] : readClass(safeToStringValue(this.getValue()));\n\n // watch out for werdo svg elements\n let cls = this.node.className;\n cls = cls.baseVal !== undefined ? cls.baseVal : cls;\n\n const attr = readClass(cls);\n const prev = this.previous || [];\n\n const className = value.concat(attr.filter(c => !~prev.indexOf(c))).join(' ');\n\n if (className !== cls) {\n if (!isString(this.node.className)) {\n this.node.className.baseVal = className;\n } else {\n this.node.className = className;\n }\n }\n\n this.previous = value;\n}\n\nfunction updateInlineClass(reset) {\n const name = this.name.substr(6);\n\n // watch out for werdo svg elements\n let cls = this.node.className;\n cls = cls.baseVal !== undefined ? cls.baseVal : cls;\n\n const attr = readClass(cls);\n const value = reset ? false : this.getValue();\n\n if (!this.inlineClass) this.inlineClass = name;\n\n if (value && !~attr.indexOf(name)) attr.push(name);\n else if (!value && ~attr.indexOf(name)) attr.splice(attr.indexOf(name), 1);\n\n if (!isString(this.node.className)) {\n this.node.className.baseVal = attr.join(' ');\n } else {\n this.node.className = attr.join(' ');\n }\n}\n\nfunction updateBoolean(reset) {\n // with two-way binding, only update if the change wasn't initiated by the user\n // otherwise the cursor will often be sent to the wrong place\n if (!this.locked) {\n if (reset) {\n if (this.useProperty) this.node[this.propertyName] = false;\n this.node.removeAttribute(this.propertyName);\n } else {\n if (this.useProperty) {\n this.node[this.propertyName] = this.getValue();\n } else {\n const val = this.getValue();\n if (val) {\n this.node.setAttribute(this.propertyName, isString(val) ? val : '');\n } else {\n this.node.removeAttribute(this.propertyName);\n }\n }\n }\n }\n}\n\nexport function updateAttribute(reset) {\n if (reset) {\n if (this.node.getAttribute(this.name) === this.value) {\n this.node.removeAttribute(this.name);\n }\n } else {\n this.value = safeToStringValue(this.getString());\n this.node.setAttribute(this.name, this.value);\n }\n}\n\nexport function updateNamespacedAttribute(reset) {\n if (reset) {\n if (\n this.value ===\n this.node.getAttributeNS(this.namespace, this.name.slice(this.name.indexOf(':') + 1))\n ) {\n this.node.removeAttributeNS(this.namespace, this.name.slice(this.name.indexOf(':') + 1));\n }\n } else {\n this.value = safeToStringValue(this.getString());\n this.node.setAttributeNS(\n this.namespace,\n this.name.slice(this.name.indexOf(':') + 1),\n this.value\n );\n }\n}\n","import cleanCss from 'utils/cleanCss';\nimport { isString } from 'utils/is';\n\nconst space = /\\s+/;\n\nexport function readStyle(css) {\n if (!isString(css)) return {};\n\n return cleanCss(css, (css, reconstruct) => {\n return css\n .split(';')\n .filter(rule => !!rule.trim())\n .map(reconstruct)\n .reduce((rules, rule) => {\n const i = rule.indexOf(':');\n const name = rule.substr(0, i).trim();\n rules[name] = rule.substr(i + 1).trim();\n return rules;\n }, {});\n });\n}\n\nexport function readClass(str) {\n const list = str.split(space);\n\n // remove any empty entries\n let i = list.length;\n while (i--) {\n if (!list[i]) list.splice(i, 1);\n }\n\n return list;\n}\n","import Fragment from '../Fragment';\nimport { ContainerItem } from './shared/Item';\nimport resolve from '../resolvers/resolve';\n\nexport function resolveAliases(aliases, fragment, dest = {}) {\n for (let i = 0; i < aliases.length; i++) {\n if (!dest[aliases[i].n]) {\n const m = resolve(fragment, aliases[i].x);\n dest[aliases[i].n] = m;\n m.reference();\n }\n }\n\n return dest;\n}\n\nexport default class Alias extends ContainerItem {\n constructor(options) {\n super(options);\n\n this.fragment = null;\n }\n\n bind() {\n this.fragment = new Fragment({\n owner: this,\n template: this.template.f\n });\n\n this.fragment.aliases = resolveAliases(this.template.z, this.up);\n this.fragment.bind();\n }\n\n rebound(update) {\n const aliases = this.fragment.aliases;\n for (const k in aliases) {\n if (aliases[k].rebound) aliases[k].rebound(update);\n else {\n aliases[k].unreference();\n aliases[k] = 0;\n }\n }\n\n resolveAliases(this.template.z, this.up, aliases);\n\n if (this.fragment) this.fragment.rebound(update);\n }\n\n render(target, occupants) {\n this.rendered = true;\n if (this.fragment) this.fragment.render(target, occupants);\n }\n\n unbind() {\n for (const k in this.fragment.aliases) {\n this.fragment.aliases[k].unreference();\n }\n\n this.fragment.aliases = {};\n if (this.fragment) this.fragment.unbind();\n }\n\n unrender(shouldDestroy) {\n if (this.rendered && this.fragment) this.fragment.unrender(shouldDestroy);\n this.rendered = false;\n }\n\n update() {\n if (this.dirty) {\n this.dirty = false;\n this.fragment.update();\n }\n }\n}\n","import resolveReference from './resolveReference';\nimport ExpressionProxy from './ExpressionProxy';\nimport ReferenceExpressionProxy from './ReferenceExpressionProxy';\n\nexport default function resolve(fragment, template) {\n if (template.r) {\n return resolveReference(fragment, template.r);\n } else if (template.x) {\n return new ExpressionProxy(fragment, template.x);\n } else if (template.rx) {\n return new ReferenceExpressionProxy(fragment, template.rx);\n }\n}\n","import { fireShuffleTasks } from 'src/model/ModelBase';\nimport { REFERENCE } from 'config/types';\nimport { rebindMatch } from 'shared/rebind';\nimport { isArray, isString } from 'utils/is';\nimport { escapeKey } from 'shared/keypaths';\nimport ExpressionProxy from './ExpressionProxy';\nimport resolveReference from './resolveReference';\nimport resolve from './resolve';\n\nimport LinkModel, { Missing } from 'src/model/LinkModel';\n\nexport default class ReferenceExpressionProxy extends LinkModel {\n constructor(fragment, template) {\n super(null, null, null, '@undefined');\n this.root = fragment.ractive.viewmodel;\n this.template = template;\n this.rootLink = true;\n this.template = template;\n this.fragment = fragment;\n\n this.rebound();\n }\n\n getKeypath() {\n return this.model ? this.model.getKeypath() : '@undefined';\n }\n\n rebound() {\n const fragment = this.fragment;\n const template = this.template;\n\n let base = (this.base = resolve(fragment, template));\n let idx;\n\n if (this.proxy) {\n teardown(this);\n }\n\n const proxy = (this.proxy = {\n rebind: (next, previous) => {\n if (previous === base) {\n next = rebindMatch(template, next, previous);\n if (next !== base) {\n this.base = base = next;\n }\n } else if (~(idx = members.indexOf(previous))) {\n next = rebindMatch(template.m[idx].n, next, previous);\n if (next !== members[idx]) {\n members.splice(idx, 1, next || Missing);\n }\n }\n\n if (next !== previous) {\n previous.unregister(proxy);\n if (next) next.addShuffleTask(() => next.register(proxy));\n }\n },\n handleChange: () => {\n pathChanged();\n }\n });\n\n base.register(proxy);\n\n const members = (this.members = template.m.map(tpl => {\n if (isString(tpl)) {\n return { get: () => tpl };\n }\n\n let model;\n\n if (tpl.t === REFERENCE) {\n model = resolveReference(fragment, tpl.n);\n model.register(proxy);\n\n return model;\n }\n\n model = new ExpressionProxy(fragment, tpl);\n model.register(proxy);\n return model;\n }));\n\n const pathChanged = () => {\n const model = base.joinAll(\n members.reduce((list, m) => {\n const k = m.get();\n if (isArray(k)) return list.concat(k);\n else list.push(escapeKey(String(k)));\n return list;\n }, [])\n );\n\n if (model !== this.model) {\n this.model = model;\n this.relinking(model);\n fireShuffleTasks();\n refreshPathDeps(this);\n }\n };\n\n pathChanged();\n }\n\n teardown() {\n teardown(this);\n super.teardown();\n }\n\n unreference() {\n super.unreference();\n if (!this.deps.length && !this.refs) this.teardown();\n }\n\n unregister(dep) {\n super.unregister(dep);\n if (!this.deps.length && !this.refs) this.teardown();\n }\n}\n\nfunction teardown(proxy) {\n if (proxy.base) proxy.base.unregister(proxy.proxy);\n if (proxy.models) {\n proxy.models.forEach(m => {\n if (m.unregister) m.unregister(proxy);\n });\n }\n}\n\nfunction refreshPathDeps(proxy) {\n let len = proxy.deps.length;\n let i, v;\n\n for (i = 0; i < len; i++) {\n v = proxy.deps[i];\n if (v.pathChanged) v.pathChanged();\n if (v.fragment && v.fragment.pathModel) v.fragment.pathModel.applyValue(proxy.getKeypath());\n }\n\n len = proxy.children.length;\n for (i = 0; i < len; i++) {\n refreshPathDeps(proxy.children[i]);\n }\n}\n\nconst eproto = ExpressionProxy.prototype;\nconst proto = ReferenceExpressionProxy.prototype;\n\nproto.unreference = eproto.unreference;\nproto.unregister = eproto.unregister;\nproto.unregisterLink = eproto.unregisterLink;\n","import { removeFromArray } from 'utils/array';\nimport noop from 'utils/noop';\nimport { warnIfDebug } from 'utils/log';\nimport Model from 'src/model/Model';\nimport Computation from 'src/model/Computation';\nimport { startCapturing, stopCapturing } from 'src/global/capture';\nimport getFunction from 'shared/getFunction';\nimport { rebindMatch } from 'shared/rebind';\nimport resolveReference from './resolveReference';\n\nexport default class ExpressionProxy extends Model {\n constructor(fragment, template) {\n super(fragment.ractive.viewmodel, null);\n\n this.fragment = fragment;\n this.template = template;\n\n this.isReadonly = true;\n this.isComputed = true;\n this.dirty = true;\n\n this.fn =\n fragment.ractive.allowExpressions === false\n ? noop\n : getFunction(template.s, template.r.length);\n\n this.models = this.template.r.map(ref => {\n return resolveReference(this.fragment, ref);\n });\n this.dependencies = [];\n\n this.shuffle = undefined;\n\n this.bubble();\n }\n\n bubble(actuallyChanged = true) {\n // refresh the keypath\n this.keypath = undefined;\n\n if (actuallyChanged) {\n this.handleChange();\n }\n }\n\n getKeypath() {\n if (!this.template) return '@undefined';\n if (!this.keypath) {\n this.keypath =\n '@' +\n this.template.s.replace(/_(\\d+)/g, (match, i) => {\n if (i >= this.models.length) return match;\n\n const model = this.models[i];\n return model ? model.getKeypath() : '@undefined';\n });\n }\n\n return this.keypath;\n }\n\n getValue() {\n startCapturing();\n let result;\n\n try {\n const params = this.models.map(m => (m ? m.get(true) : undefined));\n result = this.fn.apply(this.fragment.ractive, params);\n } catch (err) {\n warnIfDebug(`Failed to compute ${this.getKeypath()}: ${err.message || err}`);\n }\n\n const dependencies = stopCapturing();\n // remove missing deps\n this.dependencies.filter(d => !~dependencies.indexOf(d)).forEach(d => {\n d.unregister(this);\n removeFromArray(this.dependencies, d);\n });\n // register new deps\n dependencies.filter(d => !~this.dependencies.indexOf(d)).forEach(d => {\n d.register(this);\n this.dependencies.push(d);\n });\n\n return result;\n }\n\n notifyUpstream() {}\n\n rebind(next, previous, safe) {\n const idx = this.models.indexOf(previous);\n\n if (~idx) {\n next = rebindMatch(this.template.r[idx], next, previous);\n if (next !== previous) {\n previous.unregister(this);\n this.models.splice(idx, 1, next);\n if (next) next.addShuffleRegister(this, 'mark');\n }\n }\n this.bubble(!safe);\n }\n\n rebound(update) {\n this.models = this.template.r.map(ref => resolveReference(this.fragment, ref));\n if (update) this.bubble(true);\n }\n\n retrieve() {\n return this.get();\n }\n\n teardown() {\n this.fragment = undefined;\n if (this.dependencies) this.dependencies.forEach(d => d.unregister(this));\n super.teardown();\n }\n\n unreference() {\n super.unreference();\n collect(this);\n }\n\n unregister(dep) {\n super.unregister(dep);\n collect(this);\n }\n\n unregisterLink(link) {\n super.unregisterLink(link);\n collect(this);\n }\n}\n\nconst prototype = ExpressionProxy.prototype;\nconst computation = Computation.prototype;\nprototype.get = computation.get;\nprototype.handleChange = computation.handleChange;\nprototype.joinKey = computation.joinKey;\nprototype.mark = computation.mark;\nprototype.unbind = noop;\n\nfunction collect(model) {\n if (!model.deps.length && !model.refs && !model.links.length) model.teardown();\n}\n","/* global console */\n/* eslint no-console:\"off\" */\n\nimport { capture, startCapturing, stopCapturing } from 'src/global/capture';\nimport { warnIfDebug } from 'utils/log';\nimport Model, { shared } from './Model';\nimport { maybeBind, noVirtual } from './ModelBase';\nimport ComputationChild from './ComputationChild';\nimport { hasConsole } from 'config/environment';\nimport { isEqual } from 'utils/is';\nimport runloop from 'src/global/runloop';\n\nexport default class Computation extends Model {\n constructor(parent, signature, key) {\n super(parent, key);\n\n this.signature = signature;\n\n this.isReadonly = !this.signature.setter;\n this.isComputed = true;\n\n this.dependencies = [];\n\n this.children = [];\n this.childByKey = {};\n\n this.deps = [];\n\n this.dirty = true;\n\n // TODO: is there a less hackish way to do this?\n this.shuffle = undefined;\n }\n\n get setRoot() {\n if (this.signature.setter) return this;\n }\n\n get(shouldCapture, opts) {\n if (shouldCapture) capture(this);\n\n if (this.dirty) {\n this.dirty = false;\n const old = this.value;\n this.value = this.getValue();\n // this may cause a view somewhere to update, so it must be in a runloop\n if (!runloop.active()) {\n runloop.start();\n if (!isEqual(old, this.value)) this.notifyUpstream();\n runloop.end();\n } else {\n if (!isEqual(old, this.value)) this.notifyUpstream();\n }\n if (this.wrapper) this.newWrapperValue = this.value;\n this.adapt();\n }\n\n // if capturing, this value needs to be unwrapped because it's for external use\n return maybeBind(\n this,\n // if unwrap is supplied, it overrides capture\n this.wrapper && (opts && 'unwrap' in opts ? opts.unwrap !== false : shouldCapture)\n ? this.wrapperValue\n : this.value,\n !opts || opts.shouldBind !== false\n );\n }\n\n getContext() {\n return this.parent.isRoot ? this.root.ractive : this.parent.get(false, noVirtual);\n }\n\n getValue() {\n startCapturing();\n let result;\n\n try {\n result = this.signature.getter.call(this.root.ractive, this.getContext());\n } catch (err) {\n warnIfDebug(`Failed to compute ${this.getKeypath()}: ${err.message || err}`);\n\n // TODO this is all well and good in Chrome, but...\n // ...also, should encapsulate this stuff better, and only\n // show it if Ractive.DEBUG\n if (hasConsole) {\n if (console.groupCollapsed)\n console.groupCollapsed(\n '%cshow details',\n 'color: rgb(82, 140, 224); font-weight: normal; text-decoration: underline;'\n );\n const sig = this.signature;\n console.error(\n `${err.name}: ${err.message}\\n\\n${sig.getterString}${\n sig.getterUseStack ? '\\n\\n' + err.stack : ''\n }`\n );\n if (console.groupCollapsed) console.groupEnd();\n }\n }\n\n const dependencies = stopCapturing();\n this.setDependencies(dependencies);\n\n return result;\n }\n\n mark() {\n this.handleChange();\n }\n\n rebind(next, previous) {\n // computations will grab all of their deps again automagically\n if (next !== previous) this.handleChange();\n }\n\n set(value) {\n if (this.isReadonly) {\n throw new Error(`Cannot set read-only computed value '${this.key}'`);\n }\n\n this.signature.setter(value);\n this.mark();\n }\n\n setDependencies(dependencies) {\n // unregister any soft dependencies we no longer have\n let i = this.dependencies.length;\n while (i--) {\n const model = this.dependencies[i];\n if (!~dependencies.indexOf(model)) model.unregister(this);\n }\n\n // and add any new ones\n i = dependencies.length;\n while (i--) {\n const model = dependencies[i];\n if (!~this.dependencies.indexOf(model)) model.register(this);\n }\n\n this.dependencies = dependencies;\n }\n\n teardown() {\n let i = this.dependencies.length;\n while (i--) {\n if (this.dependencies[i]) this.dependencies[i].unregister(this);\n }\n if (this.parent.computed[this.key] === this) delete this.parent.computed[this.key];\n super.teardown();\n }\n}\n\nconst prototype = Computation.prototype;\nconst child = ComputationChild.prototype;\nprototype.handleChange = child.handleChange;\nprototype.joinKey = child.joinKey;\n\nshared.Computation = Computation;\n","import { capture } from 'src/global/capture';\nimport Model from './Model';\nimport { handleChange, mark, marked } from 'shared/methodCallers';\nimport { hasOwn } from 'utils/object';\n\nexport default class ComputationChild extends Model {\n constructor(parent, key) {\n super(parent, key);\n\n this.isReadonly = !this.root.ractive.syncComputedChildren;\n this.dirty = true;\n this.isComputed = true;\n }\n\n get setRoot() {\n return this.parent.setRoot;\n }\n\n applyValue(value) {\n super.applyValue(value);\n\n if (!this.isReadonly) {\n let source = this.parent;\n // computed models don't have a shuffle method\n while (source && source.shuffle) {\n source = source.parent;\n }\n\n if (source) {\n source.dependencies.forEach(mark);\n }\n }\n\n if (this.setRoot) {\n this.setRoot.set(this.setRoot.value);\n }\n }\n\n get(shouldCapture, opts) {\n if (shouldCapture) capture(this);\n\n if (this.dirty) {\n this.dirty = false;\n const parentValue = this.parent.get();\n this.value = parentValue ? parentValue[this.key] : undefined;\n if (this.wrapper) this.newWrapperValue = this.value;\n this.adapt();\n }\n\n return (opts && 'unwrap' in opts ? opts.unwrap !== false : shouldCapture) && this.wrapper\n ? this.wrapperValue\n : this.value;\n }\n\n handleChange() {\n if (this.dirty) return;\n this.dirty = true;\n\n if (this.boundValue) this.boundValue = null;\n\n this.links.forEach(marked);\n this.deps.forEach(handleChange);\n this.children.forEach(handleChange);\n }\n\n joinKey(key) {\n if (key === undefined || key === '') return this;\n\n if (!hasOwn(this.childByKey, key)) {\n const child = new ComputationChild(this, key);\n this.children.push(child);\n this.childByKey[key] = child;\n }\n\n return this.childByKey[key];\n }\n}\n","import { createDocumentFragment } from 'utils/dom';\nimport noop from 'utils/noop';\n\nexport default class Item {\n constructor(options) {\n this.up = options.up;\n this.ractive = options.up.ractive;\n\n this.template = options.template;\n this.index = options.index;\n this.type = options.template.t;\n\n this.dirty = false;\n }\n\n bubble() {\n if (!this.dirty) {\n this.dirty = true;\n this.up.bubble();\n }\n }\n\n destroyed() {\n if (this.fragment) this.fragment.destroyed();\n }\n\n find() {\n return null;\n }\n\n findComponent() {\n return null;\n }\n\n findNextNode() {\n return this.up.findNextNode(this);\n }\n\n rebound(update) {\n if (this.fragment) this.fragment.rebound(update);\n }\n\n shuffled() {\n if (this.fragment) this.fragment.shuffled();\n }\n\n valueOf() {\n return this.toString();\n }\n}\n\nItem.prototype.findAll = noop;\nItem.prototype.findAllComponents = noop;\n\nexport class ContainerItem extends Item {\n constructor(options) {\n super(options);\n }\n\n detach() {\n return this.fragment ? this.fragment.detach() : createDocumentFragment();\n }\n\n find(selector) {\n if (this.fragment) {\n return this.fragment.find(selector);\n }\n }\n\n findAll(selector, options) {\n if (this.fragment) {\n this.fragment.findAll(selector, options);\n }\n }\n\n findComponent(name) {\n if (this.fragment) {\n return this.fragment.findComponent(name);\n }\n }\n\n findAllComponents(name, options) {\n if (this.fragment) {\n this.fragment.findAllComponents(name, options);\n }\n }\n\n firstNode(skipParent) {\n return this.fragment && this.fragment.firstNode(skipParent);\n }\n\n toString(escape) {\n return this.fragment ? this.fragment.toString(escape) : '';\n }\n}\n","import { warnIfDebug } from 'utils/log';\nimport adaptConfigurator from './custom/adapt';\nimport cssConfigurator from './custom/css/css';\nimport dataConfigurator from './custom/data';\nimport templateConfigurator from './custom/template';\nimport defaults from './defaults';\nimport registries from './registries';\nimport wrapPrototype from './wrapPrototypeMethod';\nimport deprecate from './deprecate';\nimport RactiveProto from '../prototype';\nimport { hasOwn, keys } from 'utils/object';\nimport { isFunction } from 'utils/is';\nimport hooks from 'src/events/Hook';\n\nconst config = {\n extend: (Parent, proto, options, Child) => configure('extend', Parent, proto, options, Child),\n init: (Parent, ractive, options) => configure('init', Parent, ractive, options),\n reset: ractive => order.filter(c => c.reset && c.reset(ractive)).map(c => c.name)\n};\n\nconst custom = {\n adapt: adaptConfigurator,\n computed: config,\n css: cssConfigurator,\n data: dataConfigurator,\n helpers: config,\n template: templateConfigurator\n};\n\nconst defaultKeys = keys(defaults);\n\nconst isStandardKey = makeObj(defaultKeys.filter(key => !custom[key]));\n\n// blacklisted keys that we don't double extend\nconst isBlacklisted = makeObj(\n defaultKeys.concat(registries.map(r => r.name), ['on', 'observe', 'attributes', 'cssData', 'use'])\n);\n\nconst order = [].concat(\n defaultKeys.filter(key => !registries[key] && !custom[key]),\n registries,\n //custom.data,\n custom.template,\n custom.css\n);\n\nfunction configure(method, Parent, target, options, Child) {\n deprecate(options);\n\n for (const key in options) {\n if (hasOwn(isStandardKey, key)) {\n const value = options[key];\n\n // warn the developer if they passed a function and ignore its value\n\n // NOTE: we allow some functions on \"el\" because we duck type element lists\n // and some libraries or ef'ed-up virtual browsers (phantomJS) return a\n // function object as the result of querySelector methods\n if (key !== 'el' && isFunction(value)) {\n warnIfDebug(\n `${key} is a Ractive option that does not expect a function and will be ignored`,\n method === 'init' ? target : null\n );\n } else {\n target[key] = value;\n }\n }\n }\n\n // disallow combination of `append` and `enhance`\n if (target.append && target.enhance) {\n throw new Error('Cannot use append and enhance at the same time');\n }\n\n registries.forEach(registry => {\n registry[method](Parent, target, options, Child);\n });\n\n adaptConfigurator[method](Parent, target, options, Child);\n templateConfigurator[method](Parent, target, options, Child);\n cssConfigurator[method](Parent, target, options, Child);\n\n extendOtherMethods(Parent.prototype, target, options);\n}\n\nconst _super = /\\b_super\\b/;\nfunction extendOtherMethods(parent, target, options) {\n for (const key in options) {\n if (!isBlacklisted[key] && hasOwn(options, key)) {\n let member = options[key];\n\n // if this is a method that overwrites a method, wrap it:\n if (isFunction(member)) {\n if (\n (key in RactiveProto ||\n (key.slice(0, 2) === 'on' && key.slice(2) in hooks && key in target)) &&\n !_super.test(member.toString())\n ) {\n warnIfDebug(\n `Overriding Ractive prototype function '${key}' without calling the '${_super}' method can be very dangerous.`\n );\n }\n member = wrapPrototype(parent, key, member);\n }\n\n target[key] = member;\n }\n }\n}\n\nfunction makeObj(array) {\n const obj = {};\n array.forEach(x => (obj[x] = true));\n return obj;\n}\n\nexport default config;\n","import { warnIfDebug } from 'utils/log';\nimport { isArray } from 'utils/is';\n\nfunction getMessage(deprecated, correct, isError) {\n return (\n `options.${deprecated} has been deprecated in favour of options.${correct}.` +\n (isError ? ` You cannot specify both options, please use options.${correct}.` : '')\n );\n}\n\nfunction deprecateOption(options, deprecatedOption, correct) {\n if (deprecatedOption in options) {\n if (!(correct in options)) {\n warnIfDebug(getMessage(deprecatedOption, correct));\n options[correct] = options[deprecatedOption];\n } else {\n throw new Error(getMessage(deprecatedOption, correct, true));\n }\n }\n}\n\nexport default function deprecate(options) {\n deprecateOption(options, 'beforeInit', 'onconstruct');\n deprecateOption(options, 'init', 'onrender');\n deprecateOption(options, 'complete', 'oncomplete');\n deprecateOption(options, 'eventDefinitions', 'events');\n\n // Using extend with Component instead of options,\n // like Human.extend( Spider ) means adaptors as a registry\n // gets copied to options. So we have to check if actually an array\n if (isArray(options.adaptors)) {\n deprecateOption(options, 'adaptors', 'adapt');\n }\n}\n","import noop from 'utils/noop';\nimport { isFunction } from 'utils/is';\n\nexport default function wrap(parent, name, method) {\n if (!/_super/.test(method)) return method;\n\n function wrapper() {\n const superMethod = getSuperMethod(wrapper._parent, name);\n const hasSuper = '_super' in this;\n const oldSuper = this._super;\n\n this._super = superMethod;\n\n const result = method.apply(this, arguments);\n\n if (hasSuper) {\n this._super = oldSuper;\n } else {\n delete this._super;\n }\n\n return result;\n }\n\n wrapper._parent = parent;\n wrapper._method = method;\n\n return wrapper;\n}\n\nfunction getSuperMethod(parent, name) {\n if (name in parent) {\n const value = parent[name];\n\n return isFunction(value) ? value : () => value;\n }\n\n return noop;\n}\n","import { assign, create, keys } from 'utils/object';\n\nconst registryNames = [\n 'adaptors',\n 'components',\n 'computed',\n 'decorators',\n 'easing',\n 'events',\n 'helpers',\n 'interpolators',\n 'partials',\n 'transitions'\n];\n\nconst registriesOnDefaults = ['computed', 'helpers'];\n\nclass Registry {\n constructor(name, useDefaults) {\n this.name = name;\n this.useDefaults = useDefaults;\n }\n\n extend(Parent, proto, options) {\n const parent = this.useDefaults ? Parent.defaults : Parent;\n const target = this.useDefaults ? proto : proto.constructor;\n this.configure(parent, target, options);\n }\n\n init() {\n // noop\n }\n\n configure(Parent, target, options) {\n const name = this.name;\n const option = options[name];\n\n const registry = create(Parent[name]);\n\n assign(registry, option);\n\n target[name] = registry;\n }\n\n reset(ractive) {\n const registry = ractive[this.name];\n let changed = false;\n\n keys(registry).forEach(key => {\n const item = registry[key];\n\n if (item._fn) {\n if (item._fn.isOwner) {\n registry[key] = item._fn;\n } else {\n delete registry[key];\n }\n changed = true;\n }\n });\n\n return changed;\n }\n}\n\nconst registries = registryNames.map(name => {\n const putInDefaults = registriesOnDefaults.indexOf(name) > -1;\n return new Registry(name, putInDefaults);\n});\n\nexport default registries;\n","import { TEMPLATE_VERSION } from 'config/template';\nimport { addFunctions } from 'shared/getFunction';\nimport parser from '../runtime-parser';\nimport { hasOwn } from 'utils/object';\nimport { isFunction, isNumber, isString } from 'utils/is';\n\nexport default {\n name: 'template',\n\n extend(Parent, proto, options) {\n // only assign if exists\n if ('template' in options) {\n const template = options.template;\n\n if (isFunction(template)) {\n proto.template = template;\n } else {\n proto.template = parseTemplate(template, proto);\n }\n }\n },\n\n init(Parent, ractive, options) {\n // TODO because of prototypal inheritance, we might just be able to use\n // ractive.template, and not bother passing through the Parent object.\n // At present that breaks the test mocks' expectations\n let template = 'template' in options ? options.template : Parent.prototype.template;\n template = template || { v: TEMPLATE_VERSION, t: [] };\n\n if (isFunction(template)) {\n const fn = template;\n template = getDynamicTemplate(ractive, fn);\n\n ractive._config.template = {\n fn,\n result: template\n };\n }\n\n template = parseTemplate(template, ractive);\n\n // TODO the naming of this is confusing - ractive.template refers to [...],\n // but Component.prototype.template refers to {v:1,t:[],p:[]}...\n // it's unnecessary, because the developer never needs to access\n // ractive.template\n ractive.template = template.t;\n\n if (template.p) {\n extendPartials(ractive.partials, template.p);\n }\n },\n\n reset(ractive) {\n const result = resetValue(ractive);\n\n if (result) {\n const parsed = parseTemplate(result, ractive);\n\n ractive.template = parsed.t;\n extendPartials(ractive.partials, parsed.p, true);\n\n return true;\n }\n }\n};\n\nfunction resetValue(ractive) {\n const initial = ractive._config.template;\n\n // If this isn't a dynamic template, there's nothing to do\n if (!initial || !initial.fn) {\n return;\n }\n\n const result = getDynamicTemplate(ractive, initial.fn);\n\n // TODO deep equality check to prevent unnecessary re-rendering\n // in the case of already-parsed templates\n if (result !== initial.result) {\n initial.result = result;\n return result;\n }\n}\n\nfunction getDynamicTemplate(ractive, fn) {\n return fn.call(ractive, {\n fromId: parser.fromId,\n isParsed: parser.isParsed,\n parse(template, options = parser.getParseOptions(ractive)) {\n return parser.parse(template, options);\n }\n });\n}\n\nfunction parseTemplate(template, ractive) {\n if (isString(template)) {\n // parse will validate and add expression functions\n template = parseAsString(template, ractive);\n } else {\n // need to validate and add exp for already parsed template\n validate(template);\n addFunctions(template);\n }\n\n return template;\n}\n\nfunction parseAsString(template, ractive) {\n // ID of an element containing the template?\n if (template[0] === '#') {\n template = parser.fromId(template);\n }\n\n return parser.parseFor(template, ractive);\n}\n\nfunction validate(template) {\n // Check that the template even exists\n if (template == undefined) {\n throw new Error(`The template cannot be ${template}.`);\n } else if (!isNumber(template.v)) {\n // Check the parsed template has a version at all\n throw new Error(\n \"The template parser was passed a non-string template, but the template doesn't have a version. Make sure you're passing in the template you think you are.\"\n );\n } else if (template.v !== TEMPLATE_VERSION) {\n // Check we're using the correct version\n throw new Error(\n `Mismatched template version (expected ${TEMPLATE_VERSION}, got ${\n template.v\n }) Please ensure you are using the latest version of Ractive.js in your build process as well as in your app`\n );\n }\n}\n\nfunction extendPartials(existingPartials, newPartials, overwrite) {\n if (!newPartials) return;\n\n // TODO there's an ambiguity here - we need to overwrite in the `reset()`\n // case, but not initially...\n\n for (const key in newPartials) {\n if (overwrite || !hasOwn(existingPartials, key)) {\n existingPartials[key] = newPartials[key];\n }\n }\n}\n","import { fatal, warnIfDebug, warnOnceIfDebug } from 'utils/log';\nimport { isArray, isObject, isFunction, isObjectType } from 'utils/is';\nimport bind from 'utils/bind';\n\nfunction validate(data) {\n // Warn if userOptions.data is a non-POJO\n if (data && data.constructor !== Object) {\n if (isFunction(data)) {\n // TODO do we need to support this in the new Ractive() case?\n } else if (!isObjectType(data)) {\n fatal(`data option must be an object or a function, \\`${data}\\` is not valid`);\n } else {\n warnIfDebug(\n 'If supplied, options.data should be a plain JavaScript object - using a non-POJO as the root object may work, but is discouraged'\n );\n }\n }\n}\n\nexport default {\n name: 'data',\n\n extend: (Parent, proto, options) => {\n let key;\n let value;\n\n // check for non-primitives, which could cause mutation-related bugs\n if (options.data && isObject(options.data)) {\n for (key in options.data) {\n value = options.data[key];\n\n if (value && isObjectType(value)) {\n if (isObject(value) || isArray(value)) {\n warnIfDebug(`Passing a \\`data\\` option with object and array properties to Ractive.extend() is discouraged, as mutating them is likely to cause bugs. Consider using a data function instead:\n\n // this...\n data: function () {\n return {\n myObject: {}\n };\n })\n\n // instead of this:\n data: {\n myObject: {}\n }`);\n }\n }\n }\n }\n\n proto.data = combine(proto.data, options.data);\n },\n\n init: (Parent, ractive, options) => {\n let result = combine(Parent.prototype.data, options.data);\n\n if (isFunction(result)) result = result.call(ractive);\n\n // bind functions to the ractive instance at the top level,\n // unless it's a non-POJO (in which case alarm bells should ring)\n if (result && result.constructor === Object) {\n for (const prop in result) {\n if (isFunction(result[prop])) {\n const value = result[prop];\n result[prop] = bind(value, ractive);\n result[prop]._r_unbound = value;\n }\n }\n }\n\n return result || {};\n },\n\n reset(ractive) {\n const result = this.init(ractive.constructor, ractive, ractive.viewmodel);\n ractive.viewmodel.root.set(result);\n return true;\n }\n};\n\nfunction emptyData() {\n return {};\n}\n\nfunction combine(parentValue, childValue) {\n validate(childValue);\n\n const parentIsFn = isFunction(parentValue);\n\n // Very important, otherwise child instance can become\n // the default data object on Ractive or a component.\n // then ractive.set() ends up setting on the prototype!\n if (!childValue && !parentIsFn) {\n // this needs to be a function so that it can still inherit parent defaults\n childValue = emptyData;\n }\n\n const childIsFn = isFunction(childValue);\n\n // Fast path, where we just need to copy properties from\n // parent to child\n if (!parentIsFn && !childIsFn) {\n return fromProperties(childValue, parentValue);\n }\n\n return function() {\n const child = childIsFn ? callDataFunction(childValue, this) : childValue;\n const parent = parentIsFn ? callDataFunction(parentValue, this) : parentValue;\n\n return fromProperties(child, parent);\n };\n}\n\nfunction callDataFunction(fn, context) {\n const data = fn.call(context);\n\n if (!data) return;\n\n if (!isObjectType(data)) {\n fatal('Data function must return an object');\n }\n\n if (data.constructor !== Object) {\n warnOnceIfDebug(\n 'Data function returned something other than a plain JavaScript object. This might work, but is strongly discouraged'\n );\n }\n\n return data;\n}\n\nfunction fromProperties(primary, secondary) {\n if (primary && secondary) {\n for (const key in secondary) {\n if (!(key in primary)) {\n primary[key] = secondary[key];\n }\n }\n\n return primary;\n }\n\n return primary || secondary;\n}\n","import { addCSS, applyCSS } from 'src/global/css';\nimport transformCss from './transform';\nimport { uuid } from 'utils/id';\nimport { warnIfDebug } from 'utils/log';\nimport { getElement } from 'utils/dom';\nimport { splitKeypath } from 'shared/keypaths';\nimport CSSModel from 'src/model/specials/CSSModel';\nimport { assign, create, defineProperty } from 'utils/object';\nimport { isString, isFunction, isObjectType } from 'utils/is';\n\nconst hasCurly = /\\{/;\nexport default {\n name: 'css',\n\n // Called when creating a new component definition\n extend: (Parent, proto, options, Child) => {\n Child._cssIds = gatherIds(Parent);\n\n defineProperty(Child, 'cssData', {\n configurable: true,\n value: assign(create(Parent.cssData), options.cssData || {})\n });\n\n defineProperty(Child, '_cssModel', {\n configurable: true,\n value: new CSSModel(Child)\n });\n\n if (options.css) initCSS(options, Child, proto);\n },\n\n // Called when creating a new component instance\n init: (Parent, target, options) => {\n if (!options.css) return;\n\n warnIfDebug(`\nThe css option is currently not supported on a per-instance basis and will be discarded. Instead, we recommend instantiating from a component definition with a css option.\n\nconst Component = Ractive.extend({\n\t...\n\tcss: '/* your css */',\n\t...\n});\n\nconst componentInstance = new Component({ ... })\n\t\t`);\n }\n};\n\nfunction gatherIds(start) {\n let cmp = start;\n const ids = [];\n\n while (cmp) {\n if (cmp.prototype.cssId) ids.push(cmp.prototype.cssId);\n cmp = cmp.Parent;\n }\n\n return ids;\n}\n\nexport function evalCSS(component, css) {\n if (isString(css)) return css;\n\n const cssData = component.cssData;\n const model = component._cssModel;\n const data = function data(path) {\n return model.joinAll(splitKeypath(path)).get();\n };\n data.__proto__ = cssData;\n\n const result = css.call(component, data);\n return isString(result) ? result : '';\n}\n\nexport function initCSS(options, target, proto) {\n let css =\n options.css === true\n ? ''\n : isString(options.css) && !hasCurly.test(options.css)\n ? getElement(options.css) || options.css\n : options.css;\n let cssProp = css;\n\n const id = options.cssId || uuid();\n\n if (isObjectType(css)) {\n css = 'textContent' in css ? css.textContent : css.innerHTML;\n cssProp = css;\n } else if (isFunction(css)) {\n cssProp = css;\n css = evalCSS(target, css);\n }\n\n const def = { transform: !options.noCssTransform };\n\n defineProperty(target, '_cssDef', { configurable: true, value: def });\n\n defineProperty(target, 'css', {\n get() {\n return cssProp;\n },\n set(next) {\n cssProp = next;\n const css = evalCSS(target, cssProp);\n const styles = def.styles;\n def.styles = def.transform ? transformCss(css, id) : css;\n if (def.applied && styles !== def.styles) applyCSS(true);\n }\n });\n\n def.styles = def.transform ? transformCss(css, id) : css;\n def.id = proto.cssId = id;\n target._cssIds.push(id);\n\n addCSS(target._cssDef);\n}\n","import { SharedModel } from './SharedModel';\nimport { applyChanges } from '../../Ractive/static/styleSet';\n\nexport default class CSSModel extends SharedModel {\n constructor(component) {\n super(component.cssData, '@style');\n this.component = component;\n }\n\n downstreamChanged(path, depth) {\n if (this.locked) return;\n\n const component = this.component;\n\n component.extensions.forEach(e => {\n const model = e._cssModel;\n model.mark();\n model.downstreamChanged(path, depth || 1);\n });\n\n if (!depth) {\n applyChanges(component, true);\n }\n }\n}\n","import { applyCSS } from '../../global/css';\nimport transformCSS from '../config/custom/css/transform';\nimport { evalCSS } from '../config/custom/css/css';\nimport { build, set } from '../../shared/set';\nimport runloop from '../../global/runloop';\nimport { isObjectType, isFunction } from 'utils/is';\n\nexport default function setCSSData(keypath, value, options) {\n const opts = isObjectType(keypath) ? value : options;\n const model = this._cssModel;\n\n model.locked = true;\n const promise = set(build({ viewmodel: model }, keypath, value, true), opts);\n model.locked = false;\n\n const cascade = runloop.start();\n this.extensions.forEach(e => {\n const model = e._cssModel;\n model.mark();\n model.downstreamChanged('', 1);\n });\n runloop.end();\n\n applyChanges(this, !opts || opts.apply !== false);\n\n return promise.then(() => cascade);\n}\n\nexport function applyChanges(component, apply) {\n const local = recomputeCSS(component);\n const child = component.extensions\n .map(e => applyChanges(e, false))\n .reduce((a, c) => c || a, false);\n\n if (apply && (local || child)) {\n const def = component._cssDef;\n if (!def || (def && def.applied)) applyCSS(true);\n }\n\n return local || child;\n}\n\nexport function recomputeCSS(component) {\n const css = component.css;\n\n if (!isFunction(css)) return;\n\n const def = component._cssDef;\n const result = evalCSS(component, css);\n const styles = def.transform ? transformCSS(result, def.id) : result;\n\n if (def.styles === styles) return;\n\n def.styles = styles;\n\n return true;\n}\n","function s4() {\n return Math.floor((1 + Math.random()) * 0x10000)\n .toString(16)\n .substring(1);\n}\n\nexport function uuid() {\n return s4() + s4() + '-' + s4() + '-' + s4() + '-' + s4() + '-' + s4() + s4() + s4();\n}\n","import cleanCss from 'utils/cleanCss';\n\nconst selectorsPattern = /(?:^|\\}|\\{|\\x01)\\s*([^\\{\\}\\0\\x01]+)\\s*(?=\\{)/g;\nconst importPattern = /@import\\s*\\([^)]*\\)\\s*;?/gi;\nconst importEndPattern = /\\x01/g;\nconst keyframesDeclarationPattern = /@keyframes\\s+[^\\{\\}]+\\s*\\{(?:[^{}]+|\\{[^{}]+})*}/gi;\nconst selectorUnitPattern = /((?:(?:\\[[^\\]]+\\])|(?:[^\\s\\+\\>~:]))+)((?:::?[^\\s\\+\\>\\~\\(:]+(?:\\([^\\)]+\\))?)*\\s*[\\s\\+\\>\\~]?)\\s*/g;\nconst excludePattern = /^(?:@|\\d+%)/;\nconst dataRvcGuidPattern = /\\[data-ractive-css~=\"\\{[a-z0-9-]+\\}\"]/g;\n\nfunction trim(str) {\n return str.trim();\n}\n\nfunction extractString(unit) {\n return unit.str;\n}\n\nfunction transformSelector(selector, parent) {\n const selectorUnits = [];\n let match;\n\n while ((match = selectorUnitPattern.exec(selector))) {\n selectorUnits.push({\n str: match[0],\n base: match[1],\n modifiers: match[2]\n });\n }\n\n // For each simple selector within the selector, we need to create a version\n // that a) combines with the id, and b) is inside the id\n const base = selectorUnits.map(extractString);\n\n const transformed = [];\n let i = selectorUnits.length;\n\n while (i--) {\n const appended = base.slice();\n\n // Pseudo-selectors should go after the attribute selector\n const unit = selectorUnits[i];\n appended[i] = unit.base + parent + unit.modifiers || '';\n\n const prepended = base.slice();\n prepended[i] = parent + ' ' + prepended[i];\n\n transformed.push(appended.join(' '), prepended.join(' '));\n }\n\n return transformed.join(', ');\n}\n\nexport default function transformCss(css, id) {\n const dataAttr = `[data-ractive-css~=\"{${id}}\"]`;\n\n let transformed;\n\n if (dataRvcGuidPattern.test(css)) {\n transformed = css.replace(dataRvcGuidPattern, dataAttr);\n } else {\n transformed = cleanCss(\n css,\n (css, reconstruct) => {\n css = css\n .replace(importPattern, '$&\\x01')\n .replace(selectorsPattern, (match, $1) => {\n // don't transform at-rules and keyframe declarations\n if (excludePattern.test($1)) return match;\n\n const selectors = $1.split(',').map(trim);\n const transformed =\n selectors.map(selector => transformSelector(selector, dataAttr)).join(', ') + ' ';\n\n return match.replace($1, transformed);\n })\n .replace(importEndPattern, '');\n\n return reconstruct(css);\n },\n [keyframesDeclarationPattern]\n );\n }\n\n return transformed;\n}\n","const remove = /\\/\\*(?:[\\s\\S]*?)\\*\\//g;\nconst escape = /url\\(\\s*(['\"])(?:\\\\[\\s\\S]|(?!\\1).)*\\1\\s*\\)|url\\((?:\\\\[\\s\\S]|[^)])*\\)|(['\"])(?:\\\\[\\s\\S]|(?!\\2).)*\\2/gi;\nconst value = /\\0(\\d+)/g;\n\n// Removes comments and strings from the given CSS to make it easier to parse.\n// Callback receives the cleaned CSS and a function which can be used to put\n// the removed strings back in place after parsing is done.\nexport default function(css, callback, additionalReplaceRules = []) {\n const values = [];\n const reconstruct = css => css.replace(value, (match, n) => values[n]);\n css = css.replace(escape, match => `\\0${values.push(match) - 1}`).replace(remove, '');\n\n additionalReplaceRules.forEach(pattern => {\n css = css.replace(pattern, match => `\\0${values.push(match) - 1}`);\n });\n\n return callback(css, reconstruct);\n}\n","import { ensureArray, combine } from 'utils/array';\n\nexport default {\n extend: (Parent, proto, options) => {\n proto.adapt = combine(proto.adapt, ensureArray(options.adapt));\n },\n\n init() {}\n};\n","import { doc } from '../config/environment';\n\nconst PREFIX = '/* Ractive.js component styles */';\n\n// Holds current definitions of styles.\nconst styleDefinitions = [];\n\n// Flag to tell if we need to update the CSS\nlet isDirty = false;\n\n// These only make sense on the browser. See additional setup below.\nlet styleElement = null;\nlet useCssText = null;\n\nexport function addCSS(styleDefinition) {\n styleDefinitions.push(styleDefinition);\n isDirty = true;\n}\n\nexport function applyCSS(force) {\n const styleElement = style();\n\n // Apply only seems to make sense when we're in the DOM. Server-side renders\n // can call toCSS to get the updated CSS.\n if (!styleElement || (!force && !isDirty)) return;\n\n if (useCssText) {\n styleElement.styleSheet.cssText = getCSS(null);\n } else {\n styleElement.innerHTML = getCSS(null);\n }\n\n isDirty = false;\n}\n\nexport function getCSS(cssIds) {\n const filteredStyleDefinitions = cssIds\n ? styleDefinitions.filter(style => ~cssIds.indexOf(style.id))\n : styleDefinitions;\n\n filteredStyleDefinitions.forEach(d => (d.applied = true));\n\n return filteredStyleDefinitions.reduce(\n (styles, style) => `${styles ? `${styles}\\n\\n/* {${style.id}} */\\n${style.styles}` : ''}`,\n PREFIX\n );\n}\n\nfunction style() {\n // If we're on the browser, additional setup needed.\n if (doc && !styleElement) {\n styleElement = doc.createElement('style');\n styleElement.type = 'text/css';\n styleElement.setAttribute('data-ractive-css', '');\n\n doc.getElementsByTagName('head')[0].appendChild(styleElement);\n\n useCssText = !!styleElement.styleSheet;\n }\n\n return styleElement;\n}\n","import { splitKeypath } from 'shared/keypaths';\n\nexport default function readLink(keypath, options = {}) {\n const path = splitKeypath(keypath);\n\n if (this.viewmodel.has(path[0])) {\n let model = this.viewmodel.joinAll(path);\n\n if (!model.isLink) return;\n\n while ((model = model.target) && options.canonical !== false) {\n if (!model.isLink) break;\n }\n\n if (model) return { ractive: model.root.ractive, keypath: model.getKeypath() };\n }\n}\n","import makeArrayMethod from './shared/makeArrayMethod';\nexport default makeArrayMethod('push').path;\n","import makeArrayMethod from './shared/makeArrayMethod';\nexport default makeArrayMethod('pop').path;\n","export default function Ractive$once(eventName, handler) {\n const listener = this.on(eventName, function() {\n handler.apply(this, arguments);\n listener.cancel();\n });\n\n // so we can still do listener.cancel() manually\n return listener;\n}\n","import trim from './shared/trim';\nimport notEmptyString from './shared/notEmptyString';\nimport { hasOwn } from 'utils/object';\nimport { isObjectType, isString } from 'utils/is';\n\nexport default function Ractive$on(eventName, callback) {\n // eventName may already be a map\n const map = isObjectType(eventName) ? eventName : {};\n // or it may be a string along with a callback\n if (isString(eventName)) map[eventName] = callback;\n\n let silent = false;\n const events = [];\n\n for (const k in map) {\n const callback = map[k];\n const caller = function(...args) {\n if (!silent) return callback.apply(this, args);\n };\n const entry = {\n callback,\n handler: caller\n };\n\n if (hasOwn(map, k)) {\n const names = k\n .split(' ')\n .map(trim)\n .filter(notEmptyString);\n names.forEach(n => {\n (this._subs[n] || (this._subs[n] = [])).push(entry);\n if (n.indexOf('.')) this._nsSubs++;\n events.push([n, entry]);\n });\n }\n }\n\n return {\n cancel: () => events.forEach(e => this.off(e[0], e[1].callback)),\n isSilenced: () => silent,\n silence: () => (silent = true),\n resume: () => (silent = false)\n };\n}\n","import { removeFromArray } from 'utils/array';\nimport trim from './shared/trim';\nimport notEmptyString from './shared/notEmptyString';\n\nexport default function Ractive$off(eventName, callback) {\n // if no event is specified, remove _all_ event listeners\n if (!eventName) {\n this._subs = {};\n } else {\n // Handle multiple space-separated event names\n const eventNames = eventName\n .split(' ')\n .map(trim)\n .filter(notEmptyString);\n\n eventNames.forEach(event => {\n const subs = this._subs[event];\n // if given a specific callback to remove, remove only it\n if (subs && callback) {\n const entry = subs.find(s => s.callback === callback);\n if (entry) {\n removeFromArray(subs, entry);\n entry.off = true;\n\n if (event.indexOf('.')) this._nsSubs--;\n }\n } else if (subs) {\n // otherwise, remove all listeners for this event\n if (event.indexOf('.')) this._nsSubs -= subs.length;\n subs.length = 0;\n }\n });\n }\n\n return this;\n}\n","export default str => str !== '';\n","export default str => str.trim();\n","import { isObject, isFunction } from 'utils/is';\nimport { assign } from 'utils/object';\n\nconst onceOptions = { init: false, once: true };\n\nexport default function observeOnce(keypath, callback, options) {\n if (isObject(keypath) || isFunction(keypath)) {\n options = assign(callback || {}, onceOptions);\n return this.observe(keypath, options);\n }\n\n options = assign(options || {}, onceOptions);\n return this.observe(keypath, callback, options);\n}\n","import { isObject, isFunction } from 'utils/is';\nimport { warnOnceIfDebug } from 'utils/log';\nimport { splitKeypath } from 'shared/keypaths';\nimport resolveReference from 'src/view/resolvers/resolveReference';\nimport Observer from './observe/Observer';\nimport PatternObserver from './observe/Pattern';\nimport ArrayObserver from './observe/Array';\nimport { keys } from 'utils/object';\n\nexport default function observe(keypath, callback, options) {\n const observers = [];\n let map;\n let opts;\n\n if (isObject(keypath)) {\n map = keypath;\n opts = callback || {};\n } else {\n if (isFunction(keypath)) {\n map = { '': keypath };\n opts = callback || {};\n } else {\n map = {};\n map[keypath] = callback;\n opts = options || {};\n }\n }\n\n let silent = false;\n keys(map).forEach(keypath => {\n const callback = map[keypath];\n const caller = function(...args) {\n if (silent) return;\n return callback.apply(this, args);\n };\n\n let keypaths = keypath.split(' ');\n if (keypaths.length > 1) keypaths = keypaths.filter(k => k);\n\n keypaths.forEach(keypath => {\n opts.keypath = keypath;\n const observer = createObserver(this, keypath, caller, opts);\n if (observer) observers.push(observer);\n });\n });\n\n // add observers to the Ractive instance, so they can be\n // cancelled on ractive.teardown()\n this._observers.push.apply(this._observers, observers);\n\n return {\n cancel: () => observers.forEach(o => o.cancel()),\n isSilenced: () => silent,\n silence: () => (silent = true),\n resume: () => (silent = false)\n };\n}\n\nfunction createObserver(ractive, keypath, callback, options) {\n const keys = splitKeypath(keypath);\n let wildcardIndex = keys.indexOf('*');\n if (!~wildcardIndex) wildcardIndex = keys.indexOf('**');\n\n options.fragment = options.fragment || ractive.fragment;\n\n let model;\n if (!options.fragment) {\n model = ractive.viewmodel.joinKey(keys[0]);\n } else {\n // .*.whatever relative wildcard is a special case because splitkeypath doesn't handle the leading .\n if (~keys[0].indexOf('.*')) {\n model = options.fragment.findContext();\n wildcardIndex = 0;\n keys[0] = keys[0].slice(1);\n } else {\n model =\n wildcardIndex === 0\n ? options.fragment.findContext()\n : resolveReference(options.fragment, keys[0]);\n }\n }\n\n // the model may not exist key\n if (!model) model = ractive.viewmodel.joinKey(keys[0]);\n\n if (!~wildcardIndex) {\n model = model.joinAll(keys.slice(1));\n if (options.array) {\n return new ArrayObserver(ractive, model, callback, options);\n } else {\n return new Observer(ractive, model, callback, options);\n }\n } else {\n const double = keys.indexOf('**');\n if (~double) {\n if (double + 1 !== keys.length || ~keys.indexOf('*')) {\n warnOnceIfDebug(\n `Recursive observers may only specify a single '**' at the end of the path.`\n );\n return;\n }\n }\n\n model = model.joinAll(keys.slice(1, wildcardIndex));\n\n return new PatternObserver(ractive, model, keys.slice(wildcardIndex), callback, options);\n }\n}\n","import { removeFromArray } from 'utils/array';\nimport { isArray } from 'utils/is';\nimport runloop from 'src/global/runloop';\n\nfunction negativeOne() {\n return -1;\n}\n\nexport default class ArrayObserver {\n constructor(ractive, model, callback, options) {\n this.ractive = ractive;\n this.model = model;\n this.keypath = model.getKeypath();\n this.callback = callback;\n this.options = options;\n\n this.pending = null;\n\n model.register(this);\n\n if (options.init !== false) {\n this.sliced = [];\n this.shuffle([]);\n this.dispatch();\n } else {\n this.sliced = this.slice();\n }\n }\n\n cancel() {\n this.model.unregister(this);\n removeFromArray(this.ractive._observers, this);\n }\n\n dispatch() {\n this.callback(this.pending);\n this.pending = null;\n if (this.options.once) this.cancel();\n }\n\n handleChange(path) {\n if (this.pending) {\n // post-shuffle\n runloop.addObserver(this, this.options.defer);\n } else if (!path) {\n // entire array changed\n this.shuffle(this.sliced.map(negativeOne));\n this.handleChange();\n }\n }\n\n shuffle(newIndices) {\n const newValue = this.slice();\n\n const inserted = [];\n const deleted = [];\n let start;\n\n const hadIndex = {};\n\n newIndices.forEach((newIndex, oldIndex) => {\n hadIndex[newIndex] = true;\n\n if (newIndex !== oldIndex && start === undefined) {\n start = oldIndex;\n }\n\n if (newIndex === -1) {\n deleted.push(this.sliced[oldIndex]);\n }\n });\n\n if (start === undefined) start = newIndices.length;\n\n const len = newValue.length;\n for (let i = 0; i < len; i += 1) {\n if (!hadIndex[i]) inserted.push(newValue[i]);\n }\n\n this.pending = { inserted, deleted, start };\n this.sliced = newValue;\n }\n\n slice() {\n const value = this.model.get();\n return isArray(value) ? value.slice() : [];\n }\n}\n","import { escapeKey } from 'shared/keypaths';\nimport { removeFromArray } from 'utils/array';\nimport { isArray, isEqual } from 'utils/is';\nimport runloop from 'src/global/runloop';\nimport { create, keys } from 'utils/object';\n\nconst star = /\\*+/g;\n\nexport default class PatternObserver {\n constructor(ractive, baseModel, keys, callback, options) {\n this.context = options.context || ractive;\n this.ractive = ractive;\n this.baseModel = baseModel;\n this.keys = keys;\n this.callback = callback;\n\n const pattern = keys.join('\\\\.').replace(star, '(.+)');\n const baseKeypath = (this.baseKeypath = baseModel.getKeypath(ractive));\n this.pattern = new RegExp(`^${baseKeypath ? baseKeypath + '\\\\.' : ''}${pattern}$`);\n this.recursive = keys.length === 1 && keys[0] === '**';\n if (this.recursive) this.keys = ['*'];\n if (options.old) {\n this.oldContext = create(ractive);\n this.oldFn = options.old;\n }\n\n this.oldValues = {};\n this.newValues = {};\n\n this.defer = options.defer;\n this.once = options.once;\n this.strict = options.strict;\n\n this.dirty = false;\n this.changed = [];\n this.partial = false;\n this.links = options.links;\n\n const models = baseModel.findMatches(this.keys);\n\n models.forEach(model => {\n this.newValues[model.getKeypath(this.ractive)] = model.get();\n });\n\n if (options.init !== false) {\n this.dispatch();\n } else {\n updateOld(this, this.newValues);\n }\n\n baseModel.registerPatternObserver(this);\n }\n\n cancel() {\n this.baseModel.unregisterPatternObserver(this);\n removeFromArray(this.ractive._observers, this);\n }\n\n dispatch() {\n const newValues = this.newValues;\n this.newValues = {};\n keys(newValues).forEach(keypath => {\n const newValue = newValues[keypath];\n const oldValue = this.oldValues[keypath];\n\n if (this.strict && newValue === oldValue) return;\n if (isEqual(newValue, oldValue)) return;\n\n let args = [newValue, oldValue, keypath];\n if (keypath) {\n const wildcards = this.pattern.exec(keypath);\n if (wildcards) {\n args = args.concat(wildcards.slice(1));\n }\n }\n\n this.callback.apply(this.context, args);\n });\n\n updateOld(this, newValues, this.partial);\n\n this.dirty = false;\n }\n\n notify(key) {\n this.changed.push(key);\n }\n\n shuffle(newIndices) {\n if (!isArray(this.baseModel.value)) return;\n\n const max = this.baseModel.value.length;\n\n for (let i = 0; i < newIndices.length; i++) {\n if (newIndices[i] === -1 || newIndices[i] === i) continue;\n this.changed.push([i]);\n }\n\n for (let i = newIndices.touchedFrom; i < max; i++) {\n this.changed.push([i]);\n }\n }\n\n handleChange() {\n if (!this.dirty || this.changed.length) {\n if (!this.dirty) this.newValues = {};\n\n if (!this.changed.length) {\n this.baseModel.findMatches(this.keys).forEach(model => {\n const keypath = model.getKeypath(this.ractive);\n this.newValues[keypath] = model.get();\n });\n this.partial = false;\n } else {\n let count = 0;\n\n if (this.recursive) {\n this.changed.forEach(keys => {\n const model = this.baseModel.joinAll(keys);\n if (model.isLink && !this.links) return;\n count++;\n this.newValues[model.getKeypath(this.ractive)] = model.get();\n });\n } else {\n const ok = this.baseModel.isRoot\n ? this.changed.map(keys => keys.map(escapeKey).join('.'))\n : this.changed.map(keys => this.baseKeypath + '.' + keys.map(escapeKey).join('.'));\n\n this.baseModel.findMatches(this.keys).forEach(model => {\n const keypath = model.getKeypath(this.ractive);\n const check = k => {\n return (\n (k.indexOf(keypath) === 0 &&\n (k.length === keypath.length || k[keypath.length] === '.')) ||\n (keypath.indexOf(k) === 0 &&\n (k.length === keypath.length || keypath[k.length] === '.'))\n );\n };\n\n // is this model on a changed keypath?\n if (ok.filter(check).length) {\n count++;\n this.newValues[keypath] = model.get();\n }\n });\n }\n\n // no valid change triggered, so bail to avoid breakage\n if (!count) return;\n\n this.partial = true;\n }\n\n runloop.addObserver(this, this.defer);\n this.dirty = true;\n this.changed.length = 0;\n\n if (this.once) this.cancel();\n }\n }\n}\n\nfunction updateOld(observer, vals, partial) {\n const olds = observer.oldValues;\n\n if (observer.oldFn) {\n if (!partial) observer.oldValues = {};\n\n keys(vals).forEach(k => {\n const args = [olds[k], vals[k], k];\n const parts = observer.pattern.exec(k);\n if (parts) {\n args.push.apply(args, parts.slice(1));\n }\n observer.oldValues[k] = observer.oldFn.apply(observer.oldContext, args);\n });\n } else {\n if (partial) {\n keys(vals).forEach(k => (olds[k] = vals[k]));\n } else {\n observer.oldValues = vals;\n }\n }\n}\n","import { isEqual, isFunction } from 'utils/is';\nimport { removeFromArray } from 'utils/array';\nimport runloop from 'src/global/runloop';\nimport { rebindMatch } from 'shared/rebind';\nimport { create } from 'utils/object';\n\nexport default class Observer {\n constructor(ractive, model, callback, options) {\n this.context = options.context || ractive;\n this.callback = callback;\n this.ractive = ractive;\n this.keypath = options.keypath;\n this.options = options;\n\n if (model) this.resolved(model);\n\n if (isFunction(options.old)) {\n this.oldContext = create(ractive);\n this.oldFn = options.old;\n }\n\n if (options.init !== false) {\n this.dirty = true;\n this.dispatch();\n } else {\n updateOld(this);\n }\n\n this.dirty = false;\n }\n\n cancel() {\n this.cancelled = true;\n if (this.model) {\n this.model.unregister(this);\n } else {\n this.resolver.unbind();\n }\n removeFromArray(this.ractive._observers, this);\n }\n\n dispatch() {\n if (!this.cancelled) {\n this.callback.call(this.context, this.newValue, this.oldValue, this.keypath);\n updateOld(this, true);\n this.dirty = false;\n }\n }\n\n handleChange() {\n if (!this.dirty) {\n const newValue = this.model.get();\n if (isEqual(newValue, this.oldValue)) return;\n\n this.newValue = newValue;\n\n if (this.options.strict && this.newValue === this.oldValue) return;\n\n runloop.addObserver(this, this.options.defer);\n this.dirty = true;\n\n if (this.options.once) runloop.scheduleTask(() => this.cancel());\n } else {\n // make sure the newValue stays updated in case this observer gets touched multiple times in one loop\n this.newValue = this.model.get();\n }\n }\n\n rebind(next, previous) {\n next = rebindMatch(this.keypath, next, previous);\n if (next === this.model) return false;\n\n if (this.model) this.model.unregister(this);\n if (next) next.addShuffleTask(() => this.resolved(next));\n }\n\n resolved(model) {\n this.model = model;\n\n this.oldValue = undefined;\n this.newValue = model.get();\n\n model.register(this);\n }\n}\n\nfunction updateOld(observer, fresh) {\n const next = fresh\n ? observer.model\n ? observer.model.get()\n : observer.newValue\n : observer.newValue;\n observer.oldValue = observer.oldFn\n ? observer.oldFn.call(observer.oldContext, undefined, next, observer.keypath)\n : next;\n}\n","import { splitKeypath } from 'shared/keypaths';\nimport resolveReference from 'src/view/resolvers/resolveReference';\nimport runloop from 'src/global/runloop';\n\nexport default function link(there, here, options) {\n let model;\n const target = (options && (options.ractive || options.instance)) || this;\n\n // may need to allow a mapping to resolve implicitly\n const sourcePath = splitKeypath(there);\n if (!target.viewmodel.has(sourcePath[0]) && target.component) {\n model = resolveReference(target.component.up, sourcePath[0]);\n model = model.joinAll(sourcePath.slice(1));\n }\n\n const src = model || target.viewmodel.joinAll(sourcePath);\n const dest = this.viewmodel.joinAll(splitKeypath(here), { lastLink: false });\n\n if (isUpstream(src, dest) || isUpstream(dest, src)) {\n throw new Error('A keypath cannot be linked to itself.');\n }\n\n const promise = runloop.start();\n\n dest.link(src, (options && options.keypath) || there);\n\n runloop.end();\n\n return promise;\n}\n\nfunction isUpstream(check, start) {\n let model = start;\n while (model) {\n if (model === check || model.owner === check) return true;\n model = model.target || model.parent;\n }\n}\n","import hooks from 'src/events/Hook';\nimport { getElement } from 'utils/dom';\n\nexport default function Ractive$insert(target, anchor) {\n if (!this.fragment.rendered) {\n // TODO create, and link to, documentation explaining this\n throw new Error(\n 'The API has changed - you must call `ractive.render(target[, anchor])` to render your Ractive instance. Once rendered you can use `ractive.insert()`.'\n );\n }\n\n target = getElement(target);\n anchor = getElement(anchor) || null;\n\n if (!target) {\n throw new Error('You must specify a valid target to insert into');\n }\n\n target.insertBefore(this.detach(), anchor);\n this.el = target;\n\n (target.__ractive_instances__ || (target.__ractive_instances__ = [])).push(this);\n this.isDetached = false;\n\n fireInsertHook(this);\n}\n\nfunction fireInsertHook(ractive) {\n hooks.insert.fire(ractive);\n\n ractive.findAllComponents('*').forEach(child => {\n fireInsertHook(child.instance);\n });\n}\n","import { isClient, svg, vendors, win, doc } from 'config/environment';\nimport { html } from 'config/namespaces';\nimport { isString, isNumber } from 'utils/is';\n\nlet createElement, matches, div, methodNames, unprefixed, prefixed, i, j, makeFunction;\n\n// Test for SVG support\nif (!svg) {\n /* istanbul ignore next */\n createElement = (type, ns, extend) => {\n if (ns && ns !== html) {\n throw \"This browser does not support namespaces other than http://www.w3.org/1999/xhtml. The most likely cause of this error is that you're trying to render SVG in an older browser. See http://ractive.js.org/support/#svgs for more information\";\n }\n\n return extend ? doc.createElement(type, extend) : doc.createElement(type);\n };\n} else {\n createElement = (type, ns, extend) => {\n if (!ns || ns === html) {\n return extend ? doc.createElement(type, extend) : doc.createElement(type);\n }\n\n return extend ? doc.createElementNS(ns, type, extend) : doc.createElementNS(ns, type);\n };\n}\n\nexport function createDocumentFragment() {\n return doc.createDocumentFragment();\n}\n\nfunction getElement(input) {\n let output;\n\n if (!input || typeof input === 'boolean') {\n return;\n }\n\n /* istanbul ignore next */\n if (!win || !doc || !input) {\n return null;\n }\n\n // We already have a DOM node - no work to do. (Duck typing alert!)\n if (input.nodeType) {\n return input;\n }\n\n // Get node from string\n if (isString(input)) {\n // try ID first\n output = doc.getElementById(input);\n\n // then as selector, if possible\n if (!output && doc.querySelector) {\n try {\n output = doc.querySelector(input);\n } catch (e) {\n /* this space intentionally left blank */\n }\n }\n\n // did it work?\n if (output && output.nodeType) {\n return output;\n }\n }\n\n // If we've been given a collection (jQuery, Zepto etc), extract the first item\n if (input[0] && input[0].nodeType) {\n return input[0];\n }\n\n return null;\n}\n\nif (!isClient) {\n matches = null;\n} else {\n div = createElement('div');\n methodNames = ['matches', 'matchesSelector'];\n\n makeFunction = function(methodName) {\n return function(node, selector) {\n return node[methodName](selector);\n };\n };\n\n i = methodNames.length;\n\n while (i-- && !matches) {\n unprefixed = methodNames[i];\n\n if (div[unprefixed]) {\n matches = makeFunction(unprefixed);\n } else {\n j = vendors.length;\n while (j--) {\n prefixed = vendors[i] + unprefixed.substr(0, 1).toUpperCase() + unprefixed.substring(1);\n\n if (div[prefixed]) {\n matches = makeFunction(prefixed);\n break;\n }\n }\n }\n }\n\n // IE8... and apparently phantom some?\n /* istanbul ignore next */\n if (!matches) {\n matches = function(node, selector) {\n let parentNode, i;\n\n parentNode = node.parentNode;\n\n if (!parentNode) {\n // empty dummy <div>\n div.innerHTML = '';\n\n parentNode = div;\n node = node.cloneNode();\n\n div.appendChild(node);\n }\n\n const nodes = parentNode.querySelectorAll(selector);\n\n i = nodes.length;\n while (i--) {\n if (nodes[i] === node) {\n return true;\n }\n }\n\n return false;\n };\n }\n}\n\nfunction detachNode(node) {\n // stupid ie\n // eslint-disable-next-line valid-typeof\n if (node && typeof node.parentNode !== 'unknown' && node.parentNode) {\n node.parentNode.removeChild(node);\n }\n\n return node;\n}\n\nfunction safeToStringValue(value) {\n return value == null || (isNumber(value) && isNaN(value)) || !value.toString ? '' : '' + value;\n}\n\nfunction safeAttributeString(string) {\n return safeToStringValue(string)\n .replace(/&/g, '&')\n .replace(/\"/g, '"')\n .replace(/'/g, ''');\n}\n\nexport { createElement, detachNode, getElement, matches, safeToStringValue, safeAttributeString };\n","export const html = 'http://www.w3.org/1999/xhtml';\nexport const mathml = 'http://www.w3.org/1998/Math/MathML';\nexport const svg = 'http://www.w3.org/2000/svg';\nexport const xlink = 'http://www.w3.org/1999/xlink';\nexport const xml = 'http://www.w3.org/XML/1998/namespace';\nexport const xmlns = 'http://www.w3.org/2000/xmlns';\n\nexport default { html, mathml, svg, xlink, xml, xmlns };\n","import staticContext from '../static/getContext';\nimport getRactiveContext from 'src/shared/getRactiveContext';\nimport { isString } from 'utils/is';\n\nexport default function getContext(node, options) {\n if (!node) return getRactiveContext(this);\n\n if (isString(node)) {\n node = this.find(node, options);\n }\n\n return staticContext(node);\n}\n","import { doc } from 'config/environment';\nimport getRactiveContext from 'shared/getRactiveContext';\nimport { isString } from 'utils/is';\n\nconst query = doc && doc.querySelector;\n\nexport default function getContext(node) {\n if (isString(node) && query) {\n node = query.call(document, node);\n }\n\n let instances;\n if (node) {\n if (node._ractive) {\n return node._ractive.proxy.getContext();\n } else if ((instances = node.__ractive_instances__)) {\n if (instances.length === 1) return getRactiveContext(instances[0]);\n } else return getContext(node.parentNode);\n }\n}\n","import { splitKeypath } from 'shared/keypaths';\nimport resolveReference from 'src/view/resolvers/resolveReference';\nimport { FakeFragment } from 'shared/getRactiveContext';\nimport { isString } from 'utils/is';\n\nexport default function Ractive$get(keypath, opts) {\n if (!isString(keypath)) return this.viewmodel.get(true, keypath);\n\n const keys = splitKeypath(keypath);\n const key = keys[0];\n\n let model;\n\n if (!this.viewmodel.has(key)) {\n // if this is an inline component, we may need to create\n // an implicit mapping\n if (this.component && !this.isolated) {\n model = resolveReference(this.fragment || new FakeFragment(this), key);\n }\n }\n\n model = this.viewmodel.joinAll(keys);\n return model.get(true, opts);\n}\n","import fireEvent from 'src/events/fireEvent';\nimport Context from 'shared/Context';\nimport { assign, create } from 'utils/object';\nimport { isObjectType } from 'utils/is';\n\nexport default function Ractive$fire(eventName, ...args) {\n let ctx;\n\n // watch for reproxy\n if (args[0] instanceof Context) {\n const proto = args.shift();\n ctx = create(proto);\n assign(ctx, proto);\n } else if (isObjectType(args[0]) && (args[0] === null || args[0].constructor === Object)) {\n ctx = Context.forRactive(this, args.shift());\n } else {\n ctx = Context.forRactive(this);\n }\n\n return fireEvent(this, eventName, ctx, args);\n}\n","import resolveReference from 'src/view/resolvers/resolveReference';\nimport Model from 'src/model/Model';\nimport { isNumeric, isObject, isNumber, isObjectType, isString } from 'utils/is';\nimport runloop from 'src/global/runloop';\nimport findElement from 'src/view/items/shared/findElement';\nimport { set as sharedSet } from './set';\nimport makeArrayMethod from '../Ractive/prototype/shared/makeArrayMethod';\nimport { animate as protoAnimate } from '../Ractive/prototype/animate';\nimport { update as protoUpdate } from '../Ractive/prototype/update';\nimport getRactiveContext, { extern, findParentWithContext } from './getRactiveContext';\nimport { hasOwn } from 'utils/object';\nimport { ELEMENT } from 'config/types';\n\nconst modelPush = makeArrayMethod('push').model;\nconst modelPop = makeArrayMethod('pop').model;\nconst modelShift = makeArrayMethod('shift').model;\nconst modelUnshift = makeArrayMethod('unshift').model;\nconst modelSort = makeArrayMethod('sort').model;\nconst modelSplice = makeArrayMethod('splice').model;\nconst modelReverse = makeArrayMethod('reverse').model;\n\nclass ContextData extends Model {\n constructor(options) {\n super(null, null);\n\n this.isRoot = true;\n this.root = this;\n this.value = {};\n this.ractive = options.ractive;\n this.adaptors = [];\n this.context = options.context;\n }\n\n getKeypath() {\n return '@context.data';\n }\n\n rebound() {}\n}\n\nexport default class Context {\n constructor(fragment, element) {\n this.fragment = fragment;\n this.element = element || findElement(fragment);\n this.node = this.element && this.element.node;\n this.ractive = fragment.ractive;\n this.root = this;\n }\n\n get decorators() {\n const items = {};\n if (!this.element) return items;\n this.element.decorators.forEach(d => (items[d.name] = d.handle));\n return items;\n }\n\n get _data() {\n return (\n this.model ||\n (this.root.model = new ContextData({\n ractive: this.ractive,\n context: this.root\n }))\n );\n }\n\n // the usual mutation suspects\n add(keypath, d, options) {\n const num = isNumber(d) ? +d : 1;\n const opts = isObjectType(d) ? d : options;\n return sharedSet(\n build(this, keypath, num).map(pair => {\n const [model, val] = pair;\n const value = model.get();\n if (!isNumeric(val) || !isNumeric(value)) throw new Error('Cannot add non-numeric value');\n return [model, value + val];\n }),\n opts\n );\n }\n\n animate(keypath, value, options) {\n const model = findModel(this, keypath).model;\n return protoAnimate(this.ractive, model, value, options);\n }\n\n // get relative keypaths and values\n get(keypath) {\n if (!keypath) return this.fragment.findContext().get(true);\n\n const { model } = findModel(this, keypath);\n\n return model ? model.get(true) : undefined;\n }\n\n getParent(component) {\n let fragment = this.fragment;\n\n if (fragment.context)\n fragment = findParentWithContext(fragment.parent || (component && fragment.componentParent));\n else {\n fragment = findParentWithContext(fragment.parent || (component && fragment.componentParent));\n if (fragment)\n fragment = findParentWithContext(\n fragment.parent || (component && fragment.componentParent)\n );\n }\n\n if (!fragment || fragment === this.fragment) return;\n else return fragment.getContext();\n }\n\n hasListener(name, bubble) {\n // if the owner is a component, start there because the nearest element\n // may exist outside of the immediate context (yield)\n let el = this.fragment.owner.component\n ? this.fragment.owner\n : this.element || this.fragment.owner;\n let base;\n\n do {\n base = el.component || el;\n if (base.template.t === ELEMENT) {\n if (findEvent(base, name)) return true;\n }\n el = el.up && el.up.owner;\n if (el && el.component) el = el.component;\n } while (el && bubble);\n }\n\n link(source, dest) {\n const there = findModel(this, source).model;\n const here = findModel(this, dest).model;\n const promise = runloop.start();\n here.link(there, source);\n runloop.end();\n return promise;\n }\n\n listen(event, handler) {\n const el = this.element;\n el.on(event, handler);\n return {\n cancel() {\n el.off(event, handler);\n }\n };\n }\n\n observe(keypath, callback, options = {}) {\n if (isObject(keypath)) options = callback || {};\n options.fragment = this.fragment;\n return this.ractive.observe(keypath, callback, options);\n }\n\n observeOnce(keypath, callback, options = {}) {\n if (isObject(keypath)) options = callback || {};\n options.fragment = this.fragment;\n return this.ractive.observeOnce(keypath, callback, options);\n }\n\n pop(keypath) {\n return modelPop(findModel(this, keypath).model, []);\n }\n\n push(keypath, ...values) {\n return modelPush(findModel(this, keypath).model, values);\n }\n\n raise(name, event, ...args) {\n let el = this.element;\n let ev;\n\n while (el) {\n if (el.component) el = el.component;\n ev = findEvent(el, name);\n if (ev) {\n return ev.fire(\n ev.element.getContext(\n event || {},\n event && !('original' in event) ? { original: {} } : {}\n ),\n args\n );\n }\n\n el = el.up && el.up.owner;\n }\n }\n\n readLink(keypath, options) {\n return this.ractive.readLink(this.resolve(keypath), options);\n }\n\n resolve(path, ractive) {\n const { model, instance } = findModel(this, path);\n return model ? model.getKeypath(ractive || instance) : path;\n }\n\n reverse(keypath) {\n return modelReverse(findModel(this, keypath).model, []);\n }\n\n set(keypath, value, options) {\n return sharedSet(build(this, keypath, value), options);\n }\n\n shift(keypath) {\n return modelShift(findModel(this, keypath).model, []);\n }\n\n splice(keypath, index, drop, ...add) {\n add.unshift(index, drop);\n return modelSplice(findModel(this, keypath).model, add);\n }\n\n sort(keypath) {\n return modelSort(findModel(this, keypath).model, []);\n }\n\n subtract(keypath, d, options) {\n const num = isNumber(d) ? d : 1;\n const opts = isObjectType(d) ? d : options;\n return sharedSet(\n build(this, keypath, num).map(pair => {\n const [model, val] = pair;\n const value = model.get();\n if (!isNumeric(val) || !isNumeric(value)) throw new Error('Cannot add non-numeric value');\n return [model, value - val];\n }),\n opts\n );\n }\n\n toggle(keypath, options) {\n const { model } = findModel(this, keypath);\n return sharedSet([[model, !model.get()]], options);\n }\n\n unlink(dest) {\n const here = findModel(this, dest).model;\n const promise = runloop.start();\n if (here.owner && here.owner._link) here.owner.unlink();\n runloop.end();\n return promise;\n }\n\n unlisten(event, handler) {\n this.element.off(event, handler);\n }\n\n unshift(keypath, ...add) {\n return modelUnshift(findModel(this, keypath).model, add);\n }\n\n update(keypath, options) {\n return protoUpdate(this.ractive, findModel(this, keypath).model, options);\n }\n\n updateModel(keypath, cascade) {\n const { model } = findModel(this, keypath);\n const promise = runloop.start();\n model.updateFromBindings(cascade);\n runloop.end();\n return promise;\n }\n\n // two-way binding related helpers\n isBound() {\n const { model } = this.getBindingModel(this);\n return !!model;\n }\n\n getBindingPath(ractive) {\n const { model, instance } = this.getBindingModel(this);\n if (model) return model.getKeypath(ractive || instance);\n }\n\n getBinding() {\n const { model } = this.getBindingModel(this);\n if (model) return model.get(true);\n }\n\n getBindingModel(ctx) {\n const el = ctx.element;\n return { model: el.binding && el.binding.model, instance: el.up.ractive };\n }\n\n setBinding(value) {\n const { model } = this.getBindingModel(this);\n return sharedSet([[model, value]]);\n }\n}\n\nContext.forRactive = getRactiveContext;\n// circular deps are fun\nextern.Context = Context;\n\n// TODO: at some point perhaps this could support relative * keypaths?\nfunction build(ctx, keypath, value) {\n const sets = [];\n\n // set multiple keypaths in one go\n if (isObject(keypath)) {\n for (const k in keypath) {\n if (hasOwn(keypath, k)) {\n sets.push([findModel(ctx, k).model, keypath[k]]);\n }\n }\n } else {\n // set a single keypath\n sets.push([findModel(ctx, keypath).model, value]);\n }\n\n return sets;\n}\n\nfunction findModel(ctx, path) {\n const frag = ctx.fragment;\n\n if (!isString(path)) {\n return { model: frag.findContext(), instance: path };\n }\n\n return { model: resolveReference(frag, path), instance: frag.ractive };\n}\n\nfunction findEvent(el, name) {\n return el.events && el.events.find && el.events.find(e => ~e.template.n.indexOf(name));\n}\n","import hooks from 'src/events/Hook';\nimport runloop from 'src/global/runloop';\nimport { splitKeypath } from 'shared/keypaths';\nimport { isString } from 'utils/is';\n\nexport function update(ractive, model, options) {\n // if the parent is wrapped, the adaptor will need to be updated before\n // updating on this keypath\n if (model.parent && model.parent.wrapper) {\n model.parent.adapt();\n }\n\n const promise = runloop.start();\n\n model.mark(options && options.force);\n\n // notify upstream of changes\n model.notifyUpstream();\n\n runloop.end();\n\n hooks.update.fire(ractive, model);\n\n return promise;\n}\n\nexport default function Ractive$update(keypath, options) {\n let opts, path;\n\n if (isString(keypath)) {\n path = splitKeypath(keypath);\n opts = options;\n } else {\n opts = keypath;\n }\n\n return update(this, path ? this.viewmodel.joinAll(path) : this.viewmodel, opts);\n}\n","import { splitKeypath } from 'shared/keypaths';\nimport runloop from 'src/global/runloop';\nimport getNewIndices from 'shared/getNewIndices';\nimport { isArray } from 'utils/is';\n\nconst arrayProto = Array.prototype;\n\nexport default function(methodName) {\n function path(keypath, ...args) {\n return model(this.viewmodel.joinAll(splitKeypath(keypath)), args);\n }\n\n function model(mdl, args) {\n let array = mdl.get();\n\n if (!isArray(array)) {\n if (array === undefined) {\n array = [];\n const result = arrayProto[methodName].apply(array, args);\n const promise = runloop.start().then(() => result);\n mdl.set(array);\n runloop.end();\n return promise;\n } else {\n throw new Error(\n `shuffle array method ${methodName} called on non-array at ${mdl.getKeypath()}`\n );\n }\n }\n\n const newIndices = getNewIndices(array.length, methodName, args);\n const result = arrayProto[methodName].apply(array, args);\n\n const promise = runloop.start().then(() => result);\n promise.result = result;\n\n if (newIndices) {\n if (mdl.shuffle) {\n mdl.shuffle(newIndices);\n } else {\n // it's a computation, which don't have a shuffle, so just invalidate\n mdl.mark();\n }\n } else {\n mdl.set(result);\n }\n\n runloop.end();\n\n return promise;\n }\n\n return { path, model };\n}\n","import { isNumber } from 'utils/is';\n\n// This function takes an array, the name of a mutator method, and the\n// arguments to call that mutator method with, and returns an array that\n// maps the old indices to their new indices.\n\n// So if you had something like this...\n//\n// array = [ 'a', 'b', 'c', 'd' ];\n// array.push( 'e' );\n//\n// ...you'd get `[ 0, 1, 2, 3 ]` - in other words, none of the old indices\n// have changed. If you then did this...\n//\n// array.unshift( 'z' );\n//\n// ...the indices would be `[ 1, 2, 3, 4, 5 ]` - every item has been moved\n// one higher to make room for the 'z'. If you removed an item, the new index\n// would be -1...\n//\n// array.splice( 2, 2 );\n//\n// ...this would result in [ 0, 1, -1, -1, 2, 3 ].\n//\n// This information is used to enable fast, non-destructive shuffling of list\n// sections when you do e.g. `ractive.splice( 'items', 2, 2 );\n\nexport default function getNewIndices(length, methodName, args) {\n const newIndices = [];\n\n const spliceArguments = getSpliceEquivalent(length, methodName, args);\n\n if (!spliceArguments) {\n return null; // TODO support reverse and sort?\n }\n\n const balance = spliceArguments.length - 2 - spliceArguments[1];\n\n const removeStart = Math.min(length, spliceArguments[0]);\n const removeEnd = removeStart + spliceArguments[1];\n newIndices.startIndex = removeStart;\n\n let i;\n for (i = 0; i < removeStart; i += 1) {\n newIndices.push(i);\n }\n\n for (; i < removeEnd; i += 1) {\n newIndices.push(-1);\n }\n\n for (; i < length; i += 1) {\n newIndices.push(i + balance);\n }\n\n // there is a net shift for the rest of the array starting with index + balance\n if (balance !== 0) {\n newIndices.touchedFrom = spliceArguments[0];\n } else {\n newIndices.touchedFrom = length;\n }\n\n return newIndices;\n}\n\n// The pop, push, shift an unshift methods can all be represented\n// as an equivalent splice\nfunction getSpliceEquivalent(length, methodName, args) {\n switch (methodName) {\n case 'splice':\n if (args[0] !== undefined && args[0] < 0) {\n args[0] = length + Math.max(args[0], -length);\n }\n\n if (args[0] === undefined) args[0] = 0;\n\n while (args.length < 2) {\n args.push(length - args[0]);\n }\n\n if (!isNumber(args[1])) {\n args[1] = length - args[0];\n }\n\n // ensure we only remove elements that exist\n args[1] = Math.min(args[1], length - args[0]);\n\n return args;\n\n case 'sort':\n case 'reverse':\n return null;\n\n case 'pop':\n if (length) {\n return [length - 1, 1];\n }\n return [0, 0];\n\n case 'push':\n return [length, 0].concat(args);\n\n case 'shift':\n return [0, length ? 1 : 0];\n\n case 'unshift':\n return [0, 0].concat(args);\n }\n}\n","import { ANCHOR, COMPONENT, ELEMENT } from 'config/types';\n\nexport default function findElement(start, orComponent = true, name) {\n while (\n start &&\n (start.type !== ELEMENT || (name && start.name !== name)) &&\n (!orComponent || (start.type !== COMPONENT && start.type !== ANCHOR))\n ) {\n // start is a fragment - look at the owner\n if (start.owner) start = start.owner;\n else if (start.component)\n // start is a component or yielder - look at the container\n start = start.containerFragment || start.component.up;\n else if (start.parent)\n // start is an item - look at the parent\n start = start.parent;\n else if (start.up)\n // start is an item without a parent - look at the parent fragment\n start = start.up;\n else start = undefined;\n }\n\n return start;\n}\n","export default function Ractive$findParent(selector) {\n if (this.parent) {\n if (this.parent.component && this.parent.component.name === selector) {\n return this.parent;\n } else {\n return this.parent.findParent(selector);\n }\n }\n\n return null;\n}\n","export default function Ractive$findContainer(selector) {\n if (this.container) {\n if (this.container.component && this.container.component.name === selector) {\n return this.container;\n } else {\n return this.container.findContainer(selector);\n }\n }\n\n return null;\n}\n","import { isObjectType } from 'utils/is';\n\nexport default function Ractive$findComponent(selector, options = {}) {\n if (isObjectType(selector)) {\n options = selector;\n selector = '';\n }\n\n let child = this.fragment.findComponent(selector, options);\n if (child) return child;\n\n if (options.remote) {\n if (!selector && this._children.length) return this._children[0].instance;\n for (let i = 0; i < this._children.length; i++) {\n // skip children that are or should be in an anchor\n if (this._children[i].target) continue;\n if (this._children[i].name === selector) return this._children[i].instance;\n child = this._children[i].instance.findComponent(selector, options);\n if (child) return child;\n }\n }\n}\n","import { isArray, isObjectType } from 'utils/is';\n\nexport default function Ractive$findAllComponents(selector, options) {\n if (!options && isObjectType(selector)) {\n options = selector;\n selector = '';\n }\n\n options = options || {};\n\n if (!isArray(options.result)) options.result = [];\n\n this.fragment.findAllComponents(selector, options);\n\n if (options.remote) {\n // search non-fragment children\n this._children.forEach(c => {\n if (!c.target && c.instance.fragment && c.instance.fragment.rendered) {\n if (!selector || c.name === selector) {\n options.result.push(c.instance);\n }\n\n c.instance.findAllComponents(selector, options);\n }\n });\n }\n\n return options.result;\n}\n","import { isArray } from 'utils/is';\n\nexport default function Ractive$findAll(selector, options = {}) {\n if (!this.rendered)\n throw new Error(\n `Cannot call ractive.findAll('${selector}', ...) unless instance is rendered to the DOM`\n );\n\n if (!isArray(options.result)) options.result = [];\n\n this.fragment.findAll(selector, options);\n\n if (options.remote) {\n // seach non-fragment children\n this._children.forEach(c => {\n if (!c.target && c.instance.fragment && c.instance.fragment.rendered) {\n c.instance.findAll(selector, options);\n }\n });\n }\n\n return options.result;\n}\n","export default function Ractive$find(selector, options = {}) {\n if (!this.rendered)\n throw new Error(\n `Cannot call ractive.find('${selector}') unless instance is rendered to the DOM`\n );\n\n let node = this.fragment.find(selector, options);\n if (node) return node;\n\n if (options.remote) {\n for (let i = 0; i < this._children.length; i++) {\n if (!this._children[i].instance.fragment.rendered) continue;\n node = this._children[i].instance.find(selector, options);\n if (node) return node;\n }\n }\n}\n","import hooks from 'src/events/Hook';\nimport runloop from 'src/global/runloop';\nimport { updateAnchors } from 'shared/anchors';\n\nexport default function detachChild(child) {\n const children = this._children;\n let meta, index;\n\n let i = children.length;\n while (i--) {\n if (children[i].instance === child) {\n index = i;\n meta = children[i];\n break;\n }\n }\n\n if (!meta || child.parent !== this)\n throw new Error(`Instance ${child._guid} is not attached to this instance.`);\n\n const promise = runloop.start();\n\n if (meta.anchor) meta.anchor.removeChild(meta);\n if (!child.isolated) child.viewmodel.detached();\n\n children.splice(index, 1);\n if (meta.target) {\n this.splice(\n `@this.children.byName.${meta.target}`,\n children.byName[meta.target].indexOf(meta),\n 1\n );\n updateAnchors(this, meta.target);\n }\n const rm = child.viewmodel.getRactiveModel();\n rm.joinKey('parent', { lastLink: false }).unlink();\n rm.joinKey('root', { lastLink: false }).link(rm);\n child.root = child;\n child.parent = null;\n child.component = null;\n\n hooks.detachchild.fire(child);\n\n runloop.end();\n\n promise.ractive = child;\n return promise.then(() => child);\n}\n","import hooks from 'src/events/Hook';\nimport { removeFromArray } from 'utils/array';\n\nexport default function Ractive$detach() {\n if (this.isDetached) {\n return this.el;\n }\n\n if (this.el) {\n removeFromArray(this.el.__ractive_instances__, this);\n }\n\n this.el = this.fragment.detach();\n this.isDetached = true;\n\n hooks.detach.fire(this);\n return this.el;\n}\n","import { splitKeypath } from 'shared/keypaths';\nimport { isString, isFunction } from 'utils/is';\nimport runloop from 'src/global/runloop';\nimport { fireShuffleTasks } from 'src/model/ModelBase';\n\nexport function compute(path, computed) {\n this.computed[path] = computed;\n if (isString(computed) || isFunction(computed))\n computed = this.computed[path] = { get: computed };\n\n const keys = splitKeypath(path);\n if (!~path.indexOf('*')) {\n const last = keys.pop();\n return this.viewmodel.joinAll(keys).compute(last, computed);\n } else {\n computed.pattern = new RegExp(\n '^' +\n keys\n .map(k => k.replace(/\\*\\*/g, '(.+)').replace(/\\*/g, '((?:\\\\\\\\.|[^\\\\.])+)'))\n .join('\\\\.') +\n '$'\n );\n }\n}\n\nexport default function Ractive$compute(path, computed) {\n const promise = runloop.start();\n const comp = compute.call(this, path, computed);\n\n if (comp) {\n const keys = splitKeypath(path);\n if (keys.length === 1 && !comp.isReadonly) {\n comp.set(this.viewmodel.value[keys[0]]);\n }\n\n const first = keys.reduce((a, c) => a && a.childByKey[c], this.viewmodel);\n if (first) {\n first.rebind(comp, first, false);\n if (first.parent) delete first.parent.childByKey[first.key];\n fireShuffleTasks();\n }\n }\n\n runloop.end();\n\n return promise;\n}\n","import hooks from 'src/events/Hook';\nimport runloop from 'src/global/runloop';\nimport { unrenderChild, updateAnchors } from 'shared/anchors';\n\nexport default function attachChild(child, options = {}) {\n const children = this._children;\n let idx;\n\n if (child.parent && child.parent !== this)\n throw new Error(\n `Instance ${child._guid} is already attached to a different instance ${\n child.parent._guid\n }. Please detach it from the other instance using detachChild first.`\n );\n else if (child.parent)\n throw new Error(`Instance ${child._guid} is already attached to this instance.`);\n\n const meta = {\n instance: child,\n ractive: this,\n name: options.name || child.constructor.name || 'Ractive',\n target: options.target || false,\n bubble,\n findNextNode\n };\n meta.nameOption = options.name;\n\n // child is managing itself\n if (!meta.target) {\n meta.up = this.fragment;\n meta.external = true;\n } else {\n let list;\n if (!(list = children.byName[meta.target])) {\n list = [];\n this.set(`@this.children.byName.${meta.target}`, list);\n }\n idx = options.prepend ? 0 : options.insertAt !== undefined ? options.insertAt : list.length;\n }\n\n child.parent = this;\n child.root = this.root;\n child.component = meta;\n children.push(meta);\n\n const promise = runloop.start();\n\n const rm = child.viewmodel.getRactiveModel();\n rm.joinKey('parent', { lastLink: false }).link(this.viewmodel.getRactiveModel());\n rm.joinKey('root', { lastLink: false }).link(this.root.viewmodel.getRactiveModel());\n\n hooks.attachchild.fire(child);\n\n if (meta.target) {\n unrenderChild(meta);\n this.splice(`@this.children.byName.${meta.target}`, idx, 0, meta);\n updateAnchors(this, meta.target);\n } else {\n if (!child.isolated) child.viewmodel.attached(this.fragment);\n }\n\n runloop.end();\n\n promise.ractive = child;\n return promise.then(() => child);\n}\n\nfunction bubble() {\n runloop.addFragment(this.instance.fragment);\n}\n\nfunction findNextNode() {\n if (this.anchor) return this.anchor.findNextNode();\n}\n","export function findAnchors(fragment, name = null) {\n const res = [];\n\n findAnchorsIn(fragment, name, res);\n\n return res;\n}\n\nfunction findAnchorsIn(item, name, result) {\n if (item.isAnchor) {\n if (!name || item.name === name) {\n result.push(item);\n }\n } else if (item.items) {\n item.items.forEach(i => findAnchorsIn(i, name, result));\n } else if (item.iterations) {\n item.iterations.forEach(i => findAnchorsIn(i, name, result));\n } else if (item.fragment && !item.component) {\n findAnchorsIn(item.fragment, name, result);\n }\n}\n\nexport function updateAnchors(instance, name = null) {\n const anchors = findAnchors(instance.fragment, name);\n const idxs = {};\n const children = instance._children.byName;\n\n anchors.forEach(a => {\n const name = a.name;\n if (!(name in idxs)) idxs[name] = 0;\n const idx = idxs[name];\n const child = (children[name] || [])[idx];\n\n if (child && child.lastBound !== a) {\n if (child.lastBound) child.lastBound.removeChild(child);\n a.addChild(child);\n }\n\n idxs[name]++;\n });\n}\n\nexport function unrenderChild(meta) {\n if (meta.instance.fragment.rendered) {\n meta.shouldDestroy = true;\n meta.instance.unrender();\n }\n meta.instance.el = null;\n}\n","import fireEvent from './fireEvent';\nimport getRactiveContext from '../shared/getRactiveContext';\n\nexport class Hook {\n constructor(event) {\n this.event = event;\n this.method = 'on' + event;\n }\n\n fire(ractive, arg) {\n const context = getRactiveContext(ractive);\n const method = this.method;\n\n if (ractive[method]) {\n arg ? ractive[method](context, arg) : ractive[method](context);\n }\n\n fireEvent(ractive, this.event, context, arg ? [arg, ractive] : [ractive]);\n }\n}\n\nfunction getChildQueue(queue, ractive) {\n return queue[ractive._guid] || (queue[ractive._guid] = []);\n}\n\nfunction fire(hookQueue, ractive) {\n const childQueue = getChildQueue(hookQueue.queue, ractive);\n\n hookQueue.hook.fire(ractive);\n\n // queue is \"live\" because components can end up being\n // added while hooks fire on parents that modify data values.\n while (childQueue.length) {\n fire(hookQueue, childQueue.shift());\n }\n\n delete hookQueue.queue[ractive._guid];\n}\n\nexport class HookQueue {\n constructor(event) {\n this.hook = new Hook(event);\n this.inProcess = {};\n this.queue = {};\n }\n\n begin(ractive) {\n this.inProcess[ractive._guid] = true;\n }\n\n end(ractive) {\n const parent = ractive.parent;\n\n // If this is *isn't* a child of a component that's in process,\n // it should call methods or fire at this point\n if (!parent || !this.inProcess[parent._guid]) {\n fire(this, ractive);\n } else {\n // elsewise, handoff to parent to fire when ready\n getChildQueue(this.queue, parent).push(ractive);\n }\n\n delete this.inProcess[ractive._guid];\n }\n}\n\nconst hooks = {};\n[\n 'construct',\n 'config',\n 'attachchild',\n 'detach',\n 'detachchild',\n 'insert',\n 'complete',\n 'reset',\n 'render',\n 'unrendering',\n 'unrender',\n 'teardown',\n 'destruct',\n 'update'\n].forEach(hook => {\n hooks[hook] = new Hook(hook);\n});\nhooks.init = new HookQueue('init');\n\nexport default hooks;\n","import { enqueue, dequeue } from './eventStack';\n\nconst initStars = {};\nconst bubbleStars = {};\n\n// cartesian product of name parts and stars\n// adjusted appropriately for special cases\nfunction variants(name, initial) {\n const map = initial ? initStars : bubbleStars;\n if (map[name]) return map[name];\n\n const parts = name.split('.');\n const result = [];\n let base = false;\n\n // initial events the implicit namespace of 'this'\n if (initial) {\n parts.unshift('this');\n base = true;\n }\n\n // use max - 1 bits as a bitmap to pick a part or a *\n // need to skip the full star case if the namespace is synthetic\n const max = Math.pow(2, parts.length) - (initial ? 1 : 0);\n for (let i = 0; i < max; i++) {\n const join = [];\n for (let j = 0; j < parts.length; j++) {\n join.push(1 & (i >> j) ? '*' : parts[j]);\n }\n result.unshift(join.join('.'));\n }\n\n if (base) {\n // include non-this-namespaced versions\n if (parts.length > 2) {\n result.push.apply(result, variants(name, false));\n } else {\n result.push('*');\n result.push(name);\n }\n }\n\n map[name] = result;\n return result;\n}\n\nexport default function fireEvent(ractive, eventName, context, args = []) {\n if (!eventName) {\n return;\n }\n\n context.name = eventName;\n args.unshift(context);\n\n const eventNames = ractive._nsSubs ? variants(eventName, true) : ['*', eventName];\n\n return fireEventAs(ractive, eventNames, context, args, true);\n}\n\nfunction fireEventAs(ractive, eventNames, context, args, initialFire = false) {\n let bubble = true;\n\n if (initialFire || ractive._nsSubs) {\n enqueue(ractive, context);\n\n let i = eventNames.length;\n while (i--) {\n if (eventNames[i] in ractive._subs) {\n bubble = notifySubscribers(ractive, ractive._subs[eventNames[i]], context, args) && bubble;\n }\n }\n\n dequeue(ractive);\n }\n\n if (ractive.parent && bubble) {\n if (initialFire && ractive.component) {\n const fullName = ractive.component.name + '.' + eventNames[eventNames.length - 1];\n eventNames = variants(fullName, false);\n\n if (context && !context.component) {\n context.component = ractive;\n }\n }\n\n bubble = fireEventAs(ractive.parent, eventNames, context, args);\n }\n\n return bubble;\n}\n\nfunction notifySubscribers(ractive, subscribers, context, args) {\n let originalEvent = null;\n let stopEvent = false;\n\n // subscribers can be modified inflight, e.g. \"once\" functionality\n // so we need to copy to make sure everyone gets called\n subscribers = subscribers.slice();\n\n for (let i = 0, len = subscribers.length; i < len; i += 1) {\n if (!subscribers[i].off && subscribers[i].handler.apply(ractive, args) === false) {\n stopEvent = true;\n }\n }\n\n if (context && stopEvent && (originalEvent = context.event)) {\n originalEvent.preventDefault && originalEvent.preventDefault();\n originalEvent.stopPropagation && originalEvent.stopPropagation();\n }\n\n return !stopEvent;\n}\n","export function enqueue(ractive, event) {\n if (ractive.event) {\n ractive._eventQueue.push(ractive.event);\n }\n\n ractive.event = event;\n}\n\nexport function dequeue(ractive) {\n if (ractive._eventQueue.length) {\n ractive.event = ractive._eventQueue.pop();\n } else {\n ractive.event = null;\n }\n}\n","import runloop from 'src/global/runloop';\nimport easing from 'src/Ractive/static/easing';\nimport interpolate from 'shared/interpolate';\nimport { isEqual, isFunction, isObjectType } from 'utils/is';\nimport noop from 'utils/noop';\nimport { splitKeypath } from 'shared/keypaths';\nimport { defineProperty, keys as objectKeys } from 'utils/object';\n\nfunction immediate(value) {\n const result = Promise.resolve(value);\n defineProperty(result, 'stop', { value: noop });\n return result;\n}\n\nconst linear = easing.linear;\n\nfunction getOptions(options, instance) {\n options = options || {};\n\n let easing;\n if (options.easing) {\n easing = isFunction(options.easing) ? options.easing : instance.easing[options.easing];\n }\n\n return {\n easing: easing || linear,\n duration: 'duration' in options ? options.duration : 400,\n complete: options.complete || noop,\n step: options.step || noop,\n interpolator: options.interpolator\n };\n}\n\nexport function animate(ractive, model, to, options) {\n options = getOptions(options, ractive);\n const from = model.get();\n\n // don't bother animating values that stay the same\n if (isEqual(from, to)) {\n options.complete(options.to);\n return immediate(to);\n }\n\n const interpolator = interpolate(from, to, ractive, options.interpolator);\n\n // if we can't interpolate the value, set it immediately\n if (!interpolator) {\n runloop.start();\n model.set(to);\n runloop.end();\n\n return immediate(to);\n }\n\n return model.animate(from, to, options, interpolator);\n}\n\nexport default function Ractive$animate(keypath, to, options) {\n if (isObjectType(keypath)) {\n const keys = objectKeys(keypath);\n\n throw new Error(`ractive.animate(...) no longer supports objects. Instead of ractive.animate({\n ${keys.map(key => `'${key}': ${keypath[key]}`).join('\\n ')}\n}, {...}), do\n\n${keys.map(key => `ractive.animate('${key}', ${keypath[key]}, {...});`).join('\\n')}\n`);\n }\n\n return animate(this, this.viewmodel.joinAll(splitKeypath(keypath)), to, options);\n}\n","import add from './shared/add';\nimport { isNumber, isObjectType } from 'utils/is';\n\nexport default function Ractive$add(keypath, d, options) {\n const num = isNumber(d) ? d : 1;\n const opts = isObjectType(d) ? d : options;\n return add(this, keypath, num, opts);\n}\n","import { isNumeric, isString } from 'utils/is';\nimport { build, set } from 'shared/set';\n\nconst errorMessage = 'Cannot add to a non-numeric value';\n\nexport default function add(ractive, keypath, d, options) {\n if (!isString(keypath) || !isNumeric(d)) {\n throw new Error('Bad arguments');\n }\n\n const sets = build(ractive, keypath, d, options && options.isolated);\n\n return set(\n sets.map(pair => {\n const [model, add] = pair;\n const value = model.get();\n if (!isNumeric(add) || !isNumeric(value)) throw new Error(errorMessage);\n return [model, value + add];\n })\n );\n}\n","import { isArray, isObject, isObjectType, isFunction, isString } from 'utils/is';\nimport { warnIfDebug } from 'utils/log';\nimport resolveReference from 'src/view/resolvers/resolveReference';\nimport runloop from '../global/runloop';\nimport { splitKeypath } from './keypaths';\nimport { FakeFragment } from './getRactiveContext';\nimport { hasOwn } from 'utils/object';\n\nexport let keep = false;\n\nexport function set(pairs, options) {\n const k = keep;\n\n const deep = options && options.deep;\n const shuffle = options && options.shuffle;\n const promise = runloop.start();\n if (options && 'keep' in options) keep = options.keep;\n\n let i = pairs.length;\n while (i--) {\n const model = pairs[i][0];\n const value = pairs[i][1];\n const keypath = pairs[i][2];\n\n if (!model) {\n runloop.end();\n throw new Error(`Failed to set invalid keypath '${keypath}'`);\n }\n\n if (deep) deepSet(model, value);\n else if (shuffle) {\n let array = value;\n const target = model.get();\n // shuffle target array with itself\n if (!array) array = target;\n\n // if there's not an array there yet, go ahead and set\n if (target === undefined) {\n model.set(array);\n } else {\n if (!isArray(target) || !isArray(array)) {\n runloop.end();\n throw new Error('You cannot merge an array with a non-array');\n }\n\n const comparator = getComparator(shuffle);\n model.merge(array, comparator);\n }\n } else model.set(value);\n }\n\n runloop.end();\n\n keep = k;\n\n return promise;\n}\n\nconst star = /\\*/;\nexport function gather(ractive, keypath, base, isolated) {\n if (!base && (keypath[0] === '.' || keypath[1] === '^')) {\n warnIfDebug(\n `Attempted to set a relative keypath from a non-relative context. You can use a context object to set relative keypaths.`\n );\n return [];\n }\n\n const keys = splitKeypath(keypath);\n const model = base || ractive.viewmodel;\n\n if (star.test(keypath)) {\n return model.findMatches(keys);\n } else {\n if (model === ractive.viewmodel) {\n // allow implicit mappings\n if (\n ractive.component &&\n !ractive.isolated &&\n !model.has(keys[0]) &&\n keypath[0] !== '@' &&\n keypath[0] &&\n !isolated\n ) {\n return [resolveReference(ractive.fragment || new FakeFragment(ractive), keypath)];\n } else {\n return [model.joinAll(keys)];\n }\n } else {\n return [model.joinAll(keys)];\n }\n }\n}\n\nexport function build(ractive, keypath, value, isolated) {\n const sets = [];\n\n // set multiple keypaths in one go\n if (isObject(keypath)) {\n for (const k in keypath) {\n if (hasOwn(keypath, k)) {\n sets.push.apply(sets, gather(ractive, k, null, isolated).map(m => [m, keypath[k], k]));\n }\n }\n } else {\n // set a single keypath\n sets.push.apply(sets, gather(ractive, keypath, null, isolated).map(m => [m, value, keypath]));\n }\n\n return sets;\n}\n\nconst deepOpts = { virtual: false };\nfunction deepSet(model, value) {\n const dest = model.get(false, deepOpts);\n\n // if dest doesn't exist, just set it\n if (dest == null || !isObjectType(value)) return model.set(value);\n if (!isObjectType(dest)) return model.set(value);\n\n for (const k in value) {\n if (hasOwn(value, k)) {\n deepSet(model.joinKey(k), value[k]);\n }\n }\n}\n\nconst comparators = {};\nfunction getComparator(option) {\n if (option === true) return null; // use existing arrays\n if (isFunction(option)) return option;\n\n if (isString(option)) {\n return comparators[option] || (comparators[option] = thing => thing[option]);\n }\n\n throw new Error('If supplied, options.compare must be a string, function, or true'); // TODO link to docs\n}\n","import noop from 'utils/noop';\nimport { assign, create } from 'utils/object';\n\nexport const extern = {};\n\nexport default function getRactiveContext(ractive, ...assigns) {\n const fragment =\n ractive.fragment ||\n ractive._fakeFragment ||\n (ractive._fakeFragment = new FakeFragment(ractive));\n return fragment.getContext.apply(fragment, assigns);\n}\n\nexport function getContext(...assigns) {\n if (!this.ctx) this.ctx = new extern.Context(this);\n assigns.unshift(create(this.ctx));\n return assign.apply(null, assigns);\n}\n\nexport class FakeFragment {\n constructor(ractive) {\n this.ractive = ractive;\n }\n\n findContext() {\n return this.ractive.viewmodel;\n }\n}\nconst proto = FakeFragment.prototype;\nproto.getContext = getContext;\nproto.find = proto.findComponent = proto.findAll = proto.findAllComponents = noop;\n\nexport function findParentWithContext(fragment) {\n let frag = fragment;\n while (frag && !frag.context) frag = frag.parent;\n if (!frag) return fragment && fragment.ractive.fragment;\n else return frag;\n}\n","import { splitKeypath } from 'shared/keypaths';\nimport SharedModel, { GlobalModel } from 'src/model/specials/SharedModel';\nimport { warnIfDebug } from 'utils/log';\nimport { hasOwn } from 'utils/object';\nimport { isFunction } from 'utils/is';\n\nfunction findContext(fragment) {\n let frag = fragment;\n while (frag && !frag.context && !frag.aliases) frag = frag.parent;\n return frag;\n}\n\nexport default function resolveReference(fragment, ref) {\n const initialFragment = fragment;\n // current context ref\n if (ref === '.') return fragment.findContext();\n\n // ancestor references\n if (ref[0] === '~') return fragment.ractive.viewmodel.joinAll(splitKeypath(ref.slice(2)));\n\n // scoped references\n if (ref[0] === '.' || ref[0] === '^') {\n let frag = fragment;\n const parts = ref.split('/');\n const explicitContext = parts[0] === '^^';\n\n // find nearest context node\n while (frag && !frag.context) {\n frag = up(frag);\n }\n let context = frag && frag.context;\n\n // walk up the context chain\n while (frag && parts[0] === '^^') {\n parts.shift();\n\n // the current fragment should always be a context,\n // and if it happens to be an iteration, jump above the each block\n if (frag.isIteration) {\n frag = frag.parent.parent;\n } else {\n // otherwise jump above the current fragment\n frag = up(frag);\n }\n\n // walk to the next contexted fragment\n while (frag && !frag.context) {\n frag = up(frag);\n }\n context = frag && frag.context;\n }\n\n if (!context && explicitContext) {\n throw new Error(\n `Invalid context parent reference ('${ref}'). There is not context at that level.`\n );\n }\n\n // walk up the context path\n while (parts[0] === '.' || parts[0] === '..') {\n const part = parts.shift();\n\n if (part === '..') {\n context = context.parent;\n }\n }\n\n ref = parts.join('/');\n\n // special case - `{{.foo}}` means the same as `{{./foo}}`\n if (ref[0] === '.') ref = ref.slice(1);\n return context.joinAll(splitKeypath(ref));\n }\n\n const keys = splitKeypath(ref);\n if (!keys.length) return;\n const base = keys.shift();\n\n // special refs\n if (base[0] === '@') {\n // shorthand from outside the template\n // @this referring to local ractive instance\n if (base === '@this' || base === '@') {\n return fragment.ractive.viewmodel.getRactiveModel().joinAll(keys);\n } else if (base === '@index' || base === '@key') {\n // @index or @key referring to the nearest repeating index or key\n if (keys.length) badReference(base);\n const repeater = findIter(fragment);\n return repeater && repeater[`get${base[1] === 'i' ? 'Index' : 'Key'}`]();\n } else if (base === '@last') {\n const repeater = findIter(fragment);\n return repeater && repeater.parent.getLast();\n } else if (base === '@global') {\n // @global referring to window or global\n return GlobalModel.joinAll(keys);\n } else if (base === '@shared') {\n // @global referring to window or global\n return SharedModel.joinAll(keys);\n } else if (base === '@keypath' || base === '@rootpath') {\n // @keypath or @rootpath, the current keypath string\n const root = ref[1] === 'r' ? fragment.ractive.root : null;\n let f = fragment;\n\n while (\n f &&\n (!f.context || (f.isRoot && f.ractive.component && (root || !f.ractive.isolated)))\n ) {\n f = f.isRoot ? f.componentParent : f.parent;\n }\n\n return f.getKeypath(root);\n } else if (base === '@context') {\n return new ContextModel(fragment.getContext());\n } else if (base === '@local') {\n // @context-local data\n return fragment.getContext()._data.joinAll(keys);\n } else if (base === '@style') {\n // @style shared model\n return fragment.ractive.constructor._cssModel.joinAll(keys);\n } else if (base === '@helpers') {\n // @helpers instance model\n return fragment.ractive.viewmodel.getHelpers().joinAll(keys);\n } else {\n // nope\n throw new Error(`Invalid special reference '${base}'`);\n }\n }\n\n // helpers\n if (base && !keys.length) {\n const helpers = fragment.ractive.viewmodel.getHelpers();\n if (helpers.has(base)) return helpers.joinKey(base);\n }\n\n let context = findContext(fragment);\n\n // check immediate context for a match\n if (context) {\n if (context.context) {\n context = context.context;\n if (context.has(base)) return context.joinKey(base).joinAll(keys);\n } else {\n // alias block, so get next full context for later\n context = fragment.findContext();\n }\n } else {\n context = fragment.findContext();\n }\n\n // walk up the fragment hierarchy looking for a matching ref, alias, or key in a context\n let createMapping = false;\n const shouldWarn = fragment.ractive.warnAboutAmbiguity;\n let crossed = 0;\n let model;\n\n while (fragment) {\n // repeated fragments\n if (fragment.isIteration) {\n if (base === fragment.parent.keyRef) {\n model = fragment.getKey();\n } else if (base === fragment.parent.indexRef) {\n model = fragment.getIndex();\n }\n\n if (model && keys.length) badReference(base);\n }\n\n // alias node or iteration\n if (!model && fragment.aliases && hasOwn(fragment.aliases, base)) {\n model = fragment.aliases[base];\n }\n\n // check fragment context to see if it has the key we need\n if (!model && fragment.context && fragment.context.has(base)) {\n model = fragment.context.joinKey(base);\n\n // this is an implicit mapping\n if (createMapping) {\n if (shouldWarn)\n warnIfDebug(\n `'${ref}' resolved but is ambiguous and will create a mapping to a parent component.`\n );\n } else if (shouldWarn && crossed) warnIfDebug(`'${ref}' resolved but is ambiguous.`);\n }\n\n if (model) {\n if (createMapping) {\n model = initialFragment.ractive.viewmodel.createLink(base, model, base, { implicit: true });\n }\n\n if (keys.length > 0 && isFunction(model.joinAll)) {\n model = model.joinAll(keys);\n }\n\n return model;\n }\n\n // don't consider alias blocks when checking for ambiguity\n if (fragment.context && !fragment.aliases) crossed = 1;\n\n if (\n (fragment.componentParent || (!fragment.parent && fragment.ractive.component)) &&\n !fragment.ractive.isolated\n ) {\n // ascend through component boundary\n fragment = fragment.componentParent || fragment.ractive.component.up;\n createMapping = true;\n } else {\n fragment = fragment.parent;\n }\n }\n\n // if enabled, check the instance for a match\n const instance = initialFragment.ractive;\n if (instance.resolveInstanceMembers && base !== 'data' && base in instance) {\n return instance.viewmodel\n .getRactiveModel()\n .joinKey(base)\n .joinAll(keys);\n }\n\n if (shouldWarn) {\n warnIfDebug(`'${ref}' is ambiguous and did not resolve.`);\n }\n\n // didn't find anything, so go ahead and create the key on the local model\n return context.joinKey(base).joinAll(keys);\n}\n\nfunction up(fragment) {\n return fragment && ((!fragment.ractive.isolated && fragment.componentParent) || fragment.parent);\n}\n\nfunction findIter(start) {\n let fragment = start;\n let next;\n while (!fragment.isIteration && (next = up(fragment))) {\n fragment = next;\n }\n\n return fragment.isIteration && fragment;\n}\n\nfunction badReference(key) {\n throw new Error(`An index or key reference (${key}) cannot have child properties`);\n}\n\nclass ContextModel {\n constructor(context) {\n this.context = context;\n }\n\n get() {\n return this.context;\n }\n\n getKeypath() {\n return '@context';\n }\n}\n","/* global global */\nimport Model from '../Model';\n\nexport const data = {};\n\nexport class SharedModel extends Model {\n constructor(value, name, ractive) {\n super(null, `@${name}`);\n this.key = `@${name}`;\n this.value = value;\n this.isRoot = true;\n this.root = this;\n this.adaptors = [];\n this.ractive = ractive;\n }\n\n getKeypath() {\n return this.key;\n }\n\n retrieve() {\n return this.value;\n }\n}\n\nexport default new SharedModel(data, 'shared');\n\nexport const GlobalModel = new SharedModel(\n typeof global !== 'undefined' ? global : window,\n 'global'\n);\n","import ModelBase, { maybeBind, shuffle } from './ModelBase';\nimport LinkModel from './LinkModel'; // eslint-disable-line no-unused-vars\nimport getComputationSignature from 'src/Ractive/helpers/getComputationSignature';\nimport { capture } from 'src/global/capture';\nimport { isArray, isEqual, isNumeric, isObjectLike } from 'utils/is';\nimport { handleChange, mark, markForce, marked, teardown } from 'shared/methodCallers';\nimport Ticker from 'shared/Ticker';\nimport getPrefixer from './helpers/getPrefixer';\nimport { unescapeKey } from 'shared/keypaths';\nimport { warnIfDebug } from 'utils/log';\nimport { hasOwn, keys } from 'utils/object';\nimport { buildNewIndices } from 'utils/array';\n\nexport const shared = {};\n\nexport default class Model extends ModelBase {\n constructor(parent, key) {\n super(parent);\n\n this.ticker = null;\n\n if (parent) {\n this.key = unescapeKey(key);\n this.isReadonly = parent.isReadonly;\n\n if (parent.value) {\n this.value = parent.value[this.key];\n if (isArray(this.value)) this.length = this.value.length;\n this.adapt();\n }\n }\n }\n\n adapt() {\n const adaptors = this.root.adaptors;\n const len = adaptors.length;\n\n this.rewrap = false;\n\n // Exit early if no adaptors\n if (len === 0) return;\n\n const value = this.wrapper\n ? 'newWrapperValue' in this\n ? this.newWrapperValue\n : this.wrapperValue\n : this.value;\n\n // TODO remove this legacy nonsense\n const ractive = this.root.ractive;\n const keypath = this.getKeypath();\n\n // tear previous adaptor down if present\n if (this.wrapper) {\n const shouldTeardown =\n this.wrapperValue === value\n ? false\n : !this.wrapper.reset || this.wrapper.reset(value) === false;\n\n if (shouldTeardown) {\n this.wrapper.teardown();\n delete this.wrapper;\n delete this.wrapperValue;\n\n // don't branch for undefined values\n if (this.value !== undefined) {\n const parentValue = this.parent.value || this.parent.createBranch(this.key);\n if (parentValue[this.key] !== value) parentValue[this.key] = value;\n this.value = value;\n }\n } else {\n delete this.newWrapperValue;\n this.value = this.wrapper.get();\n return;\n }\n }\n\n let i;\n\n for (i = 0; i < len; i += 1) {\n const adaptor = adaptors[i];\n if (adaptor.filter(value, keypath, ractive)) {\n this.wrapper = adaptor.wrap(ractive, value, keypath, getPrefixer(keypath));\n this.wrapperValue = value;\n this.wrapper.__model = this; // massive temporary hack to enable array adaptor\n\n this.value = this.wrapper.get();\n\n break;\n }\n }\n }\n\n animate(from, to, options, interpolator) {\n if (this.ticker) this.ticker.stop();\n\n let fulfilPromise;\n const promise = new Promise(fulfil => (fulfilPromise = fulfil));\n\n this.ticker = new Ticker({\n duration: options.duration,\n easing: options.easing,\n step: t => {\n const value = interpolator(t);\n this.applyValue(value);\n if (options.step) options.step(t, value);\n },\n complete: () => {\n this.applyValue(to);\n if (options.complete) options.complete(to);\n\n this.ticker = null;\n fulfilPromise(to);\n }\n });\n\n promise.stop = this.ticker.stop;\n return promise;\n }\n\n applyValue(value, notify = true) {\n if (isEqual(value, this.value)) return;\n if (this.boundValue) this.boundValue = null;\n\n if (this.parent.wrapper && this.parent.wrapper.set) {\n this.parent.wrapper.set(this.key, value);\n this.parent.value = this.parent.wrapper.get();\n\n this.value = this.parent.value[this.key];\n if (this.wrapper) this.newWrapperValue = this.value;\n this.adapt();\n } else if (this.wrapper) {\n this.newWrapperValue = value;\n this.adapt();\n } else {\n const parentValue = this.parent.value || this.parent.createBranch(this.key);\n if (isObjectLike(parentValue)) {\n parentValue[this.key] = value;\n } else {\n warnIfDebug(`Attempted to set a property of a non-object '${this.getKeypath()}'`);\n return;\n }\n\n this.value = value;\n this.adapt();\n }\n\n // keep track of array stuff\n if (isArray(value)) {\n this.length = value.length;\n this.isArray = true;\n } else {\n this.isArray = false;\n }\n\n // notify dependants\n this.links.forEach(handleChange);\n this.children.forEach(mark);\n this.deps.forEach(handleChange);\n\n if (notify) this.notifyUpstream();\n\n if (this.parent.isArray) {\n if (this.key === 'length') this.parent.length = value;\n else this.parent.joinKey('length').mark();\n }\n }\n\n compute(key, computed) {\n const registry = this.computed || (this.computed = {});\n\n if (registry[key]) {\n registry[key].signature = getComputationSignature(this.root.ractive, key, computed);\n registry[key].mark();\n } else {\n registry[key] = new shared.Computation(\n this,\n getComputationSignature(this.root.ractive, key, computed),\n key\n );\n }\n\n return registry[key];\n }\n\n createBranch(key) {\n const branch = isNumeric(key) ? [] : {};\n this.applyValue(branch, false);\n\n return branch;\n }\n\n get(shouldCapture, opts) {\n if (this._link) return this._link.get(shouldCapture, opts);\n if (shouldCapture) capture(this);\n // if capturing, this value needs to be unwrapped because it's for external use\n if (opts && opts.virtual) return this.getVirtual(false);\n return maybeBind(\n this,\n (opts && 'unwrap' in opts ? opts.unwrap !== false : shouldCapture) && this.wrapper\n ? this.wrapperValue\n : this.value,\n !opts || opts.shouldBind !== false\n );\n }\n\n joinKey(key, opts) {\n if (this._link) {\n if (opts && opts.lastLink !== false && (key === undefined || key === '')) return this;\n return this._link.joinKey(key);\n }\n\n if (key === undefined || key === '') return this;\n\n let child;\n if (hasOwn(this.childByKey, key)) child = this.childByKey[key];\n else child = this.computed && this.computed[key];\n\n if (!child) {\n let computed;\n if (this.isRoot && this.ractive && (computed = this.ractive.computed[key])) {\n child = this.compute(key, computed);\n } else if (!this.isRoot && this.root.ractive) {\n const registry = this.root.ractive.computed;\n for (const k in registry) {\n computed = registry[k];\n if (computed.pattern && computed.pattern.test(this.getKeypath() + '.' + key)) {\n child = this.compute(key, computed);\n }\n }\n }\n }\n\n if (!child) {\n child = new Model(this, key);\n this.children.push(child);\n this.childByKey[key] = child;\n }\n\n if (child._link && (!opts || opts.lastLink !== false)) return child._link;\n\n return child;\n }\n\n mark(force) {\n if (this._link) return this._link.mark(force);\n\n const old = this.value;\n const value = this.retrieve();\n\n if (force || !isEqual(value, old)) {\n this.value = value;\n if (this.boundValue) this.boundValue = null;\n\n // make sure the wrapper stays in sync\n if (old !== value || this.rewrap) {\n if (this.wrapper) this.newWrapperValue = value;\n this.adapt();\n }\n\n // keep track of array stuff\n if (isArray(value)) {\n this.length = value.length;\n this.isArray = true;\n } else {\n this.isArray = false;\n }\n\n this.children.forEach(force ? markForce : mark);\n this.links.forEach(marked);\n\n this.deps.forEach(handleChange);\n }\n }\n\n merge(array, comparator) {\n const newIndices = buildNewIndices(\n this.value === array ? recreateArray(this) : this.value,\n array,\n comparator\n );\n this.parent.value[this.key] = array;\n this.shuffle(newIndices, true);\n }\n\n retrieve() {\n return this.parent.value ? this.parent.value[this.key] : undefined;\n }\n\n set(value) {\n if (this.ticker) this.ticker.stop();\n this.applyValue(value);\n }\n\n shuffle(newIndices, unsafe) {\n shuffle(this, newIndices, false, unsafe);\n }\n\n source() {\n return this;\n }\n\n teardown() {\n if (this._link) {\n this._link.teardown();\n this._link = null;\n }\n this.children.forEach(teardown);\n if (this.wrapper) this.wrapper.teardown();\n if (this.computed) keys(this.computed).forEach(k => this.computed[k].teardown());\n }\n}\n\nfunction recreateArray(model) {\n const array = [];\n\n for (let i = 0; i < model.length; i++) {\n array[i] = (model.childByKey[i] || {}).value;\n }\n\n return array;\n}\n","import { hasOwn } from 'utils/object';\nimport { isString, isObjectType } from 'utils/is';\n\nconst prefixers = {};\n\n// TODO this is legacy. sooner we can replace the old adaptor API the better\n/* istanbul ignore next */\nfunction prefixKeypath(obj, prefix) {\n const prefixed = {};\n\n if (!prefix) {\n return obj;\n }\n\n prefix += '.';\n\n for (const key in obj) {\n if (hasOwn(obj, key)) {\n prefixed[prefix + key] = obj[key];\n }\n }\n\n return prefixed;\n}\n\nexport default function getPrefixer(rootKeypath) {\n let rootDot;\n\n if (!prefixers[rootKeypath]) {\n rootDot = rootKeypath ? rootKeypath + '.' : '';\n\n /* istanbul ignore next */\n prefixers[rootKeypath] = function(relativeKeypath, value) {\n let obj;\n\n if (isString(relativeKeypath)) {\n obj = {};\n obj[rootDot + relativeKeypath] = value;\n return obj;\n }\n\n if (isObjectType(relativeKeypath)) {\n // 'relativeKeypath' is in fact a hash, not a keypath\n return rootDot ? prefixKeypath(relativeKeypath, rootKeypath) : relativeKeypath;\n }\n };\n }\n\n return prefixers[rootKeypath];\n}\n","import runloop from 'src/global/runloop';\n\n// TODO what happens if a transition is aborted?\n\nconst tickers = [];\nlet running = false;\n\nfunction tick() {\n runloop.start();\n\n const now = performance.now();\n\n let i;\n let ticker;\n\n for (i = 0; i < tickers.length; i += 1) {\n ticker = tickers[i];\n\n if (!ticker.tick(now)) {\n // ticker is complete, remove it from the stack, and decrement i so we don't miss one\n tickers.splice(i--, 1);\n }\n }\n\n runloop.end();\n\n if (tickers.length) {\n requestAnimationFrame(tick);\n } else {\n running = false;\n }\n}\n\nexport default class Ticker {\n constructor(options) {\n this.duration = options.duration;\n this.step = options.step;\n this.complete = options.complete;\n this.easing = options.easing;\n\n this.start = performance.now();\n this.end = this.start + this.duration;\n\n this.running = true;\n\n tickers.push(this);\n if (!running) requestAnimationFrame(tick);\n }\n\n tick(now) {\n if (!this.running) return false;\n\n if (now > this.end) {\n if (this.step) this.step(1);\n if (this.complete) this.complete(1);\n\n return false;\n }\n\n const elapsed = now - this.start;\n const eased = this.easing(elapsed / this.duration);\n\n if (this.step) this.step(eased);\n\n return true;\n }\n\n stop() {\n if (this.abort) this.abort();\n this.running = false;\n }\n}\n","import { addToArray } from 'utils/array';\nimport TransitionManager from './TransitionManager';\n\nlet batch;\n\nconst runloop = {\n active() {\n return !!batch;\n },\n\n start() {\n let fulfilPromise;\n const promise = new Promise(f => (fulfilPromise = f));\n\n batch = {\n previousBatch: batch,\n transitionManager: new TransitionManager(fulfilPromise, batch && batch.transitionManager),\n fragments: [],\n tasks: [],\n immediateObservers: [],\n deferredObservers: [],\n promise\n };\n\n return promise;\n },\n\n end() {\n flushChanges();\n\n if (!batch.previousBatch) batch.transitionManager.start();\n else batch.transitionManager.checkStart();\n\n batch = batch.previousBatch;\n },\n\n addFragment(fragment) {\n addToArray(batch.fragments, fragment);\n },\n\n // TODO: come up with a better way to handle fragments that trigger their own update\n addFragmentToRoot(fragment) {\n if (!batch) return;\n\n let b = batch;\n while (b.previousBatch) {\n b = b.previousBatch;\n }\n\n addToArray(b.fragments, fragment);\n },\n\n addObserver(observer, defer) {\n if (!batch) {\n observer.dispatch();\n } else {\n addToArray(defer ? batch.deferredObservers : batch.immediateObservers, observer);\n }\n },\n\n registerTransition(transition) {\n transition._manager = batch.transitionManager;\n batch.transitionManager.add(transition);\n },\n\n // synchronise node detachments with transition ends\n detachWhenReady(thing) {\n batch.transitionManager.detachQueue.push(thing);\n },\n\n scheduleTask(task, postRender) {\n let _batch;\n\n if (!batch) {\n task();\n } else {\n _batch = batch;\n while (postRender && _batch.previousBatch) {\n // this can't happen until the DOM has been fully updated\n // otherwise in some situations (with components inside elements)\n // transitions and decorators will initialise prematurely\n _batch = _batch.previousBatch;\n }\n\n _batch.tasks.push(task);\n }\n },\n\n promise() {\n if (!batch) return Promise.resolve();\n\n let target = batch;\n while (target.previousBatch) {\n target = target.previousBatch;\n }\n\n return target.promise || Promise.resolve();\n }\n};\n\nexport default runloop;\n\nfunction dispatch(observer) {\n observer.dispatch();\n}\n\nfunction flushChanges() {\n let which = batch.immediateObservers;\n batch.immediateObservers = [];\n which.forEach(dispatch);\n\n // Now that changes have been fully propagated, we can update the DOM\n // and complete other tasks\n let i = batch.fragments.length;\n let fragment;\n\n which = batch.fragments;\n batch.fragments = [];\n\n while (i--) {\n fragment = which[i];\n fragment.update();\n }\n\n batch.transitionManager.ready();\n\n which = batch.deferredObservers;\n batch.deferredObservers = [];\n which.forEach(dispatch);\n\n const tasks = batch.tasks;\n batch.tasks = [];\n\n for (i = 0; i < tasks.length; i += 1) {\n tasks[i]();\n }\n\n // If updating the view caused some model blowback - e.g. a triple\n // containing <option> elements caused the binding on the <select>\n // to update - then we start over\n if (\n batch.fragments.length ||\n batch.immediateObservers.length ||\n batch.deferredObservers.length ||\n batch.tasks.length\n )\n return flushChanges();\n}\n","import { removeFromArray } from 'utils/array';\nimport { isFunction } from 'utils/is';\n\nlet id = 0;\n\nexport default class TransitionManager {\n constructor(callback, parent) {\n this.callback = callback;\n this.parent = parent;\n\n this.intros = [];\n this.outros = [];\n\n this.children = [];\n this.totalChildren = this.outroChildren = 0;\n\n this.detachQueue = [];\n this.outrosComplete = false;\n\n this.id = id++;\n\n if (parent) {\n parent.addChild(this);\n }\n }\n\n add(transition) {\n const list = transition.isIntro ? this.intros : this.outros;\n transition.starting = true;\n list.push(transition);\n }\n\n addChild(child) {\n this.children.push(child);\n\n this.totalChildren += 1;\n this.outroChildren += 1;\n }\n\n checkStart() {\n if (this.parent && this.parent.started) this.start();\n }\n\n decrementOutros() {\n this.outroChildren -= 1;\n check(this);\n }\n\n decrementTotal() {\n this.totalChildren -= 1;\n check(this);\n }\n\n detachNodes() {\n let len = this.detachQueue.length;\n for (let i = 0; i < len; i++) this.detachQueue[i].detach();\n len = this.children.length;\n for (let i = 0; i < len; i++) this.children[i].detachNodes();\n this.detachQueue = [];\n }\n\n ready() {\n if (this.detachQueue.length) detachImmediate(this);\n }\n\n remove(transition) {\n const list = transition.isIntro ? this.intros : this.outros;\n removeFromArray(list, transition);\n check(this);\n }\n\n start() {\n this.started = true;\n this.children.forEach(c => c.start());\n this.intros.concat(this.outros).forEach(t => t.start());\n check(this);\n }\n}\n\nfunction check(tm) {\n if (!tm.started || tm.outros.length || tm.outroChildren) return;\n\n // If all outros are complete, and we haven't already done this,\n // we notify the parent if there is one, otherwise\n // start detaching nodes\n if (!tm.outrosComplete) {\n tm.outrosComplete = true;\n\n if (tm.parent) tm.parent.decrementOutros(tm);\n\n if (!tm.parent || tm.parent.outrosComplete) {\n tm.detachNodes();\n }\n }\n\n // Once everything is done, we can notify parent transition\n // manager and call the callback\n if (!tm.intros.length && !tm.totalChildren) {\n if (isFunction(tm.callback)) {\n tm.callback();\n }\n\n if (tm.parent && !tm.notifiedTotal) {\n tm.notifiedTotal = true;\n tm.parent.decrementTotal();\n }\n }\n}\n\n// check through the detach queue to see if a node is up or downstream from a\n// transition and if not, go ahead and detach it\nfunction detachImmediate(manager) {\n const queue = manager.detachQueue;\n const outros = collectAllOutros(manager);\n\n if (!outros.length) {\n manager.detachNodes();\n } else {\n let i = queue.length;\n let j = 0;\n let node, trans;\n const nqueue = (manager.detachQueue = []);\n\n start: while (i--) {\n node = queue[i].node;\n j = outros.length;\n while (j--) {\n trans = outros[j].element.node;\n // check to see if the node is, contains, or is contained by the transitioning node\n if (trans === node || trans.contains(node) || node.contains(trans)) {\n nqueue.push(queue[i]);\n continue start;\n }\n }\n\n // no match, we can drop it\n queue[i].detach();\n }\n }\n}\n\nfunction collectAllOutros(manager, _list) {\n let list = _list;\n\n // if there's no list, we're starting at the root to build one\n if (!list) {\n list = [];\n let parent = manager;\n while (parent.parent) parent = parent.parent;\n return collectAllOutros(parent, list);\n } else {\n // grab all outros from child managers\n let i = manager.children.length;\n while (i--) {\n list = collectAllOutros(manager.children[i], list);\n }\n\n // grab any from this manager if there are any\n if (manager.outros.length) list = list.concat(manager.outros);\n\n return list;\n }\n}\n","import { fatal } from 'utils/log';\nimport bind from 'utils/bind';\nimport { createFunctionFromString } from '../config/runtime-parser';\nimport { isFunction, isString, isObjectType } from 'utils/is';\n\nexport default function getComputationSignature(ractive, key, signature) {\n let getter;\n let setter;\n\n // useful for debugging\n let getterString;\n let getterUseStack;\n let setterString;\n\n if (isFunction(signature)) {\n getter = bind(signature, ractive);\n getterString = signature.toString();\n getterUseStack = true;\n }\n\n if (isString(signature)) {\n getter = createFunctionFromString(signature, ractive);\n getterString = signature;\n }\n\n if (isObjectType(signature)) {\n if (isString(signature.get)) {\n getter = createFunctionFromString(signature.get, ractive);\n getterString = signature.get;\n } else if (isFunction(signature.get)) {\n getter = bind(signature.get, ractive);\n getterString = signature.get.toString();\n getterUseStack = true;\n } else {\n fatal('`%s` computation must have a `get()` method', key);\n }\n\n if (isFunction(signature.set)) {\n setter = bind(signature.set, ractive);\n setterString = signature.set.toString();\n }\n }\n\n return {\n getter,\n setter,\n getterString,\n setterString,\n getterUseStack\n };\n}\n","import { fromExpression } from 'parse/utils/createFunction';\nimport { doc } from 'config/environment';\nimport { fatal } from 'utils/log';\nimport { addFunctions } from 'shared/getFunction';\nimport parse from 'parse/_parse';\nimport { isString } from 'utils/is';\n\nconst parseOptions = [\n 'delimiters',\n 'tripleDelimiters',\n 'staticDelimiters',\n 'staticTripleDelimiters',\n 'csp',\n 'interpolate',\n 'preserveWhitespace',\n 'sanitize',\n 'stripComments',\n 'contextLines',\n 'allowExpressions',\n 'attributes'\n];\n\nconst TEMPLATE_INSTRUCTIONS = `Either preparse or use a ractive runtime source that includes the parser. `;\n\nconst COMPUTATION_INSTRUCTIONS = `Either include a version of Ractive that can parse or convert your computation strings to functions.`;\n\nfunction throwNoParse(method, error, instructions) {\n if (!method) {\n fatal(`Missing Ractive.parse - cannot parse ${error}. ${instructions}`);\n }\n}\n\nexport function createFunction(body, length) {\n throwNoParse(fromExpression, 'new expression function', TEMPLATE_INSTRUCTIONS);\n return fromExpression(body, length);\n}\n\nexport function createFunctionFromString(str, bindTo) {\n throwNoParse(parse, 'compution string \"${str}\"', COMPUTATION_INSTRUCTIONS);\n const tpl = parse(str, { expression: true });\n return function() {\n return tpl.e.apply(bindTo, tpl.r.map(r => bindTo.get(r)));\n };\n}\n\nconst parser = {\n fromId(id, options) {\n if (!doc) {\n if (options && options.noThrow) {\n return;\n }\n throw new Error(`Cannot retrieve template #${id} as Ractive is not running in a browser.`);\n }\n\n if (id) id = id.replace(/^#/, '');\n\n let template;\n\n if (!(template = doc.getElementById(id))) {\n if (options && options.noThrow) {\n return;\n }\n throw new Error(`Could not find template element with id #${id}`);\n }\n\n if (template.tagName.toUpperCase() !== 'SCRIPT') {\n if (options && options.noThrow) {\n return;\n }\n throw new Error(`Template element with id #${id}, must be a <script> element`);\n }\n\n return 'textContent' in template ? template.textContent : template.innerHTML;\n },\n\n isParsed(template) {\n return !isString(template);\n },\n\n getParseOptions(ractive) {\n // Could be Ractive or a Component\n if (ractive.defaults) {\n ractive = ractive.defaults;\n }\n\n return parseOptions.reduce((val, key) => {\n val[key] = ractive[key];\n return val;\n }, {});\n },\n\n parse(template, options) {\n throwNoParse(parse, 'template', TEMPLATE_INSTRUCTIONS);\n const parsed = parse(template, options);\n addFunctions(parsed);\n return parsed;\n },\n\n parseFor(template, ractive) {\n return this.parse(template, this.getParseOptions(ractive));\n }\n};\n\nexport default parser;\n","import { TEMPLATE_VERSION } from 'config/template';\nimport Parser from './Parser';\nimport readMustache from './converters/readMustache';\nimport readTriple from './converters/mustache/readTriple';\nimport readUnescaped from './converters/mustache/readUnescaped';\nimport readPartial from './converters/mustache/readPartial';\nimport readMustacheComment from './converters/mustache/readMustacheComment';\nimport readInterpolator from './converters/mustache/readInterpolator';\nimport readSection from './converters/mustache/readSection';\nimport readHtmlComment from './converters/readHtmlComment';\nimport readElement from './converters/readElement';\nimport readText from './converters/readText';\nimport readPartialDefinitionSection from './converters/readPartialDefinitionSection';\nimport readTemplate from './converters/readTemplate';\nimport readExpression from './converters/readExpression';\nimport { fromExpression } from './utils/createFunction';\nimport cleanup from './utils/cleanup';\nimport insertExpressions from './utils/insertExpressions';\nimport flattenExpression from './utils/flattenExpression';\nimport shared from '../Ractive/shared';\nimport { assign, keys } from 'utils/object';\nimport { isObjectType } from 'utils/is';\n\n// See https://github.com/ractivejs/template-spec for information\n// about the Ractive template specification\n\nconst STANDARD_READERS = [\n readPartial,\n readUnescaped,\n readSection,\n readInterpolator,\n readMustacheComment\n];\nconst TRIPLE_READERS = [readTriple];\n\nexport const READERS = [readMustache, readHtmlComment, readElement, readText];\nexport const PARTIAL_READERS = [readPartialDefinitionSection];\n\nconst preserveWhitespaceElements = { pre: 1, script: 1, style: 1, textarea: 1 };\n\nconst defaultInterpolate = { textarea: true, script: true, style: true, template: true };\n\nconst StandardParser = Parser.extend({\n init(str, options) {\n const tripleDelimiters = options.tripleDelimiters || shared.defaults.tripleDelimiters;\n const staticDelimiters = options.staticDelimiters || shared.defaults.staticDelimiters;\n const staticTripleDelimiters =\n options.staticTripleDelimiters || shared.defaults.staticTripleDelimiters;\n\n this.standardDelimiters = options.delimiters || shared.defaults.delimiters;\n\n this.tags = [\n {\n isStatic: false,\n isTriple: false,\n open: this.standardDelimiters[0],\n close: this.standardDelimiters[1],\n readers: STANDARD_READERS\n },\n {\n isStatic: false,\n isTriple: true,\n open: tripleDelimiters[0],\n close: tripleDelimiters[1],\n readers: TRIPLE_READERS\n },\n {\n isStatic: true,\n isTriple: false,\n open: staticDelimiters[0],\n close: staticDelimiters[1],\n readers: STANDARD_READERS\n },\n {\n isStatic: true,\n isTriple: true,\n open: staticTripleDelimiters[0],\n close: staticTripleDelimiters[1],\n readers: TRIPLE_READERS\n }\n ];\n\n this.contextLines = options.contextLines || shared.defaults.contextLines;\n\n this.sortMustacheTags();\n\n this.sectionDepth = 0;\n this.elementStack = [];\n\n this.interpolate = assign(\n {},\n defaultInterpolate,\n shared.defaults.interpolate,\n options.interpolate\n );\n\n if (options.sanitize === true) {\n options.sanitize = {\n // blacklist from https://code.google.com/p/google-caja/source/browse/trunk/src/com/google/caja/lang/html/html4-elements-whitelist.json\n elements: 'applet base basefont body frame frameset head html isindex link meta noframes noscript object param script style title'.split(\n ' '\n ),\n eventAttributes: true\n };\n }\n\n this.stripComments = options.stripComments !== false;\n this.preserveWhitespace = isObjectType(options.preserveWhitespace)\n ? false\n : options.preserveWhitespace;\n this.sanitizeElements = options.sanitize && options.sanitize.elements;\n this.sanitizeEventAttributes = options.sanitize && options.sanitize.eventAttributes;\n this.includeLinePositions = options.includeLinePositions;\n this.textOnlyMode = options.textOnlyMode;\n this.csp = options.csp;\n this.allowExpressions = options.allowExpressions;\n\n if (options.expression) this.converters = [readExpression];\n\n if (options.attributes) this.inTag = true;\n\n // special whitespace handling requested for certain elements\n this.whiteSpaceElements = assign({}, options.preserveWhitespace, preserveWhitespaceElements);\n },\n\n postProcess(result, options) {\n if (options.expression) {\n const expr = flattenExpression(result[0]);\n expr.e = fromExpression(expr.s, expr.r.length);\n return expr;\n } else {\n // special case - empty string\n if (!result.length) {\n return { t: [], v: TEMPLATE_VERSION };\n }\n\n if (this.sectionDepth > 0) {\n this.error('A section was left open');\n }\n\n cleanup(\n result[0].t,\n this.stripComments,\n this.preserveWhitespace,\n !this.preserveWhitespace,\n !this.preserveWhitespace,\n this.whiteSpaceElements\n );\n\n if (this.csp !== false) {\n const expr = {};\n insertExpressions(result[0].t, expr);\n if (keys(expr).length) result[0].e = expr;\n }\n\n return result[0];\n }\n },\n\n converters: [readTemplate],\n\n sortMustacheTags() {\n // Sort in order of descending opening delimiter length (longer first),\n // to protect against opening delimiters being substrings of each other\n this.tags.sort((a, b) => {\n return b.open.length - a.open.length;\n });\n }\n});\n\nexport default function parse(template, options) {\n return new StandardParser(template, options || {}).result;\n}\n","export default {};\n","import { fromExpression } from './createFunction';\nimport { isArray, isObject } from 'utils/is';\nimport { keys } from 'utils/object';\n\nexport default function insertExpressions(obj, expr) {\n keys(obj).forEach(key => {\n if (isExpression(key, obj)) return addTo(obj, expr);\n\n const ref = obj[key];\n if (hasChildren(ref)) insertExpressions(ref, expr);\n });\n}\n\nfunction isExpression(key, obj) {\n return key === 's' && isArray(obj.r);\n}\n\nfunction addTo(obj, expr) {\n const { s, r } = obj;\n if (!expr[s]) expr[s] = fromExpression(s, r.length);\n}\n\nfunction hasChildren(ref) {\n return isArray(ref) || isObject(ref);\n}\n","import { TEMPLATE_VERSION } from 'config/template';\nimport { READERS, PARTIAL_READERS } from 'parse/_parse';\nimport cleanup from 'parse/utils/cleanup';\nimport { create } from 'utils/object';\n\nexport default function readTemplate(parser) {\n const fragment = [];\n const partials = create(null);\n let hasPartials = false;\n\n const preserveWhitespace = parser.preserveWhitespace;\n\n while (parser.pos < parser.str.length) {\n const pos = parser.pos;\n let item, partial;\n\n if ((partial = parser.read(PARTIAL_READERS))) {\n if (partials[partial.n]) {\n parser.pos = pos;\n parser.error('Duplicated partial definition');\n }\n\n cleanup(\n partial.f,\n parser.stripComments,\n preserveWhitespace,\n !preserveWhitespace,\n !preserveWhitespace,\n parser.whiteSpaceElements\n );\n\n partials[partial.n] = partial.f;\n hasPartials = true;\n } else if ((item = parser.read(READERS))) {\n fragment.push(item);\n } else {\n parser.error('Unexpected template content');\n }\n }\n\n const result = {\n v: TEMPLATE_VERSION,\n t: fragment\n };\n\n if (hasPartials) {\n result.p = partials;\n }\n\n return result;\n}\n","import { INLINE_PARTIAL } from 'config/types';\nimport { READERS } from '../_parse';\nimport readClosing from './mustache/section/readClosing';\n\nconst partialDefinitionSectionPattern = /^\\s*#\\s*partial\\s+/;\n\nexport default function readPartialDefinitionSection(parser) {\n let child, closed;\n\n const start = parser.pos;\n\n const delimiters = parser.standardDelimiters;\n\n if (!parser.matchString(delimiters[0])) {\n return null;\n }\n\n if (!parser.matchPattern(partialDefinitionSectionPattern)) {\n parser.pos = start;\n return null;\n }\n\n const name = parser.matchPattern(/^[a-zA-Z_$][a-zA-Z_$0-9\\-\\/]*/);\n\n if (!name) {\n parser.error('expected legal partial name');\n }\n\n parser.sp();\n if (!parser.matchString(delimiters[1])) {\n parser.error(`Expected closing delimiter '${delimiters[1]}'`);\n }\n\n const content = [];\n\n const [open, close] = delimiters;\n\n do {\n if ((child = readClosing(parser, { open, close }))) {\n if (child.r !== 'partial') {\n parser.error(`Expected ${open}/partial${close}`);\n }\n\n closed = true;\n } else {\n child = parser.read(READERS);\n\n if (!child) {\n parser.error(`Expected ${open}/partial${close}`);\n }\n\n content.push(child);\n }\n } while (!closed);\n\n return {\n t: INLINE_PARTIAL,\n n: name,\n f: content\n };\n}\n","import getLowestIndex from './utils/getLowestIndex';\nimport { decodeCharacterReferences } from 'utils/html';\n\nexport default function readText(parser) {\n let index, disallowed, barrier;\n\n const remaining = parser.remaining();\n\n if (parser.textOnlyMode) {\n disallowed = parser.tags.map(t => t.open);\n disallowed = disallowed.concat(parser.tags.map(t => '\\\\' + t.open));\n\n index = getLowestIndex(remaining, disallowed);\n } else {\n barrier = parser.inside ? '</' + parser.inside : '<';\n\n if (parser.inside && !parser.interpolate[parser.inside]) {\n index = remaining.indexOf(barrier);\n } else {\n disallowed = parser.tags.map(t => t.open);\n disallowed = disallowed.concat(parser.tags.map(t => '\\\\' + t.open));\n\n // http://developers.whatwg.org/syntax.html#syntax-attributes\n if (parser.inAttribute === true) {\n // we're inside an unquoted attribute value\n disallowed.push(`\"`, `'`, `=`, `<`, `>`, '`');\n } else if (parser.inAttribute) {\n // quoted attribute value\n disallowed.push(parser.inAttribute);\n } else {\n disallowed.push(barrier);\n }\n\n index = getLowestIndex(remaining, disallowed);\n }\n }\n\n if (!index) {\n return null;\n }\n\n if (index === -1) {\n index = remaining.length;\n }\n\n parser.pos += index;\n\n if ((parser.inside && parser.inside !== 'textarea') || parser.textOnlyMode) {\n return remaining.substr(0, index);\n } else {\n return decodeCharacterReferences(remaining.substr(0, index));\n }\n}\n","import { ANCHOR, DOCTYPE, ELEMENT, ATTRIBUTE } from 'config/types';\nimport { voidElements } from 'utils/html';\nimport { READERS, PARTIAL_READERS } from '../_parse';\nimport cleanup from 'parse/utils/cleanup';\nimport readMustache from './readMustache';\nimport readClosingTag from './element/readClosingTag';\nimport readClosing from './mustache/section/readClosing';\nimport { create } from 'utils/object';\nimport { isString } from 'utils/is';\nimport hyphenateCamel from 'utils/hyphenateCamel';\n\nconst tagNamePattern = /^[a-zA-Z]{1,}:?[a-zA-Z0-9\\-]*/;\nconst anchorPattern = /^[a-zA-Z_$][-a-zA-Z0-9_$]*/;\nconst validTagNameFollower = /^[\\s\\n\\/>]/;\nconst semiEnd = /;\\s*$/;\nconst exclude = { exclude: true };\n\n// based on http://developers.whatwg.org/syntax.html#syntax-tag-omission\nconst disallowedContents = {\n li: ['li'],\n dt: ['dt', 'dd'],\n dd: ['dt', 'dd'],\n p: 'address article aside blockquote div dl fieldset footer form h1 h2 h3 h4 h5 h6 header hgroup hr main menu nav ol p pre section table ul'.split(\n ' '\n ),\n rt: ['rt', 'rp'],\n rp: ['rt', 'rp'],\n optgroup: ['optgroup'],\n option: ['option', 'optgroup'],\n thead: ['tbody', 'tfoot'],\n tbody: ['tbody', 'tfoot'],\n tfoot: ['tbody'],\n tr: ['tr', 'tbody'],\n td: ['td', 'th', 'tr'],\n th: ['td', 'th', 'tr']\n};\n\nexport default readElement;\n\nfunction readElement(parser) {\n let attribute,\n selfClosing,\n children,\n partials,\n hasPartials,\n child,\n closed,\n pos,\n remaining,\n closingTag,\n anchor;\n\n const start = parser.pos;\n\n if (parser.inside || parser.inAttribute || parser.textOnlyMode) {\n return null;\n }\n\n if (!parser.matchString('<')) {\n return null;\n }\n\n // if this is a closing tag, abort straight away\n if (parser.nextChar() === '/') {\n return null;\n }\n\n const element = {};\n if (parser.includeLinePositions) {\n element.q = parser.getLinePos(start);\n }\n\n // check for doctype decl\n if (parser.matchString('!')) {\n element.t = DOCTYPE;\n if (!parser.matchPattern(/^doctype/i)) {\n parser.error('Expected DOCTYPE declaration');\n }\n\n element.a = parser.matchPattern(/^(.+?)>/);\n return element;\n } else if ((anchor = parser.matchString('#'))) {\n // check for anchor\n parser.sp();\n element.t = ANCHOR;\n element.n = parser.matchPattern(anchorPattern);\n } else {\n // otherwise, it's an element/component\n element.t = ELEMENT;\n\n // element name\n element.e = parser.matchPattern(tagNamePattern);\n if (!element.e) {\n return null;\n }\n }\n\n // next character must be whitespace, closing solidus or '>'\n if (!validTagNameFollower.test(parser.nextChar())) {\n parser.error('Illegal tag name');\n }\n\n parser.sp();\n\n parser.inTag = true;\n\n // directives and attributes\n while ((attribute = readMustache(parser))) {\n if (attribute !== false) {\n if (!element.m) element.m = [];\n element.m.push(attribute);\n }\n\n parser.sp();\n }\n\n parser.inTag = false;\n\n // allow whitespace before closing solidus\n parser.sp();\n\n // self-closing solidus?\n if (parser.matchString('/')) {\n selfClosing = true;\n }\n\n // closing angle bracket\n if (!parser.matchString('>')) {\n return null;\n }\n\n const lowerCaseName = (element.e || element.n).toLowerCase();\n const preserveWhitespace = parser.preserveWhitespace;\n\n if (!selfClosing && (anchor || !voidElements[element.e.toLowerCase()])) {\n if (!anchor) {\n parser.elementStack.push(lowerCaseName);\n\n // Special case - if we open a script element, further tags should\n // be ignored unless they're a closing script element\n if (lowerCaseName in parser.interpolate) {\n parser.inside = lowerCaseName;\n }\n }\n\n children = [];\n partials = create(null);\n\n do {\n pos = parser.pos;\n remaining = parser.remaining();\n\n if (!remaining) {\n // if this happens to be a script tag and there's no content left, it's because\n // a closing script tag can't appear in a script\n if (parser.inside === 'script') {\n closed = true;\n break;\n }\n\n parser.error(\n `Missing end ${parser.elementStack.length > 1 ? 'tags' : 'tag'} (${parser.elementStack\n .reverse()\n .map(x => `</${x}>`)\n .join('')})`\n );\n }\n\n // if for example we're in an <li> element, and we see another\n // <li> tag, close the first so they become siblings\n if (!anchor && !canContain(lowerCaseName, remaining)) {\n closed = true;\n } else if (!anchor && (closingTag = readClosingTag(parser))) {\n // closing tag\n closed = true;\n\n const closingTagName = closingTag.e.toLowerCase();\n\n // if this *isn't* the closing tag for the current element...\n if (closingTagName !== lowerCaseName) {\n // rewind parser\n parser.pos = pos;\n\n // if it doesn't close a parent tag, error\n if (!~parser.elementStack.indexOf(closingTagName)) {\n let errorMessage = 'Unexpected closing tag';\n\n // add additional help for void elements, since component names\n // might clash with them\n if (voidElements[closingTagName.toLowerCase()]) {\n errorMessage += ` (<${closingTagName}> is a void element - it cannot contain children)`;\n }\n\n parser.error(errorMessage);\n }\n }\n } else if (anchor && readAnchorClose(parser, element.n)) {\n closed = true;\n } else {\n // implicit close by closing section tag. TODO clean this up\n const tag = {\n open: parser.standardDelimiters[0],\n close: parser.standardDelimiters[1]\n };\n if (readClosing(parser, tag) || readInline(parser, tag)) {\n closed = true;\n parser.pos = pos;\n } else if ((child = parser.read(PARTIAL_READERS))) {\n if (partials[child.n]) {\n parser.pos = pos;\n parser.error('Duplicate partial definition');\n }\n\n cleanup(\n child.f,\n parser.stripComments,\n preserveWhitespace,\n !preserveWhitespace,\n !preserveWhitespace,\n parser.whiteSpaceElements\n );\n\n partials[child.n] = child.f;\n hasPartials = true;\n } else {\n if ((child = parser.read(READERS))) {\n children.push(child);\n } else {\n closed = true;\n }\n }\n }\n } while (!closed);\n\n if (children.length) {\n element.f = children;\n }\n\n if (hasPartials) {\n element.p = partials;\n }\n\n parser.elementStack.pop();\n }\n\n parser.inside = null;\n\n if (parser.sanitizeElements && parser.sanitizeElements.indexOf(lowerCaseName) !== -1) {\n return exclude;\n }\n\n if (\n element.m &&\n lowerCaseName !== 'input' &&\n lowerCaseName !== 'select' &&\n lowerCaseName !== 'textarea' &&\n lowerCaseName !== 'option'\n ) {\n const attrs = element.m;\n let classes, styles, cls, style;\n let i = 0;\n let a;\n while (i < attrs.length) {\n a = attrs[i];\n\n if (a.t !== ATTRIBUTE) {\n i++;\n continue;\n }\n\n if (a.n.indexOf('class-') === 0 && !a.f) {\n // static class directives\n (classes || (classes = [])).push(a.n.slice(6));\n attrs.splice(i, 1);\n } else if (a.n.indexOf('style-') === 0 && isString(a.f)) {\n // static style directives\n (styles || (styles = [])).push(`${hyphenateCamel(a.n.slice(6))}: ${a.f};`);\n attrs.splice(i, 1);\n } else if (a.n === 'class' && isString(a.f)) {\n // static class attrs\n (classes || (classes = [])).push(a.f);\n attrs.splice(i, 1);\n } else if (a.n === 'style' && isString(a.f)) {\n // static style attrs\n (styles || (styles = [])).push(a.f + (semiEnd.test(a.f) ? '' : ';'));\n attrs.splice(i, 1);\n } else if (a.n === 'class') {\n cls = a;\n i++;\n } else if (a.n === 'style') {\n style = a;\n i++;\n } else if (\n !~a.n.indexOf(':') &&\n a.n !== 'value' &&\n a.n !== 'contenteditable' &&\n isString(a.f)\n ) {\n a.g = 1;\n i++;\n } else {\n i++;\n }\n }\n\n if (classes) {\n if (!cls || !isString(cls.f))\n attrs.unshift({ t: ATTRIBUTE, n: 'class', f: classes.join(' '), g: 1 });\n else cls.f += ' ' + classes.join(' ');\n } else if (cls && isString(cls.f)) cls.g = 1;\n\n if (styles) {\n if (!style || !isString(style.f))\n attrs.unshift({ t: ATTRIBUTE, n: 'style', f: styles.join(' '), g: 1 });\n else style.f += '; ' + styles.join(' ');\n } else if (style && isString(style.f)) style.g = 1;\n }\n\n return element;\n}\n\nfunction canContain(name, remaining) {\n const match = /^<([a-zA-Z][a-zA-Z0-9]*)/.exec(remaining);\n const disallowed = disallowedContents[name];\n\n if (!match || !disallowed) {\n return true;\n }\n\n return !~disallowed.indexOf(match[1].toLowerCase());\n}\n\nfunction readAnchorClose(parser, name) {\n const pos = parser.pos;\n if (!parser.matchString('</')) {\n return null;\n }\n\n parser.matchString('#');\n parser.sp();\n\n if (!parser.matchString(name)) {\n parser.pos = pos;\n return null;\n }\n\n parser.sp();\n\n if (!parser.matchString('>')) {\n parser.pos = pos;\n return null;\n }\n\n return true;\n}\n\nconst inlines = /^\\s*(elseif|else|then|catch)\\s*/;\nfunction readInline(parser, tag) {\n const pos = parser.pos;\n if (!parser.matchString(tag.open)) return;\n if (parser.matchPattern(inlines)) {\n return true;\n } else {\n parser.pos = pos;\n }\n}\n","export default function(camelCaseStr) {\n return camelCaseStr.replace(/([A-Z])/g, (match, $1) => {\n return '-' + $1.toLowerCase();\n });\n}\n","import { CLOSING_TAG } from 'src/config/types';\n\nconst closingTagPattern = /^([a-zA-Z]{1,}:?[a-zA-Z0-9\\-]*)\\s*\\>/;\n\nexport default function readClosingTag(parser) {\n let tag;\n\n const start = parser.pos;\n\n // are we looking at a closing tag?\n if (!parser.matchString('</')) {\n return null;\n }\n\n if ((tag = parser.matchPattern(closingTagPattern))) {\n if (parser.inside && tag !== parser.inside) {\n parser.pos = start;\n return null;\n }\n\n return {\n t: CLOSING_TAG,\n e: tag\n };\n }\n\n // We have an illegal closing tag, report it\n parser.pos -= 2;\n parser.error('Illegal closing tag');\n}\n","import { COMMENT, ELEMENT } from 'config/types';\nimport stripStandalones from './stripStandalones';\nimport trimWhitespace from './trimWhitespace';\nimport { isString } from 'utils/is';\n\nconst contiguousWhitespace = /[ \\t\\f\\r\\n]+/g;\nconst leadingWhitespace = /^[ \\t\\f\\r\\n]+/;\nconst trailingWhitespace = /[ \\t\\f\\r\\n]+$/;\nconst leadingNewLine = /^(?:\\r\\n|\\r|\\n)/;\nconst trailingNewLine = /(?:\\r\\n|\\r|\\n)$/;\n\nexport default function cleanup(\n items,\n stripComments,\n preserveWhitespace,\n removeLeadingWhitespace,\n removeTrailingWhitespace,\n whiteSpaceElements\n) {\n if (isString(items)) return;\n\n let i,\n item,\n previousItem,\n nextItem,\n preserveWhitespaceInsideFragment,\n removeLeadingWhitespaceInsideFragment,\n removeTrailingWhitespaceInsideFragment;\n\n // First pass - remove standalones and comments etc\n stripStandalones(items);\n\n i = items.length;\n while (i--) {\n item = items[i];\n\n // Remove delimiter changes, unsafe elements etc\n if (item.exclude) {\n items.splice(i, 1);\n } else if (stripComments && item.t === COMMENT) {\n // Remove comments, unless we want to keep them\n items.splice(i, 1);\n }\n }\n\n // If necessary, remove leading and trailing whitespace\n trimWhitespace(\n items,\n removeLeadingWhitespace ? leadingWhitespace : null,\n removeTrailingWhitespace ? trailingWhitespace : null\n );\n\n i = items.length;\n while (i--) {\n item = items[i];\n removeLeadingWhitespaceInsideFragment = removeTrailingWhitespaceInsideFragment = false;\n\n // Recurse\n if (item.f) {\n const isPreserveWhitespaceElement =\n item.t === ELEMENT &&\n (whiteSpaceElements[item.e.toLowerCase()] || whiteSpaceElements[item.e]);\n preserveWhitespaceInsideFragment = preserveWhitespace || isPreserveWhitespaceElement;\n\n if (!preserveWhitespace && isPreserveWhitespaceElement) {\n trimWhitespace(item.f, leadingNewLine, trailingNewLine);\n }\n\n if (!preserveWhitespaceInsideFragment) {\n previousItem = items[i - 1];\n nextItem = items[i + 1];\n\n // if the previous item was a text item with trailing whitespace,\n // remove leading whitespace inside the fragment\n if (!previousItem || (isString(previousItem) && trailingWhitespace.test(previousItem))) {\n removeLeadingWhitespaceInsideFragment = true;\n }\n\n // and vice versa\n if (!nextItem || (isString(nextItem) && leadingWhitespace.test(nextItem))) {\n removeTrailingWhitespaceInsideFragment = true;\n }\n }\n\n cleanup(\n item.f,\n stripComments,\n preserveWhitespaceInsideFragment,\n removeLeadingWhitespaceInsideFragment,\n removeTrailingWhitespaceInsideFragment,\n whiteSpaceElements\n );\n }\n\n // Split if-else blocks into two (an if, and an unless)\n if (item.l) {\n cleanup(\n item.l,\n stripComments,\n preserveWhitespace,\n removeLeadingWhitespaceInsideFragment,\n removeTrailingWhitespaceInsideFragment,\n whiteSpaceElements\n );\n\n item.l.forEach(s => (s.l = 1));\n item.l.unshift(i + 1, 0);\n items.splice.apply(items, item.l);\n delete item.l; // TODO would be nice if there was a way around this\n }\n\n // Clean up conditional attributes\n if (item.m) {\n cleanup(\n item.m,\n stripComments,\n preserveWhitespace,\n removeLeadingWhitespaceInsideFragment,\n removeTrailingWhitespaceInsideFragment,\n whiteSpaceElements\n );\n if (item.m.length < 1) delete item.m;\n }\n }\n\n // final pass - fuse text nodes together\n i = items.length;\n while (i--) {\n if (isString(items[i])) {\n if (isString(items[i + 1])) {\n items[i] = items[i] + items[i + 1];\n items.splice(i + 1, 1);\n }\n\n if (!preserveWhitespace) {\n items[i] = items[i].replace(contiguousWhitespace, ' ');\n }\n\n if (items[i] === '') {\n items.splice(i, 1);\n }\n }\n }\n}\n","import { lastItem } from 'utils/array';\nimport { isString } from 'utils/is';\n\nexport default function(items, leadingPattern, trailingPattern) {\n let item;\n\n if (leadingPattern) {\n item = items[0];\n if (isString(item)) {\n item = item.replace(leadingPattern, '');\n\n if (!item) {\n items.shift();\n } else {\n items[0] = item;\n }\n }\n }\n\n if (trailingPattern) {\n item = lastItem(items);\n if (isString(item)) {\n item = item.replace(trailingPattern, '');\n\n if (!item) {\n items.pop();\n } else {\n items[items.length - 1] = item;\n }\n }\n }\n}\n","import { COMMENT, DELIMCHANGE, SECTION, INVERTED } from 'config/types';\nimport { lastItem } from 'utils/array';\nimport { isString } from 'utils/is';\n\nconst leadingLinebreak = /^[ \\t\\f\\r\\n]*\\r?\\n/;\nconst trailingLinebreak = /\\r?\\n[ \\t\\f\\r\\n]*$/;\n\nexport default function(items) {\n let i, current, backOne, backTwo, lastSectionItem;\n\n for (i = 1; i < items.length; i += 1) {\n current = items[i];\n backOne = items[i - 1];\n backTwo = items[i - 2];\n\n // if we're at the end of a [text][comment][text] sequence...\n if (isString(current) && isComment(backOne) && isString(backTwo)) {\n // ... and the comment is a standalone (i.e. line breaks either side)...\n if (trailingLinebreak.test(backTwo) && leadingLinebreak.test(current)) {\n // ... then we want to remove the whitespace after the first line break\n items[i - 2] = backTwo.replace(trailingLinebreak, '\\n');\n\n // and the leading line break of the second text token\n items[i] = current.replace(leadingLinebreak, '');\n }\n }\n\n // if the current item is a section, and it is preceded by a linebreak, and\n // its first item is a linebreak...\n if (isSection(current) && isString(backOne)) {\n if (\n trailingLinebreak.test(backOne) &&\n isString(current.f[0]) &&\n leadingLinebreak.test(current.f[0])\n ) {\n items[i - 1] = backOne.replace(trailingLinebreak, '\\n');\n current.f[0] = current.f[0].replace(leadingLinebreak, '');\n }\n }\n\n // if the last item was a section, and it is followed by a linebreak, and\n // its last item is a linebreak...\n if (isString(current) && isSection(backOne)) {\n lastSectionItem = lastItem(backOne.f);\n\n if (\n isString(lastSectionItem) &&\n trailingLinebreak.test(lastSectionItem) &&\n leadingLinebreak.test(current)\n ) {\n backOne.f[backOne.f.length - 1] = lastSectionItem.replace(trailingLinebreak, '\\n');\n items[i] = current.replace(leadingLinebreak, '');\n }\n }\n }\n\n return items;\n}\n\nfunction isComment(item) {\n return item.t === COMMENT || item.t === DELIMCHANGE;\n}\n\nfunction isSection(item) {\n return (item.t === SECTION || item.t === INVERTED) && item.f;\n}\n","import { COMMENT } from 'config/types';\n\nconst OPEN_COMMENT = '<!--';\nconst CLOSE_COMMENT = '-->';\n\nexport default function readHtmlComment(parser) {\n const start = parser.pos;\n\n if (parser.textOnlyMode || !parser.matchString(OPEN_COMMENT)) {\n return null;\n }\n\n const remaining = parser.remaining();\n const endIndex = remaining.indexOf(CLOSE_COMMENT);\n\n if (endIndex === -1) {\n parser.error(\"Illegal HTML - expected closing comment sequence ('-->')\");\n }\n\n const content = remaining.substr(0, endIndex);\n parser.pos += endIndex + 3;\n\n const comment = {\n t: COMMENT,\n c: content\n };\n\n if (parser.includeLinePositions) {\n comment.q = parser.getLinePos(start);\n }\n\n return comment;\n}\n","import {\n ALIAS,\n AWAIT,\n CATCH,\n ELSE,\n ELSEIF,\n SECTION,\n SECTION_IF,\n SECTION_UNLESS,\n THEN\n} from 'config/types';\nimport { READERS } from 'parse/_parse';\nimport readClosing from './section/readClosing';\nimport readInlineBlock from './section/readInlineBlock';\nimport handlebarsBlockCodes from './handlebarsBlockCodes';\nimport readExpression from '../readExpression';\nimport refineExpression from 'parse/utils/refineExpression';\nimport { readAlias, readAliases } from './readAliases';\nimport { keys } from 'utils/object';\nimport { name } from '../expressions/shared/patterns';\n\nconst indexRefPattern = /^\\s*:\\s*([a-zA-Z_$][a-zA-Z_$0-9]*)/;\nconst keyIndexRefPattern = /^\\s*,\\s*([a-zA-Z_$][a-zA-Z_$0-9]*)/;\nconst handlebarsBlockPattern = new RegExp('^(' + keys(handlebarsBlockCodes).join('|') + ')\\\\b');\n\nexport default function readSection(parser, tag) {\n let expression,\n section,\n child,\n children,\n hasElse,\n block,\n unlessBlock,\n closed,\n i,\n expectedClose,\n hasThen,\n hasCatch,\n inlineThen;\n let aliasOnly = false;\n\n const start = parser.pos;\n\n if (parser.matchString('^')) {\n // watch out for parent context refs - {{^^/^^/foo}}\n if (parser.matchString('^/')) {\n parser.pos = start;\n return null;\n }\n section = { t: SECTION, f: [], n: SECTION_UNLESS };\n } else if (parser.matchString('#')) {\n section = { t: SECTION, f: [] };\n\n if (parser.matchString('partial')) {\n parser.pos = start - parser.standardDelimiters[0].length;\n parser.error(\n 'Partial definitions can only be at the top level of the template, or immediately inside components'\n );\n }\n\n if ((block = parser.matchString('await'))) {\n expectedClose = block;\n section.t = AWAIT;\n } else if ((block = parser.matchPattern(handlebarsBlockPattern))) {\n expectedClose = block;\n section.n = handlebarsBlockCodes[block];\n }\n } else {\n return null;\n }\n\n parser.sp();\n\n if (block === 'with') {\n const aliases = readAliases(parser);\n if (aliases) {\n aliasOnly = true;\n section.z = aliases;\n section.t = ALIAS;\n }\n } else if (block === 'each') {\n const alias = readAlias(parser);\n if (alias) {\n section.z = [{ n: alias.n, x: { r: '.' } }];\n expression = alias.x;\n }\n }\n\n if (!aliasOnly) {\n if (!expression) expression = readExpression(parser);\n\n if (!expression) {\n parser.error('Expected expression');\n }\n\n // extra each aliases\n if (block === 'each' && parser.matchString(',')) {\n const aliases = readAliases(parser);\n if (aliases) {\n if (section.z) aliases.unshift(section.z[0]);\n section.z = aliases;\n }\n }\n\n // optional index and key references\n if ((block === 'each' || !block) && (i = parser.matchPattern(indexRefPattern))) {\n let extra;\n\n if ((extra = parser.matchPattern(keyIndexRefPattern))) {\n section.i = i + ',' + extra;\n } else {\n section.i = i;\n }\n } else if (block === 'await' && parser.matchString('then')) {\n parser.sp();\n hasThen = true;\n inlineThen = parser.matchPattern(name);\n if (!inlineThen) inlineThen = true;\n }\n\n if (!block && expression.n) {\n expectedClose = expression.n;\n }\n }\n\n parser.sp();\n\n if (!parser.matchString(tag.close)) {\n parser.error(`Expected closing delimiter '${tag.close}'`);\n }\n\n parser.sectionDepth += 1;\n children = section.f;\n\n let pos;\n do {\n pos = parser.pos;\n if ((child = readClosing(parser, tag))) {\n if (expectedClose && child.r !== expectedClose) {\n if (!block) {\n if (child.r)\n parser.warn(\n `Expected ${tag.open}/${expectedClose}${tag.close} but found ${tag.open}/${child.r}${\n tag.close\n }`\n );\n } else {\n parser.pos = pos;\n parser.error(`Expected ${tag.open}/${expectedClose}${tag.close}`);\n }\n }\n\n parser.sectionDepth -= 1;\n closed = true;\n } else if (\n !aliasOnly &&\n ((child = readInlineBlock(parser, tag, 'elseif')) ||\n (child = readInlineBlock(parser, tag, 'else')) ||\n (block === 'await' &&\n ((child = readInlineBlock(parser, tag, 'then')) ||\n (child = readInlineBlock(parser, tag, 'catch')))))\n ) {\n if (section.n === SECTION_UNLESS) {\n parser.error('{{else}} not allowed in {{#unless}}');\n }\n\n if (hasElse) {\n if (child.t === ELSE) {\n parser.error('there can only be one {{else}} block, at the end of a section');\n } else if (child.t === ELSEIF) {\n parser.error('illegal {{elseif...}} after {{else}}');\n }\n }\n\n if (!unlessBlock && (inlineThen || !hasThen) && !hasCatch) {\n if (block === 'await') {\n const s = { f: children };\n section.f = [s];\n if (inlineThen) {\n s.t = THEN;\n inlineThen !== true && (s.n = inlineThen);\n } else {\n s.t = SECTION;\n }\n } else {\n unlessBlock = [];\n }\n }\n\n const mustache = {\n t: SECTION,\n f: (children = [])\n };\n\n if (child.t === ELSE) {\n if (block === 'await') {\n section.f.push(mustache);\n mustache.t = ELSE;\n } else {\n mustache.n = SECTION_UNLESS;\n unlessBlock.push(mustache);\n }\n hasElse = true;\n } else if (child.t === ELSEIF) {\n mustache.n = SECTION_IF;\n refineExpression(child.x, mustache);\n unlessBlock.push(mustache);\n } else if (child.t === THEN) {\n if (hasElse) parser.error('{{then}} block must appear before any {{else}} block');\n if (hasCatch) parser.error('{{then}} block must appear before any {{catch}} block');\n if (hasThen) parser.error('there can only be one {{then}} block per {{#await}}');\n mustache.t = THEN;\n hasThen = true;\n child.n && (mustache.n = child.n);\n section.f.push(mustache);\n } else if (child.t === CATCH) {\n if (hasElse) parser.error('{{catch}} block must appear before any {{else}} block');\n if (hasCatch) parser.error('there can only be one {{catch}} block per {{#await}}');\n mustache.t = CATCH;\n hasCatch = true;\n mustache.n = child.n;\n section.f.push(mustache);\n }\n } else {\n child = parser.read(READERS);\n\n if (!child) {\n break;\n }\n\n children.push(child);\n }\n } while (!closed);\n\n if (unlessBlock) {\n section.l = unlessBlock;\n }\n\n if (!aliasOnly) {\n refineExpression(expression, section);\n }\n\n if (block === 'await' && (inlineThen || !hasThen) && !hasCatch && !hasElse) {\n const s = { f: section.f };\n section.f = [s];\n if (inlineThen) {\n s.t = THEN;\n inlineThen !== true && (s.n = inlineThen);\n } else {\n s.t = SECTION;\n }\n }\n\n // TODO if a section is empty it should be discarded. Don't do\n // that here though - we need to clean everything up first, as\n // it may contain removeable whitespace. As a temporary measure,\n // to pass the existing tests, remove empty `f` arrays\n if (!section.f.length) {\n delete section.f;\n }\n\n return section;\n}\n","import { SECTION_EACH, SECTION_IF, SECTION_IF_WITH, SECTION_UNLESS } from 'config/types';\n\nexport default {\n each: SECTION_EACH,\n if: SECTION_IF,\n with: SECTION_IF_WITH,\n unless: SECTION_UNLESS\n};\n","import { CATCH, ELSE, ELSEIF, THEN } from 'config/types';\nimport readExpression from '../../readExpression';\nimport { name } from '../../expressions/shared/patterns';\n\nconst patterns = {\n else: /^\\s*else\\s*/,\n elseif: /^\\s*elseif\\s+/,\n then: /^\\s*then\\s*/,\n catch: /^\\s*catch\\s*/\n};\n\nconst types = {\n else: ELSE,\n elseif: ELSEIF,\n then: THEN,\n catch: CATCH\n};\n\nexport default function readInlineBlock(parser, tag, type) {\n const start = parser.pos;\n\n if (!parser.matchString(tag.open)) {\n return null;\n }\n\n if (!parser.matchPattern(patterns[type])) {\n parser.pos = start;\n return null;\n }\n\n const res = { t: types[type] };\n\n if (type === 'elseif') {\n res.x = readExpression(parser);\n } else if (type === 'catch' || type === 'then') {\n const nm = parser.matchPattern(name);\n if (nm) res.n = nm;\n }\n\n if (!parser.matchString(tag.close)) {\n parser.error(`Expected closing delimiter '${tag.close}'`);\n }\n\n return res;\n}\n","import { CLOSING } from 'config/types';\n\nexport default function readClosing(parser, tag) {\n const start = parser.pos;\n\n if (!parser.matchString(tag.open)) {\n return null;\n }\n\n parser.sp();\n\n if (!parser.matchString('/')) {\n parser.pos = start;\n return null;\n }\n\n parser.sp();\n\n const remaining = parser.remaining();\n const index = remaining.indexOf(tag.close);\n\n if (index !== -1) {\n const closing = {\n t: CLOSING,\n r: remaining.substr(0, index).split(' ')[0]\n };\n\n parser.pos += index;\n\n if (!parser.matchString(tag.close)) {\n parser.error(`Expected closing delimiter '${tag.close}'`);\n }\n\n return closing;\n }\n\n parser.pos = start;\n return null;\n}\n","import { INTERPOLATOR } from 'config/types';\nimport readExpressionOrReference from '../readExpressionOrReference';\nimport refineExpression from 'parse/utils/refineExpression';\n\nexport default function readInterpolator(parser, tag) {\n let expression, err;\n\n const start = parser.pos;\n\n // TODO would be good for perf if we could do away with the try-catch\n try {\n expression = readExpressionOrReference(parser, [tag.close]);\n } catch (e) {\n err = e;\n }\n\n if (!expression) {\n if (parser.str.charAt(start) === '!') {\n // special case - comment\n parser.pos = start;\n return null;\n }\n\n if (err) {\n throw err;\n }\n }\n\n if (!parser.matchString(tag.close)) {\n parser.error(`Expected closing delimiter '${tag.close}' after reference`);\n\n if (!expression) {\n // special case - comment\n if (parser.nextChar() === '!') {\n return null;\n }\n\n parser.error(`Expected expression or legal reference`);\n }\n }\n\n const interpolator = { t: INTERPOLATOR };\n refineExpression(expression, interpolator); // TODO handle this differently - it's mysterious\n\n return interpolator;\n}\n","import { COMMENT } from 'src/config/types';\n\nexport default function readComment(parser, tag) {\n if (!parser.matchString('!')) {\n return null;\n }\n\n const index = parser.remaining().indexOf(tag.close);\n\n if (index !== -1) {\n parser.pos += index + tag.close.length;\n return { t: COMMENT };\n }\n}\n","import { PARTIAL, YIELDER } from 'src/config/types';\nimport readExpression from '../readExpression';\nimport refineExpression from 'parse/utils/refineExpression';\nimport { readAliases } from './readAliases';\n\nexport default function readPartial(parser, tag) {\n const type = parser.matchString('>') || parser.matchString('yield');\n const partial = { t: type === '>' ? PARTIAL : YIELDER };\n let aliases;\n\n if (!type) return null;\n\n parser.sp();\n\n if (type === '>' || !(aliases = parser.matchString('with'))) {\n // Partial names can include hyphens, so we can't use readExpression\n // blindly. Instead, we use the `relaxedNames` flag to indicate that\n // `foo-bar` should be read as a single name, rather than 'subtract\n // bar from foo'\n parser.relaxedNames = parser.strictRefinement = true;\n const expression = readExpression(parser);\n parser.relaxedNames = parser.strictRefinement = false;\n\n if (!expression && type === '>') return null;\n\n if (expression) {\n refineExpression(expression, partial); // TODO...\n parser.sp();\n if (type !== '>') aliases = parser.matchString('with');\n }\n }\n\n parser.sp();\n\n // check for alias context e.g. `{{>foo bar as bat, bip as bop}}`\n if (aliases || type === '>') {\n aliases = readAliases(parser);\n if (aliases && aliases.length) {\n partial.z = aliases;\n } else {\n // otherwise check for literal context e.g. `{{>foo bar}}` then\n // turn it into `{{#with bar}}{{>foo}}{{/with}}`\n const context = readExpression(parser);\n if (context) {\n partial.c = {};\n refineExpression(context, partial.c);\n }\n }\n\n if (type !== '>' && (!partial.c && !partial.z)) {\n // {{yield with}} requires some aliases\n parser.error(`Expected a context or one or more aliases`);\n }\n }\n\n parser.sp();\n\n if (!parser.matchString(tag.close)) {\n parser.error(`Expected closing delimiter '${tag.close}'`);\n }\n\n return partial;\n}\n","import readExpression from '../readExpression';\nimport refineExpression from '../../utils/refineExpression';\n\nconst legalAlias = /^(?:[a-zA-Z$_0-9]|\\\\\\.)+(?:(?:(?:[a-zA-Z$_0-9]|\\\\\\.)+)|(?:\\[[0-9]+\\]))*/;\nconst asRE = /^as/i;\n\nexport function readAliases(parser) {\n const aliases = [];\n let alias;\n const start = parser.pos;\n\n parser.sp();\n\n alias = readAlias(parser);\n\n if (alias) {\n alias.x = refineExpression(alias.x, {});\n aliases.push(alias);\n\n parser.sp();\n\n while (parser.matchString(',')) {\n alias = readAlias(parser);\n\n if (!alias) {\n parser.error('Expected another alias.');\n }\n\n alias.x = refineExpression(alias.x, {});\n aliases.push(alias);\n\n parser.sp();\n }\n\n return aliases;\n }\n\n parser.pos = start;\n return null;\n}\n\nexport function readAlias(parser) {\n const start = parser.pos;\n\n parser.sp();\n\n const expr = readExpression(parser, []);\n\n if (!expr) {\n parser.pos = start;\n return null;\n }\n\n parser.sp();\n parser.matchPattern(asRE);\n parser.sp();\n\n const alias = parser.matchPattern(legalAlias);\n\n if (!alias) {\n parser.pos = start;\n return null;\n }\n\n return { n: alias, x: expr };\n}\n","import { TRIPLE } from 'config/types';\nimport readExpression from '../readExpression';\nimport refineExpression from 'parse/utils/refineExpression';\n\nexport default function readUnescaped(parser, tag) {\n if (!parser.matchString('&')) {\n return null;\n }\n\n parser.sp();\n\n const expression = readExpression(parser);\n\n if (!expression) {\n return null;\n }\n\n if (!parser.matchString(tag.close)) {\n parser.error(`Expected closing delimiter '${tag.close}'`);\n }\n\n const triple = { t: TRIPLE };\n refineExpression(expression, triple); // TODO handle this differently - it's mysterious\n\n return triple;\n}\n","import { TRIPLE } from 'config/types';\nimport readExpression from '../readExpression';\nimport refineExpression from 'parse/utils/refineExpression';\n\nexport default function readTriple(parser, tag) {\n const expression = readExpression(parser);\n\n if (!expression) {\n return null;\n }\n\n if (!parser.matchString(tag.close)) {\n parser.error(`Expected closing delimiter '${tag.close}'`);\n }\n\n const triple = { t: TRIPLE };\n refineExpression(expression, triple); // TODO handle this differently - it's mysterious\n\n return triple;\n}\n","import { DELIMCHANGE } from 'config/types';\nimport readDelimiterChange from './mustache/readDelimiterChange';\nimport readRegexpLiteral from './expressions/primary/literal/readRegexpLiteral';\nimport { readAttributeOrDirective } from './element/readAttribute';\n\nconst delimiterChangeToken = { t: DELIMCHANGE, exclude: true };\n\nexport default function readMustache(parser) {\n let mustache, i;\n\n // If we're inside a <script> or <style> tag, and we're not\n // interpolating, bug out\n if (parser.interpolate[parser.inside] === false) {\n return null;\n }\n\n for (i = 0; i < parser.tags.length; i += 1) {\n if ((mustache = readMustacheOfType(parser, parser.tags[i]))) {\n return mustache;\n }\n }\n\n if (parser.inTag && !parser.inAttribute) {\n mustache = readAttributeOrDirective(parser);\n if (mustache) {\n parser.sp();\n return mustache;\n }\n }\n}\n\nfunction readMustacheOfType(parser, tag) {\n let mustache, reader, i;\n\n const start = parser.pos;\n\n if (parser.matchString('\\\\' + tag.open)) {\n if (start === 0 || parser.str[start - 1] !== '\\\\') {\n return tag.open;\n }\n } else if (!parser.matchString(tag.open)) {\n return null;\n }\n\n // delimiter change?\n if ((mustache = readDelimiterChange(parser))) {\n // find closing delimiter or abort...\n if (!parser.matchString(tag.close)) {\n return null;\n }\n\n // ...then make the switch\n tag.open = mustache[0];\n tag.close = mustache[1];\n parser.sortMustacheTags();\n\n return delimiterChangeToken;\n }\n\n parser.sp();\n\n // illegal section closer\n if (parser.matchString('/')) {\n parser.pos -= 1;\n const rewind = parser.pos;\n if (!readRegexpLiteral(parser)) {\n parser.pos = rewind - tag.close.length;\n if (parser.inAttribute) {\n parser.pos = start;\n return null;\n } else {\n parser.error(\"Attempted to close a section that wasn't open\");\n }\n } else {\n parser.pos = rewind;\n }\n }\n\n for (i = 0; i < tag.readers.length; i += 1) {\n reader = tag.readers[i];\n\n if ((mustache = reader(parser, tag))) {\n if (tag.isStatic) {\n mustache.s = 1;\n }\n\n if (parser.includeLinePositions) {\n mustache.q = parser.getLinePos(start);\n }\n\n return mustache;\n }\n }\n\n parser.pos = start;\n return null;\n}\n","import {\n ARRAY_LITERAL,\n ATTRIBUTE,\n DECORATOR,\n DELEGATE_FLAG,\n BINDING_FLAG,\n INTERPOLATOR,\n TRANSITION,\n EVENT\n} from '../../../config/types';\nimport getLowestIndex from '../utils/getLowestIndex';\nimport readMustache from '../readMustache';\nimport { decodeCharacterReferences } from 'src/utils/html';\nimport readExpressionList from '../expressions/shared/readExpressionList';\nimport readExpressionOrReference from '../readExpressionOrReference';\nimport flattenExpression from 'parse/utils/flattenExpression';\nimport refineExpression from 'parse/utils/refineExpression';\nimport { isString } from 'utils/is';\n\nconst attributeNamePattern = /^[^\\s\"'>\\/=(]+/;\nconst onPattern = /^on/;\nconst eventPattern = /^on-([a-zA-Z\\*\\.$_]((?:[a-zA-Z\\*\\.$_0-9\\-]|\\\\-)+))$/;\nconst reservedEventNames = /^(?:change|reset|teardown|update|construct|config|init|render|complete|unrender|detach|insert|destruct|attachchild|detachchild)$/;\nconst decoratorPattern = /^as-([a-z-A-Z][-a-zA-Z_0-9]*)$/;\nconst transitionPattern = /^([a-zA-Z](?:(?!-in-out)[-a-zA-Z_0-9])*)-(in|out|in-out)$/;\nconst boundPattern = /^((bind|class)-(([-a-zA-Z0-9_])+))$/;\nconst directives = {\n lazy: { t: BINDING_FLAG, v: 'l' },\n twoway: { t: BINDING_FLAG, v: 't' },\n 'no-delegation': { t: DELEGATE_FLAG }\n};\nconst unquotedAttributeValueTextPattern = /^[^\\s\"'=<>\\/`]+/;\nconst proxyEvent = /^[^\\s\"'=<>@\\[\\]()]*/;\nconst whitespace = /^\\s+/;\n\nconst slashes = /\\\\/g;\nfunction splitEvent(str) {\n const result = [];\n let s = 0;\n\n for (let i = 0; i < str.length; i++) {\n if (str[i] === '-' && str[i - 1] !== '\\\\') {\n result.push(str.substring(s, i).replace(slashes, ''));\n s = i + 1;\n }\n }\n\n result.push(str.substring(s).replace(slashes, ''));\n\n return result;\n}\n\nexport default function readAttribute(parser) {\n let name, i, nearest, idx;\n\n parser.sp();\n\n name = parser.matchPattern(attributeNamePattern);\n if (!name) {\n return null;\n }\n\n // check for accidental delimiter consumption e.g. <tag bool{{>attrs}} />\n nearest = name.length;\n for (i = 0; i < parser.tags.length; i++) {\n if (~(idx = name.indexOf(parser.tags[i].open))) {\n if (idx < nearest) nearest = idx;\n }\n }\n if (nearest < name.length) {\n parser.pos -= name.length - nearest;\n name = name.substr(0, nearest);\n if (!name) return null;\n }\n\n return { n: name };\n}\n\nfunction readAttributeValue(parser) {\n const start = parser.pos;\n\n // next character must be `=`, `/`, `>` or whitespace\n if (!/[=\\/>\\s]/.test(parser.nextChar())) {\n parser.error('Expected `=`, `/`, `>` or whitespace');\n }\n\n parser.sp();\n\n if (!parser.matchString('=')) {\n parser.pos = start;\n return null;\n }\n\n parser.sp();\n\n const valueStart = parser.pos;\n const startDepth = parser.sectionDepth;\n\n const value =\n readQuotedAttributeValue(parser, `'`) ||\n readQuotedAttributeValue(parser, `\"`) ||\n readUnquotedAttributeValue(parser);\n\n if (value === null) {\n parser.error('Expected valid attribute value');\n }\n\n if (parser.sectionDepth !== startDepth) {\n parser.pos = valueStart;\n parser.error(\n 'An attribute value must contain as many opening section tags as closing section tags'\n );\n }\n\n if (!value.length) {\n return '';\n }\n\n if (value.length === 1 && isString(value[0])) {\n return decodeCharacterReferences(value[0]);\n }\n\n return value;\n}\n\nfunction readUnquotedAttributeValueToken(parser) {\n let text, index;\n\n const start = parser.pos;\n\n text = parser.matchPattern(unquotedAttributeValueTextPattern);\n\n if (!text) {\n return null;\n }\n\n const haystack = text;\n const needles = parser.tags.map(t => t.open); // TODO refactor... we do this in readText.js as well\n\n if ((index = getLowestIndex(haystack, needles)) !== -1) {\n text = text.substr(0, index);\n parser.pos = start + text.length;\n }\n\n return text;\n}\n\nfunction readUnquotedAttributeValue(parser) {\n parser.inAttribute = true;\n\n const tokens = [];\n\n let token = readMustache(parser) || readUnquotedAttributeValueToken(parser);\n while (token) {\n tokens.push(token);\n token = readMustache(parser) || readUnquotedAttributeValueToken(parser);\n }\n\n if (!tokens.length) {\n return null;\n }\n\n parser.inAttribute = false;\n return tokens;\n}\n\nfunction readQuotedAttributeValue(parser, quoteMark) {\n const start = parser.pos;\n\n if (!parser.matchString(quoteMark)) {\n return null;\n }\n\n parser.inAttribute = quoteMark;\n\n const tokens = [];\n\n let token = readMustache(parser) || readQuotedStringToken(parser, quoteMark);\n while (token !== null) {\n tokens.push(token);\n token = readMustache(parser) || readQuotedStringToken(parser, quoteMark);\n }\n\n if (!parser.matchString(quoteMark)) {\n parser.pos = start;\n return null;\n }\n\n parser.inAttribute = false;\n\n return tokens;\n}\n\nfunction readQuotedStringToken(parser, quoteMark) {\n const haystack = parser.remaining();\n\n const needles = parser.tags.map(t => t.open); // TODO refactor... we do this in readText.js as well\n needles.push(quoteMark);\n\n const index = getLowestIndex(haystack, needles);\n\n if (index === -1) {\n parser.error('Quoted attribute value must have a closing quote');\n }\n\n if (!index) {\n return null;\n }\n\n parser.pos += index;\n return haystack.substr(0, index);\n}\n\nexport function readAttributeOrDirective(parser) {\n let match, directive;\n\n const attribute = readAttribute(parser, false);\n\n if (!attribute) return null;\n\n // lazy, twoway\n if ((directive = directives[attribute.n])) {\n attribute.t = directive.t;\n if (directive.v) attribute.v = directive.v;\n delete attribute.n; // no name necessary\n parser.sp();\n if (parser.nextChar() === '=') attribute.f = readAttributeValue(parser);\n } else if ((match = decoratorPattern.exec(attribute.n))) {\n // decorators\n attribute.n = match[1];\n attribute.t = DECORATOR;\n readArguments(parser, attribute);\n } else if ((match = transitionPattern.exec(attribute.n))) {\n // transitions\n attribute.n = match[1];\n attribute.t = TRANSITION;\n readArguments(parser, attribute);\n attribute.v = match[2] === 'in-out' ? 't0' : match[2] === 'in' ? 't1' : 't2';\n } else if ((match = eventPattern.exec(attribute.n))) {\n // on-click etc\n attribute.n = splitEvent(match[1]);\n attribute.t = EVENT;\n\n if (parser.matchString('(')) {\n attribute.a = flattenExpression({\n t: ARRAY_LITERAL,\n m: readExpressionList(parser)\n });\n if (!parser.matchString(')')) parser.error(`Expected closing ')'`);\n }\n\n parser.inEvent = true;\n\n // check for a proxy event\n if (!readProxyEvent(parser, attribute)) {\n // otherwise, it's an expression\n readArguments(parser, attribute, true);\n } else if (reservedEventNames.test(attribute.f)) {\n parser.pos -= attribute.f.length;\n parser.error(\n 'Cannot use reserved event names (change, reset, teardown, update, construct, config, init, render, unrender, complete, detach, insert, destruct, attachchild, detachchild)'\n );\n }\n\n parser.inEvent = false;\n } else if ((match = boundPattern.exec(attribute.n))) {\n // bound directives\n const bind = match[2] === 'bind';\n attribute.n = bind ? match[3] : match[1];\n attribute.t = ATTRIBUTE;\n readArguments(parser, attribute, false, true);\n\n if (!attribute.f && bind) {\n attribute.f = [{ t: INTERPOLATOR, r: match[3] }];\n }\n } else {\n parser.sp();\n const value = parser.nextChar() === '=' ? readAttributeValue(parser) : null;\n attribute.f = value != null ? value : attribute.f;\n\n if (parser.sanitizeEventAttributes && onPattern.test(attribute.n)) {\n return { exclude: true };\n } else {\n attribute.f = attribute.f || (attribute.f === '' ? '' : 0);\n attribute.t = ATTRIBUTE;\n }\n }\n\n return attribute;\n}\n\nfunction readProxyEvent(parser, attribute) {\n const start = parser.pos;\n if (!parser.matchString('=')) parser.error(`Missing required directive arguments`);\n\n const quote = parser.matchString(`'`) || parser.matchString(`\"`);\n parser.sp();\n const proxy = parser.matchPattern(proxyEvent);\n\n if (proxy !== undefined) {\n if (quote) {\n parser.sp();\n if (!parser.matchString(quote)) parser.pos = start;\n else return (attribute.f = proxy) || true;\n } else if (!parser.matchPattern(whitespace)) {\n parser.pos = start;\n } else {\n return (attribute.f = proxy) || true;\n }\n } else {\n parser.pos = start;\n }\n}\n\nfunction readArguments(parser, attribute, required = false, single = false) {\n parser.sp();\n if (!parser.matchString('=')) {\n if (required) parser.error(`Missing required directive arguments`);\n return;\n }\n parser.sp();\n\n const quote = parser.matchString('\"') || parser.matchString(\"'\");\n const spread = parser.spreadArgs;\n parser.spreadArgs = true;\n parser.inUnquotedAttribute = !quote;\n const expr = single\n ? readExpressionOrReference(parser, [quote || ' ', '/', '>'])\n : { m: readExpressionList(parser), t: ARRAY_LITERAL };\n parser.inUnquotedAttribute = false;\n parser.spreadArgs = spread;\n\n if (quote) {\n parser.sp();\n if (parser.matchString(quote) !== quote) parser.error(`Expected matching quote '${quote}'`);\n }\n\n if (single) {\n const interpolator = { t: INTERPOLATOR };\n refineExpression(expr, interpolator);\n attribute.f = [interpolator];\n } else {\n attribute.f = flattenExpression(expr);\n }\n}\n","import { REFERENCE, BRACKETED, MEMBER, REFINEMENT } from 'config/types';\nimport flattenExpression from './flattenExpression';\n\nexport default function refineExpression(expression, mustache) {\n let referenceExpression;\n\n if (expression) {\n while (expression.t === BRACKETED && expression.x) {\n expression = expression.x;\n }\n\n if (expression.t === REFERENCE) {\n const n = expression.n;\n if (!~n.indexOf('@context')) {\n mustache.r = expression.n;\n } else {\n mustache.x = flattenExpression(expression);\n }\n } else {\n if ((referenceExpression = getReferenceExpression(expression))) {\n mustache.rx = referenceExpression;\n } else {\n mustache.x = flattenExpression(expression);\n }\n }\n\n return mustache;\n }\n}\n\n// TODO refactor this! it's bewildering\nfunction getReferenceExpression(expression) {\n const members = [];\n let refinement;\n\n while (expression.t === MEMBER && expression.r.t === REFINEMENT) {\n refinement = expression.r;\n\n if (refinement.x) {\n if (refinement.x.t === REFERENCE) {\n members.unshift(refinement.x);\n } else {\n members.unshift(flattenExpression(refinement.x));\n }\n } else {\n members.unshift(refinement.n);\n }\n\n expression = expression.x;\n }\n\n if (expression.t !== REFERENCE) {\n return null;\n }\n\n return {\n r: expression.n,\n m: members\n };\n}\n","import {\n REFERENCE,\n BOOLEAN_LITERAL,\n GLOBAL,\n NUMBER_LITERAL,\n REGEXP_LITERAL,\n STRING_LITERAL,\n ARRAY_LITERAL,\n OBJECT_LITERAL,\n KEY_VALUE_PAIR,\n PREFIX_OPERATOR,\n INFIX_OPERATOR,\n INVOCATION,\n BRACKETED,\n MEMBER,\n REFINEMENT,\n CONDITIONAL\n} from 'config/types';\nimport { isObject, isString } from 'utils/is';\n\nexport default function flattenExpression(expression) {\n let refs;\n let count = 0;\n\n extractRefs(expression, (refs = []));\n const stringified = stringify(expression);\n\n return {\n r: refs,\n s: getVars(stringified)\n };\n\n function getVars(expr) {\n const vars = [];\n for (let i = count - 1; i >= 0; i--) {\n vars.push(`x$${i}`);\n }\n return vars.length ? `(function(){var ${vars.join(',')};return(${expr});})()` : expr;\n }\n\n function stringify(node) {\n if (isString(node)) {\n return node;\n }\n\n switch (node.t) {\n case BOOLEAN_LITERAL:\n case GLOBAL:\n case NUMBER_LITERAL:\n case REGEXP_LITERAL:\n return node.v;\n\n case STRING_LITERAL:\n return JSON.stringify(String(node.v));\n\n case ARRAY_LITERAL:\n if (node.m && hasSpread(node.m)) {\n return `[].concat(${makeSpread(node.m, '[', ']', stringify)})`;\n } else {\n return '[' + (node.m ? node.m.map(stringify).join(',') : '') + ']';\n }\n\n case OBJECT_LITERAL:\n if (node.m && hasSpread(node.m)) {\n return `Object.assign({},${makeSpread(node.m, '{', '}', stringifyPair)})`;\n } else {\n return '{' + (node.m ? node.m.map(n => `${n.k}:${stringify(n.v)}`).join(',') : '') + '}';\n }\n\n case PREFIX_OPERATOR:\n return (node.s === 'typeof' ? 'typeof ' : node.s) + stringify(node.o);\n\n case INFIX_OPERATOR:\n return (\n stringify(node.o[0]) +\n (node.s.substr(0, 2) === 'in' ? ' ' + node.s + ' ' : node.s) +\n stringify(node.o[1])\n );\n\n case INVOCATION:\n if (node.o && hasSpread(node.o)) {\n const id = count++;\n return `(x$${id}=${stringify(node.x)}).apply(x$${id},${stringify({\n t: ARRAY_LITERAL,\n m: node.o\n })})`;\n } else {\n return stringify(node.x) + '(' + (node.o ? node.o.map(stringify).join(',') : '') + ')';\n }\n\n case BRACKETED:\n return '(' + stringify(node.x) + ')';\n\n case MEMBER:\n return stringify(node.x) + stringify(node.r);\n\n case REFINEMENT:\n return node.n ? '.' + node.n : '[' + stringify(node.x) + ']';\n\n case CONDITIONAL:\n return stringify(node.o[0]) + '?' + stringify(node.o[1]) + ':' + stringify(node.o[2]);\n\n case REFERENCE:\n return '_' + refs.indexOf(node.n);\n\n default:\n throw new Error('Expected legal JavaScript');\n }\n }\n\n function stringifyPair(node) {\n return node.p ? stringify(node.k) : `${node.k}:${stringify(node.v)}`;\n }\n\n function makeSpread(list, open, close, fn) {\n const out = list.reduce(\n (a, c) => {\n if (c.p) {\n a.str += `${a.open ? close + ',' : a.str.length ? ',' : ''}${fn(c)}`;\n } else {\n a.str += `${!a.str.length ? open : !a.open ? ',' + open : ','}${fn(c)}`;\n }\n a.open = !c.p;\n return a;\n },\n { open: false, str: '' }\n );\n if (out.open) out.str += close;\n return out.str;\n }\n}\n\nfunction hasSpread(list) {\n for (let i = 0; i < list.length; i++) {\n if (list[i].p) return true;\n }\n\n return false;\n}\n\n// TODO maybe refactor this?\nfunction extractRefs(node, refs) {\n if (node.t === REFERENCE && isString(node.n)) {\n if (!~refs.indexOf(node.n)) {\n refs.unshift(node.n);\n }\n }\n\n const list = node.o || node.m;\n if (list) {\n if (isObject(list)) {\n extractRefs(list, refs);\n } else {\n let i = list.length;\n while (i--) {\n extractRefs(list[i], refs);\n }\n }\n }\n\n if (node.k && node.t === KEY_VALUE_PAIR && !isString(node.k)) {\n extractRefs(node.k, refs);\n }\n\n if (node.x) {\n extractRefs(node.x, refs);\n }\n\n if (node.r) {\n extractRefs(node.r, refs);\n }\n\n if (node.v) {\n extractRefs(node.v, refs);\n }\n}\n","import { REFERENCE } from 'config/types';\nimport readExpression from './readExpression';\nimport readReference from './expressions/primary/readReference';\n\nexport default function readExpressionOrReference(parser, expectedFollowers) {\n const start = parser.pos;\n const expression = readExpression(parser);\n\n if (!expression) {\n // valid reference but invalid expression e.g. `{{new}}`?\n const ref = parser.matchPattern(/^(\\w+)/);\n if (ref) {\n return {\n t: REFERENCE,\n n: ref\n };\n }\n\n return null;\n }\n\n for (let i = 0; i < expectedFollowers.length; i += 1) {\n if (parser.remaining().substr(0, expectedFollowers[i].length) === expectedFollowers[i]) {\n return expression;\n }\n }\n\n parser.pos = start;\n return readReference(parser);\n}\n","import { expectedExpression } from './errors';\nimport readExpression from '../../readExpression';\nimport { spreadPattern } from './patterns';\n\nexport default function readExpressionList(parser, spread) {\n let isSpread;\n const expressions = [];\n\n const pos = parser.pos;\n\n do {\n parser.sp();\n\n if (spread) {\n isSpread = parser.matchPattern(spreadPattern);\n }\n\n const expr = readExpression(parser);\n\n if (expr === null && expressions.length) {\n parser.error(expectedExpression);\n } else if (expr === null) {\n parser.pos = pos;\n return null;\n }\n\n if (isSpread) {\n expr.p = true;\n }\n\n expressions.push(expr);\n\n parser.sp();\n } while (parser.matchString(','));\n\n return expressions;\n}\n","import readConditional from './expressions/readConditional';\nimport readReference from './expressions/primary/readReference';\n\nexport default function readExpression(parser) {\n // if eval is false, no expressions\n if (parser.allowExpressions === false) {\n const ref = readReference(parser);\n parser.sp();\n return ref;\n }\n\n // The conditional operator is the lowest precedence operator (except yield,\n // assignment operators, and commas, none of which are supported), so we\n // start there. If it doesn't match, it 'falls through' to progressively\n // higher precedence operators, until it eventually matches (or fails to\n // match) a 'primary' - a literal or a reference. This way, the abstract syntax\n // tree has everything in its proper place, i.e. 2 + 3 * 4 === 14, not 20.\n return readConditional(parser);\n}\n","import { CONDITIONAL } from 'config/types';\nimport readLogicalOr from './readLogicalOr';\nimport { expectedExpression } from './shared/errors';\nimport readExpression from '../readExpression';\n\n// The conditional operator is the lowest precedence operator, so we start here\nexport default function getConditional(parser) {\n const expression = readLogicalOr(parser);\n if (!expression) {\n return null;\n }\n\n const start = parser.pos;\n\n parser.sp();\n\n if (!parser.matchString('?')) {\n parser.pos = start;\n return expression;\n }\n\n parser.sp();\n\n const ifTrue = readExpression(parser);\n if (!ifTrue) {\n parser.error(expectedExpression);\n }\n\n parser.sp();\n\n if (!parser.matchString(':')) {\n parser.error('Expected \":\"');\n }\n\n parser.sp();\n\n const ifFalse = readExpression(parser);\n if (!ifFalse) {\n parser.error(expectedExpression);\n }\n\n return {\n t: CONDITIONAL,\n o: [expression, ifTrue, ifFalse]\n };\n}\n","import { INFIX_OPERATOR } from 'config/types';\nimport readTypeof from './readTypeof';\n\nlet readLogicalOr;\n\nconst makeInfixSequenceMatcher = function(symbol, fallthrough) {\n return function(parser) {\n // > and / have to be quoted\n if (parser.inUnquotedAttribute && (symbol === '>' || symbol === '/'))\n return fallthrough(parser);\n\n let start, left, right;\n\n left = fallthrough(parser);\n if (!left) {\n return null;\n }\n\n // Loop to handle left-recursion in a case like `a * b * c` and produce\n // left association, i.e. `(a * b) * c`. The matcher can't call itself\n // to parse `left` because that would be infinite regress.\n while (true) {\n start = parser.pos;\n\n parser.sp();\n\n if (!parser.matchString(symbol)) {\n parser.pos = start;\n return left;\n }\n\n // special case - in operator must not be followed by [a-zA-Z_$0-9]\n if (symbol === 'in' && /[a-zA-Z_$0-9]/.test(parser.remaining().charAt(0))) {\n parser.pos = start;\n return left;\n }\n\n parser.sp();\n\n // right operand must also consist of only higher-precedence operators\n right = fallthrough(parser);\n if (!right) {\n parser.pos = start;\n return left;\n }\n\n left = {\n t: INFIX_OPERATOR,\n s: symbol,\n o: [left, right]\n };\n\n // Loop back around. If we don't see another occurrence of the symbol,\n // we'll return left.\n }\n };\n};\n\n// create all infix sequence matchers, and return readLogicalOr\n(function() {\n let i, len, matcher, fallthrough;\n\n // All the infix operators on order of precedence (source: https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Operators/Operator_Precedence)\n // Each sequence matcher will initially fall through to its higher precedence\n // neighbour, and only attempt to match if one of the higher precedence operators\n // (or, ultimately, a literal, reference, or bracketed expression) already matched\n const infixOperators = '* / % + - << >> >>> < <= > >= in instanceof == != === !== & ^ | && ||'.split(\n ' '\n );\n\n // A typeof operator is higher precedence than multiplication\n fallthrough = readTypeof;\n for (i = 0, len = infixOperators.length; i < len; i += 1) {\n matcher = makeInfixSequenceMatcher(infixOperators[i], fallthrough);\n fallthrough = matcher;\n }\n\n // Logical OR is the fallthrough for the conditional matcher\n readLogicalOr = fallthrough;\n})();\n\nexport default readLogicalOr;\n","import { PREFIX_OPERATOR } from 'config/types';\nimport { expectedExpression } from './shared/errors';\nimport readMemberOrInvocation from './readMemberOrInvocation';\nimport readExpression from '../readExpression';\n\nlet readTypeOf;\n\nconst makePrefixSequenceMatcher = function(symbol, fallthrough) {\n return function(parser) {\n let expression;\n\n if ((expression = fallthrough(parser))) {\n return expression;\n }\n\n if (!parser.matchString(symbol)) {\n return null;\n }\n\n parser.sp();\n\n expression = readExpression(parser);\n if (!expression) {\n parser.error(expectedExpression);\n }\n\n return {\n s: symbol,\n o: expression,\n t: PREFIX_OPERATOR\n };\n };\n};\n\n// create all prefix sequence matchers, return readTypeOf\n(function() {\n let i, len, matcher, fallthrough;\n\n const prefixOperators = '! ~ + - typeof'.split(' ');\n\n fallthrough = readMemberOrInvocation;\n for (i = 0, len = prefixOperators.length; i < len; i += 1) {\n matcher = makePrefixSequenceMatcher(prefixOperators[i], fallthrough);\n fallthrough = matcher;\n }\n\n // typeof operator is higher precedence than multiplication, so provides the\n // fallthrough for the multiplication sequence matcher we're about to create\n // (we're skipping void and delete)\n readTypeOf = fallthrough;\n})();\n\nexport default readTypeOf;\n","import { MEMBER, INVOCATION } from 'config/types';\nimport readPrimary from './readPrimary';\nimport readExpressionList from './shared/readExpressionList';\nimport readRefinement from './shared/readRefinement';\nimport { expectedParen } from './shared/errors';\n\nexport default function(parser) {\n let expression = readPrimary(parser);\n\n if (!expression) return null;\n\n while (expression) {\n const refinement = readRefinement(parser);\n if (refinement) {\n expression = {\n t: MEMBER,\n x: expression,\n r: refinement\n };\n } else if (parser.matchString('(')) {\n parser.sp();\n const expressionList = readExpressionList(parser, true);\n\n parser.sp();\n\n if (!parser.matchString(')')) {\n parser.error(expectedParen);\n }\n\n expression = {\n t: INVOCATION,\n x: expression\n };\n\n if (expressionList) expression.o = expressionList;\n } else {\n break;\n }\n }\n\n return expression;\n}\n","import { REFINEMENT } from 'config/types';\nimport { expectedExpression } from './errors';\nimport { name as namePattern } from './patterns';\nimport readExpression from '../../readExpression';\n\nexport default function readRefinement(parser) {\n // some things call for strict refinement (partial names), meaning no space between reference and refinement\n if (!parser.strictRefinement) {\n parser.sp();\n }\n\n // \".\" name\n if (parser.matchString('.')) {\n parser.sp();\n\n const name = parser.matchPattern(namePattern);\n if (name) {\n return {\n t: REFINEMENT,\n n: name\n };\n }\n\n parser.error('Expected a property name');\n }\n\n // \"[\" expression \"]\"\n if (parser.matchString('[')) {\n parser.sp();\n\n const expr = readExpression(parser);\n if (!expr) parser.error(expectedExpression);\n\n parser.sp();\n\n if (!parser.matchString(']')) parser.error(`Expected ']'`);\n\n return {\n t: REFINEMENT,\n x: expr\n };\n }\n\n return null;\n}\n","import readLiteral from './primary/readLiteral';\nimport readReference from './primary/readReference';\nimport readBracketedExpression from './primary/readBracketedExpression';\n\nexport default function(parser) {\n return readLiteral(parser) || readReference(parser) || readBracketedExpression(parser);\n}\n","import { BRACKETED } from 'src/config/types';\nimport { expectedExpression, expectedParen } from '../shared/errors';\nimport readExpression from '../../readExpression';\n\nexport default function readBracketedExpression(parser) {\n if (!parser.matchString('(')) return null;\n\n parser.sp();\n\n const expr = readExpression(parser);\n\n if (!expr) parser.error(expectedExpression);\n\n parser.sp();\n\n if (!parser.matchString(')')) parser.error(expectedParen);\n\n return {\n t: BRACKETED,\n x: expr\n };\n}\n","import { BRACKETED, GLOBAL, REFERENCE } from 'src/config/types';\nimport { normalise } from 'src/shared/keypaths';\nimport { legalReference, relaxedName } from '../shared/patterns';\n\n// if a reference is a browser global, we don't deference it later, so it needs special treatment\nconst globals = /^(?:Array|console|Date|RegExp|decodeURIComponent|decodeURI|encodeURIComponent|encodeURI|isFinite|isNaN|parseFloat|parseInt|JSON|Math|NaN|undefined|null|Object|Number|String|Boolean)\\b/;\n\n// keywords are not valid references, with the exception of `this`\nconst keywords = /^(?:break|case|catch|continue|debugger|default|delete|do|else|finally|for|function|if|in|instanceof|new|return|switch|throw|try|typeof|var|void|while|with)$/;\n\nconst prefixPattern = /^(?:\\@\\.|\\@|~\\/|(?:\\^\\^\\/(?:\\^\\^\\/)*(?:\\.\\.\\/)*)|(?:\\.\\.\\/)+|\\.\\/(?:\\.\\.\\/)*|\\.)/;\nconst specials = /^(key|index|keypath|rootpath|this|global|shared|context|event|node|local|style|helpers|last)/;\n\nexport default function readReference(parser) {\n let prefix, name, global, reference, lastDotIndex;\n\n const startPos = parser.pos;\n\n prefix = parser.matchPattern(prefixPattern) || '';\n name =\n (!prefix && parser.relaxedNames && parser.matchPattern(relaxedName)) ||\n parser.matchPattern(legalReference);\n const actual = prefix.length + ((name && name.length) || 0);\n\n if (prefix === '@.') {\n prefix = '@';\n if (name) name = 'this.' + name;\n else name = 'this';\n }\n\n if (!name && prefix) {\n name = prefix;\n prefix = '';\n }\n\n if (!name) {\n return null;\n }\n\n if (prefix === '@') {\n if (!specials.test(name)) {\n parser.error(`Unrecognized special reference @${name}`);\n } else if ((~name.indexOf('event') || ~name.indexOf('node')) && !parser.inEvent) {\n parser.error(`@event and @node are only valid references within an event directive`);\n } else if (~name.indexOf('context')) {\n parser.pos = parser.pos - (name.length - 7);\n return {\n t: BRACKETED,\n x: {\n t: REFERENCE,\n n: '@context'\n }\n };\n }\n }\n\n // bug out if it's a keyword (exception for ancestor/restricted refs - see https://github.com/ractivejs/ractive/issues/1497)\n if (!prefix && !parser.relaxedNames && keywords.test(name)) {\n parser.pos = startPos;\n return null;\n }\n\n // if this is a browser global, stop here\n if (!prefix && globals.test(name)) {\n global = globals.exec(name)[0];\n parser.pos = startPos + global.length;\n\n return {\n t: GLOBAL,\n v: global\n };\n }\n\n reference = (prefix || '') + normalise(name);\n\n if (parser.matchString('(')) {\n // if this is a method invocation (as opposed to a function) we need\n // to strip the method name from the reference combo, else the context\n // will be wrong\n // but only if the reference was actually a member and not a refinement\n lastDotIndex = reference.lastIndexOf('.');\n if (lastDotIndex !== -1 && name[name.length - 1] !== ']') {\n if (lastDotIndex === 0) {\n reference = '.';\n parser.pos = startPos;\n } else {\n const refLength = reference.length;\n reference = reference.substr(0, lastDotIndex);\n parser.pos = startPos + (actual - (refLength - lastDotIndex));\n }\n } else {\n parser.pos -= 1;\n }\n }\n\n return {\n t: REFERENCE,\n n: reference.replace(/^this\\./, './').replace(/^this$/, '.')\n };\n}\n","import readNumberLiteral from './literal/readNumberLiteral';\nimport readBooleanLiteral from './literal/readBooleanLiteral';\nimport readStringLiteral from './literal/readStringLiteral';\nimport readTemplateStringLiteral from './literal/readTemplateStringLiteral';\nimport readObjectLiteral from './literal/readObjectLiteral';\nimport readArrayLiteral from './literal/readArrayLiteral';\nimport readRegexpLiteral from './literal/readRegexpLiteral';\n\nexport default function readLiteral(parser) {\n return (\n readNumberLiteral(parser) ||\n readBooleanLiteral(parser) ||\n readStringLiteral(parser) ||\n readTemplateStringLiteral(parser) ||\n readObjectLiteral(parser) ||\n readArrayLiteral(parser) ||\n readRegexpLiteral(parser)\n );\n}\n","import { ARRAY_LITERAL } from 'src/config/types';\nimport readExpressionList from '../../shared/readExpressionList';\n\nexport default function(parser) {\n const start = parser.pos;\n\n // allow whitespace before '['\n parser.sp();\n\n if (!parser.matchString('[')) {\n parser.pos = start;\n return null;\n }\n\n const expressionList = readExpressionList(parser, true);\n\n if (!parser.matchString(']')) {\n parser.pos = start;\n return null;\n }\n\n return {\n t: ARRAY_LITERAL,\n m: expressionList\n };\n}\n","import { OBJECT_LITERAL } from '../../../../../config/types';\nimport readKeyValuePairs from './objectLiteral/keyValuePairs';\n\nexport default function(parser) {\n const start = parser.pos;\n\n // allow whitespace\n parser.sp();\n\n if (!parser.matchString('{')) {\n parser.pos = start;\n return null;\n }\n\n const keyValuePairs = readKeyValuePairs(parser);\n\n // allow whitespace between final value and '}'\n parser.sp();\n\n if (!parser.matchString('}')) {\n parser.pos = start;\n return null;\n }\n\n return {\n t: OBJECT_LITERAL,\n m: keyValuePairs\n };\n}\n","import getKeyValuePair from './keyValuePair';\n\nexport default function readKeyValuePairs(parser) {\n const start = parser.pos;\n\n const pair = getKeyValuePair(parser);\n if (pair === null) {\n return null;\n }\n\n const pairs = [pair];\n\n if (parser.matchString(',')) {\n const keyValuePairs = readKeyValuePairs(parser);\n\n if (!keyValuePairs) {\n parser.pos = start;\n return null;\n }\n\n return pairs.concat(keyValuePairs);\n }\n\n return pairs;\n}\n","import { KEY_VALUE_PAIR, REFERENCE } from 'src/config/types';\nimport readKey from '../../../shared/readKey';\nimport readExpression from '../../../../readExpression';\nimport { name as namePattern, spreadPattern } from '../../../shared/patterns';\n\nexport default function readKeyValuePair(parser) {\n let spread;\n const start = parser.pos;\n\n // allow whitespace between '{' and key\n parser.sp();\n\n const refKey = parser.nextChar() !== \"'\" && parser.nextChar() !== '\"';\n if (refKey) spread = parser.matchPattern(spreadPattern);\n\n const key = spread ? readExpression(parser) : readKey(parser);\n if (key === null) {\n parser.pos = start;\n return null;\n }\n\n // allow whitespace between key and ':'\n parser.sp();\n\n // es2015 shorthand property\n if (refKey && (parser.nextChar() === ',' || parser.nextChar() === '}')) {\n if (!spread && !namePattern.test(key)) {\n parser.error(`Expected a valid reference, but found '${key}' instead.`);\n }\n\n const pair = {\n t: KEY_VALUE_PAIR,\n k: key,\n v: {\n t: REFERENCE,\n n: key\n }\n };\n\n if (spread) {\n pair.p = true;\n }\n\n return pair;\n }\n\n // next character must be ':'\n if (!parser.matchString(':')) {\n parser.pos = start;\n return null;\n }\n\n // allow whitespace between ':' and value\n parser.sp();\n\n // next expression must be a, well... expression\n const value = readExpression(parser);\n if (value === null) {\n parser.pos = start;\n return null;\n }\n\n return {\n t: KEY_VALUE_PAIR,\n k: key,\n v: value\n };\n}\n","import readStringLiteral from '../primary/literal/readStringLiteral';\nimport readNumberLiteral from '../primary/literal/readNumberLiteral';\nimport { name as namePattern } from './patterns';\n\nconst identifier = /^[a-zA-Z_$][a-zA-Z_$0-9]*$/;\n\n// http://mathiasbynens.be/notes/javascript-properties\n// can be any name, string literal, or number literal\nexport default function readKey(parser) {\n let token;\n\n if ((token = readStringLiteral(parser))) {\n return identifier.test(token.v) ? token.v : '\"' + token.v.replace(/\"/g, '\\\\\"') + '\"';\n }\n\n if ((token = readNumberLiteral(parser))) {\n return token.v;\n }\n\n if ((token = parser.matchPattern(namePattern))) {\n return token;\n }\n\n return null;\n}\n","export const name = /^[a-zA-Z_$][a-zA-Z_$0-9]*/;\nexport const spreadPattern = /^\\s*\\.{3}/;\nexport const legalReference = /^(?:[a-zA-Z$_0-9]|\\\\\\.)+(?:(?:\\.(?:[a-zA-Z$_0-9]|\\\\\\.)+)|(?:\\[[0-9]+\\]))*/;\nexport const relaxedName = /^[a-zA-Z_$][-\\/a-zA-Z_$0-9]*(?:\\.(?:[a-zA-Z_$][-\\/a-zA-Z_$0-9]*))*/;\n","import readExpression from '../../../readExpression';\nimport { STRING_LITERAL, BRACKETED, INFIX_OPERATOR } from '../../../../../config/types';\nimport {\n escapeSequencePattern,\n lineContinuationPattern\n} from './stringLiteral/makeQuotedStringMatcher';\n\n// Match one or more characters until: \", ', or \\\nconst stringMiddlePattern = /^[^`\"\\\\\\$]+?(?:(?=[`\"\\\\\\$]))/;\n\nconst escapes = /[\\r\\n\\t\\b\\f]/g;\nfunction getString(literal) {\n return JSON.parse(`\"${literal.replace(escapes, escapeChar)}\"`);\n}\n\nfunction escapeChar(c) {\n switch (c) {\n case '\\n':\n return '\\\\n';\n case '\\r':\n return '\\\\r';\n case '\\t':\n return '\\\\t';\n case '\\b':\n return '\\\\b';\n case '\\f':\n return '\\\\f';\n }\n}\n\nexport default function readTemplateStringLiteral(parser) {\n if (!parser.matchString('`')) return null;\n\n let literal = '';\n let done = false;\n let next;\n const parts = [];\n\n while (!done) {\n next =\n parser.matchPattern(stringMiddlePattern) ||\n parser.matchPattern(escapeSequencePattern) ||\n parser.matchString('$') ||\n parser.matchString('\"');\n if (next) {\n if (next === `\"`) {\n literal += `\\\\\"`;\n } else if (next === '\\\\`') {\n literal += '`';\n } else if (next === '$') {\n if (parser.matchString('{')) {\n parts.push({ t: STRING_LITERAL, v: getString(literal) });\n literal = '';\n\n parser.sp();\n const expr = readExpression(parser);\n\n if (!expr) parser.error('Expected valid expression');\n\n parts.push({ t: BRACKETED, x: expr });\n\n parser.sp();\n if (!parser.matchString('}'))\n parser.error(`Expected closing '}' after interpolated expression`);\n } else {\n literal += '$';\n }\n } else {\n literal += next;\n }\n } else {\n next = parser.matchPattern(lineContinuationPattern);\n if (next) {\n // convert \\(newline-like) into a \\u escape, which is allowed in JSON\n literal += '\\\\u' + ('000' + next.charCodeAt(1).toString(16)).slice(-4);\n } else {\n done = true;\n }\n }\n }\n\n if (literal.length) parts.push({ t: STRING_LITERAL, v: getString(literal) });\n\n if (!parser.matchString('`')) parser.error(\"Expected closing '`'\");\n\n if (parts.length === 1) {\n return parts[0];\n } else {\n let result = parts.pop();\n let part;\n\n while ((part = parts.pop())) {\n result = {\n t: INFIX_OPERATOR,\n s: '+',\n o: [part, result]\n };\n }\n\n return {\n t: BRACKETED,\n x: result\n };\n }\n}\n","import { STRING_LITERAL } from '../../../../../config/types';\nimport makeQuotedStringMatcher from './stringLiteral/makeQuotedStringMatcher';\n\nconst singleMatcher = makeQuotedStringMatcher(`\"`);\nconst doubleMatcher = makeQuotedStringMatcher(`'`);\n\nexport default function(parser) {\n const start = parser.pos;\n const quote = parser.matchString(`'`) || parser.matchString(`\"`);\n\n if (quote) {\n const string = (quote === `'` ? singleMatcher : doubleMatcher)(parser);\n\n if (!parser.matchString(quote)) {\n parser.pos = start;\n return null;\n }\n\n return {\n t: STRING_LITERAL,\n v: string\n };\n }\n\n return null;\n}\n","// Match one or more characters until: \", ', \\, or EOL/EOF.\n// EOL/EOF is written as (?!.) (meaning there's no non-newline char next).\nconst stringMiddlePattern = /^(?=.)[^\"'\\\\]+?(?:(?!.)|(?=[\"'\\\\]))/;\n\n// Match one escape sequence, including the backslash.\nexport const escapeSequencePattern = /^\\\\(?:[`'\"\\\\bfnrt]|0(?![0-9])|x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|(?=.)[^ux0-9])/;\n\n// Match one ES5 line continuation (backslash + line terminator).\nexport const lineContinuationPattern = /^\\\\(?:\\r\\n|[\\u000A\\u000D\\u2028\\u2029])/;\n\n// Helper for defining getDoubleQuotedString and getSingleQuotedString.\nexport default function(okQuote) {\n return function(parser) {\n let literal = '\"';\n let done = false;\n let next;\n\n while (!done) {\n next =\n parser.matchPattern(stringMiddlePattern) ||\n parser.matchPattern(escapeSequencePattern) ||\n parser.matchString(okQuote);\n if (next) {\n if (next === `\"`) {\n literal += `\\\\\"`;\n } else if (next === `\\\\'`) {\n literal += `'`;\n } else {\n literal += next;\n }\n } else {\n next = parser.matchPattern(lineContinuationPattern);\n if (next) {\n // convert \\(newline-like) into a \\u escape, which is allowed in JSON\n literal += '\\\\u' + ('000' + next.charCodeAt(1).toString(16)).slice(-4);\n } else {\n done = true;\n }\n }\n }\n\n literal += '\"';\n\n // use JSON.parse to interpret escapes\n return JSON.parse(literal);\n };\n}\n","import { BOOLEAN_LITERAL } from '../../../../../config/types';\n\nexport default function readBooleanLiteral(parser) {\n const remaining = parser.remaining();\n\n if (remaining.substr(0, 4) === 'true') {\n parser.pos += 4;\n return {\n t: BOOLEAN_LITERAL,\n v: 'true'\n };\n }\n\n if (remaining.substr(0, 5) === 'false') {\n parser.pos += 5;\n return {\n t: BOOLEAN_LITERAL,\n v: 'false'\n };\n }\n\n return null;\n}\n","import { NUMBER_LITERAL } from '../../../../../config/types';\n\n// bulletproof number regex from https://gist.github.com/Rich-Harris/7544330\nconst numberPattern = /^(?:[+-]?)0*(?:(?:(?:[1-9]\\d*)?\\.\\d+)|(?:(?:0|[1-9]\\d*)\\.)|(?:0|[1-9]\\d*))(?:[eE][+-]?\\d+)?/;\n\nexport default function readNumberLiteral(parser) {\n let result;\n\n if ((result = parser.matchPattern(numberPattern))) {\n return {\n t: NUMBER_LITERAL,\n v: result\n };\n }\n\n return null;\n}\n","export const expectedExpression = 'Expected a JavaScript expression';\nexport const expectedParen = 'Expected closing paren';\n","import { keys } from 'utils/object';\nimport { isFunction } from 'utils/is';\n\n// https://github.com/kangax/html-minifier/issues/63#issuecomment-37763316\n//export const booleanAttributes = /^(allowFullscreen|async|autofocus|autoplay|checked|compact|controls|declare|default|defaultChecked|defaultMuted|defaultSelected|defer|disabled|enabled|formNoValidate|hidden|indeterminate|inert|isMap|itemScope|loop|multiple|muted|noHref|noResize|noShade|noValidate|noWrap|open|pauseOnExit|readOnly|required|reversed|scoped|seamless|selected|sortable|translate|trueSpeed|typeMustMatch|visible)$/i;\nexport const booleanAttributes = {\n allowfullscreen: 1,\n async: 1,\n autofocus: 1,\n autoplay: 1,\n checked: 1,\n compact: 1,\n controls: 1,\n declare: 1,\n default: 1,\n defaultchecked: 1,\n defaultmuted: 1,\n defaultselected: 1,\n defer: 1,\n disabled: 1,\n enabled: 1,\n formnovalidate: 1,\n hidden: 1,\n indeterminate: 1,\n inert: 1,\n ismap: 1,\n itemscope: 1,\n loop: 1,\n multiple: 1,\n muted: 1,\n nohref: 1,\n noresize: 1,\n noshade: 1,\n novalidate: 1,\n nowrap: 1,\n open: 1,\n pauseonexit: 1,\n readonly: 1,\n required: 1,\n reversed: 1,\n scoped: 1,\n seamless: 1,\n selected: 1,\n sortable: 1,\n translate: 1,\n truespeed: 1,\n typemustmatch: 1,\n visible: 1\n};\nexport const voidElements = {\n area: 1,\n base: 1,\n br: 1,\n col: 1,\n command: 1,\n doctype: 1,\n embed: 1,\n hr: 1,\n img: 1,\n input: 1,\n keygen: 1,\n link: 1,\n meta: 1,\n param: 1,\n source: 1,\n track: 1,\n wbr: 1\n};\n\nconst htmlEntities = {\n quot: 34,\n amp: 38,\n apos: 39,\n lt: 60,\n gt: 62,\n nbsp: 160,\n iexcl: 161,\n cent: 162,\n pound: 163,\n curren: 164,\n yen: 165,\n brvbar: 166,\n sect: 167,\n uml: 168,\n copy: 169,\n ordf: 170,\n laquo: 171,\n not: 172,\n shy: 173,\n reg: 174,\n macr: 175,\n deg: 176,\n plusmn: 177,\n sup2: 178,\n sup3: 179,\n acute: 180,\n micro: 181,\n para: 182,\n middot: 183,\n cedil: 184,\n sup1: 185,\n ordm: 186,\n raquo: 187,\n frac14: 188,\n frac12: 189,\n frac34: 190,\n iquest: 191,\n Agrave: 192,\n Aacute: 193,\n Acirc: 194,\n Atilde: 195,\n Auml: 196,\n Aring: 197,\n AElig: 198,\n Ccedil: 199,\n Egrave: 200,\n Eacute: 201,\n Ecirc: 202,\n Euml: 203,\n Igrave: 204,\n Iacute: 205,\n Icirc: 206,\n Iuml: 207,\n ETH: 208,\n Ntilde: 209,\n Ograve: 210,\n Oacute: 211,\n Ocirc: 212,\n Otilde: 213,\n Ouml: 214,\n times: 215,\n Oslash: 216,\n Ugrave: 217,\n Uacute: 218,\n Ucirc: 219,\n Uuml: 220,\n Yacute: 221,\n THORN: 222,\n szlig: 223,\n agrave: 224,\n aacute: 225,\n acirc: 226,\n atilde: 227,\n auml: 228,\n aring: 229,\n aelig: 230,\n ccedil: 231,\n egrave: 232,\n eacute: 233,\n ecirc: 234,\n euml: 235,\n igrave: 236,\n iacute: 237,\n icirc: 238,\n iuml: 239,\n eth: 240,\n ntilde: 241,\n ograve: 242,\n oacute: 243,\n ocirc: 244,\n otilde: 245,\n ouml: 246,\n divide: 247,\n oslash: 248,\n ugrave: 249,\n uacute: 250,\n ucirc: 251,\n uuml: 252,\n yacute: 253,\n thorn: 254,\n yuml: 255,\n OElig: 338,\n oelig: 339,\n Scaron: 352,\n scaron: 353,\n Yuml: 376,\n fnof: 402,\n circ: 710,\n tilde: 732,\n Alpha: 913,\n Beta: 914,\n Gamma: 915,\n Delta: 916,\n Epsilon: 917,\n Zeta: 918,\n Eta: 919,\n Theta: 920,\n Iota: 921,\n Kappa: 922,\n Lambda: 923,\n Mu: 924,\n Nu: 925,\n Xi: 926,\n Omicron: 927,\n Pi: 928,\n Rho: 929,\n Sigma: 931,\n Tau: 932,\n Upsilon: 933,\n Phi: 934,\n Chi: 935,\n Psi: 936,\n Omega: 937,\n alpha: 945,\n beta: 946,\n gamma: 947,\n delta: 948,\n epsilon: 949,\n zeta: 950,\n eta: 951,\n theta: 952,\n iota: 953,\n kappa: 954,\n lambda: 955,\n mu: 956,\n nu: 957,\n xi: 958,\n omicron: 959,\n pi: 960,\n rho: 961,\n sigmaf: 962,\n sigma: 963,\n tau: 964,\n upsilon: 965,\n phi: 966,\n chi: 967,\n psi: 968,\n omega: 969,\n thetasym: 977,\n upsih: 978,\n piv: 982,\n ensp: 8194,\n emsp: 8195,\n thinsp: 8201,\n zwnj: 8204,\n zwj: 8205,\n lrm: 8206,\n rlm: 8207,\n ndash: 8211,\n mdash: 8212,\n lsquo: 8216,\n rsquo: 8217,\n sbquo: 8218,\n ldquo: 8220,\n rdquo: 8221,\n bdquo: 8222,\n dagger: 8224,\n Dagger: 8225,\n bull: 8226,\n hellip: 8230,\n permil: 8240,\n prime: 8242,\n Prime: 8243,\n lsaquo: 8249,\n rsaquo: 8250,\n oline: 8254,\n frasl: 8260,\n euro: 8364,\n image: 8465,\n weierp: 8472,\n real: 8476,\n trade: 8482,\n alefsym: 8501,\n larr: 8592,\n uarr: 8593,\n rarr: 8594,\n darr: 8595,\n harr: 8596,\n crarr: 8629,\n lArr: 8656,\n uArr: 8657,\n rArr: 8658,\n dArr: 8659,\n hArr: 8660,\n forall: 8704,\n part: 8706,\n exist: 8707,\n empty: 8709,\n nabla: 8711,\n isin: 8712,\n notin: 8713,\n ni: 8715,\n prod: 8719,\n sum: 8721,\n minus: 8722,\n lowast: 8727,\n radic: 8730,\n prop: 8733,\n infin: 8734,\n ang: 8736,\n and: 8743,\n or: 8744,\n cap: 8745,\n cup: 8746,\n int: 8747,\n there4: 8756,\n sim: 8764,\n cong: 8773,\n asymp: 8776,\n ne: 8800,\n equiv: 8801,\n le: 8804,\n ge: 8805,\n sub: 8834,\n sup: 8835,\n nsub: 8836,\n sube: 8838,\n supe: 8839,\n oplus: 8853,\n otimes: 8855,\n perp: 8869,\n sdot: 8901,\n lceil: 8968,\n rceil: 8969,\n lfloor: 8970,\n rfloor: 8971,\n lang: 9001,\n rang: 9002,\n loz: 9674,\n spades: 9824,\n clubs: 9827,\n hearts: 9829,\n diams: 9830\n};\nconst controlCharacters = [\n 8364,\n 129,\n 8218,\n 402,\n 8222,\n 8230,\n 8224,\n 8225,\n 710,\n 8240,\n 352,\n 8249,\n 338,\n 141,\n 381,\n 143,\n 144,\n 8216,\n 8217,\n 8220,\n 8221,\n 8226,\n 8211,\n 8212,\n 732,\n 8482,\n 353,\n 8250,\n 339,\n 157,\n 382,\n 376\n];\nconst entityPattern = new RegExp(\n '&(#?(?:x[\\\\w\\\\d]+|\\\\d+|' + keys(htmlEntities).join('|') + '));?',\n 'g'\n);\nconst codePointSupport = isFunction(String.fromCodePoint);\nconst codeToChar = codePointSupport ? String.fromCodePoint : String.fromCharCode;\n\nexport function decodeCharacterReferences(html) {\n return html.replace(entityPattern, (match, entity) => {\n let code;\n\n // Handle named entities\n if (entity[0] !== '#') {\n code = htmlEntities[entity];\n } else if (entity[1] === 'x') {\n code = parseInt(entity.substring(2), 16);\n } else {\n code = parseInt(entity.substring(1), 10);\n }\n\n if (!code) {\n return match;\n }\n\n return codeToChar(validateCode(code));\n });\n}\n\nconst lessThan = /</g;\nconst greaterThan = />/g;\nconst amp = /&/g;\nconst invalid = 65533;\n\nexport function escapeHtml(str) {\n return str\n .replace(amp, '&')\n .replace(lessThan, '<')\n .replace(greaterThan, '>');\n}\n\n// some code points are verboten. If we were inserting HTML, the browser would replace the illegal\n// code points with alternatives in some cases - since we're bypassing that mechanism, we need\n// to replace them ourselves\n//\n// Source: http://en.wikipedia.org/wiki/Character_encodings_in_HTML#Illegal_characters\n/* istanbul ignore next */\nfunction validateCode(code) {\n if (!code) {\n return invalid;\n }\n\n // line feed becomes generic whitespace\n if (code === 10) {\n return 32;\n }\n\n // ASCII range. (Why someone would use HTML entities for ASCII characters I don't know, but...)\n if (code < 128) {\n return code;\n }\n\n // code points 128-159 are dealt with leniently by browsers, but they're incorrect. We need\n // to correct the mistake or we'll end up with missing € signs and so on\n if (code <= 159) {\n return controlCharacters[code - 128];\n }\n\n // basic multilingual plane\n if (code < 55296) {\n return code;\n }\n\n // UTF-16 surrogate halves\n if (code <= 57343) {\n return invalid;\n }\n\n // rest of the basic multilingual plane\n if (code <= 65535) {\n return code;\n } else if (!codePointSupport) {\n return invalid;\n }\n\n // supplementary multilingual plane 0x10000 - 0x1ffff\n if (code >= 65536 && code <= 131071) {\n return code;\n }\n\n // supplementary ideographic plane 0x20000 - 0x2ffff\n if (code >= 131072 && code <= 196607) {\n return code;\n }\n\n return invalid;\n}\n","import escapeRegExp from 'utils/escapeRegExp';\n\nconst regExpCache = {};\n\nexport default function(haystack, needles) {\n return haystack.search(\n regExpCache[needles.join()] ||\n (regExpCache[needles.join()] = new RegExp(needles.map(escapeRegExp).join('|')))\n );\n}\n","const pattern = /[-/\\\\^$*+?.()|[\\]{}]/g;\n\nexport default function escapeRegExp(str) {\n return str.replace(pattern, '\\\\$&');\n}\n","import { REGEXP_LITERAL } from '../../../../../config/types';\n\nconst regexpPattern = /^(\\/(?:[^\\n\\r\\u2028\\u2029/\\\\[]|\\\\.|\\[(?:[^\\n\\r\\u2028\\u2029\\]\\\\]|\\\\.)*])+\\/(?:([gimuy])(?![a-z]*\\2))*(?![a-zA-Z_$0-9]))/;\n\nexport default function readNumberLiteral(parser) {\n let result;\n\n if ((result = parser.matchPattern(regexpPattern))) {\n return {\n t: REGEXP_LITERAL,\n v: result\n };\n }\n\n return null;\n}\n","const delimiterChangePattern = /^[^\\s=]+/;\nconst whitespacePattern = /^\\s+/;\n\nexport default function readDelimiterChange(parser) {\n if (!parser.matchString('=')) {\n return null;\n }\n\n const start = parser.pos;\n\n // allow whitespace before new opening delimiter\n parser.sp();\n\n const opening = parser.matchPattern(delimiterChangePattern);\n if (!opening) {\n parser.pos = start;\n return null;\n }\n\n // allow whitespace (in fact, it's necessary...)\n if (!parser.matchPattern(whitespacePattern)) {\n return null;\n }\n\n const closing = parser.matchPattern(delimiterChangePattern);\n if (!closing) {\n parser.pos = start;\n return null;\n }\n\n // allow whitespace before closing '='\n parser.sp();\n\n if (!parser.matchString('=')) {\n parser.pos = start;\n return null;\n }\n\n return [opening, closing];\n}\n","export const TEXT = 1;\nexport const INTERPOLATOR = 2;\nexport const TRIPLE = 3;\nexport const SECTION = 4;\nexport const INVERTED = 5;\nexport const CLOSING = 6;\nexport const ELEMENT = 7;\nexport const PARTIAL = 8;\nexport const COMMENT = 9;\nexport const DELIMCHANGE = 10;\nexport const ANCHOR = 11;\nexport const ATTRIBUTE = 13;\nexport const CLOSING_TAG = 14;\nexport const COMPONENT = 15;\nexport const YIELDER = 16;\nexport const INLINE_PARTIAL = 17;\nexport const DOCTYPE = 18;\nexport const ALIAS = 19;\n\nexport const AWAIT = 55;\n\nexport const NUMBER_LITERAL = 20;\nexport const STRING_LITERAL = 21;\nexport const ARRAY_LITERAL = 22;\nexport const OBJECT_LITERAL = 23;\nexport const BOOLEAN_LITERAL = 24;\nexport const REGEXP_LITERAL = 25;\n\nexport const GLOBAL = 26;\nexport const KEY_VALUE_PAIR = 27;\n\nexport const REFERENCE = 30;\nexport const REFINEMENT = 31;\nexport const MEMBER = 32;\nexport const PREFIX_OPERATOR = 33;\nexport const BRACKETED = 34;\nexport const CONDITIONAL = 35;\nexport const INFIX_OPERATOR = 36;\n\nexport const INVOCATION = 40;\n\nexport const SECTION_IF = 50;\nexport const SECTION_UNLESS = 51;\nexport const SECTION_EACH = 52;\nexport const SECTION_WITH = 53;\nexport const SECTION_IF_WITH = 54;\n\nexport const ELSE = 60;\nexport const ELSEIF = 61;\nexport const THEN = 62;\nexport const CATCH = 63;\n\nexport const EVENT = 70;\nexport const DECORATOR = 71;\nexport const TRANSITION = 72;\nexport const BINDING_FLAG = 73;\nexport const DELEGATE_FLAG = 74;\n","import { warnIfDebug } from 'utils/log';\nimport { create, hasOwn } from 'utils/object';\n\nconst leadingWhitespace = /^\\s+/;\n\nconst ParseError = function(message) {\n this.name = 'ParseError';\n this.message = message;\n try {\n throw new Error(message);\n } catch (e) {\n this.stack = e.stack;\n }\n};\n\nParseError.prototype = Error.prototype;\n\nconst Parser = function(str, options) {\n let item;\n let lineStart = 0;\n\n this.str = str;\n this.options = options || {};\n this.pos = 0;\n\n this.lines = this.str.split('\\n');\n this.lineEnds = this.lines.map(line => {\n const lineEnd = lineStart + line.length + 1; // +1 for the newline\n\n lineStart = lineEnd;\n return lineEnd;\n }, 0);\n\n // Custom init logic\n if (this.init) this.init(str, options);\n\n const items = [];\n\n while (this.pos < this.str.length && (item = this.read())) {\n items.push(item);\n }\n\n this.leftover = this.remaining();\n this.result = this.postProcess ? this.postProcess(items, options) : items;\n};\n\nParser.prototype = {\n read(converters) {\n let i, item;\n\n if (!converters) converters = this.converters;\n\n const pos = this.pos;\n\n const len = converters.length;\n for (i = 0; i < len; i += 1) {\n this.pos = pos; // reset for each attempt\n\n if ((item = converters[i](this))) {\n return item;\n }\n }\n\n return null;\n },\n\n getContextMessage(pos, message) {\n const [lineNum, columnNum] = this.getLinePos(pos);\n if (this.options.contextLines === -1) {\n return [lineNum, columnNum, `${message} at line ${lineNum} character ${columnNum}`];\n }\n\n const line = this.lines[lineNum - 1];\n\n let contextUp = '';\n let contextDown = '';\n if (this.options.contextLines) {\n const start =\n lineNum - 1 - this.options.contextLines < 0 ? 0 : lineNum - 1 - this.options.contextLines;\n contextUp = this.lines\n .slice(start, lineNum - 1 - start)\n .join('\\n')\n .replace(/\\t/g, ' ');\n contextDown = this.lines\n .slice(lineNum, lineNum + this.options.contextLines)\n .join('\\n')\n .replace(/\\t/g, ' ');\n if (contextUp) {\n contextUp += '\\n';\n }\n if (contextDown) {\n contextDown = '\\n' + contextDown;\n }\n }\n\n let numTabs = 0;\n const annotation =\n contextUp +\n line.replace(/\\t/g, (match, char) => {\n if (char < columnNum) {\n numTabs += 1;\n }\n\n return ' ';\n }) +\n '\\n' +\n new Array(columnNum + numTabs).join(' ') +\n '^----' +\n contextDown;\n\n return [\n lineNum,\n columnNum,\n `${message} at line ${lineNum} character ${columnNum}:\\n${annotation}`\n ];\n },\n\n getLinePos(char) {\n let lineNum = 0;\n let lineStart = 0;\n\n while (char >= this.lineEnds[lineNum]) {\n lineStart = this.lineEnds[lineNum];\n lineNum += 1;\n }\n\n const columnNum = char - lineStart;\n return [lineNum + 1, columnNum + 1, char]; // line/col should be one-based, not zero-based!\n },\n\n error(message) {\n const [lineNum, columnNum, msg] = this.getContextMessage(this.pos, message);\n\n const error = new ParseError(msg);\n\n error.line = lineNum;\n error.character = columnNum;\n error.shortMessage = message;\n\n throw error;\n },\n\n matchString(string) {\n if (this.str.substr(this.pos, string.length) === string) {\n this.pos += string.length;\n return string;\n }\n },\n\n matchPattern(pattern) {\n let match;\n\n if ((match = pattern.exec(this.remaining()))) {\n this.pos += match[0].length;\n return match[1] || match[0];\n }\n },\n\n sp() {\n this.matchPattern(leadingWhitespace);\n },\n\n remaining() {\n return this.str.substring(this.pos);\n },\n\n nextChar() {\n return this.str.charAt(this.pos);\n },\n\n warn(message) {\n const msg = this.getContextMessage(this.pos, message)[2];\n\n warnIfDebug(msg);\n }\n};\n\nParser.extend = function(proto) {\n const Parent = this;\n const Child = function(str, options) {\n Parser.call(this, str, options);\n };\n\n Child.prototype = create(Parent.prototype);\n\n for (const key in proto) {\n if (hasOwn(proto, key)) {\n Child.prototype[key] = proto[key];\n }\n }\n\n Child.extend = Parser.extend;\n return Child;\n};\n\nexport default Parser;\n","export const TEMPLATE_VERSION = 4;\n","import { createFunction } from '../Ractive/config/runtime-parser';\nimport { create, keys } from 'utils/object';\n\nconst functions = create(null);\n\nexport default function getFunction(str, i) {\n if (functions[str]) return functions[str];\n return (functions[str] = createFunction(str, i));\n}\n\nexport function addFunctions(template) {\n if (!template) return;\n\n const exp = template.e;\n\n if (!exp) return;\n\n keys(exp).forEach(str => {\n if (functions[str]) return;\n functions[str] = exp[str];\n });\n}\n","export function fromExpression(body, length = 0) {\n const args = new Array(length);\n\n while (length--) {\n args[length] = `_${length}`;\n }\n\n // Functions created directly with new Function() look like this:\n // function anonymous (_0 /**/) { return _0*2 }\n //\n // With this workaround, we get a little more compact:\n // function (_0){return _0*2}\n return new Function([], `return function (${args.join(',')}){return(${body});};`)();\n}\n","import ModelBase, { fireShuffleTasks, maybeBind, shuffle } from './ModelBase';\nimport { capture } from '../global/capture';\nimport { handleChange, marked, markedAll, teardown } from 'shared/methodCallers';\nimport { rebindMatch } from 'shared/rebind';\nimport resolveReference from 'src/view/resolvers/resolveReference';\nimport noop from 'utils/noop';\nimport { hasOwn } from 'utils/object';\n\n// temporary placeholder target for detached implicit links\nexport const Missing = {\n key: '@missing',\n animate: noop,\n applyValue: noop,\n get: noop,\n getKeypath() {\n return this.key;\n },\n joinAll() {\n return this;\n },\n joinKey() {\n return this;\n },\n mark: noop,\n registerLink: noop,\n shufle: noop,\n set: noop,\n unregisterLink: noop\n};\nMissing.parent = Missing;\n\nexport default class LinkModel extends ModelBase {\n constructor(parent, owner, target, key) {\n super(parent);\n\n this.owner = owner;\n this.target = target;\n this.key = key === undefined ? owner.key : key;\n if (owner && owner.isLink) this.sourcePath = `${owner.sourcePath}.${this.key}`;\n\n if (target) target.registerLink(this);\n\n if (parent) this.isReadonly = parent.isReadonly;\n\n this.isLink = true;\n }\n\n animate(from, to, options, interpolator) {\n return this.target.animate(from, to, options, interpolator);\n }\n\n applyValue(value) {\n if (this.boundValue) this.boundValue = null;\n this.target.applyValue(value);\n }\n\n attach(fragment) {\n const model = resolveReference(fragment, this.key);\n if (model) {\n this.relinking(model, false);\n } else {\n // if there is no link available, move everything here to real models\n this.owner.unlink();\n }\n }\n\n detach() {\n this.relinking(Missing, false);\n }\n\n get(shouldCapture, opts = {}) {\n if (shouldCapture) {\n capture(this);\n\n // may need to tell the target to unwrap\n opts.unwrap = 'unwrap' in opts ? opts.unwrap : true;\n }\n\n const bind = 'shouldBind' in opts ? opts.shouldBind : true;\n opts.shouldBind = this.mapping && this.target.parent && this.target.parent.isRoot;\n\n return maybeBind(this, this.target.get(false, opts), bind);\n }\n\n getKeypath(ractive) {\n if (ractive && ractive !== this.root.ractive) return this.target.getKeypath(ractive);\n\n return super.getKeypath(ractive);\n }\n\n handleChange() {\n this.deps.forEach(handleChange);\n this.links.forEach(handleChange);\n this.notifyUpstream();\n }\n\n isDetached() {\n return this.virtual && this.target === Missing;\n }\n\n joinKey(key) {\n // TODO: handle nested links\n if (key === undefined || key === '') return this;\n\n if (!hasOwn(this.childByKey, key)) {\n const child = new LinkModel(this, this, this.target.joinKey(key), key);\n this.children.push(child);\n this.childByKey[key] = child;\n }\n\n return this.childByKey[key];\n }\n\n mark(force) {\n this.target.mark(force);\n }\n\n marked() {\n if (this.boundValue) this.boundValue = null;\n\n this.links.forEach(marked);\n\n this.deps.forEach(handleChange);\n }\n\n markedAll() {\n this.children.forEach(markedAll);\n this.marked();\n }\n\n notifiedUpstream(startPath, root) {\n this.links.forEach(l => l.notifiedUpstream(startPath, this.root));\n this.deps.forEach(handleChange);\n if (startPath && this.rootLink && this.root !== root) {\n const path = startPath.slice(1);\n path.unshift(this.key);\n this.notifyUpstream(path);\n }\n }\n\n relinked() {\n this.target.registerLink(this);\n this.children.forEach(c => c.relinked());\n }\n\n relinking(target, safe) {\n if (this.rootLink && this.sourcePath)\n target = rebindMatch(this.sourcePath, target, this.target);\n if (!target || this.target === target) return;\n\n this.target && this.target.unregisterLink(this);\n\n this.target = target;\n this.children.forEach(c => {\n c.relinking(target.joinKey(c.key), safe);\n });\n\n if (this.rootLink)\n this.addShuffleTask(() => {\n this.relinked();\n if (!safe) {\n this.markedAll();\n this.notifyUpstream();\n }\n });\n }\n\n set(value) {\n if (this.boundValue) this.boundValue = null;\n this.target.set(value);\n }\n\n shuffle(newIndices) {\n // watch for extra shuffles caused by a shuffle in a downstream link\n if (this.shuffling) return;\n\n // let the real model handle firing off shuffles\n if (!this.target.shuffling) {\n if (this.target.shuffle) {\n this.target.shuffle(newIndices);\n } else {\n // the target is a computation, which can't shuffle\n this.target.mark();\n }\n } else {\n shuffle(this, newIndices, true);\n }\n }\n\n source() {\n if (this.target.source) return this.target.source();\n else return this.target;\n }\n\n teardown() {\n if (this._link) this._link.teardown();\n this.target.unregisterLink(this);\n this.children.forEach(teardown);\n }\n}\n\nModelBase.prototype.link = function link(model, keypath, options) {\n const lnk = this._link || new LinkModel(this.parent, this, model, this.key);\n lnk.implicit = options && options.implicit;\n lnk.mapping = options && options.mapping;\n lnk.sourcePath = keypath;\n lnk.rootLink = true;\n if (this._link) this._link.relinking(model, false);\n this.rebind(lnk, this, false);\n fireShuffleTasks();\n\n this._link = lnk;\n lnk.markedAll();\n\n this.notifyUpstream();\n return lnk;\n};\n\nModelBase.prototype.unlink = function unlink() {\n if (this._link) {\n const ln = this._link;\n this._link = undefined;\n ln.rebind(this, ln, false);\n fireShuffleTasks();\n ln.teardown();\n this.notifyUpstream();\n }\n};\n","import { splitKeypath } from './keypaths';\nimport { isString } from 'utils/is';\n\n// this is the dry method of checking to see if a rebind applies to\n// a particular keypath because in some cases, a dep may be bound\n// directly to a particular keypath e.g. foo.bars.0.baz and need\n// to avoid getting kicked to foo.bars.1.baz if foo.bars is unshifted\nexport function rebindMatch(template, next, previous, fragment) {\n const keypath = template.r || template;\n\n // no valid keypath, go with next\n if (!keypath || !isString(keypath)) return next;\n\n // completely contextual ref, go with next\n if (\n keypath === '.' ||\n keypath[0] === '@' ||\n (next || previous).isKey ||\n (next || previous).isKeypath\n )\n return next;\n\n const parts = keypath.split('/');\n let keys = splitKeypath(parts[parts.length - 1]);\n const last = keys[keys.length - 1];\n\n // check the keypath against the model keypath to see if it matches\n let model = next || previous;\n\n // check to see if this was an alias\n if (model && keys.length === 1 && last !== model.key && fragment) {\n keys = findAlias(last, fragment) || keys;\n }\n\n let i = keys.length;\n let match = true;\n let shuffling = false;\n\n while (model && i--) {\n if (model.shuffling) shuffling = true;\n // non-strict comparison to account for indices in keypaths\n if (keys[i] != model.key) match = false;\n model = model.parent;\n }\n\n // next is undefined, but keypath is shuffling and previous matches\n if (!next && match && shuffling) return previous;\n else if (next && !match && shuffling)\n // next is defined, but doesn't match the keypath\n return previous;\n else return next;\n}\n\nfunction findAlias(name, fragment) {\n while (fragment) {\n const z = fragment.aliases;\n if (z && z[name]) {\n const aliases = (fragment.owner.iterations ? fragment.owner : fragment).owner.template.z;\n for (let i = 0; i < aliases.length; i++) {\n if (aliases[i].n === name) {\n const alias = aliases[i].x;\n if (!alias.r) return false;\n const parts = alias.r.split('/');\n return splitKeypath(parts[parts.length - 1]);\n }\n }\n return;\n }\n\n fragment = fragment.componentParent || fragment.parent;\n }\n}\n","export function bind(x) {\n x.bind();\n}\nexport function cancel(x) {\n x.cancel();\n}\nexport function destroyed(x) {\n x.destroyed();\n}\nexport function handleChange(x) {\n x.handleChange();\n}\nexport function mark(x) {\n x.mark();\n}\nexport function markForce(x) {\n x.mark(true);\n}\nexport function marked(x) {\n x.marked();\n}\nexport function markedAll(x) {\n x.markedAll();\n}\nexport function render(x) {\n x.render();\n}\nexport function shuffled(x) {\n x.shuffled();\n}\nexport function teardown(x) {\n x.teardown();\n}\nexport function unbind(x) {\n x.unbind();\n}\nexport function unrender(x) {\n x.unrender();\n}\nexport function unrenderAndDestroy(x) {\n x.unrender(true);\n}\nexport function update(x) {\n x.update();\n}\nexport function toString(x) {\n return x.toString();\n}\nexport function toEscapedString(x) {\n return x.toString(true);\n}\n","const stack = [];\nlet captureGroup;\n\nexport function startCapturing() {\n stack.push((captureGroup = []));\n}\n\nexport function stopCapturing() {\n const dependencies = stack.pop();\n captureGroup = stack[stack.length - 1];\n return dependencies;\n}\n\nexport function capture(model) {\n if (captureGroup) {\n captureGroup.push(model);\n }\n}\n","import { escapeKey, unescapeKey } from 'shared/keypaths';\nimport { addToArray, removeFromArray } from 'utils/array';\nimport { isArray, isObject, isFunction } from 'utils/is';\nimport bind from 'utils/bind';\nimport { create, keys as objectKeys } from 'utils/object';\n\nconst shuffleTasks = { early: [], mark: [] };\nconst registerQueue = { early: [], mark: [] };\nexport const noVirtual = { virtual: false };\n\nexport default class ModelBase {\n constructor(parent) {\n this.deps = [];\n\n this.children = [];\n this.childByKey = {};\n this.links = [];\n\n this.bindings = [];\n\n if (parent) {\n this.parent = parent;\n this.root = parent.root;\n }\n }\n\n addShuffleTask(task, stage = 'early') {\n shuffleTasks[stage].push(task);\n }\n addShuffleRegister(item, stage = 'early') {\n registerQueue[stage].push({ model: this, item });\n }\n\n downstreamChanged() {}\n\n findMatches(keys) {\n const len = keys.length;\n\n let existingMatches = [this];\n let matches;\n let i;\n\n for (i = 0; i < len; i += 1) {\n const key = keys[i];\n\n if (key === '*') {\n matches = [];\n existingMatches.forEach(model => {\n matches.push.apply(matches, model.getValueChildren(model.get()));\n });\n } else {\n matches = existingMatches.map(model => model.joinKey(key));\n }\n\n existingMatches = matches;\n }\n\n return matches;\n }\n\n getKeypath(ractive) {\n if (ractive !== this.ractive && this._link) return this._link.target.getKeypath(ractive);\n\n if (!this.keypath) {\n const parent = this.parent && this.parent.getKeypath(ractive);\n this.keypath = parent\n ? `${this.parent.getKeypath(ractive)}.${escapeKey(this.key)}`\n : escapeKey(this.key);\n }\n\n return this.keypath;\n }\n\n getValueChildren(value) {\n let children;\n if (isArray(value)) {\n children = [];\n if ('length' in this && this.length !== value.length) {\n children.push(this.joinKey('length'));\n }\n value.forEach((m, i) => {\n children.push(this.joinKey(i));\n });\n } else if (isObject(value) || isFunction(value)) {\n children = objectKeys(value).map(key => this.joinKey(key));\n } else if (value != null) {\n children = [];\n }\n\n const computed = this.computed;\n if (computed) {\n children.push.apply(children, objectKeys(computed).map(k => this.joinKey(k)));\n }\n\n return children;\n }\n\n getVirtual(shouldCapture) {\n const value = this.get(shouldCapture, { virtual: false });\n if (isObject(value)) {\n const result = isArray(value) ? [] : create(null);\n\n let keys = objectKeys(value);\n let i = keys.length;\n while (i--) {\n const child = this.childByKey[keys[i]];\n if (!child) result[keys[i]] = value[keys[i]];\n else if (child._link) result[keys[i]] = child._link.getVirtual();\n else result[keys[i]] = child.getVirtual();\n }\n\n i = this.children.length;\n while (i--) {\n const child = this.children[i];\n if (!(child.key in result) && child._link) {\n result[child.key] = child._link.getVirtual();\n }\n }\n\n if (this.computed) {\n keys = objectKeys(this.computed);\n i = keys.length;\n while (i--) {\n result[keys[i]] = this.computed[keys[i]].get();\n }\n }\n\n return result;\n } else return value;\n }\n\n has(key) {\n if (this._link) return this._link.has(key);\n\n const value = this.get(false, noVirtual);\n if (!value) return false;\n\n key = unescapeKey(key);\n if ((isFunction(value) || isObject(value)) && key in value) return true;\n\n let computed = this.computed;\n if (computed && key in this.computed) return true;\n\n computed = this.root.ractive && this.root.ractive.computed;\n if (computed) {\n objectKeys(computed).forEach(k => {\n if (computed[k].pattern && computed[k].pattern.test(this.getKeypath())) return true;\n });\n }\n\n return false;\n }\n\n joinAll(keys, opts) {\n let model = this;\n for (let i = 0; i < keys.length; i += 1) {\n if (\n opts &&\n opts.lastLink === false &&\n i + 1 === keys.length &&\n model.childByKey[keys[i]] &&\n model.childByKey[keys[i]]._link\n )\n return model.childByKey[keys[i]];\n model = model.joinKey(keys[i], opts);\n }\n\n return model;\n }\n\n notifyUpstream(startPath) {\n let parent = this.parent;\n const path = startPath || [this.key];\n while (parent) {\n if (parent.patterns) parent.patterns.forEach(o => o.notify(path.slice()));\n path.unshift(parent.key);\n parent.links.forEach(l => l.notifiedUpstream(path, this.root));\n parent.deps.forEach(d => d.handleChange(path));\n parent.downstreamChanged(startPath);\n parent = parent.parent;\n }\n }\n\n rebind(next, previous, safe) {\n if (this._link) {\n this._link.rebind(next, previous, false);\n }\n\n // tell the deps to move to the new target\n let i = this.deps.length;\n while (i--) {\n if (this.deps[i].rebind) this.deps[i].rebind(next, previous, safe);\n }\n\n i = this.links.length;\n while (i--) {\n const link = this.links[i];\n // only relink the root of the link tree\n if (link.owner && link.owner._link) link.relinking(next, safe);\n }\n\n i = this.children.length;\n while (i--) {\n const child = this.children[i];\n child.rebind(next ? next.joinKey(child.key) : undefined, child, safe);\n }\n\n i = this.bindings.length;\n while (i--) {\n this.bindings[i].rebind(next, previous, safe);\n }\n }\n\n reference() {\n 'refs' in this ? this.refs++ : (this.refs = 1);\n }\n\n register(dep) {\n this.deps.push(dep);\n }\n\n registerLink(link) {\n addToArray(this.links, link);\n }\n\n registerPatternObserver(observer) {\n (this.patterns || (this.patterns = [])).push(observer);\n this.register(observer);\n }\n\n registerTwowayBinding(binding) {\n this.bindings.push(binding);\n }\n\n unreference() {\n if ('refs' in this) this.refs--;\n }\n\n unregister(dep) {\n removeFromArray(this.deps, dep);\n }\n\n unregisterLink(link) {\n removeFromArray(this.links, link);\n }\n\n unregisterPatternObserver(observer) {\n removeFromArray(this.patterns, observer);\n this.unregister(observer);\n }\n\n unregisterTwowayBinding(binding) {\n removeFromArray(this.bindings, binding);\n }\n\n updateFromBindings(cascade) {\n let i = this.bindings.length;\n while (i--) {\n const value = this.bindings[i].getValue();\n if (value !== this.value) this.set(value);\n }\n\n // check for one-way bindings if there are no two-ways\n if (!this.bindings.length) {\n const oneway = findBoundValue(this.deps);\n if (oneway && oneway.value !== this.value) this.set(oneway.value);\n }\n\n if (cascade) {\n this.children.forEach(updateFromBindings);\n this.links.forEach(updateFromBindings);\n if (this._link) this._link.updateFromBindings(cascade);\n }\n }\n}\n\n// TODO: this may be better handled by overriding `get` on models with a parent that isRoot\nexport function maybeBind(model, value, shouldBind) {\n if (shouldBind && isFunction(value) && model.parent && model.parent.isRoot) {\n if (!model.boundValue) {\n model.boundValue = bind(value._r_unbound || value, model.parent.ractive);\n }\n\n return model.boundValue;\n }\n\n return value;\n}\n\nfunction updateFromBindings(model) {\n model.updateFromBindings(true);\n}\n\nexport function findBoundValue(list) {\n let i = list.length;\n while (i--) {\n if (list[i].bound) {\n const owner = list[i].owner;\n if (owner) {\n const value = owner.name === 'checked' ? owner.node.checked : owner.node.value;\n return { value };\n }\n }\n }\n}\n\nexport function fireShuffleTasks(stage) {\n if (!stage) {\n fireShuffleTasks('early');\n fireShuffleTasks('mark');\n } else {\n const tasks = shuffleTasks[stage];\n shuffleTasks[stage] = [];\n let i = tasks.length;\n while (i--) tasks[i]();\n\n const register = registerQueue[stage];\n registerQueue[stage] = [];\n i = register.length;\n while (i--) register[i].model.register(register[i].item);\n }\n}\n\nexport function shuffle(model, newIndices, link, unsafe) {\n model.shuffling = true;\n\n let i = newIndices.length;\n while (i--) {\n const idx = newIndices[i];\n // nothing is actually changing, so move in the index and roll on\n if (i === idx) {\n continue;\n }\n\n // rebind the children on i to idx\n if (i in model.childByKey)\n model.childByKey[i].rebind(\n !~idx ? undefined : model.joinKey(idx),\n model.childByKey[i],\n !unsafe\n );\n }\n\n const upstream = model.source().length !== model.source().value.length;\n\n model.links.forEach(l => l.shuffle(newIndices));\n if (!link) fireShuffleTasks('early');\n\n i = model.deps.length;\n while (i--) {\n if (model.deps[i].shuffle) model.deps[i].shuffle(newIndices);\n }\n\n model[link ? 'marked' : 'mark']();\n if (!link) fireShuffleTasks('mark');\n\n if (upstream) model.notifyUpstream();\n\n model.shuffling = false;\n}\n","const fnBind = Function.prototype.bind;\n\nexport default function bind(fn, context) {\n if (!/this/.test(fn.toString())) return fn;\n\n const bound = fnBind.call(fn, context);\n for (const prop in fn) bound[prop] = fn[prop];\n\n return bound;\n}\n","import { isArray, isString } from './is';\n\nexport function addToArray(array, value) {\n const index = array.indexOf(value);\n\n if (index === -1) {\n array.push(value);\n }\n}\n\nexport function arrayContains(array, value) {\n for (let i = 0, c = array.length; i < c; i++) {\n if (array[i] == value) {\n return true;\n }\n }\n\n return false;\n}\n\nexport function arrayContentsMatch(a, b) {\n let i;\n\n if (!isArray(a) || !isArray(b)) {\n return false;\n }\n\n if (a.length !== b.length) {\n return false;\n }\n\n i = a.length;\n while (i--) {\n if (a[i] !== b[i]) {\n return false;\n }\n }\n\n return true;\n}\n\nexport function ensureArray(x) {\n if (isString(x)) {\n return [x];\n }\n\n if (x === undefined) {\n return [];\n }\n\n return x;\n}\n\nexport function lastItem(array) {\n return array[array.length - 1];\n}\n\nexport function removeFromArray(array, member) {\n if (!array) {\n return;\n }\n\n const index = array.indexOf(member);\n\n if (index !== -1) {\n array.splice(index, 1);\n }\n}\n\nexport function combine(...arrays) {\n const res = arrays.concat.apply([], arrays);\n let i = res.length;\n while (i--) {\n const idx = res.indexOf(res[i]);\n if (~idx && idx < i) res.splice(i, 1);\n }\n\n return res;\n}\n\nexport function toArray(arrayLike) {\n const array = [];\n let i = arrayLike.length;\n while (i--) {\n array[i] = arrayLike[i];\n }\n\n return array;\n}\n\nexport function findMap(array, fn) {\n const len = array.length;\n for (let i = 0; i < len; i++) {\n const result = fn(array[i]);\n if (result) return result;\n }\n}\n\nexport function buildNewIndices(one, two, comparator) {\n let oldArray = one;\n let newArray = two;\n if (comparator) {\n oldArray = oldArray.map(comparator);\n newArray = newArray.map(comparator);\n }\n\n const oldLength = oldArray.length;\n\n const usedIndices = {};\n let firstUnusedIndex = 0;\n\n return oldArray.map(item => {\n let index;\n let start = firstUnusedIndex;\n\n do {\n index = newArray.indexOf(item, start);\n\n if (index === -1) {\n return -1;\n }\n\n start = index + 1;\n } while (usedIndices[index] === true && start < oldLength);\n\n // keep track of the first unused index, so we don't search\n // the whole of newArray for each item in oldArray unnecessarily\n if (index === firstUnusedIndex) {\n firstUnusedIndex += 1;\n }\n // allow next instance of next \"equal\" to be found item\n usedIndices[index] = true;\n return index;\n });\n}\n","import { isString } from 'utils/is';\n\nconst refPattern = /\\[\\s*(\\*|[0-9]|[1-9][0-9]+)\\s*\\]/g;\nconst splitPattern = /([^\\\\](?:\\\\\\\\)*)\\./;\nconst escapeKeyPattern = /\\\\|\\./g;\nconst unescapeKeyPattern = /((?:\\\\)+)\\1|\\\\(\\.)/g;\n\nexport function escapeKey(key) {\n if (isString(key)) {\n return key.replace(escapeKeyPattern, '\\\\$&');\n }\n\n return key;\n}\n\nexport function normalise(ref) {\n return ref ? ref.replace(refPattern, '.$1') : '';\n}\n\nexport function splitKeypath(keypath) {\n const result = [];\n let match;\n\n keypath = normalise(keypath);\n\n while ((match = splitPattern.exec(keypath))) {\n const index = match.index + match[1].length;\n result.push(keypath.substr(0, index));\n keypath = keypath.substr(index + 1);\n }\n\n result.push(keypath);\n\n return result;\n}\n\nexport function unescapeKey(key) {\n if (isString(key)) {\n return key.replace(unescapeKeyPattern, '$1$2');\n }\n\n return key;\n}\n","import { isArray, isObject, isNumeric } from 'utils/is';\nimport interpolate from 'shared/interpolate';\nimport { hasOwn } from 'utils/object';\n\nconst interpolators = {\n number(from, to) {\n if (!isNumeric(from) || !isNumeric(to)) {\n return null;\n }\n\n from = +from;\n to = +to;\n\n const delta = to - from;\n\n if (!delta) {\n return function() {\n return from;\n };\n }\n\n return function(t) {\n return from + t * delta;\n };\n },\n\n array(from, to) {\n let len, i;\n\n if (!isArray(from) || !isArray(to)) {\n return null;\n }\n\n const intermediate = [];\n const interpolators = [];\n\n i = len = Math.min(from.length, to.length);\n while (i--) {\n interpolators[i] = interpolate(from[i], to[i]);\n }\n\n // surplus values - don't interpolate, but don't exclude them either\n for (i = len; i < from.length; i += 1) {\n intermediate[i] = from[i];\n }\n\n for (i = len; i < to.length; i += 1) {\n intermediate[i] = to[i];\n }\n\n return function(t) {\n let i = len;\n\n while (i--) {\n intermediate[i] = interpolators[i](t);\n }\n\n return intermediate;\n };\n },\n\n object(from, to) {\n if (!isObject(from) || !isObject(to)) {\n return null;\n }\n\n const properties = [];\n const intermediate = {};\n const interpolators = {};\n\n for (const prop in from) {\n if (hasOwn(from, prop)) {\n if (hasOwn(to, prop)) {\n properties.push(prop);\n interpolators[prop] = interpolate(from[prop], to[prop]) || (() => to[prop]);\n } else {\n intermediate[prop] = from[prop];\n }\n }\n }\n\n for (const prop in to) {\n if (hasOwn(to, prop) && !hasOwn(from, prop)) {\n intermediate[prop] = to[prop];\n }\n }\n\n const len = properties.length;\n\n return function(t) {\n let i = len;\n\n while (i--) {\n const prop = properties[i];\n\n intermediate[prop] = interpolators[prop](t);\n }\n\n return intermediate;\n };\n }\n};\n\nexport default interpolators;\n","import { fatal } from 'utils/log';\nimport { missingPlugin } from 'config/errors';\nimport interpolators from '../Ractive/static/interpolators';\nimport { findInViewHierarchy } from './registry';\n\nexport default function interpolate(from, to, ractive, type) {\n if (from === to) return null;\n\n if (type) {\n const interpol = findInViewHierarchy('interpolators', ractive, type);\n if (interpol) return interpol(from, to) || null;\n\n fatal(missingPlugin(type, 'interpolator'));\n }\n\n return (\n interpolators.number(from, to) ||\n interpolators.array(from, to) ||\n interpolators.object(from, to) ||\n null\n );\n}\n","export function findInViewHierarchy(registryName, ractive, name) {\n const instance = findInstance(registryName, ractive, name);\n return instance ? instance[registryName][name] : null;\n}\n\nexport function findInstance(registryName, ractive, name) {\n while (ractive) {\n if (name in ractive[registryName]) {\n return ractive;\n }\n\n if (ractive.isolated) {\n return null;\n }\n\n ractive = ractive.parent;\n }\n}\n","// Error messages that are used (or could be) in multiple places\nexport const badArguments = 'Bad arguments';\nexport const noRegistryFunctionReturn =\n 'A function was specified for \"%s\" %s, but no %s was returned';\nexport const missingPlugin = (name, type) =>\n `Missing \"${name}\" ${type} plugin. You may need to download a plugin via http://ractive.js.org/integrations/#${type}s`;\n","/* global console */\n/* eslint no-console:\"off\" */\n\nimport { hasConsole } from '../config/environment';\nimport Ractive from '../Ractive';\nimport noop from './noop';\nimport { isObjectType } from 'utils/is';\n\nconst alreadyWarned = {};\nlet log, printWarning, welcome;\n\nif (hasConsole) {\n const welcomeIntro = [\n `%cRactive.js %cBUILD_PLACEHOLDER_VERSION %cin debug mode, %cmore...`,\n 'color: rgb(114, 157, 52); font-weight: normal;',\n 'color: rgb(85, 85, 85); font-weight: normal;',\n 'color: rgb(85, 85, 85); font-weight: normal;',\n 'color: rgb(82, 140, 224); font-weight: normal; text-decoration: underline;'\n ];\n const welcomeMessage = `You're running Ractive BUILD_PLACEHOLDER_VERSION in debug mode - messages will be printed to the console to help you fix problems and optimise your application.\n\nTo disable debug mode, add this line at the start of your app:\n Ractive.DEBUG = false;\n\nTo disable debug mode when your app is minified, add this snippet:\n Ractive.DEBUG = /unminified/.test(function(){/*unminified*/});\n\nGet help and support:\n http://ractive.js.org\n http://stackoverflow.com/questions/tagged/ractivejs\n http://groups.google.com/forum/#!forum/ractive-js\n http://twitter.com/ractivejs\n\nFound a bug? Raise an issue:\n https://github.com/ractivejs/ractive/issues\n\n`;\n\n welcome = () => {\n if (Ractive.WELCOME_MESSAGE === false) {\n welcome = noop;\n return;\n }\n const message = 'WELCOME_MESSAGE' in Ractive ? Ractive.WELCOME_MESSAGE : welcomeMessage;\n const hasGroup = !!console.groupCollapsed;\n if (hasGroup) console.groupCollapsed.apply(console, welcomeIntro);\n console.log(message);\n if (hasGroup) {\n console.groupEnd(welcomeIntro);\n }\n\n welcome = noop;\n };\n\n printWarning = (message, args) => {\n welcome();\n\n // extract information about the instance this message pertains to, if applicable\n if (isObjectType(args[args.length - 1])) {\n const options = args.pop();\n const ractive = options ? options.ractive : null;\n\n if (ractive) {\n // if this is an instance of a component that we know the name of, add\n // it to the message\n let name;\n if (ractive.component && (name = ractive.component.name)) {\n message = `<${name}> ${message}`;\n }\n\n let node;\n if (\n (node =\n options.node || (ractive.fragment && ractive.fragment.rendered && ractive.find('*')))\n ) {\n args.push(node);\n }\n }\n }\n\n console.warn.apply(\n console,\n ['%cRactive.js: %c' + message, 'color: rgb(114, 157, 52);', 'color: rgb(85, 85, 85);'].concat(\n args\n )\n );\n };\n\n log = function() {\n console.log.apply(console, arguments);\n };\n} else {\n printWarning = log = welcome = noop;\n}\n\nfunction format(message, args) {\n return message.replace(/%s/g, () => args.shift());\n}\n\nfunction fatal(message, ...args) {\n message = format(message, args);\n throw new Error(message);\n}\n\nfunction logIfDebug() {\n if (Ractive.DEBUG) {\n log.apply(null, arguments);\n }\n}\n\nfunction warn(message, ...args) {\n message = format(message, args);\n printWarning(message, args);\n}\n\nfunction warnOnce(message, ...args) {\n message = format(message, args);\n\n if (alreadyWarned[message]) {\n return;\n }\n\n alreadyWarned[message] = true;\n printWarning(message, args);\n}\n\nfunction warnIfDebug() {\n if (Ractive.DEBUG) {\n warn.apply(null, arguments);\n }\n}\n\nfunction warnOnceIfDebug() {\n if (Ractive.DEBUG) {\n warnOnce.apply(null, arguments);\n }\n}\n\nexport { fatal, log, logIfDebug, warn, warnOnce, warnIfDebug, warnOnceIfDebug, welcome };\n","export default function() {}\n","/* eslint no-console:\"off\" */\nimport { isFunction } from 'utils/is';\n\nconst win = typeof window !== 'undefined' ? window : null;\nconst doc = win ? document : null;\nconst isClient = !!doc;\nconst hasConsole =\n typeof console !== 'undefined' && isFunction(console.warn) && isFunction(console.warn.apply);\n\nconst svg = doc\n ? doc.implementation.hasFeature('http://www.w3.org/TR/SVG11/feature#BasicStructure', '1.1')\n : false;\n\nconst vendors = ['o', 'ms', 'moz', 'webkit'];\n\nexport { win, doc, isClient, hasConsole, svg, vendors };\n","// These are a subset of the easing equations found at\n// https://raw.github.com/danro/easing-js - license info\n// follows:\n\n// --------------------------------------------------\n// easing.js v0.5.4\n// Generic set of easing functions with AMD support\n// https://github.com/danro/easing-js\n// This code may be freely distributed under the MIT license\n// http://danro.mit-license.org/\n// --------------------------------------------------\n// All functions adapted from Thomas Fuchs & Jeremy Kahn\n// Easing Equations (c) 2003 Robert Penner, BSD license\n// https://raw.github.com/danro/easing-js/master/LICENSE\n// --------------------------------------------------\n\n// In that library, the functions named easeIn, easeOut, and\n// easeInOut below are named easeInCubic, easeOutCubic, and\n// (you guessed it) easeInOutCubic.\n//\n// You can add additional easing functions to this list, and they\n// will be globally available.\n\nexport default {\n linear(pos) {\n return pos;\n },\n easeIn(pos) {\n /* istanbul ignore next */\n return Math.pow(pos, 3);\n },\n easeOut(pos) {\n return Math.pow(pos - 1, 3) + 1;\n },\n easeInOut(pos) {\n /* istanbul ignore next */\n if ((pos /= 0.5) < 1) {\n return 0.5 * Math.pow(pos, 3);\n }\n /* istanbul ignore next */\n return 0.5 * (Math.pow(pos - 2, 3) + 2);\n }\n};\n","import { create } from 'utils/object';\n\nexport default {\n // render placement:\n el: void 0,\n append: false,\n delegate: true,\n enhance: false,\n\n // template:\n template: null,\n\n // parse:\n allowExpressions: true,\n delimiters: ['{{', '}}'],\n tripleDelimiters: ['{{{', '}}}'],\n staticDelimiters: ['[[', ']]'],\n staticTripleDelimiters: ['[[[', ']]]'],\n csp: true,\n interpolate: false,\n preserveWhitespace: false,\n sanitize: false,\n stripComments: true,\n contextLines: 0,\n\n // data & binding:\n data: create(null),\n helpers: create(null),\n computed: create(null),\n syncComputedChildren: false,\n resolveInstanceMembers: false,\n warnAboutAmbiguity: false,\n adapt: [],\n isolated: true,\n twoway: true,\n lazy: false,\n\n // transitions:\n noIntro: false,\n noOutro: false,\n transitionsEnabled: true,\n complete: void 0,\n nestedTransitions: true,\n\n // css:\n css: null,\n noCssTransform: false\n};\n","/* istanbul ignore if */\nif (\n typeof window !== 'undefined' &&\n !(window.requestAnimationFrame && window.cancelAnimationFrame)\n) {\n let lastTime = 0;\n window.requestAnimationFrame = function(callback) {\n const currentTime = Date.now();\n const timeToNextCall = Math.max(0, 16 - (currentTime - lastTime));\n const id = window.setTimeout(() => {\n callback(currentTime + timeToNextCall);\n }, timeToNextCall);\n lastTime = currentTime + timeToNextCall;\n return id;\n };\n window.cancelAnimationFrame = function(id) {\n clearTimeout(id);\n };\n}\n","import { isFunction, isObjectType } from 'utils/is';\n\n/* istanbul ignore if */\nif (typeof window !== 'undefined' && !window.Promise) {\n const PENDING = {};\n const FULFILLED = {};\n const REJECTED = {};\n\n const Promise = (window.Promise = function(callback) {\n const fulfilledHandlers = [];\n const rejectedHandlers = [];\n let state = PENDING;\n let result;\n let dispatchHandlers;\n\n const makeResolver = newState => {\n return function(value) {\n if (state !== PENDING) return;\n result = value;\n state = newState;\n dispatchHandlers = makeDispatcher(\n state === FULFILLED ? fulfilledHandlers : rejectedHandlers,\n result\n );\n wait(dispatchHandlers);\n };\n };\n\n const fulfill = makeResolver(FULFILLED);\n const reject = makeResolver(REJECTED);\n\n try {\n callback(fulfill, reject);\n } catch (err) {\n reject(err);\n }\n\n return {\n // `then()` returns a Promise - 2.2.7\n then(onFulfilled, onRejected) {\n const promise2 = new Promise((fulfill, reject) => {\n const processResolutionHandler = (handler, handlers, forward) => {\n if (isFunction(handler)) {\n handlers.push(p1result => {\n try {\n resolve(promise2, handler(p1result), fulfill, reject);\n } catch (err) {\n reject(err);\n }\n });\n } else {\n handlers.push(forward);\n }\n };\n\n processResolutionHandler(onFulfilled, fulfilledHandlers, fulfill);\n processResolutionHandler(onRejected, rejectedHandlers, reject);\n\n if (state !== PENDING) {\n wait(dispatchHandlers);\n }\n });\n return promise2;\n },\n catch(onRejected) {\n return this.then(null, onRejected);\n }\n };\n });\n\n Promise.all = function(promises) {\n return new Promise((fulfil, reject) => {\n const result = [];\n let pending;\n let i;\n\n if (!promises.length) {\n fulfil(result);\n return;\n }\n\n const processPromise = (promise, i) => {\n if (promise && isFunction(promise.then)) {\n promise.then(value => {\n result[i] = value;\n --pending || fulfil(result);\n }, reject);\n } else {\n result[i] = promise;\n --pending || fulfil(result);\n }\n };\n\n pending = i = promises.length;\n\n while (i--) {\n processPromise(promises[i], i);\n }\n });\n };\n\n Promise.resolve = function(value) {\n return new Promise(fulfill => {\n fulfill(value);\n });\n };\n\n Promise.reject = function(reason) {\n return new Promise((fulfill, reject) => {\n reject(reason);\n });\n };\n\n // TODO use MutationObservers or something to simulate setImmediate\n const wait = function(callback) {\n setTimeout(callback, 0);\n };\n\n const makeDispatcher = function(handlers, result) {\n return function() {\n for (let handler; (handler = handlers.shift()); ) {\n handler(result);\n }\n };\n };\n\n const resolve = function(promise, x, fulfil, reject) {\n let then;\n if (x === promise) {\n throw new TypeError(`A promise's fulfillment handler cannot return the same promise`);\n }\n if (x instanceof Promise) {\n x.then(fulfil, reject);\n } else if (x && (isObjectType(x) || isFunction(x))) {\n try {\n then = x.then;\n } catch (e) {\n reject(e);\n return;\n }\n if (isFunction(then)) {\n let called;\n\n const resolvePromise = function(y) {\n if (called) return;\n called = true;\n resolve(promise, y, fulfil, reject);\n };\n const rejectPromise = function(r) {\n if (called) return;\n called = true;\n reject(r);\n };\n\n try {\n then.call(x, resolvePromise, rejectPromise);\n } catch (e) {\n if (!called) {\n reject(e);\n called = true;\n return;\n }\n }\n } else {\n fulfil(x);\n }\n } else {\n fulfil(x);\n }\n };\n}\n","/* istanbul ignore if */\nif (typeof window !== 'undefined' && window.performance && !window.performance.now) {\n window.performance = window.performance || {};\n\n const nowOffset = Date.now();\n\n window.performance.now = function() {\n return Date.now() - nowOffset;\n };\n}\n","// NOTE: Node doesn't exist in IE8. Nothing can be done.\n/* istanbul ignore if */\nif (\n typeof window !== 'undefined' &&\n window.Node &&\n window.Node.prototype &&\n !window.Node.prototype.contains\n) {\n Node.prototype.contains = function(node) {\n if (!node) throw new TypeError('node required');\n\n do {\n if (this === node) return true;\n } while ((node = node && node.parentNode));\n\n return false;\n };\n}\n","import { hasOwn, defineProperty } from 'utils/object';\nimport { isFunction } from 'utils/is';\n\n/* istanbul ignore if */\nif (!Array.prototype.find) {\n defineProperty(Array.prototype, 'find', {\n value(callback, thisArg) {\n if (this === null || this === undefined)\n throw new TypeError('Array.prototype.find called on null or undefined');\n\n if (!isFunction(callback)) throw new TypeError(`${callback} is not a function`);\n\n const array = Object(this);\n const arrayLength = array.length >>> 0;\n\n for (let index = 0; index < arrayLength; index++) {\n if (!hasOwn(array, index)) continue;\n if (!callback.call(thisArg, array[index], index, array)) continue;\n return array[index];\n }\n\n return undefined;\n },\n configurable: true,\n writable: true\n });\n}\n","const toString = Object.prototype.toString;\nconst arrayLikePattern = /^\\[object (?:Array|FileList)\\]$/;\n\nexport function isArrayLike(obj) {\n return arrayLikePattern.test(toString.call(obj));\n}\n\nexport const isArray = Array.isArray;\n\nexport function isEqual(a, b) {\n if (a === null && b === null) {\n return true;\n }\n\n if (isObjectType(a) || isObjectType(b)) {\n return false;\n }\n\n return a === b;\n}\n\n// http://stackoverflow.com/questions/18082/validate-numbers-in-javascript-isnumeric\nexport function isNumeric(thing) {\n return !isNaN(parseFloat(thing)) && isFinite(thing);\n}\n\nexport function isObject(thing) {\n return thing && toString.call(thing) === '[object Object]';\n}\n\nexport function isObjectLike(thing) {\n return !!(thing && (isObjectType(thing) || isFunction(thing)));\n}\n\nexport function isObjectType(thing) {\n return typeof thing === 'object';\n}\n\nexport function isFunction(thing) {\n return typeof thing === 'function';\n}\n\nexport function isString(thing) {\n return typeof thing === 'string';\n}\n\nexport function isNumber(thing) {\n return typeof thing === 'number';\n}\n","export function hasOwn(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nexport function fillGaps(target, ...sources) {\n for (let i = 0; i < sources.length; i++) {\n const source = sources[i];\n for (const key in source) {\n // Source can be a prototype-less object.\n if (key in target || !hasOwn(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\nexport function toPairs(obj = {}) {\n const pairs = [];\n for (const key in obj) {\n // Source can be a prototype-less object.\n if (!hasOwn(obj, key)) continue;\n pairs.push([key, obj[key]]);\n }\n return pairs;\n}\n\nconst obj = Object;\n\nexport const assign = obj.assign;\n\nexport const create = obj.create;\n\nexport const defineProperty = obj.defineProperty;\n\nexport const defineProperties = obj.defineProperties;\n\nexport const keys = obj.keys;\n","/* istanbul ignore if */\nif (!Object.assign) {\n Object.assign = function(target, ...sources) {\n if (target == null) throw new TypeError('Cannot convert undefined or null to object');\n\n const to = Object(target);\n const sourcesLength = sources.length;\n\n for (let index = 0; index < sourcesLength; index++) {\n const nextSource = sources[index];\n for (const nextKey in nextSource) {\n if (!Object.prototype.hasOwnProperty.call(nextSource, nextKey)) continue;\n to[nextKey] = nextSource[nextKey];\n }\n }\n\n return to;\n };\n}\n"],"names":["sharedData","use","splitKeypath","getContext","proto","opts","const","let","splitKeypathI","styleSet","this","SharedModel","updateModel","update","unrender","transition","toHTML","toCSS","toggle","teardown","subtract","set","resetTemplate","reset","render","once","on","off","insert","get","fire","findParent","findContainer","findComponent","findAllComponents","findAll","find","detach","compute","animate","add","collect","createFragment","toString","super","html","svg","prefix","createTransitions","linear","TRANSITION","testStyle","i","fragment","numberPattern","specials","onlyWhitespace","xmlns","name","isBindableByChecked","isBindableByName","getValue","push","callRender","bind","registryNames","SharedBase","div","keys","objectKeys","type","prototype","shared","model","wrapPrototype","RactiveProto","validate","combine","transformCSS","trim","callback","updateOld","star","staticContext","build","sharedSet","protoUpdate","protoAnimate","promise","result","easing","repeater","context","expr","readElement","readMustacheComment","leadingWhitespace","s","aliases","readRegexpLiteral","readConditional","readLogicalOr","namePattern","readNumberLiteral","getKeyValuePair","stringMiddlePattern","child","prop","resolve","Promise"],"mappings":"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ACT,IAAI,EAAE,GAAG;EACT,KAAK,EAAE,GAAG;EACV,GAAG,EAAE,GAAG;EACR,GAAG,EAAE,GAAG;EACR,GAAG,EAAE,GAAG;EACR,IAAI,EAAE,GAAG;EACT,GAAG,EAAE,GAAG;EACR,MAAM,EAAE,GAAG;EACX,IAAI,EAAE,GAAG;EACT,IAAI,EAAE,GAAG;EACT,KAAK,EAAE,GAAG;EACV,KAAK,EAAE,GAAG;EACV,IAAI,EAAE,GAAG;EACT,MAAM,EAAE,GAAG;EACX,KAAK,EAAE,GAAG;EACV,IAAI,EAAE,GAAG;EACT,IAAI,EAAE,GAAG;EACT,KAAK,EAAE,GAAG;EACV,MAAM,EAAE,GAAG;EACX,MAAM,EAAE,GAAG;EACX,MAAM,EAAE,GAAG;EACX,MAAM,EAAE,GAAG;EACX,MAAM,EAAE,GAAG;EACX,MAAM,EAAE,GAAG;EACX,KAAK,EAAE,GAAG;EACV,MAAM,EAAE,GAAG;EACX,IAAI,EAAE,GAAG;EACT,KAAK,EAAE,GAAG;EACV,KAAK,EAAE,GAAG;EACV,MAAM,EAAE,GAAG;EACX,MAAM,EAAE,GAAG;EACX,MAAM,EAAE,GAAG;EACX,KAAK,EAAE,GAAG;EACV,IAAI,EAAE,GAAG;EACT,MAAM,EAAE,GAAG;EACX,MAAM,EAAE,GAAG;EACX,KAAK,EAAE,GAAG;EACV,IAAI,EAAE,GAAG;EACT,GAAG,EAAE,GAAG;EACR,MAAM,EAAE,GAAG;EACX,MAAM,EAAE,GAAG;EACX,MAAM,EAAE,GAAG;EACX,KAAK,EAAE,GAAG;EACV,MAAM,EAAE,GAAG;EACX,IAAI,EAAE,GAAG;EACT,KAAK,EAAE,GAAG;EACV,MAAM,EAAE,GAAG;EACX,MAAM,EAAE,GAAG;EACX,MAAM,EAAE,GAAG;EACX,KAAK,EAAE,GAAG;EACV,IAAI,EAAE,GAAG;EACT,MAAM,EAAE,GAAG;EACX,KAAK,EAAE,GAAG;EACV,KAAK,EAAE,GAAG;EACV,MAAM,EAAE,GAAG;EACX,MAAM,EAAE,GAAG;EACX,KAAK,EAAE,GAAG;EACV,MAAM,EAAE,GAAG;EACX,IAAI,EAAE,GAAG;EACT,KAAK,EAAE,GAAG;E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"}