@malloy-publisher/sdk 0.0.35 → 0.0.37

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 (294) hide show
  1. package/dist/{RenderedResult-DphykkT6.cjs → RenderedResult-ChKXzRBq.cjs} +1 -1
  2. package/dist/RenderedResult-DkEsDzXb.js +51 -0
  3. package/dist/abap-BmBUA35e.js +6 -0
  4. package/dist/actionscript-3-zFUbzQa9.js +6 -0
  5. package/dist/ada-CBvPkFpZ.js +6 -0
  6. package/dist/andromeeda-uXNdzNpk.js +4 -0
  7. package/dist/angular-html-0fTdLuKf.js +32 -0
  8. package/dist/angular-ts-wkniW60G.js +21 -0
  9. package/dist/apache-CVNlsSDc.js +6 -0
  10. package/dist/apex-DFk3KRB1.js +6 -0
  11. package/dist/apl-TLDHFJX6.js +16 -0
  12. package/dist/applescript-CYMR_y0g.js +6 -0
  13. package/dist/ara-4QmU5e04.js +6 -0
  14. package/dist/asciidoc-v_1bjgUg.js +6 -0
  15. package/dist/asm-RC0Yh-NZ.js +6 -0
  16. package/dist/astro-Uf8_VxKJ.js +16 -0
  17. package/dist/aurora-x-BwoVEUWZ.js +4 -0
  18. package/dist/awk-gPH8MVMW.js +6 -0
  19. package/dist/ayu-dark-CxPZkpb2.js +4 -0
  20. package/dist/ballerina-kvLnRU_e.js +6 -0
  21. package/dist/bat-BHYy44sT.js +6 -0
  22. package/dist/beancount-D-MADTs_.js +6 -0
  23. package/dist/berry-Ci9U0o4h.js +6 -0
  24. package/dist/bibtex-CX618D15.js +6 -0
  25. package/dist/bicep-iuYiPopT.js +6 -0
  26. package/dist/blade-BtR00Gx0.js +18 -0
  27. package/dist/bsl-BIXPNqL4.js +8 -0
  28. package/dist/c-DASdrs7p.js +6 -0
  29. package/dist/cadence-BDALQi26.js +6 -0
  30. package/dist/cairo-tXZKA2PT.js +8 -0
  31. package/dist/catppuccin-frappe-BrTOiad2.js +4 -0
  32. package/dist/catppuccin-latte-D-dc_R4m.js +4 -0
  33. package/dist/catppuccin-macchiato-DN4jOp0G.js +4 -0
  34. package/dist/catppuccin-mocha-B8yCE3-3.js +4 -0
  35. package/dist/clarity-CNgV2Ths.js +6 -0
  36. package/dist/clojure-CsKKFGwv.js +6 -0
  37. package/dist/cmake-Dr-A3iJx.js +6 -0
  38. package/dist/cobol-DMssKNmC.js +10 -0
  39. package/dist/codeowners-Bt9yU6NX.js +6 -0
  40. package/dist/codeql-DBNTqJi1.js +6 -0
  41. package/dist/coffee-D_GzM8k1.js +8 -0
  42. package/dist/common-lisp-r7ZEOG7T.js +6 -0
  43. package/dist/components/Model/SourcesExplorer.d.ts +2 -2
  44. package/dist/components/MutableNotebook/EditableMalloyCell.d.ts +3 -3
  45. package/dist/components/MutableNotebook/MutableCell.d.ts +3 -4
  46. package/dist/components/MutableNotebook/MutableNotebook.d.ts +2 -1
  47. package/dist/coq-CB6Pv_W9.js +6 -0
  48. package/dist/cpp-CJF2i3ah.js +18 -0
  49. package/dist/crystal-BKWnaU3g.js +18 -0
  50. package/dist/csharp-CYWRhZ2R.js +6 -0
  51. package/dist/css-D1aVdRIU.js +6 -0
  52. package/dist/csv-DvCncUGQ.js +6 -0
  53. package/dist/cue-BXMrmvay.js +6 -0
  54. package/dist/cypher-DTm5zNR1.js +6 -0
  55. package/dist/d-D6ZXmn3l.js +6 -0
  56. package/dist/dark-plus-pUHDTVV0.js +4 -0
  57. package/dist/dart-Dz59Is3F.js +6 -0
  58. package/dist/dax-DTVGzydb.js +6 -0
  59. package/dist/desktop-Db9vb-dl.js +6 -0
  60. package/dist/diff-XmNrvgM1.js +6 -0
  61. package/dist/docker-DWH2onkn.js +6 -0
  62. package/dist/dotenv-4337wvzu.js +6 -0
  63. package/dist/dracula-BtZx2Kac.js +4 -0
  64. package/dist/dracula-soft-BKa-aqBv.js +4 -0
  65. package/dist/dream-maker-CvvfrJSx.js +6 -0
  66. package/dist/edge-CgxR-qhM.js +12 -0
  67. package/dist/elixir-DZkeSPwW.js +8 -0
  68. package/dist/elm-BKuV1HE1.js +8 -0
  69. package/dist/emacs-lisp-BAefI874.js +6 -0
  70. package/dist/erb-BLwkpXUJ.js +10 -0
  71. package/dist/erlang-CmIiwF3I.js +6 -0
  72. package/dist/everforest-dark-DMCBqXCK.js +4 -0
  73. package/dist/everforest-light-BbXl82Em.js +4 -0
  74. package/dist/fennel-DNqkz9pE.js +6 -0
  75. package/dist/fish-DIm72t2T.js +6 -0
  76. package/dist/fluent-BapTxJsC.js +6 -0
  77. package/dist/fortran-fixed-form-s9Hnb3av.js +8 -0
  78. package/dist/fortran-free-form-CNDsBFUj.js +6 -0
  79. package/dist/fsharp-Cv0x43wb.js +8 -0
  80. package/dist/gdresource-CMcKXvgJ.js +10 -0
  81. package/dist/gdscript-D7aheHm-.js +6 -0
  82. package/dist/gdshader-BGJEsM2Z.js +6 -0
  83. package/dist/genie-C9gPjc6J.js +6 -0
  84. package/dist/gherkin-bka1Exbx.js +6 -0
  85. package/dist/git-commit-BspYIY3P.js +8 -0
  86. package/dist/git-rebase--zLBTjUa.js +8 -0
  87. package/dist/github-dark-DenFmJkN.js +4 -0
  88. package/dist/github-dark-default-BJPUVz4H.js +4 -0
  89. package/dist/github-dark-dimmed-DUshB20C.js +4 -0
  90. package/dist/github-dark-high-contrast-D3aGCnF8.js +4 -0
  91. package/dist/github-light-JYsPkUQd.js +4 -0
  92. package/dist/github-light-default-D99KPAby.js +4 -0
  93. package/dist/github-light-high-contrast-BbmZE-Mp.js +4 -0
  94. package/dist/gleam-B4k9YFGD.js +6 -0
  95. package/dist/glimmer-js-DhY9umHJ.js +14 -0
  96. package/dist/glimmer-ts-CCrHcYH5.js +14 -0
  97. package/dist/glsl-XLGYNq5B.js +8 -0
  98. package/dist/gnuplot-DnWoRZt-.js +6 -0
  99. package/dist/go-BErP6iv1.js +6 -0
  100. package/dist/graphql-DWpQF4JI.js +14 -0
  101. package/dist/groovy-IWs5-NIO.js +6 -0
  102. package/dist/hack-CQrV-ytR.js +10 -0
  103. package/dist/haml-CMN0hQaL.js +10 -0
  104. package/dist/handlebars-Cc-7fXX5.js +14 -0
  105. package/dist/haskell-CtlGos0K.js +6 -0
  106. package/dist/haxe-CZZ33vZw.js +6 -0
  107. package/dist/hcl-6hOg9WP4.js +6 -0
  108. package/dist/hjson-CgwED-oz.js +6 -0
  109. package/dist/hlsl-3-lv4gi7.js +6 -0
  110. package/dist/houston-BDYrDoDW.js +4 -0
  111. package/dist/html-B0P_v3yU.js +10 -0
  112. package/dist/html-derivative-D59SHfh8.js +8 -0
  113. package/dist/http-Dcjm_K1m.js +14 -0
  114. package/dist/hxml-BNKImryz.js +8 -0
  115. package/dist/hy-C2xHhR6I.js +6 -0
  116. package/dist/imba-Drd0AMDo.js +8 -0
  117. package/dist/{index-nKbldp0y.cjs → index-7mmEVMId.cjs} +314 -314
  118. package/dist/index-DdtGkJIk.js +139440 -0
  119. package/dist/index.cjs.js +1 -1
  120. package/dist/index.es.js +23 -0
  121. package/dist/ini-BUcvsX-U.js +6 -0
  122. package/dist/java-B7odJ7Ap.js +6 -0
  123. package/dist/javascript-fa8UlHZE.js +6 -0
  124. package/dist/jinja-CCSYduCH.js +11 -0
  125. package/dist/jison-BygvlveW.js +8 -0
  126. package/dist/json-71t8ZF9g.js +6 -0
  127. package/dist/json5-Z7F6rA6a.js +6 -0
  128. package/dist/jsonc-Dphhs4m2.js +6 -0
  129. package/dist/jsonl-D9jj92Gg.js +6 -0
  130. package/dist/jsonnet-DEQ7IUoJ.js +6 -0
  131. package/dist/jssm-j74e88UX.js +6 -0
  132. package/dist/jsx-Bkesy5tT.js +6 -0
  133. package/dist/julia-CiahampL.js +16 -0
  134. package/dist/kanagawa-dragon-CiKur4Hl.js +4 -0
  135. package/dist/kanagawa-lotus-BKu-smKu.js +4 -0
  136. package/dist/kanagawa-wave-CQwozSzG.js +4 -0
  137. package/dist/kotlin-DCgZY7Ii.js +6 -0
  138. package/dist/kusto-Cw029H-v.js +6 -0
  139. package/dist/laserwave-6a00oqik.js +4 -0
  140. package/dist/latex-LfGCYGw5.js +8 -0
  141. package/dist/lean-CYSet4vs.js +6 -0
  142. package/dist/less-DQA4v-Nm.js +6 -0
  143. package/dist/light-plus-CZuVqSLX.js +4 -0
  144. package/dist/liquid-CvufO3kO.js +14 -0
  145. package/dist/log-D2eRfqDn.js +6 -0
  146. package/dist/logo-QEAtGWZ9.js +6 -0
  147. package/dist/lua-BVfhNLDr.js +8 -0
  148. package/dist/luau-BjYGiqID.js +6 -0
  149. package/dist/make-BjuHP00g.js +6 -0
  150. package/dist/malloy-explorer.css +468 -0
  151. package/dist/markdown-B6guhLWd.js +6 -0
  152. package/dist/marko-CHlMS8w5.js +14 -0
  153. package/dist/material-theme-D6KBX41T.js +4 -0
  154. package/dist/material-theme-darker-CkRroheE.js +4 -0
  155. package/dist/material-theme-lighter-BUBw43Yz.js +4 -0
  156. package/dist/material-theme-ocean-ClGX14Ja.js +4 -0
  157. package/dist/material-theme-palenight-C1RVm8K1.js +4 -0
  158. package/dist/matlab-BpQlIJiw.js +6 -0
  159. package/dist/mdc-4K6B6lHG.js +12 -0
  160. package/dist/mdx-DIoECIFU.js +6 -0
  161. package/dist/mermaid-BZ7WHNIe.js +6 -0
  162. package/dist/min-dark-C7ak0t6c.js +4 -0
  163. package/dist/min-light-CKFxVcPp.js +4 -0
  164. package/dist/mipsasm-DusDYkFc.js +6 -0
  165. package/dist/mojo-CY9jaezJ.js +6 -0
  166. package/dist/monokai-C1KBYcO0.js +4 -0
  167. package/dist/move-ChphFumd.js +6 -0
  168. package/dist/narrat-Dz4d7OmN.js +6 -0
  169. package/dist/nextflow-DW0Yq9a2.js +6 -0
  170. package/dist/nginx-Can2eAjw.js +8 -0
  171. package/dist/night-owl-Bm2rzalh.js +4 -0
  172. package/dist/nim-B3r2RtQZ.js +20 -0
  173. package/dist/nix-Cg5uV_xg.js +6 -0
  174. package/dist/nord-CC5OiUXg.js +4 -0
  175. package/dist/nushell-BfRnzRWn.js +6 -0
  176. package/dist/objective-c-BGg9R27G.js +6 -0
  177. package/dist/objective-cpp-CJ3y3V_5.js +6 -0
  178. package/dist/ocaml-BZLsfx_o.js +6 -0
  179. package/dist/one-dark-pro-D7-kP8fv.js +4 -0
  180. package/dist/one-light-D9sNaUtq.js +4 -0
  181. package/dist/pascal-l2bqd7Dz.js +6 -0
  182. package/dist/perl-DaMQyPwp.js +16 -0
  183. package/dist/php-BL3EfPBi.js +18 -0
  184. package/dist/plastic-CSTz3KZp.js +4 -0
  185. package/dist/plsql-oVq_K_wH.js +6 -0
  186. package/dist/po-5jaeIyVd.js +6 -0
  187. package/dist/poimandres-C-VADXHD.js +4 -0
  188. package/dist/polar-wcLp8ci7.js +6 -0
  189. package/dist/postcss-BZ3MNRIJ.js +6 -0
  190. package/dist/powerquery-CgRa2XRw.js +6 -0
  191. package/dist/powershell-Diwyv8Eh.js +6 -0
  192. package/dist/prisma-COL_v1x4.js +6 -0
  193. package/dist/prolog-CuvJOxqT.js +6 -0
  194. package/dist/proto-o9HLmF90.js +6 -0
  195. package/dist/pug-HKe4Luo3.js +12 -0
  196. package/dist/puppet-wpGOnQp5.js +6 -0
  197. package/dist/purescript-B_1NgE2N.js +6 -0
  198. package/dist/python-xYxLFJY-.js +6 -0
  199. package/dist/qml-FlMIyjU9.js +8 -0
  200. package/dist/qmldir-BInDYbpo.js +6 -0
  201. package/dist/qss-D-h4NdUG.js +6 -0
  202. package/dist/r-F-9I-ITZ.js +6 -0
  203. package/dist/racket-BoD1TBFT.js +6 -0
  204. package/dist/raku-IaYcw19m.js +6 -0
  205. package/dist/razor-CeqqNtyB.js +10 -0
  206. package/dist/red-7y8PH7HH.js +4 -0
  207. package/dist/reg-CMUdAgIP.js +6 -0
  208. package/dist/regexp-GiFkbxS-.js +6 -0
  209. package/dist/rel-BaRn3QX7.js +6 -0
  210. package/dist/riscv-B9V3SsvW.js +6 -0
  211. package/dist/rose-pine-DhT-HZE9.js +4 -0
  212. package/dist/rose-pine-dawn-DiCjL2i4.js +4 -0
  213. package/dist/rose-pine-moon-BNmGHlcn.js +4 -0
  214. package/dist/rst-C3D6-dqL.js +22 -0
  215. package/dist/ruby-DcPLUUK3.js +30 -0
  216. package/dist/rust-Pc7DCsZD.js +6 -0
  217. package/dist/sas-tDSYjXcL.js +8 -0
  218. package/dist/sass-iCyS6eP9.js +6 -0
  219. package/dist/scala-Cly-fENF.js +6 -0
  220. package/dist/scheme-Zi24oEYu.js +6 -0
  221. package/dist/scss-DhHc4lxB.js +8 -0
  222. package/dist/sdbl-BBamrXFL.js +6 -0
  223. package/dist/shaderlab-CvqEIoL0.js +8 -0
  224. package/dist/shellscript-Dn0-btNd.js +6 -0
  225. package/dist/shellsession-8OLo3sB6.js +8 -0
  226. package/dist/slack-dark-i7wN4OET.js +4 -0
  227. package/dist/slack-ochin-ndHf0LoP.js +4 -0
  228. package/dist/smalltalk-Cns31tKw.js +6 -0
  229. package/dist/snazzy-light-BlSJXAu4.js +4 -0
  230. package/dist/solarized-dark-UTmkh7lw.js +4 -0
  231. package/dist/solarized-light-BheCkDPT.js +4 -0
  232. package/dist/solidity-BG_k8fA_.js +6 -0
  233. package/dist/soy-EwHMOVPj.js +8 -0
  234. package/dist/sparql-DhuelBut.js +8 -0
  235. package/dist/splunk-CTqDjQdo.js +6 -0
  236. package/dist/sql-DCkt643-.js +6 -0
  237. package/dist/ssh-config-DHHGll-v.js +6 -0
  238. package/dist/stata-Dok6hMw0.js +8 -0
  239. package/dist/stylus-n_9f0QQ5.js +6 -0
  240. package/dist/svelte-01qw6Rxm.js +14 -0
  241. package/dist/swift-BAWqNR8A.js +6 -0
  242. package/dist/synthwave-84-NU3C_KFZ.js +4 -0
  243. package/dist/system-verilog-Cui-g-ut.js +6 -0
  244. package/dist/systemd-CsKYQIQK.js +6 -0
  245. package/dist/talonscript-D2dGh8FO.js +6 -0
  246. package/dist/tasl-D3W8HMV6.js +6 -0
  247. package/dist/tcl-2y0Fuc4S.js +6 -0
  248. package/dist/templ-Hmy8U0DD.js +12 -0
  249. package/dist/terraform-BGW6Oerf.js +6 -0
  250. package/dist/tex-mHs7a43s.js +8 -0
  251. package/dist/tokyo-night-LhP3hHhi.js +4 -0
  252. package/dist/toml-CQSfOn0e.js +6 -0
  253. package/dist/ts-tags-DYZ4SGcN.js +41 -0
  254. package/dist/tsv-BtvSkaG0.js +6 -0
  255. package/dist/tsx-DiGsgWT8.js +6 -0
  256. package/dist/turtle-BJ2wmjPc.js +6 -0
  257. package/dist/twig-BmytkGQV.js +18 -0
  258. package/dist/typescript-buWNZFwO.js +6 -0
  259. package/dist/typespec-bLbdsxJL.js +6 -0
  260. package/dist/typst-Y9_SmXTs.js +6 -0
  261. package/dist/v-wa8Orrdd.js +6 -0
  262. package/dist/vala-DRdriFr_.js +6 -0
  263. package/dist/vb-E2_-jk4M.js +6 -0
  264. package/dist/vendor-C6w9JpPA.js +72420 -0
  265. package/dist/{vendor-BH1c2Hhy.cjs → vendor-DAoHVNwq.cjs} +140 -241
  266. package/dist/verilog-B1iBoR5_.js +6 -0
  267. package/dist/vesper-CJsaOsSM.js +4 -0
  268. package/dist/vhdl-CRVaAhXk.js +6 -0
  269. package/dist/viml-B-zWOd7Z.js +6 -0
  270. package/dist/vitesse-black-BoGvW84i.js +4 -0
  271. package/dist/vitesse-dark-Cym-eLtO.js +4 -0
  272. package/dist/vitesse-light-CcmG315c.js +4 -0
  273. package/dist/vue-Bl1uVNsA.js +31 -0
  274. package/dist/vue-html-DHr5wjBG.js +10 -0
  275. package/dist/vyper-DWutKXpa.js +6 -0
  276. package/dist/wasm-Bv5f0gKv.js +6 -0
  277. package/dist/wasm-DQxwEHae.js +7 -0
  278. package/dist/wenyan-BMYnfus1.js +6 -0
  279. package/dist/wgsl-DnPoPGDU.js +6 -0
  280. package/dist/wikitext-CntM04PE.js +6 -0
  281. package/dist/wolfram-Ws5qPlX9.js +6 -0
  282. package/dist/xml-ChBsf5uy.js +8 -0
  283. package/dist/xsl-BefjlXrd.js +8 -0
  284. package/dist/yaml-Bbg74JKr.js +6 -0
  285. package/dist/zenscript-C0RKE4nU.js +6 -0
  286. package/dist/zig-D6SXBGNm.js +6 -0
  287. package/package.json +1 -1
  288. package/src/components/Model/NamedQueries.tsx +13 -13
  289. package/src/components/Model/SourcesExplorer.tsx +21 -41
  290. package/src/components/MutableNotebook/EditableMalloyCell.tsx +4 -22
  291. package/src/components/MutableNotebook/ModelPicker.tsx +31 -52
  292. package/src/components/MutableNotebook/MutableCell.tsx +229 -137
  293. package/src/components/MutableNotebook/MutableNotebook.tsx +102 -62
  294. package/src/components/Package/Package.tsx +1 -1
