@frontmcp/ui 0.12.2 → 1.0.0-beta.2
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/README.md +279 -72
- package/bridge/adapters/claude.adapter.d.ts.map +1 -1
- package/bridge/adapters/gemini.adapter.d.ts.map +1 -1
- package/bridge/index.js +2 -36
- package/components/Alert/Alert.d.ts +11 -0
- package/components/Alert/Alert.d.ts.map +1 -0
- package/components/Alert/index.d.ts +4 -0
- package/components/Alert/index.d.ts.map +1 -0
- package/components/Alert/index.js +61 -0
- package/components/Avatar/Avatar.d.ts +10 -0
- package/components/Avatar/Avatar.d.ts.map +1 -0
- package/components/Avatar/index.d.ts +4 -0
- package/components/Avatar/index.d.ts.map +1 -0
- package/components/Avatar/index.js +43 -0
- package/components/Badge/Badge.d.ts +13 -0
- package/components/Badge/Badge.d.ts.map +1 -0
- package/components/Badge/index.d.ts +4 -0
- package/components/Badge/index.d.ts.map +1 -0
- package/{render → components/Badge}/index.js +54 -42
- package/components/Button/Button.d.ts +16 -0
- package/components/Button/Button.d.ts.map +1 -0
- package/components/Button/index.d.ts +4 -0
- package/components/Button/index.d.ts.map +1 -0
- package/components/Button/index.js +91 -0
- package/components/Card/Card.d.ts +25 -0
- package/components/Card/Card.d.ts.map +1 -0
- package/components/Card/index.d.ts +4 -0
- package/components/Card/index.d.ts.map +1 -0
- package/components/Card/index.js +110 -0
- package/components/List/List.d.ts +15 -0
- package/components/List/List.d.ts.map +1 -0
- package/components/List/index.d.ts +4 -0
- package/components/List/index.d.ts.map +1 -0
- package/components/List/index.js +58 -0
- package/components/Loader/Loader.d.ts +28 -0
- package/components/Loader/Loader.d.ts.map +1 -0
- package/components/Loader/LoaderContext.d.ts +20 -0
- package/components/Loader/LoaderContext.d.ts.map +1 -0
- package/components/Loader/index.d.ts +6 -0
- package/components/Loader/index.d.ts.map +1 -0
- package/components/Loader/index.js +174 -0
- package/components/Modal/Modal.d.ts +22 -0
- package/components/Modal/Modal.d.ts.map +1 -0
- package/components/Modal/index.d.ts +4 -0
- package/components/Modal/index.d.ts.map +1 -0
- package/components/Modal/index.js +80 -0
- package/components/Select/Select.d.ts +21 -0
- package/components/Select/Select.d.ts.map +1 -0
- package/components/Select/index.d.ts +4 -0
- package/components/Select/index.d.ts.map +1 -0
- package/components/Select/index.js +78 -0
- package/components/Table/Table.d.ts +15 -0
- package/components/Table/Table.d.ts.map +1 -0
- package/components/Table/index.d.ts +4 -0
- package/components/Table/index.d.ts.map +1 -0
- package/components/Table/index.js +70 -0
- package/components/TextField/TextField.d.ts +19 -0
- package/components/TextField/TextField.d.ts.map +1 -0
- package/components/TextField/index.d.ts +4 -0
- package/components/TextField/index.d.ts.map +1 -0
- package/components/TextField/index.js +77 -0
- package/components/index.d.ts +22 -28
- package/components/index.d.ts.map +1 -1
- package/components/index.js +523 -2521
- package/esm/bridge/index.mjs +2 -6
- package/esm/components/Alert/index.mjs +28 -0
- package/esm/components/Avatar/index.mjs +10 -0
- package/esm/components/Badge/index.mjs +56 -0
- package/esm/components/Button/index.mjs +58 -0
- package/esm/components/Card/index.mjs +77 -0
- package/esm/components/List/index.mjs +25 -0
- package/esm/components/Loader/index.mjs +141 -0
- package/esm/components/Modal/index.mjs +47 -0
- package/esm/components/Select/index.mjs +45 -0
- package/esm/components/Table/index.mjs +37 -0
- package/esm/components/TextField/index.mjs +44 -0
- package/esm/components/index.mjs +513 -2415
- package/esm/index.mjs +62 -4652
- package/esm/package.json +372 -16
- package/esm/react/index.mjs +2 -285
- package/esm/renderer/charts/index.mjs +336 -0
- package/esm/renderer/common/index.mjs +135 -0
- package/esm/renderer/csv/index.mjs +193 -0
- package/esm/renderer/flow/index.mjs +259 -0
- package/esm/renderer/html/index.mjs +99 -0
- package/esm/renderer/image/index.mjs +125 -0
- package/esm/renderer/index.mjs +2173 -0
- package/esm/renderer/maps/index.mjs +217 -0
- package/esm/renderer/math/index.mjs +229 -0
- package/esm/renderer/mdx/index.mjs +261 -0
- package/esm/renderer/media/index.mjs +235 -0
- package/esm/renderer/mermaid/index.mjs +220 -0
- package/esm/renderer/pdf/index.mjs +229 -0
- package/esm/renderer/react/index.mjs +230 -0
- package/esm/runtime/index.mjs +194 -0
- package/esm/theme/index.mjs +93 -0
- package/index.d.ts +10 -18
- package/index.d.ts.map +1 -1
- package/index.js +63 -4806
- package/package.json +372 -16
- package/react/index.d.ts +8 -54
- package/react/index.d.ts.map +1 -1
- package/react/index.js +2 -295
- package/renderer/auto-detect.d.ts +39 -0
- package/renderer/auto-detect.d.ts.map +1 -0
- package/renderer/charts/index.d.ts +22 -0
- package/renderer/charts/index.d.ts.map +1 -0
- package/renderer/charts/index.js +367 -0
- package/renderer/common/index.d.ts +5 -0
- package/renderer/common/index.d.ts.map +1 -0
- package/renderer/common/index.js +158 -0
- package/renderer/common/inject-stylesheet.d.ts +9 -0
- package/renderer/common/inject-stylesheet.d.ts.map +1 -0
- package/renderer/common/lazy-import.d.ts +85 -0
- package/renderer/common/lazy-import.d.ts.map +1 -0
- package/renderer/common/use-lazy-module.d.ts +13 -0
- package/renderer/common/use-lazy-module.d.ts.map +1 -0
- package/renderer/common/use-renderer-theme.d.ts +35 -0
- package/renderer/common/use-renderer-theme.d.ts.map +1 -0
- package/renderer/csv/index.d.ts +12 -0
- package/renderer/csv/index.d.ts.map +1 -0
- package/renderer/csv/index.js +224 -0
- package/renderer/flow/index.d.ts +40 -0
- package/renderer/flow/index.d.ts.map +1 -0
- package/renderer/flow/index.js +290 -0
- package/renderer/html/index.d.ts +12 -0
- package/renderer/html/index.d.ts.map +1 -0
- package/renderer/html/index.js +130 -0
- package/renderer/image/index.d.ts +11 -0
- package/renderer/image/index.d.ts.map +1 -0
- package/renderer/image/index.js +156 -0
- package/renderer/index.d.ts +32 -0
- package/renderer/index.d.ts.map +1 -0
- package/renderer/index.js +2206 -0
- package/renderer/maps/index.d.ts +27 -0
- package/renderer/maps/index.d.ts.map +1 -0
- package/renderer/maps/index.js +248 -0
- package/renderer/math/index.d.ts +11 -0
- package/renderer/math/index.d.ts.map +1 -0
- package/renderer/math/index.js +260 -0
- package/renderer/mdx/index.d.ts +10 -0
- package/renderer/mdx/index.d.ts.map +1 -0
- package/renderer/mdx/index.js +292 -0
- package/renderer/media/index.d.ts +20 -0
- package/renderer/media/index.d.ts.map +1 -0
- package/renderer/media/index.js +266 -0
- package/renderer/mermaid/index.d.ts +11 -0
- package/renderer/mermaid/index.d.ts.map +1 -0
- package/renderer/mermaid/index.js +251 -0
- package/renderer/pdf/index.d.ts +10 -0
- package/renderer/pdf/index.d.ts.map +1 -0
- package/renderer/pdf/index.js +260 -0
- package/renderer/react/index.d.ts +45 -0
- package/renderer/react/index.d.ts.map +1 -0
- package/renderer/react/index.js +261 -0
- package/renderer/types.d.ts +24 -0
- package/renderer/types.d.ts.map +1 -0
- package/runtime/babel-runtime.d.ts +70 -0
- package/runtime/babel-runtime.d.ts.map +1 -0
- package/runtime/content-detector.d.ts +43 -0
- package/runtime/content-detector.d.ts.map +1 -0
- package/runtime/index.d.ts +10 -0
- package/runtime/index.d.ts.map +1 -0
- package/runtime/index.js +217 -0
- package/theme/FrontMcpThemeProvider.d.ts +4 -0
- package/theme/FrontMcpThemeProvider.d.ts.map +1 -0
- package/theme/create-theme.d.ts +9 -0
- package/theme/create-theme.d.ts.map +1 -0
- package/theme/index.d.ts +5 -0
- package/theme/index.d.ts.map +1 -0
- package/theme/index.js +126 -0
- package/theme/types.d.ts +28 -0
- package/theme/types.d.ts.map +1 -0
- package/theme/use-theme.d.ts +3 -0
- package/theme/use-theme.d.ts.map +1 -0
- package/bundler/browser-components.d.ts +0 -42
- package/bundler/browser-components.d.ts.map +0 -1
- package/bundler/bundler.d.ts +0 -282
- package/bundler/bundler.d.ts.map +0 -1
- package/bundler/index.d.ts +0 -43
- package/bundler/index.d.ts.map +0 -1
- package/bundler/index.js +0 -3168
- package/bundler/types.d.ts +0 -883
- package/bundler/types.d.ts.map +0 -1
- package/components/alert.d.ts +0 -83
- package/components/alert.d.ts.map +0 -1
- package/components/alert.schema.d.ts +0 -98
- package/components/alert.schema.d.ts.map +0 -1
- package/components/avatar.d.ts +0 -77
- package/components/avatar.d.ts.map +0 -1
- package/components/avatar.schema.d.ts +0 -170
- package/components/avatar.schema.d.ts.map +0 -1
- package/components/badge.d.ts +0 -78
- package/components/badge.d.ts.map +0 -1
- package/components/badge.schema.d.ts +0 -91
- package/components/badge.schema.d.ts.map +0 -1
- package/components/button.d.ts +0 -100
- package/components/button.d.ts.map +0 -1
- package/components/button.schema.d.ts +0 -120
- package/components/button.schema.d.ts.map +0 -1
- package/components/card.d.ts +0 -76
- package/components/card.d.ts.map +0 -1
- package/components/card.schema.d.ts +0 -93
- package/components/card.schema.d.ts.map +0 -1
- package/components/form.d.ts +0 -227
- package/components/form.d.ts.map +0 -1
- package/components/form.schema.d.ts +0 -365
- package/components/form.schema.d.ts.map +0 -1
- package/components/list.d.ts +0 -121
- package/components/list.d.ts.map +0 -1
- package/components/list.schema.d.ts +0 -129
- package/components/list.schema.d.ts.map +0 -1
- package/components/modal.d.ts +0 -100
- package/components/modal.d.ts.map +0 -1
- package/components/modal.schema.d.ts +0 -151
- package/components/modal.schema.d.ts.map +0 -1
- package/components/table.d.ts +0 -91
- package/components/table.d.ts.map +0 -1
- package/components/table.schema.d.ts +0 -123
- package/components/table.schema.d.ts.map +0 -1
- package/esm/bundler/index.mjs +0 -3136
- package/esm/layouts/index.mjs +0 -409
- package/esm/render/index.mjs +0 -45
- package/esm/renderers/index.mjs +0 -621
- package/esm/universal/index.mjs +0 -1946
- package/esm/web-components/index.mjs +0 -2023
- package/layouts/base.d.ts +0 -86
- package/layouts/base.d.ts.map +0 -1
- package/layouts/index.d.ts +0 -8
- package/layouts/index.d.ts.map +0 -1
- package/layouts/index.js +0 -437
- package/layouts/presets.d.ts +0 -134
- package/layouts/presets.d.ts.map +0 -1
- package/react/Alert.d.ts +0 -101
- package/react/Alert.d.ts.map +0 -1
- package/react/Badge.d.ts +0 -100
- package/react/Badge.d.ts.map +0 -1
- package/react/Button.d.ts +0 -108
- package/react/Button.d.ts.map +0 -1
- package/react/Card.d.ts +0 -103
- package/react/Card.d.ts.map +0 -1
- package/react/types.d.ts +0 -105
- package/react/types.d.ts.map +0 -1
- package/render/index.d.ts +0 -8
- package/render/index.d.ts.map +0 -1
- package/render/prerender.d.ts +0 -57
- package/render/prerender.d.ts.map +0 -1
- package/renderers/index.d.ts +0 -26
- package/renderers/index.d.ts.map +0 -1
- package/renderers/index.js +0 -666
- package/renderers/mdx.renderer.d.ts +0 -99
- package/renderers/mdx.renderer.d.ts.map +0 -1
- package/renderers/react.adapter.d.ts +0 -70
- package/renderers/react.adapter.d.ts.map +0 -1
- package/renderers/react.renderer.d.ts +0 -105
- package/renderers/react.renderer.d.ts.map +0 -1
- package/renderers/transpiler.d.ts +0 -49
- package/renderers/transpiler.d.ts.map +0 -1
- package/universal/UniversalApp.d.ts +0 -108
- package/universal/UniversalApp.d.ts.map +0 -1
- package/universal/cached-runtime.d.ts +0 -139
- package/universal/cached-runtime.d.ts.map +0 -1
- package/universal/context.d.ts +0 -122
- package/universal/context.d.ts.map +0 -1
- package/universal/index.d.ts +0 -57
- package/universal/index.d.ts.map +0 -1
- package/universal/index.js +0 -2032
- package/universal/renderers/html.renderer.d.ts +0 -36
- package/universal/renderers/html.renderer.d.ts.map +0 -1
- package/universal/renderers/index.d.ts +0 -112
- package/universal/renderers/index.d.ts.map +0 -1
- package/universal/renderers/markdown.renderer.d.ts +0 -33
- package/universal/renderers/markdown.renderer.d.ts.map +0 -1
- package/universal/renderers/mdx.renderer.d.ts +0 -38
- package/universal/renderers/mdx.renderer.d.ts.map +0 -1
- package/universal/renderers/react.renderer.d.ts +0 -46
- package/universal/renderers/react.renderer.d.ts.map +0 -1
- package/universal/runtime-builder.d.ts +0 -33
- package/universal/runtime-builder.d.ts.map +0 -1
- package/universal/store.d.ts +0 -135
- package/universal/store.d.ts.map +0 -1
- package/universal/types.d.ts +0 -199
- package/universal/types.d.ts.map +0 -1
- package/web-components/core/attribute-parser.d.ts +0 -82
- package/web-components/core/attribute-parser.d.ts.map +0 -1
- package/web-components/core/base-element.d.ts +0 -197
- package/web-components/core/base-element.d.ts.map +0 -1
- package/web-components/core/index.d.ts +0 -9
- package/web-components/core/index.d.ts.map +0 -1
- package/web-components/elements/fmcp-alert.d.ts +0 -46
- package/web-components/elements/fmcp-alert.d.ts.map +0 -1
- package/web-components/elements/fmcp-badge.d.ts +0 -47
- package/web-components/elements/fmcp-badge.d.ts.map +0 -1
- package/web-components/elements/fmcp-button.d.ts +0 -117
- package/web-components/elements/fmcp-button.d.ts.map +0 -1
- package/web-components/elements/fmcp-card.d.ts +0 -53
- package/web-components/elements/fmcp-card.d.ts.map +0 -1
- package/web-components/elements/fmcp-input.d.ts +0 -96
- package/web-components/elements/fmcp-input.d.ts.map +0 -1
- package/web-components/elements/fmcp-select.d.ts +0 -100
- package/web-components/elements/fmcp-select.d.ts.map +0 -1
- package/web-components/elements/index.d.ts +0 -13
- package/web-components/elements/index.d.ts.map +0 -1
- package/web-components/index.d.ts +0 -49
- package/web-components/index.d.ts.map +0 -1
- package/web-components/index.js +0 -2058
- package/web-components/register.d.ts +0 -57
- package/web-components/register.d.ts.map +0 -1
- package/web-components/types.d.ts +0 -122
- package/web-components/types.d.ts.map +0 -1
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
+
var __export = (target, all) => {
|
|
9
|
+
for (var name in all)
|
|
10
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
11
|
+
};
|
|
12
|
+
var __copyProps = (to, from, except, desc) => {
|
|
13
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
14
|
+
for (let key of __getOwnPropNames(from))
|
|
15
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
16
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
17
|
+
}
|
|
18
|
+
return to;
|
|
19
|
+
};
|
|
20
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
22
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
23
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
24
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
25
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
26
|
+
mod
|
|
27
|
+
));
|
|
28
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
|
+
|
|
30
|
+
// libs/ui/src/renderer/html/index.ts
|
|
31
|
+
var html_exports = {};
|
|
32
|
+
__export(html_exports, {
|
|
33
|
+
HtmlRenderer: () => HtmlRenderer,
|
|
34
|
+
escapeHtml: () => escapeHtml,
|
|
35
|
+
htmlRenderer: () => htmlRenderer
|
|
36
|
+
});
|
|
37
|
+
module.exports = __toCommonJS(html_exports);
|
|
38
|
+
var import_react = __toESM(require("react"));
|
|
39
|
+
var import_Box = __toESM(require("@mui/material/Box"));
|
|
40
|
+
var import_styles = require("@mui/material/styles");
|
|
41
|
+
|
|
42
|
+
// libs/ui/src/renderer/common/lazy-import.ts
|
|
43
|
+
var ESM_SH_BASE = "https://esm.sh/";
|
|
44
|
+
function esmShUrl(pkg, options) {
|
|
45
|
+
let url = `${ESM_SH_BASE}${pkg}`;
|
|
46
|
+
if (options?.external?.length) {
|
|
47
|
+
url += `?external=${options.external.join(",")}`;
|
|
48
|
+
}
|
|
49
|
+
return url;
|
|
50
|
+
}
|
|
51
|
+
function runtimeImport(specifier) {
|
|
52
|
+
const dynamicImport = new Function("s", "return import(s)");
|
|
53
|
+
return dynamicImport(specifier);
|
|
54
|
+
}
|
|
55
|
+
async function runtimeImportWithFallback(bareSpecifier, fallbackUrl) {
|
|
56
|
+
try {
|
|
57
|
+
return await runtimeImport(bareSpecifier);
|
|
58
|
+
} catch {
|
|
59
|
+
return runtimeImport(fallbackUrl);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
// libs/ui/src/renderer/html/index.ts
|
|
64
|
+
var HtmlRoot = (0, import_styles.styled)(import_Box.default, {
|
|
65
|
+
name: "FrontMcpHtml",
|
|
66
|
+
slot: "Root"
|
|
67
|
+
})(({ theme }) => ({
|
|
68
|
+
"& a": { color: theme.palette.primary.main },
|
|
69
|
+
"& table": { borderCollapse: "collapse", width: "100%" },
|
|
70
|
+
"& th, & td": { border: `1px solid ${theme.palette.divider}`, padding: theme.spacing(1) },
|
|
71
|
+
"& pre": {
|
|
72
|
+
backgroundColor: theme.palette.mode === "dark" ? theme.palette.grey[900] : theme.palette.grey[100],
|
|
73
|
+
padding: theme.spacing(1.5),
|
|
74
|
+
borderRadius: theme.shape.borderRadius,
|
|
75
|
+
overflow: "auto"
|
|
76
|
+
}
|
|
77
|
+
}));
|
|
78
|
+
var purifyModule = null;
|
|
79
|
+
var purifyPromise = null;
|
|
80
|
+
function loadDOMPurify() {
|
|
81
|
+
if (purifyModule) return Promise.resolve(purifyModule);
|
|
82
|
+
if (purifyPromise) return purifyPromise;
|
|
83
|
+
purifyPromise = runtimeImportWithFallback("dompurify", esmShUrl("dompurify@3")).then((mod) => {
|
|
84
|
+
purifyModule = mod;
|
|
85
|
+
return purifyModule;
|
|
86
|
+
}).catch(() => {
|
|
87
|
+
purifyModule = null;
|
|
88
|
+
purifyPromise = null;
|
|
89
|
+
return null;
|
|
90
|
+
});
|
|
91
|
+
return purifyPromise;
|
|
92
|
+
}
|
|
93
|
+
function escapeHtml(html) {
|
|
94
|
+
return html.replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">").replace(/"/g, """).replace(/'/g, "'");
|
|
95
|
+
}
|
|
96
|
+
function sanitizeSync(html) {
|
|
97
|
+
if (!purifyModule) return escapeHtml(html);
|
|
98
|
+
const sanitize = purifyModule.default?.sanitize ?? purifyModule.sanitize;
|
|
99
|
+
return sanitize ? sanitize(html) : escapeHtml(html);
|
|
100
|
+
}
|
|
101
|
+
loadDOMPurify();
|
|
102
|
+
function HtmlView({ html, className }) {
|
|
103
|
+
const [purifyReady, setPurifyReady] = (0, import_react.useState)(!!purifyModule);
|
|
104
|
+
(0, import_react.useEffect)(() => {
|
|
105
|
+
if (!purifyModule) {
|
|
106
|
+
loadDOMPurify().then((mod) => {
|
|
107
|
+
if (mod) setPurifyReady(true);
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
}, []);
|
|
111
|
+
const sanitized = (0, import_react.useMemo)(() => sanitizeSync(html), [html, purifyReady]);
|
|
112
|
+
return import_react.default.createElement(HtmlRoot, {
|
|
113
|
+
className,
|
|
114
|
+
dangerouslySetInnerHTML: { __html: sanitized }
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
var HtmlRenderer = class {
|
|
118
|
+
type = "html";
|
|
119
|
+
priority = 0;
|
|
120
|
+
canHandle(content) {
|
|
121
|
+
return /^\s*</.test(content) && /<\/\w+>/.test(content);
|
|
122
|
+
}
|
|
123
|
+
render(content, options) {
|
|
124
|
+
return import_react.default.createElement(HtmlView, {
|
|
125
|
+
html: content,
|
|
126
|
+
className: options?.className ?? "fmcp-html-content"
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
};
|
|
130
|
+
var htmlRenderer = new HtmlRenderer();
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { ContentRenderer, RenderOptions } from '../types';
|
|
3
|
+
export declare function isImage(content: string): boolean;
|
|
4
|
+
export declare class ImageRenderer implements ContentRenderer {
|
|
5
|
+
readonly type = "image";
|
|
6
|
+
readonly priority = 30;
|
|
7
|
+
canHandle(content: string): boolean;
|
|
8
|
+
render(content: string, options?: RenderOptions): React.ReactElement;
|
|
9
|
+
}
|
|
10
|
+
export declare const imageRenderer: ImageRenderer;
|
|
11
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/renderer/image/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAA2C,MAAM,OAAO,CAAC;AAMhE,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAW/D,wBAAgB,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAGhD;AAgID,qBAAa,aAAc,YAAW,eAAe;IACnD,QAAQ,CAAC,IAAI,WAAW;IACxB,QAAQ,CAAC,QAAQ,MAAM;IAEvB,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAInC,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,KAAK,CAAC,YAAY;CASrE;AAED,eAAO,MAAM,aAAa,eAAsB,CAAC"}
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
+
var __export = (target, all) => {
|
|
9
|
+
for (var name in all)
|
|
10
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
11
|
+
};
|
|
12
|
+
var __copyProps = (to, from, except, desc) => {
|
|
13
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
14
|
+
for (let key of __getOwnPropNames(from))
|
|
15
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
16
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
17
|
+
}
|
|
18
|
+
return to;
|
|
19
|
+
};
|
|
20
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
22
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
23
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
24
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
25
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
26
|
+
mod
|
|
27
|
+
));
|
|
28
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
|
+
|
|
30
|
+
// libs/ui/src/renderer/image/index.ts
|
|
31
|
+
var image_exports = {};
|
|
32
|
+
__export(image_exports, {
|
|
33
|
+
ImageRenderer: () => ImageRenderer,
|
|
34
|
+
imageRenderer: () => imageRenderer,
|
|
35
|
+
isImage: () => isImage
|
|
36
|
+
});
|
|
37
|
+
module.exports = __toCommonJS(image_exports);
|
|
38
|
+
var import_react = __toESM(require("react"));
|
|
39
|
+
var import_Box = __toESM(require("@mui/material/Box"));
|
|
40
|
+
var import_Skeleton = __toESM(require("@mui/material/Skeleton"));
|
|
41
|
+
var import_Alert = __toESM(require("@mui/material/Alert"));
|
|
42
|
+
var import_Typography = __toESM(require("@mui/material/Typography"));
|
|
43
|
+
var import_styles = require("@mui/material/styles");
|
|
44
|
+
var IMAGE_DATA_URI = /^data:image\/(?:png|jpeg|jpg|gif|webp|svg\+xml|avif)[;,]/;
|
|
45
|
+
var IMAGE_URL = /^https?:\/\/[^?#\s]+\.(?:png|jpe?g|gif|webp|svg|avif|ico)(?:\?[^#\s]*)?$/i;
|
|
46
|
+
var IMAGE_SERVICE_URL = /^https?:\/\/(?:picsum\.photos|images\.unsplash\.com|i\.imgur\.com|placekitten\.com|via\.placeholder\.com)\//i;
|
|
47
|
+
function isImage(content) {
|
|
48
|
+
const trimmed = content.trim();
|
|
49
|
+
return IMAGE_DATA_URI.test(trimmed) || IMAGE_URL.test(trimmed) || IMAGE_SERVICE_URL.test(trimmed);
|
|
50
|
+
}
|
|
51
|
+
var ImageRoot = (0, import_styles.styled)(import_Box.default, {
|
|
52
|
+
name: "FrontMcpImage",
|
|
53
|
+
slot: "Root"
|
|
54
|
+
})({
|
|
55
|
+
display: "inline-block",
|
|
56
|
+
position: "relative",
|
|
57
|
+
maxWidth: "100%"
|
|
58
|
+
});
|
|
59
|
+
var StyledImage = (0, import_styles.styled)("img", {
|
|
60
|
+
name: "FrontMcpImage",
|
|
61
|
+
slot: "Image"
|
|
62
|
+
})({
|
|
63
|
+
maxWidth: "100%",
|
|
64
|
+
height: "auto",
|
|
65
|
+
display: "block",
|
|
66
|
+
cursor: "pointer",
|
|
67
|
+
borderRadius: "inherit"
|
|
68
|
+
});
|
|
69
|
+
var LightboxBackdrop = (0, import_styles.styled)(import_Box.default, {
|
|
70
|
+
name: "FrontMcpImage",
|
|
71
|
+
slot: "Lightbox"
|
|
72
|
+
})({
|
|
73
|
+
display: "flex",
|
|
74
|
+
alignItems: "center",
|
|
75
|
+
justifyContent: "center",
|
|
76
|
+
padding: 16
|
|
77
|
+
});
|
|
78
|
+
var LightboxImage = (0, import_styles.styled)("img")({
|
|
79
|
+
maxWidth: "90vw",
|
|
80
|
+
maxHeight: "90vh",
|
|
81
|
+
objectFit: "contain",
|
|
82
|
+
borderRadius: 8
|
|
83
|
+
});
|
|
84
|
+
function LightboxOverlay({ src, alt, onClose }) {
|
|
85
|
+
return import_react.default.createElement(
|
|
86
|
+
LightboxBackdrop,
|
|
87
|
+
{
|
|
88
|
+
onClick: onClose,
|
|
89
|
+
sx: {
|
|
90
|
+
position: "fixed",
|
|
91
|
+
inset: 0,
|
|
92
|
+
zIndex: 1300,
|
|
93
|
+
bgcolor: "rgba(0,0,0,0.8)"
|
|
94
|
+
}
|
|
95
|
+
},
|
|
96
|
+
import_react.default.createElement(LightboxImage, { src, alt })
|
|
97
|
+
);
|
|
98
|
+
}
|
|
99
|
+
function ImageView({ src, alt, caption, className }) {
|
|
100
|
+
const [loaded, setLoaded] = (0, import_react.useState)(false);
|
|
101
|
+
const [error, setError] = (0, import_react.useState)(false);
|
|
102
|
+
const [lightboxOpen, setLightboxOpen] = (0, import_react.useState)(false);
|
|
103
|
+
(0, import_react.useEffect)(() => {
|
|
104
|
+
setLoaded(false);
|
|
105
|
+
setError(false);
|
|
106
|
+
setLightboxOpen(false);
|
|
107
|
+
}, [src]);
|
|
108
|
+
const handleLoad = (0, import_react.useCallback)(() => setLoaded(true), []);
|
|
109
|
+
const handleError = (0, import_react.useCallback)(() => {
|
|
110
|
+
setLoaded(true);
|
|
111
|
+
setError(true);
|
|
112
|
+
}, []);
|
|
113
|
+
if (error) {
|
|
114
|
+
return import_react.default.createElement(import_Alert.default, { severity: "error" }, `Failed to load image: ${src}`);
|
|
115
|
+
}
|
|
116
|
+
return import_react.default.createElement(
|
|
117
|
+
ImageRoot,
|
|
118
|
+
{ className },
|
|
119
|
+
!loaded && import_react.default.createElement(import_Skeleton.default, { variant: "rectangular", width: 400, height: 300 }),
|
|
120
|
+
import_react.default.createElement(StyledImage, {
|
|
121
|
+
src,
|
|
122
|
+
alt: alt ?? "Image",
|
|
123
|
+
onLoad: handleLoad,
|
|
124
|
+
onError: handleError,
|
|
125
|
+
onClick: () => setLightboxOpen(true),
|
|
126
|
+
style: loaded ? void 0 : { display: "none" }
|
|
127
|
+
}),
|
|
128
|
+
caption && import_react.default.createElement(
|
|
129
|
+
import_Typography.default,
|
|
130
|
+
{ variant: "caption", color: "text.secondary", sx: { mt: 0.5, display: "block", textAlign: "center" } },
|
|
131
|
+
caption
|
|
132
|
+
),
|
|
133
|
+
lightboxOpen && import_react.default.createElement(LightboxOverlay, {
|
|
134
|
+
src,
|
|
135
|
+
alt: alt ?? "Image",
|
|
136
|
+
onClose: () => setLightboxOpen(false)
|
|
137
|
+
})
|
|
138
|
+
);
|
|
139
|
+
}
|
|
140
|
+
var ImageRenderer = class {
|
|
141
|
+
type = "image";
|
|
142
|
+
priority = 30;
|
|
143
|
+
canHandle(content) {
|
|
144
|
+
return isImage(content);
|
|
145
|
+
}
|
|
146
|
+
render(content, options) {
|
|
147
|
+
const caption = options?.rendererOptions?.["caption"];
|
|
148
|
+
return import_react.default.createElement(ImageView, {
|
|
149
|
+
src: content.trim(),
|
|
150
|
+
alt: options?.toolName ?? "Image",
|
|
151
|
+
caption,
|
|
152
|
+
className: options?.className ?? "fmcp-image-content"
|
|
153
|
+
});
|
|
154
|
+
}
|
|
155
|
+
};
|
|
156
|
+
var imageRenderer = new ImageRenderer();
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
export type { ContentRenderer, RenderOptions, ContentType } from './types';
|
|
2
|
+
export { detectContentType, renderContent, registerRenderer, clearRegistry, getRenderer, getRegisteredRenderers, ContentView, type ContentViewProps, type DetectedContentType, } from './auto-detect';
|
|
3
|
+
export { useRendererTheme, extractThemeValues, type RendererThemeValues } from './common';
|
|
4
|
+
export { injectStylesheet } from './common';
|
|
5
|
+
export { createLazyImport, runtimeImportWithFallback, esmShUrl, ESM_SH_BASE, type LazyImport, type LazyImportState, } from './common';
|
|
6
|
+
export { useLazyModule } from './common';
|
|
7
|
+
export { MdxRenderer, mdxRenderer } from './mdx';
|
|
8
|
+
export { HtmlRenderer, htmlRenderer } from './html';
|
|
9
|
+
export { ReactJsxRenderer, reactJsxRenderer } from './react';
|
|
10
|
+
export { PdfRenderer, pdfRenderer } from './pdf';
|
|
11
|
+
export { CsvRenderer, csvRenderer } from './csv';
|
|
12
|
+
export { ImageRenderer, imageRenderer } from './image';
|
|
13
|
+
export { ChartsRenderer, chartsRenderer } from './charts';
|
|
14
|
+
export { MermaidRenderer, mermaidRenderer } from './mermaid';
|
|
15
|
+
export { FlowRenderer, flowRenderer } from './flow';
|
|
16
|
+
export { MathRenderer, mathRenderer } from './math';
|
|
17
|
+
export { MapsRenderer, mapsRenderer } from './maps';
|
|
18
|
+
export { VideoRenderer, AudioRenderer, videoRenderer, audioRenderer } from './media';
|
|
19
|
+
export { isImage } from './image';
|
|
20
|
+
export { isChart } from './charts';
|
|
21
|
+
export { isMermaid } from './mermaid';
|
|
22
|
+
export { isFlow } from './flow';
|
|
23
|
+
export { isMath } from './math';
|
|
24
|
+
export { isMap } from './maps';
|
|
25
|
+
export { isVideo, isAudio, isMedia } from './media';
|
|
26
|
+
export { isReactJsx } from './react';
|
|
27
|
+
/**
|
|
28
|
+
* Register all built-in renderers with the auto-detect registry.
|
|
29
|
+
* Call this once at app startup if you want all renderers available.
|
|
30
|
+
*/
|
|
31
|
+
export declare function registerAllRenderers(): void;
|
|
32
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/renderer/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,eAAe,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAC3E,OAAO,EACL,iBAAiB,EACjB,aAAa,EACb,gBAAgB,EAChB,aAAa,EACb,WAAW,EACX,sBAAsB,EACtB,WAAW,EACX,KAAK,gBAAgB,EACrB,KAAK,mBAAmB,GACzB,MAAM,eAAe,CAAC;AAGvB,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,KAAK,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAC1F,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,EACL,gBAAgB,EAChB,yBAAyB,EACzB,QAAQ,EACR,WAAW,EACX,KAAK,UAAU,EACf,KAAK,eAAe,GACrB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAGzC,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AAGjD,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAGrF,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AACnC,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAC/B,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAiBrC;;;GAGG;AACH,wBAAgB,oBAAoB,IAAI,IAAI,CAoB3C"}
|