{"version":3,"names":["FrameBasedActiveExpression","aexpr","func","args","__unload__","checkLoop","pause","BaseActiveExpression","check","setExpressionOptionsForConventionStrategies","PausableLoop","constructor","meta","strategy","enabled","new","target","addToRegistry","onChange","result","_isDisposed","FRAME_BASED_AEXPRS","add","ensureRunning","offChange","hasCallbacks","revoke","dispose","delete","size","setExpression","params","Set"],"sources":["active-expression-frame-based.js"],"sourcesContent":["import { BaseActiveExpression } from 'active-expression';\nimport { check, setExpressionOptionsForConventionStrategies } from \"./active-expression-ticking.js\";\nimport { PausableLoop } from 'utils';\n\nexport class FrameBasedActiveExpression extends BaseActiveExpression {\n  constructor(func, ...args) {\n    super(func, ...args);\n    this.meta({ strategy: 'Frame-based' });\n\n    // needed for check function for aexpr-ticking\n    this.enabled = true;\n\n    if(new.target === FrameBasedActiveExpression) {\n      this.addToRegistry();\n    }\n  }\n\n  onChange(...args) {\n    const result = super.onChange(...args);\n\n    if(!this._isDisposed) {\n      FRAME_BASED_AEXPRS.add(this);\n      checkLoop.ensureRunning();\n    }\n    \n    return result;\n  }\n\n  offChange(...args) {\n    const result = super.offChange(...args);\n\n    if(!this.hasCallbacks()) {\n      this.revoke();\n    }\n    \n    return result;\n  }\n\n  dispose(...args) {\n    const result = super.dispose(...args);\n    this.revoke();\n    \n    return result;\n  }\n\n  // #TODO: unused!\n  revoke() {\n    FRAME_BASED_AEXPRS.delete(this);\n    if(FRAME_BASED_AEXPRS.size === 0) {\n      checkLoop.pause();\n    }\n  }\n\n  /** the parameter `checkImmediately` is by default false for convention strategies */\n  setExpression(...params) {\n    return super.setExpression(...setExpressionOptionsForConventionStrategies(...params))\n  }\n\n}\n\nexport function aexpr(func, ...args) {\n  return new FrameBasedActiveExpression(func, ...args);\n}\n\nconst FRAME_BASED_AEXPRS = new Set();\n\n// update Active Expressions once per frame\nconst checkLoop = new PausableLoop(() => check(FRAME_BASED_AEXPRS));\n\nexport function __unload__() {\n  checkLoop.pause();\n}\n"],"mappings":"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"}