本文整理汇总了TypeScript中rxjs/operators/pluck.pluck函数的典型用法代码示例。如果您正苦于以下问题:TypeScript pluck函数的具体用法?TypeScript pluck怎么用?TypeScript pluck使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了pluck函数的10个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的TypeScript代码示例。
示例1: getScrollStream
export function getScrollStream(
window: Window,
document: Document,
socket$: Inputs["socket$"],
option$: Inputs["option$"]
): Observable<OutgoingSocketEvent> {
const canSync$ = createTimedBooleanSwitch(
socket$.pipe(filter(([name]) => name === IncomingSocketNames.Scroll))
);
/**
* If the option 'scrollElementMapping' is provided
* we cache thw
* @type {Observable<(Element | null)[]>}
*/
const elemMap$ = option$.pipe(
pluck("scrollElementMapping"),
map((selectors: string[]) =>
selectors.map(selector => document.querySelector(selector))
)
);
return option$.pipe(
skip(1), // initial option set before the connection event
pluck("ghostMode", "scroll"),
distinctUntilChanged(),
switchMap(scroll => {
if (!scroll) return empty();
return fromEvent(document, "scroll", true).pipe(
map((e: Event) => e.target),
withLatestFrom(canSync$, elemMap$),
filter(([, canSync]) => Boolean(canSync)),
map(([target, canSync, elemMap]: [any, boolean, any[]]) => {
if (target === document) {
return ScrollEvent.outgoing(
getScrollPosition(window, document),
"document",
0
);
}
const elems = document.getElementsByTagName(target.tagName);
const index = Array.prototype.indexOf.call(
elems || [],
target
);
return ScrollEvent.outgoing(
getScrollPositionForElement(target),
target.tagName,
index,
elemMap.indexOf(target)
);
})
);
})
);
}
示例2: incomingInputsToggles
export function incomingInputsToggles(
xs: Observable<IncomingPayload>,
inputs: Inputs
) {
return xs.pipe(
withLatestFrom(
inputs.option$.pipe(pluck("ghostMode", "forms", "toggles")),
inputs.window$.pipe(pluck("location", "pathname"))
),
filter(([, toggles]) => toggles === true),
map(([event]) => setElementToggleValue(event))
);
}
示例3: incomingKeyupHandler
export function incomingKeyupHandler(
xs: Observable<IncomingPayload>,
inputs: Inputs
) {
return xs.pipe(
withLatestFrom(
inputs.option$.pipe(pluck("ghostMode", "forms", "inputs")),
inputs.window$.pipe(pluck("location", "pathname"))
),
filter(([event, canKeyup, pathname]) => {
return canKeyup && event.pathname === pathname;
}),
map(([event]) => setElementValue(event))
);
}
示例4: withLatestFrom
[LogNames.Log]: (xs: Observable<[LogNames, any]>, inputs: Inputs) => {
return xs.pipe(
/**
* access injectNotification from the options stream
*/
withLatestFrom(
inputs.logInstance$,
inputs.option$.pipe(pluck("injectNotification"))
),
/**
* only accept messages if injectNotification !== console
*/
filter(
([, , injectNotification]) => injectNotification === "console"
),
tap(([event, log]) => {
switch (event[0]) {
case LogNames.Info: {
return log.info.apply(log, event[1]);
}
case LogNames.Debug: {
return log.debug.apply(log, event[1]);
}
}
})
);
},
示例5: getFormInputStream
export function getFormInputStream(
document: Document,
socket$: Inputs["socket$"],
option$: Inputs["option$"]
): Observable<OutgoingSocketEvent> {
const canSync$ = createTimedBooleanSwitch(
socket$.pipe(filter(([name]) => name === IncomingSocketNames.Keyup))
);
return option$.pipe(
skip(1), // initial option set before the connection event
pluck("ghostMode", "forms", "inputs"),
distinctUntilChanged(),
switchMap(formInputs => {
if (!formInputs) {
return empty();
}
return fromEvent(document.body, "keyup", true).pipe(
map((e: Event) => e.target || e.srcElement),
filter(
(target: Element) =>
target.tagName === "INPUT" ||
target.tagName === "TEXTAREA"
),
withLatestFrom(canSync$),
filter(([, canSync]) => canSync),
map(([eventTarget]) => {
const target = getElementData(eventTarget);
const value = eventTarget.value;
return KeyupEvent.outgoing(target, value);
})
);
})
);
}
示例6: incomingScrollHandler
export function incomingScrollHandler(
xs: Observable<IncomingPayload>,
inputs: Inputs
) {
return xs.pipe(
withLatestFrom(
inputs.option$.pipe(pluck("ghostMode", "scroll")),
inputs.window$.pipe(pluck("location", "pathname"))
),
filter(([event, canScroll, pathname]) => {
return canScroll && event.pathname === pathname;
}),
map(([event]) => {
return [EffectNames.BrowserSetScroll, event];
})
);
}
示例7: withLatestFrom
export function incomingHandler$(
xs: Observable<IncomingPayload>,
inputs: Inputs
) {
return xs.pipe(
withLatestFrom(
inputs.option$.pipe(pluck("ghostMode", "clicks")),
inputs.window$.pipe(pluck("location", "pathname"))
),
filter(([event, canClick, pathname]) => {
return canClick && event.pathname === pathname;
}),
map(([event]) => {
return simulateClick(event);
})
);
}
示例8: incomingBrowserLocation
export function incomingBrowserLocation(
xs: Observable<IncomingPayload>,
inputs: Inputs
) {
return xs.pipe(
withLatestFrom(inputs.option$.pipe(pluck("ghostMode", "location"))),
filter(([, canSyncLocation]) => canSyncLocation === true),
map(([event]) => browserSetLocation(event))
);
}
示例9: function
return function(xs, inputs) {
return xs.pipe(
withLatestFrom(
inputs.io$,
inputs.window$.pipe(pluck("location", "pathname"))
),
tap(([event, io, pathname]) =>
io.emit(name, { ...event, pathname })
),
ignoreElements()
);
};
示例10: linkReplaceDomEffect
export function linkReplaceDomEffect(
xs: Observable<LinkReplacePayload>,
inputs: Inputs
) {
return xs.pipe(
withLatestFrom<LinkReplacePayload, any>(
inputs.option$.pipe(pluck("injectNotification"))
),
filter(([, inject]) => inject),
map(([incoming, inject]) => {
const message = `[LinkReplace] ${incoming.basename}`;
if (inject === "overlay") {
return Log.overlayInfo(message);
}
return Log.consoleInfo(message);
})
);
}