@nubase/terminal 0.0.0-stage → 0.1.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.
Files changed (119) hide show
  1. package/bin/nubase.js +11 -0
  2. package/out/main/index.js +3218 -0
  3. package/out/preload/index.cjs +23 -0
  4. package/out/renderer/assets/BinaryPreviews-Dvmgctgl.js +262 -0
  5. package/out/renderer/assets/CodeEditor-BKx61p9c.js +2034 -0
  6. package/out/renderer/assets/DocumentPreviews-BA1gL-ZJ.js +66 -0
  7. package/out/renderer/assets/DocxPreview-CiY-SNbh.js +6955 -0
  8. package/out/renderer/assets/ImagePreview-DpnKfbxj.js +120 -0
  9. package/out/renderer/assets/PdfPreview-6oeuYaqY.js +24399 -0
  10. package/out/renderer/assets/PdfPreview-BT-DZbCt.css +6483 -0
  11. package/out/renderer/assets/SpreadsheetPreviews-B4Qby88A.js +23987 -0
  12. package/out/renderer/assets/abap-Cel38df4.js +1317 -0
  13. package/out/renderer/assets/apex-DzOmV_zF.js +355 -0
  14. package/out/renderer/assets/azcli-Xvapx-7p.js +56 -0
  15. package/out/renderer/assets/bat-BGMSIlWY.js +126 -0
  16. package/out/renderer/assets/bicep-CcpV5qxk.js +228 -0
  17. package/out/renderer/assets/cameligo-BfMDXVEx.js +233 -0
  18. package/out/renderer/assets/clojure-DFgIAJGu.js +801 -0
  19. package/out/renderer/assets/codicon-DF1abBS2.ttf +0 -0
  20. package/out/renderer/assets/coffee-Db4q5aZ8.js +308 -0
  21. package/out/renderer/assets/cpp-CEvPJv6f.js +450 -0
  22. package/out/renderer/assets/csharp-CVoBr97X.js +405 -0
  23. package/out/renderer/assets/csp-Cgzd5gxo.js +49 -0
  24. package/out/renderer/assets/css-D3M-RRVi.js +287 -0
  25. package/out/renderer/assets/css.worker-AXSlELAq.js +50031 -0
  26. package/out/renderer/assets/cssMode-CrMQfSUN.js +101 -0
  27. package/out/renderer/assets/cursor-editorTextHighlight-kG3uUOwL.svg +8 -0
  28. package/out/renderer/assets/cypher-DJJgZ_3Q.js +326 -0
  29. package/out/renderer/assets/dart-Bkg7I-Qe.js +341 -0
  30. package/out/renderer/assets/dockerfile-B1r36HyK.js +194 -0
  31. package/out/renderer/assets/ecl-C1Ji6tZG.js +531 -0
  32. package/out/renderer/assets/editor-CXfYqUZ6.css +4816 -0
  33. package/out/renderer/assets/editor.api-zF37fz_e.js +127071 -0
  34. package/out/renderer/assets/elixir-D_-n8lGJ.js +526 -0
  35. package/out/renderer/assets/fileTypes-nBt-Y6NI.js +56306 -0
  36. package/out/renderer/assets/flow9-CCdkJPNN.js +179 -0
  37. package/out/renderer/assets/freemarker2-CBlvIP9I.js +733 -0
  38. package/out/renderer/assets/fsharp-D5KoOpm3.js +248 -0
  39. package/out/renderer/assets/go-B7BFdMAL.js +264 -0
  40. package/out/renderer/assets/graphql-BqIezLde.js +177 -0
  41. package/out/renderer/assets/handlebars-CG4DAk5_.js +414 -0
  42. package/out/renderer/assets/hcl-C1GQCKC0.js +222 -0
  43. package/out/renderer/assets/html-C-_R4s2w.js +335 -0
  44. package/out/renderer/assets/html.worker-vQ8gO4kF.js +30584 -0
  45. package/out/renderer/assets/htmlMode-mGTQJ-lr.js +125 -0
  46. package/out/renderer/assets/index-CQHlaLTi.js +46080 -0
  47. package/out/renderer/assets/index-DBYJcRdn.css +3124 -0
  48. package/out/renderer/assets/ini-DDFxEGYN.js +97 -0
  49. package/out/renderer/assets/java-BqvgSBNj.js +272 -0
  50. package/out/renderer/assets/javascript-BuIet4p-.js +69 -0
  51. package/out/renderer/assets/json.worker-DBhrCMTN.js +23259 -0
  52. package/out/renderer/assets/jsonMode-OAArikPQ.js +769 -0
  53. package/out/renderer/assets/julia-D30HQT3I.js +688 -0
  54. package/out/renderer/assets/kotlin-Bql4-FwM.js +303 -0
  55. package/out/renderer/assets/less-D_rhcFqZ.js +245 -0
  56. package/out/renderer/assets/lexon-CjhVPeai.js +188 -0
  57. package/out/renderer/assets/liquid-DJNDWhYP.js +277 -0
  58. package/out/renderer/assets/lspLanguageFeatures-BIH0_3rO.css +24 -0
  59. package/out/renderer/assets/lspLanguageFeatures-Bvh4jxNk.js +2583 -0
  60. package/out/renderer/assets/lua-HQuy0vuU.js +203 -0
  61. package/out/renderer/assets/m3-CIJ7obE2.js +287 -0
  62. package/out/renderer/assets/markdown-I0GroHKS.js +265 -0
  63. package/out/renderer/assets/mdx-B4We-zdi.js +330 -0
  64. package/out/renderer/assets/mips-DY_Z1uin.js +190 -0
  65. package/out/renderer/assets/msdax-YkUW9rXl.js +416 -0
  66. package/out/renderer/assets/mysql-CIm9uV8f.js +921 -0
  67. package/out/renderer/assets/objective-c-JkhNEfNv.js +233 -0
  68. package/out/renderer/assets/pascal-Dvq-PxOC.js +289 -0
  69. package/out/renderer/assets/pascaligo-A9tZTvdV.js +204 -0
  70. package/out/renderer/assets/pdf_viewer-8SNFor7s.js +7639 -0
  71. package/out/renderer/assets/perl-C2Ujz2HB.js +720 -0
  72. package/out/renderer/assets/pgsql-BHB-cYm3.js +879 -0
  73. package/out/renderer/assets/php-DkNik5Vk.js +548 -0
  74. package/out/renderer/assets/pla-DQ-RrdDE.js +149 -0
  75. package/out/renderer/assets/postiats-f1cpw-r_.js +702 -0
  76. package/out/renderer/assets/powerquery-CwYp-rYn.js +940 -0
  77. package/out/renderer/assets/powershell-DNVb682q.js +252 -0
  78. package/out/renderer/assets/protobuf-C73bXEb8.js +663 -0
  79. package/out/renderer/assets/pug-BxvM69yY.js +419 -0
  80. package/out/renderer/assets/python-Hlw9kU7X.js +389 -0
  81. package/out/renderer/assets/qsharp-BCs2AvEL.js +335 -0
  82. package/out/renderer/assets/r-B7wnzr1V.js +282 -0
  83. package/out/renderer/assets/razor-BswxUzye.js +615 -0
  84. package/out/renderer/assets/redis-BQXcxMfX.js +324 -0
  85. package/out/renderer/assets/redshift-2dZdIUPH.js +838 -0
  86. package/out/renderer/assets/restructuredtext-CVT2zSWP.js +290 -0
  87. package/out/renderer/assets/ruby-DjmMI5Dp.js +612 -0
  88. package/out/renderer/assets/rust-BhSCZj0F.js +382 -0
  89. package/out/renderer/assets/sb-DaUIZery.js +146 -0
  90. package/out/renderer/assets/scala-CYIN7D7O.js +589 -0
  91. package/out/renderer/assets/scheme-DanUmhC2.js +173 -0
  92. package/out/renderer/assets/scss-BVILLTDt.js +420 -0
  93. package/out/renderer/assets/shell-Bpairu2a.js +293 -0
  94. package/out/renderer/assets/solidity-OLm4MSRm.js +1395 -0
  95. package/out/renderer/assets/sophia-DJz2Vk1M.js +234 -0
  96. package/out/renderer/assets/sparql-Bk5uRAQt.js +237 -0
  97. package/out/renderer/assets/sql-DQBN9zz5.js +858 -0
  98. package/out/renderer/assets/st-50mV4H0S.js +657 -0
  99. package/out/renderer/assets/swift-Yc0Q28XL.js +376 -0
  100. package/out/renderer/assets/systemverilog-Du7vdcmu.js +616 -0
  101. package/out/renderer/assets/tcl-DG7u3TBj.js +312 -0
  102. package/out/renderer/assets/toggleHighContrast-CKRp-vZ7.css +3691 -0
  103. package/out/renderer/assets/toggleHighContrast-NyS1pk1Z.js +51247 -0
  104. package/out/renderer/assets/twig-C49MsNA9.js +438 -0
  105. package/out/renderer/assets/typescript-F2yeVXIn.js +382 -0
  106. package/out/renderer/assets/typespec-DA1dz9gQ.js +245 -0
  107. package/out/renderer/assets/useAsync-Bi56CNnI.js +30 -0
  108. package/out/renderer/assets/vb-BDNIgfQk.js +447 -0
  109. package/out/renderer/assets/wgsl-j-0nJ_62.js +457 -0
  110. package/out/renderer/assets/xml-BfG5_Ah8.js +131 -0
  111. package/out/renderer/assets/yaml-7gp9FQUG.js +224 -0
  112. package/out/renderer/index.html +14 -0
  113. package/package.json +66 -4
  114. package/resources/skills/nubase-extension-authoring/SKILL.md +273 -0
  115. package/resources/templates/extension/package.json.template +13 -0
  116. package/resources/templates/extension/src/host.ts.template +12 -0
  117. package/resources/templates/extension/src/ui.tsx.template +26 -0
  118. package/resources/templates/extension/tsconfig.json.template +4 -0
  119. 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 };