diff options
Diffstat (limited to 'alpinejs/packages/alpinejs/src/store.js')
-rw-r--r-- | alpinejs/packages/alpinejs/src/store.js | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/alpinejs/packages/alpinejs/src/store.js b/alpinejs/packages/alpinejs/src/store.js new file mode 100644 index 0000000..dc7bf94 --- /dev/null +++ b/alpinejs/packages/alpinejs/src/store.js @@ -0,0 +1,23 @@ +import { initInterceptors } from "./interceptor"; +import { reactive } from "./reactivity" + +let stores = {} +let isReactive = false + +export function store(name, value) { + if (! isReactive) { stores = reactive(stores); isReactive = true; } + + if (value === undefined) { + return stores[name] + } + + stores[name] = value + + if (typeof value === 'object' && value !== null && value.hasOwnProperty('init') && typeof value.init === 'function') { + stores[name].init() + } + + initInterceptors(stores[name]) +} + +export function getStores() { return stores } |