@malloy-publisher/app 0.8.0 → 0.8.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/api-doc.yaml +105 -70
- package/dist/assets/{EnvironmentPage-Be-JAMS6.js → EnvironmentPage-dgZIJhMw.js} +1 -1
- package/dist/assets/{HomePage-DsdQpZuT.js → HomePage-D2FGM4cV.js} +1 -1
- package/dist/assets/{LightMode-DyjqECoH.js → LightMode-emBuHCdz.js} +1 -1
- package/dist/assets/{MainPage-DAaQnh6y.js → MainPage-BVqdH0TB.js} +1 -1
- package/dist/assets/{ModelPage-B7yaRDmM.js → ModelPage-DAJxkTmk.js} +2 -2
- package/dist/assets/{PackagePage-7b0klbWy.js → PackagePage-BGGcyDeJ.js} +1 -1
- package/dist/assets/{RenderedResult-CYyhQekT.es-DJ3BRrLl.js → RenderedResult-CDA9mN_6.es-C4f_ZzvB.js} +2 -2
- package/dist/assets/{RouteError-kdHl1qpH.js → RouteError-CtRFTa_q.js} +1 -1
- package/dist/assets/{ThemeEditorPage-DIt45eWv.js → ThemeEditorPage-Bnd5dgI0.js} +1 -1
- package/dist/assets/{ToggleButtonGroup-Dl_oTC8r.js → ToggleButtonGroup-CxU1OIGN.js} +1 -1
- package/dist/assets/{index-t9-rAE4l.js → index-BWGMOIxQ.js} +1 -1
- package/dist/assets/{index-C1qGlR2a.js → index-CNQ_NxFx.js} +4 -4
- package/dist/assets/{index-T1Cl-rQv.js → index-OsUlLBi_.js} +1 -1
- package/dist/assets/{index-C5hv_y6G.js → index-aXk5ykLp.js} +1 -1
- package/dist/assets/{index-Bzqs2UuN.js → index-xgxo45Xn.js} +1 -1
- package/dist/assets/{index.es-BlAu_Rj1.js → index.es-BCvB2VgL.js} +22 -22
- package/dist/index.html +1 -1
- package/package.json +2 -2
package/dist/api-doc.yaml
CHANGED
|
@@ -1386,6 +1386,8 @@ paths:
|
|
|
1386
1386
|
$ref: "#/components/responses/BadRequest"
|
|
1387
1387
|
"401":
|
|
1388
1388
|
$ref: "#/components/responses/Unauthorized"
|
|
1389
|
+
"424":
|
|
1390
|
+
$ref: "#/components/responses/PackageManifestError"
|
|
1389
1391
|
"500":
|
|
1390
1392
|
$ref: "#/components/responses/InternalServerError"
|
|
1391
1393
|
"501":
|
|
@@ -1448,6 +1450,8 @@ paths:
|
|
|
1448
1450
|
$ref: "#/components/responses/Unauthorized"
|
|
1449
1451
|
"404":
|
|
1450
1452
|
$ref: "#/components/responses/NotFound"
|
|
1453
|
+
"424":
|
|
1454
|
+
$ref: "#/components/responses/PackageManifestError"
|
|
1451
1455
|
"500":
|
|
1452
1456
|
$ref: "#/components/responses/InternalServerError"
|
|
1453
1457
|
"501":
|
|
@@ -1615,6 +1619,16 @@ paths:
|
|
|
1615
1619
|
Retrieves a compiled Malloy model with its source information, queries, and metadata.
|
|
1616
1620
|
The model is compiled using the specified version of the Malloy compiler. This endpoint
|
|
1617
1621
|
provides access to the model's structure, sources, and named queries for use in applications.
|
|
1622
|
+
|
|
1623
|
+
On a package with a surface (a root `index.malloy`, or a legacy `explores`), a file off
|
|
1624
|
+
that surface answers 404 with the same message a query to it gets. Dashboard files are
|
|
1625
|
+
always returned. A package with no surface, or with `queryableSources: "all"`, returns
|
|
1626
|
+
every file. For a file it returns, `modelDef.contents` and `modelDef.exports`,
|
|
1627
|
+
`modelInfo`, `sources` and `sourceInfos` are limited to the names the file publishes, so
|
|
1628
|
+
the surface file does not carry the hidden sources it imports. A join to a hidden source
|
|
1629
|
+
keeps only its name and the names and types of its fields. `sourceText` is left out
|
|
1630
|
+
when the text names a source the file does not publish; a dashboard's text is always
|
|
1631
|
+
returned.
|
|
1618
1632
|
parameters:
|
|
1619
1633
|
- name: environmentName
|
|
1620
1634
|
in: path
|
|
@@ -1873,6 +1887,8 @@ paths:
|
|
|
1873
1887
|
$ref: "#/components/responses/Forbidden"
|
|
1874
1888
|
"404":
|
|
1875
1889
|
$ref: "#/components/responses/NotFound"
|
|
1890
|
+
"424":
|
|
1891
|
+
$ref: "#/components/responses/PackageManifestError"
|
|
1876
1892
|
"500":
|
|
1877
1893
|
$ref: "#/components/responses/InternalServerError"
|
|
1878
1894
|
"503":
|
|
@@ -1898,32 +1914,20 @@ paths:
|
|
|
1898
1914
|
would break one is refused and leaves the previously loaded package
|
|
1899
1915
|
serving, so `error` is only reachable on the paths that keep per-model
|
|
1900
1916
|
placeholders. Treat it as present-but-uncommon rather than the normal
|
|
1901
|
-
way a broken dashboard surfaces.
|
|
1902
|
-
|
|
1903
|
-
|
|
1904
|
-
|
|
1905
|
-
|
|
1906
|
-
|
|
1907
|
-
|
|
1908
|
-
|
|
1909
|
-
|
|
1910
|
-
|
|
1911
|
-
|
|
1912
|
-
|
|
1913
|
-
|
|
1914
|
-
|
|
1915
|
-
`"declared"`, being listed does not by
|
|
1916
|
-
itself guarantee the dashboard runs: the queryable sources are the
|
|
1917
|
-
union of every listed file's `export {}` closure, so a dashboard whose
|
|
1918
|
-
tiles read a source that only an UNLISTED file exports is still served
|
|
1919
|
-
while those queries are refused. The fix is to list that file too, or
|
|
1920
|
-
to re-export the source from one already listed. It is served rather
|
|
1921
|
-
than withheld because withholding on a guess would hide dashboards that
|
|
1922
|
-
do work. Each such tile is reported in the package's `warnings` with
|
|
1923
|
-
severity `error`, as of the last load, naming the tile. The check reads
|
|
1924
|
-
the tile's source from its text, so a tile written in a form it cannot
|
|
1925
|
-
read is not reported. Under `"all"` nothing is refused, so the
|
|
1926
|
-
situation does not arise.
|
|
1917
|
+
way a broken dashboard surfaces.
|
|
1918
|
+
|
|
1919
|
+
Every tagged dashboard is listed, whatever the package's surface. To
|
|
1920
|
+
hide one, remove its `# artifact` tag. On a package with a surface (a
|
|
1921
|
+
root `index.malloy`, or a legacy `explores`) with `queryableSources`
|
|
1922
|
+
left at `"declared"`, a dashboard's tiles, its single query and its
|
|
1923
|
+
filter `suggest` queries may read only sources the surface exports. A
|
|
1924
|
+
source the dashboard declares on top of a surface source may be read;
|
|
1925
|
+
one over a hidden source may not. The dashboard file's own
|
|
1926
|
+
`export {}` and named queries add nothing to the surface. A tile over a
|
|
1927
|
+
hidden source answers 404 when it runs, and the package's `warnings`
|
|
1928
|
+
report each such tile, single query and suggest, with severity
|
|
1929
|
+
`error`, as of the last load, naming the source and the fix. Under
|
|
1930
|
+
`"all"` nothing is refused, so the situation does not arise.
|
|
1927
1931
|
parameters:
|
|
1928
1932
|
- name: environmentName
|
|
1929
1933
|
in: path
|
|
@@ -1993,10 +1997,8 @@ paths:
|
|
|
1993
1997
|
in: path
|
|
1994
1998
|
description: >-
|
|
1995
1999
|
The dashboard's name: its filename basename. Conventionally letters,
|
|
1996
|
-
digits, "-" and "_", and a package is warned when one of its
|
|
1997
|
-
dashboards falls outside that.
|
|
1998
|
-
no naming finding, because the naming check runs after the curation
|
|
1999
|
-
gate and a withheld dashboard is already reported as withheld. It is NOT constrained to it, because
|
|
2000
|
+
digits, "-" and "_", and a package is warned when one of its
|
|
2001
|
+
dashboards falls outside that. It is NOT constrained to it, because
|
|
2000
2002
|
the name comes from a filename rather than being chosen: a file such
|
|
2001
2003
|
as `dashboards/v1.2.malloy` is served, and its published `resource`
|
|
2002
2004
|
carries the name percent-encoded. Send it percent-encoded.
|
|
@@ -2086,6 +2088,7 @@ paths:
|
|
|
2086
2088
|
description: |
|
|
2087
2089
|
Retrieves a Malloy notebook with its raw cell contents (markdown and code).
|
|
2088
2090
|
Cell execution should be done separately via the execute-notebook-cell endpoint.
|
|
2091
|
+
On a package with a surface, the response shows only the sources the notebook may read.
|
|
2089
2092
|
parameters:
|
|
2090
2093
|
- name: environmentName
|
|
2091
2094
|
in: path
|
|
@@ -2137,6 +2140,14 @@ paths:
|
|
|
2137
2140
|
Executes a specific cell in a Malloy notebook by index. For code cells, this compiles
|
|
2138
2141
|
and runs the Malloy code, returning query results and any new sources defined.
|
|
2139
2142
|
For markdown cells, this simply returns the cell content.
|
|
2143
|
+
|
|
2144
|
+
On a package with a surface (a root `index.malloy`, or a legacy `explores`) with
|
|
2145
|
+
`queryableSources` left at `"declared"`, a code cell may read only sources the surface
|
|
2146
|
+
exports. A cell over a hidden source answers 404, and 404 rather than 403 even when the
|
|
2147
|
+
source is also `#(authorize)`-gated. A source an earlier cell declares on top of a
|
|
2148
|
+
published source still works. A cell's own source over a raw table (`duckdb.table(...)`
|
|
2149
|
+
or `.sql(...)`) has no published source under it, so it is refused. The response shows
|
|
2150
|
+
only the sources the notebook may read.
|
|
2140
2151
|
parameters:
|
|
2141
2152
|
- name: environmentName
|
|
2142
2153
|
in: path
|
|
@@ -2710,6 +2721,17 @@ components:
|
|
|
2710
2721
|
application/json:
|
|
2711
2722
|
schema:
|
|
2712
2723
|
$ref: "#/components/schemas/Error"
|
|
2724
|
+
PackageManifestError:
|
|
2725
|
+
description: |
|
|
2726
|
+
The package's publisher.json cannot be used as written: it is not
|
|
2727
|
+
valid JSON or not a JSON object, it has a malformed "explores" or an
|
|
2728
|
+
unknown "scope", or its two "scope" settings disagree. The message
|
|
2729
|
+
names the problem and the fix. The package is not served until the
|
|
2730
|
+
file is corrected.
|
|
2731
|
+
content:
|
|
2732
|
+
application/json:
|
|
2733
|
+
schema:
|
|
2734
|
+
$ref: "#/components/schemas/Error"
|
|
2713
2735
|
ServiceUnavailable:
|
|
2714
2736
|
description: |
|
|
2715
2737
|
The service is temporarily unable to accept the request. Possible
|
|
@@ -3100,23 +3122,27 @@ components:
|
|
|
3100
3122
|
description: >-
|
|
3101
3123
|
The package's discovery surface and query boundary: model file
|
|
3102
3124
|
paths relative to the package root. Only these models are listed
|
|
3103
|
-
via `listModels()`, and
|
|
3104
|
-
|
|
3105
|
-
|
|
3106
|
-
always listed regardless of this field
|
|
3107
|
-
|
|
3108
|
-
|
|
3109
|
-
|
|
3110
|
-
|
|
3111
|
-
|
|
3112
|
-
|
|
3125
|
+
via `listModels()`, and the surface is the union of their
|
|
3126
|
+
`export {}` closures. Every other .malloy file still compiles for
|
|
3127
|
+
import/join resolution but is hidden. Notebooks and dashboards are
|
|
3128
|
+
always listed regardless of this field, and a dashboard entry
|
|
3129
|
+
needs no listing: a tagged dashboard listed here reads the surface
|
|
3130
|
+
and adds nothing to it. An untagged file under `dashboards/` that
|
|
3131
|
+
is listed is an ordinary surface file.
|
|
3132
|
+
DEPRECATED, still honored. Every non-empty value gets a load
|
|
3133
|
+
warning naming the replacement: a root `index.malloy` that imports
|
|
3134
|
+
the listed files and exports what they publish. `[]` is deprecated
|
|
3135
|
+
too: beside an `index.malloy` it stops that file from limiting
|
|
3136
|
+
what the package publishes (the fix is to rename `index.malloy`
|
|
3137
|
+
and delete this key), and without one it does nothing.
|
|
3138
|
+
A value that is not a list of strings refuses the package load
|
|
3139
|
+
(424).
|
|
3113
3140
|
This value MAY have been derived by the server from a root
|
|
3114
3141
|
`index.malloy` rather than written by the package author, and the
|
|
3115
3142
|
response does not distinguish the two — deliberately, because
|
|
3116
3143
|
nothing downstream treats them differently. An explicit key always
|
|
3117
|
-
wins over
|
|
3118
|
-
|
|
3119
|
-
it has neither this key nor a root `index.malloy`.
|
|
3144
|
+
wins over `index.malloy`. A package is uncurated only when it has
|
|
3145
|
+
neither this key nor a root `index.malloy`.
|
|
3120
3146
|
exploresWarnings:
|
|
3121
3147
|
type: array
|
|
3122
3148
|
readOnly: true
|
|
@@ -3156,12 +3182,17 @@ components:
|
|
|
3156
3182
|
surface whose every model failed to compile, so every model in the
|
|
3157
3183
|
package answers 404 by name; and, on the reload that caused it, a
|
|
3158
3184
|
package that had a surface and now has none, so every source that
|
|
3159
|
-
surface
|
|
3185
|
+
surface hid is listed and queryable by name again. Manifest
|
|
3186
|
+
findings: each deprecated use of `explores` or of
|
|
3187
|
+
`queryableSources: "declared"`, and a root file such as
|
|
3188
|
+
`Index.malloy` that differs from `index.malloy` only in case and
|
|
3189
|
+
so is ignored. A root `index.malloy` with no manifest keys gets no
|
|
3190
|
+
warning. Dashboard findings: a
|
|
3160
3191
|
`dashboards/` file whose `# artifact` tag does not parse or does not
|
|
3161
3192
|
describe a dashboard, a tile or suggest query that does not resolve,
|
|
3162
3193
|
a `# drill` naming a destination that is not a dashboard, and a
|
|
3163
|
-
|
|
3164
|
-
|
|
3194
|
+
tile, single query or filter suggest that reads a source the
|
|
3195
|
+
surface does not export, so it won't load. Two dashboard findings are about Publisher rather
|
|
3165
3196
|
than about the package: one when a file carrying an artifact tag
|
|
3166
3197
|
could not be read and so is not served at all, and one when the lint
|
|
3167
3198
|
stops early, in which case the list must be read as incomplete
|
|
@@ -3282,8 +3313,8 @@ components:
|
|
|
3282
3313
|
findings use both: `error` for something that cannot work as
|
|
3283
3314
|
written, such as a tile naming a view the source does not
|
|
3284
3315
|
have, and `warn` for something that works but not as the
|
|
3285
|
-
author probably intended, such as a dashboard
|
|
3286
|
-
|
|
3316
|
+
author probably intended, such as a dashboard name outside
|
|
3317
|
+
the conventional shape. The two findings about Publisher rather than about
|
|
3287
3318
|
the package split across both: a file that carries an artifact
|
|
3288
3319
|
tag and could not be read is `error`, because the dashboard it
|
|
3289
3320
|
should have produced does not exist, and a lint that stopped
|
|
@@ -3299,10 +3330,11 @@ components:
|
|
|
3299
3330
|
- all
|
|
3300
3331
|
description: >-
|
|
3301
3332
|
Controls whether the discovery surface is also a query boundary.
|
|
3302
|
-
`"declared"` (the default) makes queryable == discoverable: when
|
|
3303
|
-
|
|
3304
|
-
|
|
3305
|
-
files' `export {}`
|
|
3333
|
+
`"declared"` (the default) makes queryable == discoverable: when the
|
|
3334
|
+
package has a surface (a root `index.malloy`, or `explores`), only
|
|
3335
|
+
the surface's model files are valid query entry points, and the
|
|
3336
|
+
queryable sources are the union of those files' `export {}`
|
|
3337
|
+
closures — so a source exported by any listed
|
|
3306
3338
|
file stays queryable whichever listed model path the request
|
|
3307
3339
|
addresses it through. Admission is by declaration, not by name: a
|
|
3308
3340
|
request clears only when the model it names resolves the name to the
|
|
@@ -3316,21 +3348,21 @@ components:
|
|
|
3316
3348
|
A source that is both hidden and authorize-gated still answers
|
|
3317
3349
|
`/compile` with the generic 404, so the exemption cannot be used to
|
|
3318
3350
|
enumerate gated names.
|
|
3319
|
-
`"all"` decouples the axes:
|
|
3320
|
-
|
|
3321
|
-
|
|
3322
|
-
|
|
3351
|
+
`"all"` decouples the axes: the surface gates discovery only, every
|
|
3352
|
+
compiled source stays directly queryable, and model files off the
|
|
3353
|
+
surface are returned by path. The two modes are equivalent
|
|
3354
|
+
(everything queryable) only where there is no curated surface at
|
|
3355
|
+
all, which means no `explores` AND no root
|
|
3323
3356
|
`index.malloy` — a package with that file has a surface whether or
|
|
3324
|
-
not the key is present. Invalid values fall back to `"declared"`.
|
|
3325
|
-
`#(authorize)`
|
|
3326
|
-
|
|
3327
|
-
|
|
3328
|
-
|
|
3329
|
-
`"all"` is
|
|
3330
|
-
|
|
3331
|
-
|
|
3332
|
-
|
|
3333
|
-
explicit `explores`.
|
|
3357
|
+
not the key is present. Invalid values fall back to `"declared"`.
|
|
3358
|
+
Identity-based access is a separate concern — see `#(authorize)`
|
|
3359
|
+
and `#(access_filter)`.
|
|
3360
|
+
`"declared"` is DEPRECATED: it is already the default, so the key
|
|
3361
|
+
changes nothing, and writing it gets a load warning saying to
|
|
3362
|
+
delete it. `"all"` is supported, with no warning, and works beside
|
|
3363
|
+
a root `index.malloy`. It is the one way to hide an
|
|
3364
|
+
`#(authorize)`-gated source from listings while authorized callers
|
|
3365
|
+
can still query it by name.
|
|
3334
3366
|
manifestLocation:
|
|
3335
3367
|
type: ["string", "null"]
|
|
3336
3368
|
description: |
|
|
@@ -4070,9 +4102,11 @@ components:
|
|
|
4070
4102
|
code beside the compiled view of the same file without a second,
|
|
4071
4103
|
differently-shaped fetch. Named `sourceText`, not `source`, because
|
|
4072
4104
|
`sources` on this same object are the model's Malloy sources.
|
|
4073
|
-
Optional
|
|
4074
|
-
|
|
4075
|
-
|
|
4105
|
+
Optional: absent from servers that predate it; omitted (with a
|
|
4106
|
+
server-side warning) when the file cannot be read, so a compiled
|
|
4107
|
+
model is never withheld for want of its text; and omitted when the
|
|
4108
|
+
file text names a source it does not publish, on a package with a
|
|
4109
|
+
surface. A dashboard's text is always returned.
|
|
4076
4110
|
|
|
4077
4111
|
View:
|
|
4078
4112
|
type: object
|
|
@@ -4492,7 +4526,8 @@ components:
|
|
|
4492
4526
|
type: string
|
|
4493
4527
|
description:
|
|
4494
4528
|
JSON string containing QueryInfo object for the query in this cell
|
|
4495
|
-
(if the cell contains a query)
|
|
4529
|
+
(if the cell contains a query). On a package with a surface, left out
|
|
4530
|
+
for a cell whose query reads a source the notebook may not read.
|
|
4496
4531
|
|
|
4497
4532
|
NotebookCellResult:
|
|
4498
4533
|
type: object
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{t,L as r,j as e,a7 as i,ai as o}from"./index-
|
|
1
|
+
import{t,L as r,j as e,a7 as i,ai as o}from"./index-CNQ_NxFx.js";function m(){const s=t(),{environmentName:n}=r();if(n){const a=i({environmentName:n});return e.jsx(o,{onSelectPackage:s,resourceUri:a})}else return e.jsx("div",{children:e.jsx("h2",{children:"Missing environment name"})})}export{m as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{t as n,j as o,p as a}from"./index-
|
|
1
|
+
import{t as n,j as o,p as a}from"./index-CNQ_NxFx.js";function s(){const t=n();return o.jsx(a,{onClickEnvironment:t})}export{s as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{c,j as s}from"./index-
|
|
1
|
+
import{c,j as s}from"./index-CNQ_NxFx.js";const t=c(s.jsx("path",{d:"M12 3c-4.97 0-9 4.03-9 9s4.03 9 9 9 9-4.03 9-9c0-.46-.04-.92-.1-1.36-.98 1.37-2.58 2.26-4.4 2.26-2.98 0-5.4-2.42-5.4-5.4 0-1.81.89-3.42 2.26-4.4-.44-.06-.9-.1-1.36-.1"})),a=c(s.jsx("path",{d:"M12 7c-2.76 0-5 2.24-5 5s2.24 5 5 5 5-2.24 5-5-2.24-5-5-5M2 13h2c.55 0 1-.45 1-1s-.45-1-1-1H2c-.55 0-1 .45-1 1s.45 1 1 1m18 0h2c.55 0 1-.45 1-1s-.45-1-1-1h-2c-.55 0-1 .45-1 1s.45 1 1 1M11 2v2c0 .55.45 1 1 1s1-.45 1-1V2c0-.55-.45-1-1-1s-1 .45-1 1m0 18v2c0 .55.45 1 1 1s1-.45 1-1v-2c0-.55-.45-1-1-1s-1 .45-1 1M5.99 4.58c-.39-.39-1.03-.39-1.41 0-.39.39-.39 1.03 0 1.41l1.06 1.06c.39.39 1.03.39 1.41 0s.39-1.03 0-1.41zm12.37 12.37c-.39-.39-1.03-.39-1.41 0-.39.39-.39 1.03 0 1.41l1.06 1.06c.39.39 1.03.39 1.41 0 .39-.39.39-1.03 0-1.41zm1.06-10.96c.39-.39.39-1.03 0-1.41-.39-.39-1.03-.39-1.41 0l-1.06 1.06c-.39.39-.39 1.03 0 1.41s1.03.39 1.41 0zM7.05 18.36c.39-.39.39-1.03 0-1.41-.39-.39-1.03-.39-1.41 0l-1.06 1.06c-.39.39-.39 1.03 0 1.41s1.03.39 1.41 0z"}));export{t as D,a as L};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{u as Pe,g as Ce,r as u,R as Ie,a as ze,c as S,j as t,s as z,B as Me,m as K,e as ne,b as le,d as ce,f as de,h as De,i as U,k as pe,T as G,l as J,n as Te,o as Re,q as Be,v as ue,w as Le,x as oe,y as He,z as $e,A as Ne,C as W,D as $,M as Ae,P as Oe,E as We,F as Ve,S as Ue,G as Qe,H as A,I as N,J as Fe,K as he,L as fe,t as Z,N as m,O as Xe,Q as q,U as Ye,V as _e,$ as se,W as xe,X as me,Y as ge,Z as Ke,_ as Ge,a0 as Je}from"./index-
|
|
1
|
+
import{u as Pe,g as Ce,r as u,R as Ie,a as ze,c as S,j as t,s as z,B as Me,m as K,e as ne,b as le,d as ce,f as de,h as De,i as U,k as pe,T as G,l as J,n as Te,o as Re,q as Be,v as ue,w as Le,x as oe,y as He,z as $e,A as Ne,C as W,D as $,M as Ae,P as Oe,E as We,F as Ve,S as Ue,G as Qe,H as A,I as N,J as Fe,K as he,L as fe,t as Z,N as m,O as Xe,Q as q,U as Ye,V as _e,$ as se,W as xe,X as me,Y as ge,Z as Ke,_ as Ge,a0 as Je}from"./index-CNQ_NxFx.js";import{D as Ze,L as qe}from"./LightMode-emBuHCdz.js";function et(e,r,n,o,s){const[a,i]=u.useState(()=>s&&n?n(e).matches:o?o(e).matches:r);return ze(()=>{if(!n)return;const c=n(e),h=()=>{i(c.matches)};return h(),c.addEventListener("change",h),()=>{c.removeEventListener("change",h)}},[e,n]),a}const tt={...Ie},ye=tt.useSyncExternalStore;function rt(e,r,n,o,s){const a=u.useCallback(()=>r,[r]),i=u.useMemo(()=>{if(s&&n)return()=>n(e).matches;if(o!==null){const{matches:p}=o(e);return()=>p}return a},[a,e,o,s,n]),[c,h]=u.useMemo(()=>{if(n===null)return[a,()=>()=>{}];const p=n(e);return[()=>p.matches,x=>(p.addEventListener("change",x),()=>{p.removeEventListener("change",x)})]},[a,n,e]);return ye(h,c,i)}function be(e={}){const{themeId:r}=e;return function(o,s={}){let a=Pe();a&&r&&(a=a[r]||a);const i=typeof window<"u"&&typeof window.matchMedia<"u",{defaultMatches:c=!1,matchMedia:h=i?window.matchMedia:null,ssrMatchMedia:f=null,noSsr:p=!1}=Ce({name:"MuiUseMediaQuery",props:s,theme:a});let x=typeof o=="function"?o(a):o;return x=x.replace(/^@media( ?)/m,""),x.includes("print")&&console.warn(["MUI: You have provided a `print` query to the `useMediaQuery` hook.","Using the print media query to modify print styles can lead to unexpected results.","Consider using the `displayPrint` field in the `sx` prop instead.","More information about `displayPrint` on our docs: https://mui.com/system/display/#display-in-print."].join(`
|
|
2
2
|
`)),(ye!==void 0?rt:et)(x,c,h,f,p)}}be();const nt=S(t.jsx("path",{d:"M6 10c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm12 0c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm-6 0c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z"})),ot=z(Me,{name:"MuiBreadcrumbCollapsed"})(K(({theme:e})=>({display:"flex",marginLeft:`calc(${e.spacing(1)} * 0.5)`,marginRight:`calc(${e.spacing(1)} * 0.5)`,...e.palette.mode==="light"?{backgroundColor:e.palette.grey[100],color:e.palette.grey[700]}:{backgroundColor:e.palette.grey[700],color:e.palette.grey[100]},borderRadius:2,"&:hover, &:focus":{...e.palette.mode==="light"?{backgroundColor:e.palette.grey[200]}:{backgroundColor:e.palette.grey[600]}},"&:active":{boxShadow:e.shadows[0],...e.palette.mode==="light"?{backgroundColor:ne(e.palette.grey[200],.12)}:{backgroundColor:ne(e.palette.grey[600],.12)}}}))),st=z(nt)({width:24,height:16});function at(e){const{slots:r={},slotProps:n={},...o}=e,s=e;return t.jsx("li",{children:t.jsx(ot,{focusRipple:!0,...o,ownerState:s,children:t.jsx(st,{as:r.CollapsedIcon,ownerState:s,...n.collapsedIcon})})})}function it(e){return ce("MuiBreadcrumbs",e)}const lt=le("MuiBreadcrumbs",["root","ol","li","separator"]),ct=e=>{const{classes:r}=e;return pe({root:["root"],li:["li"],ol:["ol"],separator:["separator"]},it,r)},dt=z(G,{name:"MuiBreadcrumbs",slot:"Root",overridesResolver:(e,r)=>[{[`& .${lt.li}`]:r.li},r.root]})({}),pt=z("ol",{name:"MuiBreadcrumbs",slot:"Ol"})({display:"flex",flexWrap:"wrap",alignItems:"center",padding:0,margin:0,listStyle:"none"}),ut=z("li",{name:"MuiBreadcrumbs",slot:"Separator"})({display:"flex",userSelect:"none",marginLeft:8,marginRight:8});function ht(e,r,n,o){return e.reduce((s,a,i)=>(i<e.length-1?s=s.concat(a,t.jsx(ut,{"aria-hidden":!0,className:r,ownerState:o,children:n},`separator-${i}`)):s.push(a),s),[])}const ft=u.forwardRef(function(r,n){const o=de({props:r,name:"MuiBreadcrumbs"}),{children:s,className:a,component:i="nav",slots:c={},slotProps:h={},expandText:f="Show path",itemsAfterCollapse:p=1,itemsBeforeCollapse:x=1,maxItems:y=8,separator:E="/",...H}=o,[M,P]=u.useState(!1),v={...o,component:i,expanded:M,expandText:f,itemsAfterCollapse:p,itemsBeforeCollapse:x,maxItems:y,separator:E},C=ct(v),D=De({elementType:c.CollapsedIcon,externalSlotProps:h.collapsedIcon,ownerState:v}),j=u.useRef(null),k=d=>{const w=()=>{P(!0);const b=j.current.querySelector("a[href],button,[tabindex]");b&&b.focus()};return x+p>=d.length?d:[...d.slice(0,x),t.jsx(at,{"aria-label":f,slots:{CollapsedIcon:c.CollapsedIcon},slotProps:{collapsedIcon:D},onClick:w},"ellipsis"),...d.slice(d.length-p,d.length)]},T=u.Children.toArray(s).filter(d=>u.isValidElement(d)).map((d,w)=>t.jsx("li",{className:C.li,children:d},`child-${w}`));return t.jsx(dt,{ref:n,component:i,color:"textSecondary",className:U(C.root,a),ownerState:v,...H,children:t.jsx(pt,{className:C.ol,ref:j,ownerState:v,children:ht(M||y&&T.length<=y?T:k(T),C.separator,E,v)})})});function xt(e,r,n){const o=r.getBoundingClientRect(),s=n&&n.getBoundingClientRect(),a=ue(r);let i;if(r.fakeTransform)i=r.fakeTransform;else{const f=a.getComputedStyle(r);i=f.getPropertyValue("-webkit-transform")||f.getPropertyValue("transform")}let c=0,h=0;if(i&&i!=="none"&&typeof i=="string"){const f=i.split("(")[1].split(")")[0].split(",");c=parseInt(f[4],10),h=parseInt(f[5],10)}return e==="left"?s?`translateX(${s.right+c-o.left}px)`:`translateX(${a.innerWidth+c-o.left}px)`:e==="right"?s?`translateX(-${o.right-s.left-c}px)`:`translateX(-${o.left+o.width-c}px)`:e==="up"?s?`translateY(${s.bottom+h-o.top}px)`:`translateY(${a.innerHeight+h-o.top}px)`:s?`translateY(-${o.top-s.top+o.height-h}px)`:`translateY(-${o.top+o.height-h}px)`}function mt(e){return typeof e=="function"?e():e}function V(e,r,n){const o=mt(n),s=xt(e,r,o);s&&(r.style.webkitTransform=s,r.style.transform=s)}const gt=u.forwardRef(function(r,n){const o=J(),s={enter:o.transitions.easing.easeOut,exit:o.transitions.easing.sharp},a={enter:o.transitions.duration.enteringScreen,exit:o.transitions.duration.leavingScreen},{addEndListener:i,appear:c=!0,children:h,container:f,direction:p="down",easing:x=s,in:y,onEnter:E,onEntered:H,onEntering:M,onExit:P,onExited:v,onExiting:C,style:D,timeout:j=a,TransitionComponent:k=Te,...T}=r,d=u.useRef(null),w=Re(Be(h),d,n),b=l=>g=>{l&&(g===void 0?l(d.current):l(d.current,g))},Q=b((l,g)=>{V(p,l,f),He(l),E&&E(l,g)}),ee=b((l,g)=>{const L=oe({timeout:j,style:D,easing:x},{mode:"enter"});l.style.webkitTransition=o.transitions.create("-webkit-transform",{...L}),l.style.transition=o.transitions.create("transform",{...L}),l.style.webkitTransform="none",l.style.transform="none",M&&M(l,g)}),R=b(H),B=b(C),I=b(l=>{const g=oe({timeout:j,style:D,easing:x},{mode:"exit"});l.style.webkitTransition=o.transitions.create("-webkit-transform",g),l.style.transition=o.transitions.create("transform",g),V(p,l,f),P&&P(l)}),F=b(l=>{l.style.webkitTransition="",l.style.transition="",v&&v(l)}),X=l=>{i&&i(d.current,l)},O=u.useCallback(()=>{d.current&&V(p,d.current,f)},[p,f]);return u.useEffect(()=>{if(y||p==="down"||p==="right")return;const l=Le(()=>{d.current&&V(p,d.current,f)}),g=ue(d.current);return g.addEventListener("resize",l),()=>{l.clear(),g.removeEventListener("resize",l)}},[p,y,f]),u.useEffect(()=>{y||O()},[y,O]),t.jsx(k,{nodeRef:d,onEnter:Q,onEntered:R,onEntering:ee,onExit:I,onExited:F,onExiting:B,addEndListener:X,appear:c,in:y,timeout:j,...T,children:(l,{ownerState:g,...L})=>u.cloneElement(h,{ref:w,style:{visibility:l==="exited"&&!y?"hidden":void 0,...D,...h.props.style},...L})})});function yt(e){return ce("MuiDrawer",e)}le("MuiDrawer",["root","docked","paper","anchorLeft","anchorRight","anchorTop","anchorBottom","paperAnchorLeft","paperAnchorRight","paperAnchorTop","paperAnchorBottom","paperAnchorDockedLeft","paperAnchorDockedRight","paperAnchorDockedTop","paperAnchorDockedBottom","modal"]);const ve=(e,r)=>{const{ownerState:n}=e;return[r.root,(n.variant==="permanent"||n.variant==="persistent")&&r.docked,r.modal]},bt=e=>{const{classes:r,anchor:n,variant:o}=e,s={root:["root",`anchor${$(n)}`],docked:[(o==="permanent"||o==="persistent")&&"docked"],modal:["modal"],paper:["paper",`paperAnchor${$(n)}`,o!=="temporary"&&`paperAnchorDocked${$(n)}`]};return pe(s,yt,r)},vt=z(Ae,{name:"MuiDrawer",slot:"Root",overridesResolver:ve})(K(({theme:e})=>({zIndex:(e.vars||e).zIndex.drawer}))),jt=z("div",{shouldForwardProp:We,name:"MuiDrawer",slot:"Docked",skipVariantsResolver:!1,overridesResolver:ve})({flex:"0 0 auto"}),kt=z(Oe,{name:"MuiDrawer",slot:"Paper",overridesResolver:(e,r)=>{const{ownerState:n}=e;return[r.paper,r[`paperAnchor${$(n.anchor)}`],n.variant!=="temporary"&&r[`paperAnchorDocked${$(n.anchor)}`]]}})(K(({theme:e})=>({overflowY:"auto",display:"flex",flexDirection:"column",height:"100%",flex:"1 0 auto",zIndex:(e.vars||e).zIndex.drawer,WebkitOverflowScrolling:"touch",position:"fixed",top:0,outline:0,variants:[{props:{anchor:"left"},style:{left:0}},{props:{anchor:"top"},style:{top:0,left:0,right:0,height:"auto",maxHeight:"100%"}},{props:{anchor:"right"},style:{right:0}},{props:{anchor:"bottom"},style:{top:"auto",left:0,bottom:0,right:0,height:"auto",maxHeight:"100%"}},{props:({ownerState:r})=>r.anchor==="left"&&r.variant!=="temporary",style:{borderRight:`1px solid ${(e.vars||e).palette.divider}`}},{props:({ownerState:r})=>r.anchor==="top"&&r.variant!=="temporary",style:{borderBottom:`1px solid ${(e.vars||e).palette.divider}`}},{props:({ownerState:r})=>r.anchor==="right"&&r.variant!=="temporary",style:{borderLeft:`1px solid ${(e.vars||e).palette.divider}`}},{props:({ownerState:r})=>r.anchor==="bottom"&&r.variant!=="temporary",style:{borderTop:`1px solid ${(e.vars||e).palette.divider}`}}]}))),je={left:"right",right:"left",top:"down",bottom:"up"};function wt(e){return["left","right"].includes(e)}function St({direction:e},r){return e==="rtl"&&wt(r)?je[r]:r}const Et=u.forwardRef(function(r,n){const o=de({props:r,name:"MuiDrawer"}),s=J(),a=$e(),i={enter:s.transitions.duration.enteringScreen,exit:s.transitions.duration.leavingScreen},{anchor:c="left",BackdropProps:h,children:f,className:p,elevation:x=16,hideBackdrop:y=!1,ModalProps:{BackdropProps:E,...H}={},onClose:M,open:P=!1,PaperProps:v={},SlideProps:C,TransitionComponent:D,transitionDuration:j=i,variant:k="temporary",slots:T={},slotProps:d={},...w}=o,b=u.useRef(!1);u.useEffect(()=>{b.current=!0},[]);const Q=St({direction:a?"rtl":"ltr"},c),R={...o,anchor:c,elevation:x,open:P,variant:k,...w},B=bt(R),I={slots:{transition:D,...T},slotProps:{paper:v,transition:C,...d,backdrop:Ne(d.backdrop||{...h,...E},{transitionDuration:j})}},[F,X]=W("root",{ref:n,elementType:vt,className:U(B.root,B.modal,p),shouldForwardComponentProp:!0,ownerState:R,externalForwardedProps:{...I,...w,...H},additionalProps:{open:P,onClose:M,hideBackdrop:y,slots:{backdrop:I.slots.backdrop},slotProps:{backdrop:I.slotProps.backdrop}}}),[O,l]=W("paper",{elementType:kt,shouldForwardComponentProp:!0,className:U(B.paper,v.className),ownerState:R,externalForwardedProps:I,additionalProps:{elevation:k==="temporary"?x:0,square:!0,...k==="temporary"&&{role:"dialog","aria-modal":"true"}}}),[g,L]=W("docked",{elementType:jt,ref:n,className:U(B.root,B.docked,p),ownerState:R,externalForwardedProps:I,additionalProps:w}),[Se,Ee]=W("transition",{elementType:gt,ownerState:R,externalForwardedProps:I,additionalProps:{in:P,direction:je[Q],timeout:j,appear:b.current}}),te=t.jsx(O,{...l,children:f});if(k==="permanent")return t.jsx(g,{...L,children:te});const re=t.jsx(Se,{...Ee,children:te});return k==="persistent"?t.jsx(g,{...L,children:re}):t.jsx(F,{...X,children:re})}),Pt=be({themeId:Ve}),Ct=S([t.jsx("path",{d:"M19 5v14H5V5zm0-2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2"},"0"),t.jsx("path",{d:"M14 17H7v-2h7zm3-4H7v-2h10zm0-4H7V7h10z"},"1")]),It=S(t.jsx("path",{d:"M10.85 12.65h2.3L12 9zM20 8.69V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12zM14.3 16l-.7-2h-3.2l-.7 2H7.8L11 7h2l3.2 9z"})),zt=S(t.jsx("path",{d:"M10 6 8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z"})),Mt=S(t.jsx("path",{d:"M9.4 16.6 4.8 12l4.6-4.6L8 6l-6 6 6 6zm5.2 0 4.6-4.6-4.6-4.6L16 6l6 6-6 6z"})),Dt=S(t.jsx("path",{d:"m9.17 6 2 2H20v10H4V6zM10 4H4c-1.1 0-1.99.9-1.99 2L2 18c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V8c0-1.1-.9-2-2-2h-8z"})),Tt=S(t.jsx("path",{d:"m12 5.69 5 4.5V18h-2v-6H9v6H7v-7.81zM12 3 2 12h3v8h6v-6h2v6h6v-8h3z"})),Rt=S(t.jsx("path",{d:"M19 19H5V5h7V3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2v-7h-2zM14 3v2h3.59l-9.83 9.83 1.41 1.41L19 6.41V10h2V3z"})),Bt=S([t.jsx("path",{d:"M12 22C6.49 22 2 17.51 2 12S6.49 2 12 2s10 4.04 10 9c0 3.31-2.69 6-6 6h-1.77c-.28 0-.5.22-.5.5 0 .12.05.23.13.33.41.47.64 1.06.64 1.67 0 1.38-1.12 2.5-2.5 2.5m0-18c-4.41 0-8 3.59-8 8s3.59 8 8 8c.28 0 .5-.22.5-.5 0-.16-.08-.28-.14-.35-.41-.46-.63-1.05-.63-1.65 0-1.38 1.12-2.5 2.5-2.5H16c2.21 0 4-1.79 4-4 0-3.86-3.59-7-8-7"},"0"),t.jsx("circle",{cx:"6.5",cy:"11.5",r:"1.5"},"1"),t.jsx("circle",{cx:"9.5",cy:"7.5",r:"1.5"},"2"),t.jsx("circle",{cx:"14.5",cy:"7.5",r:"1.5"},"3"),t.jsx("circle",{cx:"17.5",cy:"11.5",r:"1.5"},"4")]);function _(e){return t.jsxs(Ue,{...e,viewBox:"0 0 24 24",sx:{fill:"none",...e.sx},children:[t.jsx("rect",{x:"3.25",y:"4.75",width:"17.5",height:"14.5",rx:"2.25",stroke:"currentColor",strokeWidth:"1.5"}),t.jsx("line",{x1:"8.5",y1:"5",x2:"8.5",y2:"19",stroke:"currentColor",strokeWidth:"1.5"})]})}const Lt={light:"dark",dark:"auto",auto:"light"},ae={light:"Light mode (click for dark)",dark:"Dark mode (click for auto)",auto:"Auto mode (follows OS, click for light)"};function Ht(){const{mode:e,userChoice:r,setMode:n,allowUserToggle:o}=Qe();if(!o)return null;const s=r??e,a=Lt[s],i=s==="auto"?It:s==="dark"?Ze:qe;return t.jsx(A,{title:ae[s],children:t.jsx(N,{"aria-label":ae[s],onClick:()=>n(a),size:"small",children:t.jsx(i,{fontSize:"small"})})})}const ie="Visualization theme";function $t(){const e=Fe(),n=he().pathname.startsWith("/settings/theme");return t.jsx(A,{title:ie,children:t.jsx(N,{"aria-label":ie,onClick:()=>e("/settings/theme"),size:"small",color:n?"primary":"default",children:t.jsx(Bt,{fontSize:"small"})})})}function Y({label:e,onClick:r}){return t.jsx(Xe,{clickable:!0,onClick:r,label:e,size:"small","aria-label":`Navigate to ${e}`,sx:n=>({backgroundColor:"transparent",border:`1px solid ${n.palette.divider}`,color:"text.primary",fontWeight:500,fontSize:"0.875rem",height:32,cursor:"pointer",borderRadius:"4px",maxWidth:320,"& .MuiChip-label":{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},"&:hover":{backgroundColor:n.palette.mode==="dark"?"rgba(255, 255, 255, 0.08)":"grey.100"}})})}function Nt(){const e=fe(),r=e["*"],n=Z();return!e.environmentName&&!e.packageName&&!r?null:t.jsx(m,{sx:{display:"flex",alignItems:"center",minWidth:0},children:t.jsxs(ft,{"aria-label":"breadcrumb",separator:t.jsx(zt,{sx:{fontSize:14,color:"text.secondary"}}),children:[e.environmentName&&t.jsx(Y,{label:e.environmentName,onClick:o=>n(`/${e.environmentName}/`,o)}),e.packageName&&t.jsx(Y,{label:e.packageName,onClick:o=>n(`/${e.environmentName}/${e.packageName}/`,o)}),r&&t.jsx(Y,{label:r,onClick:o=>n(`/${e.environmentName}/${e.packageName}/${r}`,o)})]})})}const At=260,Ot=64;function ke({isCollapsed:e,onToggleCollapse:r,logoHeader:n}){return t.jsxs(m,{sx:{height:"100dvh",width:e?Ot:At,flexShrink:0,display:"flex",flexDirection:"column",backgroundColor:"background.paper",transition:"width 0.2s cubic-bezier(0.4, 0, 0.2, 1)",overflow:"hidden"},children:[t.jsx(Wt,{isCollapsed:e,onToggleCollapse:r,logoHeader:n}),t.jsxs(m,{sx:{flex:1,overflowY:"auto",overflowX:"hidden",py:1},children:[t.jsx(Vt,{isCollapsed:e}),t.jsx(Ut,{isCollapsed:e})]}),t.jsx(Qt,{isCollapsed:e})]})}function Wt({isCollapsed:e,onToggleCollapse:r,logoHeader:n}){const o=Z();return n?t.jsxs(m,{sx:{height:56,display:"flex",alignItems:"center",justifyContent:"space-between",px:e?0:2,flexShrink:0},children:[n,t.jsx(N,{size:"small",onClick:r,"aria-label":e?"Expand sidebar":"Collapse sidebar",children:t.jsx(_,{fontSize:"small"})})]}):t.jsxs(m,{sx:{minHeight:56,display:"flex",flexDirection:e?"column":"row",alignItems:"center",justifyContent:e?"center":"space-between",gap:e?.5:0,py:e?1:0,px:e?0:2,flexShrink:0},children:[t.jsxs(m,{onClick:s=>o("/",s),sx:{display:"flex",alignItems:"center",gap:1,cursor:"pointer",minWidth:0},children:[t.jsx(m,{component:"img",src:"/logo.svg",alt:"Malloy",sx:{width:24,height:24,flexShrink:0}}),!e&&t.jsx(G,{variant:"subtitle1",sx:{color:"text.primary",fontWeight:500,letterSpacing:"-0.025em",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"},children:"Malloy Publisher"})]}),t.jsx(A,{title:e?"Expand sidebar":"Collapse sidebar",placement:"right",children:t.jsx(N,{size:"small",onClick:r,"aria-label":e?"Expand sidebar":"Collapse sidebar",children:t.jsx(_,{fontSize:"small"})})})]})}function Vt({isCollapsed:e}){const n=he().pathname==="/";return t.jsx(q,{sx:{py:0},children:t.jsx(we,{icon:t.jsx(Tt,{fontSize:"small"}),label:"Home",to:"/",selected:n,isCollapsed:e})})}function Ut({isCollapsed:e}){const{apiClients:r}=Ye(),n=fe(),{data:o}=_e({queryKey:["environments"],queryFn:()=>r.environments.listEnvironments()}),s=o?.data??[];return s.length===0?null:t.jsxs(m,{sx:{mt:1},children:[!e&&t.jsx(G,{variant:"caption",sx:{display:"block",px:3,py:1,color:"text.secondary",fontWeight:500,textTransform:"uppercase",fontSize:"0.6875rem",letterSpacing:"0.5px"},children:"Environments"}),t.jsx(q,{sx:{py:0},children:s.map(a=>{const i=a.name??"";return t.jsx(we,{icon:t.jsx(Dt,{fontSize:"small"}),label:i,to:`/${i}`,selected:n.environmentName===i,isCollapsed:e},i)})})]})}function Qt({isCollapsed:e}){const r=[{label:"Malloy Docs",href:se.docsHome,icon:t.jsx(Ct,{fontSize:"small"}),external:!0},{label:"Publisher Docs",href:se.publishing,icon:t.jsx(Rt,{fontSize:"small"}),external:!0},{label:"Publisher API",href:"/api-doc.html",icon:t.jsx(Mt,{fontSize:"small"}),external:!1}];return t.jsx(q,{sx:{py:1},children:r.map(n=>t.jsx(Ft,{label:n.label,href:n.href,icon:n.icon,external:n.external,isCollapsed:e},n.label))})}function we({icon:e,label:r,to:n,selected:o,isCollapsed:s}){const a=Z(),i=t.jsxs(xe,{selected:o,onClick:c=>a(n,c),sx:{justifyContent:s?"center":"flex-start",px:s?0:2},children:[t.jsx(me,{sx:{minWidth:s?0:36,justifyContent:"center",color:o?"text.primary":"text.secondary"},children:e}),!s&&t.jsx(ge,{primary:r,primaryTypographyProps:{variant:"body2",sx:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"}}})]});return s?t.jsx(A,{title:r,placement:"right",children:t.jsx(m,{children:i})}):i}function Ft({label:e,href:r,icon:n,external:o,isCollapsed:s}){const a=t.jsxs(xe,{component:"a",href:r,target:o?"_blank":void 0,rel:o?"noopener noreferrer":void 0,sx:{justifyContent:s?"center":"flex-start",px:s?0:2},children:[t.jsx(me,{sx:{minWidth:s?0:36,justifyContent:"center",color:"text.secondary"},children:n}),!s&&t.jsx(ge,{primary:e,primaryTypographyProps:{variant:"body2",sx:{color:"text.secondary",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"}}})]});return s?t.jsx(A,{title:e,placement:"right",children:t.jsx(m,{children:a})}):a}function Xt({open:e,onClose:r,logoHeader:n}){return t.jsx(Et,{anchor:"left",open:e,onClose:r,ModalProps:{keepMounted:!0},sx:{display:{xs:"block",md:"none"},"& .MuiDrawer-paper":{boxSizing:"border-box",width:260}},children:t.jsx(ke,{isCollapsed:!1,onToggleCollapse:r,logoHeader:n})})}function Kt({headerProps:e}){const r=J(),n=Pt(r.breakpoints.up("md")),[o,s]=u.useState(!1),[a,i]=u.useState(!1);return u.useEffect(()=>{n&&o&&s(!1)},[n,o]),t.jsxs(m,{sx:{height:"100dvh",display:"flex",flexDirection:"row",bgcolor:"background.default"},children:[n&&t.jsx(ke,{isCollapsed:a,onToggleCollapse:()=>i(c=>!c),logoHeader:e?.logoHeader}),t.jsxs(m,{component:"main",sx:{flex:1,display:"flex",flexDirection:"column",minWidth:0},children:[t.jsxs(m,{sx:{flexShrink:0,display:"flex",alignItems:"center",justifyContent:"space-between",height:Ke.headerHeight,px:{xs:1,md:3},backgroundColor:"background.default"},children:[t.jsx(m,{sx:{display:{xs:"flex",md:"none"},alignItems:"center",mr:1},children:t.jsx(N,{size:"small",onClick:()=>s(!0),"aria-label":"Open navigation",children:t.jsx(_,{fontSize:"small"})})}),t.jsx(m,{sx:{flex:1,minWidth:0,display:"flex",alignItems:"center"},children:t.jsx(Nt,{})}),t.jsxs(m,{id:"header-actions-portal",sx:{display:"flex",alignItems:"center",flexShrink:0,gap:1},children:[t.jsx($t,{}),t.jsx(Ht,{}),e?.endCap]})]}),t.jsx(m,{sx:{flex:1,overflow:"auto",minWidth:320,minHeight:0},children:t.jsx(u.Suspense,{fallback:t.jsx(Je,{}),children:t.jsx(Ge,{})})})]}),t.jsx(Xt,{open:o,onClose:()=>s(!1),logoHeader:e?.logoHeader})]})}export{Kt as default};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/index.es-
|
|
2
|
-
import{c as W,j as a,t as f,r as x,a1 as v,J as b,K as $,a2 as k,N as i,a3 as m,a4 as y,a5 as _,a6 as L,a7 as p,a8 as N,a9 as U,aa as R,a0 as D,ab as F,L as I,U as S,ac as T,ad as M,ae as O,T as j,af as h,ag as w}from"./index-
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/index.es-BCvB2VgL.js","assets/index-CNQ_NxFx.js","assets/index-DUqldpo0.css","assets/ToggleButtonGroup-CxU1OIGN.js"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{c as W,j as a,t as f,r as x,a1 as v,J as b,K as $,a2 as k,N as i,a3 as m,a4 as y,a5 as _,a6 as L,a7 as p,a8 as N,a9 as U,aa as R,a0 as D,ab as F,L as I,U as S,ac as T,ad as M,ae as O,T as j,af as h,ag as w}from"./index-CNQ_NxFx.js";const A=W(a.jsx("path",{d:"m14.06 9.02.92.92L5.92 19H5v-.92zM17.66 3c-.25 0-.51.1-.7.29l-1.83 1.83 3.75 3.75 1.83-1.83c.39-.39.39-1.02 0-1.41l-2.34-2.34c-.2-.2-.45-.29-.71-.29m-3.6 3.19L3 17.25V21h3.75L17.81 9.94z"}));function E(e,s){const n=f();return x.useCallback((t,r)=>{const l=new URLSearchParams(t.givens).toString(),c=encodeURIComponent(e),d=encodeURIComponent(s),o=encodeURIComponent(t.dashboard);n(`/${c}/${d}/dashboards/${o}`+(l?`?${l}`:""),r)},[n,e,s])}function z({environmentName:e,packageName:s,dashboardName:n}){const{params:t,onGivensChange:r}=v(),l=E(e,s),c=b(),{pathname:d}=$(),o=x.useMemo(()=>k({environmentName:e,packageName:s,dashboardName:n}),[e,s,n]);return x.useEffect(()=>{const u=()=>void N(()=>import("./index.es-BCvB2VgL.js"),__vite__mapDeps([0,1,2,3])),g=window.requestIdleCallback;if(g){const P=g(u);return()=>window.cancelIdleCallback?.(P)}const C=setTimeout(u,1500);return()=>clearTimeout(C)},[]),a.jsxs(i,{sx:{p:3,maxWidth:1600,mx:"auto"},children:[a.jsx(m,{label:s,href:`/${e}/${s}`,onClick:()=>c(`/${e}/${s}`)}),a.jsx(y,{children:a.jsx(_,{label:"Edit",icon:a.jsx(A,{}),onClick:()=>c(`${d.replace(/\/$/,"")}/edit`)})}),a.jsx(L,{resourceUri:p({environmentName:e,packageName:s}),dashboard:n,givens:t,onGivensChange:r,onNavigate:l,onEvent:o,maxResultSize:1024*1024})]})}const G=U.lazy(()=>N(()=>import("./index.es-BCvB2VgL.js"),__vite__mapDeps([0,1,2,3])).then(e=>({default:e.DashboardEditor})));function V({environmentName:e,packageName:s,dashboardName:n}){const t=b(),{pathname:r}=$(),l=r.replace(/\/edit\/?$/,""),c=x.useMemo(()=>k({environmentName:e,packageName:s,dashboardName:n}),[e,s,n]);return a.jsxs(i,{sx:{p:3,maxWidth:1600,mx:"auto"},children:[a.jsx(m,{label:s,href:`/${e}/${s}`,onClick:()=>t(`/${e}/${s}`)}),a.jsx(x.Suspense,{fallback:a.jsxs(R,{sx:{gap:2},children:[a.jsx(y,{}),a.jsx(D,{text:"Opening the builder…"})]}),children:a.jsx(G,{resourceUri:p({environmentName:e,packageName:s}),dashboard:n,onExit:()=>t(l),onEvent:c})})]})}function q({environmentName:e,packageName:s,notebookPath:n}){const{params:t,onGivensChange:r}=v(),l=E(e,s),c=f();return a.jsxs(i,{sx:{p:3,maxWidth:1200,mx:"auto"},children:[a.jsx(m,{label:s,href:`/${e}/${s}`,onClick:d=>c(`/${e}/${s}`,d)}),a.jsx(F,{resourceUri:p({environmentName:e,packageName:s,modelPath:n}),maxResultSize:1024*1024,givens:t,onGivensChange:r,onNavigate:c,onDrillNavigate:l})]})}function H(){const e=I(),s=e["*"],{server:n}=S(),t=f();if(!e.environmentName)return a.jsx("div",{children:a.jsx("h2",{children:"Missing environment name"})});if(!e.packageName)return a.jsx("div",{children:a.jsx("h2",{children:"Missing package name"})});const r={p:3,maxWidth:1200,mx:"auto"};if(s?.startsWith("dashboards/")&&!s.endsWith(".malloy")&&!s.endsWith(".malloynb")){const o=s.slice(11);return o.endsWith("/edit")?a.jsx(V,{environmentName:e.environmentName,packageName:e.packageName,dashboardName:o.slice(0,-5)}):a.jsx(z,{environmentName:e.environmentName,packageName:e.packageName,dashboardName:o})}if(s?.startsWith("data-apps/")&&!s.endsWith(".malloy")&&!s.endsWith(".malloynb")){const o=s.slice(10),u=p({environmentName:e.environmentName,packageName:e.packageName,modelPath:o});return a.jsxs(i,{sx:r,children:[a.jsx(m,{label:e.packageName,href:`/${e.environmentName}/${e.packageName}`,onClick:g=>t(`/${e.environmentName}/${e.packageName}`,g)}),a.jsx(T,{resourceUri:u})]})}const l=p({environmentName:e.environmentName,packageName:e.packageName,modelPath:s});if(s?.endsWith(".malloy"))return a.jsxs(i,{sx:r,children:[a.jsx(m,{label:e.packageName,href:`/${e.environmentName}/${e.packageName}`,onClick:o=>t(`/${e.environmentName}/${e.packageName}`,o)}),a.jsx(M,{resourceUri:l,runOnDemand:!0,maxResultSize:512*1024})]});if(s?.endsWith(".malloynb"))return a.jsx(q,{environmentName:e.environmentName,packageName:e.packageName,notebookPath:s});const c=/\.[^./]+$/.test(s??""),d=O({server:n,environmentName:e.environmentName,packageName:e.packageName,path:s??""});return a.jsxs(i,{sx:r,children:[a.jsx(m,{label:e.packageName,href:`/${e.environmentName}/${e.packageName}`,onClick:o=>t(`/${e.environmentName}/${e.packageName}`,o)}),a.jsx(j,{variant:"h6",sx:{fontWeight:600},children:"Nothing to open at this path"}),a.jsxs(j,{variant:"body2",color:"text.secondary",sx:{mt:1},children:[a.jsx(i,{component:"span",sx:{fontFamily:h},children:s})," ","does not name a"," ",a.jsx(i,{component:"span",sx:{fontFamily:h},children:".malloy"})," ","or"," ",a.jsx(i,{component:"span",sx:{fontFamily:h},children:".malloynb"})," ","file in package"," ",a.jsx(i,{component:"span",sx:{fontFamily:h},children:e.packageName}),". This address opens"," ",a.jsx(i,{component:"span",sx:{fontFamily:h},children:".malloy"})," ","and"," ",a.jsx(i,{component:"span",sx:{fontFamily:h},children:".malloynb"})," ","files."]}),c&&a.jsxs(j,{variant:"body2",color:"text.secondary",sx:{mt:1},children:["A file from the package's"," ",a.jsx(i,{component:"span",sx:{fontFamily:h},children:"public/"})," ","directory is served at ",a.jsx(w,{href:d,children:d}),"."]}),a.jsx(j,{variant:"body2",color:"text.secondary",sx:{mt:1},children:"The package lists its models, notebooks, and data apps."})]})}export{H as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{L as r,t,j as e,a7 as c,ah as o}from"./index-
|
|
1
|
+
import{L as r,t,j as e,a7 as c,ah as o}from"./index-CNQ_NxFx.js";function l(){const{environmentName:a,packageName:n}=r(),s=t();if(a)if(n){const i=c({environmentName:a,packageName:n});return e.jsx(o,{onClickPackageFile:s,resourceUri:i})}else return e.jsx("div",{children:e.jsx("h2",{children:"Missing package name"})});else return e.jsx("div",{children:e.jsx("h2",{children:"Missing environment name"})})}export{l as default};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/index-
|
|
2
|
-
import{j as D,N as oe,r as p,az as ce,G as he,l as ue,aA as me,ao as be,aB as H,a8 as G,aC as ye,aD as fe,aE as pe,aF as ge,aG as ae}from"./index-
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/index-aXk5ykLp.js","assets/index-CNQ_NxFx.js","assets/index-DUqldpo0.css","assets/index-w_0OQJgZ.js"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{j as D,N as oe,r as p,az as ce,G as he,l as ue,aA as me,ao as be,aB as H,a8 as G,aC as ye,aD as fe,aE as pe,aF as ge,aG as ae}from"./index-CNQ_NxFx.js";const v="publisher-drill";function ve(e,r){const t=new Set;let o;try{o=e.getMetadata()?.getAllFields()??[]}catch{return t}const l=new Set;for(const a of o)!a||r(a)||a.tag?.tag("hidden")===void 0&&l.add(a.tag?.text("label")??a.name);for(const a of o){if(!a||!r(a))continue;const n=a.tag?.text("label")??a.name;l.has(n)||t.add(n)}return t}function M(e){const r=/^\s*(\d+)/.exec(e.style?.gridColumn??"");return r?r[1]:void 0}function we(e,r){if(r.size!==0)for(const t of e.querySelectorAll(".malloy-table")){const o=n=>n.closest(".malloy-table")===t,l=new Set;for(const n of t.querySelectorAll(".column-cell.th")){if(!o(n))continue;const i=(n.textContent??"").replace(/\u200b/g,"").trim(),f=M(n);f&&r.has(i)&&l.add(f)}if(l.size===0)continue;const a=new Set;for(const n of t.querySelectorAll(`.${v}[tabindex="0"]`)){if(!o(n))continue;const i=M(n);i&&(a.has(i)?n.tabIndex=-1:a.add(i))}for(const n of t.querySelectorAll(".column-cell.td")){if(!o(n))continue;const i=M(n),f=!n.querySelector(".value-null")&&(n.textContent??"").trim()!=="";if(i&&f&&l.has(i)&&!n.querySelector(".malloy-table")){if(n.classList.add(v),n.tabIndex===0)a.add(i);else{const m=a.has(i);m||a.add(i),n.tabIndex=m?-1:0}n.setAttribute("role","button")}}}}function ke(e){const r=e.closest(".malloy-table"),t=M(e);return!r||!t?[]:Array.from(r.querySelectorAll(`.${v}`)).filter(o=>o.closest(".malloy-table")===r&&M(o)===t)}function ne(e,r){const t=ke(e),o=t.indexOf(e);if(o===-1)return;const l=r==="first"?t[0]:r==="last"?t[t.length-1]:t[Math.min(Math.max(o+r,0),t.length-1)];if(l){for(const a of t)a.tabIndex=a===l?0:-1;return l}}function xe(e){return{background:e.dashboardRoot,tableBackground:e.tableBackground,tableHeaderColor:e.tableHeader,tableBodyColor:e.tableBody,tableBorder:e.border,tablePinnedBackground:e.tableHeaderBackground,tablePinnedBorder:e.pinnedBorder,tableFontSize:`${e.font.size}px`,fontFamily:e.font.family,mapColor:e.mapColor}}function Ce(e){const{foreground:r,axisFaint:t,font:o}=e,l={background:e.background,font:o.family,title:{color:r,font:o.family},axis:{labelColor:r,titleColor:r,domainColor:t,tickColor:t,gridColor:t,labelFont:o.family,titleFont:o.family},legend:{labelColor:r,titleColor:r,labelFont:o.family,titleFont:o.family},header:{labelColor:r,titleColor:r},range:{category:e.series}};return a=>l}function Ee(e){if(!e)return;const r=e.tag("theme");if(!r)return;const t={},o=r.tag("palette");if(o){const a={},n=o.textArray("series");n&&n.length>0&&(a.series=n);for(const i of ce){const f=o.tag(i);if(!f)continue;const m={},w=f.text("light"),E=f.text("dark");w&&(m.light=w),E&&(m.dark=E),Object.keys(m).length>0&&(a[i]=m)}Object.keys(a).length>0&&(t.palette=a)}const l=r.tag("font");if(l){const a={},n=l.text("family");n&&(a.family=n);const i=l.numeric("size");typeof i=="number"&&Number.isFinite(i)&&(a.size=i),Object.keys(a).length>0&&(t.font=a)}return Object.keys(t).length>0?t:void 0}const Ae=async(e,r)=>{if(typeof window>"u")throw new Error("MalloyRenderer can only be used in browser environment");const{MalloyRenderer:t}=await G(async()=>{const{MalloyRenderer:o}=await import("./index-DSoCUF-f.js");return{MalloyRenderer:o}},[]);return new t({onClick:r,vegaConfigOverride:Ce(e),theme:xe(e),onError:o=>{console.error("Error rendering visualization:",typeof o,o)}}).createViz()};typeof window<"u"&&G(()=>import("./index-DSoCUF-f.js"),[]);async function Se(e){if(!e||typeof e!="object")return;const r=e,t=[...Array.isArray(r.model_annotations)?r.model_annotations:[],...Array.isArray(r.source_annotations)?r.source_annotations:[],...Array.isArray(r.annotations)?r.annotations:[]].map(l=>typeof l?.value=="string"?l.value:void 0).filter(l=>!!l);if(t.length===0)return;let o;try{({parseAnnotation:o}=await G(()=>import("./index-aXk5ykLp.js").then(l=>l.i),__vite__mapDeps([0,1,2,3])))}catch{return}try{const{tag:l}=o(t);return Ee(l)}catch(l){console.warn("Failed to parse # theme.* annotations; chart will render with the shell theme.",{error:l,lines:t});return}}function _e(e,r,t){const o=ye(r,t);for(const[l,a]of Object.entries(o))e.style.setProperty(l,a)}const Re=`
|
|
3
3
|
/* Card geometry, through the renderer's OWN theme vars rather than over the top
|
|
4
4
|
of them. It declares --malloy-theme--dashboard-* on .malloy-render itself and
|
|
5
5
|
passes each through to the --malloy-render--* the card CSS reads, so a value
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{aj as o,j as r,ak as s,aa as a,N as n,T as t}from"./index-
|
|
1
|
+
import{aj as o,j as r,ak as s,aa as a,N as n,T as t}from"./index-CNQ_NxFx.js";function x(){const e=o();return console.error(e),r.jsx(s,{maxWidth:"lg",component:"main",sx:{display:"flex",flexDirection:"column",my:2,gap:0},children:r.jsxs(a,{sx:{m:"auto",flexDirection:"column"},children:[r.jsx(n,{sx:{height:"300px"}}),r.jsx("img",{src:"/error.png"}),r.jsx(t,{variant:"subtitle1",children:"An unexpected error occurred"})]})})}export{x as default};
|