@@ -1,41 +1,43 @@
1
- import React, { useState } from "react";
2
- import { Suspense, lazy } from "react";
1
+ import CheckIcon from "@mui/icons-material/Check";
2
+ import CodeIcon from "@mui/icons-material/Code";
3
+ import EditOutlinedIcon from "@mui/icons-material/EditOutlined";
4
+ import LinkOutlinedIcon from "@mui/icons-material/LinkOutlined";
3
5
  import {
4
- Stack,
5
- Collapse,
6
- CardActions,
7
- CardContent,
8
- IconButton,
9
- Tooltip,
10
- Button,
11
6
  Box,
12
- DialogContent,
7
+ Button,
8
+ CardActions,
9
+ Collapse,
13
10
  Dialog,
14
11
  DialogActions,
12
+ DialogContent,
15
13
  DialogTitle,
14
+ IconButton,
15
+ Stack,
16
+ Tooltip,
17
+ Typography,
16
18
  } from "@mui/material";
17
- import { StyledCard } from "../styles";
19
+ import MDEditor from "@uiw/react-md-editor";
18
20
  import Markdown from "markdown-to-jsx";
19
- import { Typography } from "@mui/material";
20
- import { Divider } from "@mui/material";
21
+ import React, { useEffect, useState } from "react";
21
22
  import { highlight } from "../highlighter";
