* Create a reactive effect with automatic dependency tracking. * @param {() => any} expression - The watched expression * @param {(value: any) => void} handler - Called when the value changes * @param {Object} [options] * @param {Element} [options.element] - Auto-stop when elemen
(expression, handler, options)
| 644 | * @returns {() => void} Stop function |
| 645 | */ |
| 646 | createEffect(expression, handler, options) { |
| 647 | var effect = new Effect( |
| 648 | expression, |
| 649 | handler, |
| 650 | (options && options.element) || null, |
| 651 | this |
| 652 | ); |
| 653 | |
| 654 | effect.initialize(); |
| 655 | |
| 656 | // Track effect by element for cleanup |
| 657 | if (effect.element) { |
| 658 | var data = effect.element._hyperscript ??= {}; |
| 659 | data.effects ??= new Set(); |
| 660 | data.effects.add(effect); |
| 661 | } |
| 662 | |
| 663 | return function () { |
| 664 | effect.stop(); |
| 665 | }; |
| 666 | } |
| 667 | |
| 668 | /** Stop all reactive effects owned by an element. */ |
| 669 | stopElementEffects(element) { |
no test coverage detected