当前位置: 首页>>代码示例>>TypeScript>>正文


TypeScript pluck.pluck函数代码示例

本文整理汇总了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)
                    );
                })
            );
        })
    );
}
开发者ID:BrowserSync,项目名称:browser-sync,代码行数:58,代码来源:scroll.listener.ts

示例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))
    );
}
开发者ID:BrowserSync,项目名称:browser-sync,代码行数:13,代码来源:FormToggleEvent.ts

示例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))
    );
}
开发者ID:BrowserSync,项目名称:browser-sync,代码行数:15,代码来源:KeyupEvent.ts

示例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]);
                 }
             }
         })
     );
 },
开发者ID:BrowserSync,项目名称:browser-sync,代码行数:27,代码来源:log.ts

示例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);
                })
            );
        })
    );
}
开发者ID:BrowserSync,项目名称:browser-sync,代码行数:35,代码来源:form-inputs.listener.ts

示例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];
        })
    );
}
开发者ID:BrowserSync,项目名称:browser-sync,代码行数:17,代码来源:ScrollEvent.ts

示例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);
        })
    );
}
开发者ID:BrowserSync,项目名称:browser-sync,代码行数:17,代码来源:ClickEvent.ts

示例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))
    );
}
开发者ID:BrowserSync,项目名称:browser-sync,代码行数:10,代码来源:BrowserLocation.ts

示例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()
     );
 };
开发者ID:BrowserSync,项目名称:browser-sync,代码行数:12,代码来源:socket-messages.ts

示例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);
        })
    );
}
开发者ID:BrowserSync,项目名称:browser-sync,代码行数:18,代码来源:link-replace.dom-effect.ts


注:本文中的rxjs/operators/pluck.pluck函数示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。