22
- import { useEffect } from "react";
23
- import CodeIcon from "@mui/icons-material/Code";
24
- import LinkOutlinedIcon from "@mui/icons-material/LinkOutlined";
25
- import MDEditor from "@uiw/react-md-editor";
26
- import { EditableMalloyCell } from "./EditableMalloyCell";
23
+ import {
24
+ emptyQueryExplorerResult,
25
+ QueryExplorerResult,
26
+ SourceAndPath,
27
+ } from "../Model/SourcesExplorer";
27
28
  import { NotebookCellValue } from "../NotebookManager";
28
- import { SourceAndPath } from "../Model/SourcesExplorer";
29
29
  import ResultContainer from "../RenderedResult/ResultContainer";
30
+ import { StyledCard } from "../styles";
31
+ import { EditableMalloyCell } from "./EditableMalloyCell";
30
32
 
31
33
  interface NotebookCellProps {
32
34
  cell: NotebookCellValue;
33
35
  expandCodeCell?: boolean;
34
36
  expandEmbedding?: boolean;
37
+ hideEmbeddingIcons?: boolean;
35
38
  editingMalloy?: boolean;
36
39
  editingMarkdown?: boolean;
37
40
  sourceAndPaths: SourceAndPath[];
38
- newCell: React.ReactNode;
39
41
  onCellChange: (cell: NotebookCellValue) => void;
40
42
  onClose: () => void;
41
43
  onEdit: () => void;
@@ -46,10 +48,10 @@ export function MutableCell({
46
48
  cell,
47
49
  expandCodeCell,
48
50
  expandEmbedding,
51
+ hideEmbeddingIcons,
49
52
  editingMalloy,
50
53
  editingMarkdown,
51
54
  sourceAndPaths,
52
- newCell,
53
55
  onCellChange,
54
56
  onClose,
55
57
  onEdit,
@@ -63,6 +65,9 @@ export function MutableCell({
63
65
  React.useState<string>();
64
66
  const [highlightedEmbedCode, setHighlightedEmbedCode] =
65
67
  React.useState<string>();
68
+ const [query, setQuery] = React.useState<QueryExplorerResult>(
69
+ emptyQueryExplorerResult(),
70
+ );
66
71
 
67
72
  useEffect(() => {
68
73
  if (!cell.isMarkdown)
@@ -85,6 +90,23 @@ export function MutableCell({
85
90
  };
86
91
  const noSources = sourceAndPaths.length === 0;
87
92
 
93
+ const saveResult = (modelPath: string, sourceName: string) => {
94
+ // Convert the results of the Query Explorer into
95
+ // the stringified JSON objects that are stored in the cell.
96
+ onCellChange({
97
+ ...cell,
98
+ value: query.query,
99
+ result: query.malloyResult
100
+ ? JSON.stringify(query.malloyResult)
101
+ : undefined,
102
+ queryInfo: query.malloyQuery
103
+ ? JSON.stringify(query.malloyQuery)
104
+ : undefined,
105
+ sourceName,
106
+ modelPath,
107
+ });
108
+ };
109
+
88
110
  const deleteButton = (
89
111
  <Tooltip title="Delete Cell">
90
112
  <IconButton size="small" onClick={() => setDeleteDialogOpen(true)}>
@@ -126,17 +148,20 @@ export function MutableCell({
126
148
  );
127
149
  const buttons = cell.isMarkdown ? (
128
150
  <>
129
- {deleteButton}
130
- {(editingMarkdown && (
131
- <Button variant="outlined" size="small" onClick={onClose}>
132
- Save
133
- </Button>
134
- )) || (
135
- <Button variant="outlined" size="small" onClick={onEdit}>
136
- Edit
137
- </Button>
151
+ {editingMarkdown ? (
152
+ <Tooltip title="Save">
153
+ <IconButton size="small" onClick={onClose}>
154
+ <CheckIcon />
155
+ </IconButton>
156
+ </Tooltip>
157
+ ) : (
158
+ <Tooltip title="Edit">
159
+ <IconButton size="small" onClick={onEdit}>
160
+ <EditOutlinedIcon />
161
+ </IconButton>
162
+ </Tooltip>
138
163
  )}
139
- {newCell}
164
+ {!editingMarkdown && deleteButton}
140
165
  </>
141
166
  ) : (
142
167
  <>
@@ -152,7 +177,7 @@ export function MutableCell({
152
177
  </IconButton>
153
178
  </Tooltip>
154
179
  )}
155
- {!editingMalloy && cell.result && (
180
+ {!hideEmbeddingIcons && !editingMalloy && cell.result && (
156
181
  <Tooltip
157
182
  title={embeddingExpanded ? "Hide Embedding" : "View Embedding"}
158
183
  >
@@ -166,45 +191,49 @@ export function MutableCell({
166
191
  </IconButton>
167
192
  </Tooltip>
168
193
  )}
169
- {deleteButton}
170
-
194
+ {editingMalloy && (
195
+ <Tooltip title="Save">
196
+ <IconButton
197
+ size="small"
198
+ onClick={() => {
199
+ saveResult(cell.modelPath, cell.sourceName);
200
+ onClose();
201
+ }}
202
+ >
203
+ <CheckIcon />
204
+ </IconButton>
205
+ </Tooltip>
206
+ )}
171
207
  {!editingMalloy && (
172
- <Button variant="outlined" size="small" onClick={onEdit}>
173
- Edit
174
- </Button>
208
+ <Tooltip title="Edit">
209
+ <IconButton size="small" onClick={onEdit}>
210
+ <EditOutlinedIcon />
211
+ </IconButton>
212
+ </Tooltip>
175
213
  )}
176
- {newCell}
214
+ {!editingMalloy && deleteButton}
177
215
  </>
178
216
  );
217
+
179
218
  const buttonStack = (
180
- <>
181
- <Stack sx={{ flexDirection: "row", justifyContent: "right" }}>
182
- <CardActions
183
- sx={{
184
- padding: "4px",
185
- mb: "auto",
186
- mt: "auto",
187
- }}
188
- >
189
- {buttons}
190
- </CardActions>
191
- </Stack>
192
- <Box
193
- sx={{
194
- borderBottom: "1px solid #e0e0e0",
195
- mx: "10px",
196
- width: "auto",
197
- }}
198
- />
199
- </>
219
+ <Stack
220
+ sx={{
221
+ flexDirection: "row",
222
+ justifyContent: "right",
223
+ mt: "20px",
224
+ mb: "5px",
225
+ mx: "5px",
226
+ }}
227
+ >
228
+ <CardActions>{buttons}</CardActions>
229
+ </Stack>
200
230
  );
201
231
  return (
202
- <StyledCard variant="outlined" sx={{ marginTop: "10px" }}>
203
- {(cell.isMarkdown && (
204
- // <StyledCard variant="outlined" sx={{ border: 0 }}>
232
+ <>
233
+ {buttonStack}
234
+ {cell.isMarkdown ? (
205
235
  <>
206
- {buttonStack}
207
- {editingMarkdown && (
236
+ {editingMarkdown ? (
208
237
  <MDEditor
209
238
  value={value}
210
239
  preview="edit"
@@ -213,96 +242,159 @@ export function MutableCell({
213
242
  updateMarkdown(newValue);
214
243
  }}
215
244
  />
245
+ ) : (
246
+ <StyledCard variant="outlined" sx={{ borderRadius: 0 }}>
247
+ <Box
248
+ sx={{
249
+ px: 0.5,
250
+ pt: 0,
251
+ mt: 0,
252
+ "& h1, & h2, & h3, & h4, & h5, & h6": {
253
+ mt: 0.5,
254
+ mb: 0.5,
255
+ },
256
+ "& p": { mt: 0.5, mb: 0.5 },
257
+ "& ul, & ol": { mt: 0.5, mb: 0.5 },
258
+ "& li": { mt: 0, mb: 0 },
259
+ "& pre, & code": { mt: 0.5, mb: 0.5 },
260
+ "& blockquote": { mt: 0.5, mb: 0.5 },
261
+ }}
262
+ >
263
+ {value ? (
264
+ <Markdown>{value}</Markdown>
265
+ ) : (
266
+ <>
267
+ <Typography
268
+ sx={{
269
+ p: 2,
270
+ textAlign: "center",
271
+ variant: "subtitle2",
272
+ fontWeight: "medium",
273
+ }}
274
+ >
275
+ Markdown is empty
276
+ </Typography>
277
+ <Typography
278
+ sx={{
279
+ mb: 2,
280
+ textAlign: "center",
281
+ variant: "body2",
282
+ }}
283
+ >
284
+ Click the edit button and add some markdown.
285
+ </Typography>
286
+ </>
287
+ )}
288
+ </Box>
289
+ </StyledCard>
216
290
  )}
217
- <Box
218
- sx={{
219
- px: 0.5,
220
- pt: 0,
221
- mt: 0,
222
- "& h1, & h2, & h3, & h4, & h5, & h6": { mt: 0.5, mb: 0.5 },
223
- "& p": { mt: 0.5, mb: 0.5 },
224
- "& ul, & ol": { mt: 0.5, mb: 0.5 },
225
- "& li": { mt: 0, mb: 0 },
226
- "& pre, & code": { mt: 0.5, mb: 0.5 },
227
- "& blockquote": { mt: 0.5, mb: 0.5 },
228
- }}
229
- >
230
- <Markdown>{value}</Markdown>
231
- </Box>
232
291
  </>
233
- )) ||
234
- (!cell.isMarkdown && (
235
- <>
236
- {buttonStack}
237
- <Collapse in={embeddingExpanded} timeout="auto" unmountOnExit>
238
- <Divider />
239
- <Stack
292
+ ) : (
293
+ <>
294
+ <Collapse in={embeddingExpanded} timeout="auto" unmountOnExit>
295
+ <Stack
296
+ sx={{
297
+ p: "10px",
298
+ borderRadius: 0,
299
+ flexDirection: "row",
300
+ justifyContent: "space-between",
301
+ }}
302
+ >
303
+ <Typography
304
+ component="div"
240
305
  sx={{
241
- p: "10px",
242
- borderRadius: 0,
243
- flexDirection: "row",
244
- justifyContent: "space-between",
306
+ fontSize: "12px",
307
+ "& .line": { textWrap: "wrap" },
245
308
  }}
246
- >
247
- <Typography
248
- component="div"
249
- sx={{
250
- fontSize: "12px",
251
- "& .line": { textWrap: "wrap" },
252
- }}
253
- dangerouslySetInnerHTML={{
254
- __html: highlightedEmbedCode,
255
- }}
256
- />
257
- </Stack>
258
- </Collapse>
259
- <Collapse in={codeExpanded} timeout="auto" unmountOnExit>
260
- <Divider />
261
- <Stack
309
+ dangerouslySetInnerHTML={{
310
+ __html: highlightedEmbedCode,
311
+ }}
312
+ />
313
+ </Stack>
314
+ </Collapse>
315
+ <Collapse in={codeExpanded} timeout="auto" unmountOnExit>
316
+ <Stack
317
+ sx={{
318
+ p: "10px",
319
+ borderRadius: 0,
320
+ flexDirection: "row",
321
+ justifyContent: "space-between",
322
+ }}
323
+ >
324
+ <Typography
325
+ component="div"
326
+ className="content"
262
327
  sx={{
263
- p: "10px",
264
- borderRadius: 0,
265
- flexDirection: "row",
266
- justifyContent: "space-between",
328
+ fontSize: "12px",
329
+ "& .line": { textWrap: "wrap" },
267
330
  }}
268
- >
331
+ dangerouslySetInnerHTML={{
332
+ __html: highlightedMalloyCode,
333
+ }}
334
+ />
335
+ </Stack>
336
+ </Collapse>
337
+ {editingMalloy &&
338
+ (noSources ? (
339
+ <>
269
340
  <Typography
270
- component="div"
271
- className="content"
272
341
  sx={{
273
- fontSize: "12px",
274
- "& .line": { textWrap: "wrap" },
275
- }}
276
- dangerouslySetInnerHTML={{
277
- __html: highlightedMalloyCode,
342
+ p: 2,
343
+ textAlign: "center",
344
+ variant: "subtitle2",
345
+ fontWeight: "medium",
278
346
  }}
279
- />
280
- </Stack>
281
- </Collapse>
282
- {editingMalloy &&
283
- (noSources ? (
284
- <Typography>
285
- No Model Imports. Please add a model import above.
347
+ >
348
+ No Model Imports
286
349
  </Typography>
287
- ) : (
288
- <EditableMalloyCell
289
- sourceAndPaths={sourceAndPaths}
290
- onCellChange={onCellChange}
291
- onClose={onClose}
292
- cell={cell}
293
- />
294
- ))}
295
- {!editingMalloy && cell.result && (
350
+ <Typography
351
+ sx={{ mb: 2, textAlign: "center", variant: "body2" }}
352
+ >
353
+ Please add a model import above.
354
+ </Typography>
355
+ </>
356
+ ) : (
357
+ <EditableMalloyCell
358
+ sourceAndPaths={sourceAndPaths}
359
+ onChange={(query) => {
360
+ setQuery(query);
361
+ }}
362
+ cell={cell}
363
+ />
364
+ ))}
365
+ {!editingMalloy && cell.result && (
366
+ <StyledCard variant="outlined" sx={{ borderRadius: 0 }}>
296
367
  <ResultContainer
297
368
  result={cell.result}
298
369
  minHeight={300}
299
370
  maxHeight={800}
300
371
  />
301
- )}
302
- </>
303
- ))}
372
+ </StyledCard>
373
+ )}
374
+ {!editingMalloy && !cell.result && (
375
+ <StyledCard variant="outlined" sx={{ borderRadius: 0 }}>
376
+ <Typography
377
+ sx={{
378
+ p: 2,
379
+ textAlign: "center",
380
+ variant: "subtitle2",
381
+ fontWeight: "medium",
382
+ }}
383
+ >
384
+ Explore is empty
385
+ </Typography>
386
+ <Typography
387
+ sx={{ mb: 2, textAlign: "center", variant: "body2" }}
388
+ >
389
+ Click the edit button and explore the data in the model
390
+ to see results.
391
+ </Typography>
392
+ </StyledCard>
393
+ )}
394
+ </>
395
+ )}
304
396
  {deleteDialogOpen && deleteDialog}
305
- </StyledCard>
397
+ </>
306
398
  );
307
399
  }
308
400