{"version":3,"file":"create-dom-effect.mjs","sources":["../../../../src/effects/utils/create-dom-effect.ts"],"sourcesContent":["import {\n ElementOrSelector,\n resolveElements,\n} from \"../../utils/resolve-elements\"\nimport { MotionValue } from \"../../value\"\nimport { MotionValueState } from \"../MotionValueState\"\nimport {\n AnimateEffect,\n Effect,\n EffectOptions,\n EffectRead,\n EffectTest,\n} from \"./create-effect\"\n\n/**\n * The element overloads come last so generic inference sees the subject type.\n */\nexport interface SelectorEffect extends EffectOptions {\n (\n subject: ElementOrSelector,\n values: Record\n ): VoidFunction\n (subject: T, values: Record): VoidFunction\n\n get(subject: ElementOrSelector, key: string): MotionValue | undefined\n get(subject: T, key: string): MotionValue | undefined\n\n flush(subject: T): void\n state(subject: T): MotionValueState | undefined\n}\n\nexport interface SelectorAnimateEffect\n extends SelectorEffect {\n test: EffectTest\n read: EffectRead\n}\n\n/**\n * Wraps a per-element effect so it also accepts selectors and element\n * lists. `test`, `read` and `get` still address a single element, so the\n * result can be registered with `animate.addEffect()`.\n */\nexport function createSelectorEffect(\n subjectEffect: AnimateEffect\n): SelectorAnimateEffect\nexport function createSelectorEffect(\n subjectEffect: Effect\n): SelectorEffect\nexport function createSelectorEffect(\n subjectEffect: Effect\n): SelectorEffect {\n const effect = (\n subject: T | ElementOrSelector,\n values: Record\n ) => {\n const elements = resolveElements(subject as ElementOrSelector)\n const subscriptions: VoidFunction[] = []\n\n for (const element of elements) {\n const remove = subjectEffect(element as T, values)\n subscriptions.push(remove)\n }\n\n return () => {\n for (const remove of subscriptions) remove()\n }\n }\n\n const { test, read, get, flush, state } = subjectEffect\n\n return Object.assign(effect, {\n test,\n read,\n get: get as SelectorEffect[\"get\"],\n flush,\n state,\n })\n}\n"],"names":[],"mappings":";;AAgDM,SAAU,oBAAoB,CAChC,aAAwB,EAAA;AAExB,IAAA,MAAM,MAAM,GAAG,CACX,OAA8B,EAC9B,MAAmC,KACnC;AACA,QAAA,MAAM,QAAQ,GAAG,eAAe,CAAC,OAA4B,CAAC;QAC9D,MAAM,aAAa,GAAmB,EAAE;AAExC,QAAA,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE;YAC5B,MAAM,MAAM,GAAG,aAAa,CAAC,OAAY,EAAE,MAAM,CAAC;AAClD,YAAA,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC;QAC9B;AAEA,QAAA,OAAO,MAAK;YACR,KAAK,MAAM,MAAM,IAAI,aAAa;AAAE,gBAAA,MAAM,EAAE;AAChD,QAAA,CAAC;AACL,IAAA,CAAC;AAED,IAAA,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,aAAa;AAEvD,IAAA,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE;QACzB,IAAI;QACJ,IAAI;AACJ,QAAA,GAAG,EAAE,GAA+B;QACpC,KAAK;QACL,KAAK;AACR,KAAA,CAAC;AACN;;;;"}