2020-03-04 17:35:52 +01:00
|
|
|
import { writable } from "svelte/store"
|
2020-02-27 16:45:28 +01:00
|
|
|
|
2020-03-30 12:20:55 +02:00
|
|
|
function createItemsStore(componentOnSelect, initialState = []) {
|
|
|
|
const { subscribe, set, update } = writable(initialState)
|
2020-02-27 16:45:28 +01:00
|
|
|
|
|
|
|
function addItem(item) {
|
|
|
|
update(items => {
|
2020-03-04 17:35:52 +01:00
|
|
|
return [...items, item]
|
2020-02-27 16:45:28 +01:00
|
|
|
})
|
|
|
|
if (componentOnSelect) {
|
2020-03-04 17:35:52 +01:00
|
|
|
componentOnSelect()
|
2020-02-27 16:45:28 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
2020-03-27 17:58:32 +01:00
|
|
|
function addSingleItem(item) {
|
|
|
|
set([item])
|
|
|
|
if (componentOnSelect) {
|
|
|
|
componentOnSelect()
|
2020-02-27 16:45:28 +01:00
|
|
|
}
|
2020-03-27 17:58:32 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
function removeItem(itemId) {
|
|
|
|
update(items => {
|
|
|
|
let index = getItemIdx(items, itemId)
|
|
|
|
items.splice(index, 1)
|
|
|
|
return items
|
|
|
|
})
|
|
|
|
if (componentOnSelect) {
|
|
|
|
componentOnSelect()
|
2020-02-27 16:45:28 +01:00
|
|
|
}
|
2020-03-27 17:58:32 +01:00
|
|
|
}
|
2020-02-27 16:45:28 +01:00
|
|
|
|
2020-03-27 17:58:32 +01:00
|
|
|
function clearItems() {
|
|
|
|
set([])
|
|
|
|
if (componentOnSelect) {
|
|
|
|
componentOnSelect()
|
2020-02-27 16:45:28 +01:00
|
|
|
}
|
2020-03-27 17:58:32 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
function getItemIdx(items, itemId) {
|
|
|
|
return items.findIndex(i => i && i._id === itemId)
|
|
|
|
}
|
|
|
|
|
|
|
|
return {
|
|
|
|
subscribe,
|
|
|
|
addItem,
|
|
|
|
addSingleItem,
|
|
|
|
removeItem,
|
|
|
|
clearItems,
|
|
|
|
getItemIdx,
|
|
|
|
}
|
2020-02-27 16:45:28 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
export default createItemsStore
|