export default function intent(domSource: DOMSource): Stream<ZapSpeed> { return xs.merge( domSource.select('.slowSpeedButton').events('click').mapTo('slow' as ZapSpeed), domSource.select('.normalSpeedButton').events('click').mapTo('normal' as ZapSpeed), domSource.select('.fastSpeedButton').events('click').mapTo('fast' as ZapSpeed), ); }
export default function TeamIntent(DOM : DOMSource) : Stream<Reducer> { const teamMemberClick$ = DOM.select('.team-member').events('click') const teamMemberBioAnimationEnd$ = DOM.select('.team-member > p').events('animationend') const startTeamMemberBioAnimation$ = teamMemberClick$.map(ev => buildStartTeamMemberBioAnimationReducer(ev)) const finishTeamMemberBioAnimation$ = teamMemberBioAnimationEnd$.map(ev => buildFinishTeamMemberBioAnimationReducer(ev)) return xs.merge<Reducer>( startTeamMemberBioAnimation$, finishTeamMemberBioAnimation$ ) }
export function routes(DOM: DOMSource): Stream<string> { return DOM.select('[data-navigate]').events('click').map(e => { const he = e.target as HTMLElement const route = he.dataset.navigate as string return `/${route}` }) }
export function speech(DOM: DOMSource): Stream<string> { return DOM.select('[data-speech]').events('click').map(e => { const he = e.target as HTMLElement const value = he.dataset.speech as string const text = he.textContent ? he.textContent : '' const speech = value === '<text>' ? text : value return speech }) }
export default function EventIntent(DOM : DOMSource) : Stream<Reducer> { const eventDescriptionClick$ = DOM.select('.event-description').events('click') const eventDescriptionAnimationEnd$ = DOM.select('.event-description > p').events('animationend') const startEventDescriptionAnimation$ = eventDescriptionClick$.map(ev => buildStartEventDescriptionAnimationReducer(ev)) const finishEventDescriptionAnimation$ = eventDescriptionAnimationEnd$.map(ev => buildFinishEventDescriptionAnimationReducer(ev)) const speakerClick$ = DOM.select('.speaker').events('click') const speakerBioAnimationEnd$ = DOM.select('.speaker > p').events('animationend') const startSpeakerBioAnimation$ = speakerClick$.map(ev => buildStartSpeakerBioAnimationReducer(ev)) const finishSpeakerBioAnimation$ = speakerBioAnimationEnd$.map(ev => buildFinishSpeakerBioAnimationReducer(ev)) return xs.merge<Reducer>( startEventDescriptionAnimation$, finishEventDescriptionAnimation$, startSpeakerBioAnimation$, finishSpeakerBioAnimation$ ) }
export function logout(DOM: DOMSource): Stream<Logout> { return DOM.select('[data-action="logout"]') .events('click') .mapTo({ action: 'logout' } as Logout) }