@trellisjs/plugin-pagination 0.1.0-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,10 @@
1
+ import { TrellisPlugin } from '@trellisjs/core';
2
+
3
+ /**
4
+ * 建立分頁插件實例。
5
+ * 管理資料的頁碼導航。
6
+ * 會響應上游插件(排序、篩選)的資料變更並重新分頁。
7
+ */
8
+ declare function createPaginationPlugin(): TrellisPlugin;
9
+
10
+ export { createPaginationPlugin };
@@ -0,0 +1,10 @@
1
+ import { TrellisPlugin } from '@trellisjs/core';
2
+
3
+ /**
4
+ * 建立分頁插件實例。
5
+ * 管理資料的頁碼導航。
6
+ * 會響應上游插件(排序、篩選)的資料變更並重新分頁。
7
+ */
8
+ declare function createPaginationPlugin(): TrellisPlugin;
9
+
10
+ export { createPaginationPlugin };
package/dist/index.js ADDED
@@ -0,0 +1,111 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+
20
+ // src/index.ts
21
+ var index_exports = {};
22
+ __export(index_exports, {
23
+ createPaginationPlugin: () => createPaginationPlugin
24
+ });
25
+ module.exports = __toCommonJS(index_exports);
26
+
27
+ // src/pagination-plugin.ts
28
+ function createPaginationPlugin() {
29
+ return {
30
+ name: "pagination",
31
+ install(api) {
32
+ let sourceData = [...api.getState().data];
33
+ let selfUpdate = false;
34
+ applyPagination(api, sourceData, true);
35
+ api.subscribe((newState) => {
36
+ if (selfUpdate) {
37
+ selfUpdate = false;
38
+ return;
39
+ }
40
+ sourceData = newState.data;
41
+ selfUpdate = true;
42
+ applyPagination(api, sourceData, true);
43
+ });
44
+ api.on("pagination:next", () => {
45
+ const state = api.getState();
46
+ const totalPages = getTotalPages(sourceData.length, state.pagination.pageSize);
47
+ if (state.pagination.page >= totalPages) return;
48
+ const newPage = state.pagination.page + 1;
49
+ const start = (newPage - 1) * state.pagination.pageSize;
50
+ selfUpdate = true;
51
+ api.setState(() => ({
52
+ pagination: buildPagination(newPage, state.pagination.pageSize, sourceData.length),
53
+ data: sourceData.slice(start, start + state.pagination.pageSize)
54
+ }));
55
+ });
56
+ api.on("pagination:prev", () => {
57
+ const state = api.getState();
58
+ if (state.pagination.page <= 1) return;
59
+ const newPage = state.pagination.page - 1;
60
+ const start = (newPage - 1) * state.pagination.pageSize;
61
+ selfUpdate = true;
62
+ api.setState(() => ({
63
+ pagination: buildPagination(newPage, state.pagination.pageSize, sourceData.length),
64
+ data: sourceData.slice(start, start + state.pagination.pageSize)
65
+ }));
66
+ });
67
+ api.on("pagination:goto", (payload) => {
68
+ const { page } = payload;
69
+ const state = api.getState();
70
+ const totalPages = getTotalPages(sourceData.length, state.pagination.pageSize);
71
+ const target = Math.max(1, Math.min(page, totalPages));
72
+ const start = (target - 1) * state.pagination.pageSize;
73
+ selfUpdate = true;
74
+ api.setState(() => ({
75
+ pagination: buildPagination(target, state.pagination.pageSize, sourceData.length),
76
+ data: sourceData.slice(start, start + state.pagination.pageSize)
77
+ }));
78
+ });
79
+ api.on("pagination:pageSize", (payload) => {
80
+ const { pageSize } = payload;
81
+ selfUpdate = true;
82
+ api.setState(() => ({
83
+ pagination: buildPagination(1, pageSize, sourceData.length),
84
+ data: sourceData.slice(0, pageSize)
85
+ }));
86
+ });
87
+ }
88
+ };
89
+ }
90
+ function buildPagination(page, pageSize, totalItems) {
91
+ return { page, pageSize, totalItems };
92
+ }
93
+ function getTotalPages(totalCount, pageSize) {
94
+ return Math.max(1, Math.ceil(totalCount / pageSize));
95
+ }
96
+ function applyPagination(api, sourceData, resetToPage1) {
97
+ const state = api.getState();
98
+ const page = resetToPage1 ? 1 : state.pagination.page;
99
+ const { pageSize } = state.pagination;
100
+ const start = (page - 1) * pageSize;
101
+ const sliced = sourceData.slice(start, start + pageSize);
102
+ api.setState(() => ({
103
+ pagination: buildPagination(page, pageSize, sourceData.length),
104
+ data: sliced
105
+ }));
106
+ }
107
+ // Annotate the CommonJS export names for ESM import in node:
108
+ 0 && (module.exports = {
109
+ createPaginationPlugin
110
+ });
111
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/index.ts","../src/pagination-plugin.ts"],"sourcesContent":["export { createPaginationPlugin } from './pagination-plugin';\n","import type { TrellisPlugin, TrellisAPI, DataRow, PaginationState } from '@trellisjs/core';\n\n/**\n * 建立分頁插件實例。\n * 管理資料的頁碼導航。\n * 會響應上游插件(排序、篩選)的資料變更並重新分頁。\n */\nexport function createPaginationPlugin(): TrellisPlugin {\n return {\n name: 'pagination',\n\n install(api: TrellisAPI) {\n // 儲存分頁前的來源資料(可能已排序/篩選)\n let sourceData: DataRow[] = [...api.getState().data];\n // 防止自己的 setState 觸發重複分頁\n let selfUpdate = false;\n\n // 套用初始分頁\n applyPagination(api, sourceData, true);\n\n // 訂閱狀態變更 — 當上游插件(sort/filter)改變 data 時重新分頁\n api.subscribe((newState) => {\n if (selfUpdate) {\n selfUpdate = false;\n return;\n }\n // 上游插件改變了資料 — 採用為新的來源並重設到第 1 頁\n sourceData = newState.data;\n selfUpdate = true;\n applyPagination(api, sourceData, true);\n });\n\n api.on('pagination:next', () => {\n const state = api.getState();\n const totalPages = getTotalPages(sourceData.length, state.pagination.pageSize);\n if (state.pagination.page >= totalPages) return;\n const newPage = state.pagination.page + 1;\n const start = (newPage - 1) * state.pagination.pageSize;\n selfUpdate = true;\n api.setState(() => ({\n pagination: buildPagination(newPage, state.pagination.pageSize, sourceData.length),\n data: sourceData.slice(start, start + state.pagination.pageSize),\n }));\n });\n\n api.on('pagination:prev', () => {\n const state = api.getState();\n if (state.pagination.page <= 1) return;\n const newPage = state.pagination.page - 1;\n const start = (newPage - 1) * state.pagination.pageSize;\n selfUpdate = true;\n api.setState(() => ({\n pagination: buildPagination(newPage, state.pagination.pageSize, sourceData.length),\n data: sourceData.slice(start, start + state.pagination.pageSize),\n }));\n });\n\n api.on('pagination:goto', (payload) => {\n const { page } = payload as { page: number };\n const state = api.getState();\n const totalPages = getTotalPages(sourceData.length, state.pagination.pageSize);\n const target = Math.max(1, Math.min(page, totalPages));\n const start = (target - 1) * state.pagination.pageSize;\n selfUpdate = true;\n api.setState(() => ({\n pagination: buildPagination(target, state.pagination.pageSize, sourceData.length),\n data: sourceData.slice(start, start + state.pagination.pageSize),\n }));\n });\n\n api.on('pagination:pageSize', (payload) => {\n const { pageSize } = payload as { pageSize: number };\n selfUpdate = true;\n api.setState(() => ({\n pagination: buildPagination(1, pageSize, sourceData.length),\n data: sourceData.slice(0, pageSize),\n }));\n });\n },\n };\n}\n\nfunction buildPagination(page: number, pageSize: number, totalItems: number): PaginationState {\n return { page, pageSize, totalItems };\n}\n\nfunction getTotalPages(totalCount: number, pageSize: number): number {\n return Math.max(1, Math.ceil(totalCount / pageSize));\n}\n\nfunction applyPagination(api: TrellisAPI, sourceData: DataRow[], resetToPage1?: boolean): void {\n const state = api.getState();\n const page = resetToPage1 ? 1 : state.pagination.page;\n const { pageSize } = state.pagination;\n const start = (page - 1) * pageSize;\n const sliced = sourceData.slice(start, start + pageSize);\n\n api.setState(() => ({\n pagination: buildPagination(page, pageSize, sourceData.length),\n data: sliced,\n }));\n}\n"],"mappings":"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","names":[]}
package/dist/index.mjs ADDED
@@ -0,0 +1,84 @@
1
+ // src/pagination-plugin.ts
2
+ function createPaginationPlugin() {
3
+ return {
4
+ name: "pagination",
5
+ install(api) {
6
+ let sourceData = [...api.getState().data];
7
+ let selfUpdate = false;
8
+ applyPagination(api, sourceData, true);
9
+ api.subscribe((newState) => {
10
+ if (selfUpdate) {
11
+ selfUpdate = false;
12
+ return;
13
+ }
14
+ sourceData = newState.data;
15
+ selfUpdate = true;
16
+ applyPagination(api, sourceData, true);
17
+ });
18
+ api.on("pagination:next", () => {
19
+ const state = api.getState();
20
+ const totalPages = getTotalPages(sourceData.length, state.pagination.pageSize);
21
+ if (state.pagination.page >= totalPages) return;
22
+ const newPage = state.pagination.page + 1;
23
+ const start = (newPage - 1) * state.pagination.pageSize;
24
+ selfUpdate = true;
25
+ api.setState(() => ({
26
+ pagination: buildPagination(newPage, state.pagination.pageSize, sourceData.length),
27
+ data: sourceData.slice(start, start + state.pagination.pageSize)
28
+ }));
29
+ });
30
+ api.on("pagination:prev", () => {
31
+ const state = api.getState();
32
+ if (state.pagination.page <= 1) return;
33
+ const newPage = state.pagination.page - 1;
34
+ const start = (newPage - 1) * state.pagination.pageSize;
35
+ selfUpdate = true;
36
+ api.setState(() => ({
37
+ pagination: buildPagination(newPage, state.pagination.pageSize, sourceData.length),
38
+ data: sourceData.slice(start, start + state.pagination.pageSize)
39
+ }));
40
+ });
41
+ api.on("pagination:goto", (payload) => {
42
+ const { page } = payload;
43
+ const state = api.getState();
44
+ const totalPages = getTotalPages(sourceData.length, state.pagination.pageSize);
45
+ const target = Math.max(1, Math.min(page, totalPages));
46
+ const start = (target - 1) * state.pagination.pageSize;
47
+ selfUpdate = true;
48
+ api.setState(() => ({
49
+ pagination: buildPagination(target, state.pagination.pageSize, sourceData.length),
50
+ data: sourceData.slice(start, start + state.pagination.pageSize)
51
+ }));
52
+ });
53
+ api.on("pagination:pageSize", (payload) => {
54
+ const { pageSize } = payload;
55
+ selfUpdate = true;
56
+ api.setState(() => ({
57
+ pagination: buildPagination(1, pageSize, sourceData.length),
58
+ data: sourceData.slice(0, pageSize)
59
+ }));
60
+ });
61
+ }
62
+ };
63
+ }
64
+ function buildPagination(page, pageSize, totalItems) {
65
+ return { page, pageSize, totalItems };
66
+ }
67
+ function getTotalPages(totalCount, pageSize) {
68
+ return Math.max(1, Math.ceil(totalCount / pageSize));
69
+ }
70
+ function applyPagination(api, sourceData, resetToPage1) {
71
+ const state = api.getState();
72
+ const page = resetToPage1 ? 1 : state.pagination.page;
73
+ const { pageSize } = state.pagination;
74
+ const start = (page - 1) * pageSize;
75
+ const sliced = sourceData.slice(start, start + pageSize);
76
+ api.setState(() => ({
77
+ pagination: buildPagination(page, pageSize, sourceData.length),
78
+ data: sliced
79
+ }));
80
+ }
81
+ export {
82
+ createPaginationPlugin
83
+ };
84
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/pagination-plugin.ts"],"sourcesContent":["import type { TrellisPlugin, TrellisAPI, DataRow, PaginationState } from '@trellisjs/core';\n\n/**\n * 建立分頁插件實例。\n * 管理資料的頁碼導航。\n * 會響應上游插件(排序、篩選)的資料變更並重新分頁。\n */\nexport function createPaginationPlugin(): TrellisPlugin {\n return {\n name: 'pagination',\n\n install(api: TrellisAPI) {\n // 儲存分頁前的來源資料(可能已排序/篩選)\n let sourceData: DataRow[] = [...api.getState().data];\n // 防止自己的 setState 觸發重複分頁\n let selfUpdate = false;\n\n // 套用初始分頁\n applyPagination(api, sourceData, true);\n\n // 訂閱狀態變更 — 當上游插件(sort/filter)改變 data 時重新分頁\n api.subscribe((newState) => {\n if (selfUpdate) {\n selfUpdate = false;\n return;\n }\n // 上游插件改變了資料 — 採用為新的來源並重設到第 1 頁\n sourceData = newState.data;\n selfUpdate = true;\n applyPagination(api, sourceData, true);\n });\n\n api.on('pagination:next', () => {\n const state = api.getState();\n const totalPages = getTotalPages(sourceData.length, state.pagination.pageSize);\n if (state.pagination.page >= totalPages) return;\n const newPage = state.pagination.page + 1;\n const start = (newPage - 1) * state.pagination.pageSize;\n selfUpdate = true;\n api.setState(() => ({\n pagination: buildPagination(newPage, state.pagination.pageSize, sourceData.length),\n data: sourceData.slice(start, start + state.pagination.pageSize),\n }));\n });\n\n api.on('pagination:prev', () => {\n const state = api.getState();\n if (state.pagination.page <= 1) return;\n const newPage = state.pagination.page - 1;\n const start = (newPage - 1) * state.pagination.pageSize;\n selfUpdate = true;\n api.setState(() => ({\n pagination: buildPagination(newPage, state.pagination.pageSize, sourceData.length),\n data: sourceData.slice(start, start + state.pagination.pageSize),\n }));\n });\n\n api.on('pagination:goto', (payload) => {\n const { page } = payload as { page: number };\n const state = api.getState();\n const totalPages = getTotalPages(sourceData.length, state.pagination.pageSize);\n const target = Math.max(1, Math.min(page, totalPages));\n const start = (target - 1) * state.pagination.pageSize;\n selfUpdate = true;\n api.setState(() => ({\n pagination: buildPagination(target, state.pagination.pageSize, sourceData.length),\n data: sourceData.slice(start, start + state.pagination.pageSize),\n }));\n });\n\n api.on('pagination:pageSize', (payload) => {\n const { pageSize } = payload as { pageSize: number };\n selfUpdate = true;\n api.setState(() => ({\n pagination: buildPagination(1, pageSize, sourceData.length),\n data: sourceData.slice(0, pageSize),\n }));\n });\n },\n };\n}\n\nfunction buildPagination(page: number, pageSize: number, totalItems: number): PaginationState {\n return { page, pageSize, totalItems };\n}\n\nfunction getTotalPages(totalCount: number, pageSize: number): number {\n return Math.max(1, Math.ceil(totalCount / pageSize));\n}\n\nfunction applyPagination(api: TrellisAPI, sourceData: DataRow[], resetToPage1?: boolean): void {\n const state = api.getState();\n const page = resetToPage1 ? 1 : state.pagination.page;\n const { pageSize } = state.pagination;\n const start = (page - 1) * pageSize;\n const sliced = sourceData.slice(start, start + pageSize);\n\n api.setState(() => ({\n pagination: buildPagination(page, pageSize, sourceData.length),\n data: sliced,\n }));\n}\n"],"mappings":"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","names":[]}
package/package.json ADDED
@@ -0,0 +1,41 @@
1
+ {
2
+ "name": "@trellisjs/plugin-pagination",
3
+ "version": "0.1.0-alpha.1",
4
+ "description": "Trellis 分頁插件 — 基本頁碼導航",
5
+ "main": "./dist/index.js",
6
+ "module": "./dist/index.mjs",
7
+ "types": "./dist/index.d.mts",
8
+ "exports": {
9
+ ".": {
10
+ "import": {
11
+ "types": "./dist/index.d.mts",
12
+ "default": "./dist/index.mjs"
13
+ },
14
+ "require": {
15
+ "types": "./dist/index.d.ts",
16
+ "default": "./dist/index.js"
17
+ }
18
+ }
19
+ },
20
+ "files": [
21
+ "dist"
22
+ ],
23
+ "scripts": {
24
+ "build": "tsup",
25
+ "dev": "tsup --watch",
26
+ "test": "vitest run",
27
+ "test:watch": "vitest",
28
+ "clean": "rm -rf dist"
29
+ },
30
+ "peerDependencies": {
31
+ "@trellisjs/core": "workspace:*"
32
+ },
33
+ "devDependencies": {
34
+ "@trellisjs/core": "workspace:*",
35
+ "tsup": "^8.4.0",
36
+ "typescript": "^5.7.0",
37
+ "vitest": "^3.1.0"
38
+ },
39
+ "license": "MIT",
40
+ "sideEffects": false
41
+ }