@ai-matrx/design-system 0.18.3 → 0.18.4
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 +12 -0
- package/README.md +22 -0
- package/dist/content-transfer.cjs +8 -2
- package/dist/content-transfer.cjs.map +1 -1
- package/dist/content-transfer.d.cts +2 -0
- package/dist/content-transfer.d.ts +2 -0
- package/dist/content-transfer.js +8 -2
- package/dist/content-transfer.js.map +1 -1
- package/dist/data-table/copy-helpers.d.cts +1 -1
- package/dist/data-table/copy-helpers.d.ts +1 -1
- package/dist/data-table/data-row-inspector.cjs +8 -2
- package/dist/data-table/data-row-inspector.cjs.map +1 -1
- package/dist/data-table/data-row-inspector.js +8 -2
- package/dist/data-table/data-row-inspector.js.map +1 -1
- package/dist/data-table/data-row-window.cjs +8 -2
- package/dist/data-table/data-row-window.cjs.map +1 -1
- package/dist/data-table/data-row-window.js +8 -2
- package/dist/data-table/data-row-window.js.map +1 -1
- package/dist/data-table/filter-engine.d.cts +1 -1
- package/dist/data-table/filter-engine.d.ts +1 -1
- package/dist/data-table/index.cjs +1041 -930
- package/dist/data-table/index.cjs.map +1 -1
- package/dist/data-table/index.d.cts +23 -3
- package/dist/data-table/index.d.ts +23 -3
- package/dist/data-table/index.js +1041 -930
- package/dist/data-table/index.js.map +1 -1
- package/dist/data-table/infer-filter.d.cts +1 -1
- package/dist/data-table/infer-filter.d.ts +1 -1
- package/dist/data-table/layered-filters.d.cts +1 -1
- package/dist/data-table/layered-filters.d.ts +1 -1
- package/dist/data-table/pagination.cjs +2 -2
- package/dist/data-table/pagination.cjs.map +1 -1
- package/dist/data-table/pagination.js +2 -2
- package/dist/data-table/pagination.js.map +1 -1
- package/dist/data-table/query-control.d.cts +1 -1
- package/dist/data-table/query-control.d.ts +1 -1
- package/dist/data-table/types.cjs.map +1 -1
- package/dist/data-table/types.d.cts +1 -1
- package/dist/data-table/types.d.ts +1 -1
- package/dist/data-table/url-state.d.cts +1 -1
- package/dist/data-table/url-state.d.ts +1 -1
- package/dist/data-table/xlsx.d.cts +1 -1
- package/dist/data-table/xlsx.d.ts +1 -1
- package/dist/index.cjs +2 -2
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/{types-CD4xGL5Z.d.cts → types-Bx9SfdJM.d.cts} +2 -0
- package/dist/{types-BhSkeZQ_.d.ts → types-DyByb6tW.d.ts} +2 -0
- package/package.json +1 -1
|
@@ -95,6 +95,8 @@ interface AlchemyExportItem {
|
|
|
95
95
|
content: BlobPart;
|
|
96
96
|
extension: string;
|
|
97
97
|
mime: string;
|
|
98
|
+
/** Optional exact safe basename captured with bytes; omission derives a default, invalid values error. */
|
|
99
|
+
filename?: string;
|
|
98
100
|
};
|
|
99
101
|
onSelect?: () => void | Promise<void>;
|
|
100
102
|
}
|
|
@@ -95,6 +95,8 @@ interface AlchemyExportItem {
|
|
|
95
95
|
content: BlobPart;
|
|
96
96
|
extension: string;
|
|
97
97
|
mime: string;
|
|
98
|
+
/** Optional exact safe basename captured with bytes; omission derives a default, invalid values error. */
|
|
99
|
+
filename?: string;
|
|
98
100
|
};
|
|
99
101
|
onSelect?: () => void | Promise<void>;
|
|
100
102
|
}
|
package/dist/content-transfer.js
CHANGED
|
@@ -630,6 +630,7 @@ var actionDone = (message) => ({
|
|
|
630
630
|
mimeTypes: [],
|
|
631
631
|
message
|
|
632
632
|
});
|
|
633
|
+
var isSafeFilename = (filename) => filename === filename.trim() && filename.length > 0 && !/^\.+$/.test(filename) && !/[\\/\x00-\x1F\x7F]/.test(filename);
|
|
633
634
|
var sourceFor = (id, label, build) => ({
|
|
634
635
|
id,
|
|
635
636
|
label,
|
|
@@ -778,7 +779,8 @@ function MatrxCopyMenuSession(props) {
|
|
|
778
779
|
value: {
|
|
779
780
|
bytes: Array.from(bytes),
|
|
780
781
|
mime: file.mime,
|
|
781
|
-
extension: file.extension
|
|
782
|
+
extension: file.extension,
|
|
783
|
+
...file.filename !== void 0 ? { filename: file.filename } : {}
|
|
782
784
|
}
|
|
783
785
|
};
|
|
784
786
|
},
|
|
@@ -795,12 +797,16 @@ function MatrxCopyMenuSession(props) {
|
|
|
795
797
|
(byte) => typeof byte !== "number" || !Number.isInteger(byte) || byte < 0 || byte > 255
|
|
796
798
|
))
|
|
797
799
|
throw new Error(`${item.label} did not capture a valid file.`);
|
|
800
|
+
if (value.filename !== void 0 && (typeof value.filename !== "string" || !isSafeFilename(value.filename)))
|
|
801
|
+
throw new Error(
|
|
802
|
+
`${item.label} has an unsafe filename. Use a nonempty basename without leading or trailing whitespace, dots only, path separators, or control characters.`
|
|
803
|
+
);
|
|
798
804
|
if (draft.omissions.some((omission) => omission.reason !== "duplicate"))
|
|
799
805
|
throw new Error(
|
|
800
806
|
"This custom file exceeds the configured export limits or contains excluded content. Use a standard format or revise the source options."
|
|
801
807
|
);
|
|
802
808
|
const bytes = new Uint8Array(value.bytes);
|
|
803
|
-
const filename = `${props.label.toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/^-|-$/g, "") || "export"}.${value.extension.replace(/[^a-zA-Z0-9.-]/g, "") || "bin"}`;
|
|
809
|
+
const filename = typeof value.filename === "string" ? value.filename : `${props.label.toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/^-|-$/g, "") || "export"}.${value.extension.replace(/[^a-zA-Z0-9.-]/g, "") || "bin"}`;
|
|
804
810
|
return transport.download(
|
|
805
811
|
sealTransferArtifact({
|
|
806
812
|
snapshotId: snapshot.id,
|