@columnus/shared 0.1.49 → 0.1.52
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/dist/clipboardTransfer.js.map +1 -1
- package/dist/csv.js +26 -1
- package/dist/csv.js.map +1 -1
- package/dist/dateValues.d.ts +3 -0
- package/dist/dateValues.js +23 -1
- package/dist/dateValues.js.map +1 -1
- package/dist/displayLabel.js +26 -1
- package/dist/displayLabel.js.map +1 -1
- package/dist/importMatch.js +26 -1
- package/dist/importMatch.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.js +221 -43
- package/dist/index.js.map +1 -1
- package/dist/recordTableColumns.d.ts +3 -1
- package/dist/recordTableColumns.js +202 -2
- package/dist/recordTableColumns.js.map +1 -1
- package/dist/recordTablePreload.d.ts +19 -0
- package/dist/recordTablePreload.js +4330 -0
- package/dist/recordTablePreload.js.map +1 -0
- package/dist/refDisplayRequests.js.map +1 -1
- package/dist/richDoc.d.ts +10 -0
- package/dist/richDoc.js +65 -2
- package/dist/richDoc.js.map +1 -1
- package/dist/schemaTypes.js.map +1 -1
- package/dist/shareProposal.js.map +1 -1
- package/dist/spaceBundle.js.map +1 -1
- package/dist/storageFieldValues.js.map +1 -1
- package/package.json +1 -1
package/dist/dateValues.d.ts
CHANGED
|
@@ -16,3 +16,6 @@ export declare function serializeDateCsv(ms: number): string;
|
|
|
16
16
|
export declare function serializeDateTimeCsv(ms: number): string;
|
|
17
17
|
/** Parse a CSV cell into ms for date or datetime kinds. */
|
|
18
18
|
export declare function parseDateCsv(s: string, kind: "date" | "datetime"): number | null;
|
|
19
|
+
export type StampDateFormatPreset = "date" | "datetime" | "time";
|
|
20
|
+
/** Numeric visitor/stamp dates (dd.mm.yyyy); used by stamps and record tables. */
|
|
21
|
+
export declare function formatNumericDate(ms: number, locale: string | undefined, preset?: StampDateFormatPreset): string;
|
package/dist/dateValues.js
CHANGED
|
@@ -67,7 +67,29 @@ function parseDateCsv(s, kind) {
|
|
|
67
67
|
const fromIso = Date.parse(trimmed);
|
|
68
68
|
return Number.isFinite(fromIso) ? fromIso : null;
|
|
69
69
|
}
|
|
70
|
+
function formatNumericDate(ms, locale, preset = "date") {
|
|
71
|
+
if (preset === "time") {
|
|
72
|
+
return new Intl.DateTimeFormat(locale, {
|
|
73
|
+
hour: "2-digit",
|
|
74
|
+
minute: "2-digit"
|
|
75
|
+
}).format(new Date(ms));
|
|
76
|
+
}
|
|
77
|
+
if (preset === "datetime") {
|
|
78
|
+
return new Intl.DateTimeFormat(locale, {
|
|
79
|
+
day: "2-digit",
|
|
80
|
+
month: "2-digit",
|
|
81
|
+
year: "numeric",
|
|
82
|
+
hour: "2-digit",
|
|
83
|
+
minute: "2-digit"
|
|
84
|
+
}).format(new Date(ms));
|
|
85
|
+
}
|
|
86
|
+
return new Intl.DateTimeFormat(locale, {
|
|
87
|
+
day: "2-digit",
|
|
88
|
+
month: "2-digit",
|
|
89
|
+
year: "numeric"
|
|
90
|
+
}).format(new Date(ms));
|
|
91
|
+
}
|
|
70
92
|
|
|
71
|
-
export { dateInputValue, dateTimeInputValue, formatDateCell, formatDateTimeCell, parseDateCsv, parseDateInput, parseDateTimeInput, serializeDateCsv, serializeDateTimeCsv };
|
|
93
|
+
export { dateInputValue, dateTimeInputValue, formatDateCell, formatDateTimeCell, formatNumericDate, parseDateCsv, parseDateInput, parseDateTimeInput, serializeDateCsv, serializeDateTimeCsv };
|
|
72
94
|
//# sourceMappingURL=dateValues.js.map
|
|
73
95
|
//# sourceMappingURL=dateValues.js.map
|
package/dist/dateValues.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/dateValues.ts"],"names":["fromIso"],"mappings":"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","file":"dateValues.js","sourcesContent":["/** Format a date-only value (local midnight ms) for grid display. */\nexport function formatDateCell(ms: number): string {\n return new Intl.DateTimeFormat(undefined, { dateStyle: \"medium\" }).format(new Date(ms));\n}\n\n/** Format a datetime value (epoch ms) for grid display. */\nexport function formatDateTimeCell(ms: number): string {\n return new Intl.DateTimeFormat(undefined, {\n dateStyle: \"medium\",\n timeStyle: \"short\",\n }).format(new Date(ms));\n}\n\nfunction pad2(n: number): string {\n return String(n).padStart(2, \"0\");\n}\n\n/** Value for `<input type=\"date\">` from local-midnight ms. */\nexport function dateInputValue(ms: number): string {\n const d = new Date(ms);\n return `${d.getFullYear()}-${pad2(d.getMonth() + 1)}-${pad2(d.getDate())}`;\n}\n\n/** Value for `<input type=\"datetime-local\">` from epoch ms. */\nexport function dateTimeInputValue(ms: number): string {\n const d = new Date(ms);\n return `${d.getFullYear()}-${pad2(d.getMonth() + 1)}-${pad2(d.getDate())}T${pad2(d.getHours())}:${pad2(d.getMinutes())}`;\n}\n\n/** Parse `YYYY-MM-DD` to local midnight ms. */\nexport function parseDateInput(s: string): number | null {\n const m = /^(\\d{4})-(\\d{2})-(\\d{2})$/.exec(s.trim());\n if (!m) return null;\n const y = Number(m[1]);\n const mo = Number(m[2]) - 1;\n const d = Number(m[3]);\n const dt = new Date(y, mo, d);\n if (dt.getFullYear() !== y || dt.getMonth() !== mo || dt.getDate() !== d) return null;\n return dt.getTime();\n}\n\n/** Parse `YYYY-MM-DDTHH:mm` (datetime-local) to epoch ms. */\nexport function parseDateTimeInput(s: string): number | null {\n const m = /^(\\d{4})-(\\d{2})-(\\d{2})T(\\d{2}):(\\d{2})$/.exec(s.trim());\n if (!m) return null;\n const y = Number(m[1]);\n const mo = Number(m[2]) - 1;\n const d = Number(m[3]);\n const h = Number(m[4]);\n const min = Number(m[5]);\n const dt = new Date(y, mo, d, h, min);\n if (\n dt.getFullYear() !== y ||\n dt.getMonth() !== mo ||\n dt.getDate() !== d ||\n dt.getHours() !== h ||\n dt.getMinutes() !== min\n ) {\n return null;\n }\n return dt.getTime();\n}\n\n/** Serialize a date field for CSV export. */\nexport function serializeDateCsv(ms: number): string {\n return dateInputValue(ms);\n}\n\n/** Serialize a datetime field for CSV export. */\nexport function serializeDateTimeCsv(ms: number): string {\n return new Date(ms).toISOString();\n}\n\n/** Parse a CSV cell into ms for date or datetime kinds. */\nexport function parseDateCsv(s: string, kind: \"date\" | \"datetime\"): number | null {\n const trimmed = s.trim();\n if (!trimmed) return null;\n if (kind === \"date\") {\n const fromDate = parseDateInput(trimmed);\n if (fromDate !== null) return fromDate;\n const fromIso = Date.parse(trimmed);\n if (Number.isFinite(fromIso)) {\n const d = new Date(fromIso);\n return new Date(d.getFullYear(), d.getMonth(), d.getDate()).getTime();\n }\n return null;\n }\n const fromLocal = parseDateTimeInput(trimmed);\n if (fromLocal !== null) return fromLocal;\n const fromIso = Date.parse(trimmed);\n return Number.isFinite(fromIso) ? fromIso : null;\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/dateValues.ts"],"names":["fromIso"],"mappings":"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","file":"dateValues.js","sourcesContent":["/** Format a date-only value (local midnight ms) for grid display. */\nexport function formatDateCell(ms: number): string {\n return new Intl.DateTimeFormat(undefined, { dateStyle: \"medium\" }).format(new Date(ms));\n}\n\n/** Format a datetime value (epoch ms) for grid display. */\nexport function formatDateTimeCell(ms: number): string {\n return new Intl.DateTimeFormat(undefined, {\n dateStyle: \"medium\",\n timeStyle: \"short\",\n }).format(new Date(ms));\n}\n\nfunction pad2(n: number): string {\n return String(n).padStart(2, \"0\");\n}\n\n/** Value for `<input type=\"date\">` from local-midnight ms. */\nexport function dateInputValue(ms: number): string {\n const d = new Date(ms);\n return `${d.getFullYear()}-${pad2(d.getMonth() + 1)}-${pad2(d.getDate())}`;\n}\n\n/** Value for `<input type=\"datetime-local\">` from epoch ms. */\nexport function dateTimeInputValue(ms: number): string {\n const d = new Date(ms);\n return `${d.getFullYear()}-${pad2(d.getMonth() + 1)}-${pad2(d.getDate())}T${pad2(d.getHours())}:${pad2(d.getMinutes())}`;\n}\n\n/** Parse `YYYY-MM-DD` to local midnight ms. */\nexport function parseDateInput(s: string): number | null {\n const m = /^(\\d{4})-(\\d{2})-(\\d{2})$/.exec(s.trim());\n if (!m) return null;\n const y = Number(m[1]);\n const mo = Number(m[2]) - 1;\n const d = Number(m[3]);\n const dt = new Date(y, mo, d);\n if (dt.getFullYear() !== y || dt.getMonth() !== mo || dt.getDate() !== d) return null;\n return dt.getTime();\n}\n\n/** Parse `YYYY-MM-DDTHH:mm` (datetime-local) to epoch ms. */\nexport function parseDateTimeInput(s: string): number | null {\n const m = /^(\\d{4})-(\\d{2})-(\\d{2})T(\\d{2}):(\\d{2})$/.exec(s.trim());\n if (!m) return null;\n const y = Number(m[1]);\n const mo = Number(m[2]) - 1;\n const d = Number(m[3]);\n const h = Number(m[4]);\n const min = Number(m[5]);\n const dt = new Date(y, mo, d, h, min);\n if (\n dt.getFullYear() !== y ||\n dt.getMonth() !== mo ||\n dt.getDate() !== d ||\n dt.getHours() !== h ||\n dt.getMinutes() !== min\n ) {\n return null;\n }\n return dt.getTime();\n}\n\n/** Serialize a date field for CSV export. */\nexport function serializeDateCsv(ms: number): string {\n return dateInputValue(ms);\n}\n\n/** Serialize a datetime field for CSV export. */\nexport function serializeDateTimeCsv(ms: number): string {\n return new Date(ms).toISOString();\n}\n\n/** Parse a CSV cell into ms for date or datetime kinds. */\nexport function parseDateCsv(s: string, kind: \"date\" | \"datetime\"): number | null {\n const trimmed = s.trim();\n if (!trimmed) return null;\n if (kind === \"date\") {\n const fromDate = parseDateInput(trimmed);\n if (fromDate !== null) return fromDate;\n const fromIso = Date.parse(trimmed);\n if (Number.isFinite(fromIso)) {\n const d = new Date(fromIso);\n return new Date(d.getFullYear(), d.getMonth(), d.getDate()).getTime();\n }\n return null;\n }\n const fromLocal = parseDateTimeInput(trimmed);\n if (fromLocal !== null) return fromLocal;\n const fromIso = Date.parse(trimmed);\n return Number.isFinite(fromIso) ? fromIso : null;\n}\n\nexport type StampDateFormatPreset = \"date\" | \"datetime\" | \"time\";\n\n/** Numeric visitor/stamp dates (dd.mm.yyyy); used by stamps and record tables. */\nexport function formatNumericDate(\n ms: number,\n locale: string | undefined,\n preset: StampDateFormatPreset = \"date\",\n): string {\n if (preset === \"time\") {\n return new Intl.DateTimeFormat(locale, {\n hour: \"2-digit\",\n minute: \"2-digit\",\n }).format(new Date(ms));\n }\n if (preset === \"datetime\") {\n return new Intl.DateTimeFormat(locale, {\n day: \"2-digit\",\n month: \"2-digit\",\n year: \"numeric\",\n hour: \"2-digit\",\n minute: \"2-digit\",\n }).format(new Date(ms));\n }\n return new Intl.DateTimeFormat(locale, {\n day: \"2-digit\",\n month: \"2-digit\",\n year: \"numeric\",\n }).format(new Date(ms));\n}\n"]}
|
package/dist/displayLabel.js
CHANGED
|
@@ -4247,10 +4247,33 @@ function visitInlineContent(content, visit) {
|
|
|
4247
4247
|
function walkInlineContent(content, parts) {
|
|
4248
4248
|
visitInlineContent(content, {
|
|
4249
4249
|
text: (t) => parts.push(t),
|
|
4250
|
-
recordLink: (props) => parts.push(props.table ? `[${props.table}]` : "[
|
|
4250
|
+
recordLink: (props) => parts.push(props.table ? `[${props.table}]` : "[Record]"),
|
|
4251
4251
|
link: (nested) => walkInlineContent(nested, parts)
|
|
4252
4252
|
});
|
|
4253
4253
|
}
|
|
4254
|
+
function walkTableCell(cell, parts) {
|
|
4255
|
+
if (Array.isArray(cell)) {
|
|
4256
|
+
walkInlineContent(cell, parts);
|
|
4257
|
+
return;
|
|
4258
|
+
}
|
|
4259
|
+
if (cell && typeof cell === "object") {
|
|
4260
|
+
const node = cell;
|
|
4261
|
+
if (node.type === "tableCell" && Array.isArray(node.content)) {
|
|
4262
|
+
walkInlineContent(node.content, parts);
|
|
4263
|
+
}
|
|
4264
|
+
}
|
|
4265
|
+
}
|
|
4266
|
+
function walkTableContent(content, parts) {
|
|
4267
|
+
if (!content || typeof content !== "object" || Array.isArray(content)) return;
|
|
4268
|
+
const rows = content.rows ?? [];
|
|
4269
|
+
for (const row of rows) {
|
|
4270
|
+
for (const cell of row.cells ?? []) {
|
|
4271
|
+
const before = parts.length;
|
|
4272
|
+
walkTableCell(cell, parts);
|
|
4273
|
+
if (parts.length > before) parts.push(" ");
|
|
4274
|
+
}
|
|
4275
|
+
}
|
|
4276
|
+
}
|
|
4254
4277
|
function walkBlocks(blocks, parts) {
|
|
4255
4278
|
for (const block of blocks) {
|
|
4256
4279
|
if (block.type === "recordTable") {
|
|
@@ -4264,6 +4287,8 @@ function walkBlocks(blocks, parts) {
|
|
|
4264
4287
|
parts.push("[data table]");
|
|
4265
4288
|
}
|
|
4266
4289
|
parts.push(" ");
|
|
4290
|
+
} else if (block.type === "table") {
|
|
4291
|
+
walkTableContent(block.content, parts);
|
|
4267
4292
|
} else if (Array.isArray(block.content)) {
|
|
4268
4293
|
walkInlineContent(block.content, parts);
|
|
4269
4294
|
parts.push(" ");
|