@quartz-community/bases-page 0.2.0 → 0.2.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.
- package/CHANGELOG.md +8 -0
- package/dist/{chunk-4HXXKSJ4.js → chunk-3MNNFWJ7.js} +3 -3
- package/dist/{chunk-4HXXKSJ4.js.map → chunk-3MNNFWJ7.js.map} +1 -1
- package/dist/{chunk-X2AZ5GOJ.js → chunk-Y4KGLVLV.js} +42 -3
- package/dist/chunk-Y4KGLVLV.js.map +1 -0
- package/dist/compiler/index.js +1 -1
- package/dist/components/index.js +2 -2
- package/dist/index.js +324 -290
- package/dist/index.js.map +1 -1
- package/package.json +5 -3
- package/dist/chunk-X2AZ5GOJ.js.map +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,13 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.2.1
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- 2858f17: Fix mixed-case tags not matching in bases filters. Tags are slugified during content processing but the filter comparison did not normalize case, causing `file.tags.contains("My-Tag")` to fail when the stored tag was `"my-tag"`.
|
|
8
|
+
|
|
9
|
+
Add `MMM` (abbreviated month name) and `MMMM` (full month name) tokens to the date `format()` function. Previously these tokens were not recognized, causing `file.ctime.format("MMM")` to return the raw token string instead of month names like "Jan" or "January".
|
|
10
|
+
|
|
3
11
|
All notable changes to this project will be documented in this file.
|
|
4
12
|
|
|
5
13
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { createRequire } from 'module';
|
|
2
2
|
import { viewRegistry, registerCustomViews } from './chunk-2AUMER56.js';
|
|
3
|
-
import { u, evaluate, evaluateFilter, resolvePropertyValue, S, transformLink, slugifyPath } from './chunk-
|
|
3
|
+
import { u, evaluate, evaluateFilter, resolvePropertyValue, S, transformLink, slugifyPath } from './chunk-Y4KGLVLV.js';
|
|
4
4
|
|
|
5
5
|
createRequire(import.meta.url);
|
|
6
6
|
|
|
@@ -925,5 +925,5 @@ var BasesBody_default = ((opts) => {
|
|
|
925
925
|
});
|
|
926
926
|
|
|
927
927
|
export { BasesBody_default, ViewSelector, i18n, registerBuiltinViews, resolveBasesEntries };
|
|
928
|
-
//# sourceMappingURL=chunk-
|
|
929
|
-
//# sourceMappingURL=chunk-
|
|
928
|
+
//# sourceMappingURL=chunk-3MNNFWJ7.js.map
|
|
929
|
+
//# sourceMappingURL=chunk-3MNNFWJ7.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/ViewSelector.tsx","../src/resolver.ts","../src/i18n/locales/en-US.ts","../src/i18n/index.ts","../src/components/shared/links.tsx","../src/components/shared/cell.tsx","../src/components/views/board.tsx","../src/components/views/cards.tsx","../src/components/views/gallery.tsx","../src/components/views/list.tsx","../src/components/shared/summary.tsx","../src/components/views/table.tsx","../src/components/views/index.ts","../src/components/styles/bases.scss","../src/components/scripts/bases.inline.ts","../src/components/BasesBody.tsx"],"names":["formatMessage","WIKILINK_RE","groupEntries"],"mappings":"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","file":"chunk-4HXXKSJ4.js","sourcesContent":["import type { ComponentChild } from \"preact\";\n\nimport type { BasesView } from \"../types\";\n\nexport interface ViewSelectorProps {\n views: BasesView[];\n activeIndex: number;\n locale: string;\n}\n\nexport function ViewSelector({ views, activeIndex }: ViewSelectorProps): ComponentChild {\n if (views.length <= 1) return null;\n\n return (\n <div class=\"bases-view-tabs\" role=\"tablist\">\n {views.map((view, index) => (\n <button\n type=\"button\"\n class={index === activeIndex ? \"is-active\" : \"\"}\n data-view-index={index}\n >\n {view.name ?? view.type}\n </button>\n ))}\n </div>\n );\n}\n","import type { BasesData, BasesEntry, BasesView, QuartzPluginData, SortEntry } from \"./types\";\nimport { evaluate, evaluateFilter, resolvePropertyValue } from \"./compiler\";\nimport type { EvalContext } from \"./compiler\";\n\nfunction normalizeStringArray(values: unknown): string[] {\n if (!Array.isArray(values)) return [];\n return values.filter((value): value is string => typeof value === \"string\");\n}\n\nfunction getFilePath(fileData: QuartzPluginData, slug: string): string {\n // Prefer relativePath (relative to content dir) over filePath (absolute).\n // Self-context paths from .base files use ctx.allFiles which are relative,\n // so note paths must also be relative for inFolder() comparisons to work.\n if (typeof fileData.relativePath === \"string\") return fileData.relativePath;\n if (typeof fileData.filePath === \"string\") return fileData.filePath;\n return slug ? `${slug}.md` : \"\";\n}\n\nfunction getFileName(path: string): string {\n const lastSlash = path.lastIndexOf(\"/\");\n return lastSlash >= 0 ? path.slice(lastSlash + 1) : path;\n}\n\nfunction getBaseName(path: string): string {\n const fileName = getFileName(path);\n const dot = fileName.lastIndexOf(\".\");\n return dot > 0 ? fileName.slice(0, dot) : fileName;\n}\n\nfunction toDate(value: unknown): Date | undefined {\n if (value instanceof Date && !Number.isNaN(value.getTime())) return value;\n if (typeof value === \"string\") {\n const parsed = Date.parse(value);\n if (!Number.isNaN(parsed)) return new Date(parsed);\n }\n return undefined;\n}\n\nfunction buildFileProperties(\n fileData: QuartzPluginData,\n slug: string,\n frontmatter: Record<string, unknown>,\n): BasesEntry[\"fileProperties\"] {\n const filePath = getFilePath(fileData, slug);\n const baseName = filePath ? getBaseName(filePath) : getBaseName(slug);\n const name = baseName || slug.split(\"/\").pop() || \"Untitled\";\n const basename = baseName || slug.split(\"/\").pop() || \"Untitled\";\n const lastSlash = filePath.lastIndexOf(\"/\");\n const folder = lastSlash >= 0 ? filePath.slice(0, lastSlash) : \"\";\n const lastDot = filePath.lastIndexOf(\".\");\n const ext = lastDot >= 0 ? filePath.slice(lastDot + 1) : \"\";\n const tags = normalizeStringArray(frontmatter.tags);\n const links = normalizeStringArray(fileData.links ?? fileData.outgoingLinks);\n const embeds = normalizeStringArray(fileData.embeds);\n\n const dates = fileData.dates as Record<string, unknown> | undefined;\n const ctime = toDate(dates?.created);\n const mtime = toDate(dates?.modified);\n\n return {\n name,\n basename,\n path: filePath,\n folder,\n ext,\n tags,\n links,\n embeds,\n created: ctime?.toISOString(),\n modified: mtime?.toISOString(),\n ctime,\n mtime,\n };\n}\n\nfunction compareSort(a: unknown, b: unknown): number {\n if (a === b) return 0;\n if (a === undefined || a === null) return 1;\n if (b === undefined || b === null) return -1;\n if (typeof a === \"number\" && typeof b === \"number\") return a - b;\n const dateA = typeof a === \"string\" ? Date.parse(a) : NaN;\n const dateB = typeof b === \"string\" ? Date.parse(b) : NaN;\n if (!Number.isNaN(dateA) && !Number.isNaN(dateB)) return dateA - dateB;\n return String(a).localeCompare(String(b));\n}\n\nfunction buildSortKeys(view?: BasesView): SortEntry[] {\n if (view?.sort && view.sort.length > 0) return view.sort;\n if (view?.groupBy?.property) {\n return [{ property: view.groupBy.property, direction: view.groupBy.direction ?? \"ASC\" }];\n }\n if (view?.order && view.order.length > 0) {\n return view.order.map((property) => ({ property, direction: \"ASC\" as const }));\n }\n return [];\n}\n\nfunction sortEntries(entries: BasesEntry[], view?: BasesView): BasesEntry[] {\n const sortKeys = buildSortKeys(view);\n if (sortKeys.length === 0) return entries;\n\n return [...entries].sort((left, right) => {\n for (const key of sortKeys) {\n const sign = key.direction === \"DESC\" ? -1 : 1;\n const leftValue = resolvePropertyValue(key.property, {\n note: left.properties,\n file: left.fileProperties,\n formula: left.formulaValues,\n });\n const rightValue = resolvePropertyValue(key.property, {\n note: right.properties,\n file: right.fileProperties,\n formula: right.formulaValues,\n });\n const cmp = compareSort(leftValue, rightValue);\n if (cmp !== 0) return sign * cmp;\n }\n return 0;\n });\n}\n\nexport function resolveBasesEntries(\n basesData: BasesData,\n allFiles: QuartzPluginData[],\n view?: BasesView,\n selfContext?: EvalContext[\"self\"],\n): { entries: BasesEntry[]; total: number } {\n const entries: BasesEntry[] = [];\n const formulas = basesData.formulas ?? {};\n\n const fileLookup = new Map<string, EvalContext[\"file\"]>();\n for (const fd of allFiles) {\n if ((fd as { unlisted?: unknown }).unlisted === true) continue;\n const fdSlug = typeof fd.slug === \"string\" ? fd.slug : \"\";\n if (!fdSlug) continue;\n const fdPath = getFilePath(fd, fdSlug);\n const fm = (fd.frontmatter ?? {}) as Record<string, unknown>;\n const fp = buildFileProperties(fd, fdSlug, fm);\n const fileValue: EvalContext[\"file\"] = { ...fp, properties: fm };\n\n fileLookup.set(fdPath, fileValue);\n const withoutExt = fdPath.replace(/\\.md$/, \"\");\n if (withoutExt !== fdPath) fileLookup.set(withoutExt, fileValue);\n\n // Register by slug and basename so OFM's short embed names (e.g. \"Apple\"\n // from ![[Apple]]) resolve. First-registered wins to avoid ambiguous overwrites.\n if (fdSlug && !fileLookup.has(fdSlug)) {\n fileLookup.set(fdSlug, fileValue);\n }\n const base = getBaseName(fdPath);\n if (base && !fileLookup.has(base)) {\n fileLookup.set(base, fileValue);\n }\n }\n\n for (const fileData of allFiles) {\n if ((fileData as { unlisted?: unknown }).unlisted === true) continue;\n const slug = typeof fileData.slug === \"string\" ? fileData.slug : \"\";\n if (!slug) continue;\n\n const filePath = typeof fileData.filePath === \"string\" ? fileData.filePath : \"\";\n if (filePath.endsWith(\".base\") || slug.endsWith(\".base\")) continue;\n\n const frontmatter = (fileData.frontmatter ?? {}) as Record<string, unknown>;\n const fileProperties = buildFileProperties(fileData, slug, frontmatter);\n const context = {\n note: frontmatter,\n file: { ...fileProperties, properties: frontmatter },\n formula: {} as Record<string, unknown>,\n self: selfContext,\n _fileLookup: fileLookup,\n };\n\n // Evaluate formulas\n for (const [name, expr] of Object.entries(formulas)) {\n context.formula[name] = evaluate(expr, context);\n }\n\n // Apply global filters\n if (!evaluateFilter(basesData.filters, context)) continue;\n // Apply view-specific filters\n if (view?.filters && !evaluateFilter(view.filters, context)) continue;\n\n const title =\n typeof frontmatter.title === \"string\"\n ? frontmatter.title\n : fileProperties.basename || slug.split(\"/\").pop() || \"Untitled\";\n\n entries.push({\n slug,\n title,\n properties: frontmatter,\n fileProperties,\n formulaValues: context.formula,\n });\n }\n\n const total = entries.length;\n const sorted = sortEntries(entries, view);\n const limited = view?.limit ? sorted.slice(0, view.limit) : sorted;\n return { entries: limited, total };\n}\n","export default {\n components: {\n bases: {\n title: \"Base\",\n noData: \"No data found.\",\n noViews: \"No views defined.\",\n mapPlaceholder: \"Map view is not available in static builds.\",\n allNotes: \"All notes\",\n allEntries: \"All entries\",\n galleryView: \"Gallery\",\n boardView: \"Board\",\n noImage: \"No image available\",\n uncategorized: \"Uncategorized\",\n showingCount: \"Showing {count} of {total} entries\",\n },\n },\n};\n","import enUS from \"./locales/en-US\";\n\nconst locales: Record<string, typeof enUS> = {\n \"en-US\": enUS,\n};\n\nexport function i18n(locale: string) {\n return locales[locale] || enUS;\n}\n","import type { ComponentChild } from \"preact\";\nimport type { FullSlug } from \"@quartz-community/types\";\n\nimport { transformLink } from \"@quartz-community/utils\";\n\nconst WIKILINK_RE = /\\[\\[([^\\]|]+)(?:\\|([^\\]]+))?\\]\\]/g;\nconst MDLINK_RE = /\\[([^\\]]*)\\]\\(([^)]+)\\)/g;\nconst URL_RE = /https?:\\/\\/[^\\s<>]+/g;\n\ntype RenderCtx = {\n slug: string;\n allSlugs: string[];\n linkResolution: \"absolute\" | \"relative\" | \"shortest\";\n};\n\nexport function renderTextWithLinks(text: string, ctx: RenderCtx): ComponentChild[] {\n const segments: { start: number; end: number; node: ComponentChild }[] = [];\n const transformOpts = {\n strategy: ctx.linkResolution,\n allSlugs: ctx.allSlugs as FullSlug[],\n };\n for (const match of text.matchAll(WIKILINK_RE)) {\n const target = match[1] ?? \"\";\n const display = match[2] ?? target;\n const href = transformLink(ctx.slug as FullSlug, target, transformOpts);\n segments.push({\n start: match.index ?? 0,\n end: (match.index ?? 0) + match[0].length,\n node: (\n <a href={href} class=\"internal internal-link\">\n {display}\n </a>\n ),\n });\n }\n\n for (const match of text.matchAll(MDLINK_RE)) {\n const start = match.index ?? 0;\n const end = start + match[0].length;\n const overlaps = segments.some((segment) => start < segment.end && end > segment.start);\n if (overlaps) continue;\n const display = match[1] ?? \"\";\n const href = match[2] ?? \"\";\n const isExternal = href.startsWith(\"http://\") || href.startsWith(\"https://\");\n const resolvedHref = isExternal\n ? href\n : String(transformLink(ctx.slug as FullSlug, href, transformOpts));\n segments.push({\n start,\n end,\n node: (\n <a\n href={resolvedHref}\n class={isExternal ? \"external external-link\" : \"internal internal-link\"}\n {...(isExternal ? { target: \"_blank\", rel: \"noopener noreferrer\" } : {})}\n >\n {display || href}\n </a>\n ),\n });\n }\n\n for (const match of text.matchAll(URL_RE)) {\n const start = match.index ?? 0;\n const end = start + match[0].length;\n const overlaps = segments.some((segment) => start < segment.end && end > segment.start);\n if (overlaps) continue;\n segments.push({\n start,\n end,\n node: (\n <a href={match[0]} class=\"external external-link\" target=\"_blank\" rel=\"noopener noreferrer\">\n {match[0]}\n </a>\n ),\n });\n }\n\n if (segments.length === 0) return [text];\n\n segments.sort((a, b) => a.start - b.start);\n\n const result: ComponentChild[] = [];\n let cursor = 0;\n for (const segment of segments) {\n if (segment.start > cursor) {\n result.push(text.slice(cursor, segment.start));\n }\n result.push(segment.node);\n cursor = segment.end;\n }\n if (cursor < text.length) {\n result.push(text.slice(cursor));\n }\n return result;\n}\n","import type { ComponentChild } from \"preact\";\nimport type { FullSlug } from \"@quartz-community/types\";\n\nimport type { BasesData, BasesEntry, BasesView } from \"../../types\";\nimport { renderTextWithLinks } from \"./links\";\nimport { transformLink, slugifyPath } from \"@quartz-community/utils\";\n\ntype RenderCtx = {\n slug: string;\n allSlugs: string[];\n linkResolution: \"absolute\" | \"relative\" | \"shortest\";\n};\n\n/**\n * Detect file objects returned by asFile() in the expression engine.\n * These have a specific shape: {name, basename, path, folder, ext, tags, links}.\n */\nfunction isFileValue(\n value: unknown,\n): value is { name: string; basename: string; path: string; folder: string; ext: string } {\n if (!value || typeof value !== \"object\" || Array.isArray(value)) return false;\n const record = value as Record<string, unknown>;\n return (\n typeof record.name === \"string\" &&\n typeof record.basename === \"string\" &&\n typeof record.path === \"string\" &&\n typeof record.folder === \"string\" &&\n typeof record.ext === \"string\"\n );\n}\n\nexport function formatValue(value: unknown): string {\n if (value === undefined || value === null) return \"\";\n if (Array.isArray(value)) return value.map((item) => String(item)).join(\", \");\n if (typeof value === \"object\") return JSON.stringify(value);\n return String(value);\n}\n\nexport function renderCellValue(value: unknown, ctx: RenderCtx): ComponentChild {\n if (value === null || value === undefined) {\n return <span class=\"bases-empty\">—</span>;\n }\n\n if (typeof value === \"boolean\") {\n return <input type=\"checkbox\" checked={value} disabled />;\n }\n\n if (typeof value === \"number\") {\n return <span class=\"bases-number\">{value}</span>;\n }\n\n if (typeof value === \"string\") {\n const parts = renderTextWithLinks(value, ctx);\n return <span class=\"bases-text\">{parts}</span>;\n }\n\n if (Array.isArray(value)) {\n const items = value.map((item, index) => (\n <>\n {index > 0 && <span class=\"bases-separator\">, </span>}\n {renderCellValue(item, ctx)}\n </>\n ));\n return <span class=\"bases-list\">{items}</span>;\n }\n\n if (typeof value === \"object\") {\n if (isFileValue(value)) {\n const href = transformLink(\n ctx.slug as FullSlug,\n slugifyPath(value.path.replace(/\\.md$/, \"\")),\n {\n strategy: ctx.linkResolution,\n allSlugs: ctx.allSlugs as FullSlug[],\n },\n );\n return (\n <a href={href} class=\"internal internal-link\">\n {value.basename}\n </a>\n );\n }\n return <code>{JSON.stringify(value)}</code>;\n }\n\n return String(value);\n}\n\nexport function isEmptyValue(value: unknown): boolean {\n if (value === undefined || value === null || value === \"\") return true;\n if (Array.isArray(value)) return value.length === 0;\n return false;\n}\n\nexport function getColumnLabel(column: string, basesData: BasesData): string {\n const config = basesData.properties?.[column];\n if (config?.displayName) return config.displayName;\n const segment = column.split(\".\").pop() ?? column;\n return segment\n .split(\"_\")\n .map((part) => (part ? part.charAt(0).toUpperCase() + part.slice(1) : part))\n .join(\" \");\n}\n\nexport function getColumns(view: BasesView, basesData: BasesData, entries: BasesEntry[]): string[] {\n if (view.order && view.order.length > 0) return view.order;\n const columns = new Set<string>();\n columns.add(\"file.name\");\n const propertyKeys = basesData.properties ? Object.keys(basesData.properties) : [];\n if (propertyKeys.length > 0) {\n propertyKeys.forEach((key) => {\n columns.add(key);\n });\n } else if (entries.length > 0) {\n const firstEntry = entries[0];\n if (firstEntry) {\n Object.keys(firstEntry.properties).forEach((key) => {\n columns.add(key);\n });\n }\n }\n return Array.from(columns);\n}\n\nfunction getNestedValue(value: unknown, path: string[]): unknown {\n let current: unknown = value;\n for (const segment of path) {\n if (segment === \"\") continue;\n if (Array.isArray(current)) {\n const index = Number(segment);\n if (Number.isNaN(index)) return undefined;\n current = current[index];\n continue;\n }\n if (current && typeof current === \"object\") {\n const record = current as Record<string, unknown>;\n current = record[segment];\n continue;\n }\n return undefined;\n }\n return current;\n}\n\nexport function resolveEntryPropertyValue(column: string, entry: BasesEntry): unknown {\n if (column.startsWith(\"note.\")) {\n return getNestedValue(entry.properties, column.slice(5).split(\".\"));\n }\n if (column.startsWith(\"file.\")) {\n return getNestedValue(entry.fileProperties, column.slice(5).split(\".\"));\n }\n if (column.startsWith(\"formula.\")) {\n return getNestedValue(entry.formulaValues, column.slice(8).split(\".\"));\n }\n return getNestedValue(entry.properties, column.split(\".\"));\n}\n","import type { ViewRenderer, ViewTypeRegistration } from \"../../types\";\nimport type { FullSlug } from \"@quartz-community/types\";\nimport { i18n } from \"../../i18n\";\nimport {\n formatValue,\n getColumnLabel,\n getColumns,\n isEmptyValue,\n renderCellValue,\n resolveEntryPropertyValue,\n} from \"../shared/cell\";\nimport { transformLink } from \"@quartz-community/utils\";\n\nfunction formatMessage(template: string, values: Record<string, string | number>): string {\n return Object.entries(values).reduce(\n (text, [key, value]) => text.replace(`{${key}}`, String(value)),\n template,\n );\n}\n\nconst BoardView: ViewRenderer = ({\n entries,\n view,\n basesData,\n total,\n locale,\n slug,\n allSlugs,\n linkResolution,\n}) => {\n const localeStrings = i18n(locale).components.bases;\n const groupProperty = view.groupBy?.property ?? view.boardProperty;\n const columns = getColumns(view, basesData, entries).filter((column) => column !== groupProperty);\n const groups = new Map<string, { label: string; entries: typeof entries }>();\n const emptyLabel = groupProperty ? localeStrings.uncategorized : localeStrings.allEntries;\n const transformOpts = { strategy: linkResolution, allSlugs: allSlugs as FullSlug[] };\n\n for (const entry of entries) {\n const rawValue = groupProperty ? resolveEntryPropertyValue(groupProperty, entry) : undefined;\n const label = isEmptyValue(rawValue) ? emptyLabel : formatValue(rawValue);\n const key = label || emptyLabel;\n const existing = groups.get(key);\n if (existing) {\n existing.entries.push(entry);\n } else {\n groups.set(key, { label: key, entries: [entry] });\n }\n }\n\n if (groups.size === 0) {\n groups.set(localeStrings.allEntries, { label: localeStrings.allEntries, entries });\n }\n\n return (\n <div class=\"bases-board-wrapper\">\n <div class=\"bases-view-meta\">\n {formatMessage(localeStrings.showingCount, {\n count: entries.length,\n total,\n })}\n </div>\n <div class=\"bases-board\">\n {Array.from(groups.values()).map((group) => (\n <div class=\"bases-board-column\">\n <div class=\"bases-board-column-header\">\n <span>{group.label}</span>\n <span class=\"bases-board-count\">{group.entries.length}</span>\n </div>\n <div class=\"bases-board-column-body\">\n {group.entries.map((entry) => {\n const ctx = { slug, allSlugs, linkResolution };\n return (\n <div class=\"bases-board-card\">\n <a\n href={transformLink(slug as FullSlug, entry.slug, transformOpts)}\n class=\"internal internal-link\"\n data-slug={entry.slug}\n >\n {entry.title}\n </a>\n {columns.length > 0 && (\n <div class=\"bases-board-card-meta\">\n {columns.map((column) => {\n const value = resolveEntryPropertyValue(column, entry);\n if (isEmptyValue(value)) return null;\n return (\n <div class=\"bases-board-card-row\">\n <span class=\"bases-board-card-label\">\n {getColumnLabel(column, basesData)}\n </span>\n <span class=\"bases-board-card-value\">\n {renderCellValue(value, ctx)}\n </span>\n </div>\n );\n })}\n </div>\n )}\n </div>\n );\n })}\n </div>\n </div>\n ))}\n </div>\n </div>\n );\n};\n\nexport const boardViewRegistration: ViewTypeRegistration = {\n id: \"board\",\n name: \"Board\",\n icon: \"columns\",\n render: BoardView,\n};\n\nexport { BoardView };\n","import type { ViewRenderer, ViewTypeRegistration } from \"../../types\";\nimport type { FullSlug } from \"@quartz-community/types\";\nimport { i18n } from \"../../i18n\";\nimport {\n getColumnLabel,\n isEmptyValue,\n renderCellValue,\n resolveEntryPropertyValue,\n} from \"../shared/cell\";\nimport { transformLink } from \"@quartz-community/utils\";\n\nfunction formatMessage(template: string, values: Record<string, string | number>): string {\n return Object.entries(values).reduce(\n (text, [key, value]) => text.replace(`{${key}}`, String(value)),\n template,\n );\n}\n\nconst HEX_COLOR_RE = /^#(?:[0-9a-f]{3}){1,2}$/i;\nconst WIKILINK_RE = /^\\[\\[(.+?)(?:\\|.*)?\\]\\]$/;\n\nexport interface ResolveImageOpts {\n slug: string;\n allSlugs: string[];\n linkResolution: \"absolute\" | \"relative\" | \"shortest\";\n}\n\nexport function resolveImageSrc(\n raw: string,\n opts: ResolveImageOpts,\n): { src: string; isColor: boolean } {\n if (!raw) return { src: \"\", isColor: false };\n\n if (HEX_COLOR_RE.test(raw)) {\n return { src: raw, isColor: true };\n }\n\n const wikiMatch = WIKILINK_RE.exec(raw);\n if (wikiMatch?.[1]) {\n const target = wikiMatch[1].trim();\n const resolved = transformLink(opts.slug as FullSlug, target, {\n strategy: opts.linkResolution,\n allSlugs: opts.allSlugs as FullSlug[],\n });\n return { src: String(resolved), isColor: false };\n }\n\n return { src: raw, isColor: false };\n}\n\nconst CardsView: ViewRenderer = ({\n entries,\n view,\n basesData,\n total,\n locale,\n slug,\n allSlugs,\n linkResolution,\n}) => {\n const imageProperty = typeof view.image === \"string\" ? view.image : undefined;\n const cardMetaColumns =\n view.order && view.order.length > 0\n ? view.order.filter((column) => column !== imageProperty && column !== \"file.name\")\n : [];\n const localeStrings = i18n(locale).components.bases;\n const cardSize = view.cardSize;\n const aspectRatio = view.imageAspectRatio ?? view.cardAspect;\n const imageFit = view.imageFit === \"contain\" ? \"contain\" : \"cover\";\n const gridStyle =\n typeof cardSize === \"number\" && cardSize > 0\n ? { gridTemplateColumns: `repeat(auto-fit, minmax(${cardSize}px, 1fr))` }\n : undefined;\n const imageOpts: ResolveImageOpts = { slug, allSlugs, linkResolution };\n const transformOpts = { strategy: linkResolution, allSlugs: allSlugs as FullSlug[] };\n\n return (\n <div class=\"bases-cards-wrapper\">\n <div class=\"bases-view-meta\">\n {formatMessage(localeStrings.showingCount, {\n count: entries.length,\n total,\n })}\n </div>\n <div class=\"bases-cards\" style={gridStyle}>\n {entries.map((entry) => {\n const ctx = { slug, allSlugs, linkResolution };\n const imageValue = imageProperty\n ? resolveEntryPropertyValue(imageProperty, entry)\n : undefined;\n const rawImage = imageValue ? String(imageValue) : \"\";\n const { src: imageSrc, isColor } = resolveImageSrc(rawImage, imageOpts);\n const imageAspect =\n typeof aspectRatio === \"number\" && aspectRatio > 0\n ? { aspectRatio: String(aspectRatio) }\n : undefined;\n const href = transformLink(slug as FullSlug, entry.slug, transformOpts);\n return (\n <a href={href} class=\"internal internal-link bases-card\" data-slug={entry.slug}>\n {imageSrc && !isColor && (\n <div class=\"bases-card-image\" style={imageAspect}>\n <img\n src={imageSrc}\n alt={entry.title}\n loading=\"lazy\"\n style={{ objectFit: imageFit }}\n />\n </div>\n )}\n {imageSrc && isColor && (\n <div\n class=\"bases-card-image bases-card-color\"\n style={{ ...imageAspect, backgroundColor: imageSrc }}\n />\n )}\n <div class=\"bases-card-body\">\n <span class=\"bases-card-title\">{entry.title}</span>\n <div class=\"bases-card-meta\">\n {cardMetaColumns.map((column) => {\n const value = resolveEntryPropertyValue(column, entry);\n if (isEmptyValue(value)) return null;\n return (\n <div class=\"bases-card-row\">\n <span class=\"bases-card-label\">{getColumnLabel(column, basesData)}</span>\n <span class=\"bases-card-value\">{renderCellValue(value, ctx)}</span>\n </div>\n );\n })}\n </div>\n </div>\n </a>\n );\n })}\n </div>\n </div>\n );\n};\n\nexport const cardsViewRegistration: ViewTypeRegistration = {\n id: \"cards\",\n name: \"Cards\",\n icon: \"layout-grid\",\n render: CardsView,\n};\n\nexport { CardsView };\n","import type { ViewRenderer, ViewTypeRegistration } from \"../../types\";\nimport type { FullSlug } from \"@quartz-community/types\";\nimport { i18n } from \"../../i18n\";\nimport { resolveEntryPropertyValue } from \"../shared/cell\";\nimport { transformLink } from \"@quartz-community/utils\";\nimport { resolveImageSrc } from \"./cards\";\nimport type { ResolveImageOpts } from \"./cards\";\n\nfunction formatMessage(template: string, values: Record<string, string | number>): string {\n return Object.entries(values).reduce(\n (text, [key, value]) => text.replace(`{${key}}`, String(value)),\n template,\n );\n}\n\nconst GalleryView: ViewRenderer = ({\n entries,\n view,\n total,\n locale,\n slug,\n allSlugs,\n linkResolution,\n}) => {\n const imageProperty = typeof view.image === \"string\" ? view.image : undefined;\n const localeStrings = i18n(locale).components.bases;\n const columns =\n typeof view.cardSize === \"number\" && view.cardSize > 0 ? Math.round(view.cardSize) : 3;\n const gridStyle = { gridTemplateColumns: `repeat(${columns}, minmax(0, 1fr))` };\n const imageOpts: ResolveImageOpts = { slug, allSlugs, linkResolution };\n const transformOpts = { strategy: linkResolution, allSlugs: allSlugs as FullSlug[] };\n\n return (\n <div class=\"bases-gallery-wrapper\">\n <div class=\"bases-view-meta\">\n {formatMessage(localeStrings.showingCount, {\n count: entries.length,\n total,\n })}\n </div>\n <div class=\"bases-gallery\" style={gridStyle}>\n {entries.map((entry) => {\n const imageValue = imageProperty\n ? resolveEntryPropertyValue(imageProperty, entry)\n : undefined;\n const rawImage = imageValue ? String(imageValue) : \"\";\n const { src: imageSrc, isColor } = resolveImageSrc(rawImage, imageOpts);\n return (\n <div class=\"bases-gallery-item\">\n <div class=\"bases-gallery-image\">\n {imageSrc && !isColor ? (\n <img src={imageSrc} alt={entry.title} loading=\"lazy\" />\n ) : imageSrc && isColor ? (\n <span class=\"bases-gallery-placeholder\" style={{ background: imageSrc }} />\n ) : (\n <span\n class=\"bases-gallery-placeholder\"\n role=\"img\"\n aria-label={localeStrings.noImage}\n />\n )}\n </div>\n <div class=\"bases-gallery-title\">\n <a\n href={transformLink(slug as FullSlug, entry.slug, transformOpts)}\n class=\"internal internal-link\"\n data-slug={entry.slug}\n >\n {entry.title}\n </a>\n </div>\n </div>\n );\n })}\n </div>\n </div>\n );\n};\n\nexport const galleryViewRegistration: ViewTypeRegistration = {\n id: \"gallery\",\n name: \"Gallery\",\n icon: \"image\",\n render: GalleryView,\n};\n\nexport { GalleryView };\n","import type { ComponentChild } from \"preact\";\nimport type { ViewRenderer, ViewTypeRegistration } from \"../../types\";\nimport type { FullSlug } from \"@quartz-community/types\";\nimport { i18n } from \"../../i18n\";\nimport {\n getColumns,\n isEmptyValue,\n renderCellValue,\n resolveEntryPropertyValue,\n} from \"../shared/cell\";\nimport { transformLink } from \"@quartz-community/utils\";\n\nfunction formatMessage(template: string, values: Record<string, string | number>): string {\n return Object.entries(values).reduce(\n (text, [key, value]) => text.replace(`{${key}}`, String(value)),\n template,\n );\n}\n\nconst ListView: ViewRenderer = ({\n entries,\n view,\n basesData,\n total,\n locale,\n slug,\n allSlugs,\n linkResolution,\n}) => {\n const columns = getColumns(view, basesData, entries);\n const localeStrings = i18n(locale).components.bases;\n const transformOpts = { strategy: linkResolution, allSlugs: allSlugs as FullSlug[] };\n\n return (\n <div class=\"bases-list-wrapper\">\n <div class=\"bases-view-meta\">\n {formatMessage(localeStrings.showingCount, {\n count: entries.length,\n total,\n })}\n </div>\n <div class=\"bases-list-group\">\n <div class=\"bases-list-group-list\">\n {entries.map((entry) => {\n const ctx = { slug, allSlugs, linkResolution };\n const primaryColumn = columns[0] ?? \"file.name\";\n const secondaryColumns = columns.slice(1);\n\n const primaryValue: ComponentChild =\n primaryColumn === \"file.name\" ? (\n <a\n href={transformLink(slug as FullSlug, entry.slug, transformOpts)}\n class=\"internal internal-link\"\n data-slug={entry.slug}\n >\n {entry.title}\n </a>\n ) : (\n renderCellValue(resolveEntryPropertyValue(primaryColumn, entry), ctx)\n );\n\n const secondaryItems: ComponentChild[] = [];\n for (const column of secondaryColumns) {\n const value = resolveEntryPropertyValue(column, entry);\n if (isEmptyValue(value)) continue;\n secondaryItems.push(\n <span class=\"bases-list-property\">\n <span class=\"bases-rendered-value\">{renderCellValue(value, ctx)}</span>\n </span>,\n );\n }\n\n return (\n <div class=\"bases-list-item\">\n <div class=\"bases-list-item-properties\">\n <span class=\"bases-list-property\">\n <span class=\"list-bullet\">-</span>\n <span class=\"bases-rendered-value\">{primaryValue}</span>\n </span>\n {secondaryItems.map((item) => (\n <>\n <span class=\"bases-list-separator\">, </span>\n {item}\n </>\n ))}\n </div>\n </div>\n );\n })}\n </div>\n </div>\n </div>\n );\n};\n\nexport const listViewRegistration: ViewTypeRegistration = {\n id: \"list\",\n name: \"List\",\n icon: \"list\",\n render: ListView,\n};\n\nexport { ListView };\n","import type { SummaryType } from \"../../types\";\n\nexport function computeSummary(values: unknown[], summary: SummaryType): string {\n const nonEmpty = values.filter((value) => value !== undefined && value !== null && value !== \"\");\n if (summary === \"Empty\") return String(values.length - nonEmpty.length);\n if (summary === \"Filled\") return String(nonEmpty.length);\n if (summary === \"Checked\") return String(values.filter((value) => value === true).length);\n if (summary === \"Unchecked\") return String(values.filter((value) => value === false).length);\n if (summary === \"Unique\") return String(new Set(values.map((value) => String(value))).size);\n\n const numeric = nonEmpty\n .map((value) => (typeof value === \"number\" ? value : Number(value)))\n .filter((value) => !Number.isNaN(value));\n\n if (numeric.length === 0) return summary;\n if (summary === \"Sum\") return String(numeric.reduce((acc, value) => acc + value, 0));\n if (summary === \"Average\")\n return String(numeric.reduce((acc, value) => acc + value, 0) / numeric.length);\n if (summary === \"Min\") return String(Math.min(...numeric));\n if (summary === \"Max\") return String(Math.max(...numeric));\n if (summary === \"Range\") return String(Math.max(...numeric) - Math.min(...numeric));\n if (summary === \"Median\") {\n const sorted = [...numeric].sort((a, b) => a - b);\n const mid = Math.floor(sorted.length / 2);\n const upper = sorted[mid] ?? 0;\n const lower = sorted[mid - 1] ?? upper;\n const median = sorted.length % 2 === 0 ? (lower + upper) / 2 : upper;\n return String(median);\n }\n if (summary === \"Stddev\") {\n const mean = numeric.reduce((acc, value) => acc + value, 0) / numeric.length;\n const variance =\n numeric.reduce((acc, value) => acc + Math.pow(value - mean, 2), 0) / numeric.length;\n return String(Math.sqrt(variance));\n }\n\n return summary;\n}\n","import type { BasesEntry, ViewRenderer, ViewTypeRegistration } from \"../../types\";\nimport type { FullSlug } from \"@quartz-community/types\";\nimport { i18n } from \"../../i18n\";\nimport {\n formatValue,\n getColumnLabel,\n getColumns,\n isEmptyValue,\n renderCellValue,\n resolveEntryPropertyValue,\n} from \"../shared/cell\";\nimport { computeSummary } from \"../shared/summary\";\nimport { transformLink } from \"@quartz-community/utils\";\n\nfunction formatMessage(template: string, values: Record<string, string | number>): string {\n return Object.entries(values).reduce(\n (text, [key, value]) => text.replace(`{${key}}`, String(value)),\n template,\n );\n}\n\nfunction groupEntries(\n entries: BasesEntry[],\n groupProperty: string | undefined,\n emptyLabel: string,\n): Map<string, BasesEntry[]> | null {\n if (!groupProperty) return null;\n const groups = new Map<string, BasesEntry[]>();\n for (const entry of entries) {\n const rawValue = resolveEntryPropertyValue(groupProperty, entry);\n const label = isEmptyValue(rawValue) ? emptyLabel : formatValue(rawValue);\n const key = label || emptyLabel;\n const existing = groups.get(key);\n if (existing) {\n existing.push(entry);\n } else {\n groups.set(key, [entry]);\n }\n }\n return groups.size > 0 ? groups : null;\n}\n\nfunction renderRow(\n entry: BasesEntry,\n columns: string[],\n view: Parameters<ViewRenderer>[0][\"view\"],\n slug: string,\n allSlugs: string[],\n linkResolution: \"absolute\" | \"relative\" | \"shortest\",\n) {\n const transformOpts = { strategy: linkResolution, allSlugs: allSlugs as FullSlug[] };\n const ctx = { slug, allSlugs, linkResolution };\n return (\n <tr>\n {columns.map((column) => {\n const value = resolveEntryPropertyValue(column, entry);\n const display = formatValue(value);\n const isPrimary = column === \"file.name\" || column === \"title\";\n const columnWidth = view.columnSize?.[column];\n const style = columnWidth\n ? { width: `${columnWidth}px`, minWidth: `${columnWidth}px` }\n : undefined;\n return (\n <td data-value={display} style={style}>\n {isPrimary ? (\n <a\n href={transformLink(slug as FullSlug, entry.slug, transformOpts)}\n class=\"internal internal-link\"\n data-slug={entry.slug}\n >\n {display || entry.title}\n </a>\n ) : (\n renderCellValue(value, ctx)\n )}\n </td>\n );\n })}\n </tr>\n );\n}\n\nconst TableView: ViewRenderer = ({\n entries,\n view,\n basesData,\n total,\n locale,\n slug,\n allSlugs,\n linkResolution,\n}) => {\n const columns = getColumns(view, basesData, entries);\n const summaries = view.summaries ?? {};\n const hasSummary = Object.keys(summaries).length > 0;\n const localeStrings = i18n(locale).components.bases;\n const groupProperty = view.groupBy?.property;\n const groupPropertyLabel = groupProperty ? getColumnLabel(groupProperty, basesData) : \"\";\n const groups = groupEntries(entries, groupProperty, localeStrings.uncategorized);\n\n return (\n <div class=\"bases-table-wrapper\">\n <div class=\"bases-view-meta\">\n {formatMessage(localeStrings.showingCount, {\n count: entries.length,\n total,\n })}\n </div>\n <table class=\"bases-table\" data-view-type=\"table\">\n <thead>\n <tr>\n {columns.map((column) => {\n const columnWidth = view.columnSize?.[column];\n const style = columnWidth\n ? { width: `${columnWidth}px`, minWidth: `${columnWidth}px` }\n : undefined;\n return (\n <th data-column={column} data-sortable=\"true\" style={style}>\n <span class=\"bases-table-header\">{getColumnLabel(column, basesData)}</span>\n <span class=\"bases-table-header-sort\" aria-hidden=\"true\" />\n </th>\n );\n })}\n </tr>\n </thead>\n <tbody>\n {groups\n ? Array.from(groups.entries()).map(([label, groupEntries]) => (\n <>\n <tr class=\"bases-table-group-header\">\n <td colSpan={columns.length}>\n {groupPropertyLabel && (\n <span class=\"bases-table-group-property\">{groupPropertyLabel} </span>\n )}\n <span class=\"bases-table-group-label\">{label}</span>\n <span class=\"bases-table-group-count\">{groupEntries.length}</span>\n </td>\n </tr>\n {groupEntries.map((entry) =>\n renderRow(entry, columns, view, slug, allSlugs, linkResolution),\n )}\n </>\n ))\n : entries.map((entry) =>\n renderRow(entry, columns, view, slug, allSlugs, linkResolution),\n )}\n </tbody>\n {hasSummary && (\n <tfoot>\n <tr class=\"bases-summary-row\">\n {columns.map((column) => {\n const summary = summaries[column];\n if (!summary) return <td />;\n const values = entries.map((entry) => resolveEntryPropertyValue(column, entry));\n return <td>{computeSummary(values, summary)}</td>;\n })}\n </tr>\n </tfoot>\n )}\n </table>\n </div>\n );\n};\n\nexport const tableViewRegistration: ViewTypeRegistration = {\n id: \"table\",\n name: \"Table\",\n icon: \"table\",\n render: TableView,\n};\n\nexport { TableView };\n","import { viewRegistry } from \"../../registry\";\n\nimport { boardViewRegistration } from \"./board\";\nimport { cardsViewRegistration } from \"./cards\";\nimport { galleryViewRegistration } from \"./gallery\";\nimport { listViewRegistration } from \"./list\";\nimport { tableViewRegistration } from \"./table\";\n\nexport function registerBuiltinViews(): void {\n viewRegistry.register(tableViewRegistration);\n viewRegistry.register(listViewRegistration);\n viewRegistry.register(cardsViewRegistration);\n viewRegistry.register(galleryViewRegistration);\n viewRegistry.register(boardViewRegistration);\n}\n",".bases-page {\n width: 100%;\n max-width: 100%;\n display: flex;\n flex-direction: column;\n gap: 16px;\n overflow: hidden;\n}\n\n.bases-view-tabs {\n display: flex;\n gap: 8px;\n flex-wrap: wrap;\n}\n.bases-view-tabs button {\n border: 1px solid var(--lightgray);\n background: var(--light);\n color: var(--darkgray);\n padding: 6px 12px;\n border-radius: 999px;\n cursor: pointer;\n font-size: 0.9rem;\n}\n.bases-view-tabs button.is-active {\n background: var(--secondary);\n color: var(--light);\n border-color: var(--secondary);\n}\n\n.bases-view-container {\n display: flex;\n flex-direction: column;\n gap: 16px;\n}\n\n.bases-view {\n display: none;\n}\n.bases-view.is-active {\n display: block;\n}\n\n.bases-view-meta {\n font-size: 0.85rem;\n color: var(--gray);\n margin-bottom: 8px;\n}\n\n.bases-table-wrapper {\n width: 100%;\n overflow-x: auto;\n}\n\n.bases-table {\n width: 100%;\n border-collapse: collapse;\n border: 1px solid var(--lightgray);\n border-radius: 8px;\n overflow: hidden;\n}\n.bases-table th,\n.bases-table td {\n padding: 10px 12px;\n text-align: left;\n border-bottom: 1px solid var(--lightgray);\n font-size: 0.9rem;\n}\n.bases-table thead th {\n position: sticky;\n top: 0;\n background: var(--light);\n color: var(--dark);\n font-weight: 600;\n cursor: pointer;\n}\n.bases-table td .bases-empty {\n padding: 0;\n border: 0;\n background: none;\n color: var(--gray);\n display: inline;\n}\n.bases-table td code {\n font-size: 0.85em;\n padding: 0.1rem 0.3rem;\n border-radius: 3px;\n background: var(--highlight);\n word-break: break-all;\n}\n.bases-table td .bases-list {\n flex-direction: row;\n flex-wrap: wrap;\n gap: 4px;\n}\n.bases-table td input[type=checkbox] {\n margin-inline: 0;\n}\n\n.bases-table-header-sort {\n position: absolute;\n right: 8px;\n top: calc(50% - 4px);\n display: inline-block;\n width: 8px;\n height: 8px;\n margin-left: 6px;\n border-right: 2px solid transparent;\n border-bottom: 2px solid transparent;\n}\n\nth.is-sorted-asc .bases-table-header-sort {\n border-right-color: var(--darkgray);\n border-bottom-color: var(--darkgray);\n transform: rotate(-45deg);\n}\n\nth.is-sorted-desc .bases-table-header-sort {\n border-right-color: var(--darkgray);\n border-bottom-color: var(--darkgray);\n transform: rotate(135deg);\n}\n\n.bases-summary-row td {\n background: var(--light);\n font-weight: 600;\n color: var(--darkgray);\n}\n\n.bases-table-group-header td {\n background: var(--lightgray);\n font-weight: 600;\n padding: 8px 12px;\n border-bottom: 2px solid var(--gray);\n}\n\n.bases-table-group-property {\n color: var(--gray);\n font-weight: 400;\n}\n\n.bases-table-group-label {\n margin-right: 8px;\n}\n\n.bases-table-group-count {\n background: var(--light);\n color: var(--darkgray);\n border-radius: 999px;\n padding: 2px 8px;\n font-size: 0.75rem;\n font-weight: 400;\n}\n\n.bases-separator {\n color: var(--gray);\n}\n\n.bases-number {\n font-variant-numeric: tabular-nums;\n}\n\n.bases-list {\n display: inline-flex;\n flex-wrap: wrap;\n gap: 4px;\n}\n\n.bases-list-group {\n width: 100%;\n}\n\n.bases-list-group-list {\n display: flex;\n flex-direction: column;\n}\n\n.bases-list-item {\n padding: 2px 0;\n}\n\n.bases-list-item-properties {\n display: flex;\n flex-wrap: wrap;\n align-items: baseline;\n gap: 0;\n}\n\n.bases-list-property {\n display: inline-flex;\n align-items: baseline;\n gap: 4px;\n}\n\n.list-bullet {\n color: var(--darkgray);\n user-select: none;\n}\n\n.bases-list-separator {\n color: var(--gray);\n margin-right: 4px;\n}\n\n.bases-rendered-value {\n display: inline;\n}\n\n.bases-cards {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(min(220px, 100%), 1fr));\n gap: 16px;\n}\n\n.bases-card {\n border: 1px solid var(--lightgray);\n border-radius: 12px;\n overflow: hidden;\n background: var(--light);\n display: flex;\n flex-direction: column;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);\n color: inherit;\n text-decoration: none;\n transition: box-shadow 0.15s ease;\n}\n.bases-card:hover {\n box-shadow: 0 4px 16px rgba(0, 0, 0, 0.14);\n}\n\n.bases-card-image {\n overflow: hidden;\n background: var(--lightgray);\n}\n.bases-card-image img {\n width: 100%;\n height: 100%;\n display: block;\n object-fit: cover;\n}\n\n.bases-card-color {\n min-height: 60px;\n}\n\n.bases-card-title {\n font-weight: 600;\n color: var(--dark);\n}\n\n.bases-card-body {\n padding: 12px;\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.bases-card-meta {\n display: grid;\n gap: 4px;\n}\n\n.bases-card-row {\n display: flex;\n justify-content: space-between;\n font-size: 0.8rem;\n color: var(--darkgray);\n}\n\n.bases-card-label {\n color: var(--gray);\n}\n\n.bases-map-placeholder {\n padding: 24px;\n border: 1px dashed var(--lightgray);\n border-radius: 12px;\n background: var(--light);\n}\n\n.bases-map-message {\n color: var(--darkgray);\n margin-top: 12px;\n}\n\n.bases-empty {\n padding: 24px;\n text-align: center;\n color: var(--darkgray);\n border: 1px dashed var(--lightgray);\n border-radius: 12px;\n background: var(--light);\n}\n\n.bases-gallery {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(min(200px, 100%), 1fr));\n gap: 16px;\n}\n\n.bases-gallery-item {\n position: relative;\n border-radius: 12px;\n overflow: hidden;\n border: 1px solid var(--lightgray);\n background: var(--light);\n}\n\n.bases-gallery-image {\n aspect-ratio: 4/3;\n overflow: hidden;\n background: var(--lightgray);\n}\n\n.bases-gallery-image img,\n.bases-gallery-placeholder {\n width: 100%;\n height: 100%;\n display: block;\n object-fit: cover;\n}\n\n.bases-gallery-placeholder {\n background: linear-gradient(135deg, var(--lightgray), var(--highlight));\n}\n\n.bases-gallery-title {\n position: absolute;\n left: 0;\n right: 0;\n bottom: 0;\n padding: 10px 12px;\n background: linear-gradient(180deg, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 0.65) 100%);\n color: var(--light);\n font-weight: 600;\n}\n\n.bases-gallery-title a {\n color: inherit;\n}\n\n.bases-board {\n display: flex;\n gap: 16px;\n overflow-x: auto;\n padding-bottom: 4px;\n}\n\n.bases-board-column {\n min-width: min(250px, 80vw);\n flex-shrink: 0;\n border: 1px solid var(--lightgray);\n border-radius: 12px;\n background: var(--light);\n display: flex;\n flex-direction: column;\n}\n\n.bases-board-column-header {\n position: sticky;\n top: 0;\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 8px;\n padding: 10px 12px;\n font-weight: 600;\n background: var(--light);\n border-bottom: 1px solid var(--lightgray);\n border-radius: 12px 12px 0 0;\n z-index: 1;\n}\n\n.bases-board-count {\n background: var(--lightgray);\n color: var(--darkgray);\n border-radius: 999px;\n padding: 2px 8px;\n font-size: 0.75rem;\n}\n\n.bases-board-column-body {\n padding: 8px;\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.bases-board-card {\n border: 1px solid var(--lightgray);\n border-radius: 10px;\n background: var(--light);\n padding: 10px 12px;\n display: flex;\n flex-direction: column;\n gap: 6px;\n box-shadow: 0 1px 6px rgba(0, 0, 0, 0.08);\n}\n\n.bases-board-card-meta {\n display: grid;\n gap: 4px;\n font-size: 0.8rem;\n color: var(--darkgray);\n}\n\n.bases-board-card-row {\n display: flex;\n justify-content: space-between;\n gap: 8px;\n}\n\n.bases-board-card-label {\n color: var(--gray);\n}","function f(e,s){let n=e.querySelectorAll(\".bases-view-tabs button\"),r=e.querySelectorAll(\".bases-view\");n.forEach(t=>{t.classList.toggle(\"is-active\",t.dataset.viewIndex===String(s))}),r.forEach(t=>{t.classList.toggle(\"is-active\",t.dataset.viewIndex===String(s))})}function p(e,s){let n=Number(e),r=Number(s);return!Number.isNaN(n)&&!Number.isNaN(r)?n-r:String(e).localeCompare(String(s))}function h(e,s,n){return e.length===0||(e.sort((r,t)=>{let i=r.children[s],o=t.children[s],c=i?.dataset?.value??i?.textContent??\"\",a=o?.dataset?.value??o?.textContent??\"\";return p(c,a)}),n===\"desc\"&&e.reverse()),e}function v(e,s,n){let r=e.querySelector(\"tbody\");if(!r)return;let t=Array.from(r.querySelectorAll(\"tr\"));if(n===\"none\"){let o=e._originalOrder;o&&o.forEach(c=>r.appendChild(c));return}if(e._originalOrder||(e._originalOrder=Array.from(t)),t.some(o=>o.classList.contains(\"bases-table-group-header\"))){let o=[],c=null;for(let a of t)a.classList.contains(\"bases-table-group-header\")?(c={header:a,rows:[]},o.push(c)):c?c.rows.push(a):(c={header:null,rows:[a]},o.push(c));for(let a of o)h(a.rows,s,n);for(let a of o)a.header&&r.appendChild(a.header),a.rows.forEach(l=>r.appendChild(l))}else h(t,s,n),t.forEach(o=>r.appendChild(o))}function b(e,s){e.querySelectorAll(\".bases-table\").forEach(r=>{let t=r.querySelectorAll(\"th[data-sortable='true']\");t.forEach((i,o)=>{let c=()=>{let a=i.dataset.sortDirection||\"none\",l=a===\"asc\"?\"desc\":a===\"desc\"?\"none\":\"asc\";t.forEach(u=>{u!==i&&(u.dataset.sortDirection=\"none\"),u.classList.remove(\"is-sorted-asc\",\"is-sorted-desc\")}),i.dataset.sortDirection=l,i.classList.toggle(\"is-sorted-asc\",l===\"asc\"),i.classList.toggle(\"is-sorted-desc\",l===\"desc\"),v(r,o,l)};i.addEventListener(\"click\",c),s.push(()=>i.removeEventListener(\"click\",c))})})}function g(e,s){let n=e.querySelectorAll(\".bases-view-tabs button\");if(n.length===0)return;let r=parseInt(e.dataset.initialView||\"0\",10);f(e,Number.isNaN(r)?0:r),n.forEach(t=>{let i=()=>{let o=parseInt(t.dataset.viewIndex||\"0\",10);f(e,Number.isNaN(o)?0:o)};t.addEventListener(\"click\",i),s.push(()=>t.removeEventListener(\"click\",i))})}function d(){let e=document.querySelectorAll(\".bases-page\");if(e.length===0)return;let s=[];e.forEach(n=>{g(n,s),b(n,s)}),window.addCleanup&&window.addCleanup(()=>{s.forEach(n=>{n()})})}document.addEventListener(\"nav\",()=>{d()});document.addEventListener(\"render\",()=>{d()});d();\n","import type {\n QuartzComponent,\n QuartzComponentConstructor,\n QuartzComponentProps,\n} from \"@quartz-community/types\";\nimport type { BasesData, BasesPageOptions } from \"../types\";\nimport { resolveBasesEntries } from \"../resolver\";\nimport type { EvalContext } from \"../compiler\";\nimport { i18n } from \"../i18n\";\nimport { registerCustomViews, viewRegistry } from \"../registry\";\nimport { ViewSelector } from \"./ViewSelector\";\nimport { registerBuiltinViews } from \"./views\";\nimport style from \"./styles/bases.scss\";\n// @ts-expect-error inline script import handled by esbuild plugin\nimport script from \"./scripts/bases.inline.ts\";\n\nlet builtinViewsRegistered = false;\n\nexport default ((opts?: BasesPageOptions) => {\n const Component: QuartzComponent = (props: QuartzComponentProps) => {\n const locale = props.cfg?.locale ?? \"en-US\";\n const localeStrings = i18n(locale).components.bases;\n const fileData = props.fileData as {\n basesData?: BasesData;\n basesOptions?: BasesPageOptions;\n basesSelfContext?: EvalContext[\"self\"];\n };\n const basesData = fileData.basesData;\n const basesOptions = fileData.basesOptions ?? opts;\n const basesSelfContext = fileData.basesSelfContext;\n const slug = (props.fileData.slug as string) ?? \"\";\n const rawSlugs = ((props.ctx as Record<string, unknown>)?.allSlugs as string[]) ?? [];\n const baseSlugs = new Set(rawSlugs.filter((s) => s.endsWith(\".base\")));\n const baseAliases = new Set([...baseSlugs].map((s) => s.replace(/\\.base$/, \"\")));\n const allSlugs = rawSlugs.filter((s) => !baseSlugs.has(s) && !baseAliases.has(s));\n const linkResolution = basesOptions?.linkResolution ?? \"shortest\";\n\n if (!basesData) {\n return <div class=\"bases-page bases-empty\">{localeStrings.noData}</div>;\n }\n\n const views = basesData.views ?? [];\n if (views.length === 0) {\n return <div class=\"bases-page bases-empty\">{localeStrings.noViews}</div>;\n }\n\n const preferredType = basesOptions?.defaultViewType ?? \"table\";\n const initialIndex = Math.max(\n 0,\n views.findIndex((view) => view.type === preferredType),\n );\n if (!builtinViewsRegistered) {\n registerBuiltinViews();\n builtinViewsRegistered = true;\n }\n\n if (basesOptions?.customViews) {\n registerCustomViews(basesOptions.customViews);\n }\n\n // Collect CSS from custom view registrations (deduplicated by type)\n const activeTypes = new Set(views.map((v) => v.type));\n const viewCssChunks: string[] = [];\n for (const typeId of activeTypes) {\n const reg = viewRegistry.get(typeId);\n if (reg?.css) viewCssChunks.push(reg.css);\n }\n\n return (\n <div class=\"bases-page\" data-initial-view={initialIndex}>\n {viewCssChunks.length > 0 && (\n <style dangerouslySetInnerHTML={{ __html: viewCssChunks.join(\"\\n\") }} />\n )}\n <ViewSelector views={views} activeIndex={initialIndex} locale={locale} />\n <div class=\"bases-view-container\">\n {views.map((view, index) => {\n const { entries, total } = resolveBasesEntries(\n basesData,\n props.allFiles,\n view,\n basesSelfContext,\n );\n const registration = viewRegistry.get(view.type);\n const Renderer = registration?.render;\n return (\n <div\n class={`bases-view ${index === initialIndex ? \"is-active\" : \"\"}`}\n data-view-index={index}\n data-view-type={view.type}\n >\n {entries.length === 0 ? (\n <div class=\"bases-empty\">{localeStrings.noData}</div>\n ) : Renderer ? (\n <Renderer\n entries={entries}\n view={view}\n basesData={basesData}\n total={total}\n locale={locale}\n slug={slug}\n allSlugs={allSlugs}\n linkResolution={linkResolution}\n options={registration.options}\n />\n ) : (\n <div class=\"bases-empty\">Unknown view type: {view.type}</div>\n )}\n </div>\n );\n })}\n </div>\n </div>\n );\n };\n\n Component.css = style;\n // Collect afterDOMLoaded scripts from all registered views so they get\n // bundled into postscript.js (SPA-compatible) instead of inline <script> tags.\n const viewScripts = viewRegistry\n .getAll()\n .map((reg) => reg.afterDOMLoaded)\n .filter((s): s is string => typeof s === \"string\" && s.length > 0);\n Component.afterDOMLoaded = [script, ...viewScripts];\n\n return Component;\n}) satisfies QuartzComponentConstructor<BasesPageOptions>;\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/components/ViewSelector.tsx","../src/resolver.ts","../src/i18n/locales/en-US.ts","../src/i18n/index.ts","../src/components/shared/links.tsx","../src/components/shared/cell.tsx","../src/components/views/board.tsx","../src/components/views/cards.tsx","../src/components/views/gallery.tsx","../src/components/views/list.tsx","../src/components/shared/summary.tsx","../src/components/views/table.tsx","../src/components/views/index.ts","../src/components/styles/bases.scss","../src/components/scripts/bases.inline.ts","../src/components/BasesBody.tsx"],"names":["formatMessage","WIKILINK_RE","groupEntries"],"mappings":"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","file":"chunk-3MNNFWJ7.js","sourcesContent":["import type { ComponentChild } from \"preact\";\n\nimport type { BasesView } from \"../types\";\n\nexport interface ViewSelectorProps {\n views: BasesView[];\n activeIndex: number;\n locale: string;\n}\n\nexport function ViewSelector({ views, activeIndex }: ViewSelectorProps): ComponentChild {\n if (views.length <= 1) return null;\n\n return (\n <div class=\"bases-view-tabs\" role=\"tablist\">\n {views.map((view, index) => (\n <button\n type=\"button\"\n class={index === activeIndex ? \"is-active\" : \"\"}\n data-view-index={index}\n >\n {view.name ?? view.type}\n </button>\n ))}\n </div>\n );\n}\n","import type { BasesData, BasesEntry, BasesView, QuartzPluginData, SortEntry } from \"./types\";\nimport { evaluate, evaluateFilter, resolvePropertyValue } from \"./compiler\";\nimport type { EvalContext } from \"./compiler\";\n\nfunction normalizeStringArray(values: unknown): string[] {\n if (!Array.isArray(values)) return [];\n return values.filter((value): value is string => typeof value === \"string\");\n}\n\nfunction getFilePath(fileData: QuartzPluginData, slug: string): string {\n // Prefer relativePath (relative to content dir) over filePath (absolute).\n // Self-context paths from .base files use ctx.allFiles which are relative,\n // so note paths must also be relative for inFolder() comparisons to work.\n if (typeof fileData.relativePath === \"string\") return fileData.relativePath;\n if (typeof fileData.filePath === \"string\") return fileData.filePath;\n return slug ? `${slug}.md` : \"\";\n}\n\nfunction getFileName(path: string): string {\n const lastSlash = path.lastIndexOf(\"/\");\n return lastSlash >= 0 ? path.slice(lastSlash + 1) : path;\n}\n\nfunction getBaseName(path: string): string {\n const fileName = getFileName(path);\n const dot = fileName.lastIndexOf(\".\");\n return dot > 0 ? fileName.slice(0, dot) : fileName;\n}\n\nfunction toDate(value: unknown): Date | undefined {\n if (value instanceof Date && !Number.isNaN(value.getTime())) return value;\n if (typeof value === \"string\") {\n const parsed = Date.parse(value);\n if (!Number.isNaN(parsed)) return new Date(parsed);\n }\n return undefined;\n}\n\nfunction buildFileProperties(\n fileData: QuartzPluginData,\n slug: string,\n frontmatter: Record<string, unknown>,\n): BasesEntry[\"fileProperties\"] {\n const filePath = getFilePath(fileData, slug);\n const baseName = filePath ? getBaseName(filePath) : getBaseName(slug);\n const name = baseName || slug.split(\"/\").pop() || \"Untitled\";\n const basename = baseName || slug.split(\"/\").pop() || \"Untitled\";\n const lastSlash = filePath.lastIndexOf(\"/\");\n const folder = lastSlash >= 0 ? filePath.slice(0, lastSlash) : \"\";\n const lastDot = filePath.lastIndexOf(\".\");\n const ext = lastDot >= 0 ? filePath.slice(lastDot + 1) : \"\";\n const tags = normalizeStringArray(frontmatter.tags);\n const links = normalizeStringArray(fileData.links ?? fileData.outgoingLinks);\n const embeds = normalizeStringArray(fileData.embeds);\n\n const dates = fileData.dates as Record<string, unknown> | undefined;\n const ctime = toDate(dates?.created);\n const mtime = toDate(dates?.modified);\n\n return {\n name,\n basename,\n path: filePath,\n folder,\n ext,\n tags,\n links,\n embeds,\n created: ctime?.toISOString(),\n modified: mtime?.toISOString(),\n ctime,\n mtime,\n };\n}\n\nfunction compareSort(a: unknown, b: unknown): number {\n if (a === b) return 0;\n if (a === undefined || a === null) return 1;\n if (b === undefined || b === null) return -1;\n if (typeof a === \"number\" && typeof b === \"number\") return a - b;\n const dateA = typeof a === \"string\" ? Date.parse(a) : NaN;\n const dateB = typeof b === \"string\" ? Date.parse(b) : NaN;\n if (!Number.isNaN(dateA) && !Number.isNaN(dateB)) return dateA - dateB;\n return String(a).localeCompare(String(b));\n}\n\nfunction buildSortKeys(view?: BasesView): SortEntry[] {\n if (view?.sort && view.sort.length > 0) return view.sort;\n if (view?.groupBy?.property) {\n return [{ property: view.groupBy.property, direction: view.groupBy.direction ?? \"ASC\" }];\n }\n if (view?.order && view.order.length > 0) {\n return view.order.map((property) => ({ property, direction: \"ASC\" as const }));\n }\n return [];\n}\n\nfunction sortEntries(entries: BasesEntry[], view?: BasesView): BasesEntry[] {\n const sortKeys = buildSortKeys(view);\n if (sortKeys.length === 0) return entries;\n\n return [...entries].sort((left, right) => {\n for (const key of sortKeys) {\n const sign = key.direction === \"DESC\" ? -1 : 1;\n const leftValue = resolvePropertyValue(key.property, {\n note: left.properties,\n file: left.fileProperties,\n formula: left.formulaValues,\n });\n const rightValue = resolvePropertyValue(key.property, {\n note: right.properties,\n file: right.fileProperties,\n formula: right.formulaValues,\n });\n const cmp = compareSort(leftValue, rightValue);\n if (cmp !== 0) return sign * cmp;\n }\n return 0;\n });\n}\n\nexport function resolveBasesEntries(\n basesData: BasesData,\n allFiles: QuartzPluginData[],\n view?: BasesView,\n selfContext?: EvalContext[\"self\"],\n): { entries: BasesEntry[]; total: number } {\n const entries: BasesEntry[] = [];\n const formulas = basesData.formulas ?? {};\n\n const fileLookup = new Map<string, EvalContext[\"file\"]>();\n for (const fd of allFiles) {\n if ((fd as { unlisted?: unknown }).unlisted === true) continue;\n const fdSlug = typeof fd.slug === \"string\" ? fd.slug : \"\";\n if (!fdSlug) continue;\n const fdPath = getFilePath(fd, fdSlug);\n const fm = (fd.frontmatter ?? {}) as Record<string, unknown>;\n const fp = buildFileProperties(fd, fdSlug, fm);\n const fileValue: EvalContext[\"file\"] = { ...fp, properties: fm };\n\n fileLookup.set(fdPath, fileValue);\n const withoutExt = fdPath.replace(/\\.md$/, \"\");\n if (withoutExt !== fdPath) fileLookup.set(withoutExt, fileValue);\n\n // Register by slug and basename so OFM's short embed names (e.g. \"Apple\"\n // from ![[Apple]]) resolve. First-registered wins to avoid ambiguous overwrites.\n if (fdSlug && !fileLookup.has(fdSlug)) {\n fileLookup.set(fdSlug, fileValue);\n }\n const base = getBaseName(fdPath);\n if (base && !fileLookup.has(base)) {\n fileLookup.set(base, fileValue);\n }\n }\n\n for (const fileData of allFiles) {\n if ((fileData as { unlisted?: unknown }).unlisted === true) continue;\n const slug = typeof fileData.slug === \"string\" ? fileData.slug : \"\";\n if (!slug) continue;\n\n const filePath = typeof fileData.filePath === \"string\" ? fileData.filePath : \"\";\n if (filePath.endsWith(\".base\") || slug.endsWith(\".base\")) continue;\n\n const frontmatter = (fileData.frontmatter ?? {}) as Record<string, unknown>;\n const fileProperties = buildFileProperties(fileData, slug, frontmatter);\n const context = {\n note: frontmatter,\n file: { ...fileProperties, properties: frontmatter },\n formula: {} as Record<string, unknown>,\n self: selfContext,\n _fileLookup: fileLookup,\n };\n\n // Evaluate formulas\n for (const [name, expr] of Object.entries(formulas)) {\n context.formula[name] = evaluate(expr, context);\n }\n\n // Apply global filters\n if (!evaluateFilter(basesData.filters, context)) continue;\n // Apply view-specific filters\n if (view?.filters && !evaluateFilter(view.filters, context)) continue;\n\n const title =\n typeof frontmatter.title === \"string\"\n ? frontmatter.title\n : fileProperties.basename || slug.split(\"/\").pop() || \"Untitled\";\n\n entries.push({\n slug,\n title,\n properties: frontmatter,\n fileProperties,\n formulaValues: context.formula,\n });\n }\n\n const total = entries.length;\n const sorted = sortEntries(entries, view);\n const limited = view?.limit ? sorted.slice(0, view.limit) : sorted;\n return { entries: limited, total };\n}\n","export default {\n components: {\n bases: {\n title: \"Base\",\n noData: \"No data found.\",\n noViews: \"No views defined.\",\n mapPlaceholder: \"Map view is not available in static builds.\",\n allNotes: \"All notes\",\n allEntries: \"All entries\",\n galleryView: \"Gallery\",\n boardView: \"Board\",\n noImage: \"No image available\",\n uncategorized: \"Uncategorized\",\n showingCount: \"Showing {count} of {total} entries\",\n },\n },\n};\n","import enUS from \"./locales/en-US\";\n\nconst locales: Record<string, typeof enUS> = {\n \"en-US\": enUS,\n};\n\nexport function i18n(locale: string) {\n return locales[locale] || enUS;\n}\n","import type { ComponentChild } from \"preact\";\nimport type { FullSlug } from \"@quartz-community/types\";\n\nimport { transformLink } from \"@quartz-community/utils\";\n\nconst WIKILINK_RE = /\\[\\[([^\\]|]+)(?:\\|([^\\]]+))?\\]\\]/g;\nconst MDLINK_RE = /\\[([^\\]]*)\\]\\(([^)]+)\\)/g;\nconst URL_RE = /https?:\\/\\/[^\\s<>]+/g;\n\ntype RenderCtx = {\n slug: string;\n allSlugs: string[];\n linkResolution: \"absolute\" | \"relative\" | \"shortest\";\n};\n\nexport function renderTextWithLinks(text: string, ctx: RenderCtx): ComponentChild[] {\n const segments: { start: number; end: number; node: ComponentChild }[] = [];\n const transformOpts = {\n strategy: ctx.linkResolution,\n allSlugs: ctx.allSlugs as FullSlug[],\n };\n for (const match of text.matchAll(WIKILINK_RE)) {\n const target = match[1] ?? \"\";\n const display = match[2] ?? target;\n const href = transformLink(ctx.slug as FullSlug, target, transformOpts);\n segments.push({\n start: match.index ?? 0,\n end: (match.index ?? 0) + match[0].length,\n node: (\n <a href={href} class=\"internal internal-link\">\n {display}\n </a>\n ),\n });\n }\n\n for (const match of text.matchAll(MDLINK_RE)) {\n const start = match.index ?? 0;\n const end = start + match[0].length;\n const overlaps = segments.some((segment) => start < segment.end && end > segment.start);\n if (overlaps) continue;\n const display = match[1] ?? \"\";\n const href = match[2] ?? \"\";\n const isExternal = href.startsWith(\"http://\") || href.startsWith(\"https://\");\n const resolvedHref = isExternal\n ? href\n : String(transformLink(ctx.slug as FullSlug, href, transformOpts));\n segments.push({\n start,\n end,\n node: (\n <a\n href={resolvedHref}\n class={isExternal ? \"external external-link\" : \"internal internal-link\"}\n {...(isExternal ? { target: \"_blank\", rel: \"noopener noreferrer\" } : {})}\n >\n {display || href}\n </a>\n ),\n });\n }\n\n for (const match of text.matchAll(URL_RE)) {\n const start = match.index ?? 0;\n const end = start + match[0].length;\n const overlaps = segments.some((segment) => start < segment.end && end > segment.start);\n if (overlaps) continue;\n segments.push({\n start,\n end,\n node: (\n <a href={match[0]} class=\"external external-link\" target=\"_blank\" rel=\"noopener noreferrer\">\n {match[0]}\n </a>\n ),\n });\n }\n\n if (segments.length === 0) return [text];\n\n segments.sort((a, b) => a.start - b.start);\n\n const result: ComponentChild[] = [];\n let cursor = 0;\n for (const segment of segments) {\n if (segment.start > cursor) {\n result.push(text.slice(cursor, segment.start));\n }\n result.push(segment.node);\n cursor = segment.end;\n }\n if (cursor < text.length) {\n result.push(text.slice(cursor));\n }\n return result;\n}\n","import type { ComponentChild } from \"preact\";\nimport type { FullSlug } from \"@quartz-community/types\";\n\nimport type { BasesData, BasesEntry, BasesView } from \"../../types\";\nimport { renderTextWithLinks } from \"./links\";\nimport { transformLink, slugifyPath } from \"@quartz-community/utils\";\n\ntype RenderCtx = {\n slug: string;\n allSlugs: string[];\n linkResolution: \"absolute\" | \"relative\" | \"shortest\";\n};\n\n/**\n * Detect file objects returned by asFile() in the expression engine.\n * These have a specific shape: {name, basename, path, folder, ext, tags, links}.\n */\nfunction isFileValue(\n value: unknown,\n): value is { name: string; basename: string; path: string; folder: string; ext: string } {\n if (!value || typeof value !== \"object\" || Array.isArray(value)) return false;\n const record = value as Record<string, unknown>;\n return (\n typeof record.name === \"string\" &&\n typeof record.basename === \"string\" &&\n typeof record.path === \"string\" &&\n typeof record.folder === \"string\" &&\n typeof record.ext === \"string\"\n );\n}\n\nexport function formatValue(value: unknown): string {\n if (value === undefined || value === null) return \"\";\n if (Array.isArray(value)) return value.map((item) => String(item)).join(\", \");\n if (typeof value === \"object\") return JSON.stringify(value);\n return String(value);\n}\n\nexport function renderCellValue(value: unknown, ctx: RenderCtx): ComponentChild {\n if (value === null || value === undefined) {\n return <span class=\"bases-empty\">—</span>;\n }\n\n if (typeof value === \"boolean\") {\n return <input type=\"checkbox\" checked={value} disabled />;\n }\n\n if (typeof value === \"number\") {\n return <span class=\"bases-number\">{value}</span>;\n }\n\n if (typeof value === \"string\") {\n const parts = renderTextWithLinks(value, ctx);\n return <span class=\"bases-text\">{parts}</span>;\n }\n\n if (Array.isArray(value)) {\n const items = value.map((item, index) => (\n <>\n {index > 0 && <span class=\"bases-separator\">, </span>}\n {renderCellValue(item, ctx)}\n </>\n ));\n return <span class=\"bases-list\">{items}</span>;\n }\n\n if (typeof value === \"object\") {\n if (isFileValue(value)) {\n const href = transformLink(\n ctx.slug as FullSlug,\n slugifyPath(value.path.replace(/\\.md$/, \"\")),\n {\n strategy: ctx.linkResolution,\n allSlugs: ctx.allSlugs as FullSlug[],\n },\n );\n return (\n <a href={href} class=\"internal internal-link\">\n {value.basename}\n </a>\n );\n }\n return <code>{JSON.stringify(value)}</code>;\n }\n\n return String(value);\n}\n\nexport function isEmptyValue(value: unknown): boolean {\n if (value === undefined || value === null || value === \"\") return true;\n if (Array.isArray(value)) return value.length === 0;\n return false;\n}\n\nexport function getColumnLabel(column: string, basesData: BasesData): string {\n const config = basesData.properties?.[column];\n if (config?.displayName) return config.displayName;\n const segment = column.split(\".\").pop() ?? column;\n return segment\n .split(\"_\")\n .map((part) => (part ? part.charAt(0).toUpperCase() + part.slice(1) : part))\n .join(\" \");\n}\n\nexport function getColumns(view: BasesView, basesData: BasesData, entries: BasesEntry[]): string[] {\n if (view.order && view.order.length > 0) return view.order;\n const columns = new Set<string>();\n columns.add(\"file.name\");\n const propertyKeys = basesData.properties ? Object.keys(basesData.properties) : [];\n if (propertyKeys.length > 0) {\n propertyKeys.forEach((key) => {\n columns.add(key);\n });\n } else if (entries.length > 0) {\n const firstEntry = entries[0];\n if (firstEntry) {\n Object.keys(firstEntry.properties).forEach((key) => {\n columns.add(key);\n });\n }\n }\n return Array.from(columns);\n}\n\nfunction getNestedValue(value: unknown, path: string[]): unknown {\n let current: unknown = value;\n for (const segment of path) {\n if (segment === \"\") continue;\n if (Array.isArray(current)) {\n const index = Number(segment);\n if (Number.isNaN(index)) return undefined;\n current = current[index];\n continue;\n }\n if (current && typeof current === \"object\") {\n const record = current as Record<string, unknown>;\n current = record[segment];\n continue;\n }\n return undefined;\n }\n return current;\n}\n\nexport function resolveEntryPropertyValue(column: string, entry: BasesEntry): unknown {\n if (column.startsWith(\"note.\")) {\n return getNestedValue(entry.properties, column.slice(5).split(\".\"));\n }\n if (column.startsWith(\"file.\")) {\n return getNestedValue(entry.fileProperties, column.slice(5).split(\".\"));\n }\n if (column.startsWith(\"formula.\")) {\n return getNestedValue(entry.formulaValues, column.slice(8).split(\".\"));\n }\n return getNestedValue(entry.properties, column.split(\".\"));\n}\n","import type { ViewRenderer, ViewTypeRegistration } from \"../../types\";\nimport type { FullSlug } from \"@quartz-community/types\";\nimport { i18n } from \"../../i18n\";\nimport {\n formatValue,\n getColumnLabel,\n getColumns,\n isEmptyValue,\n renderCellValue,\n resolveEntryPropertyValue,\n} from \"../shared/cell\";\nimport { transformLink } from \"@quartz-community/utils\";\n\nfunction formatMessage(template: string, values: Record<string, string | number>): string {\n return Object.entries(values).reduce(\n (text, [key, value]) => text.replace(`{${key}}`, String(value)),\n template,\n );\n}\n\nconst BoardView: ViewRenderer = ({\n entries,\n view,\n basesData,\n total,\n locale,\n slug,\n allSlugs,\n linkResolution,\n}) => {\n const localeStrings = i18n(locale).components.bases;\n const groupProperty = view.groupBy?.property ?? view.boardProperty;\n const columns = getColumns(view, basesData, entries).filter((column) => column !== groupProperty);\n const groups = new Map<string, { label: string; entries: typeof entries }>();\n const emptyLabel = groupProperty ? localeStrings.uncategorized : localeStrings.allEntries;\n const transformOpts = { strategy: linkResolution, allSlugs: allSlugs as FullSlug[] };\n\n for (const entry of entries) {\n const rawValue = groupProperty ? resolveEntryPropertyValue(groupProperty, entry) : undefined;\n const label = isEmptyValue(rawValue) ? emptyLabel : formatValue(rawValue);\n const key = label || emptyLabel;\n const existing = groups.get(key);\n if (existing) {\n existing.entries.push(entry);\n } else {\n groups.set(key, { label: key, entries: [entry] });\n }\n }\n\n if (groups.size === 0) {\n groups.set(localeStrings.allEntries, { label: localeStrings.allEntries, entries });\n }\n\n return (\n <div class=\"bases-board-wrapper\">\n <div class=\"bases-view-meta\">\n {formatMessage(localeStrings.showingCount, {\n count: entries.length,\n total,\n })}\n </div>\n <div class=\"bases-board\">\n {Array.from(groups.values()).map((group) => (\n <div class=\"bases-board-column\">\n <div class=\"bases-board-column-header\">\n <span>{group.label}</span>\n <span class=\"bases-board-count\">{group.entries.length}</span>\n </div>\n <div class=\"bases-board-column-body\">\n {group.entries.map((entry) => {\n const ctx = { slug, allSlugs, linkResolution };\n return (\n <div class=\"bases-board-card\">\n <a\n href={transformLink(slug as FullSlug, entry.slug, transformOpts)}\n class=\"internal internal-link\"\n data-slug={entry.slug}\n >\n {entry.title}\n </a>\n {columns.length > 0 && (\n <div class=\"bases-board-card-meta\">\n {columns.map((column) => {\n const value = resolveEntryPropertyValue(column, entry);\n if (isEmptyValue(value)) return null;\n return (\n <div class=\"bases-board-card-row\">\n <span class=\"bases-board-card-label\">\n {getColumnLabel(column, basesData)}\n </span>\n <span class=\"bases-board-card-value\">\n {renderCellValue(value, ctx)}\n </span>\n </div>\n );\n })}\n </div>\n )}\n </div>\n );\n })}\n </div>\n </div>\n ))}\n </div>\n </div>\n );\n};\n\nexport const boardViewRegistration: ViewTypeRegistration = {\n id: \"board\",\n name: \"Board\",\n icon: \"columns\",\n render: BoardView,\n};\n\nexport { BoardView };\n","import type { ViewRenderer, ViewTypeRegistration } from \"../../types\";\nimport type { FullSlug } from \"@quartz-community/types\";\nimport { i18n } from \"../../i18n\";\nimport {\n getColumnLabel,\n isEmptyValue,\n renderCellValue,\n resolveEntryPropertyValue,\n} from \"../shared/cell\";\nimport { transformLink } from \"@quartz-community/utils\";\n\nfunction formatMessage(template: string, values: Record<string, string | number>): string {\n return Object.entries(values).reduce(\n (text, [key, value]) => text.replace(`{${key}}`, String(value)),\n template,\n );\n}\n\nconst HEX_COLOR_RE = /^#(?:[0-9a-f]{3}){1,2}$/i;\nconst WIKILINK_RE = /^\\[\\[(.+?)(?:\\|.*)?\\]\\]$/;\n\nexport interface ResolveImageOpts {\n slug: string;\n allSlugs: string[];\n linkResolution: \"absolute\" | \"relative\" | \"shortest\";\n}\n\nexport function resolveImageSrc(\n raw: string,\n opts: ResolveImageOpts,\n): { src: string; isColor: boolean } {\n if (!raw) return { src: \"\", isColor: false };\n\n if (HEX_COLOR_RE.test(raw)) {\n return { src: raw, isColor: true };\n }\n\n const wikiMatch = WIKILINK_RE.exec(raw);\n if (wikiMatch?.[1]) {\n const target = wikiMatch[1].trim();\n const resolved = transformLink(opts.slug as FullSlug, target, {\n strategy: opts.linkResolution,\n allSlugs: opts.allSlugs as FullSlug[],\n });\n return { src: String(resolved), isColor: false };\n }\n\n return { src: raw, isColor: false };\n}\n\nconst CardsView: ViewRenderer = ({\n entries,\n view,\n basesData,\n total,\n locale,\n slug,\n allSlugs,\n linkResolution,\n}) => {\n const imageProperty = typeof view.image === \"string\" ? view.image : undefined;\n const cardMetaColumns =\n view.order && view.order.length > 0\n ? view.order.filter((column) => column !== imageProperty && column !== \"file.name\")\n : [];\n const localeStrings = i18n(locale).components.bases;\n const cardSize = view.cardSize;\n const aspectRatio = view.imageAspectRatio ?? view.cardAspect;\n const imageFit = view.imageFit === \"contain\" ? \"contain\" : \"cover\";\n const gridStyle =\n typeof cardSize === \"number\" && cardSize > 0\n ? { gridTemplateColumns: `repeat(auto-fit, minmax(${cardSize}px, 1fr))` }\n : undefined;\n const imageOpts: ResolveImageOpts = { slug, allSlugs, linkResolution };\n const transformOpts = { strategy: linkResolution, allSlugs: allSlugs as FullSlug[] };\n\n return (\n <div class=\"bases-cards-wrapper\">\n <div class=\"bases-view-meta\">\n {formatMessage(localeStrings.showingCount, {\n count: entries.length,\n total,\n })}\n </div>\n <div class=\"bases-cards\" style={gridStyle}>\n {entries.map((entry) => {\n const ctx = { slug, allSlugs, linkResolution };\n const imageValue = imageProperty\n ? resolveEntryPropertyValue(imageProperty, entry)\n : undefined;\n const rawImage = imageValue ? String(imageValue) : \"\";\n const { src: imageSrc, isColor } = resolveImageSrc(rawImage, imageOpts);\n const imageAspect =\n typeof aspectRatio === \"number\" && aspectRatio > 0\n ? { aspectRatio: String(aspectRatio) }\n : undefined;\n const href = transformLink(slug as FullSlug, entry.slug, transformOpts);\n return (\n <a href={href} class=\"internal internal-link bases-card\" data-slug={entry.slug}>\n {imageSrc && !isColor && (\n <div class=\"bases-card-image\" style={imageAspect}>\n <img\n src={imageSrc}\n alt={entry.title}\n loading=\"lazy\"\n style={{ objectFit: imageFit }}\n />\n </div>\n )}\n {imageSrc && isColor && (\n <div\n class=\"bases-card-image bases-card-color\"\n style={{ ...imageAspect, backgroundColor: imageSrc }}\n />\n )}\n <div class=\"bases-card-body\">\n <span class=\"bases-card-title\">{entry.title}</span>\n <div class=\"bases-card-meta\">\n {cardMetaColumns.map((column) => {\n const value = resolveEntryPropertyValue(column, entry);\n if (isEmptyValue(value)) return null;\n return (\n <div class=\"bases-card-row\">\n <span class=\"bases-card-label\">{getColumnLabel(column, basesData)}</span>\n <span class=\"bases-card-value\">{renderCellValue(value, ctx)}</span>\n </div>\n );\n })}\n </div>\n </div>\n </a>\n );\n })}\n </div>\n </div>\n );\n};\n\nexport const cardsViewRegistration: ViewTypeRegistration = {\n id: \"cards\",\n name: \"Cards\",\n icon: \"layout-grid\",\n render: CardsView,\n};\n\nexport { CardsView };\n","import type { ViewRenderer, ViewTypeRegistration } from \"../../types\";\nimport type { FullSlug } from \"@quartz-community/types\";\nimport { i18n } from \"../../i18n\";\nimport { resolveEntryPropertyValue } from \"../shared/cell\";\nimport { transformLink } from \"@quartz-community/utils\";\nimport { resolveImageSrc } from \"./cards\";\nimport type { ResolveImageOpts } from \"./cards\";\n\nfunction formatMessage(template: string, values: Record<string, string | number>): string {\n return Object.entries(values).reduce(\n (text, [key, value]) => text.replace(`{${key}}`, String(value)),\n template,\n );\n}\n\nconst GalleryView: ViewRenderer = ({\n entries,\n view,\n total,\n locale,\n slug,\n allSlugs,\n linkResolution,\n}) => {\n const imageProperty = typeof view.image === \"string\" ? view.image : undefined;\n const localeStrings = i18n(locale).components.bases;\n const columns =\n typeof view.cardSize === \"number\" && view.cardSize > 0 ? Math.round(view.cardSize) : 3;\n const gridStyle = { gridTemplateColumns: `repeat(${columns}, minmax(0, 1fr))` };\n const imageOpts: ResolveImageOpts = { slug, allSlugs, linkResolution };\n const transformOpts = { strategy: linkResolution, allSlugs: allSlugs as FullSlug[] };\n\n return (\n <div class=\"bases-gallery-wrapper\">\n <div class=\"bases-view-meta\">\n {formatMessage(localeStrings.showingCount, {\n count: entries.length,\n total,\n })}\n </div>\n <div class=\"bases-gallery\" style={gridStyle}>\n {entries.map((entry) => {\n const imageValue = imageProperty\n ? resolveEntryPropertyValue(imageProperty, entry)\n : undefined;\n const rawImage = imageValue ? String(imageValue) : \"\";\n const { src: imageSrc, isColor } = resolveImageSrc(rawImage, imageOpts);\n return (\n <div class=\"bases-gallery-item\">\n <div class=\"bases-gallery-image\">\n {imageSrc && !isColor ? (\n <img src={imageSrc} alt={entry.title} loading=\"lazy\" />\n ) : imageSrc && isColor ? (\n <span class=\"bases-gallery-placeholder\" style={{ background: imageSrc }} />\n ) : (\n <span\n class=\"bases-gallery-placeholder\"\n role=\"img\"\n aria-label={localeStrings.noImage}\n />\n )}\n </div>\n <div class=\"bases-gallery-title\">\n <a\n href={transformLink(slug as FullSlug, entry.slug, transformOpts)}\n class=\"internal internal-link\"\n data-slug={entry.slug}\n >\n {entry.title}\n </a>\n </div>\n </div>\n );\n })}\n </div>\n </div>\n );\n};\n\nexport const galleryViewRegistration: ViewTypeRegistration = {\n id: \"gallery\",\n name: \"Gallery\",\n icon: \"image\",\n render: GalleryView,\n};\n\nexport { GalleryView };\n","import type { ComponentChild } from \"preact\";\nimport type { ViewRenderer, ViewTypeRegistration } from \"../../types\";\nimport type { FullSlug } from \"@quartz-community/types\";\nimport { i18n } from \"../../i18n\";\nimport {\n getColumns,\n isEmptyValue,\n renderCellValue,\n resolveEntryPropertyValue,\n} from \"../shared/cell\";\nimport { transformLink } from \"@quartz-community/utils\";\n\nfunction formatMessage(template: string, values: Record<string, string | number>): string {\n return Object.entries(values).reduce(\n (text, [key, value]) => text.replace(`{${key}}`, String(value)),\n template,\n );\n}\n\nconst ListView: ViewRenderer = ({\n entries,\n view,\n basesData,\n total,\n locale,\n slug,\n allSlugs,\n linkResolution,\n}) => {\n const columns = getColumns(view, basesData, entries);\n const localeStrings = i18n(locale).components.bases;\n const transformOpts = { strategy: linkResolution, allSlugs: allSlugs as FullSlug[] };\n\n return (\n <div class=\"bases-list-wrapper\">\n <div class=\"bases-view-meta\">\n {formatMessage(localeStrings.showingCount, {\n count: entries.length,\n total,\n })}\n </div>\n <div class=\"bases-list-group\">\n <div class=\"bases-list-group-list\">\n {entries.map((entry) => {\n const ctx = { slug, allSlugs, linkResolution };\n const primaryColumn = columns[0] ?? \"file.name\";\n const secondaryColumns = columns.slice(1);\n\n const primaryValue: ComponentChild =\n primaryColumn === \"file.name\" ? (\n <a\n href={transformLink(slug as FullSlug, entry.slug, transformOpts)}\n class=\"internal internal-link\"\n data-slug={entry.slug}\n >\n {entry.title}\n </a>\n ) : (\n renderCellValue(resolveEntryPropertyValue(primaryColumn, entry), ctx)\n );\n\n const secondaryItems: ComponentChild[] = [];\n for (const column of secondaryColumns) {\n const value = resolveEntryPropertyValue(column, entry);\n if (isEmptyValue(value)) continue;\n secondaryItems.push(\n <span class=\"bases-list-property\">\n <span class=\"bases-rendered-value\">{renderCellValue(value, ctx)}</span>\n </span>,\n );\n }\n\n return (\n <div class=\"bases-list-item\">\n <div class=\"bases-list-item-properties\">\n <span class=\"bases-list-property\">\n <span class=\"list-bullet\">-</span>\n <span class=\"bases-rendered-value\">{primaryValue}</span>\n </span>\n {secondaryItems.map((item) => (\n <>\n <span class=\"bases-list-separator\">, </span>\n {item}\n </>\n ))}\n </div>\n </div>\n );\n })}\n </div>\n </div>\n </div>\n );\n};\n\nexport const listViewRegistration: ViewTypeRegistration = {\n id: \"list\",\n name: \"List\",\n icon: \"list\",\n render: ListView,\n};\n\nexport { ListView };\n","import type { SummaryType } from \"../../types\";\n\nexport function computeSummary(values: unknown[], summary: SummaryType): string {\n const nonEmpty = values.filter((value) => value !== undefined && value !== null && value !== \"\");\n if (summary === \"Empty\") return String(values.length - nonEmpty.length);\n if (summary === \"Filled\") return String(nonEmpty.length);\n if (summary === \"Checked\") return String(values.filter((value) => value === true).length);\n if (summary === \"Unchecked\") return String(values.filter((value) => value === false).length);\n if (summary === \"Unique\") return String(new Set(values.map((value) => String(value))).size);\n\n const numeric = nonEmpty\n .map((value) => (typeof value === \"number\" ? value : Number(value)))\n .filter((value) => !Number.isNaN(value));\n\n if (numeric.length === 0) return summary;\n if (summary === \"Sum\") return String(numeric.reduce((acc, value) => acc + value, 0));\n if (summary === \"Average\")\n return String(numeric.reduce((acc, value) => acc + value, 0) / numeric.length);\n if (summary === \"Min\") return String(Math.min(...numeric));\n if (summary === \"Max\") return String(Math.max(...numeric));\n if (summary === \"Range\") return String(Math.max(...numeric) - Math.min(...numeric));\n if (summary === \"Median\") {\n const sorted = [...numeric].sort((a, b) => a - b);\n const mid = Math.floor(sorted.length / 2);\n const upper = sorted[mid] ?? 0;\n const lower = sorted[mid - 1] ?? upper;\n const median = sorted.length % 2 === 0 ? (lower + upper) / 2 : upper;\n return String(median);\n }\n if (summary === \"Stddev\") {\n const mean = numeric.reduce((acc, value) => acc + value, 0) / numeric.length;\n const variance =\n numeric.reduce((acc, value) => acc + Math.pow(value - mean, 2), 0) / numeric.length;\n return String(Math.sqrt(variance));\n }\n\n return summary;\n}\n","import type { BasesEntry, ViewRenderer, ViewTypeRegistration } from \"../../types\";\nimport type { FullSlug } from \"@quartz-community/types\";\nimport { i18n } from \"../../i18n\";\nimport {\n formatValue,\n getColumnLabel,\n getColumns,\n isEmptyValue,\n renderCellValue,\n resolveEntryPropertyValue,\n} from \"../shared/cell\";\nimport { computeSummary } from \"../shared/summary\";\nimport { transformLink } from \"@quartz-community/utils\";\n\nfunction formatMessage(template: string, values: Record<string, string | number>): string {\n return Object.entries(values).reduce(\n (text, [key, value]) => text.replace(`{${key}}`, String(value)),\n template,\n );\n}\n\nfunction groupEntries(\n entries: BasesEntry[],\n groupProperty: string | undefined,\n emptyLabel: string,\n): Map<string, BasesEntry[]> | null {\n if (!groupProperty) return null;\n const groups = new Map<string, BasesEntry[]>();\n for (const entry of entries) {\n const rawValue = resolveEntryPropertyValue(groupProperty, entry);\n const label = isEmptyValue(rawValue) ? emptyLabel : formatValue(rawValue);\n const key = label || emptyLabel;\n const existing = groups.get(key);\n if (existing) {\n existing.push(entry);\n } else {\n groups.set(key, [entry]);\n }\n }\n return groups.size > 0 ? groups : null;\n}\n\nfunction renderRow(\n entry: BasesEntry,\n columns: string[],\n view: Parameters<ViewRenderer>[0][\"view\"],\n slug: string,\n allSlugs: string[],\n linkResolution: \"absolute\" | \"relative\" | \"shortest\",\n) {\n const transformOpts = { strategy: linkResolution, allSlugs: allSlugs as FullSlug[] };\n const ctx = { slug, allSlugs, linkResolution };\n return (\n <tr>\n {columns.map((column) => {\n const value = resolveEntryPropertyValue(column, entry);\n const display = formatValue(value);\n const isPrimary = column === \"file.name\" || column === \"title\";\n const columnWidth = view.columnSize?.[column];\n const style = columnWidth\n ? { width: `${columnWidth}px`, minWidth: `${columnWidth}px` }\n : undefined;\n return (\n <td data-value={display} style={style}>\n {isPrimary ? (\n <a\n href={transformLink(slug as FullSlug, entry.slug, transformOpts)}\n class=\"internal internal-link\"\n data-slug={entry.slug}\n >\n {display || entry.title}\n </a>\n ) : (\n renderCellValue(value, ctx)\n )}\n </td>\n );\n })}\n </tr>\n );\n}\n\nconst TableView: ViewRenderer = ({\n entries,\n view,\n basesData,\n total,\n locale,\n slug,\n allSlugs,\n linkResolution,\n}) => {\n const columns = getColumns(view, basesData, entries);\n const summaries = view.summaries ?? {};\n const hasSummary = Object.keys(summaries).length > 0;\n const localeStrings = i18n(locale).components.bases;\n const groupProperty = view.groupBy?.property;\n const groupPropertyLabel = groupProperty ? getColumnLabel(groupProperty, basesData) : \"\";\n const groups = groupEntries(entries, groupProperty, localeStrings.uncategorized);\n\n return (\n <div class=\"bases-table-wrapper\">\n <div class=\"bases-view-meta\">\n {formatMessage(localeStrings.showingCount, {\n count: entries.length,\n total,\n })}\n </div>\n <table class=\"bases-table\" data-view-type=\"table\">\n <thead>\n <tr>\n {columns.map((column) => {\n const columnWidth = view.columnSize?.[column];\n const style = columnWidth\n ? { width: `${columnWidth}px`, minWidth: `${columnWidth}px` }\n : undefined;\n return (\n <th data-column={column} data-sortable=\"true\" style={style}>\n <span class=\"bases-table-header\">{getColumnLabel(column, basesData)}</span>\n <span class=\"bases-table-header-sort\" aria-hidden=\"true\" />\n </th>\n );\n })}\n </tr>\n </thead>\n <tbody>\n {groups\n ? Array.from(groups.entries()).map(([label, groupEntries]) => (\n <>\n <tr class=\"bases-table-group-header\">\n <td colSpan={columns.length}>\n {groupPropertyLabel && (\n <span class=\"bases-table-group-property\">{groupPropertyLabel} </span>\n )}\n <span class=\"bases-table-group-label\">{label}</span>\n <span class=\"bases-table-group-count\">{groupEntries.length}</span>\n </td>\n </tr>\n {groupEntries.map((entry) =>\n renderRow(entry, columns, view, slug, allSlugs, linkResolution),\n )}\n </>\n ))\n : entries.map((entry) =>\n renderRow(entry, columns, view, slug, allSlugs, linkResolution),\n )}\n </tbody>\n {hasSummary && (\n <tfoot>\n <tr class=\"bases-summary-row\">\n {columns.map((column) => {\n const summary = summaries[column];\n if (!summary) return <td />;\n const values = entries.map((entry) => resolveEntryPropertyValue(column, entry));\n return <td>{computeSummary(values, summary)}</td>;\n })}\n </tr>\n </tfoot>\n )}\n </table>\n </div>\n );\n};\n\nexport const tableViewRegistration: ViewTypeRegistration = {\n id: \"table\",\n name: \"Table\",\n icon: \"table\",\n render: TableView,\n};\n\nexport { TableView };\n","import { viewRegistry } from \"../../registry\";\n\nimport { boardViewRegistration } from \"./board\";\nimport { cardsViewRegistration } from \"./cards\";\nimport { galleryViewRegistration } from \"./gallery\";\nimport { listViewRegistration } from \"./list\";\nimport { tableViewRegistration } from \"./table\";\n\nexport function registerBuiltinViews(): void {\n viewRegistry.register(tableViewRegistration);\n viewRegistry.register(listViewRegistration);\n viewRegistry.register(cardsViewRegistration);\n viewRegistry.register(galleryViewRegistration);\n viewRegistry.register(boardViewRegistration);\n}\n",".bases-page {\n width: 100%;\n max-width: 100%;\n display: flex;\n flex-direction: column;\n gap: 16px;\n overflow: hidden;\n}\n\n.bases-view-tabs {\n display: flex;\n gap: 8px;\n flex-wrap: wrap;\n}\n.bases-view-tabs button {\n border: 1px solid var(--lightgray);\n background: var(--light);\n color: var(--darkgray);\n padding: 6px 12px;\n border-radius: 999px;\n cursor: pointer;\n font-size: 0.9rem;\n}\n.bases-view-tabs button.is-active {\n background: var(--secondary);\n color: var(--light);\n border-color: var(--secondary);\n}\n\n.bases-view-container {\n display: flex;\n flex-direction: column;\n gap: 16px;\n}\n\n.bases-view {\n display: none;\n}\n.bases-view.is-active {\n display: block;\n}\n\n.bases-view-meta {\n font-size: 0.85rem;\n color: var(--gray);\n margin-bottom: 8px;\n}\n\n.bases-table-wrapper {\n width: 100%;\n overflow-x: auto;\n}\n\n.bases-table {\n width: 100%;\n border-collapse: collapse;\n border: 1px solid var(--lightgray);\n border-radius: 8px;\n overflow: hidden;\n}\n.bases-table th,\n.bases-table td {\n padding: 10px 12px;\n text-align: left;\n border-bottom: 1px solid var(--lightgray);\n font-size: 0.9rem;\n}\n.bases-table thead th {\n position: sticky;\n top: 0;\n background: var(--light);\n color: var(--dark);\n font-weight: 600;\n cursor: pointer;\n}\n.bases-table td .bases-empty {\n padding: 0;\n border: 0;\n background: none;\n color: var(--gray);\n display: inline;\n}\n.bases-table td code {\n font-size: 0.85em;\n padding: 0.1rem 0.3rem;\n border-radius: 3px;\n background: var(--highlight);\n word-break: break-all;\n}\n.bases-table td .bases-list {\n flex-direction: row;\n flex-wrap: wrap;\n gap: 4px;\n}\n.bases-table td input[type=checkbox] {\n margin-inline: 0;\n}\n\n.bases-table-header-sort {\n position: absolute;\n right: 8px;\n top: calc(50% - 4px);\n display: inline-block;\n width: 8px;\n height: 8px;\n margin-left: 6px;\n border-right: 2px solid transparent;\n border-bottom: 2px solid transparent;\n}\n\nth.is-sorted-asc .bases-table-header-sort {\n border-right-color: var(--darkgray);\n border-bottom-color: var(--darkgray);\n transform: rotate(-45deg);\n}\n\nth.is-sorted-desc .bases-table-header-sort {\n border-right-color: var(--darkgray);\n border-bottom-color: var(--darkgray);\n transform: rotate(135deg);\n}\n\n.bases-summary-row td {\n background: var(--light);\n font-weight: 600;\n color: var(--darkgray);\n}\n\n.bases-table-group-header td {\n background: var(--lightgray);\n font-weight: 600;\n padding: 8px 12px;\n border-bottom: 2px solid var(--gray);\n}\n\n.bases-table-group-property {\n color: var(--gray);\n font-weight: 400;\n}\n\n.bases-table-group-label {\n margin-right: 8px;\n}\n\n.bases-table-group-count {\n background: var(--light);\n color: var(--darkgray);\n border-radius: 999px;\n padding: 2px 8px;\n font-size: 0.75rem;\n font-weight: 400;\n}\n\n.bases-separator {\n color: var(--gray);\n}\n\n.bases-number {\n font-variant-numeric: tabular-nums;\n}\n\n.bases-list {\n display: inline-flex;\n flex-wrap: wrap;\n gap: 4px;\n}\n\n.bases-list-group {\n width: 100%;\n}\n\n.bases-list-group-list {\n display: flex;\n flex-direction: column;\n}\n\n.bases-list-item {\n padding: 2px 0;\n}\n\n.bases-list-item-properties {\n display: flex;\n flex-wrap: wrap;\n align-items: baseline;\n gap: 0;\n}\n\n.bases-list-property {\n display: inline-flex;\n align-items: baseline;\n gap: 4px;\n}\n\n.list-bullet {\n color: var(--darkgray);\n user-select: none;\n}\n\n.bases-list-separator {\n color: var(--gray);\n margin-right: 4px;\n}\n\n.bases-rendered-value {\n display: inline;\n}\n\n.bases-cards {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(min(220px, 100%), 1fr));\n gap: 16px;\n}\n\n.bases-card {\n border: 1px solid var(--lightgray);\n border-radius: 12px;\n overflow: hidden;\n background: var(--light);\n display: flex;\n flex-direction: column;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);\n color: inherit;\n text-decoration: none;\n transition: box-shadow 0.15s ease;\n}\n.bases-card:hover {\n box-shadow: 0 4px 16px rgba(0, 0, 0, 0.14);\n}\n\n.bases-card-image {\n overflow: hidden;\n background: var(--lightgray);\n}\n.bases-card-image img {\n width: 100%;\n height: 100%;\n display: block;\n object-fit: cover;\n}\n\n.bases-card-color {\n min-height: 60px;\n}\n\n.bases-card-title {\n font-weight: 600;\n color: var(--dark);\n}\n\n.bases-card-body {\n padding: 12px;\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.bases-card-meta {\n display: grid;\n gap: 4px;\n}\n\n.bases-card-row {\n display: flex;\n justify-content: space-between;\n font-size: 0.8rem;\n color: var(--darkgray);\n}\n\n.bases-card-label {\n color: var(--gray);\n}\n\n.bases-map-placeholder {\n padding: 24px;\n border: 1px dashed var(--lightgray);\n border-radius: 12px;\n background: var(--light);\n}\n\n.bases-map-message {\n color: var(--darkgray);\n margin-top: 12px;\n}\n\n.bases-empty {\n padding: 24px;\n text-align: center;\n color: var(--darkgray);\n border: 1px dashed var(--lightgray);\n border-radius: 12px;\n background: var(--light);\n}\n\n.bases-gallery {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(min(200px, 100%), 1fr));\n gap: 16px;\n}\n\n.bases-gallery-item {\n position: relative;\n border-radius: 12px;\n overflow: hidden;\n border: 1px solid var(--lightgray);\n background: var(--light);\n}\n\n.bases-gallery-image {\n aspect-ratio: 4/3;\n overflow: hidden;\n background: var(--lightgray);\n}\n\n.bases-gallery-image img,\n.bases-gallery-placeholder {\n width: 100%;\n height: 100%;\n display: block;\n object-fit: cover;\n}\n\n.bases-gallery-placeholder {\n background: linear-gradient(135deg, var(--lightgray), var(--highlight));\n}\n\n.bases-gallery-title {\n position: absolute;\n left: 0;\n right: 0;\n bottom: 0;\n padding: 10px 12px;\n background: linear-gradient(180deg, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 0.65) 100%);\n color: var(--light);\n font-weight: 600;\n}\n\n.bases-gallery-title a {\n color: inherit;\n}\n\n.bases-board {\n display: flex;\n gap: 16px;\n overflow-x: auto;\n padding-bottom: 4px;\n}\n\n.bases-board-column {\n min-width: min(250px, 80vw);\n flex-shrink: 0;\n border: 1px solid var(--lightgray);\n border-radius: 12px;\n background: var(--light);\n display: flex;\n flex-direction: column;\n}\n\n.bases-board-column-header {\n position: sticky;\n top: 0;\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 8px;\n padding: 10px 12px;\n font-weight: 600;\n background: var(--light);\n border-bottom: 1px solid var(--lightgray);\n border-radius: 12px 12px 0 0;\n z-index: 1;\n}\n\n.bases-board-count {\n background: var(--lightgray);\n color: var(--darkgray);\n border-radius: 999px;\n padding: 2px 8px;\n font-size: 0.75rem;\n}\n\n.bases-board-column-body {\n padding: 8px;\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.bases-board-card {\n border: 1px solid var(--lightgray);\n border-radius: 10px;\n background: var(--light);\n padding: 10px 12px;\n display: flex;\n flex-direction: column;\n gap: 6px;\n box-shadow: 0 1px 6px rgba(0, 0, 0, 0.08);\n}\n\n.bases-board-card-meta {\n display: grid;\n gap: 4px;\n font-size: 0.8rem;\n color: var(--darkgray);\n}\n\n.bases-board-card-row {\n display: flex;\n justify-content: space-between;\n gap: 8px;\n}\n\n.bases-board-card-label {\n color: var(--gray);\n}","function f(e,s){let n=e.querySelectorAll(\".bases-view-tabs button\"),r=e.querySelectorAll(\".bases-view\");n.forEach(t=>{t.classList.toggle(\"is-active\",t.dataset.viewIndex===String(s))}),r.forEach(t=>{t.classList.toggle(\"is-active\",t.dataset.viewIndex===String(s))})}function p(e,s){let n=Number(e),r=Number(s);return!Number.isNaN(n)&&!Number.isNaN(r)?n-r:String(e).localeCompare(String(s))}function h(e,s,n){return e.length===0||(e.sort((r,t)=>{let i=r.children[s],o=t.children[s],c=i?.dataset?.value??i?.textContent??\"\",a=o?.dataset?.value??o?.textContent??\"\";return p(c,a)}),n===\"desc\"&&e.reverse()),e}function v(e,s,n){let r=e.querySelector(\"tbody\");if(!r)return;let t=Array.from(r.querySelectorAll(\"tr\"));if(n===\"none\"){let o=e._originalOrder;o&&o.forEach(c=>r.appendChild(c));return}if(e._originalOrder||(e._originalOrder=Array.from(t)),t.some(o=>o.classList.contains(\"bases-table-group-header\"))){let o=[],c=null;for(let a of t)a.classList.contains(\"bases-table-group-header\")?(c={header:a,rows:[]},o.push(c)):c?c.rows.push(a):(c={header:null,rows:[a]},o.push(c));for(let a of o)h(a.rows,s,n);for(let a of o)a.header&&r.appendChild(a.header),a.rows.forEach(l=>r.appendChild(l))}else h(t,s,n),t.forEach(o=>r.appendChild(o))}function b(e,s){e.querySelectorAll(\".bases-table\").forEach(r=>{let t=r.querySelectorAll(\"th[data-sortable='true']\");t.forEach((i,o)=>{let c=()=>{let a=i.dataset.sortDirection||\"none\",l=a===\"asc\"?\"desc\":a===\"desc\"?\"none\":\"asc\";t.forEach(u=>{u!==i&&(u.dataset.sortDirection=\"none\"),u.classList.remove(\"is-sorted-asc\",\"is-sorted-desc\")}),i.dataset.sortDirection=l,i.classList.toggle(\"is-sorted-asc\",l===\"asc\"),i.classList.toggle(\"is-sorted-desc\",l===\"desc\"),v(r,o,l)};i.addEventListener(\"click\",c),s.push(()=>i.removeEventListener(\"click\",c))})})}function g(e,s){let n=e.querySelectorAll(\".bases-view-tabs button\");if(n.length===0)return;let r=parseInt(e.dataset.initialView||\"0\",10);f(e,Number.isNaN(r)?0:r),n.forEach(t=>{let i=()=>{let o=parseInt(t.dataset.viewIndex||\"0\",10);f(e,Number.isNaN(o)?0:o)};t.addEventListener(\"click\",i),s.push(()=>t.removeEventListener(\"click\",i))})}function d(){let e=document.querySelectorAll(\".bases-page\");if(e.length===0)return;let s=[];e.forEach(n=>{g(n,s),b(n,s)}),window.addCleanup&&window.addCleanup(()=>{s.forEach(n=>{n()})})}document.addEventListener(\"nav\",()=>{d()});document.addEventListener(\"render\",()=>{d()});d();\n","import type {\n QuartzComponent,\n QuartzComponentConstructor,\n QuartzComponentProps,\n} from \"@quartz-community/types\";\nimport type { BasesData, BasesPageOptions } from \"../types\";\nimport { resolveBasesEntries } from \"../resolver\";\nimport type { EvalContext } from \"../compiler\";\nimport { i18n } from \"../i18n\";\nimport { registerCustomViews, viewRegistry } from \"../registry\";\nimport { ViewSelector } from \"./ViewSelector\";\nimport { registerBuiltinViews } from \"./views\";\nimport style from \"./styles/bases.scss\";\n// @ts-expect-error inline script import handled by esbuild plugin\nimport script from \"./scripts/bases.inline.ts\";\n\nlet builtinViewsRegistered = false;\n\nexport default ((opts?: BasesPageOptions) => {\n const Component: QuartzComponent = (props: QuartzComponentProps) => {\n const locale = props.cfg?.locale ?? \"en-US\";\n const localeStrings = i18n(locale).components.bases;\n const fileData = props.fileData as {\n basesData?: BasesData;\n basesOptions?: BasesPageOptions;\n basesSelfContext?: EvalContext[\"self\"];\n };\n const basesData = fileData.basesData;\n const basesOptions = fileData.basesOptions ?? opts;\n const basesSelfContext = fileData.basesSelfContext;\n const slug = (props.fileData.slug as string) ?? \"\";\n const rawSlugs = ((props.ctx as Record<string, unknown>)?.allSlugs as string[]) ?? [];\n const baseSlugs = new Set(rawSlugs.filter((s) => s.endsWith(\".base\")));\n const baseAliases = new Set([...baseSlugs].map((s) => s.replace(/\\.base$/, \"\")));\n const allSlugs = rawSlugs.filter((s) => !baseSlugs.has(s) && !baseAliases.has(s));\n const linkResolution = basesOptions?.linkResolution ?? \"shortest\";\n\n if (!basesData) {\n return <div class=\"bases-page bases-empty\">{localeStrings.noData}</div>;\n }\n\n const views = basesData.views ?? [];\n if (views.length === 0) {\n return <div class=\"bases-page bases-empty\">{localeStrings.noViews}</div>;\n }\n\n const preferredType = basesOptions?.defaultViewType ?? \"table\";\n const initialIndex = Math.max(\n 0,\n views.findIndex((view) => view.type === preferredType),\n );\n if (!builtinViewsRegistered) {\n registerBuiltinViews();\n builtinViewsRegistered = true;\n }\n\n if (basesOptions?.customViews) {\n registerCustomViews(basesOptions.customViews);\n }\n\n // Collect CSS from custom view registrations (deduplicated by type)\n const activeTypes = new Set(views.map((v) => v.type));\n const viewCssChunks: string[] = [];\n for (const typeId of activeTypes) {\n const reg = viewRegistry.get(typeId);\n if (reg?.css) viewCssChunks.push(reg.css);\n }\n\n return (\n <div class=\"bases-page\" data-initial-view={initialIndex}>\n {viewCssChunks.length > 0 && (\n <style dangerouslySetInnerHTML={{ __html: viewCssChunks.join(\"\\n\") }} />\n )}\n <ViewSelector views={views} activeIndex={initialIndex} locale={locale} />\n <div class=\"bases-view-container\">\n {views.map((view, index) => {\n const { entries, total } = resolveBasesEntries(\n basesData,\n props.allFiles,\n view,\n basesSelfContext,\n );\n const registration = viewRegistry.get(view.type);\n const Renderer = registration?.render;\n return (\n <div\n class={`bases-view ${index === initialIndex ? \"is-active\" : \"\"}`}\n data-view-index={index}\n data-view-type={view.type}\n >\n {entries.length === 0 ? (\n <div class=\"bases-empty\">{localeStrings.noData}</div>\n ) : Renderer ? (\n <Renderer\n entries={entries}\n view={view}\n basesData={basesData}\n total={total}\n locale={locale}\n slug={slug}\n allSlugs={allSlugs}\n linkResolution={linkResolution}\n options={registration.options}\n />\n ) : (\n <div class=\"bases-empty\">Unknown view type: {view.type}</div>\n )}\n </div>\n );\n })}\n </div>\n </div>\n );\n };\n\n Component.css = style;\n // Collect afterDOMLoaded scripts from all registered views so they get\n // bundled into postscript.js (SPA-compatible) instead of inline <script> tags.\n const viewScripts = viewRegistry\n .getAll()\n .map((reg) => reg.afterDOMLoaded)\n .filter((s): s is string => typeof s === \"string\" && s.length > 0);\n Component.afterDOMLoaded = [script, ...viewScripts];\n\n return Component;\n}) satisfies QuartzComponentConstructor<BasesPageOptions>;\n"]}
|
|
@@ -923,6 +923,8 @@ function listContainsName(list, name, selfPath) {
|
|
|
923
923
|
return match[1] === name || match[1].endsWith(`/${name}`);
|
|
924
924
|
}
|
|
925
925
|
if (item === name) return true;
|
|
926
|
+
const slugItem = slugifyPath(item);
|
|
927
|
+
if (slugItem === slugName || slugItem.endsWith(`/${slugName}`)) return true;
|
|
926
928
|
if (item === slugName || item.endsWith(`/${slugName}`)) return true;
|
|
927
929
|
if (selfSlug && (item === selfSlug || selfSlug.endsWith(`/${item}`) || item.endsWith(`/${selfSlug}`)))
|
|
928
930
|
return true;
|
|
@@ -1227,6 +1229,34 @@ registerMethodFunction("number", "abs", (target) => {
|
|
|
1227
1229
|
if (value === null) return void 0;
|
|
1228
1230
|
return Math.abs(value);
|
|
1229
1231
|
});
|
|
1232
|
+
var MONTH_NAMES_SHORT = [
|
|
1233
|
+
"Jan",
|
|
1234
|
+
"Feb",
|
|
1235
|
+
"Mar",
|
|
1236
|
+
"Apr",
|
|
1237
|
+
"May",
|
|
1238
|
+
"Jun",
|
|
1239
|
+
"Jul",
|
|
1240
|
+
"Aug",
|
|
1241
|
+
"Sep",
|
|
1242
|
+
"Oct",
|
|
1243
|
+
"Nov",
|
|
1244
|
+
"Dec"
|
|
1245
|
+
];
|
|
1246
|
+
var MONTH_NAMES_FULL = [
|
|
1247
|
+
"January",
|
|
1248
|
+
"February",
|
|
1249
|
+
"March",
|
|
1250
|
+
"April",
|
|
1251
|
+
"May",
|
|
1252
|
+
"June",
|
|
1253
|
+
"July",
|
|
1254
|
+
"August",
|
|
1255
|
+
"September",
|
|
1256
|
+
"October",
|
|
1257
|
+
"November",
|
|
1258
|
+
"December"
|
|
1259
|
+
];
|
|
1230
1260
|
function formatDateToken(date, token) {
|
|
1231
1261
|
const pad = (n2, len = 2) => String(n2).padStart(len, "0");
|
|
1232
1262
|
const y2 = date.getFullYear();
|
|
@@ -1242,6 +1272,10 @@ function formatDateToken(date, token) {
|
|
|
1242
1272
|
return String(y2);
|
|
1243
1273
|
case "YY":
|
|
1244
1274
|
return String(y2).slice(-2);
|
|
1275
|
+
case "MMMM":
|
|
1276
|
+
return MONTH_NAMES_FULL[date.getMonth()];
|
|
1277
|
+
case "MMM":
|
|
1278
|
+
return MONTH_NAMES_SHORT[date.getMonth()];
|
|
1245
1279
|
case "MM":
|
|
1246
1280
|
return pad(M);
|
|
1247
1281
|
case "M":
|
|
@@ -1275,7 +1309,7 @@ function formatDateToken(date, token) {
|
|
|
1275
1309
|
}
|
|
1276
1310
|
}
|
|
1277
1311
|
function formatDate(date, format) {
|
|
1278
|
-
const tokenPattern = /YYYY|YY|MM|M|DD|D|HH|H|hh|h|mm|m|ss|s|A|a/g;
|
|
1312
|
+
const tokenPattern = /YYYY|YY|MMMM|MMM|MM|M|DD|D|HH|H|hh|h|mm|m|ss|s|A|a/g;
|
|
1279
1313
|
let result = "";
|
|
1280
1314
|
let lastIndex = 0;
|
|
1281
1315
|
let match = tokenPattern.exec(format);
|
|
@@ -1420,6 +1454,11 @@ registerMethodFunction("string", "asFile", (target, _args, context) => {
|
|
|
1420
1454
|
registerMethodFunction("list", "contains", (target, [needle]) => {
|
|
1421
1455
|
if (!Array.isArray(target)) return false;
|
|
1422
1456
|
if (target.includes(needle)) return true;
|
|
1457
|
+
if (typeof needle === "string") {
|
|
1458
|
+
const slugNeedle = slugifyPath(needle);
|
|
1459
|
+
if (target.some((item) => typeof item === "string" && slugifyPath(item) === slugNeedle))
|
|
1460
|
+
return true;
|
|
1461
|
+
}
|
|
1423
1462
|
const name = resolveSelfName(needle);
|
|
1424
1463
|
return name ? listContainsName(target, name, resolveSelfPath(needle)) : false;
|
|
1425
1464
|
});
|
|
@@ -1927,5 +1966,5 @@ function evaluateFilter(node, context) {
|
|
|
1927
1966
|
}
|
|
1928
1967
|
|
|
1929
1968
|
export { S, compile, evaluate, evaluateFilter, k, l, resolvePropertyValue, slugifyFilePath, slugifyPath, transformLink, u2 as u };
|
|
1930
|
-
//# sourceMappingURL=chunk-
|
|
1931
|
-
//# sourceMappingURL=chunk-
|
|
1969
|
+
//# sourceMappingURL=chunk-Y4KGLVLV.js.map
|
|
1970
|
+
//# sourceMappingURL=chunk-Y4KGLVLV.js.map
|