PluginProbe
Extendify / trunk
Extendify vtrunk
3.2.1 3.2.0 3.1.6 3.1.5 3.1.4 3.1.3 3.1.2 3.1.1 3.1.0 3.0.6 3.0.5 3.0.4 trunk 0.1.0 0.10.0 0.10.1 0.10.2 0.11.0 0.11.1 0.2.0 0.3.0 0.3.1 0.4.0 0.5.0 0.6.0 All 127 releases
extendify / src / PageCreator / state / pages.js

pages.js in Extendify trunk, at src/PageCreator/state/pages.js

57 lines 1.5 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 import { pages } from '@page-creator/lib/pages';
2 import { create } from 'zustand';
3 import { devtools } from 'zustand/middleware';
4
5 const store = (set, get) => ({
6 pages: new Map(pages),
7 currentPageIndex: 0,
8 count: () => get().pages.size,
9 getPageOrder: () => Array.from(get().pages.keys()),
10 getCurrentPageData: () => get().pages.get(get().getCurrentPageSlug()),
11 getPageSlug: (idx) => get().getPageOrder()[idx],
12 getCurrentPageSlug: () => {
13 const page = get().getPageOrder()[get().currentPageIndex];
14 if (!page) {
15 get().setPage(0);
16 return get().getPageOrder()[0];
17 }
18 return page;
19 },
20 getPageData: (slug) => get().pages.get(slug),
21 getNextPageData: () => {
22 const nextIndex = get().currentPageIndex + 1;
23 if (nextIndex > get().count() - 1) return {};
24 return get().getPageData(get().getPageSlug(nextIndex));
25 },
26 setPage: (page) => {
27 // If page is a string, get the index
28 if (typeof page === 'string') {
29 page = get().getPageOrder().indexOf(page);
30 }
31 if (page > get().count() - 1) return;
32 if (page < 0) return;
33 set({ currentPageIndex: page });
34 },
35 findPreviousValidPage: (idx) => {
36 let prevIdx = idx;
37 do {
38 prevIdx -= 1;
39 } while (prevIdx > 0);
40 return prevIdx;
41 },
42 nextPage: () => {
43 const pageIndex = get().currentPageIndex + 1;
44 get().setPage(pageIndex);
45 },
46 previousPage: () => {
47 get().setPage(get().findPreviousValidPage(get().currentPageIndex));
48 },
49 });
50
51 const withDevtools = devtools(store, {
52 name: 'Extendify Page Creator Pages',
53 serialize: true,
54 });
55
56 export const usePagesStore = create(withDevtools);
57