@malloy-publisher/app 0.5.0 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/api-doc.yaml +173 -47
- package/dist/assets/{EnvironmentPage-cVoREk0T.js → EnvironmentPage-C4IrQrKG.js} +1 -1
- package/dist/assets/{HomePage-9sQJEb1e.js → HomePage-DDyGPzmK.js} +1 -1
- package/dist/assets/{LightMode-C8uGSmfv.js → LightMode-BpHRmI5M.js} +1 -1
- package/dist/assets/{MainPage-BIG2W9IX.js → MainPage-BHleF-Kb.js} +1 -1
- package/dist/assets/{ModelPage-DKkVe4Md.js → ModelPage-Cgw-SbZi.js} +2 -2
- package/dist/assets/{PackagePage-Cax6RcJM.js → PackagePage-Cy0c37D0.js} +1 -1
- package/dist/assets/{RenderedResult-BB7eokcf.es-D-hyXuFF.js → RenderedResult-DSgqZUiN.es-CL0FEank.js} +2 -2
- package/dist/assets/{RouteError-BzJ2T1nX.js → RouteError-DBMc9ccU.js} +1 -1
- package/dist/assets/{ThemeEditorPage-Ce7Cp5zL.js → ThemeEditorPage-ByJlsmNu.js} +1 -1
- package/dist/assets/{ToggleButtonGroup-DOVU2psA.js → ToggleButtonGroup-BHEVw4Ti.js} +1 -1
- package/dist/assets/{index-CPy5UJ3W.js → index-BdwkgpbO.js} +1 -1
- package/dist/assets/{index-DycyDIlK.js → index-C5BtJ1GX.js} +4 -4
- package/dist/assets/{index-BOX8mX0R.js → index-Dyxfz1yO.js} +1 -1
- package/dist/assets/{index-DfULFk5d.js → index-c3i6ScGn.js} +1 -1
- package/dist/assets/{index-BJv4aICx.js → index-rWWmF7hn.js} +1 -1
- package/dist/assets/{index.es-Doid8lz7.js → index.es-VI5lesX5.js} +4 -4
- package/dist/index.html +1 -1
- package/package.json +2 -2
package/dist/api-doc.yaml
CHANGED
|
@@ -870,6 +870,8 @@ paths:
|
|
|
870
870
|
$ref: "#/components/schemas/QueryData"
|
|
871
871
|
"401":
|
|
872
872
|
$ref: "#/components/responses/Unauthorized"
|
|
873
|
+
"403":
|
|
874
|
+
$ref: "#/components/responses/Forbidden"
|
|
873
875
|
"404":
|
|
874
876
|
$ref: "#/components/responses/NotFound"
|
|
875
877
|
"413":
|
|
@@ -1240,6 +1242,8 @@ paths:
|
|
|
1240
1242
|
$ref: "#/components/schemas/QueryData"
|
|
1241
1243
|
"401":
|
|
1242
1244
|
$ref: "#/components/responses/Unauthorized"
|
|
1245
|
+
"403":
|
|
1246
|
+
$ref: "#/components/responses/Forbidden"
|
|
1243
1247
|
"404":
|
|
1244
1248
|
$ref: "#/components/responses/NotFound"
|
|
1245
1249
|
"413":
|
|
@@ -1802,6 +1806,8 @@ paths:
|
|
|
1802
1806
|
$ref: "#/components/responses/BadRequest"
|
|
1803
1807
|
"401":
|
|
1804
1808
|
$ref: "#/components/responses/Unauthorized"
|
|
1809
|
+
"403":
|
|
1810
|
+
$ref: "#/components/responses/Forbidden"
|
|
1805
1811
|
"404":
|
|
1806
1812
|
$ref: "#/components/responses/NotFound"
|
|
1807
1813
|
"413":
|
|
@@ -1863,6 +1869,8 @@ paths:
|
|
|
1863
1869
|
$ref: "#/components/schemas/CompileResult"
|
|
1864
1870
|
"400":
|
|
1865
1871
|
$ref: "#/components/responses/BadRequest"
|
|
1872
|
+
"403":
|
|
1873
|
+
$ref: "#/components/responses/Forbidden"
|
|
1866
1874
|
"404":
|
|
1867
1875
|
$ref: "#/components/responses/NotFound"
|
|
1868
1876
|
"500":
|
|
@@ -2202,6 +2210,8 @@ paths:
|
|
|
2202
2210
|
$ref: "#/components/responses/BadRequest"
|
|
2203
2211
|
"401":
|
|
2204
2212
|
$ref: "#/components/responses/Unauthorized"
|
|
2213
|
+
"403":
|
|
2214
|
+
$ref: "#/components/responses/Forbidden"
|
|
2205
2215
|
"404":
|
|
2206
2216
|
$ref: "#/components/responses/NotFound"
|
|
2207
2217
|
"413":
|
|
@@ -3115,9 +3125,14 @@ components:
|
|
|
3115
3125
|
inline error at query time, or inert where it sits and silently
|
|
3116
3126
|
ignored. Materialization
|
|
3117
3127
|
findings: a `storage=` source not served from storage, a `#@ persist`
|
|
3118
|
-
source that was not recognized as materializable, a persist
|
|
3119
|
-
|
|
3120
|
-
|
|
3128
|
+
source that was not recognized as materializable, a `#@ persist`
|
|
3129
|
+
REFUSED by the compile-time eligibility gate (one entry per
|
|
3130
|
+
`BuildPlan.refusedSources` member, carrying that gate's own message),
|
|
3131
|
+
a persist-target collision, and materialization-config problems that
|
|
3132
|
+
degrade attribution. A refusal is the one materialization finding the
|
|
3133
|
+
build plan cannot also be read for: a refused `storage`/`colocated`
|
|
3134
|
+
source is ABSENT from `BuildPlan.sources`, so nothing there records
|
|
3135
|
+
that the annotation was written at all. Discovery findings: a model listed in `explores` whose
|
|
3121
3136
|
export closure surfaces no sources or named queries, so it lists as
|
|
3122
3137
|
empty and renders a blank page. Dashboard findings: a
|
|
3123
3138
|
`dashboards/` file whose `# artifact` tag does not parse or does not
|
|
@@ -3152,7 +3167,7 @@ components:
|
|
|
3152
3167
|
FAN-OUT join (`join_many` or `join_cross`), which can multiply rows,
|
|
3153
3168
|
while a `join_one` is permitted and a measure aggregating through one
|
|
3154
3169
|
is served normally; a base source that already fails persist eligibility (unbound
|
|
3155
|
-
parameters, `given` references,
|
|
3170
|
+
parameters, `given` references, authorize gates); `sharing=` or
|
|
3156
3171
|
`schedule=` at the resource level; and a synthesized rollup name that
|
|
3157
3172
|
collides with an existing model object.
|
|
3158
3173
|
|
|
@@ -3274,8 +3289,8 @@ components:
|
|
|
3274
3289
|
directly queryable (denied with 404).
|
|
3275
3290
|
The `/compile` endpoint is exempt (compile is the authoring loop;
|
|
3276
3291
|
the boundary is discovery curation, not access control — for
|
|
3277
|
-
confidentiality use `#(authorize)`, which gates compile too).
|
|
3278
|
-
source that is both hidden and
|
|
3292
|
+
confidentiality use `#(authorize)`, which gates compile too).
|
|
3293
|
+
A source that is both hidden and authorize-gated still answers
|
|
3279
3294
|
`/compile` with the generic 404, so the exemption cannot be used to
|
|
3280
3295
|
enumerate gated names.
|
|
3281
3296
|
`"all"` decouples the axes: `explores`/`export {}` gate discovery
|
|
@@ -3283,7 +3298,7 @@ components:
|
|
|
3283
3298
|
`explores` is absent there is no curated surface, so both modes are
|
|
3284
3299
|
equivalent (everything queryable). Invalid values fall back to
|
|
3285
3300
|
`"declared"`. Identity-based access is a separate concern — see
|
|
3286
|
-
`#(authorize)`.
|
|
3301
|
+
`#(authorize)` and `#(access_filter)`.
|
|
3287
3302
|
manifestLocation:
|
|
3288
3303
|
type: ["string", "null"]
|
|
3289
3304
|
description: |
|
|
@@ -4196,7 +4211,7 @@ components:
|
|
|
4196
4211
|
description: |
|
|
4197
4212
|
The givens the suggest query needs in its request to run: the ones
|
|
4198
4213
|
the source it reads is scoped by (a source-level `where: … ~ $X`)
|
|
4199
|
-
or gated by (an
|
|
4214
|
+
or gated by (an authorize gate reading `$X`), plus, for the `query`
|
|
4200
4215
|
form, the named query's own. A client sends the current values of
|
|
4201
4216
|
exactly these, so a gated source's options load while the option
|
|
4202
4217
|
list still does not depend on the page's other filters. Absent
|
|
@@ -4271,41 +4286,66 @@ components:
|
|
|
4271
4286
|
authorize:
|
|
4272
4287
|
type: array
|
|
4273
4288
|
description: >-
|
|
4274
|
-
Effective authorize
|
|
4275
|
-
|
|
4276
|
-
|
|
4277
|
-
|
|
4278
|
-
|
|
4279
|
-
|
|
4280
|
-
|
|
4281
|
-
|
|
4282
|
-
|
|
4283
|
-
|
|
4284
|
-
|
|
4285
|
-
|
|
4286
|
-
|
|
4287
|
-
|
|
4288
|
-
200 with zero rows as "no gate applied". A 403 means the gate
|
|
4289
|
-
could not be applied at all: the entry point renamed or dropped a
|
|
4290
|
-
field the gate reads, or a given the gate names was not supplied.
|
|
4291
|
-
Both are denials, but only one is visible as a status code.
|
|
4289
|
+
Effective `#(authorize)` expressions locking this source: a rule
|
|
4290
|
+
about the CALLER (`'literal' <op> $GIVEN`), or a whole-body
|
|
4291
|
+
`"true"`/`"false"` sentinel. It answers whether the caller may
|
|
4292
|
+
reach the source at all, so **a caller it does not admit is
|
|
4293
|
+
refused with HTTP 403** — not served zero rows. An empty or absent
|
|
4294
|
+
list means no lock.
|
|
4295
|
+
|
|
4296
|
+
Reported whether the gate is declared on this source itself or
|
|
4297
|
+
carried in from elsewhere (the source it extends, a query-source
|
|
4298
|
+
base, a composite member). Where the gate registry cannot
|
|
4299
|
+
attribute an expression to a declaring source it reports `"false"`
|
|
4300
|
+
instead — a fail-closed placeholder, not something the author
|
|
4301
|
+
wrote, and one more reason to read this list only as "locked"
|
|
4302
|
+
rather than as a predicate.
|
|
4292
4303
|
|
|
4293
4304
|
IMPORTANT for anything re-implementing the decision: this flat
|
|
4294
4305
|
list is not a predicate you can evaluate, and it is not a count of
|
|
4295
|
-
one. A source may declare
|
|
4296
|
-
list flattens every gate carried in,
|
|
4297
|
-
normal
|
|
4298
|
-
authored gate twice, once from its base and once
|
|
4299
|
-
member. Expressions
|
|
4300
|
-
AND-ed rather than OR-ed. Treat the list as
|
|
4301
|
-
constraints apply": use it to decide THAT a source
|
|
4302
|
-
to recompute WHETHER a given caller passes. Reading
|
|
4303
|
-
disjunction grants where Publisher denies.
|
|
4306
|
+
one. A source may declare more than one gate of its OWN — repeats
|
|
4307
|
+
AND together — and the list also flattens every gate carried in,
|
|
4308
|
+
so several elements are normal; a query source over a composite
|
|
4309
|
+
reports the same authored gate twice, once from its base and once
|
|
4310
|
+
from the resolved member. Expressions from different declaring
|
|
4311
|
+
sources are likewise AND-ed rather than OR-ed. Treat the list as
|
|
4312
|
+
"at least these constraints apply": use it to decide THAT a source
|
|
4313
|
+
is locked, not to recompute WHETHER a given caller passes. Reading
|
|
4314
|
+
it as a pure disjunction grants where Publisher denies.
|
|
4315
|
+
|
|
4316
|
+
Read the sentinels ELEMENT-WISE, never as a verdict on the list: a
|
|
4317
|
+
list is unlocked only when `"true"` is its SOLE element, because
|
|
4318
|
+
gates from different declaring sources are flattened in here and
|
|
4319
|
+
AND together, so `["true", "'finance' in $GROUPS"]` is a real shape
|
|
4320
|
+
and is locked. `"false"` needs no such care — anywhere in the list
|
|
4321
|
+
it denies.
|
|
4304
4322
|
|
|
4305
4323
|
Givens are caller-asserted, so this is a boundary only behind a
|
|
4306
4324
|
trusted tier — see docs/authorize.md.
|
|
4307
4325
|
items:
|
|
4308
4326
|
type: string
|
|
4327
|
+
accessFilter:
|
|
4328
|
+
type: array
|
|
4329
|
+
description: >-
|
|
4330
|
+
Effective `#(access_filter)` expressions filtering this source's
|
|
4331
|
+
rows: `field_path <op> $GIVEN`, grafted onto the source the query
|
|
4332
|
+
enters through. It answers which rows the caller may see, so **a
|
|
4333
|
+
caller it admits nowhere gets HTTP 200 with zero rows**, not a 403.
|
|
4334
|
+
An empty or absent list means no row filter.
|
|
4335
|
+
|
|
4336
|
+
Do not read a 200 with zero rows as "no filter applied", and do not
|
|
4337
|
+
read a non-empty result as proof rows got through: an ungrouped
|
|
4338
|
+
aggregate is row-count-preserving over empty input, so `count()`
|
|
4339
|
+
returns one row reading 0 even when the filter admitted nothing.
|
|
4340
|
+
|
|
4341
|
+
Same flattening, AND-not-OR and attribution caveats as `authorize`
|
|
4342
|
+
apply — this is a signal that the source is filtered, not a
|
|
4343
|
+
predicate to re-evaluate. There are no sentinels on this route:
|
|
4344
|
+
`true` and `false` belong to `authorize`. Givens are
|
|
4345
|
+
caller-asserted, so this is a boundary only behind a trusted tier —
|
|
4346
|
+
see docs/authorize.md.
|
|
4347
|
+
items:
|
|
4348
|
+
type: string
|
|
4309
4349
|
|
|
4310
4350
|
QueryRequest:
|
|
4311
4351
|
type: object
|
|
@@ -5926,7 +5966,7 @@ components:
|
|
|
5926
5966
|
One `#@ persist` source refused at compile time, and why. Computed
|
|
5927
5967
|
from the SAME tier-appropriate eligibility assert the build path
|
|
5928
5968
|
itself enforces (the colocated tier's post-relaxation admission for a
|
|
5929
|
-
proven row-level, fully-attributed
|
|
5969
|
+
proven row-level, fully-attributed authorize gate applies here
|
|
5930
5970
|
too), so a source this reports as refused is refused for the tier it
|
|
5931
5971
|
would actually build under — never the unconditional
|
|
5932
5972
|
`storage=`-destination check applied to a source that declares no
|
|
@@ -5955,12 +5995,12 @@ components:
|
|
|
5955
5995
|
Which build path this source was evaluated against: `storage` for
|
|
5956
5996
|
a source declaring `#@ persist storage=<ref>` (evaluated against
|
|
5957
5997
|
the full storage-destination eligibility gate, which never
|
|
5958
|
-
admits an
|
|
5998
|
+
admits an authorize-gated source); `colocated` for a plain
|
|
5959
5999
|
`#@ persist` (evaluated against the colocated gate, which admits
|
|
5960
6000
|
a proven row-level, fully-attributed gate); `preaggregate` for a
|
|
5961
6001
|
`#@ preaggregate` rollup (evaluated against the pre-aggregation
|
|
5962
6002
|
gate, which refuses unconditionally when the rollup's base is
|
|
5963
|
-
|
|
6003
|
+
authorize-gated — rollups group away the gate column, so
|
|
5964
6004
|
there is no row-level admission the way colocated has).
|
|
5965
6005
|
reason:
|
|
5966
6006
|
type: string
|
|
@@ -5969,21 +6009,48 @@ components:
|
|
|
5969
6009
|
free_parameter,
|
|
5970
6010
|
given,
|
|
5971
6011
|
given_in_persisted_query,
|
|
6012
|
+
dynamic_projection,
|
|
6013
|
+
dynamic_join,
|
|
6014
|
+
dynamic_joined_where,
|
|
6015
|
+
partition_without_storage,
|
|
6016
|
+
partition_column_unknown,
|
|
6017
|
+
partition_column_not_public,
|
|
6018
|
+
merge_key_scope_unresolved,
|
|
6019
|
+
preaggregate_over_dynamic_source,
|
|
5972
6020
|
authorize,
|
|
5973
|
-
partition,
|
|
5974
6021
|
not_duckdb_portable,
|
|
5975
6022
|
public_surface_unknown,
|
|
5976
6023
|
]
|
|
5977
6024
|
description: >-
|
|
5978
|
-
The bounded refusal reason. Only
|
|
5979
|
-
`
|
|
5980
|
-
|
|
6025
|
+
The bounded refusal reason. Only the compile-time reasons can
|
|
6026
|
+
appear here — `free_parameter`, `authorize`, the four
|
|
6027
|
+
that name where a given the build could not strip sits
|
|
6028
|
+
(`given_in_persisted_query`, `dynamic_projection`, `dynamic_join`,
|
|
6029
|
+
`dynamic_joined_where`), the three that name an unusable
|
|
6030
|
+
`partition=` (`partition_without_storage`,
|
|
6031
|
+
`partition_column_unknown`, `partition_column_not_public`),
|
|
6032
|
+
`merge_key_scope_unresolved` (a `merge_key=` whose caller scope
|
|
6033
|
+
cannot be expressed over the stored table's own columns), and
|
|
6034
|
+
`preaggregate_over_dynamic_source` (a rollup whose base is scoped by
|
|
6035
|
+
a given, which has no read-time re-application to put the term back)
|
|
6036
|
+
— those being the only reasons the two compile-time eligibility
|
|
5981
6037
|
asserts this collection is computed from produce.
|
|
5982
|
-
|
|
5983
|
-
|
|
5984
|
-
|
|
5985
|
-
|
|
5986
|
-
|
|
6038
|
+
|
|
6039
|
+
|
|
6040
|
+
`given_in_persisted_query` is raised by BOTH gates, for one
|
|
6041
|
+
condition: the BUILD would substitute a given's value, so the
|
|
6042
|
+
artifact holds one caller's slice. On colocated that is a build that
|
|
6043
|
+
runs and lies; on a storage destination the same placement also
|
|
6044
|
+
leaves nothing for the read to re-apply. A given in the source's
|
|
6045
|
+
extend block is neither — it is left out of the build and applied
|
|
6046
|
+
per caller at read — and is admitted on both tiers.
|
|
6047
|
+
|
|
6048
|
+
|
|
6049
|
+
`given` is retained for records that already carry it and is no
|
|
6050
|
+
longer produced. It was the storage tier's blanket refusal of any
|
|
6051
|
+
given reference, and the positional reasons above replaced it: where
|
|
6052
|
+
a given sits decides the outcome, so a single reason covering every
|
|
6053
|
+
placement can no longer be raised. `not_duckdb_portable` is decided against the
|
|
5987
6054
|
post-build captured schema, which does not exist at compile time,
|
|
5988
6055
|
and `public_surface_unknown` is raised by the build-time narrowing
|
|
5989
6056
|
of a stored table to the source's public columns; both are listed
|
|
@@ -6025,6 +6092,26 @@ components:
|
|
|
6025
6092
|
items:
|
|
6026
6093
|
type: string
|
|
6027
6094
|
|
|
6095
|
+
StrippedTerm:
|
|
6096
|
+
type: object
|
|
6097
|
+
required: [code, givens]
|
|
6098
|
+
description: >-
|
|
6099
|
+
One `where:` conjunct a storage build leaves out of the artifact and the
|
|
6100
|
+
read puts back. Its `code` is the author's verbatim expression, which is
|
|
6101
|
+
what a serve shape re-emits; `givens` are the names that expression reads,
|
|
6102
|
+
which is what the shape must declare for it to compile.
|
|
6103
|
+
properties:
|
|
6104
|
+
code:
|
|
6105
|
+
type: string
|
|
6106
|
+
description: The author's verbatim filter expression, e.g. `org_id = $ORG_ID`.
|
|
6107
|
+
givens:
|
|
6108
|
+
type: array
|
|
6109
|
+
items:
|
|
6110
|
+
type: string
|
|
6111
|
+
description: >-
|
|
6112
|
+
The given names this term reads, in first-seen order. A reader must
|
|
6113
|
+
bind these for the term to apply; binding none applies each given's
|
|
6114
|
+
declared default, as a live query would.
|
|
6028
6115
|
PersistSourcePlan:
|
|
6029
6116
|
type: object
|
|
6030
6117
|
required: [name, sourceID, connectionName, sourceEntityId, sql, columns]
|
|
@@ -6090,6 +6177,45 @@ components:
|
|
|
6090
6177
|
description:
|
|
6091
6178
|
The source's build SQL (with the build manifest applied for upstream
|
|
6092
6179
|
rewrites).
|
|
6180
|
+
partition:
|
|
6181
|
+
type: array
|
|
6182
|
+
items:
|
|
6183
|
+
type: string
|
|
6184
|
+
description: >-
|
|
6185
|
+
The source's declared `#@ persist partition=` columns, resolved
|
|
6186
|
+
against its public projection and reported in the author's order,
|
|
6187
|
+
which is the order the stored table's directories nest in. Absent or
|
|
6188
|
+
empty means the table is written unpartitioned, which is the default
|
|
6189
|
+
and what every source built before this field existed means.
|
|
6190
|
+
|
|
6191
|
+
|
|
6192
|
+
A layout, not an access control. Every term the build strips from a
|
|
6193
|
+
source is re-applied when the artifact is read whether or not its
|
|
6194
|
+
column is partitioned, so a list omitting the column a caller is
|
|
6195
|
+
scoped by costs a full scan and never widens what that caller sees.
|
|
6196
|
+
Consumers should not infer isolation from it.
|
|
6197
|
+
|
|
6198
|
+
|
|
6199
|
+
`partition=` requires `storage=`; declared without one it is a
|
|
6200
|
+
publish refusal rather than an ignored key, so this is empty for
|
|
6201
|
+
every colocated source.
|
|
6202
|
+
strippedTerms:
|
|
6203
|
+
type: array
|
|
6204
|
+
items:
|
|
6205
|
+
$ref: "#/components/schemas/StrippedTerm"
|
|
6206
|
+
description: >-
|
|
6207
|
+
The source's extend-block `where:` conjuncts that reference a given —
|
|
6208
|
+
the terms Malloy leaves OUT of the build and that must be re-applied,
|
|
6209
|
+
with the caller's own values, whenever the artifact is read. Absent
|
|
6210
|
+
or empty means the artifact is the whole relation and needs no
|
|
6211
|
+
re-application.
|
|
6212
|
+
|
|
6213
|
+
|
|
6214
|
+
Reported so a consumer that supplies its own serve bindings can tell
|
|
6215
|
+
that this artifact is under-filtered on its own, and which givens a
|
|
6216
|
+
reader has to bind for it to be served correctly. The publisher's own
|
|
6217
|
+
serve path re-derives these from the compiled model rather than from
|
|
6218
|
+
here.
|
|
6093
6219
|
refresh:
|
|
6094
6220
|
type: ["string", "null"]
|
|
6095
6221
|
description: >-
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{Q as r,K as t,j as e,a7 as i,ai as o}from"./index-
|
|
1
|
+
import{Q as r,K as t,j as e,a7 as i,ai as o}from"./index-C5BtJ1GX.js";function m(){const s=r(),{environmentName:n}=t();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{Q as t,j as o,f as a}from"./index-
|
|
1
|
+
import{Q as t,j as o,f as a}from"./index-C5BtJ1GX.js";function s(){const n=t();return o.jsx(a,{onClickEnvironment:n})}export{s as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{c,j as s}from"./index-
|
|
1
|
+
import{c,j as s}from"./index-C5BtJ1GX.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,h as de,i as De,k as Q,l as pe,T as G,n as J,o as Te,p as Re,q as Be,t as ue,v as Le,w as oe,x as He,y as $e,z as Ne,A as W,C as $,M as Ae,P as Oe,D as We,E as Ve,S as Qe,F as Ue,G as A,I as N,H as Fe,J as he,K as fe,Q as Z,L as m,N as Xe,O 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,h as de,i as De,k as Q,l as pe,T as G,n as J,o as Te,p as Re,q as Be,t as ue,v as Le,w as oe,x as He,y as $e,z as Ne,A as W,C as $,M as Ae,P as Oe,D as We,E as Ve,S as Qe,F as Ue,G as A,I as N,H as Fe,J as he,K as fe,Q as Z,L as m,N as Xe,O 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-C5BtJ1GX.js";import{D as Ze,L as qe}from"./LightMode-BpHRmI5M.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:Q(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))},U=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:U,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 U=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:Q(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:Q(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:Q(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[U],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(Qe,{...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}=Ue();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(Qt,{isCollapsed:e})]}),t.jsx(Ut,{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 Qt({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 Ut({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,Q as f,r as x,a1 as v,H as b,J as $,a2 as k,L 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,K as I,U as S,ac as T,ad as w,ae as M,T as j,af as h,ag as O}from"./index-
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/index.es-VI5lesX5.js","assets/index-C5BtJ1GX.js","assets/index-DUqldpo0.css","assets/ToggleButtonGroup-BHEVw4Ti.js"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{c as W,j as a,Q as f,r as x,a1 as v,H as b,J as $,a2 as k,L 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,K as I,U as S,ac as T,ad as w,ae as M,T as j,af as h,ag as O}from"./index-C5BtJ1GX.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-VI5lesX5.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-VI5lesX5.js"),__vite__mapDeps([0,1,2,3])).then(e=>({default:e.DashboardEditor})));function Q({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 V({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 B(){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(Q,{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(w,{resourceUri:l,runOnDemand:!0,maxResultSize:512*1024})]});if(s?.endsWith(".malloynb"))return a.jsx(V,{environmentName:e.environmentName,packageName:e.packageName,notebookPath:s});const c=/\.[^./]+$/.test(s??""),d=M({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(O,{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{B as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{K as r,Q as t,j as e,a7 as c,ah as o}from"./index-
|
|
1
|
+
import{K as r,Q as t,j as e,a7 as c,ah as o}from"./index-C5BtJ1GX.js";function h(){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{h 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,L as oe,r as p,az as ce,F as he,n as ue,aA as me,ao as be,aB as H,a8 as J,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-c3i6ScGn.js","assets/index-C5BtJ1GX.js","assets/index-DUqldpo0.css","assets/index-w_0OQJgZ.js"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{j as D,L as oe,r as p,az as ce,F as he,n as ue,aA as me,ao as be,aB as H,a8 as J,aC as ye,aD as fe,aE as pe,aF as ge,aG as ae}from"./index-C5BtJ1GX.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 J(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"&&J(()=>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 J(()=>import("./index-c3i6ScGn.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,L as n,T as t}from"./index-
|
|
1
|
+
import{aj as o,j as r,ak as s,aa as a,L as n,T as t}from"./index-C5BtJ1GX.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};
|