{"version":3,"names":["DefaultMatcher","IdentityMatcher","ShallowMatcher","DeepMatcher","BaseActiveExpression","__SystemJSRewritingHack","HACK","DebugConceptType","MATCHER_MAP","NO_VALUE_YET","aeCounter","identitiySymbolProvider","aexpr","func","args","_export","setters","_utilsEventTargetJs","EventTarget","default","_utilsAnnotationsJs","Annotations","_eventsEventJs","Event","EventTypes","_utilsEqualityJs","shallowEqualsArray","shallowEqualsSet","shallowEqualsMap","shallowEquals","deepEquals","_utils","isString","clone","cloneDeep","pluralize","_srcClientPreferencesJs","Preferences","_srcExternalSourceMapMinJs","sourcemap","_srcBabylonianProgrammingEditorUtilsTrackerJs","IdentitySymbolProvider","_srcClientReactiveActiveExpressionAeRegistryJs","AExprRegistry","LoggingModes","execute","_recorder_","_src_client_reactive_active_expression_active_expression_js","Object","defineProperty","get","set","thisIsVererySecretVariableName","enumerable","configurable","window","__compareAExprResults__","compare","lastResult","newResult","Array","isArray","Set","Map","Number","isNaN","store","result","prototype","slice","call","AE","SIGNAL","DB","ILA","ROQ","Symbol","constructor","params","match","errorMode","disabled","location","sourceCode","isDataBinding","dataBindingContext","dataBindingIdentifier","isILA","ila","id","loggingMode","DEFAULT","completeHistory","_eventTarget","_isEnabled","setupMatcher","callbacks","_isDisposed","_shouldDisposeOnLastCallbackDetached","_annotations","meta","identifierSymbol","next","conceptType","conceptInfo","context","identifier","initializeEvents","addToRegistry","_initLastValue","logEvent","CREATED","stack","lively","value","lastValue","updateLastValue","isError","evaluateToCurrentValue","storeResult","addAExpr","hasCallbacks","length","getCurrentValue","addToEvaluationStack","returnValue","popEvaluationStack","e","eventPromise","EVALFAIL","error","on","type","callback","addEventListener","off","removeEventListener","emit","dispatchEvent","getEventListeners","onChange","originalSource","push","CBADDED","updateAExpr","offChange","index","indexOf","splice","CBREMOVED","dispose","checkAndNotify","infoPromises","callbackStackTop","callbackStack","then","event","Promise","all","triggers","parentAE","ae","compareResults","notify","expr","findCallee","frames","frame","file","includes","getSourceLocBabelStyle","undefined","extractSourceMap","code","m","sourceMappingURL","fetch","json","extractSourceURL","matchConfig","has","Error","matcher","hasOwnProperty","forEach","addToCallbackStack","popCallbackStack","updateDependencies","setExpression","checkImmediately","Function","TypeError","onBecomeTrue","bool","onBecomeFalse","dataflow","orignalSource","removeAllCallbacks","removeAExpr","DISPOSED","isDisposed","disposeOnLastCallbackDetached","gotDisposed","_disposedPromise","resolve","enable","check","disable","isEnabled","isDisabled","shouldLogEvents","shouldLog","start","line","ALL","toggleLogging","setLogging","NONE","logState","events","annotation","add","getSymbol","getLocationText","substring","lastIndexOf","getIdentifier","getDataBinding","getLayer","name","getSourceCode","getName","getType","getTypeShort","cutoff","oneLine","startsWith","replace","trim","supportsDependencies","markTimestamp","reason","CUSTOM","addEvent","overallID","sort","e1","e2","shift","overrideTimestamp","isMeta","ensureResolved","migrateEvents","other","otherEvents","unshift","nextValue","values","valueQueue","gotNewValue","waitForValue","resetWaitForValue","v","temp","asyncIterator","done","race"],"sources":["active-expression.js"],"sourcesContent":["import EventTarget from '../utils/event-target.js';\nimport Annotations from '../utils/annotations.js';\nimport { default as Event, EventTypes } from './events/event.js';\nimport { shallowEqualsArray, shallowEqualsSet, shallowEqualsMap, shallowEquals, deepEquals } from '../utils/equality.js';\nimport { isString, clone, cloneDeep, pluralize } from 'utils';\nimport Preferences from 'src/client/preferences.js';\n\nimport sourcemap from 'src/external/source-map.min.js';\nimport { IdentitySymbolProvider } from 'src/babylonian-programming-editor/utils/tracker.js';\n\nimport { AExprRegistry, LoggingModes } from 'src/client/reactive/active-expression/ae-registry.js';\n\n// #TODO: this is use to keep SystemJS from messing up scoping\n// (BaseActiveExpression would not be defined in aexpr)\nconst HACK = {};\n\nwindow.__compareAExprResults__ = false;\n/*MD # Equality Matchers MD*/\nclass DefaultMatcher {\n  static compare(lastResult, newResult) {\n    // array\n    if (Array.isArray(lastResult) && Array.isArray(newResult)) {\n      return shallowEqualsArray(lastResult, newResult);\n    }\n\n    // set\n    if (lastResult instanceof Set && newResult instanceof Set) {\n      return shallowEqualsSet(lastResult, newResult);\n    }\n\n    // map\n    if (lastResult instanceof Map && newResult instanceof Map) {\n      return shallowEqualsMap(lastResult, newResult);\n    }\n\n    // Workaround for NaN === NaN -> false\n    if (Number.isNaN(lastResult) && Number.isNaN(newResult)) {\n      return true;\n    }\n\n    return lastResult === newResult;\n  }\n\n  static store(result) {\n    // array\n    if (Array.isArray(result)) {\n      return Array.prototype.slice.call(result);\n    }\n\n    // set\n    if (result instanceof Set) {\n      return new Set(result);\n    }\n\n    // map\n    if (result instanceof Map) {\n      return new Map(result);\n    }\n\n    return result;\n  }\n}\n\nclass IdentityMatcher {\n  static compare(lastResult, newResult) {\n    return lastResult === newResult;\n  }\n\n  static store(result) {\n    return result;\n  }\n}\n\nclass ShallowMatcher {\n  static compare(lastResult, newResult) {\n    // array\n    if (Array.isArray(lastResult) && Array.isArray(newResult)) {\n      return shallowEqualsArray(lastResult, newResult);\n    }\n\n    // set\n    if (lastResult instanceof Set && newResult instanceof Set) {\n      return shallowEqualsSet(lastResult, newResult);\n    }\n\n    // map\n    if (lastResult instanceof Map && newResult instanceof Map) {\n      return shallowEqualsMap(lastResult, newResult);\n    }\n\n    // Workaround for NaN === NaN -> false\n    if (Number.isNaN(lastResult) && Number.isNaN(newResult)) {\n      return true;\n    }\n\n    return shallowEquals(lastResult, newResult);\n  }\n\n  static store(result) {\n    return clone.call(result);\n  }\n}\n\nclass DeepMatcher {\n  static compare(lastResult, newResult) {\n    return deepEquals(lastResult, newResult);\n  }\n\n  static store(result) {\n    return cloneDeep.call(result);\n  }\n}\n\nexport const DebugConceptType = {\n  AE: \"AE\",\n  SIGNAL: \"Signal\",\n  DB: \"DB\",\n  ILA: \"ILA\",\n  ROQ: \"ROQ\",\n}\n\nconst MATCHER_MAP = new Map([['default', DefaultMatcher], ['identity', IdentityMatcher], ['shallow', ShallowMatcher], ['deep', DeepMatcher]]);\n\nconst NO_VALUE_YET = Symbol('No value yet');\n\nlet aeCounter = 0;\n\nconst identitiySymbolProvider = new IdentitySymbolProvider();\n/*MD # ACTIVE EXPRESSIONS MD*/\nexport class BaseActiveExpression {\n\n  /**\n   *\n   * @param func (Function) the expression to be observed\n   * #TODO: incorrect parameter list, how to specify spread arguments in jsdoc?\n   * @param ...params (Objects) the instances bound as parameters to the expression\n   */\n  constructor(func, {\n    params = [], match,\n    errorMode = 'silent',\n    disabled = false,\n    location,\n    sourceCode,\n    isDataBinding,\n    dataBindingContext,\n    dataBindingIdentifier,\n    isILA,\n    ila\n\n  } = {}) {\n    this.id = aeCounter;\n    aeCounter++;\n    this.loggingMode = LoggingModes.DEFAULT;\n    this.completeHistory = true;\n    \n    this._eventTarget = new EventTarget(), this.func = func;\n    this.params = params;\n    this.errorMode = errorMode;\n    this._isEnabled = !disabled;\n    this.setupMatcher(match);\n    this.callbacks = [];\n\n    this._isDisposed = false;\n    this._shouldDisposeOnLastCallbackDetached = false;\n\n    this._annotations = new Annotations();\n    if (location) {\n      this.meta({ location });\n    }\n    \n    this.identifierSymbol = identitiySymbolProvider.next();\n    if (sourceCode) {\n      this.meta({ sourceCode });\n    }\n\n    if(isDataBinding) {\n      this.meta({ conceptType: DebugConceptType.DB });\n      this.meta({ conceptInfo: {context: dataBindingContext, identifier: dataBindingIdentifier}});      \n    } else if (isILA) {\n      this.meta({ conceptType: DebugConceptType.ILA });\n      this.meta({ conceptInfo: ila});      \n    } else {      \n      this.meta({ conceptType: DebugConceptType.AE });\n    }\n\n    this.initializeEvents();\n\n    this.addToRegistry();\n    this._initLastValue();\n    this.logEvent(EventTypes.CREATED, { stack: lively.stack(), value: this.lastValue });\n  }\n\n  _initLastValue() {\n    this.lastValue = NO_VALUE_YET;\n    this.updateLastValue();\n  }\n\n  updateLastValue() {\n    const { value, isError } = this.evaluateToCurrentValue();\n    if (!isError) {\n      this.storeResult(value);\n    }\n  }\n\n  addToRegistry() {\n    AExprRegistry.addAExpr(this);\n  }\n\n  hasCallbacks() {\n    return this.callbacks.length !== 0;\n  }\n\n  /**\n   * Executes the encapsulated expression with the given parameters.\n   * aliases with 'now' (#TODO: caution, consider ambigous terminology: 'now' as in 'give me the value' or as in 'dataflow'?)\n   * @private\n   * @returns {*} the current value of the expression\n   */\n  getCurrentValue() {\n    AExprRegistry.addToEvaluationStack(this);\n    let returnValue;\n    try {\n      returnValue = this.func(...this.params);\n    } finally {\n      AExprRegistry.popEvaluationStack();\n    }\n    return returnValue;\n  }\n\n  /**\n   * Safely executes the encapsulated expression with the given parameters.\n   * @public\n   * @returns {{ value: *, isError: Boolean}} the current value of the expression, or the thrown error if any\n   */\n  evaluateToCurrentValue() {\n    try {\n      const result = this.getCurrentValue();\n      return { value: result, isError: false };\n    } catch (e) {\n      const eventPromise = this.logEvent(EventTypes.EVALFAIL, {error: e});\n      return { value: e, isError: true, eventPromise };\n    }\n  }\n\n  /*MD ## EventTarget Interface MD*/\n  // #TODO: additional callbacks\n  // - 'change-complete' for tail end of notification\n  // - 'dependency-changed' for reflection\n  on(type, callback) {\n    this._eventTarget.addEventListener(type, callback);\n    return this;\n  }\n\n  off(type, callback) {\n    this._eventTarget.removeEventListener(type, callback);\n    return this;\n  }\n\n  emit(type, ...params) {\n    this._eventTarget.dispatchEvent(type, ...params);\n  }\n\n  getEventListeners(type) {\n    return this._eventTarget.getEventListeners(type);\n  }\n\n  /*MD ## Basic Interface MD*/\n  /**\n   * @public\n   * @param callback\n   * @returns {BaseActiveExpression} this very active expression (for chaining)\n   */\n  onChange(callback, originalSource) {\n    this.callbacks.push(callback);\n    this.logEvent(EventTypes.CBADDED, { callback, originalSource });\n    AExprRegistry.updateAExpr(this);\n    return this;\n  }\n  /**\n   * @public\n   * @param callback\n   * @returns {BaseActiveExpression} this very active expression (for chaining)\n   */\n  // #TODO: should this remove all occurences of the callback?\n  offChange(callback, originalSource) {\n    const index = this.callbacks.indexOf(callback);\n    if (index > -1) {\n      this.callbacks.splice(index, 1);\n      this.logEvent(EventTypes.CBREMOVED, { callback, originalSource });\n      AExprRegistry.updateAExpr(this);\n    }\n    if (this._shouldDisposeOnLastCallbackDetached && this.callbacks.length === 0) {\n      this.dispose();\n    }\n\n    return this;\n  }\n\n  /**\n   * Signals the active expression that a state change might have happened.\n   * Mainly for implementation strategies.\n   * @public\n   */\n  checkAndNotify(infoPromises = []) {\n    if (!this._isEnabled) {\n      return;\n    }\n\n    const { value, isError, eventPromise } = this.evaluateToCurrentValue();\n    const callbackStackTop = AExprRegistry.callbackStack[AExprRegistry.callbackStack.length - 1];\n    if (isError) {\n      eventPromise.then(event => {\n        if(!event.value) return;\n        Promise.all(infoPromises).then(triggers => {\n          event.value.triggers = triggers;\n          event.value.parentAE = callbackStackTop && callbackStackTop.ae;\n          event.value.callback = callbackStackTop && callbackStackTop.callback;\n        });\n      });\n      return;\n    } else if (this.compareResults(this.lastValue, value)) {\n      return;\n    }\n    const lastValue = this.lastValue;\n    this.storeResult(value);\n    this.logEvent('changed value', Promise.all(infoPromises).then(triggers => {\n      /*if(dependency) {\n        if(dependency.context instanceof HTMLElement) {\n          if(!dependency.context.changedAEs) {\n            dependency.context.changedAEs = new Set();\n          }\n          dependency.context.changedAEs.add(this);\n        }\n      }*/\n      return {\n        value,\n        triggers,\n        lastValue,\n        parentAE: callbackStackTop && callbackStackTop.ae,\n        callback: callbackStackTop && callbackStackTop.callback };\n    }));\n\n    this.notify(value, {\n      lastValue,\n      expr: this.func,\n      aexpr: this\n    });\n  }\n\n  async findCallee() {\n    const stack = lively.stack();\n    const frames = stack.frames;\n\n    for (let frame of frames) {\n      if (!frame.file.includes(\"active-expression\") && frame.file !== \"<anonymous>\") {\n        return await frame.getSourceLocBabelStyle();\n      }\n    }\n    return undefined;\n  }\n\n  async extractSourceMap(code) {\n    var m = code.match(/\\/\\/# sourceMappingURL=(.*)(\\n|$)/);\n    if (!m) return false;\n    var sourceMappingURL = m[1];\n    return (await fetch(sourceMappingURL)).json();\n  }\n\n  extractSourceURL(code) {\n    var m = code.match(/\\/\\/# sourceURL=(.*)(\\n|$)/);\n    if (!m) return false;\n    return m[1];\n  }\n\n  setupMatcher(matchConfig) {\n    // configure using existing matcher\n    if (matchConfig && isString.call(matchConfig)) {\n      if (!MATCHER_MAP.has(matchConfig)) {\n        throw new Error(`No matcher of type '${matchConfig}' registered.`);\n      }\n      this.matcher = MATCHER_MAP.get(matchConfig);\n      return;\n    }\n\n    // configure using a custom matcher\n    if (typeof matchConfig === 'object') {\n      if (matchConfig.hasOwnProperty('compare') && matchConfig.hasOwnProperty('store')) {\n        this.matcher = matchConfig;\n        return;\n      }\n      throw new Error(`Given matcher object does not provide 'compare' and 'store' methods.`);\n    }\n\n    // use smart default matcher\n    this.matcher = DefaultMatcher;\n  }\n\n  // #TODO: extract into CompareAndStore classes\n  compareResults(lastResult, newResult) {\n    try {\n      window.__compareAExprResults__ = true;\n      return this.matcher.compare(lastResult, newResult);\n    } finally {\n      window.__compareAExprResults__ = false;\n    }\n  }\n\n  storeResult(result) {\n    try {\n      window.__compareAExprResults__ = true;\n      this.lastValue = this.matcher.store(result);\n    } finally {\n      window.__compareAExprResults__ = false;\n    }\n  }\n\n  notify(...args) {\n    this.callbacks.forEach(callback => {\n      AExprRegistry.addToCallbackStack(this, callback);\n      callback(...args);\n      AExprRegistry.popCallbackStack();\n    });\n    AExprRegistry.updateAExpr(this);\n  }\n\n  updateDependencies() {}\n\n  /**\n   * Change the expression to be monitored.\n   * @public\n   * @param func (Function) the new function to be monitored.\n   * @param options ({ checkImmediately = true }) whether `notify` will be executed if the current value of the expression is different from the last on, defaults to true.\n   * @returns {BaseActiveExpression} this very active expression (for chaining)\n   */\n  setExpression(func, { checkImmediately = true } = {}) {\n    if (!(func instanceof Function)) {\n      throw new TypeError('no function given to .setExpression');\n    }\n\n    this.func = func;\n    this.updateDependencies();\n    if (checkImmediately) {\n      this.checkAndNotify();\n    }\n\n    return this;\n  }\n\n  /*MD ## Convenience Methods MD*/\n  onBecomeTrue(callback) {\n    // setup dependency\n    this.onChange(bool => {\n      if (bool) {\n        callback();\n      }\n    });\n\n    // check initial state\n    const { value, isError } = this.evaluateToCurrentValue();\n    if (!isError && value) {\n      this.storeResult(value);\n      callback();\n    }\n\n    return this;\n  }\n\n  onBecomeFalse(callback) {\n    // setup dependency\n    this.onChange(bool => {\n      if (!bool) {\n        callback();\n      }\n    });\n\n    // check initial state\n    const { value, isError } = this.evaluateToCurrentValue();\n    if (!isError && !value) {\n      this.storeResult(value);\n      callback();\n    }\n\n    return this;\n  }\n\n  dataflow(callback, orignalSource) {\n    // setup dependency\n    this.onChange(callback, orignalSource);\n\n    // call immediately\n    // #TODO: duplicated code: we should extract this call\n    const { value, isError } = this.evaluateToCurrentValue();\n    if (!isError) {\n      this.storeResult(value);\n      callback(value, {});\n    }\n\n    return this;\n  }\n\n  /*MD ## Disposing MD*/\n  dispose() {\n    if (!this._isDisposed) {\n      this._isDisposed = true;\n      this.removeAllCallbacks();\n      AExprRegistry.removeAExpr(this);\n      this.emit('dispose');\n      this.logEvent(EventTypes.DISPOSED);\n    }\n  }\n\n  removeAllCallbacks() {\n    for (const callback of this.callbacks) {\n      this.offChange(callback);\n    }\n  }\n\n  isDisposed() {\n    return this._isDisposed;\n  }\n\n  /**\n   * #TODO: implement\n   * disposeOnLastCallbackDetached\n   * chainable\n   * for some auto-cleanup\n   * (only triggers, when a callback is detached; not initially, if there are no callbacks)\n   */\n  disposeOnLastCallbackDetached() {\n    this._shouldDisposeOnLastCallbackDetached = true;\n    return this;\n  }\n\n  gotDisposed() {\n    if (this._disposedPromise) {\n      return this._disposedPromise;\n    }\n\n    return this._disposedPromise = new Promise(resolve => {\n      if (this.isDisposed()) {\n        resolve();\n      } else {\n        this.on('dispose', resolve);\n      }\n    });\n  }\n\n  /*MD ## Scoping: Enable, Disable \n  \n    In contrast to scoping with respect to applying a single expression to multiple subjects\n  MD*/\n\n  enable({ check = true } = {}) {\n    if (!this._isEnabled) {\n      this._isEnabled = true;\n      this.emit('enable');\n\n      this.updateDependencies();\n      if (check) {\n        this.checkAndNotify();\n      } else {\n        this.updateLastValue();\n      }\n    }\n  }\n\n  disable() {\n    if (this._isEnabled) {\n      this._isEnabled = false;\n      this.emit('disable');\n    }\n  }\n\n  isEnabled() {\n    return this._isEnabled;\n  }\n\n  isDisabled() {\n    return !this._isEnabled;\n  }\n\n  /*MD ## Reflection Information MD*/\n  shouldLogEvents() {\n    if(this.loggingMode === LoggingModes.DEFAULT) {\n      const location = this.meta().get(\"location\");\n      if(location) {\n        return AExprRegistry.shouldLog(location.file, location.start.line) \n      }\n    }\n    return this.loggingMode === LoggingModes.ALL;\n  }\n  \n  toggleLogging() {\n    this.setLogging(!this.shouldLogEvents());\n  }\n  \n  setLogging(enable) {\n    this.loggingMode = enable ? LoggingModes.ALL : LoggingModes.NONE;\n  }\n  \n  logState() {\n    let events = this.events;\n    return (this.shouldLogEvents() ? \"logged: \" : \"not logged: \") + (this.completeHistory ? \"complete \" : \"incomplete \") + pluralize(events.length, \"event\")\n  }\n  \n  meta(annotation) {\n    if (annotation) {\n      this._annotations.add(annotation);\n      return this;\n    } else {\n      return this._annotations;\n    }\n  }\n\n  getSymbol() {\n    return this.identifierSymbol;\n  }\n\n  getLocationText() {\n    const location = this.meta().get(\"location\");\n    if (location) {\n      return location.file.substring(location.file.lastIndexOf(\"/\") + 1) + \" line \" + location.start.line;\n    } else {\n      return \"unknown location\";\n    }\n  }\n  \n  getIdentifier() {\n    if(this.isDataBinding()) {\n      return this.getDataBinding().identifier;\n    }\n    if(this.isILA()) {\n      return this.getLayer().name;\n    }\n    return this.getSourceCode(60);\n  }\n\n  getName() {\n    if(this.isDataBinding()) {\n      return this.identifierSymbol + \" \" + this.getDataBinding().identifier;\n    }\n    if(this.isILA()) {\n      return this.identifierSymbol + \" \" + this.getLayer().name;\n    }\n    const location = this.meta().get(\"location\");\n    if (location) {\n      return this.identifierSymbol + \" \" + this.getLocationText();\n    } else {\n      return this.identifierSymbol + \" \" + this.meta().get(\"id\");\n    }\n  }\n  \n  get events() {\n    return this.meta().get('events')\n  }\n\n  isDataBinding() {\n    return this.meta().get('conceptType') === DebugConceptType.DB;\n  }\n\n  isILA() {\n    return this.meta().get('conceptType') === DebugConceptType.ILA;\n  }\n  \n  getType() {\n    if(this.isDataBinding()) {\n      return \"Signal\";\n    }\n    if(this.isILA()) {\n      return \"Implicit Layer\";\n    }\n    return \"Active Expression\";\n  }\n  \n  getTypeShort() {\n    if(this.isDataBinding()) {\n      return \"SI\";\n    } \n    if(this.isILA()) {\n      return \"IL\";\n    }\n    return \"AE\";\n  }\n  \n  getLayer() {\n    if(!this.isILA()) return undefined;\n    return this.meta().get('conceptInfo');\n  }\n  \n  getDataBinding() {\n    if(!this.isDataBinding()) return undefined;\n    return this.meta().get('conceptInfo');\n  }\n\n  getSourceCode(cutoff = -1, oneLine = true) {\n    let code;\n    if (this.meta().has('sourceCode')) {\n      code = this.meta().get('sourceCode');\n    } else {\n      code = \"unknown code\";\n    }\n    if (code.startsWith(\"() =>\")) {\n      code = code.substring(5);\n    }\n    if (oneLine) {\n      code = code.replace(/\\s+/g, \" \");\n    }\n    code = code.trim();\n    if (cutoff < 0) return code;\n    if (code.length > cutoff + 3) {\n      return code.substring(0, cutoff) + \"...\";\n    }\n    return code;\n  }\n\n  supportsDependencies() {\n    return false;\n  }\n\n  initializeEvents() {\n    this.meta({ events: new Array() });\n  }\n  \n  markTimestamp(reason) {\n    this.logEvent(EventTypes.CUSTOM, reason);\n  }\n  \n  addEvent(event) {\n    const events = this.events;\n    events.push(event);\n    if(events.length !== 1 && events[events.length - 2].overallID > event.overallID) {\n      events.sort((e1, e2) => e1.overallID - e2.overallID);\n    }\n    if (events.length > 5000) events.shift();\n    return events.length; //IDs are broken after 5000 events.\n  }\n\n  logEvent(type, value, overrideTimestamp = undefined) {\n    if (this.isMeta()) return;\n    if(!this.shouldLogEvents()) {\n      this.completeHistory = false;\n      return Promise.resolve({});\n    }\n    if(type == EventTypes.CBADDED && (this.isILA() || this.isDataBinding())) {\n      return; //We do not need to log callbacks for signals and layers\n    }\n    const e = new Event(this, value, type, overrideTimestamp);\n    return e.ensureResolved();\n  }\n\n  // Migrates the events from another event to this one. \n  // It is advisable to only call this, when we know that this AE replaces \"other\" and when other was disposed before this AE was created..\n  migrateEvents(other) {\n    let otherEvents = other.events;\n    let events = this.events;\n\n    events.unshift(...otherEvents);\n  }\n\n  isMeta(value) {\n    if (value !== undefined) this.meta({ isMeta: value });else return this.meta().has('isMeta') && this.meta().get('isMeta');\n  }\n\n  /*MD ## Iterators and Utility Methods MD*/\n\n  // #Discussion: should this reject, if the aexpr gets disposed?\n  nextValue() {\n    return new Promise(resolve => {\n      const callback = value => {\n        this.offChange(callback);\n        resolve(value);\n      };\n      this.onChange(callback);\n    });\n  }\n\n  values() {\n    const gotDisposed = this.gotDisposed();\n\n    const valueQueue = [];\n\n    let gotNewValue;\n    let waitForValue;\n    function resetWaitForValue() {\n      waitForValue = new Promise(resolve => {\n        gotNewValue = resolve;\n      });\n    }\n    resetWaitForValue();\n\n    this.onChange(v => {\n      valueQueue.push(v);\n      const temp = gotNewValue;\n      resetWaitForValue();\n      temp();\n    });\n\n    return {\n      [Symbol.asyncIterator]() {\n        return {\n          next() {\n            if (valueQueue.length > 0) {\n              return {\n                value: valueQueue.shift(),\n                done: false\n              };\n            } else {\n              return Promise.race([waitForValue.then(() => this.next()), gotDisposed.then(() => ({ done: true }))]);\n            }\n          }\n        };\n      }\n    };\n  }\n}\n\nexport function aexpr(func, ...args) {\n  return new BaseActiveExpression(func, ...args);\n}\n\nexport default BaseActiveExpression;\n\n// #TODO: migrate aexpr object to new/reloaded classes"],"mappings":"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"}