UNPKG

@mdfriday/foundry

Version:

The core engine of MDFriday. Convert Markdown and shortcodes into fully themed static sites – Hugo-style, powered by TypeScript.

104 lines 3.15 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.SitePager = void 0; /** * TypeScript equivalent of Go's SitePager struct * This implements the Pager interface and wraps the content layer's Pager * Equivalent to golang's type SitePager struct in domain/site/entity/paginator.go * Following the same pattern as site.Page implements ContentPage */ class SitePager { constructor(page, pager) { this.page = page; this.pager = pager; } // ================================================================= // PAGER INTERFACE IMPLEMENTATION - DELEGATE TO CONTENT LAYER // This follows golang's pattern where domain/site just wraps domain/contenthub // ================================================================= pageNumber() { return this.pager.pageNumber(); } totalPages() { return this.pager.totalPages(); } url() { return this.pager.url(); } pages() { return this.pager.pages(); } pagers() { return this.pager.pagers(); } first() { return this.pager.first(); } last() { return this.pager.last(); } hasPrev() { return this.pager.hasPrev(); } prev() { return this.pager.prev(); } hasNext() { return this.pager.hasNext(); } next() { return this.pager.next(); } // ================================================================= // TEMPLATE-FRIENDLY PROPERTIES (UPPERCASE) // These provide template access to the underlying methods // ================================================================= get PageNumber() { return this.pageNumber(); } get TotalPages() { return this.totalPages(); } get URL() { let targetPath = this.url(); if (targetPath.startsWith('/')) { targetPath = targetPath.slice(1); } return this.page.Site.getURL().relURL(targetPath); } get HasPrev() { return this.hasPrev(); } get HasNext() { return this.hasNext(); } // For First, Last, Prev, Next - wrap them as SitePager if they exist get First() { const first = this.first(); return first ? new SitePager(this.page, first) : null; } get Last() { const last = this.last(); return last ? new SitePager(this.page, last) : null; } get Prev() { const prev = this.prev(); return prev ? new SitePager(this.page, prev) : null; } get Next() { const next = this.next(); return next ? new SitePager(this.page, next) : null; } // Pagers - wrap each as SitePager get Pagers() { return this.pagers().map(p => new SitePager(this.page, p)); } // Pages - convert content pages to site pages get Pages() { const contentPages = this.pages(); // Convert content pages to site pages - this matches golang's p.page.sitePages(p.Pager.Pages()) return this.page.sitePages(contentPages); } } exports.SitePager = SitePager; //# sourceMappingURL=pager.js.map