PluginProbe
Extendify / 3.0.4
Extendify v3.0.4
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 3.0.4, 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