najm-kit 2.7.2 → 2.8.0
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.
- package/CHANGELOG.md +20 -3
- package/README.md +87 -4
- package/dist/{NajmUIProvider-ClpHD-55.d.ts → NajmUIProvider-BSbXaqak.d.ts} +1 -1
- package/dist/adapters/app.d.ts +2 -2
- package/dist/adapters/app.mjs +2 -1
- package/dist/adapters/next.d.ts +2 -2
- package/dist/cardPagination-Bwf3tEeN.d.ts +65 -0
- package/dist/chunk-2NX2VKS2.mjs +42 -0
- package/dist/chunk-F5KXJCCJ.mjs +1 -0
- package/dist/chunk-JABLSOQN.mjs +114 -0
- package/dist/chunk-OUS7OYVA.mjs +54 -0
- package/dist/{chunk-QOP7L6RD.mjs → chunk-PCPMAEKP.mjs} +2 -104
- package/dist/format.d.ts +86 -0
- package/dist/format.mjs +2 -0
- package/dist/index.d.ts +61 -53
- package/dist/index.mjs +100 -21
- package/dist/{pagination-BvukSZir.d.ts → pagination.d.ts} +1 -53
- package/dist/pagination.mjs +1 -0
- package/dist/{paginationLabels-CY2PvbMj.d.ts → paginationLabels-dZLSNxfo.d.ts} +9 -2
- package/dist/query.d.ts +5 -3
- package/dist/query.mjs +4 -2
- package/package.json +11 -1
- package/dist/chunk-7J7DWGKB.mjs +0 -93
package/dist/chunk-7J7DWGKB.mjs
DELETED
|
@@ -1,93 +0,0 @@
|
|
|
1
|
-
import { useCallback, useSyncExternalStore } from 'react';
|
|
2
|
-
|
|
3
|
-
// src/hooks/useMediaQuery.ts
|
|
4
|
-
function useMediaQuery(query, serverSnapshot = false) {
|
|
5
|
-
const subscribe = useCallback(
|
|
6
|
-
(onStoreChange) => {
|
|
7
|
-
const media = window.matchMedia(query);
|
|
8
|
-
media.addEventListener("change", onStoreChange);
|
|
9
|
-
return () => media.removeEventListener("change", onStoreChange);
|
|
10
|
-
},
|
|
11
|
-
[query]
|
|
12
|
-
);
|
|
13
|
-
return useSyncExternalStore(
|
|
14
|
-
subscribe,
|
|
15
|
-
() => window.matchMedia(query).matches,
|
|
16
|
-
() => serverSnapshot
|
|
17
|
-
);
|
|
18
|
-
}
|
|
19
|
-
var DEFAULT_CARD_BREAKPOINT = 1024;
|
|
20
|
-
function useCardViewport(breakpoint = DEFAULT_CARD_BREAKPOINT) {
|
|
21
|
-
return useMediaQuery(`(max-width: ${breakpoint - 1}px)`);
|
|
22
|
-
}
|
|
23
|
-
function useDesktopTableMode(breakpoint = DEFAULT_CARD_BREAKPOINT) {
|
|
24
|
-
return useMediaQuery(`(min-width: ${breakpoint}px)`) ? "table" : "cards";
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
// src/components/table/cardPagination.ts
|
|
28
|
-
var DEFAULT_CARD_PAGINATION_KEY_PREFIX = "common.pagination";
|
|
29
|
-
function buildCardPaginationLabels(t, prefix = DEFAULT_CARD_PAGINATION_KEY_PREFIX) {
|
|
30
|
-
return {
|
|
31
|
-
loadMoreError: t(`${prefix}.loadMoreError`),
|
|
32
|
-
retryLabel: t(`${prefix}.retryLoadMore`),
|
|
33
|
-
itemsLoaded: (count) => t(`${prefix}.itemsLoaded`, { count })
|
|
34
|
-
};
|
|
35
|
-
}
|
|
36
|
-
function createCardPagination(state, labels = {}) {
|
|
37
|
-
const mode = state.mode ?? (state.cardViewport ? "infinite" : "paged");
|
|
38
|
-
if (mode === "paged") return { mode: "paged" };
|
|
39
|
-
if (mode === "all") return { mode: "all" };
|
|
40
|
-
return {
|
|
41
|
-
mode: "infinite",
|
|
42
|
-
hasNextPage: state.hasNextPage,
|
|
43
|
-
loadingMore: state.loadingMore,
|
|
44
|
-
loadMoreError: state.loadMoreError ? labels.loadMoreError : void 0,
|
|
45
|
-
onLoadMore: state.onLoadMore,
|
|
46
|
-
retryLabel: labels.retryLabel,
|
|
47
|
-
loadMoreErrorLabel: labels.loadMoreError,
|
|
48
|
-
itemsLoadedLabel: labels.itemsLoaded
|
|
49
|
-
};
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
// src/lib/pagination.ts
|
|
53
|
-
var DEFAULT_PAGE_SIZE = 25;
|
|
54
|
-
var DEFAULT_MAX_PAGE_SIZE = 100;
|
|
55
|
-
function toApiPage(result) {
|
|
56
|
-
return Array.isArray(result) ? { rows: result, total: null } : result;
|
|
57
|
-
}
|
|
58
|
-
function createOffsetPagination(pageIndex = 0, pageSize = DEFAULT_PAGE_SIZE, { maxLimit = DEFAULT_MAX_PAGE_SIZE } = {}) {
|
|
59
|
-
const safePageIndex = Math.max(0, Math.trunc(pageIndex));
|
|
60
|
-
const safePageSize = Math.min(maxLimit, Math.max(1, Math.trunc(pageSize)));
|
|
61
|
-
return { limit: safePageSize, offset: safePageIndex * safePageSize };
|
|
62
|
-
}
|
|
63
|
-
function getPageIndex({ limit, offset }) {
|
|
64
|
-
return Math.floor(Math.max(0, offset) / Math.max(1, limit));
|
|
65
|
-
}
|
|
66
|
-
async function fetchOffsetPage(fetchPage, pagination, { maxLimit = DEFAULT_MAX_PAGE_SIZE } = {}) {
|
|
67
|
-
const requestedLimit = Math.min(maxLimit, Math.max(1, pagination.limit));
|
|
68
|
-
const probeLimit = requestedLimit < maxLimit ? requestedLimit + 1 : requestedLimit;
|
|
69
|
-
const page = toApiPage(
|
|
70
|
-
await fetchPage({ limit: probeLimit, offset: pagination.offset })
|
|
71
|
-
);
|
|
72
|
-
const rows = page.rows.slice(0, requestedLimit);
|
|
73
|
-
const nextOffset = pagination.offset + rows.length;
|
|
74
|
-
if (page.total !== null) {
|
|
75
|
-
return {
|
|
76
|
-
rows,
|
|
77
|
-
hasNextPage: nextOffset < page.total,
|
|
78
|
-
nextOffset,
|
|
79
|
-
total: page.total
|
|
80
|
-
};
|
|
81
|
-
}
|
|
82
|
-
const hasNextPage = page.rows.length > requestedLimit || probeLimit === requestedLimit && page.rows.length === requestedLimit && toApiPage(await fetchPage({ limit: 1, offset: nextOffset })).rows.length > 0;
|
|
83
|
-
return { rows, hasNextPage, nextOffset, total: null };
|
|
84
|
-
}
|
|
85
|
-
function cleanQuery(query) {
|
|
86
|
-
return Object.fromEntries(
|
|
87
|
-
Object.entries(query).filter(
|
|
88
|
-
([, value]) => value !== void 0 && value !== null && value !== ""
|
|
89
|
-
)
|
|
90
|
-
);
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
export { DEFAULT_CARD_BREAKPOINT, DEFAULT_CARD_PAGINATION_KEY_PREFIX, DEFAULT_MAX_PAGE_SIZE, DEFAULT_PAGE_SIZE, buildCardPaginationLabels, cleanQuery, createCardPagination, createOffsetPagination, fetchOffsetPage, getPageIndex, useCardViewport, useDesktopTableMode, useMediaQuery };
|