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/modules / ___dist / state-tree / ddd / state-tree.future.js.ddd
Size: Mime:
import { remove, concat } from 'ramda'
import { FavoriteSchemaModel, Typed } from 'omnischema'

@mobx(FavoriteSchemaModel)
class Model {
  @action
  addFavorite(favorite) {
    return self.list.concat(favorite)
  }

  @action
  removeFavorite(favorite) {
    self.list.remove(favorite)
  }

  @action
  removeFavoriteAt(index) {
    self.list = remove(index, 1, self.list)
  }

  @computed
  get totalFavorites() {
    return this.favorites.length
  }

  @selector
  findFavorite(predicate) {
    return this.favorites.find(item => predicate(attribute))
  }
}

const Model = self => class {
  // @action via `add, remove, delete, update`
  addFavorite(favorite) {
    return self.list.concat(favorite)
  }
  removeFavorite(favorite) {
    self.list.remove(favorite)
  }
  removeFavoriteAt(index) {
    self.list = remove(index, 1, self.list)
  }

  // @select based on `get, find, query, select, where`
  getTotalFavorites() {
    return self.favorites.length
  }
  findFavorite(predicate) {
    return self.favorites.find(item => predicate(attribute))
  }
}

export default mobx(Model).schema(FavoriteSchemaModel)

// ----

import { remove, concat } from 'ramda'
import { FavoriteSchemaModel, Typed } from 'omnischema'

const {MODEL, EMPTY} = Typed.name('Mobx').coerce(FavoriteSchemaModel)

export default MODEL
  .actions(self => ({
    addFavorite: favorite => self.list.concat(favorite),
    removeFavorite: favorite => self.list.remove(favorite),
    removeFavoriteAt: index => self.list = remove(index, 1, self.list)
  }))
  .views(self => ({
    get totalFavorites() {
      return self.favorites.length
    },
  }))
  .create(EMPTY)

// ----

import { remove, concat } from 'ramda'
import { FavoriteSchemaModel, Typed } from 'omnischema'

const {MODEL, EMPTY} = Typed.name('Mobx').coerce(FavoriteSchemaModel)

const actions = self => {
  const addFavorite = favorite => self.list.concat(toArray(favorite))
  const removeFavorite = favorite => self.list.remove(favorite)
  const removeFavoriteAt = index => self.list = remove(index, 1, self.list)
  return {addFavorite, removeFavorite, removeFavoriteAt}
}
const views = self => {
  return {
    get totalFavorites() {
      return self.favorites.length
    }
  }
}

export default MODEL
  .actions(actions)
  .views(views)
  .create(EMPTY)