Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
@skava/state / src / typings.ts
Size: Mime:
// import '../globals.d'
import { ObservableMap } from 'xmobx/mobx'

/**
 * @todo connect to routing too
 *
 * @todo split smaller stores (loading, snackbar, scroll, resize)
 * @see https://mobx.js.org/best/store.html
 * can do focus here too probably & locale
 *
 * @todo can use context here  to show & set popups & modal & snackbar...
 */
export interface ApplicationScreen {
  height: number
  width: number
  availHeight: number
  availWidth: number
  isGrowing?: boolean
  isShrinking?: boolean
}

export interface ApplicationScroll {
  vertical: number
  horizontal: number
  direction: 'up' | 'down' | 'none' | string
}

export interface ApplicationPrev {
  screen: {
    height: number
    width: number
  }
}

export interface ApplicationSnackbar {
  isVisible?: boolean
  message?: string
  meta?: any
}

export interface ApplicationTypes {
  store: ObservableMap
  hasError: boolean
  /**
   * @todo @name snackBar
   */
  snackbar: ApplicationSnackbar
  // router....
  // not observable previous => snapshot
  prev: ApplicationPrev
  screen: ApplicationScreen
  scroll: ApplicationScroll
}

export type CurriedSet<Type = any> = (x: any) => Type & ApplicationTypes

/**
 * === common ===
 */

export type AnyVoidFnType = (arg?: any) => void

export type CommonStateInnerType = CommonPropsArgType & {
  toggleSelected: (event: MouseEvent) => void
  select: AnyVoidFnType
  setSelected: AnyVoidFnType
  handleSelect: AnyVoidFnType
  unselect: AnyVoidFnType
  handleUnSelect: AnyVoidFnType
  handleToggleSelected: (event?: MouseEvent) => void
  setOpen: AnyVoidFnType
  handleShow: AnyVoidFnType
  handleOpen: AnyVoidFnType
  show: AnyVoidFnType
  handleToggleVisibility: (event: MouseEvent) => void
  toggleVisibility: (event: MouseEvent) => void
  setClosed: AnyVoidFnType
  handleHide: AnyVoidFnType
  hide: AnyVoidFnType
  setActive: AnyVoidFnType
  activate: AnyVoidFnType
  handleActive: AnyVoidFnType
  setInactive: AnyVoidFnType
  deactivate: AnyVoidFnType
  handleInactive: AnyVoidFnType
  handleToggleActive: (event: MouseEvent) => void
  toggleActive: (event: MouseEvent) => void
  handleFocus: AnyVoidFnType
  setFocused: AnyVoidFnType
  focus: AnyVoidFnType
  handleBlur: AnyVoidFnType
  blur: AnyVoidFnType
  toggle: (name: keyof CommonStateInnerType) => void
  set: (name: keyof CommonStateInnerType, value?: unknown) => void

  setValue: (value: unknown) => void
  setLabel: (label: unknown) => void
}
export type CommonStateType = CommonPropsArgType & CommonStateInnerType
export interface CommonPropsArgType {
  isDefaultSelected?: boolean
  isSelected?: boolean
  isDisabled?: boolean
  isVisible?: boolean
  isActive?: boolean
  isFocused?: boolean

  state?: CommonStateType

  value?: any
  label?: any

  /**
   * unknown things... can add again...
   */
  // [key: string]: unknown
}
export interface CommonStateOptionsType {
  select?: boolean
  visible?: boolean
  active?: boolean
  focus?: boolean
  value?: boolean
  label?: boolean
}