@quartz-community/bases-page 0.2.2 → 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 +10 -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 +4 -4
- package/package.json +3 -3
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,15 @@
|
|
|
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
|
+
|
|
3
13
|
## 0.2.2
|
|
4
14
|
|
|
5
15
|
### 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
|