@quartz-community/bases-page 0.2.1 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +16 -0
- package/dist/{chunk-3MNNFWJ7.js → chunk-EL2TIBZL.js} +3 -3
- package/dist/{chunk-3MNNFWJ7.js.map → chunk-EL2TIBZL.js.map} +1 -1
- package/dist/{chunk-Y4KGLVLV.js → chunk-OBABVQK6.js} +2 -2
- package/dist/{chunk-Y4KGLVLV.js.map → chunk-OBABVQK6.js.map} +1 -1
- package/dist/compiler/index.js +1 -1
- package/dist/components/index.js +2 -2
- package/dist/index.js +7 -6
- package/dist/index.js.map +1 -1
- package/package.json +3 -3
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,21 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 1.0.0
|
|
4
|
+
|
|
5
|
+
### Major Changes
|
|
6
|
+
|
|
7
|
+
- Stable 1.0 release. All `@quartz-community/*` dependencies now use `^1.0.0` ranges.
|
|
8
|
+
|
|
9
|
+
Pre-1.0 caret ranges pinned the minor version (`^0.2.1` means `>=0.2.1 <0.3.0`), so
|
|
10
|
+
published fixes to shared packages could never be resolved by dependents. Moving the
|
|
11
|
+
ecosystem to 1.0 makes caret ranges behave conventionally.
|
|
12
|
+
|
|
13
|
+
## 0.2.2
|
|
14
|
+
|
|
15
|
+
### Patch Changes
|
|
16
|
+
|
|
17
|
+
- 0728d19: Fix transclusion of base views with spaces in the name. The OFM plugin slugifies the fragment (e.g., `French Philosophers` → `french-philosophers`) but the view lookup expected the original name. View matching now normalizes both sides by lowercasing and replacing spaces with hyphens.
|
|
18
|
+
|
|
3
19
|
## 0.2.1
|
|
4
20
|
|
|
5
21
|
### Patch Changes
|
|
@@ -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-OBABVQK6.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-EL2TIBZL.js.map
|
|
929
|
+
//# sourceMappingURL=chunk-EL2TIBZL.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-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"]}
|
|
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-EL2TIBZL.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"]}
|
|
@@ -1966,5 +1966,5 @@ function evaluateFilter(node, context) {
|
|
|
1966
1966
|
}
|
|
1967
1967
|
|
|
1968
1968
|
export { S, compile, evaluate, evaluateFilter, k, l, resolvePropertyValue, slugifyFilePath, slugifyPath, transformLink, u2 as u };
|
|
1969
|
-
//# sourceMappingURL=chunk-
|
|
1970
|
-
//# sourceMappingURL=chunk-
|
|
1969
|
+
//# sourceMappingURL=chunk-OBABVQK6.js.map
|
|
1970
|
+
//# sourceMappingURL=chunk-OBABVQK6.js.map
|