Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit ceb567b

Browse files
authored
feat(watchPausable): add options.initialState to control the initial active value (#4533)
1 parent f6a32be commit ceb567b

File tree

4 files changed

+220
-157
lines changed

4 files changed

+220
-157
lines changed

packages/shared/utils/filters.ts

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import type { AnyFn, ArgumentsType, Awaited, MaybeRefOrGetter, Pausable, Promisify } from './types'
2-
import { isRef, readonly, ref, toValue } from 'vue'
2+
import { isRef, readonly, toValue } from 'vue'
3+
import { toRef } from '../toRef'
34
import { noop } from './is'
45

56
export type FunctionArgs<Args extends any[] = any[], Return = void> = (...args: Args) => Return
@@ -209,14 +210,27 @@ export function throttleFilter(...args: any[]) {
209210
return filter
210211
}
211212

213+
export interface PausableFilterOptions {
214+
/**
215+
* The initial state
216+
*
217+
* @default 'active'
218+
*/
219+
initialState?: 'active' | 'paused'
220+
}
221+
212222
/**
213223
* EventFilter that gives extra controls to pause and resume the filter
214224
*
215225
* @param extendFilter Extra filter to apply when the PausableFilter is active, default to none
216-
*
226+
* @param options Options to configure the filter
217227
*/
218-
export function pausableFilter(extendFilter: EventFilter = bypassFilter): Pausable & { eventFilter: EventFilter } {
219-
const isActive = ref(true)
228+
export function pausableFilter(extendFilter: EventFilter = bypassFilter, options: PausableFilterOptions = {}): Pausable & { eventFilter: EventFilter } {
229+
const {
230+
initialState = 'active',
231+
} = options
232+
233+
const isActive = toRef(initialState === 'active')
220234

221235
function pause() {
222236
isActive.value = false

0 commit comments

Comments
 (0)