@malloy-publisher/sdk 0.0.76 → 0.0.78
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/dist/RenderedResult-BAZuT25g.js +117 -0
- package/dist/RenderedResult-DW6glKC-.cjs +1 -0
- package/dist/components/Model/SourcesExplorer.d.ts +1 -1
- package/dist/components/Notebook/NotebookCell.d.ts +1 -2
- package/dist/components/Package/PackageProvider.d.ts +1 -1
- package/dist/components/QueryResult/QueryResult.d.ts +11 -1
- package/dist/components/RenderedResult/RenderedResult.d.ts +3 -4
- package/dist/index.cjs.js +108 -45
- package/dist/index.es.js +26938 -8206
- package/dist/sdk.css +1 -1
- package/package.json +1 -1
- package/src/components/Model/ModelCell.tsx +9 -12
- package/src/components/Model/SourcesExplorer.tsx +89 -23
- package/src/components/MutableNotebook/MutableCell.tsx +3 -3
- package/src/components/Notebook/Notebook.tsx +0 -13
- package/src/components/Notebook/NotebookCell.tsx +9 -2
- package/src/components/Package/PackageProvider.tsx +2 -2
- package/src/components/QueryResult/QueryResult.tsx +70 -1
- package/src/components/RenderedResult/RenderedResult.tsx +124 -101
- package/dist/RenderedResult-C4b9CwSp.cjs +0 -1
- package/dist/RenderedResult-DXlUZo0k.js +0 -79
package/dist/sdk.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
@layer priority1,priority2,priority3,priority4,priority5,priority6;@layer priority1{:root,.mly16bcggl{--mly1rtpqm4:rgba(10, 19, 23, .2);--mlywmj25p:rgba(121, 82, 255, .2);--mly1f95ebd:rgba(36, 187, 94, .2);--mly1jva6ta:rgba(3, 167, 215, .2);--mly1yr7ch6:rgba(241, 244, 247, 1);--mly1bs2mf7:rgba(0, 130, 251, .2);--mlywj8cgu:rgba(11, 153, 31, .2);--mlyhsum04:rgba(226, 164, 0, .2);--mly19gk0g3:rgba(227, 25, 59, .2);--mlyrbis2b:rgba(204, 211, 219, 1);--mly1eayp21:rgba(230, 235, 239, 1);--mly1bn1nfc:rgba(37, 54, 63, 1)}:root,.mly182du4u{--mly231nev:rgba(10, 19, 23, 1);--mly1i3blw4:rgba(78, 96, 111, 1);--mly16ir2n5:rgba(164, 176, 188, 1);--mly883cce:rgba(0, 100, 224, 1);--mlyy3jzoq:rgba(255, 255, 255, 1);--mly7qnfvx:rgba(10, 19, 23, 1);--mly3ib3qi:rgba(62, 6, 151, 1);--mlyndhcph:rgba(9, 68, 31, 1);--mlykotp7t:rgba(1, 73, 117, 1);--mlyf25c1a:rgba(66, 133, 244, 1)}:root,.mlyacbved{--mly8s4nhd:rgba(10, 19, 23, 1);--mly130oqjo:rgba(78, 96, 111, 1);--mlywh4rgx:rgba(164, 176, 188, 1);--mly1gq6bli:rgba(255, 255, 255, 1);--mly1jphivy:rgba(164, 176, 188, 1);--mly6i1qgk:rgba(121, 82, 255, 1);--mly1css67u:rgba(7, 109, 41, 1);--mly1fea1fg:rgba(2, 141, 193, 1);--mlyz9tc12:rgba(233, 175, 8, 1);--mly1dryxz7:rgba(0, 100, 224, 1);--mly176ansx:rgba(13, 134, 38, 1);--mlybq1dnb:rgba(227, 25, 59, 1)}:root,.mlyugude9{--mlyiz2tia:#0064E0;--mly1nffz32:#0082FB32;--mly1mq821i:white;--mlyz6dflh:rgba(0, 0, 0, .1);--mly4a29vv:#0000000D;--mlyhoywqa:#050505;--mly1qcfjts:#A4B0BC}:root,.mly18uf1kx{--mlynfhokh:none}:root,.mly11fl7i8{--mlyvpnzvp:none}.mly10cf5cp{--mly10mhzaa:var(--mly1f95ebd)}.mlykvi9ht{--mly10mhzaa:var(--mly1jva6ta)}.mly1rve117{--mly10mhzaa:var(--mly1rtpqm4)}.mlyihc5ie{--mly10mhzaa:var(--mlywmj25p)}.mly8bgh0r{--mly13n7235:var(--mly231nev)}.mly1r5zvhd{--mly13n7235:var(--mly3ib3qi)}.mlys5r2en{--mly13n7235:var(--mlykotp7t)}.mly1u6t2w6{--mly13n7235:var(--mlyndhcph)}.mlynu5hmx{--mly1by112x:0}.mly15rdse5{--mly1hmjrsb:var(--mly8s4nhd)}.mly5xbp4t{--mly1hpdckv:var(--mly231nev)}.mly3mt86g{--mly1hpdckv:var(--mlyy3jzoq)}.mly5deeek{--mly1ltarg1:var(--mly231nev)}.mlybcavtu{--mly1ojyoay:var(--mly231nev)}.mlywis56f{--mly1ojyoay:var(--mly3ib3qi)}.mly1eg6ybj{--mly1ojyoay:var(--mlykotp7t)}.mlyy280wj{--mly1ojyoay:var(--mlyndhcph)}.mly7ouyw2{--mly5m5edj:var(--mly1i3blw4)}.mlym9y5t7{--mlynfhokh:block}.mly28fmrt{--mlynfhokh:none}.mly1bo1i26{--mlyri8z08:0}.mly11ogjb6{--mlyvpnzvp:none}.mlyf8wvcd{--mlyvygx4q:var(--mly1css67u)}.mlyrtwgpv{--mlyvygx4q:var(--mly1fea1fg)}.mly1f8soc4{--mlyvygx4q:var(--mly6i1qgk)}.mly1izbou4{--mlyvygx4q:var(--mly8s4nhd)}.mly1n5rdk7{--mlyxo3nik:var(--mly1gq6bli)}.mlypfd894{--mlyxo3nik:var(--mly8s4nhd)}@keyframes mlyqng64z-B{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.mly1z060rf:is([data-disabled]){--mly1hmjrsb:var(--mlywh4rgx)}.mly1jacekv:is([data-disabled]){--mly1ltarg1:var(--mly16ir2n5)}.mly7h4d18:is([data-disabled]){--mly5m5edj:var(--mly16ir2n5)}.mly1iu3zmn:disabled{--mly1hpdckv:var(--mly1i3blw4)}.mly13vk70h:disabled{--mly1hpdckv:var(--mlyy3jzoq)}.mly1dsjhx:disabled{--mlyxo3nik:var(--mly1gq6bli)}.mlyiv1q3g:disabled{--mlyxo3nik:var(--mlywh4rgx)}.mly1u5txqc:hover{--mly1by112x:.3}.mly1x0xcia:hover{--mlynfhokh:block}.mly1fzkygm:hover{--mlyri8z08:.3}.mly157rht3:hover{--mlyvpnzvp:inline-flex}}@layer priority2{.mly1o4sr5b{background:#0a1317}.mly3j5mvw{background:#d0d3d7}.mlyo6guvx,.mly17eh757{background:#fff}.mly5uxqc1{background:#0000}.mlyhcrij8{background:#0064e0}.mly1xnbgy5{background:#ccd3db}.mlygqa5hp{background:#e6ebef}.mlyzy8d55{background:#ffffff80}.mlyotlr4g{background:#fff}.mly1md70p1{background:transparent}.mlysu8s4a{background:var(--mly10mhzaa)}.mly1np9qvj{background:var(--mly1eayp21)}.mly1b4wx6v{background:var(--mly1mq821i)}.mly16o7sp0{background:var(--mly1nffz32)}.mlyzkdzjc{border:1px solid #CCD3DB}.mly2yh2zd{border:1px solid #e0e0e0}.mly8fuzfi{border:1px solid #efefef}.mly1dc9p4k{border:1px solid red}.mly27xtdb{border:1px solid rgb(239,239,239)}.mly520xni{border:1px solid rgba(204,211,219,1)}.mlyvckdp7{border:1px solid rgba(230,235,239,1)}.mlyfj9a5l{border:1px solid transparent}.mly1vspu6z{border:1px solid var(--malloy-composer-form-background,#efefef)}.mlyss3vti{border:1px solid var(--malloy-composer-form-border,#ececed)}.mlyv3vvaf{border:1px solid var(--malloy-composer-form-focus,#4285f4)}.mly15q0wj1{border:1px solid var(--malloy-composer-menu-border,#ececed)}.mly1gs6z28{border:none}.mly15r89dc{grid-area:1 / 1}.mly1ghz6dp{margin:0}.mlynfbntj{margin:5px 0}.mly16zck5j{margin:5px}.mlykib98w{margin:8px}.mly1bpp3o7{margin:auto}.mlywp4ipm{padding:0 24px 24px}.mlyehqz9p{padding:0 4px}.mly1l4tkcb{padding:0 8px 8px}.mly1717udv{padding:0}.mly1b4vry6{padding:10px 0}.mlyc7ga6q{padding:12px}.mly1tamke2{padding:16px}.mly1e41zw8{padding:1px 5px}.mlyfvt8nb{padding:2px 12px 2px 6px}.mlybsehbd{padding:2px 3px}.mlyxzb6uj{padding:2px 4px}.mly195ery5{padding:3.75px 7px}.mly1gqu590{padding:3px 10px}.mly34lxi1{padding:3px 3px 3px 10px}.mly92jh8x{padding:4px 0 8px}.mlyztvwtv{padding:4px 0}.mly1fut7tt{padding:4px 12px 12px}.mlytdwleo{padding:4px 12px}.mly9cpjcd,.mlydqdrvq{padding:4px 8px}.mlyfawy5m{padding:4px}.mly17qkr04{padding:5px 0}.mly36usyh{padding:5px 10px}.mly14odnwx{padding:5px}.mly153ncpu{padding:8px 12px}.mlye8ttls{padding:8px}.mly1bw6wve:is([data-highlighted]){background:#0000000d}.mlyamyxth:is([data-state=checked]){background:#0082fb33}.mlyejs3c0:is([data-highlighted]):is([data-state=checked]){background:#0082fb4d}.mly14hn1a8:hover{background:#0000000d}.mly1uceoyp:hover{background:#dde2e8}.mly1vdl2d1:hover{background:#0457cb}.mlywghvya:active{background:#0000001a}.mly1u4cpcs:active{background:#004cbc}.mly1cncicd:active{background:#ccd3db}}@layer priority3{.mly1akygb0{border-color:none}.mly1y5yj0f{border-color:#0064e0}.mly10bk7bj{border-color:var(--malloy-composer-focus,#c3d7f7)}.mly17v018m{border-color:var(--mlyrbis2b)}.mly11zuszs{border-radius:0 0 10px 10px}.mly19ctu66{border-radius:0 4px 4px 0}.mlyq516e8{border-radius:10px 10px 0 0}.mly1q4ynmn{border-radius:10px}.mly4pepcl{border-radius:12px}.mly18zih8k{border-radius:3px}.mlytah5vv{border-radius:4px 0 0 4px}.mly12oqio5{border-radius:4px}.mly1f96onm{border-radius:50px}.mly1sxf85j{border-radius:5px}.mly1kogg8i{border-radius:6px}.mlyur7f20{border-radius:8px}.mly10hpsqq{border-radius:9999px}.mly1pjcqnp{border-radius:inherit}.mlyfuqftd{border-right:1px solid #C8CCD2}.mly1roky18{border-right:1px solid rgba(204,211,219,1)}.mlyng3xce{border-style:none}.mly1y0btm7{border-style:solid}.mly77krkw{border-top:1px solid var(--malloy-composer-form-border,#ececec)}.mlyc342km{border-width:0}.mlymkeg23{border-width:1px}.mly3psx0u{flex:0 0 auto}.mly98rzlu{flex:1}.mly883omv{gap:10px}.mlyou54vl{gap:16px}.mly12mrbbr{gap:1px}.mly1665zp3{gap:24px}.mly195vfkc{gap:2px}.mly1ed6fcf{gap:3px}.mly1jnr06f{gap:4px}.mly1nejdyq{gap:5px}.mly167g77z{gap:8px}.mly1a2a7pz{outline:none}.mlyysyzu8{overflow:auto}.mlyb3r6kr{overflow:hidden}.mly1rea2x4{overflow:visible}.mly1ku5rj1{place-items:center}.mly1hl2dhg{text-decoration:none}.mly14znju7{transition:opacity .5s ease}.mly1fxp9ov:hover{border-color:var(--malloy-composer-focus,#c3d7f7)}.mlyetl2wx:focus{border-color:#4285f4}}@layer priority4{.mly1ua5tub{-webkit-box-orient:vertical}.mly1gzmk7r{-webkit-line-clamp:3}.mly6s0dn4{align-items:center}.mlypqajaz{align-items:end}.mly1cy8zhl{align-items:flex-start}.mly7a106z{align-items:start}.mly7v9bd0{animation-duration:.75s}.mlya4qsjk{animation-iteration-count:infinite}.mly8jsasv{animation-name:mlyqng64z-B}.mly1esw782{animation-timing-function:linear}.mlylp1x4z{backface-visibility:hidden}.mlygmb8sa{background-color:#e6ebef}.mly83z2og{background-color:#fff}.mly1vzefiq{background-color:#f0f6ff}.mlyy9rfsq{background-color:#e6ebef}.mly10cdfl8{background-color:#f1f4f7}.mly1gzqxud{background-color:#fff}.mly1jmk7v{background-color:#25363f}.mlyjbqb8w{background-color:transparent}.mly1jjku57{background-color:var(--malloy-composer-form-disabledBackground,#f6f6f6)}.mly6wxqrg{background-color:var(--malloy-composer-form-focusBackground,#f0f6ff)}.mly12azwz9{background-color:var(--malloy-composer-menu-background,white)}.mlyrkwa2d{background-color:var(--mly19gk0g3)}.mly1pnbjq1{background-color:var(--mly1bs2mf7)}.mly12nb83b{background-color:var(--mly1yr7ch6)}.mly1x7w6om{background-color:var(--mlyhsum04)}.mly1x3oq6j{background-color:var(--mlywj8cgu)}.mly12peec7{background-color:#fff}.mly1mwwwfo{border-collapse:collapse}.mlygbc89k{box-shadow:0 0 0 1px #ccd3db}html:not([dir=rtl]) .mlyn8fsvk{box-shadow:0 0 0 1px #0064e0 inset,0 0 0 3px #0171e34d inset}html[dir=rtl] .mlyn8fsvk{box-shadow:0 0 0 1px #0064e0 inset,0 0 0 3px #0171e34d inset}.mlybwr872{box-shadow:0 0 0 2px #0064e0}html:not([dir=rtl]) .mly1kmqopl{box-shadow:0 0 5px #0000001a,0 0 1px #0000001a}html[dir=rtl] .mly1kmqopl{box-shadow:0 0 5px #0000001a,0 0 1px #0000001a}html:not([dir=rtl]) .mly5n1uv4{box-shadow:0 1px 2px #0000001a,0 2px 12px #0000001a}html[dir=rtl] .mly5n1uv4{box-shadow:0 1px 2px #0000001a,0 2px 12px #0000001a}.mly1a3rnpv{box-shadow:0 1px 5px 1px #0000001a}html:not([dir=rtl]) .mly17fq3gk{box-shadow:0 2px 12px #0000001a,0 1px 2px #0000001a}html[dir=rtl] .mly17fq3gk{box-shadow:0 2px 12px #0000001a,0 1px 2px #0000001a}.mlyx2l43u{box-shadow:0 2px 12px 0 var(--mlyz6dflh)}.mly1gnnqk1{box-shadow:none}.mlyg48p7p{box-shadow:#0171e34d 0 0 0 3px inset}.mly9f619{box-sizing:border-box}.mlyayvuls{color:#000}.mly1aejobo{color:#0064e0}.mly1v5ugh9{color:#505050}.mly358b0h{color:#909090}.mly1e2nbdu{color:red}.mly198oq2i{color:#3e9efb!important}.mlyizdh9v{color:#5f6368}.mlykfrnou{color:#0064e0}.mlyj5j7qc{color:#647685}.mly1rs82da{color:#dde2e8}.mly183j0n7{color:#e4e6eb}.mly1dhlylr{color:#050505}.mly19co3pv{color:transparent}.mly1pc1dlx{color:var(--malloy-composer-form-foreground,#5f6368)}.mly1r0d382{color:var(--mly130oqjo)}.mly1xre2ib{color:var(--mly13n7235)}.mlywzxoxx{color:var(--mly16ir2n5)}.mly1l99qkd{color:var(--mly176ansx)}.mly1evcnq1{color:var(--mly1css67u)}.mly1tw9ct1{color:var(--mly1dryxz7)}.mly1h091fy{color:var(--mly1fea1fg)}.mly1kiansi{color:var(--mly1gq6bli)}.mly1mguc6l{color:var(--mly1hmjrsb)}.mlyaerthn{color:var(--mly1hpdckv)}.mly9dwj6z{color:var(--mly1i3blw4)}.mlyann5r3{color:var(--mly1jphivy)}.mly12lmysb{color:var(--mly1ltarg1)}.mly1ard1hs{color:var(--mly1ojyoay)}.mly1jwwhvr{color:var(--mly1qcfjts)}.mly1ue28sr{color:var(--mly231nev)}.mlyydnxy5{color:var(--mly3ib3qi)}.mly15jt5ur{color:var(--mly5m5edj)}.mly1ywypuw{color:var(--mly6i1qgk)}.mly1p68tcb{color:var(--mly8s4nhd)}.mly109d434{color:var(--mlybq1dnb)}.mly1nwq7qm{color:var(--mlyf25c1a)}.mly1q8pm5h{color:var(--mlyhoywqa)}.mlywn9h7t{color:var(--mlyvygx4q)}.mly16un6j3{color:var(--mlywh4rgx)}.mlyuk6yi3{color:var(--mlyxo3nik)}.mly7neac5{color:var(--mlyz9tc12)}.mlyt0e3qv{cursor:default}.mly7eptgl{cursor:ew-resize}.mly1ipiool{cursor:initial}.mly1ypdohk{cursor:pointer}.mly104kibb{display:-webkit-box}.mly1lliihq{display:block}.mly78zum5{display:flex}.mlyrvj5dj{display:grid}.mly1rg5ohu{display:inline-block}.mly3nfvp2{display:inline-flex}.mlywz0xwf{display:inline-grid}.mly1s85apg{display:none}.mly1vsucm1{display:var(--mlynfhokh)}.mly2b4tyj{display:var(--mlyvpnzvp)}.mlydt5ytf{flex-direction:column}.mly1q0g3np{flex-direction:row}.mly1iyjqo2{flex-grow:1}.mly2lah0s{flex-shrink:0}.mly1a02dak{flex-wrap:wrap}.mly6icuqf{font-family:sans-serif}.mly1rj5sg5{font-family:SF Pro Text,-apple-system,system-ui,sans-serif}.mly12xrqmb{font-family:var(--malloy-composer-fontFamily,sans-serif)}.mlyfifm61{font-size:12px}.mlyif65rj{font-size:14px}.mly1j61zf2{font-size:16px}.mlymhiqyu{font-size:var(--malloy-composer-fontSize,14px)}.mly64z8l9{font-size:var(--malloy-composer-menu-fontSize,14px)}.mly1j61x8r{font-style:normal}.mlyo1l8bm{font-weight:400}.mly1s688f{font-weight:600}.mly1xlr1w8,.mly117nqv4{font-weight:700}.mly1fcty0u{font-weight:400}.mly1mt1orb{grid-auto-flow:column}.mly15396mt{grid-template-columns:100px auto 100px}.mly52fmzj{grid-template-columns:1fr auto}.mly1g3yg12{grid-template-columns:auto 1fr auto}.mlybyjr8{grid-template-columns:auto}.mly17bnpya{grid-template-columns:min-content 1fr}.mlyl56j7k{justify-content:center}.mly13a6bvl{justify-content:flex-end}.mly1nhvcw1{justify-content:flex-start}.mly1rfj78v{justify-content:left}.mly1lvf691{justify-content:right}.mly1l1ennw{justify-content:space-around}.mly1qughib{justify-content:space-between}.mlylqzeqv{justify-content:start}.mly11e9jwx{leading-trim:both}.mly1gu5id8{letter-spacing:-.24px}.mly12oo3zp{letter-spacing:0}.mly1d3mw78{line-height:16px}.mly1fc57z9{line-height:20px}.mly1o2sk6j{line-height:24px}.mly1vqud6w{opacity:70%}.mly1d3ksz1{opacity:var(--mly1by112x)}.mly15sj6ns{opacity:var(--mlyri8z08)}.mly47corl{pointer-events:none}.mly10l6tqk{position:absolute}.mlyixxii4{position:fixed}.mly1n2onr6{position:relative}.mly2b8uid{text-align:center}.mlydpxx8g{text-align:left}.mly1vqy1sf{text-edge:cap}.mlylyipyv{text-overflow:ellipsis}.mly6mezaz{text-transform:none}.mly87ps6o{user-select:none}.mlyxymvpz{vertical-align:middle}.mly1n8ftqi{vertical-align:text-top}.mly16dsc37{vertical-align:top}.mlylshs6z{visibility:hidden}.mlynpuxes{visibility:visible}.mlyuxw1ft{white-space:nowrap}.mly126k92a{white-space:pre-wrap}.mly1so62im{will-change:transform}.mly1vvkbs{word-wrap:break-word}.mly35i7{writing-mode:sideways-lr}.mly1ja2u2z{z-index:0}.mly1vjfegm{z-index:1}.mly11uqc5h{z-index:100}.mlyhtitgo{z-index:2}.mly14vaotu:is([data-state=active]){background-color:var(--mly1bs2mf7)}.mlyqweix6:is([data-disabled]){color:var(--mly1qcfjts)}.mlyb0tsu4:is([data-state=active]){color:var(--mly883cce)}.mly5ezrf1:is([data-disabled]){cursor:not-allowed}.mly1uifvsu:is([data-state=active]){font-weight:700}.mly1s07b3s:disabled{cursor:not-allowed}.mly1haqvef:hover{background-color:#dde2e8}.mlyjg9ulk:hover{background-color:#efefef}.mlyt89l8w:hover{background-color:var(--malloy-composer-form-focusBackground,#f0f6ff)}.mlyk1j4u7:hover{background-color:var(--mly4a29vv)}.mlyk1e6ed:hover{box-shadow:#ccd3db4d 0 0 0 3px inset}.mlytw1abo:focus{background-color:#fff}}@layer priority5{.mly1ey2m1c{bottom:0}.mlyqtp20y{height:0}.mly5yr21d{height:100%}.mlypyat2d{height:100px}.mlyn866dk{height:136px}.mly1v9usgg{height:14px}.mlywrnneb{height:16.5px}.mlylup9mm{height:16px}.mlymix8c7{height:18px}.mlyjm9jq1{height:1px}.mly1m3v4wt{height:200px}.mlyk2yuxw{height:209.5px}.mly1qx5ct2{height:20px}.mlyxk0z11{height:24px}.mlyd7y6wv{height:26px}.mly1fgtraw{height:28px}.mlyc9qbxq{height:36px}.mlyng8ra{height:60px}.mlydk7pt{height:8px}.mlylo07zb{height:90px}.mlyt7dq6l{height:auto}.mly1ktj5wk{height:calc(100% - 8px)}.mlyu96u03{left:0}.mly12nagc{margin-bottom:4px}.mlyu06os2{margin-bottom:5px}.mly1e56ztr{margin-bottom:8px}.mlyj3b58b{margin-left:0}.mly1tpqehw{margin-left:12px}.mlyq1n1xh{margin-left:16px}.mly1iog12x{margin-left:4px}.mlyet2fuk{margin-left:8px}.mly1yf7rl7{margin-right:0}.mly1xmf6yo{margin-top:8px}.mly1rvw3h8{max-height:136px}.mly1hkcv85{max-height:200px}.mly1xyq3li{max-height:20em}.mlyq3t0pi{max-height:280px}.mlyuyqlj2{max-height:300px}.mly1phlbz0{max-height:400px}.mly3d5gib{max-height:50vh}.mly1kbvuzt{max-height:var(--radix-tooltip-content-available-height)}.mlyqyhut4{max-width:16.5px}.mly1pdpmub{max-width:264px}.mly1jkqq1h{max-width:280px}.mly1dc814f{max-width:350px}.mlyxc7z9f{max-width:360px}.mly1j9u4d2{max-width:400px}.mlymcgfsh{max-width:60px}.mly2lwn1j{min-height:0}.mly4x6u8j{min-width:16.5px}.mlygc0pbm{min-width:1px}.mlyt4ypqs{min-width:20px}.mlyytlacd{min-width:224px}.mlylm99nl{min-width:240px}.mly2ixbly{min-width:250px}.mlyfvyar9{min-width:60px}.mly1onzeue{min-width:95px}.mly1odjw0f{overflow-y:auto}.mly18d9i69{padding-bottom:0}.mly1l90r2v{padding-bottom:16px}.mlyjkvuk6{padding-bottom:4px}.mlywib8y2{padding-bottom:8px}.mlynm25rq{padding-left:16px}.mly6wrskw{padding-left:4px}.mly163pfp{padding-left:8px}.mlymzs88n{padding-right:4px}.mlyy13l1i{padding-right:8px}.mly1nn3v0j{padding-top:2px}.mly1iorvi4{padding-top:4px}.mly123j3cw{padding-top:5px}.mly1y1aw1k{padding-top:8px}.mly1bkpikb{right:-2px}.mly3m8u43{right:0}.mly13vifvy{top:0}.mlynalus7{width:0}.mlyh8yej3{width:100%}.mlynrytzq{width:10em}.mly6jxa94{width:14px}.mly18kybhu{width:15em}.mlyjxf2f8{width:16.5px}.mly1kky2od{width:16px}.mly1xp8n7a{width:18px}.mly1i1rx1s{width:1px}.mlyw4jnvo{width:20px}.mlyvy4d1p{width:24px}.mly1f1nlb9{width:25%}.mlyqyf9gi{width:250px}.mly1hfn5x7{width:260px}.mlygd8bvy{width:28px}.mlybl57os{width:323px}.mlyxsgkw5{width:350px}.mly869kya{width:5.5em}.mly1ftt334{width:5px}.mly1247r65{width:60px}.mly1xc55vz{width:8px}.mlym6i5cn{width:90%}.mly10lvyaf{width:calc(100% - 12px)}.mly1rxuhir{width:calc(100% - 22px)}.mly112rgfc{width:calc(100% - 40)}.mly1g65f5b{width:var(--radix-tooltip-trigger-width)}}@layer priority6{.mly1njml60::placeholder{color:#4e606f}}div[data-radix-popper-content-wrapper]{z-index:100!important}
|
|
1
|
+
@layer priority1,priority2,priority3,priority4,priority5,priority6;@layer priority1{:root,.mly16bcggl{--mly1rtpqm4:rgba(10, 19, 23, .2);--mlywmj25p:rgba(121, 82, 255, .2);--mly1f95ebd:rgba(36, 187, 94, .2);--mly1jva6ta:rgba(3, 167, 215, .2);--mly1yr7ch6:rgba(241, 244, 247, 1);--mly1bs2mf7:rgba(0, 130, 251, .2);--mlywj8cgu:rgba(11, 153, 31, .2);--mlyhsum04:rgba(226, 164, 0, .2);--mly19gk0g3:rgba(227, 25, 59, .2);--mlyrbis2b:rgba(204, 211, 219, 1);--mly1eayp21:rgba(230, 235, 239, 1);--mly1bn1nfc:rgba(37, 54, 63, 1)}:root,.mly182du4u{--mly231nev:rgba(10, 19, 23, 1);--mly1i3blw4:rgba(78, 96, 111, 1);--mly16ir2n5:rgba(164, 176, 188, 1);--mly883cce:rgba(0, 100, 224, 1);--mlyy3jzoq:rgba(255, 255, 255, 1);--mly7qnfvx:rgba(10, 19, 23, 1);--mly3ib3qi:rgba(62, 6, 151, 1);--mlyndhcph:rgba(9, 68, 31, 1);--mlykotp7t:rgba(1, 73, 117, 1);--mlyf25c1a:rgba(66, 133, 244, 1)}:root,.mlyacbved{--mly8s4nhd:rgba(10, 19, 23, 1);--mly130oqjo:rgba(78, 96, 111, 1);--mlywh4rgx:rgba(164, 176, 188, 1);--mly1gq6bli:rgba(255, 255, 255, 1);--mly1jphivy:rgba(164, 176, 188, 1);--mly6i1qgk:rgba(121, 82, 255, 1);--mly1css67u:rgba(7, 109, 41, 1);--mly1fea1fg:rgba(2, 141, 193, 1);--mlyz9tc12:rgba(233, 175, 8, 1);--mly1dryxz7:rgba(0, 100, 224, 1);--mly176ansx:rgba(13, 134, 38, 1);--mlybq1dnb:rgba(227, 25, 59, 1)}:root,.mlyugude9{--mlyiz2tia:#0064E0;--mly1nffz32:#0082FB32;--mly1mq821i:white;--mlyz6dflh:rgba(0, 0, 0, .1);--mly4a29vv:#0000000D;--mlyhoywqa:#050505;--mly1qcfjts:#A4B0BC}:root,.mly18uf1kx{--mlynfhokh:none}:root,.mly11fl7i8{--mlyvpnzvp:none}.mly10cf5cp{--mly10mhzaa:var(--mly1f95ebd)}.mlykvi9ht{--mly10mhzaa:var(--mly1jva6ta)}.mly1rve117{--mly10mhzaa:var(--mly1rtpqm4)}.mlyihc5ie{--mly10mhzaa:var(--mlywmj25p)}.mly8bgh0r{--mly13n7235:var(--mly231nev)}.mly1r5zvhd{--mly13n7235:var(--mly3ib3qi)}.mlys5r2en{--mly13n7235:var(--mlykotp7t)}.mly1u6t2w6{--mly13n7235:var(--mlyndhcph)}.mlynu5hmx{--mly1by112x:0}.mly15rdse5{--mly1hmjrsb:var(--mly8s4nhd)}.mly5xbp4t{--mly1hpdckv:var(--mly231nev)}.mly3mt86g{--mly1hpdckv:var(--mlyy3jzoq)}.mly5deeek{--mly1ltarg1:var(--mly231nev)}.mlybcavtu{--mly1ojyoay:var(--mly231nev)}.mlywis56f{--mly1ojyoay:var(--mly3ib3qi)}.mly1eg6ybj{--mly1ojyoay:var(--mlykotp7t)}.mlyy280wj{--mly1ojyoay:var(--mlyndhcph)}.mly7ouyw2{--mly5m5edj:var(--mly1i3blw4)}.mlym9y5t7{--mlynfhokh:block}.mly28fmrt{--mlynfhokh:none}.mly1bo1i26{--mlyri8z08:0}.mly11ogjb6{--mlyvpnzvp:none}.mlyf8wvcd{--mlyvygx4q:var(--mly1css67u)}.mlyrtwgpv{--mlyvygx4q:var(--mly1fea1fg)}.mly1f8soc4{--mlyvygx4q:var(--mly6i1qgk)}.mly1izbou4{--mlyvygx4q:var(--mly8s4nhd)}.mly1n5rdk7{--mlyxo3nik:var(--mly1gq6bli)}.mlypfd894{--mlyxo3nik:var(--mly8s4nhd)}@keyframes mlyqng64z-B{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.mly1z060rf:is([data-disabled]){--mly1hmjrsb:var(--mlywh4rgx)}.mly1jacekv:is([data-disabled]){--mly1ltarg1:var(--mly16ir2n5)}.mly7h4d18:is([data-disabled]){--mly5m5edj:var(--mly16ir2n5)}.mly1iu3zmn:disabled{--mly1hpdckv:var(--mly1i3blw4)}.mly13vk70h:disabled{--mly1hpdckv:var(--mlyy3jzoq)}.mly1dsjhx:disabled{--mlyxo3nik:var(--mly1gq6bli)}.mlyiv1q3g:disabled{--mlyxo3nik:var(--mlywh4rgx)}.mly1u5txqc:hover{--mly1by112x:.3}.mly1x0xcia:hover{--mlynfhokh:block}.mly1fzkygm:hover{--mlyri8z08:.3}.mly157rht3:hover{--mlyvpnzvp:inline-flex}}@layer priority2{.mly1o4sr5b{background:#0a1317}.mly3j5mvw{background:#d0d3d7}.mlyo6guvx,.mly17eh757{background:#fff}.mly5uxqc1{background:#0000}.mlyhcrij8{background:#0064e0}.mly1xnbgy5{background:#ccd3db}.mlygqa5hp{background:#e6ebef}.mlyzy8d55{background:#ffffff80}.mlyotlr4g{background:#fff}.mly1md70p1{background:transparent}.mlysu8s4a{background:var(--mly10mhzaa)}.mly1np9qvj{background:var(--mly1eayp21)}.mly1b4wx6v{background:var(--mly1mq821i)}.mly16o7sp0{background:var(--mly1nffz32)}.mlyzkdzjc{border:1px solid #CCD3DB}.mly2yh2zd{border:1px solid #e0e0e0}.mly8fuzfi{border:1px solid #efefef}.mly1dc9p4k{border:1px solid red}.mly27xtdb{border:1px solid rgb(239,239,239)}.mly520xni{border:1px solid rgba(204,211,219,1)}.mlyvckdp7{border:1px solid rgba(230,235,239,1)}.mlyfj9a5l{border:1px solid transparent}.mly1vspu6z{border:1px solid var(--malloy-composer-form-background,#efefef)}.mlyss3vti{border:1px solid var(--malloy-composer-form-border,#ececed)}.mlyv3vvaf{border:1px solid var(--malloy-composer-form-focus,#4285f4)}.mly15q0wj1{border:1px solid var(--malloy-composer-menu-border,#ececed)}.mly1gs6z28{border:none}.mly15r89dc{grid-area:1 / 1}.mly1ghz6dp{margin:0}.mlynfbntj{margin:5px 0}.mly16zck5j{margin:5px}.mlykib98w{margin:8px}.mly1bpp3o7{margin:auto}.mlywp4ipm{padding:0 24px 24px}.mlyehqz9p{padding:0 4px}.mly1l4tkcb{padding:0 8px 8px}.mly1717udv{padding:0}.mly1b4vry6{padding:10px 0}.mlyc7ga6q{padding:12px}.mly1tamke2{padding:16px}.mly1e41zw8{padding:1px 5px}.mlyfvt8nb{padding:2px 12px 2px 6px}.mlybsehbd{padding:2px 3px}.mlyxzb6uj{padding:2px 4px}.mly195ery5{padding:3.75px 7px}.mly1gqu590{padding:3px 10px}.mly34lxi1{padding:3px 3px 3px 10px}.mly92jh8x{padding:4px 0 8px}.mlyztvwtv{padding:4px 0}.mly1fut7tt{padding:4px 12px 12px}.mlytdwleo{padding:4px 12px}.mly9cpjcd,.mlydqdrvq{padding:4px 8px}.mlyfawy5m{padding:4px}.mly17qkr04{padding:5px 0}.mly36usyh{padding:5px 10px}.mly14odnwx{padding:5px}.mly153ncpu{padding:8px 12px}.mlye8ttls{padding:8px}.mly1bw6wve:is([data-highlighted]){background:#0000000d}.mlyamyxth:is([data-state=checked]){background:#0082fb33}.mlyejs3c0:is([data-highlighted]):is([data-state=checked]){background:#0082fb4d}.mly14hn1a8:hover{background:#0000000d}.mly1uceoyp:hover{background:#dde2e8}.mly1vdl2d1:hover{background:#0457cb}.mlywghvya:active{background:#0000001a}.mly1u4cpcs:active{background:#004cbc}.mly1cncicd:active{background:#ccd3db}}@layer priority3{.mly1akygb0{border-color:none}.mly1y5yj0f{border-color:#0064e0}.mly10bk7bj{border-color:var(--malloy-composer-focus,#c3d7f7)}.mly17v018m{border-color:var(--mlyrbis2b)}.mly11zuszs{border-radius:0 0 10px 10px}.mly19ctu66{border-radius:0 4px 4px 0}.mlyq516e8{border-radius:10px 10px 0 0}.mly1q4ynmn{border-radius:10px}.mly4pepcl{border-radius:12px}.mly18zih8k{border-radius:3px}.mlytah5vv{border-radius:4px 0 0 4px}.mly12oqio5{border-radius:4px}.mly1f96onm{border-radius:50px}.mly1sxf85j{border-radius:5px}.mly1kogg8i{border-radius:6px}.mlyur7f20{border-radius:8px}.mly10hpsqq{border-radius:9999px}.mly1pjcqnp{border-radius:inherit}.mlyfuqftd{border-right:1px solid #C8CCD2}.mly1roky18{border-right:1px solid rgba(204,211,219,1)}.mlyng3xce{border-style:none}.mly1y0btm7{border-style:solid}.mly77krkw{border-top:1px solid var(--malloy-composer-form-border,#ececec)}.mlyc342km{border-width:0}.mlymkeg23{border-width:1px}.mly3psx0u{flex:0 0 auto}.mly98rzlu{flex:1}.mly883omv{gap:10px}.mlyou54vl{gap:16px}.mly12mrbbr{gap:1px}.mly1665zp3{gap:24px}.mly195vfkc{gap:2px}.mly1ed6fcf{gap:3px}.mly1jnr06f{gap:4px}.mly1nejdyq{gap:5px}.mly167g77z{gap:8px}.mly1a2a7pz{outline:none}.mlyysyzu8{overflow:auto}.mlyb3r6kr{overflow:hidden}.mly1rea2x4{overflow:visible}.mly1ku5rj1{place-items:center}.mly1hl2dhg{text-decoration:none}.mly14znju7{transition:opacity .5s ease}.mly1fxp9ov:hover{border-color:var(--malloy-composer-focus,#c3d7f7)}.mlyetl2wx:focus{border-color:#4285f4}}@layer priority4{.mly1ua5tub{-webkit-box-orient:vertical}.mly1gzmk7r{-webkit-line-clamp:3}.mly6s0dn4{align-items:center}.mlypqajaz{align-items:end}.mly1cy8zhl{align-items:flex-start}.mly7a106z{align-items:start}.mly7v9bd0{animation-duration:.75s}.mlya4qsjk{animation-iteration-count:infinite}.mly8jsasv{animation-name:mlyqng64z-B}.mly1esw782{animation-timing-function:linear}.mlylp1x4z{backface-visibility:hidden}.mlygmb8sa{background-color:#e6ebef}.mly83z2og{background-color:#fff}.mly1vzefiq{background-color:#f0f6ff}.mlyy9rfsq{background-color:#e6ebef}.mly10cdfl8{background-color:#f1f4f7}.mly1gzqxud{background-color:#fff}.mly1jmk7v{background-color:#25363f}.mlyjbqb8w{background-color:transparent}.mly1jjku57{background-color:var(--malloy-composer-form-disabledBackground,#f6f6f6)}.mly6wxqrg{background-color:var(--malloy-composer-form-focusBackground,#f0f6ff)}.mly12azwz9{background-color:var(--malloy-composer-menu-background,white)}.mlyrkwa2d{background-color:var(--mly19gk0g3)}.mly1pnbjq1{background-color:var(--mly1bs2mf7)}.mly12nb83b{background-color:var(--mly1yr7ch6)}.mly1x7w6om{background-color:var(--mlyhsum04)}.mly1x3oq6j{background-color:var(--mlywj8cgu)}.mly12peec7{background-color:#fff}.mly1mwwwfo{border-collapse:collapse}.mlygbc89k{box-shadow:0 0 0 1px #ccd3db}html:not([dir=rtl]) .mlyn8fsvk{box-shadow:0 0 0 1px #0064e0 inset,0 0 0 3px #0171e34d inset}html[dir=rtl] .mlyn8fsvk{box-shadow:0 0 0 1px #0064e0 inset,0 0 0 3px #0171e34d inset}.mlybwr872{box-shadow:0 0 0 2px #0064e0}html:not([dir=rtl]) .mly1kmqopl{box-shadow:0 0 5px #0000001a,0 0 1px #0000001a}html[dir=rtl] .mly1kmqopl{box-shadow:0 0 5px #0000001a,0 0 1px #0000001a}html:not([dir=rtl]) .mly5n1uv4{box-shadow:0 1px 2px #0000001a,0 2px 12px #0000001a}html[dir=rtl] .mly5n1uv4{box-shadow:0 1px 2px #0000001a,0 2px 12px #0000001a}.mly1a3rnpv{box-shadow:0 1px 5px 1px #0000001a}html:not([dir=rtl]) .mly17fq3gk{box-shadow:0 2px 12px #0000001a,0 1px 2px #0000001a}html[dir=rtl] .mly17fq3gk{box-shadow:0 2px 12px #0000001a,0 1px 2px #0000001a}.mlyx2l43u{box-shadow:0 2px 12px 0 var(--mlyz6dflh)}.mly1gnnqk1{box-shadow:none}.mlyg48p7p{box-shadow:#0171e34d 0 0 0 3px inset}.mly9f619{box-sizing:border-box}.mlyayvuls{color:#000}.mly1aejobo{color:#0064e0}.mly1v5ugh9{color:#505050}.mly358b0h{color:#909090}.mly1e2nbdu{color:red}.mly198oq2i{color:#3e9efb!important}.mlyizdh9v{color:#5f6368}.mlykfrnou{color:#0064e0}.mlyj5j7qc{color:#647685}.mly1rs82da{color:#dde2e8}.mly183j0n7{color:#e4e6eb}.mly1dhlylr{color:#050505}.mly19co3pv{color:transparent}.mly1pc1dlx{color:var(--malloy-composer-form-foreground,#5f6368)}.mly1r0d382{color:var(--mly130oqjo)}.mly1xre2ib{color:var(--mly13n7235)}.mlywzxoxx{color:var(--mly16ir2n5)}.mly1l99qkd{color:var(--mly176ansx)}.mly1evcnq1{color:var(--mly1css67u)}.mly1tw9ct1{color:var(--mly1dryxz7)}.mly1h091fy{color:var(--mly1fea1fg)}.mly1kiansi{color:var(--mly1gq6bli)}.mly1mguc6l{color:var(--mly1hmjrsb)}.mlyaerthn{color:var(--mly1hpdckv)}.mly9dwj6z{color:var(--mly1i3blw4)}.mlyann5r3{color:var(--mly1jphivy)}.mly12lmysb{color:var(--mly1ltarg1)}.mly1ard1hs{color:var(--mly1ojyoay)}.mly1jwwhvr{color:var(--mly1qcfjts)}.mly1ue28sr{color:var(--mly231nev)}.mlyydnxy5{color:var(--mly3ib3qi)}.mly15jt5ur{color:var(--mly5m5edj)}.mly1ywypuw{color:var(--mly6i1qgk)}.mly1p68tcb{color:var(--mly8s4nhd)}.mly109d434{color:var(--mlybq1dnb)}.mly1nwq7qm{color:var(--mlyf25c1a)}.mly1q8pm5h{color:var(--mlyhoywqa)}.mlywn9h7t{color:var(--mlyvygx4q)}.mly16un6j3{color:var(--mlywh4rgx)}.mlyuk6yi3{color:var(--mlyxo3nik)}.mly7neac5{color:var(--mlyz9tc12)}.mlyt0e3qv{cursor:default}.mly7eptgl{cursor:ew-resize}.mly1ipiool{cursor:initial}.mly1ypdohk{cursor:pointer}.mly104kibb{display:-webkit-box}.mly1lliihq{display:block}.mly78zum5{display:flex}.mlyrvj5dj{display:grid}.mly1rg5ohu{display:inline-block}.mly3nfvp2{display:inline-flex}.mlywz0xwf{display:inline-grid}.mly1s85apg{display:none}.mly1vsucm1{display:var(--mlynfhokh)}.mly2b4tyj{display:var(--mlyvpnzvp)}.mlydt5ytf{flex-direction:column}.mly1q0g3np{flex-direction:row}.mly1iyjqo2{flex-grow:1}.mly2lah0s{flex-shrink:0}.mly1a02dak{flex-wrap:wrap}.mly6icuqf{font-family:sans-serif}.mly1rj5sg5{font-family:SF Pro Text,-apple-system,system-ui,sans-serif}.mly12xrqmb{font-family:var(--malloy-composer-fontFamily,sans-serif)}.mlyfifm61{font-size:12px}.mlyif65rj{font-size:14px}.mly1j61zf2{font-size:16px}.mlymhiqyu{font-size:var(--malloy-composer-fontSize,14px)}.mly64z8l9{font-size:var(--malloy-composer-menu-fontSize,14px)}.mly1j61x8r{font-style:normal}.mlyo1l8bm{font-weight:400}.mly1s688f{font-weight:600}.mly1xlr1w8,.mly117nqv4{font-weight:700}.mly1fcty0u{font-weight:400}.mly1mt1orb{grid-auto-flow:column}.mly15396mt{grid-template-columns:100px auto 100px}.mly52fmzj{grid-template-columns:1fr auto}.mly1g3yg12{grid-template-columns:auto 1fr auto}.mlybyjr8{grid-template-columns:auto}.mly17bnpya{grid-template-columns:min-content 1fr}.mlyl56j7k{justify-content:center}.mly13a6bvl{justify-content:flex-end}.mly1nhvcw1{justify-content:flex-start}.mly1rfj78v{justify-content:left}.mly1lvf691{justify-content:right}.mly1l1ennw{justify-content:space-around}.mly1qughib{justify-content:space-between}.mlylqzeqv{justify-content:start}.mly11e9jwx{leading-trim:both}.mly1gu5id8{letter-spacing:-.24px}.mly12oo3zp{letter-spacing:0}.mly1d3mw78{line-height:16px}.mly1fc57z9{line-height:20px}.mly1o2sk6j{line-height:24px}.mly1vqud6w{opacity:70%}.mly1d3ksz1{opacity:var(--mly1by112x)}.mly15sj6ns{opacity:var(--mlyri8z08)}.mly47corl{pointer-events:none}.mly10l6tqk{position:absolute}.mlyixxii4{position:fixed}.mly1n2onr6{position:relative}.mly2b8uid{text-align:center}.mlydpxx8g{text-align:left}.mly1vqy1sf{text-edge:cap}.mlylyipyv{text-overflow:ellipsis}.mly6mezaz{text-transform:none}.mly87ps6o{user-select:none}.mlyxymvpz{vertical-align:middle}.mly1n8ftqi{vertical-align:text-top}.mly16dsc37{vertical-align:top}.mlylshs6z{visibility:hidden}.mlynpuxes{visibility:visible}.mlyuxw1ft{white-space:nowrap}.mly126k92a{white-space:pre-wrap}.mly1so62im{will-change:transform}.mly1vvkbs{word-wrap:break-word}.mly35i7{writing-mode:sideways-lr}.mly1ja2u2z{z-index:0}.mly1vjfegm{z-index:1}.mly11uqc5h{z-index:100}.mlyhtitgo{z-index:2}.mly14vaotu:is([data-state=active]){background-color:var(--mly1bs2mf7)}.mlyqweix6:is([data-disabled]){color:var(--mly1qcfjts)}.mlyb0tsu4:is([data-state=active]){color:var(--mly883cce)}.mly5ezrf1:is([data-disabled]){cursor:not-allowed}.mly1uifvsu:is([data-state=active]){font-weight:700}.mly1s07b3s:disabled{cursor:not-allowed}.mly1haqvef:hover{background-color:#dde2e8}.mlyjg9ulk:hover{background-color:#efefef}.mlyt89l8w:hover{background-color:var(--malloy-composer-form-focusBackground,#f0f6ff)}.mlyk1j4u7:hover{background-color:var(--mly4a29vv)}.mlyk1e6ed:hover{box-shadow:#ccd3db4d 0 0 0 3px inset}.mlytw1abo:focus{background-color:#fff}}@layer priority5{.mly1ey2m1c{bottom:0}.mlyqtp20y{height:0}.mly5yr21d{height:100%}.mlypyat2d{height:100px}.mlyn866dk{height:136px}.mly1v9usgg{height:14px}.mlywrnneb{height:16.5px}.mlylup9mm{height:16px}.mlymix8c7{height:18px}.mlyjm9jq1{height:1px}.mly1m3v4wt{height:200px}.mlyk2yuxw{height:209.5px}.mly1qx5ct2{height:20px}.mlyxk0z11{height:24px}.mlyd7y6wv{height:26px}.mly1fgtraw{height:28px}.mlyc9qbxq{height:36px}.mlyng8ra{height:60px}.mlydk7pt{height:8px}.mlylo07zb{height:90px}.mlyt7dq6l{height:auto}.mly1ktj5wk{height:calc(100% - 8px)}.mlyu96u03{left:0}.mly12nagc{margin-bottom:4px}.mlyu06os2{margin-bottom:5px}.mly1e56ztr{margin-bottom:8px}.mlyj3b58b{margin-left:0}.mly1tpqehw{margin-left:12px}.mlyq1n1xh{margin-left:16px}.mly1iog12x{margin-left:4px}.mlyet2fuk{margin-left:8px}.mly1yf7rl7{margin-right:0}.mly1xmf6yo{margin-top:8px}.mly1rvw3h8{max-height:136px}.mly1hkcv85{max-height:200px}.mly1xyq3li{max-height:20em}.mlyq3t0pi{max-height:280px}.mlyuyqlj2{max-height:300px}.mly1phlbz0{max-height:400px}.mly3d5gib{max-height:50vh}.mly1kbvuzt{max-height:var(--radix-tooltip-content-available-height)}.mlyqyhut4{max-width:16.5px}.mly1pdpmub{max-width:264px}.mly1jkqq1h{max-width:280px}.mly1dc814f{max-width:350px}.mlyxc7z9f{max-width:360px}.mly1j9u4d2{max-width:400px}.mlymcgfsh{max-width:60px}.mly2lwn1j{min-height:0}.mly4x6u8j{min-width:16.5px}.mlygc0pbm{min-width:1px}.mlyt4ypqs{min-width:20px}.mlyytlacd{min-width:224px}.mlylm99nl{min-width:240px}.mly2ixbly{min-width:250px}.mlyfvyar9{min-width:60px}.mly1onzeue{min-width:95px}.mly1odjw0f{overflow-y:auto}.mly18d9i69{padding-bottom:0}.mly1l90r2v{padding-bottom:16px}.mlyjkvuk6{padding-bottom:4px}.mlywib8y2{padding-bottom:8px}.mlynm25rq{padding-left:16px}.mly6wrskw{padding-left:4px}.mly163pfp{padding-left:8px}.mlymzs88n{padding-right:4px}.mlyy13l1i{padding-right:8px}.mly1nn3v0j{padding-top:2px}.mly1iorvi4{padding-top:4px}.mly123j3cw{padding-top:5px}.mly1y1aw1k{padding-top:8px}.mly1bkpikb{right:-2px}.mly3m8u43{right:0}.mly13vifvy{top:0}.mlynalus7{width:0}.mlyh8yej3{width:100%}.mlynrytzq{width:10em}.mly6jxa94{width:14px}.mly18kybhu{width:15em}.mlyjxf2f8{width:16.5px}.mly1kky2od{width:16px}.mly1xp8n7a{width:18px}.mly1i1rx1s{width:1px}.mlyw4jnvo{width:20px}.mlyvy4d1p{width:24px}.mly1f1nlb9{width:25%}.mlyqyf9gi{width:250px}.mly1hfn5x7{width:260px}.mlygd8bvy{width:28px}.mlybl57os{width:323px}.mlyxsgkw5{width:350px}.mly869kya{width:5.5em}.mly1ftt334{width:5px}.mly1247r65{width:60px}.mly1xc55vz{width:8px}.mlym6i5cn{width:90%}.mly10lvyaf{width:calc(100% - 12px)}.mly1rxuhir{width:calc(100% - 22px)}.mly112rgfc{width:calc(100% - 40)}.mly1g65f5b{width:var(--radix-tooltip-trigger-width)}}@layer priority6{.mly1njml60::placeholder{color:#4e606f}}div[data-radix-popper-content-wrapper]{z-index:100!important}@media (prefers-color-scheme: dark){.wmde-markdown,.wmde-markdown-var{color-scheme:dark;--color-prettylights-syntax-comment: #8b949e;--color-prettylights-syntax-constant: #79c0ff;--color-prettylights-syntax-entity: #d2a8ff;--color-prettylights-syntax-storage-modifier-import: #c9d1d9;--color-prettylights-syntax-entity-tag: #7ee787;--color-prettylights-syntax-keyword: #ff7b72;--color-prettylights-syntax-string: #a5d6ff;--color-prettylights-syntax-variable: #ffa657;--color-prettylights-syntax-brackethighlighter-unmatched: #f85149;--color-prettylights-syntax-invalid-illegal-text: #f0f6fc;--color-prettylights-syntax-invalid-illegal-bg: #8e1519;--color-prettylights-syntax-carriage-return-text: #f0f6fc;--color-prettylights-syntax-carriage-return-bg: #b62324;--color-prettylights-syntax-string-regexp: #7ee787;--color-prettylights-syntax-markup-list: #f2cc60;--color-prettylights-syntax-markup-heading: #1f6feb;--color-prettylights-syntax-markup-italic: #c9d1d9;--color-prettylights-syntax-markup-bold: #c9d1d9;--color-prettylights-syntax-markup-deleted-text: #ffdcd7;--color-prettylights-syntax-markup-deleted-bg: #67060c;--color-prettylights-syntax-markup-inserted-text: #aff5b4;--color-prettylights-syntax-markup-inserted-bg: #033a16;--color-prettylights-syntax-markup-changed-text: #ffdfb6;--color-prettylights-syntax-markup-changed-bg: #5a1e02;--color-prettylights-syntax-markup-ignored-text: #c9d1d9;--color-prettylights-syntax-markup-ignored-bg: #1158c7;--color-prettylights-syntax-meta-diff-range: #d2a8ff;--color-prettylights-syntax-brackethighlighter-angle: #8b949e;--color-prettylights-syntax-sublimelinter-gutter-mark: #484f58;--color-prettylights-syntax-constant-other-reference-link: #a5d6ff;--color-fg-default: #c9d1d9;--color-fg-muted: #8b949e;--color-fg-subtle: #484f58;--color-canvas-default: #0d1117;--color-canvas-subtle: #161b22;--color-border-default: #30363d;--color-border-muted: #21262d;--color-neutral-muted: rgba(110, 118, 129, .4);--color-accent-fg: #58a6ff;--color-accent-emphasis: #1f6feb;--color-attention-subtle: rgba(187, 128, 9, .15);--color-danger-fg: #f85149;--color-danger-emphasis: #da3633;--color-attention-fg: #d29922;--color-attention-emphasis: #9e6a03;--color-done-fg: #a371f7;--color-done-emphasis: #8957e5;--color-success-fg: #3fb950;--color-success-emphasis: #238636;--color-copied-active-bg: #2e9b33}}@media (prefers-color-scheme: light){.wmde-markdown,.wmde-markdown-var{color-scheme:light;--color-prettylights-syntax-comment: #6e7781;--color-prettylights-syntax-constant: #0550ae;--color-prettylights-syntax-entity: #8250df;--color-prettylights-syntax-storage-modifier-import: #24292f;--color-prettylights-syntax-entity-tag: #116329;--color-prettylights-syntax-keyword: #cf222e;--color-prettylights-syntax-string: #0a3069;--color-prettylights-syntax-variable: #953800;--color-prettylights-syntax-brackethighlighter-unmatched: #82071e;--color-prettylights-syntax-invalid-illegal-text: #f6f8fa;--color-prettylights-syntax-invalid-illegal-bg: #82071e;--color-prettylights-syntax-carriage-return-text: #f6f8fa;--color-prettylights-syntax-carriage-return-bg: #cf222e;--color-prettylights-syntax-string-regexp: #116329;--color-prettylights-syntax-markup-list: #3b2300;--color-prettylights-syntax-markup-heading: #0550ae;--color-prettylights-syntax-markup-italic: #24292f;--color-prettylights-syntax-markup-bold: #24292f;--color-prettylights-syntax-markup-deleted-text: #82071e;--color-prettylights-syntax-markup-deleted-bg: #ffebe9;--color-prettylights-syntax-markup-inserted-text: #116329;--color-prettylights-syntax-markup-inserted-bg: #dafbe1;--color-prettylights-syntax-markup-changed-text: #953800;--color-prettylights-syntax-markup-changed-bg: #ffd8b5;--color-prettylights-syntax-markup-ignored-text: #eaeef2;--color-prettylights-syntax-markup-ignored-bg: #0550ae;--color-prettylights-syntax-meta-diff-range: #8250df;--color-prettylights-syntax-brackethighlighter-angle: #57606a;--color-prettylights-syntax-sublimelinter-gutter-mark: #8c959f;--color-prettylights-syntax-constant-other-reference-link: #0a3069;--color-fg-default: #24292f;--color-fg-muted: #57606a;--color-fg-subtle: #6e7781;--color-canvas-default: #ffffff;--color-canvas-subtle: #f6f8fa;--color-border-default: #d0d7de;--color-border-muted: hsl(210, 18%, 87%);--color-neutral-muted: rgba(175, 184, 193, .2);--color-accent-fg: #0969da;--color-accent-emphasis: #0969da;--color-attention-subtle: #fff8c5;--color-danger-fg: #d1242f;--color-danger-emphasis: #cf222e;--color-attention-fg: #9a6700;--color-attention-emphasis: #9a6700;--color-done-fg: #8250df;--color-done-emphasis: #8250df;--color-success-fg: #1a7f37;--color-success-emphasis: #1f883d;--color-copied-active-bg: #2e9b33}}[data-color-mode*=dark] .wmde-markdown,[data-color-mode*=dark] .wmde-markdown-var,.wmde-markdown-var[data-color-mode*=dark],.wmde-markdown[data-color-mode*=dark],body[data-color-mode*=dark]{color-scheme:dark;--color-prettylights-syntax-comment: #8b949e;--color-prettylights-syntax-constant: #79c0ff;--color-prettylights-syntax-entity: #d2a8ff;--color-prettylights-syntax-storage-modifier-import: #c9d1d9;--color-prettylights-syntax-entity-tag: #7ee787;--color-prettylights-syntax-keyword: #ff7b72;--color-prettylights-syntax-string: #a5d6ff;--color-prettylights-syntax-variable: #ffa657;--color-prettylights-syntax-brackethighlighter-unmatched: #f85149;--color-prettylights-syntax-invalid-illegal-text: #f0f6fc;--color-prettylights-syntax-invalid-illegal-bg: #8e1519;--color-prettylights-syntax-carriage-return-text: #f0f6fc;--color-prettylights-syntax-carriage-return-bg: #b62324;--color-prettylights-syntax-string-regexp: #7ee787;--color-prettylights-syntax-markup-list: #f2cc60;--color-prettylights-syntax-markup-heading: #1f6feb;--color-prettylights-syntax-markup-italic: #c9d1d9;--color-prettylights-syntax-markup-bold: #c9d1d9;--color-prettylights-syntax-markup-deleted-text: #ffdcd7;--color-prettylights-syntax-markup-deleted-bg: #67060c;--color-prettylights-syntax-markup-inserted-text: #aff5b4;--color-prettylights-syntax-markup-inserted-bg: #033a16;--color-prettylights-syntax-markup-changed-text: #ffdfb6;--color-prettylights-syntax-markup-changed-bg: #5a1e02;--color-prettylights-syntax-markup-ignored-text: #c9d1d9;--color-prettylights-syntax-markup-ignored-bg: #1158c7;--color-prettylights-syntax-meta-diff-range: #d2a8ff;--color-prettylights-syntax-brackethighlighter-angle: #8b949e;--color-prettylights-syntax-sublimelinter-gutter-mark: #484f58;--color-prettylights-syntax-constant-other-reference-link: #a5d6ff;--color-fg-default: #c9d1d9;--color-fg-muted: #8b949e;--color-fg-subtle: #484f58;--color-canvas-default: #0d1117;--color-canvas-subtle: #161b22;--color-border-default: #30363d;--color-border-muted: #21262d;--color-neutral-muted: rgba(110, 118, 129, .4);--color-accent-fg: #58a6ff;--color-accent-emphasis: #1f6feb;--color-attention-subtle: rgba(187, 128, 9, .15);--color-danger-fg: #f85149}[data-color-mode*=light] .wmde-markdown,[data-color-mode*=light] .wmde-markdown-var,.wmde-markdown-var[data-color-mode*=light],.wmde-markdown[data-color-mode*=light],body[data-color-mode*=light]{color-scheme:light;--color-prettylights-syntax-comment: #6e7781;--color-prettylights-syntax-constant: #0550ae;--color-prettylights-syntax-entity: #8250df;--color-prettylights-syntax-storage-modifier-import: #24292f;--color-prettylights-syntax-entity-tag: #116329;--color-prettylights-syntax-keyword: #cf222e;--color-prettylights-syntax-string: #0a3069;--color-prettylights-syntax-variable: #953800;--color-prettylights-syntax-brackethighlighter-unmatched: #82071e;--color-prettylights-syntax-invalid-illegal-text: #f6f8fa;--color-prettylights-syntax-invalid-illegal-bg: #82071e;--color-prettylights-syntax-carriage-return-text: #f6f8fa;--color-prettylights-syntax-carriage-return-bg: #cf222e;--color-prettylights-syntax-string-regexp: #116329;--color-prettylights-syntax-markup-list: #3b2300;--color-prettylights-syntax-markup-heading: #0550ae;--color-prettylights-syntax-markup-italic: #24292f;--color-prettylights-syntax-markup-bold: #24292f;--color-prettylights-syntax-markup-deleted-text: #82071e;--color-prettylights-syntax-markup-deleted-bg: #ffebe9;--color-prettylights-syntax-markup-inserted-text: #116329;--color-prettylights-syntax-markup-inserted-bg: #dafbe1;--color-prettylights-syntax-markup-changed-text: #953800;--color-prettylights-syntax-markup-changed-bg: #ffd8b5;--color-prettylights-syntax-markup-ignored-text: #eaeef2;--color-prettylights-syntax-markup-ignored-bg: #0550ae;--color-prettylights-syntax-meta-diff-range: #8250df;--color-prettylights-syntax-brackethighlighter-angle: #57606a;--color-prettylights-syntax-sublimelinter-gutter-mark: #8c959f;--color-prettylights-syntax-constant-other-reference-link: #0a3069;--color-fg-default: #24292f;--color-fg-muted: #57606a;--color-fg-subtle: #6e7781;--color-canvas-default: #ffffff;--color-canvas-subtle: #f6f8fa;--color-border-default: #d0d7de;--color-border-muted: hsl(210, 18%, 87%);--color-neutral-muted: rgba(175, 184, 193, .2);--color-accent-fg: #0969da;--color-accent-emphasis: #0969da;--color-attention-subtle: #fff8c5;--color-danger-fg: #cf222e}.wmde-markdown{-webkit-text-size-adjust:100%;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Noto Sans,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";font-size:16px;line-height:1.5;word-wrap:break-word;color:var(--color-fg-default);background-color:var(--color-canvas-default)}.wmde-markdown details,.wmde-markdown figcaption,.wmde-markdown figure{display:block}.wmde-markdown summary{display:list-item}.wmde-markdown [hidden]{display:none!important}.wmde-markdown a{background-color:transparent;color:var(--color-accent-fg);text-decoration:none}.wmde-markdown a:active,.wmde-markdown a:hover{outline-width:0}.wmde-markdown abbr[title]{border-bottom:none;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}.wmde-markdown b,.wmde-markdown strong{font-weight:600}.wmde-markdown dfn{font-style:italic}.wmde-markdown h1{margin:.67em 0;font-weight:600;padding-bottom:.3em;font-size:2em;border-bottom:1px solid var(--color-border-muted)}.wmde-markdown mark{background-color:var(--color-attention-subtle);color:var(--color-text-primary)}.wmde-markdown small{font-size:90%}.wmde-markdown sub,.wmde-markdown sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}.wmde-markdown sub{bottom:-.25em}.wmde-markdown sup{top:-.5em}.wmde-markdown img{display:inline-block;border-style:none;max-width:100%;box-sizing:content-box;background-color:var(--color-canvas-default)}.wmde-markdown code,.wmde-markdown kbd,.wmde-markdown pre,.wmde-markdown samp{font-family:monospace,monospace;font-size:1em}.wmde-markdown figure{margin:1em 40px}.wmde-markdown hr{box-sizing:content-box;overflow:hidden;background:transparent;border:0;border-bottom:1px solid var(--color-border-muted);height:.25em;padding:0;margin:24px 0;background-color:var(--color-border-default)}.wmde-markdown input{font:inherit;margin:0;overflow:visible;font-family:inherit;font-size:inherit;line-height:inherit}.wmde-markdown [type=button],.wmde-markdown [type=reset],.wmde-markdown [type=submit]{-webkit-appearance:button}.wmde-markdown [type=button]::-moz-focus-inner,.wmde-markdown [type=reset]::-moz-focus-inner,.wmde-markdown [type=submit]::-moz-focus-inner{border-style:none;padding:0}.wmde-markdown [type=button]:-moz-focusring,.wmde-markdown [type=reset]:-moz-focusring,.wmde-markdown [type=submit]:-moz-focusring{outline:1px dotted ButtonText}.wmde-markdown [type=checkbox],.wmde-markdown [type=radio]{box-sizing:border-box;padding:0}.wmde-markdown [type=number]::-webkit-inner-spin-button,.wmde-markdown [type=number]::-webkit-outer-spin-button{height:auto}.wmde-markdown [type=search]{-webkit-appearance:textfield;outline-offset:-2px}.wmde-markdown [type=search]::-webkit-search-cancel-button,.wmde-markdown [type=search]::-webkit-search-decoration{-webkit-appearance:none}.wmde-markdown ::-webkit-input-placeholder{color:inherit;opacity:.54}.wmde-markdown ::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}.wmde-markdown a:hover{text-decoration:underline}.wmde-markdown hr:before{display:table;content:""}.wmde-markdown hr:after{display:table;clear:both;content:""}.wmde-markdown table{border-spacing:0;border-collapse:collapse;display:block;width:max-content;max-width:100%}.wmde-markdown td,.wmde-markdown th{padding:0}.wmde-markdown details summary{cursor:pointer}.wmde-markdown details:not([open])>*:not(summary){display:none!important}.wmde-markdown kbd{display:inline-block;padding:3px 5px;font:11px ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace;line-height:10px;color:var(--color-fg-default);vertical-align:middle;background-color:var(--color-canvas-subtle);border:solid 1px var(--color-neutral-muted);border-bottom-color:var(--color-neutral-muted);border-radius:6px;box-shadow:inset 0 -1px 0 var(--color-neutral-muted)}.wmde-markdown h1,.wmde-markdown h2,.wmde-markdown h3,.wmde-markdown h4,.wmde-markdown h5,.wmde-markdown h6{margin-top:24px;margin-bottom:16px;font-weight:600;line-height:1.25}.wmde-markdown h2{font-weight:600;padding-bottom:.3em;font-size:1.5em;border-bottom:1px solid var(--color-border-muted)}.wmde-markdown h3{font-weight:600;font-size:1.25em}.wmde-markdown h4{font-weight:600;font-size:1em}.wmde-markdown h5{font-weight:600;font-size:.875em}.wmde-markdown h6{font-weight:600;font-size:.85em;color:var(--color-fg-muted)}.wmde-markdown p{margin-top:0;margin-bottom:10px}.wmde-markdown blockquote{margin:0;padding:0 1em;color:var(--color-fg-muted);border-left:.25em solid var(--color-border-default)}.wmde-markdown ul,.wmde-markdown ol{margin-top:0;margin-bottom:0;padding-left:2em}.wmde-markdown ol ol,.wmde-markdown ul ol{list-style-type:lower-roman}.wmde-markdown ul ul ol,.wmde-markdown ul ol ol,.wmde-markdown ol ul ol,.wmde-markdown ol ol ol{list-style-type:lower-alpha}.wmde-markdown dd{margin-left:0}.wmde-markdown tt,.wmde-markdown code{font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace;font-size:12px}.wmde-markdown pre{margin-top:0;margin-bottom:0;font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace;font-size:12px;word-wrap:normal}.wmde-markdown .octicon{display:inline-block;overflow:visible!important;vertical-align:text-bottom;fill:currentColor}.wmde-markdown ::placeholder{color:var(--color-fg-subtle);opacity:1}.wmde-markdown input::-webkit-outer-spin-button,.wmde-markdown input::-webkit-inner-spin-button{margin:0;-webkit-appearance:none;appearance:none}.wmde-markdown [data-catalyst]{display:block}.wmde-markdown:before{display:table;content:""}.wmde-markdown:after{display:table;clear:both;content:""}.wmde-markdown>*:first-child{margin-top:0!important}.wmde-markdown>*:last-child{margin-bottom:0!important}.wmde-markdown a:not([href]){color:inherit;text-decoration:none}.wmde-markdown .absent{color:var(--color-danger-fg)}.wmde-markdown a.anchor{float:left;padding-right:4px;margin-left:-20px;line-height:1}.wmde-markdown .anchor:focus{outline:none}.wmde-markdown p,.wmde-markdown blockquote,.wmde-markdown ul,.wmde-markdown ol,.wmde-markdown dl,.wmde-markdown table,.wmde-markdown pre,.wmde-markdown details{margin-top:0;margin-bottom:16px}.wmde-markdown blockquote>:first-child{margin-top:0}.wmde-markdown blockquote>:last-child{margin-bottom:0}.wmde-markdown sup>a:before{content:"["}.wmde-markdown sup>a:after{content:"]"}.wmde-markdown h1 .octicon-link,.wmde-markdown h2 .octicon-link,.wmde-markdown h3 .octicon-link,.wmde-markdown h4 .octicon-link,.wmde-markdown h5 .octicon-link,.wmde-markdown h6 .octicon-link{color:var(--color-fg-default);vertical-align:middle;visibility:hidden}.wmde-markdown h1:hover .anchor,.wmde-markdown h2:hover .anchor,.wmde-markdown h3:hover .anchor,.wmde-markdown h4:hover .anchor,.wmde-markdown h5:hover .anchor,.wmde-markdown h6:hover .anchor{text-decoration:none}.wmde-markdown h1:hover .anchor .octicon-link,.wmde-markdown h2:hover .anchor .octicon-link,.wmde-markdown h3:hover .anchor .octicon-link,.wmde-markdown h4:hover .anchor .octicon-link,.wmde-markdown h5:hover .anchor .octicon-link,.wmde-markdown h6:hover .anchor .octicon-link{visibility:visible}.wmde-markdown h1 tt,.wmde-markdown h1 code,.wmde-markdown h2 tt,.wmde-markdown h2 code,.wmde-markdown h3 tt,.wmde-markdown h3 code,.wmde-markdown h4 tt,.wmde-markdown h4 code,.wmde-markdown h5 tt,.wmde-markdown h5 code,.wmde-markdown h6 tt,.wmde-markdown h6 code{padding:0 .2em;font-size:inherit}.wmde-markdown ul.no-list,.wmde-markdown ol.no-list{padding:0;list-style-type:none}.wmde-markdown ol[type="1"]{list-style-type:decimal}.wmde-markdown ol[type=a]{list-style-type:lower-alpha}.wmde-markdown ol[type=i]{list-style-type:lower-roman}.wmde-markdown div>ol:not([type]){list-style-type:decimal}.wmde-markdown ul ul,.wmde-markdown ul ol,.wmde-markdown ol ol,.wmde-markdown ol ul{margin-top:0;margin-bottom:0}.wmde-markdown li>p{margin-top:16px}.wmde-markdown li+li{margin-top:.25em}.wmde-markdown dl{padding:0}.wmde-markdown dl dt{padding:0;margin-top:16px;font-size:1em;font-style:italic;font-weight:600}.wmde-markdown dl dd{padding:0 16px;margin-bottom:16px}.wmde-markdown table th{font-weight:600}.wmde-markdown table th,.wmde-markdown table td{padding:6px 13px;border:1px solid var(--color-border-default)}.wmde-markdown table tr{background-color:var(--color-canvas-default);border-top:1px solid var(--color-border-muted)}.wmde-markdown table tr:nth-child(2n){background-color:var(--color-canvas-subtle)}.wmde-markdown table img{background-color:transparent}.wmde-markdown img[align=right]{padding-left:20px}.wmde-markdown img[align=left]{padding-right:20px}.wmde-markdown .emoji{max-width:none;vertical-align:text-top;background-color:transparent}.wmde-markdown span.frame{display:block;overflow:hidden}.wmde-markdown span.frame>span{display:block;float:left;width:auto;padding:7px;margin:13px 0 0;overflow:hidden;border:1px solid var(--color-border-default)}.wmde-markdown span.frame span img{display:block;float:left}.wmde-markdown span.frame span span{display:block;padding:5px 0 0;clear:both;color:var(--color-fg-default)}.wmde-markdown span.align-center{display:block;overflow:hidden;clear:both}.wmde-markdown span.align-center>span{display:block;margin:13px auto 0;overflow:hidden;text-align:center}.wmde-markdown span.align-center span img{margin:0 auto;text-align:center}.wmde-markdown span.align-right{display:block;overflow:hidden;clear:both}.wmde-markdown span.align-right>span{display:block;margin:13px 0 0;overflow:hidden;text-align:right}.wmde-markdown span.align-right span img{margin:0;text-align:right}.wmde-markdown span.float-left{display:block;float:left;margin-right:13px;overflow:hidden}.wmde-markdown span.float-left span{margin:13px 0 0}.wmde-markdown span.float-right{display:block;float:right;margin-left:13px;overflow:hidden}.wmde-markdown span.float-right>span{display:block;margin:13px auto 0;overflow:hidden;text-align:right}.wmde-markdown code,.wmde-markdown tt{padding:.2em .4em;margin:0;font-size:85%;background-color:var(--color-neutral-muted);border-radius:6px}.wmde-markdown code br,.wmde-markdown tt br{display:none}.wmde-markdown del code{text-decoration:inherit}.wmde-markdown pre code{font-size:100%}.wmde-markdown pre>code{padding:0;margin:0;word-break:normal;white-space:pre;background:transparent;border:0}.wmde-markdown pre{font-size:85%;line-height:1.45;background-color:var(--color-canvas-subtle);border-radius:6px}.wmde-markdown pre code,.wmde-markdown pre tt{display:inline;max-width:auto;padding:0;margin:0;overflow:visible;line-height:inherit;word-wrap:normal;background-color:transparent;border:0}.wmde-markdown pre>code{padding:16px;overflow:auto;display:block}.wmde-markdown pre>code::-webkit-scrollbar{background:transparent;width:8px;height:8px}.wmde-markdown pre>code::-webkit-scrollbar-thumb{background:var(--color-fg-muted);border-radius:10px}.wmde-markdown .csv-data td,.wmde-markdown .csv-data th{padding:5px;overflow:hidden;font-size:12px;line-height:1;text-align:left;white-space:nowrap}.wmde-markdown .csv-data .blob-num{padding:10px 8px 9px;text-align:right;background:var(--color-canvas-default);border:0}.wmde-markdown .csv-data tr{border-top:0}.wmde-markdown .csv-data th{font-weight:600;background:var(--color-canvas-subtle);border-top:0}.wmde-markdown .footnotes{font-size:12px;color:var(--color-fg-muted);border-top:1px solid var(--color-border-default)}.wmde-markdown .footnotes ol{padding-left:16px}.wmde-markdown .footnotes li{position:relative}.wmde-markdown .footnotes li:target:before{position:absolute;inset:-8px -8px -8px -24px;pointer-events:none;content:"";border:2px solid var(--color-accent-emphasis);border-radius:6px}.wmde-markdown .footnotes li:target{color:var(--color-fg-default)}.wmde-markdown .footnotes .data-footnote-backref g-emoji{font-family:monospace}.wmde-markdown .task-list-item{list-style-type:none}.wmde-markdown .task-list-item label{font-weight:400}.wmde-markdown .task-list-item.enabled label{cursor:pointer}.wmde-markdown .task-list-item+.wmde-markdown .task-list-item{margin-top:3px}.wmde-markdown .task-list-item .handle{display:none}.wmde-markdown .task-list-item-checkbox,.wmde-markdown .contains-task-list input[type=checkbox]{margin:0 .2em .25em -1.6em;vertical-align:middle}.wmde-markdown .contains-task-list:dir(rtl) .task-list-item-checkbox,.wmde-markdown .contains-task-list:dir(rtl) input[type=checkbox]{margin:0 -1.6em .25em .2em}.wmde-markdown ::-webkit-calendar-picker-indicator{filter:invert(50%)}.wmde-markdown pre{position:relative}.wmde-markdown pre .copied{visibility:hidden;display:flex;position:absolute;cursor:pointer;color:var(--color-fg-default);top:6px;right:6px;border-radius:5px;background:var(--color-border-default);padding:6px;font-size:12px;transition:all .3s}.wmde-markdown pre .copied .octicon-copy{display:block}.wmde-markdown pre .copied .octicon-check{display:none}.wmde-markdown pre:hover .copied{visibility:visible}.wmde-markdown pre:hover .copied:hover{background:var(--color-prettylights-syntax-entity-tag);color:var(--color-canvas-default)}.wmde-markdown pre:hover .copied:active,.wmde-markdown pre .copied.active{background:var(--color-copied-active-bg);color:var(--color-canvas-default)}.wmde-markdown pre .active .octicon-copy{display:none}.wmde-markdown pre .active .octicon-check{display:block}.wmde-markdown .markdown-alert{padding:.5rem 1em;color:inherit;margin-bottom:16px;border-left:.25em solid var(--borderColor-default, var(--color-border-default))}.wmde-markdown .markdown-alert>:last-child{margin-bottom:0!important}.wmde-markdown .markdown-alert .markdown-alert-title{display:flex;align-items:center;line-height:1;font-weight:500;font-size:14px}.wmde-markdown .markdown-alert .markdown-alert-title svg.octicon{margin-right:var(--base-size-8, 8px)!important}.wmde-markdown .markdown-alert.markdown-alert-note{border-left-color:var(--borderColor-accent-emphasis, var(--color-accent-emphasis))}.wmde-markdown .markdown-alert.markdown-alert-note .markdown-alert-title{color:var(--fgColor-accent, var(--color-accent-fg))}.wmde-markdown .markdown-alert.markdown-alert-tip{border-left-color:var(--borderColor-success-emphasis, var(--color-success-emphasis))}.wmde-markdown .markdown-alert.markdown-alert-tip .markdown-alert-title{color:var(--fgColor-success, var(--color-success-fg))}.wmde-markdown .markdown-alert.markdown-alert-important{border-left-color:var(--borderColor-done-emphasis, var(--color-done-emphasis))}.wmde-markdown .markdown-alert.markdown-alert-important .markdown-alert-title{color:var(--fgColor-done, var(--color-done-fg))}.wmde-markdown .markdown-alert.markdown-alert-warning{border-left-color:var(--borderColor-attention-emphasis, var(--color-attention-emphasis))}.wmde-markdown .markdown-alert.markdown-alert-warning .markdown-alert-title{color:var(--fgColor-attention, var(--color-attention-fg))}.wmde-markdown .markdown-alert.markdown-alert-caution{border-left-color:var(--borderColor-danger-emphasis, var(--color-danger-emphasis))}.wmde-markdown .markdown-alert.markdown-alert-caution .markdown-alert-title{color:var(--fgColor-danger, var(--color-danger-fg))}.wmde-markdown .highlight-line{background-color:var(--color-neutral-muted)}.wmde-markdown .code-line.line-number:before{display:inline-block;width:1rem;text-align:right;margin-right:16px;color:var(--color-fg-subtle);content:attr(line);white-space:nowrap}.wmde-markdown .token.comment,.wmde-markdown .token.prolog,.wmde-markdown .token.doctype,.wmde-markdown .token.cdata{color:var(--color-prettylights-syntax-comment)}.wmde-markdown .token.namespace{opacity:.7}.wmde-markdown .token.property,.wmde-markdown .token.tag,.wmde-markdown .token.selector,.wmde-markdown .token.constant,.wmde-markdown .token.symbol,.wmde-markdown .token.deleted{color:var(--color-prettylights-syntax-entity-tag)}.wmde-markdown .token.maybe-class-name{color:var(--color-prettylights-syntax-variable)}.wmde-markdown .token.property-access,.wmde-markdown .token.operator,.wmde-markdown .token.boolean,.wmde-markdown .token.number,.wmde-markdown .token.selector .token.class,.wmde-markdown .token.attr-name,.wmde-markdown .token.string,.wmde-markdown .token.char,.wmde-markdown .token.builtin{color:var(--color-prettylights-syntax-constant)}.wmde-markdown .token.deleted{color:var(--color-prettylights-syntax-markup-deleted-text)}.wmde-markdown .code-line .token.deleted{background-color:var(--color-prettylights-syntax-markup-deleted-bg)}.wmde-markdown .token.inserted{color:var(--color-prettylights-syntax-markup-inserted-text)}.wmde-markdown .code-line .token.inserted{background-color:var(--color-prettylights-syntax-markup-inserted-bg)}.wmde-markdown .token.variable{color:var(--color-prettylights-syntax-constant)}.wmde-markdown .token.entity,.wmde-markdown .token.url,.wmde-markdown .language-css .token.string,.wmde-markdown .style .token.string,.wmde-markdown .token.color,.wmde-markdown .token.atrule,.wmde-markdown .token.attr-value,.wmde-markdown .token.function,.wmde-markdown .token.class-name{color:var(--color-prettylights-syntax-string)}.wmde-markdown .token.rule,.wmde-markdown .token.regex,.wmde-markdown .token.important,.wmde-markdown .token.keyword{color:var(--color-prettylights-syntax-keyword)}.wmde-markdown .token.coord{color:var(--color-prettylights-syntax-meta-diff-range)}.wmde-markdown .token.important,.wmde-markdown .token.bold{font-weight:700}.wmde-markdown .token.italic{font-style:italic}.wmde-markdown .token.entity{cursor:help}.w-md-editor-area{overflow:auto;border-radius:5px}.w-md-editor-text{min-height:100%;position:relative;text-align:left;white-space:pre-wrap;word-break:keep-all;overflow-wrap:break-word;box-sizing:border-box;padding:10px;margin:0;font-size:14px!important;line-height:18px!important;font-variant-ligatures:common-ligatures}.w-md-editor-text-pre,.w-md-editor-text-input,.w-md-editor-text>.w-md-editor-text-pre{margin:0;border:0;background:none;box-sizing:inherit;display:inherit;font-family:inherit;font-family:var(--md-editor-font-family)!important;font-size:inherit;font-style:inherit;font-variant-ligatures:inherit;font-weight:inherit;letter-spacing:inherit;line-height:inherit;tab-size:inherit;text-indent:inherit;text-rendering:inherit;text-transform:inherit;white-space:inherit;overflow-wrap:inherit;word-break:inherit;word-break:normal;padding:0}.w-md-editor-text-pre{position:relative;margin:0!important;pointer-events:none;background-color:transparent!important}.w-md-editor-text-pre>code{padding:0!important;font-family:var(--md-editor-font-family)!important;font-size:14px!important;line-height:18px!important}.w-md-editor-text-input{position:absolute;top:0;left:0;height:100%;width:100%;resize:none;color:inherit;overflow:hidden;outline:0;padding:inherit;-webkit-font-smoothing:antialiased;-webkit-text-fill-color:transparent}.w-md-editor-text-input:empty{-webkit-text-fill-color:inherit!important}.w-md-editor-text-pre,.w-md-editor-text-input{word-wrap:pre;word-break:break-word;white-space:pre-wrap}@media all and (-ms-high-contrast: none),(-ms-high-contrast: active){.w-md-editor-text-input{color:transparent!important}.w-md-editor-text-input::selection{background-color:#accef7!important;color:transparent!important}}.w-md-editor-text-pre .punctuation{color:var(--color-prettylights-syntax-comment, #8b949e)!important}.w-md-editor-text-pre .token.url,.w-md-editor-text-pre .token.content{color:var(--color-prettylights-syntax-constant, #0550ae)!important}.w-md-editor-text-pre .token.title.important{color:var(--color-prettylights-syntax-markup-bold, #24292f)}.w-md-editor-text-pre .token.code-block .function{color:var(--color-prettylights-syntax-entity, #8250df)}.w-md-editor-text-pre .token.bold{font-weight:unset!important}.w-md-editor-text-pre .token.title{line-height:unset!important;font-size:unset!important;font-weight:unset!important}.w-md-editor-text-pre .token.code.keyword{color:var(--color-prettylights-syntax-constant, #0550ae)!important}.w-md-editor-text-pre .token.strike,.w-md-editor-text-pre .token.strike .content{color:var(--color-prettylights-syntax-markup-deleted-text, #82071e)!important}.w-md-editor-toolbar-child{position:absolute;border-radius:3px;box-shadow:0 0 0 1px var(--md-editor-box-shadow-color),0 0 0 var(--md-editor-box-shadow-color),0 1px 1px var(--md-editor-box-shadow-color);background-color:var(--md-editor-background-color);z-index:1;display:none}.w-md-editor-toolbar-child.active{display:block}.w-md-editor-toolbar-child .w-md-editor-toolbar{border-bottom:0;padding:3px;border-radius:3px}.w-md-editor-toolbar-child .w-md-editor-toolbar ul>li{display:block}.w-md-editor-toolbar-child .w-md-editor-toolbar ul>li button{width:-webkit-fill-available;height:initial;box-sizing:border-box;padding:3px 4px 2px;margin:0}.w-md-editor-toolbar{border-bottom:1px solid var(--md-editor-box-shadow-color);background-color:var(--md-editor-background-color);padding:3px;display:flex;justify-content:space-between;align-items:center;border-radius:3px 3px 0 0;-webkit-user-select:none;user-select:none;flex-wrap:wrap}.w-md-editor-toolbar.bottom{border-bottom:0px;border-top:1px solid var(--md-editor-box-shadow-color);border-radius:0 0 3px 3px}.w-md-editor-toolbar ul,.w-md-editor-toolbar li{margin:0;padding:0;list-style:none;line-height:initial}.w-md-editor-toolbar li{display:inline-block;font-size:14px}.w-md-editor-toolbar li+li{margin:0}.w-md-editor-toolbar li>button{border:none;height:20px;line-height:14px;background:none;padding:4px;margin:0 1px;border-radius:2px;text-transform:none;font-weight:400;overflow:visible;outline:none;cursor:pointer;transition:all .3s;white-space:nowrap;color:var(--color-fg-default)}.w-md-editor-toolbar li>button:hover,.w-md-editor-toolbar li>button:focus{background-color:var(--color-neutral-muted);color:var(--color-accent-fg)}.w-md-editor-toolbar li>button:active{background-color:var(--color-neutral-muted);color:var(--color-danger-fg)}.w-md-editor-toolbar li>button:disabled{color:var(--md-editor-box-shadow-color);cursor:not-allowed}.w-md-editor-toolbar li>button:disabled:hover{background-color:transparent;color:var(--md-editor-box-shadow-color)}.w-md-editor-toolbar li.active>button{color:var(--color-accent-fg);background-color:var(--color-neutral-muted)}.w-md-editor-toolbar-divider{height:14px;width:1px;margin:-3px 3px 0!important;vertical-align:middle;background-color:var(--md-editor-box-shadow-color)}.w-md-editor-bar{position:absolute;cursor:s-resize;right:0;bottom:0;margin-top:-11px;margin-right:0;width:14px;z-index:3;height:10px;border-radius:0 0 3px;-webkit-user-select:none;user-select:none}.w-md-editor-bar svg{display:block;margin:0 auto}.w-md-editor{text-align:left;border-radius:3px;padding-bottom:1px;position:relative;color:var(--color-fg-default);--md-editor-font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;--md-editor-background-color: var(--color-canvas-default, #ffffff);--md-editor-box-shadow-color: var(--color-border-default, #d0d7de);box-shadow:0 0 0 1px var(--md-editor-box-shadow-color),0 0 0 var(--md-editor-box-shadow-color),0 1px 1px var(--md-editor-box-shadow-color);background-color:var(--md-editor-background-color);font-family:Helvetica Neue,Helvetica,Arial,sans-serif;display:flex;flex-direction:column}.w-md-editor.w-md-editor-rtl{direction:rtl!important;text-align:right!important}.w-md-editor.w-md-editor-rtl .w-md-editor-preview{right:unset!important;left:0;text-align:right!important;box-shadow:inset -1px 0 0 0 var(--md-editor-box-shadow-color)}.w-md-editor.w-md-editor-rtl .w-md-editor-text{text-align:right!important}.w-md-editor-toolbar{height:-webkit-fit-content;height:fit-content}.w-md-editor-content{height:100%;overflow:auto;position:relative;border-radius:0 0 3px}.w-md-editor .copied{display:none!important}.w-md-editor-input{width:50%;height:100%}.w-md-editor-text-pre>code{word-break:break-word!important;white-space:pre-wrap!important}.w-md-editor-preview{width:50%;box-sizing:border-box;box-shadow:inset 1px 0 0 0 var(--md-editor-box-shadow-color);position:absolute;padding:10px 20px;overflow:auto;top:0;right:0;bottom:0;border-radius:0 0 5px;display:flex;flex-direction:column}.w-md-editor-preview .anchor{display:none}.w-md-editor-preview .contains-task-list li.task-list-item{list-style:none}.w-md-editor-show-preview .w-md-editor-input{width:0%;overflow:hidden;background-color:var(--md-editor-background-color)}.w-md-editor-show-preview .w-md-editor-preview{width:100%;box-shadow:inset 0 0}.w-md-editor-show-edit .w-md-editor-input{width:100%}.w-md-editor-show-edit .w-md-editor-preview{width:0%;padding:0}.w-md-editor-fullscreen{overflow:hidden;position:fixed;z-index:99999;inset:0;height:100%!important}.w-md-editor-fullscreen .w-md-editor-content{height:100%}
|
package/package.json
CHANGED
|
@@ -16,6 +16,8 @@ import {
|
|
|
16
16
|
import React, { useEffect } from "react";
|
|
17
17
|
import { highlight } from "../highlighter";
|
|
18
18
|
import { QueryResult } from "../QueryResult";
|
|
19
|
+
import { usePackage } from "../Package";
|
|
20
|
+
import { createEmbeddedQueryResult } from "../QueryResult/QueryResult";
|
|
19
21
|
|
|
20
22
|
const StyledCard = styled(Card)({
|
|
21
23
|
display: "flex",
|
|
@@ -54,10 +56,15 @@ export function ModelCell({
|
|
|
54
56
|
const [highlightedAnnotations, setHighlightedAnnotations] =
|
|
55
57
|
React.useState<string>();
|
|
56
58
|
|
|
57
|
-
const
|
|
59
|
+
const { packageName, projectName } = usePackage();
|
|
60
|
+
|
|
61
|
+
const queryResultCodeSnippet = createEmbeddedQueryResult({
|
|
62
|
+
modelPath,
|
|
58
63
|
sourceName,
|
|
59
64
|
queryName,
|
|
60
|
-
|
|
65
|
+
optionalPackageName: packageName,
|
|
66
|
+
optionalProjectName: projectName,
|
|
67
|
+
});
|
|
61
68
|
|
|
62
69
|
useEffect(() => {
|
|
63
70
|
highlight(queryResultCodeSnippet, "typescript").then((code) => {
|
|
@@ -209,13 +216,3 @@ export function ModelCell({
|
|
|
209
216
|
</>
|
|
210
217
|
);
|
|
211
218
|
}
|
|
212
|
-
|
|
213
|
-
function getQueryResultCodeSnippet(
|
|
214
|
-
sourceName: string,
|
|
215
|
-
queryName: string,
|
|
216
|
-
): string {
|
|
217
|
-
return `<QueryResult
|
|
218
|
-
sourceName="${sourceName}"
|
|
219
|
-
queryName="${queryName}"
|
|
220
|
-
/>`;
|
|
221
|
-
}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import * as Malloy from "@malloydata/malloy-interfaces";
|
|
2
|
-
import * as QueryBuilder from "@malloydata/malloy-query-builder";
|
|
3
2
|
import { Button } from "@mui/material";
|
|
4
3
|
import { Box, Stack } from "@mui/system";
|
|
5
4
|
import {
|
|
@@ -10,15 +9,8 @@ import {
|
|
|
10
9
|
StyledExplorerPage,
|
|
11
10
|
} from "../styles";
|
|
12
11
|
|
|
13
|
-
import {
|
|
14
|
-
MalloyExplorerProvider,
|
|
15
|
-
QueryPanel,
|
|
16
|
-
ResizableCollapsiblePanel,
|
|
17
|
-
ResultPanel,
|
|
18
|
-
SourcePanel,
|
|
19
|
-
} from "@malloydata/malloy-explorer";
|
|
20
12
|
import { styled } from "@mui/material/styles";
|
|
21
|
-
import React from "react";
|
|
13
|
+
import React, { useState, useEffect } from "react";
|
|
22
14
|
import { Configuration, QueryresultsApi } from "../../client";
|
|
23
15
|
import { useMutationWithApiError } from "../../hooks/useQueryWithApiError";
|
|
24
16
|
import { usePackage } from "../Package/PackageProvider";
|
|
@@ -84,8 +76,8 @@ export function SourcesExplorer({
|
|
|
84
76
|
const [selectedTab, setSelectedTab] = React.useState(
|
|
85
77
|
existingSourceName
|
|
86
78
|
? sourceAndPaths.findIndex(
|
|
87
|
-
|
|
88
|
-
|
|
79
|
+
(entry) => entry.sourceInfo.name === existingSourceName,
|
|
80
|
+
)
|
|
89
81
|
: 0,
|
|
90
82
|
);
|
|
91
83
|
|
|
@@ -163,11 +155,16 @@ export function emptyQueryExplorerResult(): QueryExplorerResult {
|
|
|
163
155
|
malloyResult: undefined,
|
|
164
156
|
};
|
|
165
157
|
}
|
|
166
|
-
|
|
158
|
+
function SourceExplorerComponentInner({
|
|
167
159
|
sourceAndPath,
|
|
168
160
|
onChange,
|
|
169
161
|
existingQuery,
|
|
170
|
-
|
|
162
|
+
explorerComponents,
|
|
163
|
+
QueryBuilder,
|
|
164
|
+
}: SourceExplorerComponentProps & {
|
|
165
|
+
explorerComponents: any;
|
|
166
|
+
QueryBuilder: any;
|
|
167
|
+
}) {
|
|
171
168
|
const [query, setQuery] = React.useState<QueryExplorerResult>(
|
|
172
169
|
existingQuery || emptyQueryExplorerResult(),
|
|
173
170
|
);
|
|
@@ -175,6 +172,14 @@ export function SourceExplorerComponent({
|
|
|
175
172
|
string[]
|
|
176
173
|
>([]);
|
|
177
174
|
|
|
175
|
+
const {
|
|
176
|
+
MalloyExplorerProvider,
|
|
177
|
+
QueryPanel,
|
|
178
|
+
ResizableCollapsiblePanel,
|
|
179
|
+
ResultPanel,
|
|
180
|
+
SourcePanel,
|
|
181
|
+
} = explorerComponents;
|
|
182
|
+
|
|
178
183
|
React.useEffect(() => {
|
|
179
184
|
if (onChange) {
|
|
180
185
|
onChange(query);
|
|
@@ -301,16 +306,16 @@ export function SourceExplorerComponent({
|
|
|
301
306
|
submittedQuery={
|
|
302
307
|
query?.malloyQuery
|
|
303
308
|
? {
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
309
|
+
executionState: mutation.isPending
|
|
310
|
+
? "running"
|
|
311
|
+
: "finished",
|
|
312
|
+
response: {
|
|
313
|
+
result: query.malloyResult,
|
|
314
|
+
},
|
|
315
|
+
query: query.malloyQuery,
|
|
316
|
+
queryResolutionStartMillis: Date.now(),
|
|
317
|
+
onCancel: mutation.reset,
|
|
318
|
+
}
|
|
314
319
|
: undefined
|
|
315
320
|
}
|
|
316
321
|
options={{ showRawQuery: true }}
|
|
@@ -322,3 +327,64 @@ export function SourceExplorerComponent({
|
|
|
322
327
|
</StyledExplorerPage>
|
|
323
328
|
);
|
|
324
329
|
}
|
|
330
|
+
|
|
331
|
+
// Lazy-loaded wrapper component
|
|
332
|
+
export function SourceExplorerComponent(props: SourceExplorerComponentProps) {
|
|
333
|
+
const [explorerComponents, setExplorerComponents] = useState<any>(null);
|
|
334
|
+
const [QueryBuilder, setQueryBuilder] = useState<any>(null);
|
|
335
|
+
const [loading, setLoading] = useState(true);
|
|
336
|
+
|
|
337
|
+
useEffect(() => {
|
|
338
|
+
let isMounted = true;
|
|
339
|
+
|
|
340
|
+
Promise.all([
|
|
341
|
+
import("@malloydata/malloy-explorer"),
|
|
342
|
+
import("@malloydata/malloy-query-builder"),
|
|
343
|
+
])
|
|
344
|
+
.then(([explorerComponents, queryBuilder]) => {
|
|
345
|
+
if (isMounted) {
|
|
346
|
+
setExplorerComponents(explorerComponents);
|
|
347
|
+
setQueryBuilder(queryBuilder);
|
|
348
|
+
setLoading(false);
|
|
349
|
+
}
|
|
350
|
+
})
|
|
351
|
+
.catch((error) => {
|
|
352
|
+
console.error("Failed to load Malloy components:", error);
|
|
353
|
+
if (isMounted) {
|
|
354
|
+
setLoading(false);
|
|
355
|
+
}
|
|
356
|
+
});
|
|
357
|
+
|
|
358
|
+
return () => {
|
|
359
|
+
isMounted = false;
|
|
360
|
+
};
|
|
361
|
+
}, []);
|
|
362
|
+
|
|
363
|
+
if (loading || !explorerComponents || !QueryBuilder) {
|
|
364
|
+
return (
|
|
365
|
+
<StyledExplorerPage>
|
|
366
|
+
<StyledExplorerContent>
|
|
367
|
+
<div
|
|
368
|
+
style={{
|
|
369
|
+
display: "flex",
|
|
370
|
+
alignItems: "center",
|
|
371
|
+
justifyContent: "center",
|
|
372
|
+
height: "200px",
|
|
373
|
+
color: "#666",
|
|
374
|
+
}}
|
|
375
|
+
>
|
|
376
|
+
Loading explorer...
|
|
377
|
+
</div>
|
|
378
|
+
</StyledExplorerContent>
|
|
379
|
+
</StyledExplorerPage>
|
|
380
|
+
);
|
|
381
|
+
}
|
|
382
|
+
|
|
383
|
+
return (
|
|
384
|
+
<SourceExplorerComponentInner
|
|
385
|
+
{...props}
|
|
386
|
+
explorerComponents={explorerComponents}
|
|
387
|
+
QueryBuilder={QueryBuilder}
|
|
388
|
+
/>
|
|
389
|
+
);
|
|
390
|
+
}
|
|
@@ -15,7 +15,7 @@ import {
|
|
|
15
15
|
Tooltip,
|
|
16
16
|
Typography,
|
|
17
17
|
} from "@mui/material";
|
|
18
|
-
import MDEditor from "@uiw/react-md-editor";
|
|
18
|
+
import MDEditor from "@uiw/react-md-editor/nohighlight";
|
|
19
19
|
import Markdown from "markdown-to-jsx";
|
|
20
20
|
import React, { useEffect, useState } from "react";
|
|
21
21
|
import { highlight } from "../highlighter";
|
|
@@ -72,8 +72,8 @@ export function MutableCell({
|
|
|
72
72
|
const [selectedSourceIndex, setSelectedSourceIndex] = React.useState<number>(
|
|
73
73
|
cell.sourceName
|
|
74
74
|
? sourceAndPaths.findIndex(
|
|
75
|
-
|
|
76
|
-
|
|
75
|
+
(entry) => entry.sourceInfo.name === cell.sourceName,
|
|
76
|
+
)
|
|
77
77
|
: 0,
|
|
78
78
|
);
|
|
79
79
|
|
|
@@ -152,10 +152,6 @@ export default function Notebook({
|
|
|
152
152
|
<NotebookCell
|
|
153
153
|
cell={cell}
|
|
154
154
|
notebookPath={notebookPath}
|
|
155
|
-
queryResultCodeSnippet={getQueryResultCodeSnippet(
|
|
156
|
-
notebookPath,
|
|
157
|
-
cell.text,
|
|
158
|
-
)}
|
|
159
155
|
expandCodeCell={expandResults}
|
|
160
156
|
hideCodeCellIcon={hideResultIcons}
|
|
161
157
|
expandEmbedding={expandEmbeddings}
|
|
@@ -182,15 +178,6 @@ export default function Notebook({
|
|
|
182
178
|
);
|
|
183
179
|
}
|
|
184
180
|
|
|
185
|
-
function getQueryResultCodeSnippet(modelPath: string, query: string): string {
|
|
186
|
-
return `<QueryResult
|
|
187
|
-
modelPath="${modelPath}"
|
|
188
|
-
query="
|
|
189
|
-
${query}
|
|
190
|
-
"
|
|
191
|
-
/>`;
|
|
192
|
-
}
|
|
193
|
-
|
|
194
181
|
function getNotebookCodeSnippet(
|
|
195
182
|
notebookPath: string,
|
|
196
183
|
expandedCodeCells: boolean,
|
|
@@ -17,6 +17,8 @@ import { highlight } from "../highlighter";
|
|
|
17
17
|
import { SourcesExplorer } from "../Model";
|
|
18
18
|
import ResultContainer from "../RenderedResult/ResultContainer";
|
|
19
19
|
import { StyledCard, StyledCardContent } from "../styles";
|
|
20
|
+
import { usePackage } from "../Package";
|
|
21
|
+
import { createEmbeddedQueryResult } from "../QueryResult/QueryResult";
|
|
20
22
|
|
|
21
23
|
// Add global style for code display
|
|
22
24
|
const codeStyle = `
|
|
@@ -29,7 +31,6 @@ const codeStyle = `
|
|
|
29
31
|
interface NotebookCellProps {
|
|
30
32
|
cell: ClientNotebookCell;
|
|
31
33
|
notebookPath: string;
|
|
32
|
-
queryResultCodeSnippet: string;
|
|
33
34
|
expandCodeCell?: boolean;
|
|
34
35
|
hideCodeCellIcon?: boolean;
|
|
35
36
|
expandEmbedding?: boolean;
|
|
@@ -39,7 +40,6 @@ interface NotebookCellProps {
|
|
|
39
40
|
export function NotebookCell({
|
|
40
41
|
cell,
|
|
41
42
|
notebookPath,
|
|
42
|
-
queryResultCodeSnippet,
|
|
43
43
|
expandCodeCell,
|
|
44
44
|
hideCodeCellIcon,
|
|
45
45
|
expandEmbedding,
|
|
@@ -54,6 +54,13 @@ export function NotebookCell({
|
|
|
54
54
|
const [highlightedEmbedCode, setHighlightedEmbedCode] =
|
|
55
55
|
React.useState<string>();
|
|
56
56
|
const [sourcesExpanded, setSourcesExpanded] = React.useState<boolean>(false);
|
|
57
|
+
const { packageName, projectName } = usePackage();
|
|
58
|
+
const queryResultCodeSnippet = createEmbeddedQueryResult({
|
|
59
|
+
modelPath: notebookPath,
|
|
60
|
+
query: cell.text,
|
|
61
|
+
optionalPackageName: packageName,
|
|
62
|
+
optionalProjectName: projectName,
|
|
63
|
+
});
|
|
57
64
|
useEffect(() => {
|
|
58
65
|
if (cell.type === "code")
|
|
59
66
|
highlight(cell.text, "malloy").then((code) => {
|
|
@@ -31,9 +31,9 @@ export const PackageProvider = ({
|
|
|
31
31
|
);
|
|
32
32
|
};
|
|
33
33
|
|
|
34
|
-
export function usePackage() {
|
|
34
|
+
export function usePackage(throwOnMissing: boolean = true) {
|
|
35
35
|
const context = useContext(PackageContext);
|
|
36
|
-
if (!context) {
|
|
36
|
+
if (!context && throwOnMissing) {
|
|
37
37
|
throw new Error("usePackage must be used within a PackageProvider");
|
|
38
38
|
}
|
|
39
39
|
return context;
|
|
@@ -14,6 +14,60 @@ interface QueryResultProps {
|
|
|
14
14
|
query?: string;
|
|
15
15
|
sourceName?: string;
|
|
16
16
|
queryName?: string;
|
|
17
|
+
// Optional props to override the value from usePackage hook
|
|
18
|
+
optionalProjectName?: string;
|
|
19
|
+
optionalPackageName?: string;
|
|
20
|
+
optionalVersionId?: string;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
export function createEmbeddedQueryResult(props: QueryResultProps): string {
|
|
24
|
+
const { optionalProjectName, optionalPackageName } = props;
|
|
25
|
+
if (!optionalProjectName || !optionalPackageName) {
|
|
26
|
+
throw new Error(
|
|
27
|
+
"Project and Package name must be provided for query embedding.",
|
|
28
|
+
);
|
|
29
|
+
}
|
|
30
|
+
return JSON.stringify({
|
|
31
|
+
...props,
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* This is a helper function to render a query result that is embedded as a string.
|
|
37
|
+
*/
|
|
38
|
+
export function EmbeddedQueryResult({
|
|
39
|
+
embeddedQueryResult,
|
|
40
|
+
}: {
|
|
41
|
+
embeddedQueryResult: string;
|
|
42
|
+
}): React.ReactElement {
|
|
43
|
+
const {
|
|
44
|
+
modelPath,
|
|
45
|
+
query,
|
|
46
|
+
sourceName,
|
|
47
|
+
queryName,
|
|
48
|
+
optionalProjectName,
|
|
49
|
+
optionalPackageName,
|
|
50
|
+
optionalVersionId,
|
|
51
|
+
} = JSON.parse(embeddedQueryResult) as QueryResultProps;
|
|
52
|
+
|
|
53
|
+
if (
|
|
54
|
+
!modelPath ||
|
|
55
|
+
(!query && (!queryName || !sourceName)) ||
|
|
56
|
+
typeof modelPath !== "string"
|
|
57
|
+
) {
|
|
58
|
+
throw new Error("Invalid embedded query result: " + embeddedQueryResult);
|
|
59
|
+
}
|
|
60
|
+
return (
|
|
61
|
+
<QueryResult
|
|
62
|
+
modelPath={modelPath}
|
|
63
|
+
query={query}
|
|
64
|
+
sourceName={sourceName}
|
|
65
|
+
queryName={queryName}
|
|
66
|
+
optionalProjectName={optionalProjectName}
|
|
67
|
+
optionalPackageName={optionalPackageName}
|
|
68
|
+
optionalVersionId={optionalVersionId}
|
|
69
|
+
/>
|
|
70
|
+
);
|
|
17
71
|
}
|
|
18
72
|
|
|
19
73
|
export default function QueryResult({
|
|
@@ -21,8 +75,23 @@ export default function QueryResult({
|
|
|
21
75
|
query,
|
|
22
76
|
sourceName,
|
|
23
77
|
queryName,
|
|
78
|
+
optionalProjectName,
|
|
79
|
+
optionalPackageName,
|
|
80
|
+
optionalVersionId,
|
|
24
81
|
}: QueryResultProps) {
|
|
25
|
-
|
|
82
|
+
// Always call usePackage - it should handle missing provider gracefully
|
|
83
|
+
const packageContext = usePackage(false);
|
|
84
|
+
|
|
85
|
+
// Use optional props if provided, otherwise fallback to hook values (with defaults)
|
|
86
|
+
const projectName = optionalProjectName || packageContext?.projectName;
|
|
87
|
+
const packageName = optionalPackageName || packageContext?.packageName;
|
|
88
|
+
const versionId = optionalVersionId || packageContext?.versionId;
|
|
89
|
+
|
|
90
|
+
if (!projectName || !packageName) {
|
|
91
|
+
throw new Error(
|
|
92
|
+
"No project or package name provided. Must be set in props or via PackageProvider",
|
|
93
|
+
);
|
|
94
|
+
}
|
|
26
95
|
|
|
27
96
|
const { data, isSuccess, isError, error } = useQueryWithApiError({
|
|
28
97
|
queryKey: [
|