{"version":3,"names":["removeObsoleteListeners","Array","from","REMOVE_LISTENER_BY_CHECK_FUNCTION","forEach","nodeDetachedFromDOM","removeListener","delete","size","removeLoop","pause","toDOMNode","builder","x","value","evaluateToCurrentValue","currentNode","updateDOMNode","val","newNode","replaceWith","getRootNode","composed","document","offChange","onChange","set","ensureRunning","__unload__","PausableLoop","Map"],"sources":["ui-aexpr.js"],"sourcesContent":["import { PausableLoop } from 'utils';\n\nconst REMOVE_LISTENER_BY_CHECK_FUNCTION = new Map(); // nodeDetachedFromDOM -> removeListener\n\nfunction removeObsoleteListeners() {\n  Array.from(REMOVE_LISTENER_BY_CHECK_FUNCTION).forEach(([nodeDetachedFromDOM, removeListener]) => {\n    if (nodeDetachedFromDOM()) {\n      removeListener();\n      REMOVE_LISTENER_BY_CHECK_FUNCTION.delete(nodeDetachedFromDOM);\n    }\n  });\n  if (REMOVE_LISTENER_BY_CHECK_FUNCTION.size === 0) {\n    removeLoop.pause();\n  }\n}\n\n// `this` is an ActiveExpression \nexport function toDOMNode(builder = x => x) {\n  const { value } = this.evaluateToCurrentValue();\n  let currentNode = builder(value);\n\n  function updateDOMNode(val) {\n    // lively.notify(\"change aexpr result\", val)\n    const newNode = builder(val);\n    currentNode.replaceWith(newNode);\n    currentNode = newNode;\n  };\n\n  function nodeDetachedFromDOM() {\n    return currentNode.getRootNode({ composed: true }) !== document;\n  }\n\n  const removeListener = () => this.offChange(updateDOMNode);\n\n  this.onChange(updateDOMNode);\n\n  REMOVE_LISTENER_BY_CHECK_FUNCTION.set(nodeDetachedFromDOM, removeListener);\n  removeLoop.ensureRunning();\n\n  return currentNode;\n}\n\nconst removeLoop = new PausableLoop(removeObsoleteListeners);\n\nexport function __unload__() {\n  removeLoop.pause();\n  //cancelAnimationFrame(checkRequest);\n  // lively.notify(\"unload module\", \"UI AEXPR\", undefined, null, \"red\");\n}"],"mappings":";;;;EAEqD;;EAErD,SAASA,uBAAuB,GAAG;IACjCC,KAAK,CAACC,IAAI,CAACC,iCAAiC,CAAC,CAACC,OAAO,CAAC,CAAC,CAACC,mBAAmB,EAAEC,cAAc,CAAC,KAAK;MAC/F,IAAID,mBAAmB,EAAE,EAAE;QACzBC,cAAc,EAAE;QAChBH,iCAAiC,CAACI,MAAM,CAACF,mBAAmB,CAAC;MAC/D;IACF,CAAC,CAAC;IACF,IAAIF,iCAAiC,CAACK,IAAI,KAAK,CAAC,EAAE;MAChDC,UAAU,CAACC,KAAK,EAAE;IACpB;EACF;;EAEA;EACO,SAASC,SAAS,CAACC,OAAO,GAAGC,CAAC,IAAIA,CAAC,EAAE;IAC1C,MAAM;MAAEC;IAAM,CAAC,GAAG,IAAI,CAACC,sBAAsB,EAAE;IAC/C,IAAIC,WAAW,GAAGJ,OAAO,CAACE,KAAK,CAAC;IAEhC,SAASG,aAAa,CAACC,GAAG,EAAE;MAC1B;MACA,MAAMC,OAAO,GAAGP,OAAO,CAACM,GAAG,CAAC;MAC5BF,WAAW,CAACI,WAAW,CAACD,OAAO,CAAC;MAChCH,WAAW,GAAGG,OAAO;IACvB;IAAC;IAED,SAASd,mBAAmB,GAAG;MAC7B,OAAOW,WAAW,CAACK,WAAW,CAAC;QAAEC,QAAQ,EAAE;MAAK,CAAC,CAAC,KAAKC,QAAQ;IACjE;IAEA,MAAMjB,cAAc,GAAG,MAAM,IAAI,CAACkB,SAAS,CAACP,aAAa,CAAC;IAE1D,IAAI,CAACQ,QAAQ,CAACR,aAAa,CAAC;IAE5Bd,iCAAiC,CAACuB,GAAG,CAACrB,mBAAmB,EAAEC,cAAc,CAAC;IAC1EG,UAAU,CAACkB,aAAa,EAAE;IAE1B,OAAOX,WAAW;EACpB;EAIO,SAASY,UAAU,GAAG;IAC3BnB,UAAU,CAACC,KAAK,EAAE;IAClB;IACA;EACF;EAAC;IAAA,WA/BeC,SAAS;IAAA,YA2BTiB;EAAU;EAAA;IAAA;MA5CjBC,YAAY,UAAZA,YAAY;IAAA;IAAA;MAEf1B,iCAAiC,GAAG,IAAI2B,GAAG,EAAE;MAwC7CrB,UAAU,GAAG,IAAIoB,YAAY,CAAC7B,uBAAuB,CAAC;IAAA;EAAA;AAAA"}