{"version":3,"file":"index.mjs","sources":["../../../../packages/hooks/use-event-watch/index.ts"],"sourcesContent":["import { watch, WatchOptions, WatchSource } from 'vue'\n\n/**\n * 监听一个响应式值的改变并根据是否是由事件改变执行不同的回调\n * @param source 监听的响应值\n * @param callback 值改变时的回调\n * @returns\n */\nexport const useEventWatch = <T extends any = any, Immediate extends Readonly<boolean> = false>(\n  source: WatchSource<T>,\n  callback?: {\n    /** 值改变时的回调 */\n    onChange?: (v: T) => void\n    /** 通过事件触发的回调 */\n    onChangeByEvent?: (v: T) => void,\n    /** 通过非事件触发的回调 */\n    onChangeNotByEvent?: (v: T) => void\n  },\n  options?: WatchOptions<Immediate>\n) => {\n  let changeByEvent = false\n\n  /**\n   * 设置事件\n   * @param isEvent 是否用户事件\n   */\n  const runEvent = (event: () => any) => {\n    changeByEvent = true\n    event()\n    changeByEvent = false\n  }\n\n  const stop = watch(source, v => {\n    if (!callback) return\n    callback.onChange?.(v)\n    if (changeByEvent) {\n      callback.onChangeByEvent?.(v)\n    } else {\n      callback.onChangeNotByEvent?.(v)\n    }\n  }, options)\n  return [\n    runEvent,\n    stop\n  ] as const\n}\n\n\n\n"],"names":[],"mappings":";;AAQO,MAAM,aAAgB,GAAA,CAC3B,MACA,EAAA,QAAA,EAQA,OACG,KAAA;AACH,EAAA,IAAI,aAAgB,GAAA,KAAA,CAAA;AAMpB,EAAM,MAAA,QAAA,GAAW,CAAC,KAAqB,KAAA;AACrC,IAAgB,aAAA,GAAA,IAAA,CAAA;AAChB,IAAM,KAAA,EAAA,CAAA;AACN,IAAgB,aAAA,GAAA,KAAA,CAAA;AAAA,GAClB,CAAA;AAEA,EAAM,MAAA,IAAA,GAAO,KAAM,CAAA,MAAA,EAAQ,CAAK,CAAA,KAAA;AAhClC,IAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,CAAA;AAiCI,IAAA,IAAI,CAAC,QAAA;AAAU,MAAA,OAAA;AACf,IAAA,CAAA,EAAA,GAAA,QAAA,CAAS,aAAT,IAAoB,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAA,CAAA,QAAA,EAAA,CAAA,CAAA,CAAA;AACpB,IAAA,IAAI,aAAe,EAAA;AACjB,MAAA,CAAA,EAAA,GAAA,QAAA,CAAS,oBAAT,IAA2B,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAA,CAAA,QAAA,EAAA,CAAA,CAAA,CAAA;AAAA,KACtB,MAAA;AACL,MAAA,CAAA,EAAA,GAAA,QAAA,CAAS,uBAAT,IAA8B,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAA,CAAA,QAAA,EAAA,CAAA,CAAA,CAAA;AAAA,KAChC;AAAA,KACC,OAAO,CAAA,CAAA;AACV,EAAO,OAAA;AAAA,IACL,QAAA;AAAA,IACA,IAAA;AAAA,GACF,CAAA;AACF;;;;"}