svelte-common 6.15.64 → 6.17.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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "svelte-common",
3
- "version": "6.15.64",
3
+ "version": "6.17.0",
4
4
  "publishConfig": {
5
5
  "access": "public",
6
6
  "provenance": true
@@ -48,28 +48,28 @@
48
48
  "preview": "vite preview"
49
49
  },
50
50
  "dependencies": {
51
- "pacc": "^3.1.9",
52
- "svelte-command": "^3.0.20",
53
- "svelte-entitlement": "^2.0.27"
51
+ "pacc": "^3.3.0",
52
+ "svelte-command": "^3.0.22",
53
+ "svelte-entitlement": "^2.0.31"
54
54
  },
55
55
  "devDependencies": {
56
56
  "@semantic-release/commit-analyzer": "^13.0.1",
57
- "@semantic-release/exec": "^6.0.3",
57
+ "@semantic-release/exec": "^7.0.3",
58
58
  "@semantic-release/github": "^11.0.1",
59
59
  "@semantic-release/release-notes-generator": "^14.0.3",
60
60
  "@sveltejs/vite-plugin-svelte": "^5.0.3",
61
61
  "ava": "^6.2.0",
62
62
  "c8": "^10.1.3",
63
63
  "documentation": "^14.0.3",
64
- "mf-styling": "^3.2.7",
64
+ "mf-styling": "^3.2.11",
65
65
  "npm-pkgbuild": "^15.6.11",
66
- "semantic-release": "^24.2.1",
66
+ "semantic-release": "^24.2.2",
67
67
  "stylelint": "^16.14.1",
68
68
  "stylelint-config-standard": "^37.0.0",
69
- "svelte": "^5.19.4",
69
+ "svelte": "^5.19.10",
70
70
  "testcafe": "^3.7.1",
71
71
  "typescript": "^5.7.3",
72
- "vite": "^6.0.11",
72
+ "vite": "^6.1.0",
73
73
  "vite-plugin-compression2": "^1.3.3"
74
74
  },
75
75
  "peerDependencies": {
@@ -77,7 +77,7 @@
77
77
  },
78
78
  "optionalDependencies": {
79
79
  "mf-hosting-cloudflare": "^1.0.7",
80
- "mf-hosting-frontend": "^3.8.4"
80
+ "mf-hosting-frontend": "^3.9.1"
81
81
  },
82
82
  "repository": {
83
83
  "type": "git",
@@ -219,7 +219,7 @@ export class Pagination {
219
219
  * @see https://getbootstrap.com/docs/4.0/components/pagination
220
220
  * @see https://a11y-style-guide.com/style-guide/section-navigation.html#kssref-navigation-pagination
221
221
  */
222
- get pageNavigationElement() {
222
+ pageNavigationElement(options) {
223
223
  const nav = document.createElement("nav");
224
224
  nav.setAttribute("tabindex", "0");
225
225
  nav.setAttribute("aria-label", "pagination");
@@ -287,35 +287,56 @@ export class Pagination {
287
287
  }
288
288
 
289
289
  export function pageNavigation(elem, pg) {
290
- elem.replaceChildren(pg.pageNavigationElement);
290
+ elem.replaceChildren(pg.pageNavigationElement());
291
291
 
292
292
  // TODO destroy
293
293
  }
294
294
 
295
+ export const defaultNavigationItemOptions = {
296
+ numberOfItems: 7,
297
+ spreads: [[0], [1, 5, 25, 125, 625, 3125, 15625], [2, 3, 4, 10, 50, 100, 500]]
298
+ };
299
+
295
300
  /**
296
- * Generade actual sequence of page numbers to navigate to.
301
+ * Generate actual sequence of page numbers to navigate to.
297
302
  * @param {number} numberOfPages
298
303
  * @param {number} currentPage
299
- * @param {number} numberOfItems
304
+ * @param {Object} options
305
+ * @param {Number} options.numberOfItems
306
+ * @param {Number[][]} options.spreads
300
307
  * @return {Iterable<number>}
301
308
  */
302
- export function* navigationItems(
309
+ export function navigationItems(
303
310
  numberOfPages,
304
311
  currentPage,
305
- numberOfItems = 7
312
+ options = defaultNavigationItemOptions
306
313
  ) {
307
- const edge = 2;
308
- const side = 1;
309
- const step = numberOfPages >= 80 ? Math.floor(numberOfPages / 10) : undefined;
310
-
311
- for (let n = 1; n <= numberOfPages; n++) {
312
- if (
313
- n <= edge ||
314
- n > numberOfPages - edge ||
315
- n % step === 0 ||
316
- (n < currentPage + side && n > currentPage - side)
317
- ) {
318
- yield n;
314
+ if (numberOfPages === 0) {
315
+ return [];
316
+ }
317
+
318
+ const items = new Set();
319
+
320
+ const spread = (n, sides) => {
321
+ for (const side of sides) {
322
+ if (items.size === options.numberOfItems) {
323
+ return true;
324
+ }
325
+ if (n - side >= 1) {
326
+ items.add(n - side);
327
+ }
328
+ if (n + side <= numberOfPages) {
329
+ items.add(n + side);
330
+ }
331
+ }
332
+ return false;
333
+ };
334
+
335
+ for (const s of options.spreads) {
336
+ if (spread(currentPage, s) || spread(1, s) || spread(numberOfPages, s)) {
337
+ break;
319
338
  }
320
339
  }
340
+
341
+ return [...items].sort((a, b) => (a > b ? 1 : a < b ? -1 : 0));
321
342
  }
@@ -1,12 +1,17 @@
1
1
  export function pageNavigation(elem: any, pg: any): void;
2
2
  /**
3
- * Generade actual sequence of page numbers to navigate to.
3
+ * Generate actual sequence of page numbers to navigate to.
4
4
  * @param {number} numberOfPages
5
5
  * @param {number} currentPage
6
- * @param {number} numberOfItems
6
+ * @param {Object} options
7
+ * @param {Number} options.numberOfItems
8
+ * @param {Number[][]} options.spreads
7
9
  * @return {Iterable<number>}
8
10
  */
9
- export function navigationItems(numberOfPages: number, currentPage: number, numberOfItems?: number): Iterable<number>;
11
+ export function navigationItems(numberOfPages: number, currentPage: number, options?: {
12
+ numberOfItems: number;
13
+ spreads: number[][];
14
+ }): Iterable<number>;
10
15
  /**
11
16
  * Pagination support store.
12
17
  * Pages go from 1 ... numberOfPages
@@ -68,7 +73,11 @@ export class Pagination {
68
73
  * @see https://getbootstrap.com/docs/4.0/components/pagination
69
74
  * @see https://a11y-style-guide.com/style-guide/section-navigation.html#kssref-navigation-pagination
70
75
  */
71
- get pageNavigationElement(): HTMLElement;
76
+ pageNavigationElement(options: any): HTMLElement;
72
77
  [Symbol.iterator](): Generator<any, void, unknown>;
73
78
  #private;
74
79
  }
80
+ export namespace defaultNavigationItemOptions {
81
+ let numberOfItems: number;
82
+ let spreads: number[][];
83
+ }