{"version":3,"names":["Operator","IdentityOperator","FilterOperator","MapOperator","UnionOperator","FlowToFunction","Pair","CrossOperator","DelayOperator","ReduceOperator","ensureBaseViewForClass","Class","baseViewByClass","has","set","View","get","baseViewForClass","trackInstance","instance","safeAdd","untrackInstance","safeRemove","trackInitializeAndDestroy","cop","layer","refineClass","initialize","args","result","proceed","call","destroy","beGlobal","addSelectorListener","root","selector","fn","key","selectors","startListenerByRoot","listeners","animationCount","replace","node","document","createTextNode","keyframes","appendChild","styles","sheet","insertRule","selectorByAnimationName","roots","add","addEventListener","startName","startEvent","push","removeObsoleteListeners","Array","from","stopMatchingDetectors","forEach","detector","matchesSelector","removeElement","delete","size","stopMatchingLoop","pause","trackSelector","view","event","element","target","inDOM","getRootNode","composed","matches","ensureRunning","__unload__","remove","removeEventListener","select","options","default","pushIfMissing","removeIfExisting","Stack","isPrimitive","identity","BaseActiveExpression","aexpr","PausableLoop","HACK","WeakMap","newItemFromUpstream","item","downstream","destroyItemFromUpstream","constructor","upstream","expression","selectionItems","now","onNewInstance","params","onBecomeTrue","onBecomeFalse","indexOf","addDueToFilterExpression","removeDueToFilterExpression","mapFunction","items","outputItemsByItems","Map","wasNewItem","outputItem","gotRemoved","upstream1","upstream2","concat","itemAlreadyExists","includes","itemStillExists","create","first","second","trackedItems","pairs","bind","index","forEachPairWithDo","pair","callback","zeroes","ones","zeroElement","oneElement","getOrCreatePairForCombination","zero","one","map","delayTime","delays","setInterval","clearTimeout","reducer","initialValue","reduce","checkAndNotify","Object","assign","prototype","filter","iterator","context","newSelection","union","otherView","cross","delay","stack","current","top","withOnStack","el","pop","createElement","head","getElementsByTagName","animationName","Set","type"],"sources":["select.js"],"sourcesContent":["export { default as View} from './view.js';\nimport View from './view.js';\nimport { pushIfMissing, removeIfExisting, Stack, isPrimitive, identity } from './utils.js';\nimport { BaseActiveExpression } from 'active-expression';\nimport aexpr from 'active-expression-rewriting';\nimport * as cop  from \"src/client/ContextJS/src/contextjs.js\";\nimport { PausableLoop } from 'utils';\n\n// TODO: this is use to keep SystemJS from messing up scoping\n// (FilterOperation would not be defined in select)\nconst HACK = {};\n\n/**\n * #TODO: this is from withlogging.js\n */\n// #TODO: can we make this easier, e.g. automatically identifying the class to adapt from the very instance? What about superclasses?\nexport const baseViewByClass = new WeakMap();\n\nfunction ensureBaseViewForClass(Class) {\n  if(!baseViewByClass.has(Class)) {\n    baseViewByClass.set(Class, new View());\n  }\n  return baseViewByClass.get(Class);\n}\n\nexport function baseViewForClass(Class) {\n  return ensureBaseViewForClass(Class);\n}\n\nexport function trackInstance(instance) {\n  baseViewForClass(this).safeAdd(instance);\n}\n\nexport function untrackInstance(instance) {\n  baseViewForClass(this).safeRemove(instance);\n}\n\n// #TODO: ideally, we would track the constructor, maybe with **decorators**?\n// #TODO: unused, maybe use cop instead of a functional mixin\n// #TODO: use cop here\nexport function trackInitializeAndDestroy(Class) {\n  cop.layer().refineClass(Class, {\n    initialize(...args) {\n      const result = cop.proceed(...args);\n      trackInstance.call(Class, this);\n      return result;\n    },\n    destroy(...args) {\n      untrackInstance.call(Class, this);\n      return cop.proceed(...args);\n    }\n  }).beGlobal();\n}\n\nclass Operator {}\nclass IdentityOperator extends Operator {\n  // constructor(upstream, downstream) {\n  //     super();\n  //     this.downstream = downstream;\n  //     upstream.downstream.push(this);\n  //     upstream.now().forEach(function(item) {\n  //         downstream.safeAdd(item);\n  //     });\n  // }\n  newItemFromUpstream(item) {\n    this.downstream.safeAdd(item);\n  }\n  destroyItemFromUpstream(item) {\n    this.downstream.safeRemove(item);\n  }\n}\n\nclass FilterOperator extends IdentityOperator {\n  constructor(upstream, downstream, expression) {\n    super();\n    this.expression = expression;\n\n    this.selectionItems = [];\n\n    this.upstream = upstream;\n    this.downstream = downstream;\n    upstream.downstream.push(this);\n    upstream.now().forEach(item => this.newItemFromUpstream(item));\n  }\n  newItemFromUpstream(item) {\n    this.onNewInstance(item);\n  }\n  onNewInstance(item) {\n    aexpr(this.expression, { params: [item] })\n        .onBecomeTrue(() => this.add(item))\n        .onBecomeFalse(() => this.remove(item));\n  }\n  add(item) {\n    if(this.upstream.now().indexOf(item) >= 0) {\n      this.addDueToFilterExpression(item);\n    }\n  }\n  remove(item) {\n    this.removeDueToFilterExpression(item);\n  }\n  addDueToFilterExpression(item) {\n    this.downstream.safeAdd(item);\n  }\n  removeDueToFilterExpression(item) {\n    this.downstream.safeRemove(item);\n  }\n  destroyItemFromUpstream(item) {\n    this.remove(item);\n  }\n}\n\nclass MapOperator extends IdentityOperator {\n  constructor(upstream, downstream, mapFunction) {\n    super();\n    this.mapFunction = mapFunction || identity;\n    this.items = [];\n    this.outputItemsByItems = new Map();\n\n    this.downstream = downstream;\n    upstream.downstream.push(this);\n    upstream.now().forEach(item => this.newItemFromUpstream(item));\n  }\n  newItemFromUpstream(item) {\n    var wasNewItem = pushIfMissing(this.items, item);\n    if(wasNewItem) {\n      var outputItem = this.mapFunction(item);\n      this.outputItemsByItems.set(item, outputItem);\n      this.downstream.safeAdd(outputItem);\n    }\n  }\n  destroyItemFromUpstream(item) {\n    var gotRemoved = removeIfExisting(this.items, item);\n    if(gotRemoved) {\n      var outputItem = this.outputItemsByItems.get(item);\n      this.outputItemsByItems.delete(item);\n      this.downstream.safeRemove(outputItem);\n    }\n  }\n}\n\n// #TODO: allow for more than 2 upstreams to merge\nclass UnionOperator extends IdentityOperator {\n  constructor(downstream, upstream1, upstream2) {\n    super();\n    this.upstream1 = upstream1;\n    this.upstream2 = upstream2;\n    this.downstream = downstream;\n    upstream1.downstream.push(this);\n    upstream2.downstream.push(this);\n\n    upstream1.now().concat(upstream2.now()).forEach(function(item) {\n        this.newItemFromUpstream(item);\n    }, this);\n  }\n  newItemFromUpstream(item) {\n    var itemAlreadyExists = this.downstream.now().includes(item);\n    if(!itemAlreadyExists) {\n      this.downstream.safeAdd(item);\n    }\n  }\n  destroyItemFromUpstream(item) {\n    var itemStillExists = this.upstream1.now().includes(item) || this.upstream2.now().includes(item);\n    if(!itemStillExists) {\n      this.downstream.safeRemove(item);\n    }\n  }\n}\n\n// TODO: make this reusable\nclass FlowToFunction {\n    constructor(upstream, create, destroy) {\n        this.create = create;\n        this.destroy = destroy;\n        upstream.downstream.push(this);\n    }\n    newItemFromUpstream(item) {\n        this.create(item);\n    }\n    destroyItemFromUpstream(item) {\n        this.destroy(item);\n    }\n}\n\n/**\n *\n * @class Pair\n * @classdesc This is used by the {@link View#cross} operator.\n * @property {Object} first\n * @property {Object} second\n */\nclass Pair {\n    constructor(first, second) {\n        this.first = first;\n        this.second = second;\n    }\n}\n\nclass CrossOperator {\n    constructor(upstream1, upstream2, downstream) {\n        this.upstream1 = upstream1;\n        this.upstream2 = upstream2;\n        this.downstream = downstream;\n\n        this.trackedItems = [[], []];\n        this.pairs = new Map();\n\n        new FlowToFunction(upstream1, this.newItemFromUpstream.bind(this, 0), this.destroyItemFromUpstream.bind(this, 0));\n        new FlowToFunction(upstream2, this.newItemFromUpstream.bind(this, 1), this.destroyItemFromUpstream.bind(this, 1));\n        upstream1.now().forEach(this.newItemFromUpstream.bind(this, 0));\n        upstream2.now().forEach(this.newItemFromUpstream.bind(this, 1));\n    }\n    newItemFromUpstream(index, item) {\n        var wasNewItem = pushIfMissing(this.trackedItems[index], item);\n        if(wasNewItem) {\n            this.forEachPairWithDo(index, item, function(pair) {\n                this.downstream.safeAdd(pair);\n            });\n        }\n    }\n    destroyItemFromUpstream(index, item) {\n        var gotRemoved = removeIfExisting(this.trackedItems[index], item);\n        if(gotRemoved) {\n            this.forEachPairWithDo(index, item, function(pair) {\n                this.downstream.safeRemove(pair);\n            });\n        }\n    }\n    forEachPairWithDo(index, item, callback) {\n        var zeroes = index === 0 ? [item] : this.trackedItems[0];\n        var ones = index === 1 ? [item] : this.trackedItems[1];\n\n        zeroes.forEach(function(zeroElement) {\n            ones.forEach(function(oneElement) {\n                var pair = this.getOrCreatePairForCombination(zeroElement, oneElement);\n                callback.call(this, pair);\n            }, this);\n        }, this);\n    }\n    getOrCreatePairForCombination(zero, one) {\n        if(!this.pairs.has(zero)) {\n            this.pairs.set(zero, new Map());\n        }\n        var map = this.pairs.get(zero);\n        if(!map.has(one)) {\n            map.set(one, new Pair(zero, one));\n        }\n        return map.get(one);\n    }\n}\n\nclass DelayOperator extends IdentityOperator {\n    constructor(upstream, downstream, delayTime) {\n        super(upstream, downstream);\n        this.upstream = upstream;\n        this.downstream = downstream;\n        this.delayTime = delayTime;\n        upstream.downstream.push(this);\n\n        this.delays = new Map();\n\n        upstream.now().forEach(function(item) {\n            this.newItemFromUpstream(item);\n        }, this);\n    }\n    newItemFromUpstream(item) {\n        if(!this.delays.has(item)) {\n            this.delays.set(item, setInterval(\n              () => this.downstream.safeAdd(item),\n              this.delayTime));\n        }\n    }\n    destroyItemFromUpstream(item) {\n        this.downstream.safeRemove(item);\n        if(this.delays.has(item)) {\n            clearTimeout(this.delays.get(item));\n            this.delays.delete(item);\n        }\n    }\n}\n\nclass ReduceOperator {\n    constructor(upstream, reducer, initialValue) {\n        this.upstream = upstream;\n        upstream.downstream.push(this);\n        this.aexpr = new BaseActiveExpression(() =>\n          this.upstream.now().reduce(reducer, initialValue)\n        );\n    }\n    newItemFromUpstream() {\n        this.aexpr.checkAndNotify();\n    }\n    destroyItemFromUpstream() {\n        this.newItemFromUpstream();\n    }\n}\n\nObject.assign(View.prototype, {\n    /**\n     * Takes an additional filter function and returns a reactive object set. That set only contains the objects of the original set that also match the given filter function.\n     * @function View#filter\n     * @param {View~filterIterator} iterator\n     * @return {View} The callee of this method.\n     */\n    filter(iterator, context) {\n        var newSelection = new View();\n\n        new FilterOperator(this, newSelection, iterator, context);\n\n        return newSelection;\n    },\n    /**\n     * Takes a mapping function and returns another reactive object set. That set always contains the mapped objects corresponding to the objects in the original set.\n     * @function View#map\n     * @param {View~mapIterator} iterator\n     * @return {View} The callee of this method.\n     */\n    map(iterator) {\n        var newSelection = new View();\n\n        new MapOperator(this, newSelection, iterator);\n\n        return newSelection;\n    },\n    /**\n     * Create a new {@link View} containing all elements of the callee and the argument.\n     * @function View#union\n     * @param {View} otherView {@link View}\n     * @return {View} Contains every object of both input Views.\n     */\n    union(otherView) {\n        var newSelection = new View();\n\n        new UnionOperator(newSelection, this, otherView);\n\n        return newSelection;\n    },\n    /**\n     * Create a new {@link View} containing all elements of the cartesian product of the callee and the argument as {@link Pair}.\n     * @function View#cross\n     * @param {View} otherView {@link View}\n     * @return {View} Contains every combination of both input Views as two-element Array.\n     */\n    cross(otherView) {\n        var newSelection = new View();\n\n        new CrossOperator(this, otherView, newSelection);\n\n        return newSelection;\n    },\n\n    /**\n     * Delays the propagation of items of the callee.\n     * Items are propagated to the returned {@link View} in {@link View#delay.delayTime} milliseconds,\n     * if they are not removed from the callee before the timeout.\n     * @function View#delay\n     * @param {Number} delayTime - the time to delay given in milliSeconds.\n     * @returns {View}\n     */\n    delay(delayTime) {\n        var newSelection = new View();\n\n        new DelayOperator(this, newSelection, delayTime);\n\n        return newSelection;\n    },\n\n    /**\n     * Whenever the callee is modified, the returned Active Expression gets notified.\n     * @function View#reduce\n     * @param {View~reducer} reducer\n     * @param initialValue - the initial value passed to the {@View~reducer}.\n     * @returns {ActiveExpression} changing with the callee\n     */\n    reduce(reducer, initialValue) {\n        const reduce = new ReduceOperator(this, reducer, initialValue);\n\n        return reduce.aexpr;\n    }\n});\n\n/**\n * The callback function to determine whether an Object should be part of the resulting derived {@link View}.\n * @callback View~filterIterator\n * @param {Object} item - item from the original {@link View}.\n * @return {Boolean}\n */\n\n/**\n * The callback that computes the item to be added to the mapped {@link View}.\n * @callback View~mapIterator\n * @param {Object} item - item from the original {@link View}.\n * @return {Object} mapped item\n */\n\n/**\n * The callback that computes the aggregation of the modified {@link View}.\n * @callback View~reducer\n * @param {Object} accumulator\n * @param {Object} item\n * @return {Object}\n */\n\nView.stack = new Stack();\nView.current = function() { return View.stack.top(); };\nView.withOnStack = function(el, callback, context) {\n    View.stack.push(el);\n    try {\n        callback.call(context);\n    } finally {\n        View.stack.pop();\n    }\n};\n\n/**\n * ################## CSS SELECTORS ##################\n */\nconst selectorByAnimationName = new Map();\nconst selectors = {};\nlet animationCount = 0;\nconst styles = document.createElement('style');\nconst keyframes = document.createElement('style');\nconst head = document.getElementsByTagName('head')[0];\nconst startName = 'animationstart';\nconst startEvent = function(event) {\n  event.selector = selectorByAnimationName.get(event.animationName);\n  ((startListenerByRoot.get(this) || {})[event.animationName] || []).forEach(fn => {\n    fn.call(this, event);\n  });\n};\nconst roots = new Set();\nconst startListenerByRoot = new Map();\n\nstyles.type = keyframes.type = 'text/css';\nhead.appendChild(styles);\nhead.appendChild(keyframes);\n\nfunction addSelectorListener(root, selector, fn) {\n  var key = selectors[selector];\n  if(!startListenerByRoot.has(root)) {\n    startListenerByRoot.set(root, {});\n  }\n  var listeners = startListenerByRoot.get(root);\n\n  if (!key) {\n    key = selectors[selector] = 'SelectorListener-' + animationCount++ + '-' + selector.replace(/[^0-9a-zA-Z]/gi, '');\n    let node = document.createTextNode(`@keyframes ${key} {\n  from { outline-color: #fff; }\n  to { outline-color: #000; }\n}`);\n    keyframes.appendChild(node);\n    styles.sheet.insertRule(`${selector} {\n  animation-duration: 0.001s;\n  animation-name: ${key} !important;\n}`, 0);\n    selectorByAnimationName.set(key, selector);\n  }\n\n  if(!roots.has(root)) {\n    roots.add(root);\n    root.addEventListener(startName, startEvent, false);\n  }\n\n  (listeners[key] = listeners[key] || []).push(fn);\n}\n\n/**\n * chrome does not support the animationcancel event, so we have to resort back to other means, namely polling\n */\nconst stopMatchingDetectors = new Set();\n\nfunction removeObsoleteListeners() {\n  Array.from(stopMatchingDetectors).forEach(detector => {\n    if(!detector.matchesSelector()) {\n      detector.removeElement();\n      stopMatchingDetectors.delete(detector);\n    }\n  });\n  if(stopMatchingDetectors.size === 0) {\n    stopMatchingLoop.pause();\n  }\n}\n\nconst stopMatchingLoop = new PausableLoop(() => {\n  // lively.warn('check stop matching');\n  removeObsoleteListeners();\n});\n\nfunction trackSelector(selector, { root = document }) {\n  const view = new View();\n  addSelectorListener(root, selector, event => {\n    const element = event.target;\n    view.safeAdd(element);\n    \n    stopMatchingDetectors.add({\n      matchesSelector() {\n        const inDOM = element.getRootNode({ composed: true }) === document;\n        return inDOM && element.matches(selector);\n      },\n      removeElement() { view.safeRemove(element); }\n    });\n    stopMatchingLoop.ensureRunning();\n  });\n  return view;\n}\n\nexport function __unload__() {\n  styles.remove();\n  keyframes.remove();\n  roots.forEach(root => root.removeEventListener(startName, startEvent, false));\n  \n  stopMatchingLoop.pause();\n}\n\n/**\n * @function select\n * @param {Class} Class\n * @return {View}\n */\nexport default function select(Class, options) {\n  // css selector given?\n  if(typeof Class === 'string') {\n    return trackSelector(Class, options || {})\n  }\n\n  // fall back to track all instances of a class\n  return baseViewForClass(Class);\n}\n"],"mappings":"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"}