@nubase/terminal 0.0.0-stage → 0.1.1
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/bin/nubase.js +11 -0
- package/out/main/index.js +3240 -0
- package/out/preload/index.cjs +23 -0
- package/out/renderer/assets/BinaryPreviews-Dvmgctgl.js +262 -0
- package/out/renderer/assets/CodeEditor-BKx61p9c.js +2034 -0
- package/out/renderer/assets/DocumentPreviews-BA1gL-ZJ.js +66 -0
- package/out/renderer/assets/DocxPreview-CiY-SNbh.js +6955 -0
- package/out/renderer/assets/ImagePreview-DpnKfbxj.js +120 -0
- package/out/renderer/assets/PdfPreview-6oeuYaqY.js +24399 -0
- package/out/renderer/assets/PdfPreview-BT-DZbCt.css +6483 -0
- package/out/renderer/assets/SpreadsheetPreviews-B4Qby88A.js +23987 -0
- package/out/renderer/assets/abap-Cel38df4.js +1317 -0
- package/out/renderer/assets/apex-DzOmV_zF.js +355 -0
- package/out/renderer/assets/azcli-Xvapx-7p.js +56 -0
- package/out/renderer/assets/bat-BGMSIlWY.js +126 -0
- package/out/renderer/assets/bicep-CcpV5qxk.js +228 -0
- package/out/renderer/assets/cameligo-BfMDXVEx.js +233 -0
- package/out/renderer/assets/clojure-DFgIAJGu.js +801 -0
- package/out/renderer/assets/codicon-DF1abBS2.ttf +0 -0
- package/out/renderer/assets/coffee-Db4q5aZ8.js +308 -0
- package/out/renderer/assets/cpp-CEvPJv6f.js +450 -0
- package/out/renderer/assets/csharp-CVoBr97X.js +405 -0
- package/out/renderer/assets/csp-Cgzd5gxo.js +49 -0
- package/out/renderer/assets/css-D3M-RRVi.js +287 -0
- package/out/renderer/assets/css.worker-AXSlELAq.js +50031 -0
- package/out/renderer/assets/cssMode-CrMQfSUN.js +101 -0
- package/out/renderer/assets/cursor-editorTextHighlight-kG3uUOwL.svg +8 -0
- package/out/renderer/assets/cypher-DJJgZ_3Q.js +326 -0
- package/out/renderer/assets/dart-Bkg7I-Qe.js +341 -0
- package/out/renderer/assets/dockerfile-B1r36HyK.js +194 -0
- package/out/renderer/assets/ecl-C1Ji6tZG.js +531 -0
- package/out/renderer/assets/editor-CXfYqUZ6.css +4816 -0
- package/out/renderer/assets/editor.api-zF37fz_e.js +127071 -0
- package/out/renderer/assets/elixir-D_-n8lGJ.js +526 -0
- package/out/renderer/assets/fileTypes-nBt-Y6NI.js +56306 -0
- package/out/renderer/assets/flow9-CCdkJPNN.js +179 -0
- package/out/renderer/assets/freemarker2-CBlvIP9I.js +733 -0
- package/out/renderer/assets/fsharp-D5KoOpm3.js +248 -0
- package/out/renderer/assets/go-B7BFdMAL.js +264 -0
- package/out/renderer/assets/graphql-BqIezLde.js +177 -0
- package/out/renderer/assets/handlebars-CG4DAk5_.js +414 -0
- package/out/renderer/assets/hcl-C1GQCKC0.js +222 -0
- package/out/renderer/assets/html-C-_R4s2w.js +335 -0
- package/out/renderer/assets/html.worker-vQ8gO4kF.js +30584 -0
- package/out/renderer/assets/htmlMode-mGTQJ-lr.js +125 -0
- package/out/renderer/assets/index-CQHlaLTi.js +46080 -0
- package/out/renderer/assets/index-DBYJcRdn.css +3124 -0
- package/out/renderer/assets/ini-DDFxEGYN.js +97 -0
- package/out/renderer/assets/java-BqvgSBNj.js +272 -0
- package/out/renderer/assets/javascript-BuIet4p-.js +69 -0
- package/out/renderer/assets/json.worker-DBhrCMTN.js +23259 -0
- package/out/renderer/assets/jsonMode-OAArikPQ.js +769 -0
- package/out/renderer/assets/julia-D30HQT3I.js +688 -0
- package/out/renderer/assets/kotlin-Bql4-FwM.js +303 -0
- package/out/renderer/assets/less-D_rhcFqZ.js +245 -0
- package/out/renderer/assets/lexon-CjhVPeai.js +188 -0
- package/out/renderer/assets/liquid-DJNDWhYP.js +277 -0
- package/out/renderer/assets/lspLanguageFeatures-BIH0_3rO.css +24 -0
- package/out/renderer/assets/lspLanguageFeatures-Bvh4jxNk.js +2583 -0
- package/out/renderer/assets/lua-HQuy0vuU.js +203 -0
- package/out/renderer/assets/m3-CIJ7obE2.js +287 -0
- package/out/renderer/assets/markdown-I0GroHKS.js +265 -0
- package/out/renderer/assets/mdx-B4We-zdi.js +330 -0
- package/out/renderer/assets/mips-DY_Z1uin.js +190 -0
- package/out/renderer/assets/msdax-YkUW9rXl.js +416 -0
- package/out/renderer/assets/mysql-CIm9uV8f.js +921 -0
- package/out/renderer/assets/objective-c-JkhNEfNv.js +233 -0
- package/out/renderer/assets/pascal-Dvq-PxOC.js +289 -0
- package/out/renderer/assets/pascaligo-A9tZTvdV.js +204 -0
- package/out/renderer/assets/pdf_viewer-8SNFor7s.js +7639 -0
- package/out/renderer/assets/perl-C2Ujz2HB.js +720 -0
- package/out/renderer/assets/pgsql-BHB-cYm3.js +879 -0
- package/out/renderer/assets/php-DkNik5Vk.js +548 -0
- package/out/renderer/assets/pla-DQ-RrdDE.js +149 -0
- package/out/renderer/assets/postiats-f1cpw-r_.js +702 -0
- package/out/renderer/assets/powerquery-CwYp-rYn.js +940 -0
- package/out/renderer/assets/powershell-DNVb682q.js +252 -0
- package/out/renderer/assets/protobuf-C73bXEb8.js +663 -0
- package/out/renderer/assets/pug-BxvM69yY.js +419 -0
- package/out/renderer/assets/python-Hlw9kU7X.js +389 -0
- package/out/renderer/assets/qsharp-BCs2AvEL.js +335 -0
- package/out/renderer/assets/r-B7wnzr1V.js +282 -0
- package/out/renderer/assets/razor-BswxUzye.js +615 -0
- package/out/renderer/assets/redis-BQXcxMfX.js +324 -0
- package/out/renderer/assets/redshift-2dZdIUPH.js +838 -0
- package/out/renderer/assets/restructuredtext-CVT2zSWP.js +290 -0
- package/out/renderer/assets/ruby-DjmMI5Dp.js +612 -0
- package/out/renderer/assets/rust-BhSCZj0F.js +382 -0
- package/out/renderer/assets/sb-DaUIZery.js +146 -0
- package/out/renderer/assets/scala-CYIN7D7O.js +589 -0
- package/out/renderer/assets/scheme-DanUmhC2.js +173 -0
- package/out/renderer/assets/scss-BVILLTDt.js +420 -0
- package/out/renderer/assets/shell-Bpairu2a.js +293 -0
- package/out/renderer/assets/solidity-OLm4MSRm.js +1395 -0
- package/out/renderer/assets/sophia-DJz2Vk1M.js +234 -0
- package/out/renderer/assets/sparql-Bk5uRAQt.js +237 -0
- package/out/renderer/assets/sql-DQBN9zz5.js +858 -0
- package/out/renderer/assets/st-50mV4H0S.js +657 -0
- package/out/renderer/assets/swift-Yc0Q28XL.js +376 -0
- package/out/renderer/assets/systemverilog-Du7vdcmu.js +616 -0
- package/out/renderer/assets/tcl-DG7u3TBj.js +312 -0
- package/out/renderer/assets/toggleHighContrast-CKRp-vZ7.css +3691 -0
- package/out/renderer/assets/toggleHighContrast-NyS1pk1Z.js +51247 -0
- package/out/renderer/assets/twig-C49MsNA9.js +438 -0
- package/out/renderer/assets/typescript-F2yeVXIn.js +382 -0
- package/out/renderer/assets/typespec-DA1dz9gQ.js +245 -0
- package/out/renderer/assets/useAsync-Bi56CNnI.js +30 -0
- package/out/renderer/assets/vb-BDNIgfQk.js +447 -0
- package/out/renderer/assets/wgsl-j-0nJ_62.js +457 -0
- package/out/renderer/assets/xml-BfG5_Ah8.js +131 -0
- package/out/renderer/assets/yaml-7gp9FQUG.js +224 -0
- package/out/renderer/index.html +14 -0
- package/package.json +66 -4
- package/resources/skills/nubase-extension-authoring/SKILL.md +273 -0
- package/resources/templates/extension/package.json.template +13 -0
- package/resources/templates/extension/src/host.ts.template +12 -0
- package/resources/templates/extension/src/ui.tsx.template +26 -0
- package/resources/templates/extension/tsconfig.json.template +4 -0
- package/README.md +0 -3
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
import { $t as __toESM, Dt as Maximize, Yt as require_react, b as Button, g as formatBytes, nt as require_jsx_runtime, pt as Scan, q as cn, vt as Plus, wt as Minus, y as ActivityIndicator } from "./fileTypes-nBt-Y6NI.js";
|
|
2
|
+
//#region src/builtin-extensions/files/previewers/ImagePreview.tsx
|
|
3
|
+
var import_react = /* @__PURE__ */ __toESM(require_react(), 1);
|
|
4
|
+
var import_jsx_runtime = /* @__PURE__ */ __toESM(require_jsx_runtime(), 1);
|
|
5
|
+
var CHECKERBOARD = "repeating-conic-gradient(var(--muted) 0% 25%, transparent 0% 50%) 50% / 16px 16px";
|
|
6
|
+
/** Fit-to-block by default; zoom with the buttons, ⌘/ctrl+wheel or a pinch. */
|
|
7
|
+
var ImageView = ({ src, alt, caption }) => {
|
|
8
|
+
const [zoom, setZoom] = (0, import_react.useState)("fit");
|
|
9
|
+
const [size, setSize] = (0, import_react.useState)();
|
|
10
|
+
const [failed, setFailed] = (0, import_react.useState)(false);
|
|
11
|
+
const scrollRef = (0, import_react.useRef)(null);
|
|
12
|
+
(0, import_react.useEffect)(() => {
|
|
13
|
+
const element = scrollRef.current;
|
|
14
|
+
if (!element) return;
|
|
15
|
+
const onWheel = (event) => {
|
|
16
|
+
if (!event.ctrlKey && !event.metaKey) return;
|
|
17
|
+
event.preventDefault();
|
|
18
|
+
setZoom((current) => {
|
|
19
|
+
return clampZoom((current === "fit" ? fitScale(element, size) : current) * Math.exp(-event.deltaY / 200));
|
|
20
|
+
});
|
|
21
|
+
};
|
|
22
|
+
element.addEventListener("wheel", onWheel, { passive: false });
|
|
23
|
+
return () => element.removeEventListener("wheel", onWheel);
|
|
24
|
+
}, [size]);
|
|
25
|
+
const scale = zoom === "fit" ? void 0 : zoom;
|
|
26
|
+
const step = (factor) => setZoom((current) => clampZoom((current === "fit" ? fitScale(scrollRef.current, size) : current) * factor));
|
|
27
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
28
|
+
className: "flex h-full flex-col",
|
|
29
|
+
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
30
|
+
ref: scrollRef,
|
|
31
|
+
className: cn("relative min-h-0 flex-1 overflow-auto", zoom === "fit" && "flex items-center justify-center p-4"),
|
|
32
|
+
children: [!size && !failed && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
33
|
+
className: "absolute inset-0 flex items-center justify-center",
|
|
34
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ActivityIndicator, {})
|
|
35
|
+
}), failed ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
36
|
+
className: "flex h-full items-center justify-center text-muted-foreground text-sm",
|
|
37
|
+
children: "This image could not be decoded."
|
|
38
|
+
}) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)("img", {
|
|
39
|
+
src,
|
|
40
|
+
alt,
|
|
41
|
+
draggable: false,
|
|
42
|
+
onLoad: (e) => setSize({
|
|
43
|
+
width: e.currentTarget.naturalWidth,
|
|
44
|
+
height: e.currentTarget.naturalHeight
|
|
45
|
+
}),
|
|
46
|
+
onError: () => setFailed(true),
|
|
47
|
+
onDoubleClick: () => setZoom((z) => z === "fit" ? 1 : "fit"),
|
|
48
|
+
className: cn("shadow-sm", zoom === "fit" && "max-h-full max-w-full object-contain", !size && "invisible"),
|
|
49
|
+
style: {
|
|
50
|
+
background: CHECKERBOARD,
|
|
51
|
+
imageRendering: scale && scale >= 3 ? "pixelated" : void 0,
|
|
52
|
+
...scale && size ? {
|
|
53
|
+
width: size.width * scale,
|
|
54
|
+
height: size.height * scale,
|
|
55
|
+
maxWidth: "none",
|
|
56
|
+
margin: "auto",
|
|
57
|
+
display: "block"
|
|
58
|
+
} : {}
|
|
59
|
+
}
|
|
60
|
+
})]
|
|
61
|
+
}), /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
62
|
+
className: "flex h-8 shrink-0 items-center gap-1 border-t px-2 text-muted-foreground text-xs",
|
|
63
|
+
children: [
|
|
64
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("span", {
|
|
65
|
+
className: "truncate px-1",
|
|
66
|
+
children: [size ? `${size.width} × ${size.height}` : "", caption ? ` · ${caption}` : ""]
|
|
67
|
+
}),
|
|
68
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "flex-1" }),
|
|
69
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(Button, {
|
|
70
|
+
variant: "ghost",
|
|
71
|
+
size: "icon-sm",
|
|
72
|
+
className: "size-6",
|
|
73
|
+
title: "Zoom out",
|
|
74
|
+
onClick: () => step(1 / 1.25),
|
|
75
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Minus, { size: 13 })
|
|
76
|
+
}),
|
|
77
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
|
|
78
|
+
className: "w-11 text-center tabular-nums",
|
|
79
|
+
children: zoom === "fit" ? "fit" : `${Math.round(zoom * 100)}%`
|
|
80
|
+
}),
|
|
81
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(Button, {
|
|
82
|
+
variant: "ghost",
|
|
83
|
+
size: "icon-sm",
|
|
84
|
+
className: "size-6",
|
|
85
|
+
title: "Zoom in",
|
|
86
|
+
onClick: () => step(1.25),
|
|
87
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Plus, { size: 13 })
|
|
88
|
+
}),
|
|
89
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(Button, {
|
|
90
|
+
variant: "ghost",
|
|
91
|
+
size: "icon-sm",
|
|
92
|
+
className: "size-6",
|
|
93
|
+
title: "Actual size",
|
|
94
|
+
onClick: () => setZoom(1),
|
|
95
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Scan, { size: 13 })
|
|
96
|
+
}),
|
|
97
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(Button, {
|
|
98
|
+
variant: "ghost",
|
|
99
|
+
size: "icon-sm",
|
|
100
|
+
className: "size-6",
|
|
101
|
+
title: "Fit",
|
|
102
|
+
onClick: () => setZoom("fit"),
|
|
103
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Maximize, { size: 13 })
|
|
104
|
+
})
|
|
105
|
+
]
|
|
106
|
+
})]
|
|
107
|
+
});
|
|
108
|
+
};
|
|
109
|
+
var clampZoom = (value) => Math.min(32, Math.max(.05, value));
|
|
110
|
+
var fitScale = (element, size) => {
|
|
111
|
+
if (!element || !size) return 1;
|
|
112
|
+
return Math.min(1, (element.clientWidth - 32) / size.width, (element.clientHeight - 32) / size.height);
|
|
113
|
+
};
|
|
114
|
+
var ImagePreview = ({ file }) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ImageView, {
|
|
115
|
+
src: file.url,
|
|
116
|
+
alt: file.name,
|
|
117
|
+
caption: formatBytes(file.size)
|
|
118
|
+
}, file.url);
|
|
119
|
+
//#endregion
|
|
120
|
+
export { ImageView, ImagePreview as default };
|