@blazes/data-visualization 1.0.0-alpha.1 → 1.0.0-alpha.2
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/README.md +20 -0
- package/dist/.vite/manifest.json +26 -26
- package/dist/core/config/dashboard-config-schema.d.ts +13 -0
- package/dist/core/config/dashboard-config-schema.d.ts.map +1 -1
- package/dist/core/config/dashboard-config.d.ts +4 -0
- package/dist/core/config/dashboard-config.d.ts.map +1 -1
- package/dist/core/export/index.d.ts +1 -0
- package/dist/core/export/index.d.ts.map +1 -1
- package/dist/core/export/panel-export.d.ts +4 -0
- package/dist/core/export/panel-export.d.ts.map +1 -0
- package/dist/core/index.js +63 -61
- package/dist/core/runtime/dashboard-runtime.d.ts +4 -0
- package/dist/core/runtime/dashboard-runtime.d.ts.map +1 -1
- package/dist/{dashboard-runtime-8a-9P8Ku.js → dashboard-runtime-6VlVQIuQ.js} +27 -27
- package/dist/{dashboard-runtime-8a-9P8Ku.js.map → dashboard-runtime-6VlVQIuQ.js.map} +1 -1
- package/dist/experimental/s2/index.js +12 -12
- package/dist/index.css +1 -1
- package/dist/index.js +63 -61
- package/dist/{csv-Dyrr2yMA.js → panel-export-Di_5Frul.js} +24 -19
- package/dist/panel-export-Di_5Frul.js.map +1 -0
- package/dist/renderers/word-cloud/index.js +1 -1
- package/dist/{runtime-schema-BO2qLlvE.js → runtime-schema-BmeEvFU-.js} +42 -34
- package/dist/runtime-schema-BmeEvFU-.js.map +1 -0
- package/dist/{standard-definitions-DHtaLAf1.js → standard-definitions-hgJ-kOoz.js} +5 -5
- package/dist/{standard-definitions-DHtaLAf1.js.map → standard-definitions-hgJ-kOoz.js.map} +1 -1
- package/dist/vue/components/DashboardPanel.vue.d.ts.map +1 -1
- package/dist/vue/components/DashboardRenderer.vue.d.ts.map +1 -1
- package/dist/vue/index.js +609 -592
- package/dist/vue/index.js.map +1 -1
- package/package.json +1 -1
- package/dist/csv-Dyrr2yMA.js.map +0 -1
- package/dist/runtime-schema-BO2qLlvE.js.map +0 -1
|
@@ -1,35 +1,35 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { K as u, J as m, v as p, t as b } from "../../runtime-schema-BmeEvFU-.js";
|
|
2
2
|
const n = "pivotTableS2", f = "pivotTableS2.default";
|
|
3
|
-
function
|
|
3
|
+
function v(e, t) {
|
|
4
4
|
const o = e.get(t);
|
|
5
5
|
if (!o) throw new Error(`Pivot table field is missing from the dataset: ${t}`);
|
|
6
6
|
return o;
|
|
7
7
|
}
|
|
8
8
|
function c(e, t, o, i) {
|
|
9
|
-
var r,
|
|
10
|
-
const a =
|
|
9
|
+
var r, s;
|
|
10
|
+
const a = v(e, t), l = ((s = (r = o == null ? void 0 : o.common) == null ? void 0 : r.formatOverrides) == null ? void 0 : s[a.key]) ?? a.format ?? i;
|
|
11
11
|
return Object.freeze({
|
|
12
12
|
field: a.key,
|
|
13
13
|
label: a.label,
|
|
14
|
-
...
|
|
14
|
+
...l ? { format: Object.freeze({ ...l }) } : {},
|
|
15
15
|
...a.unit ? { unit: a.unit } : {}
|
|
16
16
|
});
|
|
17
17
|
}
|
|
18
|
-
const
|
|
18
|
+
const S = {
|
|
19
19
|
id: f,
|
|
20
20
|
adapt({ dataset: e, binding: t, enhancement: o }) {
|
|
21
|
-
const i = new Map(e.fields.map((r) => [r.key, r])), a = [...t.rowFields, ...t.columnFields, ...t.valueFields],
|
|
22
|
-
(r) => Object.freeze(Object.fromEntries(a.map((
|
|
21
|
+
const i = new Map(e.fields.map((r) => [r.key, r])), a = [...t.rowFields, ...t.columnFields, ...t.valueFields], l = e.rows.map(
|
|
22
|
+
(r) => Object.freeze(Object.fromEntries(a.map((s) => [s, r[s]])))
|
|
23
23
|
);
|
|
24
24
|
return Object.freeze({
|
|
25
25
|
type: n,
|
|
26
|
-
empty:
|
|
26
|
+
empty: l.length === 0,
|
|
27
27
|
rowFields: Object.freeze(t.rowFields.map((r) => c(i, r, o))),
|
|
28
28
|
columnFields: Object.freeze(t.columnFields.map((r) => c(i, r, o))),
|
|
29
29
|
valueFields: Object.freeze(
|
|
30
30
|
t.valueFields.map((r) => c(i, r, o, { type: "number" }))
|
|
31
31
|
),
|
|
32
|
-
rows: Object.freeze(
|
|
32
|
+
rows: Object.freeze(l)
|
|
33
33
|
});
|
|
34
34
|
}
|
|
35
35
|
}, T = Object.freeze({
|
|
@@ -40,7 +40,7 @@ const v = {
|
|
|
40
40
|
capabilities: Object.freeze({ responsive: !0, csv: !0, png: !1, selection: !1 })
|
|
41
41
|
});
|
|
42
42
|
function O(e) {
|
|
43
|
-
return e.adapters.register(
|
|
43
|
+
return e.adapters.register(S), e.rendererDefinitions.register(T), e;
|
|
44
44
|
}
|
|
45
45
|
async function d() {
|
|
46
46
|
return (await import("../../PivotTableS2Renderer-C-Urwhuv.js")).default;
|
|
@@ -57,7 +57,7 @@ export {
|
|
|
57
57
|
f as PIVOT_TABLE_S2_ADAPTER_ID,
|
|
58
58
|
n as S2_RENDERER_ID,
|
|
59
59
|
d as loadPivotTableS2Renderer,
|
|
60
|
-
|
|
60
|
+
S as pivotTableS2Adapter,
|
|
61
61
|
T as pivotTableS2RendererDefinition,
|
|
62
62
|
z as registerPivotTableS2,
|
|
63
63
|
O as registerPivotTableS2Core,
|
package/dist/index.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
.dv-filter-bar[data-v-45855b0b]{display:flex;align-items:center;gap:12px;padding:11px 14px;background:#fff;border:1px solid var(--dv-card-border, #e1e6ed);border-radius:7px;box-shadow:0 1px 2px #10182809,0 5px 14px #10182806}.dv-filter-bar__controls[data-v-45855b0b]{flex:1;display:grid;grid-template-columns:repeat(24,minmax(0,1fr));column-gap:16px;row-gap:8px}.dv-filter-bar__control[data-v-45855b0b]{grid-column:span var(--dv-filter-xs);min-width:0}.dv-filter-bar__label[data-v-45855b0b]{display:block;margin-bottom:6px;color:var(--dv-text-secondary, #657184);font-size:12px;font-weight:600;line-height:18px;white-space:nowrap}.dv-filter-bar__control[data-v-45855b0b] .ant-select{width:100%;min-width:0}.dv-filter-bar__control[data-v-45855b0b] .ant-select-single .ant-select-selector,.dv-filter-bar__control[data-v-45855b0b] .ant-select-multiple .ant-select-selector{height:32px;min-height:32px}.dv-filter-bar__control[data-v-45855b0b] .ant-select-multiple .ant-select-selection-overflow{flex-wrap:nowrap;overflow:hidden}.dv-filter-bar__date-range[data-v-45855b0b]{display:flex;width:fit-content;min-width:0;max-width:100%;align-items:center;gap:10px}.dv-filter-bar__range-picker[data-v-45855b0b]{width:320px;min-width:220px;max-width:320px;height:32px;flex:0 1 320px}.dv-filter-bar__presets[data-v-45855b0b]{display:inline-flex;height:32px;flex:none;align-items:center;gap:2px;padding:3px;border:1px solid #e2e7ed;border-radius:6px;background:#f3f5f7}.dv-filter-bar__presets[data-v-45855b0b] .ant-radio-button-wrapper{height:24px;padding:0 8px;border:0;border-radius:4px;color:#737e8e;background:transparent;box-shadow:none;font-size:12px;font-weight:500;line-height:24px}.dv-filter-bar__presets[data-v-45855b0b] .ant-radio-button-wrapper:before{display:none}.dv-filter-bar__presets[data-v-45855b0b] .ant-radio-button-wrapper-checked{color:var(--dv-primary, #315fc4);background:#fff;box-shadow:0 1px 2px #10182814,0 0 0 1px #10182806;font-weight:600}.dv-filter-bar[data-v-45855b0b] .ant-select-selector,.dv-filter-bar[data-v-45855b0b] .ant-picker{border-color:#dce2e9;border-radius:5px;box-shadow:none}.dv-filter-bar__refresh[data-v-45855b0b]{width:78px;height:32px;flex:0 0 78px;border-color:var(--dv-primary, #315fc4);border-radius:6px;background:var(--dv-primary, #315fc4);box-shadow:none}@media (min-width: 576px){.dv-filter-bar__control[data-v-45855b0b]{grid-column:span var(--dv-filter-sm)}}@media (min-width: 768px){.dv-filter-bar__control[data-v-45855b0b]{grid-column:span var(--dv-filter-md);display:flex;align-items:center}.dv-filter-bar__label[data-v-45855b0b]{flex:none;margin:0 8px 0 0}.dv-filter-bar--flow .dv-filter-bar__controls[data-v-45855b0b]{display:flex;flex-wrap:wrap;align-items:center;column-gap:20px}.dv-filter-bar--flow .dv-filter-bar__control[data-v-45855b0b]{width:auto;flex:0 1 auto;grid-column:auto}.dv-filter-bar--flow .dv-filter-bar__control--select[data-v-45855b0b],.dv-filter-bar--flow .dv-filter-bar__control--multi-select[data-v-45855b0b]{width:clamp(220px,20vw,320px);flex-basis:clamp(220px,20vw,320px)}}@media (min-width: 992px){.dv-filter-bar__control[data-v-45855b0b]{grid-column:span var(--dv-filter-lg)}}@media (min-width: 1200px){.dv-filter-bar__control[data-v-45855b0b]{grid-column:span var(--dv-filter-xl)}}@media (min-width: 768px) and (max-width: 1300px){.dv-filter-bar__date-range[data-v-45855b0b]{gap:6px}.dv-filter-bar__range-picker[data-v-45855b0b]{width:288px;min-width:200px;max-width:288px;flex-basis:288px}.dv-filter-bar__presets[data-v-45855b0b] .ant-radio-button-wrapper{padding:0 5px;font-size:11px}}@media (max-width: 767px){.dv-filter-bar[data-v-45855b0b]{align-items:stretch;flex-direction:column}.dv-filter-bar__refresh[data-v-45855b0b]{align-self:flex-end}.dv-filter-bar__controls[data-v-45855b0b]{column-gap:0}.dv-filter-bar__date-range[data-v-45855b0b]{width:100%;align-items:stretch;flex-direction:column}.dv-filter-bar__range-picker[data-v-45855b0b]{width:100%;min-width:0;max-width:none;flex-basis:auto}.dv-filter-bar__refresh[data-v-45855b0b]{flex-basis:32px}.dv-filter-bar__date-popup .ant-picker-panels>.ant-picker-panel:last-child{display:none}.dv-filter-bar__date-popup .ant-picker-panel:first-child .ant-picker-header-next-btn,.dv-filter-bar__date-popup .ant-picker-panel:first-child .ant-picker-header-super-next-btn{visibility:visible!important}}.dv-panel[data-v-b524c4f2]{height:100%;overflow:hidden;border:1px solid var(--dv-card-border, #e1e6ed);border-radius:7px;background:#fff;box-shadow:0 1px 2px #10182809,0 5px 14px #10182806}.dv-panel[data-v-b524c4f2] .ant-card-head{min-height:50px;padding:0 16px;border-bottom-color:var(--dv-card-divider, #edf0f4)}.dv-panel[data-v-b524c4f2] .ant-card-head-title,.dv-panel[data-v-b524c4f2] .ant-card-extra{padding:10px 0}.dv-panel[data-v-b524c4f2] .ant-card-head-title{padding:13px 0}.dv-panel[data-v-b524c4f2] .ant-card-body{position:relative;display:flex;flex-direction:column;box-sizing:border-box;padding:15px 16px}.dv-panel__heading[data-v-b524c4f2],.dv-panel__title-group[data-v-b524c4f2],.dv-panel__actions[data-v-b524c4f2]{display:flex;align-items:center;gap:6px}.dv-panel__heading[data-v-b524c4f2]{min-width:0;flex-wrap:wrap;row-gap:2px;line-height:20px}.dv-panel__title-group[data-v-b524c4f2]{min-width:0}.dv-panel__title-group[data-v-b524c4f2] .anticon{flex-shrink:0}.dv-panel__title-note[data-v-b524c4f2]{min-width:0;max-width:100%;color:#98a2b3;font-size:12px;font-weight:400;line-height:20px;overflow-wrap:anywhere;white-space:normal}.dv-panel__title[data-v-b524c4f2]{overflow:hidden;color:var(--dv-text-title, #273244);font-size:14px;font-weight:650;line-height:20px;text-overflow:ellipsis;white-space:nowrap}.dv-panel__heading[data-v-b524c4f2] svg{color:#8a94a6;font-size:13px}.dv-panel__actions[data-v-b524c4f2]{gap:4px}.dv-panel__actions[data-v-b524c4f2] .ant-btn{width:28px;height:28px;padding:0;border-radius:5px;color:#6e7889}.dv-panel__actions[data-v-b524c4f2] .ant-btn:hover{color:var(--dv-primary, #315fc4);background:#f0f4fa}.dv-panel__filters[data-v-b524c4f2]{display:none}.dv-panel__warning[data-v-b524c4f2]{color:#f59e0b;font-size:15px}.dv-panel__state[data-v-b524c4f2]{min-height:190px;flex:1;display:flex;align-items:center;justify-content:center}.dv-panel__state--empty[data-v-b524c4f2]{box-sizing:border-box;flex-direction:column;gap:14px;padding:24px 12px;text-align:center}.dv-panel__empty-icon[data-v-b524c4f2]{display:grid;width:56px;height:56px;flex-shrink:0;place-items:center;border:1px solid var(--dv-card-divider, #edf0f4);border-radius:16px;color:#8da2c5;background:linear-gradient(145deg,#f8fafd,#eff3f9);font-size:26px}.dv-panel__empty-copy[data-v-b524c4f2]{max-width:100%}.dv-panel__empty-title[data-v-b524c4f2]{color:var(--dv-text-secondary, #657184);font-size:13px;font-weight:500;line-height:20px}.dv-panel[data-v-b524c4f2] .ant-spin{color:var(--dv-primary, #315fc4)}.dv-panel[data-v-b524c4f2] .ant-spin-dot-item{background-color:currentColor}.dv-panel__failure[data-v-b524c4f2]{display:flex;max-width:min(320px,100%);flex-direction:column;align-items:center;color:#667085;text-align:center}.dv-panel__failure-copy[data-v-b524c4f2]{max-width:100%;min-width:0}.dv-panel__failure-heading[data-v-b524c4f2]{overflow:hidden;color:#526075;font-size:13px;font-weight:600;line-height:20px;text-overflow:ellipsis;white-space:nowrap}.dv-panel__failure-icon[data-v-b524c4f2]{margin-bottom:9px;color:#8592a5;font-size:22px}.dv-panel__failure-detail[data-v-b524c4f2]{max-width:100%;overflow:hidden;margin-top:1px;color:#98a2b3;font-size:12px;line-height:18px;text-overflow:ellipsis;white-space:nowrap}.dv-panel__retry[data-v-b524c4f2]{width:auto;height:28px;margin-top:10px;padding:0 10px;border-color:#dbe1e8;border-radius:5px;color:#59677a;background:#fff;box-shadow:none;font-size:12px}.dv-panel__retry[data-v-b524c4f2]:hover,.dv-panel__retry[data-v-b524c4f2]:focus{border-color:#b8c7e5;color:var(--dv-primary, #315fc4);background:#f7f9fc}.dv-panel__idle[data-v-b524c4f2]{color:#98a0ad;font-size:12px}.dv-panel__renderer[data-v-b524c4f2]{position:relative;min-width:0;flex:1}.dv-panel__refreshing[data-v-b524c4f2]{position:absolute;z-index:1;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;background:#ffffffc2}.dv-panel__updated[data-v-b524c4f2]{display:none;margin-top:8px;color:#98a0ad;font-size:11px;text-align:right}.dv-panel--metric[data-v-b524c4f2] .ant-card-head{min-height:40px;border-bottom:0}.dv-panel--metric[data-v-b524c4f2] .ant-card-head-title{padding:13px 0 4px}.dv-panel--metric[data-v-b524c4f2] .ant-card-extra{padding:8px 0 0}.dv-panel--metric[data-v-b524c4f2] .ant-card-body{padding:2px 16px 13px}.dv-panel--metric .dv-panel__state--loading[data-v-b524c4f2],.dv-panel--metric .dv-panel__state--failure[data-v-b524c4f2]{min-height:0}.dv-panel--metric .dv-panel__failure[data-v-b524c4f2]{width:fit-content;max-width:100%;display:grid;grid-template-columns:20px minmax(0,1fr) 28px;column-gap:8px;text-align:left}.dv-panel--metric .dv-panel__failure-icon[data-v-b524c4f2]{margin-bottom:0;font-size:16px}.dv-panel--metric .dv-panel__failure-detail[data-v-b524c4f2]{display:none}.dv-panel--metric .dv-panel__retry[data-v-b524c4f2]{width:28px;margin-top:0;padding:0;border-color:transparent;background:transparent}.dv-panel--metric .dv-panel__retry-label[data-v-b524c4f2]{display:none}.dv-panel--metric .dv-panel__state--metric-empty[data-v-b524c4f2]{min-height:0;color:#98a0ad;font-size:12px;line-height:20px}.dv-panel--metric .dv-panel__title[data-v-b524c4f2]{color:#637083;font-size:13px;font-weight:550}.dv-panel--metric .dv-panel__actions[data-v-b524c4f2]{opacity:0;transition:opacity .16s ease}.dv-panel--metric:hover .dv-panel__actions[data-v-b524c4f2],.dv-panel--metric:focus-within .dv-panel__actions[data-v-b524c4f2]{opacity:1}.dv-dashboard[data-v-6d4b5bdb]{--dv-card-border: #e1e6ed;--dv-card-divider: #edf0f4;--dv-text-title: #273244;--dv-text-body: #182230;--dv-text-secondary: #657184;--dv-text-muted: #8a94a6;width:100%;min-width:0;color:var(--dv-text-body)}.dv-dashboard__header[data-v-6d4b5bdb]{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:16px}.dv-dashboard__header h1[data-v-6d4b5bdb]{margin:0;font-size:22px;font-weight:650;line-height:30px;letter-spacing:0}.dv-dashboard__header p[data-v-6d4b5bdb]{margin:4px 0 0;color:#64748b;font-size:13px}.dv-dashboard__grid[data-v-6d4b5bdb]{display:grid;grid-template-columns:repeat(24,minmax(0,1fr));gap:14px;margin-top:14px}.dv-dashboard__cell[data-v-6d4b5bdb]{grid-column:span var(--dv-panel-xs);min-width:0}@media (min-width: 576px){.dv-dashboard__cell[data-v-6d4b5bdb]{grid-column:span var(--dv-panel-sm)}}@media (min-width: 768px){.dv-dashboard__cell[data-v-6d4b5bdb]{grid-column:span var(--dv-panel-md)}}@media (min-width: 992px){.dv-dashboard__cell[data-v-6d4b5bdb]{grid-column:span var(--dv-panel-lg)}}@media (min-width: 1200px){.dv-dashboard__cell[data-v-6d4b5bdb]{grid-column:span var(--dv-panel-xl)}}@media (max-width: 767px){.dv-dashboard__grid[data-v-6d4b5bdb]{gap:12px}}.dv-chart-renderer[data-v-4f111bdf]{width:100%;min-width:0}.dv-bar-renderer[data-v-4f111bdf] .bar-container{height:320px!important}.dv-bar-renderer[data-v-4f111bdf] .legend{min-height:18px;margin-bottom:2px;padding:0 4px}.dv-bar-renderer[data-v-4f111bdf] .legend-container{justify-content:flex-end}.dv-bar-renderer[data-v-4f111bdf] .legend-item{margin-right:12px;color:#667085;font-size:11px}.dv-bar-renderer[data-v-4f111bdf] .legend-item-color{width:9px;height:9px;border-radius:3px}.dv-chart-renderer[data-v-efc34766]{width:100%;min-width:0}.dv-line-renderer[data-v-efc34766] .line-container{height:320px}.dv-line-renderer[data-v-efc34766] .legend{min-height:18px;margin-bottom:2px;padding:0 4px}.dv-line-renderer[data-v-efc34766] .legend-container{justify-content:flex-end}.dv-line-renderer[data-v-efc34766] .legend-item{margin-right:12px;color:#667085;font-size:11px}.dv-line-renderer[data-v-efc34766] .legend-item-color{width:8px;height:8px;border-radius:50%}.dv-metric[data-v-efa26253]{min-height:62px;display:flex;flex-direction:column;justify-content:flex-start}.dv-metric__value[data-v-efa26253]{display:flex;align-items:baseline;column-gap:4px;color:#172033;font-size:29px;font-weight:650;letter-spacing:0;line-height:1.2;white-space:nowrap}.dv-metric__number[data-v-efa26253]{font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.dv-metric__unit[data-v-efa26253]{position:relative;top:-1px;color:#7d8797;font-size:12px;font-weight:400;line-height:1}.dv-metric__comparison[data-v-efa26253]{display:flex;align-items:center;gap:10px;margin-top:7px;color:#7b8493;font-size:12px;line-height:18px}.dv-metric__comparison strong[data-v-efa26253]{display:inline-flex;align-items:center;gap:3px;font-weight:600}.dv-metric__comparison--favorable[data-v-efa26253]{color:#00a870}.dv-metric__comparison--unfavorable[data-v-efa26253]{color:#f53f3f}.dv-metric__comparison--neutral[data-v-efa26253]{color:#7b8493}.dv-chart-renderer[data-v-ccdee116]{width:100%;min-width:0}.dv-pie-renderer[data-v-ccdee116] .pie-container{height:320px!important;flex-direction:column-reverse}.dv-pie-renderer[data-v-ccdee116] .legend{min-height:18px;margin:4px 0 0;padding:0 4px}.dv-pie-renderer[data-v-ccdee116] .legend-item{margin-right:12px;color:#667085;font-size:11px}.dv-pie-renderer[data-v-ccdee116] .legend-item-color{width:8px;height:8px;border-radius:50%}.dv-table[data-v-c8a717c4] .ant-table{font-size:12px}.dv-table-scroll[data-v-c8a717c4]{width:100%;overflow-x:auto}.dv-table[data-v-c8a717c4]{min-width:720px}.dv-table[data-v-c8a717c4] .ant-table-thead>tr>th{padding:13px 16px;color:#5e6a7d;border-bottom:1px solid #e5eaf0;font-weight:600;background:#f7f9fb}.dv-table[data-v-c8a717c4] .ant-table-tbody>tr>td{padding:14px 16px;color:#344054;border-bottom:1px solid #edf0f4}.dv-table[data-v-c8a717c4] .ant-table-tbody>tr.ant-table-row:hover>td{background:#f8fafc}.dv-table[data-v-c8a717c4] .dv-table__progress-cell{display:grid;min-width:160px;grid-template-columns:minmax(96px,1fr) 48px;align-items:center;gap:8px}.dv-table[data-v-c8a717c4] .dv-table__progress-cell .ant-progress{margin:0;line-height:1}.dv-table[data-v-c8a717c4] .dv-table__progress-cell .ant-progress-inner{background:#edf0f4}.dv-table[data-v-c8a717c4] .dv-table__progress-cell .ant-progress-bg{background:#315fc4}.dv-table[data-v-c8a717c4] .dv-table__cell-value{color:#657184;font-variant-numeric:tabular-nums;text-align:right}.dv-table[data-v-c8a717c4] .dv-table__trend{display:inline-flex;align-items:center;gap:3px;font-weight:600;line-height:18px;white-space:nowrap}.dv-table[data-v-c8a717c4] .dv-table__trend--neutral{color:#7b8493}.dv-table[data-v-c8a717c4] .dv-table__trend--info{color:#315fc4}.dv-table[data-v-c8a717c4] .dv-table__trend--success{color:#00a870}.dv-table[data-v-c8a717c4] .dv-table__trend--warning{color:#c2410c}.dv-table[data-v-c8a717c4] .dv-table__trend--danger{color:#f53f3f}.dv-table[data-v-c8a717c4] .dv-table__tag{display:inline-flex;align-items:center;gap:4px;margin:0;border-radius:4px;font-size:12px;line-height:20px}.dv-table[data-v-c8a717c4] .dv-table__tag--neutral{color:#475467;border-color:#e4e7ec;background:#f2f4f7}.dv-table[data-v-c8a717c4] .dv-table__tag--info{color:#315fc4;border-color:#cbdafa;background:#eff6ff}.dv-table[data-v-c8a717c4] .dv-table__tag--success{color:#027a48;border-color:#abefc6;background:#ecfdf3}.dv-table[data-v-c8a717c4] .dv-table__tag--warning{color:#c2410c;border-color:#fed7aa;background:#fff7ed}.dv-table[data-v-c8a717c4] .dv-table__tag--danger{color:#b42318;border-color:#fecdca;background:#fef3f2}.dv-table[data-v-c8a717c4] .ant-table-pagination.ant-pagination{display:flex;align-items:center;gap:4px;margin:16px 0 0}.dv-table[data-v-c8a717c4] .ant-table-pagination.ant-pagination:after{display:none}.dv-table[data-v-c8a717c4] .ant-table-pagination.ant-pagination>.ant-pagination-item,.dv-table[data-v-c8a717c4] .ant-table-pagination.ant-pagination>.ant-pagination-prev,.dv-table[data-v-c8a717c4] .ant-table-pagination.ant-pagination>.ant-pagination-next,.dv-table[data-v-c8a717c4] .ant-table-pagination.ant-pagination>.ant-pagination-jump-prev,.dv-table[data-v-c8a717c4] .ant-table-pagination.ant-pagination>.ant-pagination-jump-next{display:flex;min-width:28px;height:28px;align-items:center;justify-content:center;margin:0;border-radius:5px;line-height:1}.dv-table[data-v-c8a717c4] .ant-table-pagination .ant-pagination-item>a,.dv-table[data-v-c8a717c4] .ant-table-pagination .ant-pagination-item-link,.dv-table[data-v-c8a717c4] .ant-table-pagination .ant-pagination-item-container{display:flex;width:100%;height:100%;align-items:center;justify-content:center;padding:0;line-height:1}.dv-table[data-v-c8a717c4] .ant-table-pagination .ant-pagination-item-ellipsis{display:flex;align-items:center;justify-content:center;letter-spacing:1px;line-height:1;text-indent:0}.dv-table[data-v-c8a717c4] .ant-table-pagination .anticon{display:inline-flex;align-items:center;justify-content:center;line-height:1}.dv-table[data-v-c8a717c4] .ant-table-pagination .anticon svg{display:block}.dv-table[data-v-c8a717c4] .ant-table-pagination .ant-pagination-item-active{border-color:var(--dv-primary, #315fc4);background:#f0f4fc;background:color-mix(in srgb,var(--dv-primary, #315fc4) 8%,white)}.dv-table[data-v-c8a717c4] .ant-table-pagination .ant-pagination-item-active>a{color:var(--dv-primary, #315fc4)}.dv-table[data-v-c8a717c4] .ant-table-pagination:not(.ant-pagination-disabled) .ant-pagination-item:not(.ant-pagination-item-disabled):hover,.dv-table[data-v-c8a717c4] .ant-table-pagination:not(.ant-pagination-disabled) .ant-pagination-item:not(.ant-pagination-item-disabled):focus-visible{border-color:var(--dv-primary, #315fc4);background:#f0f4fc;background:color-mix(in srgb,var(--dv-primary, #315fc4) 8%,white)}.dv-table[data-v-c8a717c4] .ant-table-pagination:not(.ant-pagination-disabled) .ant-pagination-item:not(.ant-pagination-item-disabled):hover>a,.dv-table[data-v-c8a717c4] .ant-table-pagination:not(.ant-pagination-disabled) .ant-pagination-item:not(.ant-pagination-item-disabled):focus-visible>a,.dv-table[data-v-c8a717c4] .ant-table-pagination .ant-pagination-item-link-icon,.dv-table[data-v-c8a717c4] .ant-table-pagination:not(.ant-pagination-disabled) .ant-pagination-prev:not(.ant-pagination-disabled):hover .ant-pagination-item-link,.dv-table[data-v-c8a717c4] .ant-table-pagination:not(.ant-pagination-disabled) .ant-pagination-prev:not(.ant-pagination-disabled):focus-visible .ant-pagination-item-link,.dv-table[data-v-c8a717c4] .ant-table-pagination:not(.ant-pagination-disabled) .ant-pagination-next:not(.ant-pagination-disabled):hover .ant-pagination-item-link,.dv-table[data-v-c8a717c4] .ant-table-pagination:not(.ant-pagination-disabled) .ant-pagination-next:not(.ant-pagination-disabled):focus-visible .ant-pagination-item-link{color:var(--dv-primary, #315fc4)}.dv-table[data-v-c8a717c4] .ant-table-pagination:not(.ant-pagination-disabled) .ant-pagination-prev:not(.ant-pagination-disabled):hover .ant-pagination-item-link,.dv-table[data-v-c8a717c4] .ant-table-pagination:not(.ant-pagination-disabled) .ant-pagination-prev:not(.ant-pagination-disabled):focus-visible .ant-pagination-item-link,.dv-table[data-v-c8a717c4] .ant-table-pagination:not(.ant-pagination-disabled) .ant-pagination-next:not(.ant-pagination-disabled):hover .ant-pagination-item-link,.dv-table[data-v-c8a717c4] .ant-table-pagination:not(.ant-pagination-disabled) .ant-pagination-next:not(.ant-pagination-disabled):focus-visible .ant-pagination-item-link{border-color:var(--dv-primary, #315fc4)}
|
|
1
|
+
.dv-filter-bar[data-v-45855b0b]{display:flex;align-items:center;gap:12px;padding:11px 14px;background:#fff;border:1px solid var(--dv-card-border, #e1e6ed);border-radius:7px;box-shadow:0 1px 2px #10182809,0 5px 14px #10182806}.dv-filter-bar__controls[data-v-45855b0b]{flex:1;display:grid;grid-template-columns:repeat(24,minmax(0,1fr));column-gap:16px;row-gap:8px}.dv-filter-bar__control[data-v-45855b0b]{grid-column:span var(--dv-filter-xs);min-width:0}.dv-filter-bar__label[data-v-45855b0b]{display:block;margin-bottom:6px;color:var(--dv-text-secondary, #657184);font-size:12px;font-weight:600;line-height:18px;white-space:nowrap}.dv-filter-bar__control[data-v-45855b0b] .ant-select{width:100%;min-width:0}.dv-filter-bar__control[data-v-45855b0b] .ant-select-single .ant-select-selector,.dv-filter-bar__control[data-v-45855b0b] .ant-select-multiple .ant-select-selector{height:32px;min-height:32px}.dv-filter-bar__control[data-v-45855b0b] .ant-select-multiple .ant-select-selection-overflow{flex-wrap:nowrap;overflow:hidden}.dv-filter-bar__date-range[data-v-45855b0b]{display:flex;width:fit-content;min-width:0;max-width:100%;align-items:center;gap:10px}.dv-filter-bar__range-picker[data-v-45855b0b]{width:320px;min-width:220px;max-width:320px;height:32px;flex:0 1 320px}.dv-filter-bar__presets[data-v-45855b0b]{display:inline-flex;height:32px;flex:none;align-items:center;gap:2px;padding:3px;border:1px solid #e2e7ed;border-radius:6px;background:#f3f5f7}.dv-filter-bar__presets[data-v-45855b0b] .ant-radio-button-wrapper{height:24px;padding:0 8px;border:0;border-radius:4px;color:#737e8e;background:transparent;box-shadow:none;font-size:12px;font-weight:500;line-height:24px}.dv-filter-bar__presets[data-v-45855b0b] .ant-radio-button-wrapper:before{display:none}.dv-filter-bar__presets[data-v-45855b0b] .ant-radio-button-wrapper-checked{color:var(--dv-primary, #315fc4);background:#fff;box-shadow:0 1px 2px #10182814,0 0 0 1px #10182806;font-weight:600}.dv-filter-bar[data-v-45855b0b] .ant-select-selector,.dv-filter-bar[data-v-45855b0b] .ant-picker{border-color:#dce2e9;border-radius:5px;box-shadow:none}.dv-filter-bar__refresh[data-v-45855b0b]{width:78px;height:32px;flex:0 0 78px;border-color:var(--dv-primary, #315fc4);border-radius:6px;background:var(--dv-primary, #315fc4);box-shadow:none}@media (min-width: 576px){.dv-filter-bar__control[data-v-45855b0b]{grid-column:span var(--dv-filter-sm)}}@media (min-width: 768px){.dv-filter-bar__control[data-v-45855b0b]{grid-column:span var(--dv-filter-md);display:flex;align-items:center}.dv-filter-bar__label[data-v-45855b0b]{flex:none;margin:0 8px 0 0}.dv-filter-bar--flow .dv-filter-bar__controls[data-v-45855b0b]{display:flex;flex-wrap:wrap;align-items:center;column-gap:20px}.dv-filter-bar--flow .dv-filter-bar__control[data-v-45855b0b]{width:auto;flex:0 1 auto;grid-column:auto}.dv-filter-bar--flow .dv-filter-bar__control--select[data-v-45855b0b],.dv-filter-bar--flow .dv-filter-bar__control--multi-select[data-v-45855b0b]{width:clamp(220px,20vw,320px);flex-basis:clamp(220px,20vw,320px)}}@media (min-width: 992px){.dv-filter-bar__control[data-v-45855b0b]{grid-column:span var(--dv-filter-lg)}}@media (min-width: 1200px){.dv-filter-bar__control[data-v-45855b0b]{grid-column:span var(--dv-filter-xl)}}@media (min-width: 768px) and (max-width: 1300px){.dv-filter-bar__date-range[data-v-45855b0b]{gap:6px}.dv-filter-bar__range-picker[data-v-45855b0b]{width:288px;min-width:200px;max-width:288px;flex-basis:288px}.dv-filter-bar__presets[data-v-45855b0b] .ant-radio-button-wrapper{padding:0 5px;font-size:11px}}@media (max-width: 767px){.dv-filter-bar[data-v-45855b0b]{align-items:stretch;flex-direction:column}.dv-filter-bar__refresh[data-v-45855b0b]{align-self:flex-end}.dv-filter-bar__controls[data-v-45855b0b]{column-gap:0}.dv-filter-bar__date-range[data-v-45855b0b]{width:100%;align-items:stretch;flex-direction:column}.dv-filter-bar__range-picker[data-v-45855b0b]{width:100%;min-width:0;max-width:none;flex-basis:auto}.dv-filter-bar__refresh[data-v-45855b0b]{flex-basis:32px}.dv-filter-bar__date-popup .ant-picker-panels>.ant-picker-panel:last-child{display:none}.dv-filter-bar__date-popup .ant-picker-panel:first-child .ant-picker-header-next-btn,.dv-filter-bar__date-popup .ant-picker-panel:first-child .ant-picker-header-super-next-btn{visibility:visible!important}}.dv-panel[data-v-d457add9]{height:100%;overflow:hidden;border:1px solid var(--dv-card-border, #e1e6ed);border-radius:7px;background:#fff;box-shadow:0 1px 2px #10182809,0 5px 14px #10182806}.dv-panel[data-v-d457add9] .ant-card-head{min-height:50px;padding:0 16px;border-bottom-color:var(--dv-card-divider, #edf0f4)}.dv-panel[data-v-d457add9] .ant-card-head-title,.dv-panel[data-v-d457add9] .ant-card-extra{padding:10px 0}.dv-panel[data-v-d457add9] .ant-card-head-title{padding:13px 0}.dv-panel[data-v-d457add9] .ant-card-body{position:relative;display:flex;flex-direction:column;box-sizing:border-box;padding:15px 16px}.dv-panel__heading[data-v-d457add9],.dv-panel__title-group[data-v-d457add9],.dv-panel__actions[data-v-d457add9]{display:flex;align-items:center;gap:6px}.dv-panel__heading[data-v-d457add9]{min-width:0;flex-wrap:wrap;row-gap:2px;line-height:20px}.dv-panel__title-group[data-v-d457add9]{min-width:0}.dv-panel__title-group[data-v-d457add9] .anticon{flex-shrink:0}.dv-panel__title-note[data-v-d457add9]{min-width:0;max-width:100%;color:#98a2b3;font-size:12px;font-weight:400;line-height:20px;overflow-wrap:anywhere;white-space:normal}.dv-panel__title[data-v-d457add9]{overflow:hidden;color:var(--dv-text-title, #273244);font-size:14px;font-weight:650;line-height:20px;text-overflow:ellipsis;white-space:nowrap}.dv-panel__heading[data-v-d457add9] svg{color:#8a94a6;font-size:13px}.dv-panel__actions[data-v-d457add9]{gap:4px}.dv-panel__actions[data-v-d457add9] .ant-btn{width:28px;height:28px;padding:0;border-radius:5px;color:#6e7889}.dv-panel__actions[data-v-d457add9] .ant-btn:hover{color:var(--dv-primary, #315fc4);background:#f0f4fa}.dv-panel__filters[data-v-d457add9]{display:none}.dv-panel__warning[data-v-d457add9]{color:#f59e0b;font-size:15px}.dv-panel__state[data-v-d457add9]{min-height:190px;flex:1;display:flex;align-items:center;justify-content:center}.dv-panel__state--empty[data-v-d457add9]{box-sizing:border-box;flex-direction:column;gap:14px;padding:24px 12px;text-align:center}.dv-panel__empty-icon[data-v-d457add9]{display:grid;width:56px;height:56px;flex-shrink:0;place-items:center;border:1px solid var(--dv-card-divider, #edf0f4);border-radius:16px;color:#8da2c5;background:linear-gradient(145deg,#f8fafd,#eff3f9);font-size:26px}.dv-panel__empty-copy[data-v-d457add9]{max-width:100%}.dv-panel__empty-title[data-v-d457add9]{color:var(--dv-text-secondary, #657184);font-size:13px;font-weight:500;line-height:20px}.dv-panel[data-v-d457add9] .ant-spin{color:var(--dv-primary, #315fc4)}.dv-panel[data-v-d457add9] .ant-spin-dot-item{background-color:currentColor}.dv-panel__failure[data-v-d457add9]{display:flex;max-width:min(320px,100%);flex-direction:column;align-items:center;color:#667085;text-align:center}.dv-panel__failure-copy[data-v-d457add9]{max-width:100%;min-width:0}.dv-panel__failure-heading[data-v-d457add9]{overflow:hidden;color:#526075;font-size:13px;font-weight:600;line-height:20px;text-overflow:ellipsis;white-space:nowrap}.dv-panel__failure-icon[data-v-d457add9]{margin-bottom:9px;color:#8592a5;font-size:22px}.dv-panel__failure-detail[data-v-d457add9]{max-width:100%;overflow:hidden;margin-top:1px;color:#98a2b3;font-size:12px;line-height:18px;text-overflow:ellipsis;white-space:nowrap}.dv-panel__retry[data-v-d457add9]{width:auto;height:28px;margin-top:10px;padding:0 10px;border-color:#dbe1e8;border-radius:5px;color:#59677a;background:#fff;box-shadow:none;font-size:12px}.dv-panel__retry[data-v-d457add9]:hover,.dv-panel__retry[data-v-d457add9]:focus{border-color:#b8c7e5;color:var(--dv-primary, #315fc4);background:#f7f9fc}.dv-panel__idle[data-v-d457add9]{color:#98a0ad;font-size:12px}.dv-panel__renderer[data-v-d457add9]{position:relative;min-width:0;flex:1}.dv-panel__refreshing[data-v-d457add9]{position:absolute;z-index:1;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;background:#ffffffc2}.dv-panel__updated[data-v-d457add9]{display:none;margin-top:8px;color:#98a0ad;font-size:11px;text-align:right}.dv-panel--metric[data-v-d457add9] .ant-card-head{min-height:40px;border-bottom:0}.dv-panel--metric[data-v-d457add9] .ant-card-head-title{padding:13px 0 4px}.dv-panel--metric[data-v-d457add9] .ant-card-extra{padding:8px 0 0}.dv-panel--metric[data-v-d457add9] .ant-card-body{padding:2px 16px 13px}.dv-panel--metric .dv-panel__state--loading[data-v-d457add9],.dv-panel--metric .dv-panel__state--failure[data-v-d457add9]{min-height:0}.dv-panel--metric .dv-panel__failure[data-v-d457add9]{width:fit-content;max-width:100%;display:grid;grid-template-columns:20px minmax(0,1fr) 28px;column-gap:8px;text-align:left}.dv-panel--metric .dv-panel__failure-icon[data-v-d457add9]{margin-bottom:0;font-size:16px}.dv-panel--metric .dv-panel__failure-detail[data-v-d457add9]{display:none}.dv-panel--metric .dv-panel__retry[data-v-d457add9]{width:28px;margin-top:0;padding:0;border-color:transparent;background:transparent}.dv-panel--metric .dv-panel__retry-label[data-v-d457add9]{display:none}.dv-panel--metric .dv-panel__state--metric-empty[data-v-d457add9]{min-height:0;color:#98a0ad;font-size:12px;line-height:20px}.dv-panel--metric .dv-panel__title[data-v-d457add9]{color:#637083;font-size:13px;font-weight:550}.dv-panel--metric .dv-panel__actions[data-v-d457add9]{opacity:0;transition:opacity .16s ease}.dv-panel--metric:hover .dv-panel__actions[data-v-d457add9],.dv-panel--metric:focus-within .dv-panel__actions[data-v-d457add9]{opacity:1}.dv-dashboard[data-v-39ec9b07]{--dv-card-border: #e1e6ed;--dv-card-divider: #edf0f4;--dv-text-title: #273244;--dv-text-body: #182230;--dv-text-secondary: #657184;--dv-text-muted: #8a94a6;width:100%;min-width:0;color:var(--dv-text-body)}.dv-dashboard__header[data-v-39ec9b07]{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:16px}.dv-dashboard__header h1[data-v-39ec9b07]{margin:0;font-size:22px;font-weight:650;line-height:30px;letter-spacing:0}.dv-dashboard__header p[data-v-39ec9b07]{margin:4px 0 0;color:#64748b;font-size:13px}.dv-dashboard__grid[data-v-39ec9b07]{display:grid;grid-template-columns:repeat(24,minmax(0,1fr));gap:14px;margin-top:14px}.dv-dashboard__cell[data-v-39ec9b07]{grid-column:span var(--dv-panel-xs);min-width:0}@media (min-width: 576px){.dv-dashboard__cell[data-v-39ec9b07]{grid-column:span var(--dv-panel-sm)}}@media (min-width: 768px){.dv-dashboard__cell[data-v-39ec9b07]{grid-column:span var(--dv-panel-md)}}@media (min-width: 992px){.dv-dashboard__cell[data-v-39ec9b07]{grid-column:span var(--dv-panel-lg)}}@media (min-width: 1200px){.dv-dashboard__cell[data-v-39ec9b07]{grid-column:span var(--dv-panel-xl)}}@media (max-width: 767px){.dv-dashboard__grid[data-v-39ec9b07]{gap:12px}}.dv-chart-renderer[data-v-4f111bdf]{width:100%;min-width:0}.dv-bar-renderer[data-v-4f111bdf] .bar-container{height:320px!important}.dv-bar-renderer[data-v-4f111bdf] .legend{min-height:18px;margin-bottom:2px;padding:0 4px}.dv-bar-renderer[data-v-4f111bdf] .legend-container{justify-content:flex-end}.dv-bar-renderer[data-v-4f111bdf] .legend-item{margin-right:12px;color:#667085;font-size:11px}.dv-bar-renderer[data-v-4f111bdf] .legend-item-color{width:9px;height:9px;border-radius:3px}.dv-chart-renderer[data-v-efc34766]{width:100%;min-width:0}.dv-line-renderer[data-v-efc34766] .line-container{height:320px}.dv-line-renderer[data-v-efc34766] .legend{min-height:18px;margin-bottom:2px;padding:0 4px}.dv-line-renderer[data-v-efc34766] .legend-container{justify-content:flex-end}.dv-line-renderer[data-v-efc34766] .legend-item{margin-right:12px;color:#667085;font-size:11px}.dv-line-renderer[data-v-efc34766] .legend-item-color{width:8px;height:8px;border-radius:50%}.dv-metric[data-v-efa26253]{min-height:62px;display:flex;flex-direction:column;justify-content:flex-start}.dv-metric__value[data-v-efa26253]{display:flex;align-items:baseline;column-gap:4px;color:#172033;font-size:29px;font-weight:650;letter-spacing:0;line-height:1.2;white-space:nowrap}.dv-metric__number[data-v-efa26253]{font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.dv-metric__unit[data-v-efa26253]{position:relative;top:-1px;color:#7d8797;font-size:12px;font-weight:400;line-height:1}.dv-metric__comparison[data-v-efa26253]{display:flex;align-items:center;gap:10px;margin-top:7px;color:#7b8493;font-size:12px;line-height:18px}.dv-metric__comparison strong[data-v-efa26253]{display:inline-flex;align-items:center;gap:3px;font-weight:600}.dv-metric__comparison--favorable[data-v-efa26253]{color:#00a870}.dv-metric__comparison--unfavorable[data-v-efa26253]{color:#f53f3f}.dv-metric__comparison--neutral[data-v-efa26253]{color:#7b8493}.dv-chart-renderer[data-v-ccdee116]{width:100%;min-width:0}.dv-pie-renderer[data-v-ccdee116] .pie-container{height:320px!important;flex-direction:column-reverse}.dv-pie-renderer[data-v-ccdee116] .legend{min-height:18px;margin:4px 0 0;padding:0 4px}.dv-pie-renderer[data-v-ccdee116] .legend-item{margin-right:12px;color:#667085;font-size:11px}.dv-pie-renderer[data-v-ccdee116] .legend-item-color{width:8px;height:8px;border-radius:50%}.dv-table[data-v-c8a717c4] .ant-table{font-size:12px}.dv-table-scroll[data-v-c8a717c4]{width:100%;overflow-x:auto}.dv-table[data-v-c8a717c4]{min-width:720px}.dv-table[data-v-c8a717c4] .ant-table-thead>tr>th{padding:13px 16px;color:#5e6a7d;border-bottom:1px solid #e5eaf0;font-weight:600;background:#f7f9fb}.dv-table[data-v-c8a717c4] .ant-table-tbody>tr>td{padding:14px 16px;color:#344054;border-bottom:1px solid #edf0f4}.dv-table[data-v-c8a717c4] .ant-table-tbody>tr.ant-table-row:hover>td{background:#f8fafc}.dv-table[data-v-c8a717c4] .dv-table__progress-cell{display:grid;min-width:160px;grid-template-columns:minmax(96px,1fr) 48px;align-items:center;gap:8px}.dv-table[data-v-c8a717c4] .dv-table__progress-cell .ant-progress{margin:0;line-height:1}.dv-table[data-v-c8a717c4] .dv-table__progress-cell .ant-progress-inner{background:#edf0f4}.dv-table[data-v-c8a717c4] .dv-table__progress-cell .ant-progress-bg{background:#315fc4}.dv-table[data-v-c8a717c4] .dv-table__cell-value{color:#657184;font-variant-numeric:tabular-nums;text-align:right}.dv-table[data-v-c8a717c4] .dv-table__trend{display:inline-flex;align-items:center;gap:3px;font-weight:600;line-height:18px;white-space:nowrap}.dv-table[data-v-c8a717c4] .dv-table__trend--neutral{color:#7b8493}.dv-table[data-v-c8a717c4] .dv-table__trend--info{color:#315fc4}.dv-table[data-v-c8a717c4] .dv-table__trend--success{color:#00a870}.dv-table[data-v-c8a717c4] .dv-table__trend--warning{color:#c2410c}.dv-table[data-v-c8a717c4] .dv-table__trend--danger{color:#f53f3f}.dv-table[data-v-c8a717c4] .dv-table__tag{display:inline-flex;align-items:center;gap:4px;margin:0;border-radius:4px;font-size:12px;line-height:20px}.dv-table[data-v-c8a717c4] .dv-table__tag--neutral{color:#475467;border-color:#e4e7ec;background:#f2f4f7}.dv-table[data-v-c8a717c4] .dv-table__tag--info{color:#315fc4;border-color:#cbdafa;background:#eff6ff}.dv-table[data-v-c8a717c4] .dv-table__tag--success{color:#027a48;border-color:#abefc6;background:#ecfdf3}.dv-table[data-v-c8a717c4] .dv-table__tag--warning{color:#c2410c;border-color:#fed7aa;background:#fff7ed}.dv-table[data-v-c8a717c4] .dv-table__tag--danger{color:#b42318;border-color:#fecdca;background:#fef3f2}.dv-table[data-v-c8a717c4] .ant-table-pagination.ant-pagination{display:flex;align-items:center;gap:4px;margin:16px 0 0}.dv-table[data-v-c8a717c4] .ant-table-pagination.ant-pagination:after{display:none}.dv-table[data-v-c8a717c4] .ant-table-pagination.ant-pagination>.ant-pagination-item,.dv-table[data-v-c8a717c4] .ant-table-pagination.ant-pagination>.ant-pagination-prev,.dv-table[data-v-c8a717c4] .ant-table-pagination.ant-pagination>.ant-pagination-next,.dv-table[data-v-c8a717c4] .ant-table-pagination.ant-pagination>.ant-pagination-jump-prev,.dv-table[data-v-c8a717c4] .ant-table-pagination.ant-pagination>.ant-pagination-jump-next{display:flex;min-width:28px;height:28px;align-items:center;justify-content:center;margin:0;border-radius:5px;line-height:1}.dv-table[data-v-c8a717c4] .ant-table-pagination .ant-pagination-item>a,.dv-table[data-v-c8a717c4] .ant-table-pagination .ant-pagination-item-link,.dv-table[data-v-c8a717c4] .ant-table-pagination .ant-pagination-item-container{display:flex;width:100%;height:100%;align-items:center;justify-content:center;padding:0;line-height:1}.dv-table[data-v-c8a717c4] .ant-table-pagination .ant-pagination-item-ellipsis{display:flex;align-items:center;justify-content:center;letter-spacing:1px;line-height:1;text-indent:0}.dv-table[data-v-c8a717c4] .ant-table-pagination .anticon{display:inline-flex;align-items:center;justify-content:center;line-height:1}.dv-table[data-v-c8a717c4] .ant-table-pagination .anticon svg{display:block}.dv-table[data-v-c8a717c4] .ant-table-pagination .ant-pagination-item-active{border-color:var(--dv-primary, #315fc4);background:#f0f4fc;background:color-mix(in srgb,var(--dv-primary, #315fc4) 8%,white)}.dv-table[data-v-c8a717c4] .ant-table-pagination .ant-pagination-item-active>a{color:var(--dv-primary, #315fc4)}.dv-table[data-v-c8a717c4] .ant-table-pagination:not(.ant-pagination-disabled) .ant-pagination-item:not(.ant-pagination-item-disabled):hover,.dv-table[data-v-c8a717c4] .ant-table-pagination:not(.ant-pagination-disabled) .ant-pagination-item:not(.ant-pagination-item-disabled):focus-visible{border-color:var(--dv-primary, #315fc4);background:#f0f4fc;background:color-mix(in srgb,var(--dv-primary, #315fc4) 8%,white)}.dv-table[data-v-c8a717c4] .ant-table-pagination:not(.ant-pagination-disabled) .ant-pagination-item:not(.ant-pagination-item-disabled):hover>a,.dv-table[data-v-c8a717c4] .ant-table-pagination:not(.ant-pagination-disabled) .ant-pagination-item:not(.ant-pagination-item-disabled):focus-visible>a,.dv-table[data-v-c8a717c4] .ant-table-pagination .ant-pagination-item-link-icon,.dv-table[data-v-c8a717c4] .ant-table-pagination:not(.ant-pagination-disabled) .ant-pagination-prev:not(.ant-pagination-disabled):hover .ant-pagination-item-link,.dv-table[data-v-c8a717c4] .ant-table-pagination:not(.ant-pagination-disabled) .ant-pagination-prev:not(.ant-pagination-disabled):focus-visible .ant-pagination-item-link,.dv-table[data-v-c8a717c4] .ant-table-pagination:not(.ant-pagination-disabled) .ant-pagination-next:not(.ant-pagination-disabled):hover .ant-pagination-item-link,.dv-table[data-v-c8a717c4] .ant-table-pagination:not(.ant-pagination-disabled) .ant-pagination-next:not(.ant-pagination-disabled):focus-visible .ant-pagination-item-link{color:var(--dv-primary, #315fc4)}.dv-table[data-v-c8a717c4] .ant-table-pagination:not(.ant-pagination-disabled) .ant-pagination-prev:not(.ant-pagination-disabled):hover .ant-pagination-item-link,.dv-table[data-v-c8a717c4] .ant-table-pagination:not(.ant-pagination-disabled) .ant-pagination-prev:not(.ant-pagination-disabled):focus-visible .ant-pagination-item-link,.dv-table[data-v-c8a717c4] .ant-table-pagination:not(.ant-pagination-disabled) .ant-pagination-next:not(.ant-pagination-disabled):hover .ant-pagination-item-link,.dv-table[data-v-c8a717c4] .ant-table-pagination:not(.ant-pagination-disabled) .ant-pagination-next:not(.ant-pagination-disabled):focus-visible .ant-pagination-item-link{border-color:var(--dv-primary, #315fc4)}
|
package/dist/index.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { B as s, D as n, a as r, b as t, c as i, d as o, P as c, R as m, e as h, f as l, g as d, h as S, i as D, j as u, k as b, l as
|
|
2
|
-
import { B as v, a as z, b as q, C as F, D as w, c as y, d as _, e as N, f as J, g as L, h as M, i as j, j as O, I as W, J as H, L as U, k, l as G, M as K, m as Q, n as X, P as Y, o as Z, p as $, q as aa, r as ea, s as sa, t as na, u as ra,
|
|
3
|
-
import { D as
|
|
4
|
-
import { S as
|
|
5
|
-
import { V as
|
|
6
|
-
import { c as
|
|
1
|
+
import { B as s, D as n, a as r, b as t, c as i, d as o, P as c, R as m, e as h, f as l, g as d, h as S, i as D, j as u, k as b, l as E, m as R, n as C, o as g, p as f, q as p, r as V, s as P, t as A, u as B, v as T, w as x } from "./dashboard-runtime-6VlVQIuQ.js";
|
|
2
|
+
import { B as v, a as z, b as q, C as F, D as w, c as y, d as _, e as N, f as J, g as L, h as M, i as j, j as O, I as W, J as H, L as U, k, l as G, M as K, m as Q, n as X, P as Y, o as Z, p as $, q as aa, r as ea, s as sa, t as na, u as ra, v as ta, R as ia, w as oa, T as ca, x as ma, y as ha, z as la, A as da, V as Sa, E as Da, W as ua, F as ba, G as Ea, H as Ra, K as Ca } from "./runtime-schema-BmeEvFU-.js";
|
|
3
|
+
import { D as fa, P as pa, R as Va, b as Pa, c as Aa, a as Ba, e as Ta, g as xa, i as Ia, r as va, d as za, s as qa, w as Fa } from "./panel-export-Di_5Frul.js";
|
|
4
|
+
import { S as ya, a as _a, b as Na, c as Ja, l as La, d as Ma, m as ja, e as Oa, p as Wa, f as Ha, t as Ua, g as ka, w as Ga, h as Ka } from "./standard-definitions-hgJ-kOoz.js";
|
|
5
|
+
import { V as Xa, v as Ya } from "./value-formatter-D5QmLSMG.js";
|
|
6
|
+
import { c as $a, i as ae, j as ee, s as se } from "./serializable-DOOpLZyk.js";
|
|
7
7
|
export {
|
|
8
8
|
s as BUILT_IN_REQUEST_VALUE_CODECS,
|
|
9
9
|
v as BarBindingSchema,
|
|
@@ -18,7 +18,7 @@ export {
|
|
|
18
18
|
N as DashboardFilterControlConfigSchema,
|
|
19
19
|
t as DashboardRuntime,
|
|
20
20
|
J as DashboardVariableConfigSchema,
|
|
21
|
-
|
|
21
|
+
fa as DashboardVariableError,
|
|
22
22
|
L as DataRequestConfigSchema,
|
|
23
23
|
M as DatasetConfigSchema,
|
|
24
24
|
i as DatasetExecutionError,
|
|
@@ -35,77 +35,79 @@ export {
|
|
|
35
35
|
X as MetricVisualizationEnhancementSchema,
|
|
36
36
|
Y as PanelBindingSchema,
|
|
37
37
|
Z as PanelConfigSchema,
|
|
38
|
-
$ as
|
|
39
|
-
aa as
|
|
40
|
-
ea as
|
|
41
|
-
sa as
|
|
42
|
-
na as
|
|
43
|
-
ra as
|
|
44
|
-
|
|
38
|
+
$ as PanelExportConfigSchema,
|
|
39
|
+
aa as PieBindingSchema,
|
|
40
|
+
ea as PieEnhancementSchema,
|
|
41
|
+
sa as PieVisualizationEnhancementSchema,
|
|
42
|
+
na as PivotTableS2BindingSchema,
|
|
43
|
+
ra as PivotTableS2EnhancementSchema,
|
|
44
|
+
ta as PivotTableS2VisualizationEnhancementSchema,
|
|
45
|
+
pa as PluginRegistry,
|
|
45
46
|
c as ProviderInputValidationError,
|
|
46
47
|
Va as RegistryError,
|
|
47
48
|
m as RequestExecutor,
|
|
48
49
|
h as RequestInputError,
|
|
49
|
-
|
|
50
|
+
ia as RequestValueBindingSchema,
|
|
50
51
|
l as RequestValueCodecError,
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
52
|
+
oa as RuntimeSchemaValidationError,
|
|
53
|
+
ya as STANDARD_ADAPTERS,
|
|
54
|
+
_a as STANDARD_RENDERER_DEFINITIONS,
|
|
55
|
+
ca as TableBindingSchema,
|
|
56
|
+
ma as TableCellDisplaySchema,
|
|
57
|
+
ha as TableCellToneSchema,
|
|
58
|
+
la as TableEnhancementSchema,
|
|
59
|
+
da as TableVisualizationEnhancementSchema,
|
|
60
|
+
Sa as ValueFormatSchema,
|
|
61
|
+
Xa as ValueFormatter,
|
|
62
|
+
Da as VisualizationEnhancementSchema,
|
|
63
|
+
ua as WordCloudBindingSchema,
|
|
64
|
+
ba as WordCloudEnhancementSchema,
|
|
65
|
+
Ea as WordCloudVisualizationEnhancementSchema,
|
|
65
66
|
d as assertDashboardConfig,
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
67
|
+
Na as barAdapter,
|
|
68
|
+
Ja as barRendererDefinition,
|
|
69
|
+
Pa as buildDashboardSearch,
|
|
70
|
+
$a as cloneJsonValue,
|
|
70
71
|
S as collectDownstreamDatasetIds,
|
|
71
72
|
D as collectDownstreamPanelIds,
|
|
72
73
|
u as createCoreRegistries,
|
|
73
|
-
|
|
74
|
+
Aa as createDashboardContext,
|
|
74
75
|
b as createDashboardDataRuntime,
|
|
75
|
-
|
|
76
|
-
|
|
76
|
+
E as createDashboardDependencyGraph,
|
|
77
|
+
R as createDashboardRuntime,
|
|
77
78
|
Ra as createJsonSchemaRuntimeSchema,
|
|
78
|
-
|
|
79
|
+
Ba as createPanelCsvFilename,
|
|
79
80
|
C as createRequestCacheKey,
|
|
80
81
|
g as createRequestValueCodecRegistry,
|
|
81
82
|
f as createStandardCoreRegistries,
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
83
|
+
Ca as createTypeBoxRuntimeSchema,
|
|
84
|
+
p as dashboardConfigRuntimeSchema,
|
|
85
|
+
Ta as emitTelemetry,
|
|
86
|
+
xa as getPanelExportFields,
|
|
87
|
+
ae as isJsonValue,
|
|
88
|
+
Ia as isPanelExportEnabled,
|
|
89
|
+
ee as jsonValuesEqual,
|
|
90
|
+
La as lineAdapter,
|
|
91
|
+
Ma as lineRendererDefinition,
|
|
92
|
+
ja as metricAdapter,
|
|
93
|
+
Oa as metricRendererDefinition,
|
|
94
|
+
V as normalizeDatasetRows,
|
|
93
95
|
P as parseDashboardConfig,
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
96
|
+
Wa as pieAdapter,
|
|
97
|
+
Ha as pieRendererDefinition,
|
|
98
|
+
va as readDashboardVariable,
|
|
97
99
|
A as readValueAtPath,
|
|
98
100
|
B as registerStandardCore,
|
|
99
101
|
T as resolveDataRequestInput,
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
102
|
+
za as restoreDashboardContextFromSearch,
|
|
103
|
+
qa as serializePanelCsv,
|
|
104
|
+
se as stableSerializeJson,
|
|
105
|
+
Ua as tableAdapter,
|
|
106
|
+
ka as tableRendererDefinition,
|
|
107
|
+
x as validateDashboardConfig,
|
|
108
|
+
Ya as valueFormatter,
|
|
109
|
+
Ga as wordCloudAdapter,
|
|
110
|
+
Ka as wordCloudRendererDefinition,
|
|
111
|
+
Fa as writeDashboardVariable
|
|
110
112
|
};
|
|
111
113
|
//# sourceMappingURL=index.js.map
|
|
@@ -2,12 +2,12 @@ var V = Object.defineProperty;
|
|
|
2
2
|
var j = (e) => {
|
|
3
3
|
throw TypeError(e);
|
|
4
4
|
};
|
|
5
|
-
var
|
|
6
|
-
var m = (e, r, t) =>
|
|
7
|
-
var d = (e, r, t) => (
|
|
8
|
-
import { c as
|
|
9
|
-
import { v as
|
|
10
|
-
function
|
|
5
|
+
var x = (e, r, t) => r in e ? V(e, r, { enumerable: !0, configurable: !0, writable: !0, value: t }) : e[r] = t;
|
|
6
|
+
var m = (e, r, t) => x(e, typeof r != "symbol" ? r + "" : r, t), z = (e, r, t) => r.has(e) || j("Cannot " + t);
|
|
7
|
+
var d = (e, r, t) => (z(e, r, "read from private field"), t ? t.call(e) : r.get(e)), w = (e, r, t) => r.has(e) ? j("Cannot add the same private member more than once") : r instanceof WeakSet ? r.add(e) : r.set(e, t);
|
|
8
|
+
import { c as p, i as _, j as C } from "./serializable-DOOpLZyk.js";
|
|
9
|
+
import { v as D } from "./value-formatter-D5QmLSMG.js";
|
|
10
|
+
function P(e, r) {
|
|
11
11
|
try {
|
|
12
12
|
e == null || e(Object.freeze({ ...r }));
|
|
13
13
|
} catch {
|
|
@@ -28,11 +28,11 @@ function E(e, r) {
|
|
|
28
28
|
throw new $("variable_not_found", r, `Dashboard variable not found: ${r}`);
|
|
29
29
|
return t;
|
|
30
30
|
}
|
|
31
|
-
function
|
|
31
|
+
function N(e, r) {
|
|
32
32
|
const t = r.variables ?? {}, a = Object.fromEntries(
|
|
33
33
|
(e.variables ?? []).map((s) => [
|
|
34
34
|
s.id,
|
|
35
|
-
|
|
35
|
+
p(
|
|
36
36
|
Object.prototype.hasOwnProperty.call(t, s.id) ? t[s.id] : s.defaultValue
|
|
37
37
|
)
|
|
38
38
|
])
|
|
@@ -46,7 +46,7 @@ function P(e, r) {
|
|
|
46
46
|
}
|
|
47
47
|
function K(e, r, t) {
|
|
48
48
|
const a = E(e, t);
|
|
49
|
-
return
|
|
49
|
+
return p(
|
|
50
50
|
Object.prototype.hasOwnProperty.call(r.variables, t) ? r.variables[t] : a.defaultValue
|
|
51
51
|
);
|
|
52
52
|
}
|
|
@@ -59,7 +59,7 @@ function A(e, r, t, a) {
|
|
|
59
59
|
);
|
|
60
60
|
return Object.freeze({
|
|
61
61
|
...r,
|
|
62
|
-
variables: Object.freeze({ ...r.variables, [t]:
|
|
62
|
+
variables: Object.freeze({ ...r.variables, [t]: p(a) })
|
|
63
63
|
});
|
|
64
64
|
}
|
|
65
65
|
function O(e) {
|
|
@@ -104,7 +104,7 @@ function q(e, r) {
|
|
|
104
104
|
}
|
|
105
105
|
function M(e, r, t, a) {
|
|
106
106
|
const s = new URLSearchParams(r), n = [];
|
|
107
|
-
let i =
|
|
107
|
+
let i = N(e, t);
|
|
108
108
|
for (const o of e.variables ?? []) {
|
|
109
109
|
if (!o.urlKey || !s.has(o.urlKey))
|
|
110
110
|
continue;
|
|
@@ -116,7 +116,7 @@ function M(e, r, t, a) {
|
|
|
116
116
|
message: `Unable to decode URL variable ${o.id}. The default value was used.`,
|
|
117
117
|
variableId: o.id,
|
|
118
118
|
urlKey: o.urlKey
|
|
119
|
-
}),
|
|
119
|
+
}), P(a, {
|
|
120
120
|
name: "variable_decode_error",
|
|
121
121
|
dashboardId: e.id,
|
|
122
122
|
errorCode: "variable_decode_error"
|
|
@@ -133,7 +133,7 @@ function T(e, r, t = "") {
|
|
|
133
133
|
if (!n.urlKey)
|
|
134
134
|
continue;
|
|
135
135
|
const i = K(e, r, n.id);
|
|
136
|
-
|
|
136
|
+
C(i, n.defaultValue) ? a.delete(n.urlKey) : a.set(n.urlKey, q(i, n));
|
|
137
137
|
}
|
|
138
138
|
const s = a.toString();
|
|
139
139
|
return s ? `?${s}` : "";
|
|
@@ -226,9 +226,9 @@ function G(e, r, t, a = {}) {
|
|
|
226
226
|
i.map((u) => g(u.label)).join(","),
|
|
227
227
|
...e.rows.map(
|
|
228
228
|
(u) => i.map((c) => {
|
|
229
|
-
var
|
|
230
|
-
const S = ((F = (v = (
|
|
231
|
-
return g(
|
|
229
|
+
var b, v, F;
|
|
230
|
+
const S = ((F = (v = (b = r.enhancement) == null ? void 0 : b.common) == null ? void 0 : v.formatOverrides) == null ? void 0 : F[c.key]) ?? c.format ?? U(c.dataType);
|
|
231
|
+
return g(D.formatExport(u[c.key], S));
|
|
232
232
|
}).join(",")
|
|
233
233
|
)
|
|
234
234
|
];
|
|
@@ -237,18 +237,23 @@ function G(e, r, t, a = {}) {
|
|
|
237
237
|
function H(e, r) {
|
|
238
238
|
return `${`${e}-${r}`.replace(/[^A-Za-z0-9._-]+/g, "-").replace(/^-+|-+$/g, "") || "dashboard-panel"}.csv`;
|
|
239
239
|
}
|
|
240
|
+
function Q(e, r, t) {
|
|
241
|
+
var a;
|
|
242
|
+
return r[t] && ((a = e.export) == null ? void 0 : a[t]) !== !1;
|
|
243
|
+
}
|
|
240
244
|
export {
|
|
241
245
|
$ as D,
|
|
242
246
|
Z as P,
|
|
243
247
|
y as R,
|
|
244
248
|
H as a,
|
|
245
249
|
T as b,
|
|
246
|
-
|
|
250
|
+
N as c,
|
|
247
251
|
M as d,
|
|
248
|
-
|
|
252
|
+
P as e,
|
|
249
253
|
J as g,
|
|
254
|
+
Q as i,
|
|
250
255
|
K as r,
|
|
251
256
|
G as s,
|
|
252
257
|
A as w
|
|
253
258
|
};
|
|
254
|
-
//# sourceMappingURL=
|
|
259
|
+
//# sourceMappingURL=panel-export-Di_5Frul.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"panel-export-Di_5Frul.js","sources":["../src/core/telemetry/telemetry.ts","../src/core/variable/dashboard-context.ts","../src/core/variable/url-state.ts","../src/core/registry/plugin-registry.ts","../src/core/export/csv.ts","../src/core/export/panel-export.ts"],"sourcesContent":["export type VisualizationTelemetryEventName =\n | \"config_validated\"\n | \"request_started\"\n | \"request_succeeded\"\n | \"request_failed\"\n | \"request_cancelled\"\n | \"request_cache_hit\"\n | \"dataset_cache_hit\"\n | \"dataset_succeeded\"\n | \"dataset_failed\"\n | \"adapter_failed\"\n | \"renderer_failed\"\n | \"export_failed\"\n | \"variable_decode_error\";\n\nexport interface VisualizationTelemetryEvent {\n name: VisualizationTelemetryEventName;\n dashboardId: string;\n requestId?: string;\n datasetId?: string;\n panelId?: string;\n providerId?: string;\n operationId?: string;\n durationMs?: number;\n errorCode?: string;\n}\n\nexport type VisualizationTelemetrySink = (event: Readonly<VisualizationTelemetryEvent>) => void;\n\nexport function emitTelemetry(sink: VisualizationTelemetrySink | undefined, event: VisualizationTelemetryEvent): void {\n try {\n sink?.(Object.freeze({ ...event }));\n } catch {\n // Telemetry must never break dashboard execution.\n }\n}\n","import type { DashboardConfig } from \"../config/dashboard-config-schema\";\nimport { cloneJsonValue, isJsonValue, type JsonValue } from \"../config\";\n\nexport interface DashboardContext {\n dashboardId: string;\n variables: Readonly<Record<string, JsonValue>>;\n timezone: string;\n locale: string;\n}\n\nexport interface CreateDashboardContextOptions {\n timezone: string;\n locale: string;\n variables?: Readonly<Record<string, JsonValue>>;\n}\n\nexport class DashboardVariableError extends Error {\n readonly code: \"variable_not_found\" | \"variable_value_invalid\";\n readonly variableId: string;\n\n constructor(code: DashboardVariableError[\"code\"], variableId: string, message: string) {\n super(message);\n this.name = \"DashboardVariableError\";\n this.code = code;\n this.variableId = variableId;\n }\n}\n\nfunction findVariable(config: DashboardConfig, variableId: string) {\n const variable = config.variables?.find((candidate) => candidate.id === variableId);\n if (!variable) {\n throw new DashboardVariableError(\"variable_not_found\", variableId, `Dashboard variable not found: ${variableId}`);\n }\n return variable;\n}\n\nexport function createDashboardContext(\n config: DashboardConfig,\n options: CreateDashboardContextOptions\n): DashboardContext {\n const overrides = options.variables ?? {};\n const variables = Object.fromEntries(\n (config.variables ?? []).map((variable) => [\n variable.id,\n cloneJsonValue(\n Object.prototype.hasOwnProperty.call(overrides, variable.id) ? overrides[variable.id]! : variable.defaultValue\n )\n ])\n );\n\n return Object.freeze({\n dashboardId: config.id,\n variables: Object.freeze(variables),\n timezone: options.timezone,\n locale: options.locale\n });\n}\n\nexport function readDashboardVariable(\n config: DashboardConfig,\n context: DashboardContext,\n variableId: string\n): JsonValue {\n const variable = findVariable(config, variableId);\n return cloneJsonValue(\n Object.prototype.hasOwnProperty.call(context.variables, variableId)\n ? context.variables[variableId]!\n : variable.defaultValue\n );\n}\n\nexport function writeDashboardVariable(\n config: DashboardConfig,\n context: DashboardContext,\n variableId: string,\n value: JsonValue\n): DashboardContext {\n findVariable(config, variableId);\n if (!isJsonValue(value)) {\n throw new DashboardVariableError(\n \"variable_value_invalid\",\n variableId,\n `Dashboard variable value is not JSON serializable: ${variableId}`\n );\n }\n\n return Object.freeze({\n ...context,\n variables: Object.freeze({ ...context.variables, [variableId]: cloneJsonValue(value) })\n });\n}\n","import type { DashboardConfig, DashboardVariableConfig } from \"../config/dashboard-config-schema\";\nimport { isJsonValue, jsonValuesEqual, type JsonValue } from \"../config\";\nimport { emitTelemetry, type VisualizationTelemetrySink } from \"../telemetry\";\nimport {\n createDashboardContext,\n readDashboardVariable,\n writeDashboardVariable,\n type CreateDashboardContextOptions,\n type DashboardContext\n} from \"./dashboard-context\";\n\nexport interface VariableDiagnostic {\n level: \"warning\";\n code: \"variable_decode_error\";\n message: string;\n variableId: string;\n urlKey: string;\n}\n\nexport interface RestoreDashboardContextResult {\n context: DashboardContext;\n diagnostics: ReadonlyArray<VariableDiagnostic>;\n}\n\nfunction resolveCodec(variable: DashboardVariableConfig) {\n if (variable.urlCodec) {\n return variable.urlCodec;\n }\n if (Array.isArray(variable.defaultValue)) {\n if (variable.defaultValue.every((item) => typeof item === \"number\")) {\n return \"number-array\";\n }\n if (variable.defaultValue.every((item) => typeof item === \"string\")) {\n return \"string-array\";\n }\n return \"json\";\n }\n if (typeof variable.defaultValue === \"number\" || typeof variable.defaultValue === \"boolean\") {\n return typeof variable.defaultValue;\n }\n if (variable.defaultValue !== null && typeof variable.defaultValue === \"object\") {\n return \"json\";\n }\n return \"string\";\n}\n\nfunction decodeValue(rawValue: string, variable: DashboardVariableConfig): JsonValue | undefined {\n switch (resolveCodec(variable)) {\n case \"number\": {\n if (rawValue.trim() === \"\") return undefined;\n const value = Number(rawValue);\n return Number.isFinite(value) ? value : undefined;\n }\n case \"boolean\":\n return rawValue === \"true\" ? true : rawValue === \"false\" ? false : undefined;\n case \"string-array\":\n return rawValue ? rawValue.split(\",\") : [];\n case \"number-array\": {\n const values = rawValue ? rawValue.split(\",\").map(Number) : [];\n return values.every(Number.isFinite) ? values : undefined;\n }\n case \"json\":\n try {\n const value: unknown = JSON.parse(rawValue);\n return isJsonValue(value) ? value : undefined;\n } catch {\n return undefined;\n }\n default:\n return rawValue;\n }\n}\n\nfunction encodeValue(value: JsonValue, variable: DashboardVariableConfig): string {\n switch (resolveCodec(variable)) {\n case \"string-array\":\n case \"number-array\":\n return Array.isArray(value) ? value.join(\",\") : \"\";\n case \"json\":\n return JSON.stringify(value);\n default:\n return String(value ?? \"\");\n }\n}\n\nexport function restoreDashboardContextFromSearch(\n config: DashboardConfig,\n search: string,\n options: CreateDashboardContextOptions,\n telemetry?: VisualizationTelemetrySink\n): RestoreDashboardContextResult {\n const query = new URLSearchParams(search);\n const diagnostics: VariableDiagnostic[] = [];\n let context = createDashboardContext(config, options);\n\n for (const variable of config.variables ?? []) {\n if (!variable.urlKey || !query.has(variable.urlKey)) {\n continue;\n }\n\n const decoded = decodeValue(query.get(variable.urlKey) ?? \"\", variable);\n if (decoded === undefined) {\n diagnostics.push({\n level: \"warning\",\n code: \"variable_decode_error\",\n message: `Unable to decode URL variable ${variable.id}. The default value was used.`,\n variableId: variable.id,\n urlKey: variable.urlKey\n });\n emitTelemetry(telemetry, {\n name: \"variable_decode_error\",\n dashboardId: config.id,\n errorCode: \"variable_decode_error\"\n });\n continue;\n }\n\n context = writeDashboardVariable(config, context, variable.id, decoded);\n }\n\n return { context, diagnostics: Object.freeze(diagnostics) };\n}\n\nexport function buildDashboardSearch(config: DashboardConfig, context: DashboardContext, currentSearch = \"\"): string {\n const query = new URLSearchParams(currentSearch);\n\n for (const variable of config.variables ?? []) {\n if (!variable.urlKey) {\n continue;\n }\n\n const value = readDashboardVariable(config, context, variable.id);\n if (jsonValuesEqual(value, variable.defaultValue)) {\n query.delete(variable.urlKey);\n } else {\n query.set(variable.urlKey, encodeValue(value, variable));\n }\n }\n\n const value = query.toString();\n return value ? `?${value}` : \"\";\n}\n","export interface RegistryEntry {\n id: string;\n}\n\nexport interface ReadonlyRegistry<T extends RegistryEntry> {\n get(id: string): T | undefined;\n require(id: string): T;\n has(id: string): boolean;\n values(): ReadonlyArray<T>;\n}\n\nexport class RegistryError extends Error {\n readonly code: \"duplicate_registry_id\" | \"invalid_registry_id\" | \"registry_entry_not_found\";\n readonly registryName: string;\n readonly entryId: string;\n\n constructor(code: RegistryError[\"code\"], registryName: string, entryId: string, message: string) {\n super(message);\n this.name = \"RegistryError\";\n this.code = code;\n this.registryName = registryName;\n this.entryId = entryId;\n }\n}\n\nexport class PluginRegistry<T extends RegistryEntry> implements ReadonlyRegistry<T> {\n readonly #entries = new Map<string, T>();\n\n constructor(readonly name: string) {}\n\n register(entry: T): this {\n if (!entry.id.trim()) {\n throw new RegistryError(\"invalid_registry_id\", this.name, entry.id, `${this.name} entry ID cannot be empty.`);\n }\n if (this.#entries.has(entry.id)) {\n throw new RegistryError(\n \"duplicate_registry_id\",\n this.name,\n entry.id,\n `${this.name} entry is already registered: ${entry.id}`\n );\n }\n\n this.#entries.set(entry.id, entry);\n return this;\n }\n\n registerMany(entries: ReadonlyArray<T>): this {\n entries.forEach((entry) => this.register(entry));\n return this;\n }\n\n get(id: string): T | undefined {\n return this.#entries.get(id);\n }\n\n require(id: string): T {\n const entry = this.get(id);\n if (!entry) {\n throw new RegistryError(\"registry_entry_not_found\", this.name, id, `${this.name} entry is not registered: ${id}`);\n }\n return entry;\n }\n\n has(id: string): boolean {\n return this.#entries.has(id);\n }\n\n values(): ReadonlyArray<T> {\n return Array.from(this.#entries.values());\n }\n\n clear(): void {\n this.#entries.clear();\n }\n}\n","import type { DatasetResult } from \"../dataset\";\nimport { valueFormatter, type FormatterContext } from \"../formatter\";\nimport type { PanelBinding, PanelConfig, ValueFormat } from \"../config\";\n\nexport interface SerializePanelCsvOptions {\n includeBom?: boolean;\n lineEnding?: \"\\r\\n\" | \"\\n\";\n}\n\nfunction unique(values: ReadonlyArray<string | undefined>): string[] {\n return Array.from(new Set(values.filter((value): value is string => Boolean(value))));\n}\n\nexport function getPanelExportFields(binding: PanelBinding): string[] {\n switch (binding.type) {\n case \"metric\":\n return unique([binding.valueField, binding.compareField]);\n case \"line\":\n return unique([binding.xField, binding.seriesField, ...binding.yFields]);\n case \"bar\":\n return unique([binding.categoryField, binding.seriesField, ...binding.valueFields]);\n case \"pie\":\n return unique([binding.nameField, binding.valueField]);\n case \"table\":\n return unique(binding.columns);\n case \"wordCloud\":\n return unique([...binding.labelFields, binding.valueField, binding.semanticField]);\n case \"pivotTableS2\":\n return unique([...binding.rowFields, ...binding.columnFields, ...binding.valueFields]);\n }\n}\n\nfunction defaultFormat(dataType: DatasetResult[\"fields\"][number][\"dataType\"]): ValueFormat {\n if (dataType === \"date\") return { type: \"date\" };\n if (dataType === \"datetime\") return { type: \"datetime\" };\n if (dataType === \"number\") return { type: \"number\" };\n return { type: \"number\" };\n}\n\nfunction escapeCsv(value: string | number | boolean): string {\n const text = String(value);\n return /[\",\\r\\n]/.test(text) ? `\"${text.replace(/\"/g, '\"\"')}\"` : text;\n}\n\nexport function serializePanelCsv(\n dataset: DatasetResult,\n panel: Pick<PanelConfig, \"binding\" | \"enhancement\">,\n _context: FormatterContext,\n options: SerializePanelCsvOptions = {}\n): string {\n const fieldIds = getPanelExportFields(panel.binding);\n const fieldsById = new Map(dataset.fields.map((field) => [field.key, field]));\n const fields = fieldIds.map((fieldId) => {\n const field = fieldsById.get(fieldId);\n if (!field) throw new Error(`CSV export field not found in dataset ${dataset.datasetId}: ${fieldId}`);\n return field;\n });\n const lineEnding = options.lineEnding ?? \"\\r\\n\";\n const lines = [\n fields.map((field) => escapeCsv(field.label)).join(\",\"),\n ...dataset.rows.map((row) =>\n fields\n .map((field) => {\n const format =\n panel.enhancement?.common?.formatOverrides?.[field.key] ?? field.format ?? defaultFormat(field.dataType);\n return escapeCsv(valueFormatter.formatExport(row[field.key], format));\n })\n .join(\",\")\n )\n ];\n return `${options.includeBom === false ? \"\" : \"\\uFEFF\"}${lines.join(lineEnding)}`;\n}\n\nexport function createPanelCsvFilename(dashboardId: string, panelId: string): string {\n const safe = `${dashboardId}-${panelId}`.replace(/[^A-Za-z0-9._-]+/g, \"-\").replace(/^-+|-+$/g, \"\");\n return `${safe || \"dashboard-panel\"}.csv`;\n}\n","import type { RendererCapabilities } from \"../adapter\";\nimport type { PanelConfig, PanelExportConfig } from \"../config\";\n\nexport function isPanelExportEnabled(\n panel: Pick<PanelConfig, \"export\">,\n capabilities: Readonly<RendererCapabilities>,\n format: keyof PanelExportConfig\n): boolean {\n return capabilities[format] && panel.export?.[format] !== false;\n}\n"],"names":["emitTelemetry","sink","event","DashboardVariableError","code","variableId","message","__publicField","findVariable","config","variable","_a","candidate","createDashboardContext","options","overrides","variables","cloneJsonValue","readDashboardVariable","context","writeDashboardVariable","value","isJsonValue","resolveCodec","item","decodeValue","rawValue","values","encodeValue","restoreDashboardContextFromSearch","search","telemetry","query","diagnostics","decoded","buildDashboardSearch","currentSearch","jsonValuesEqual","RegistryError","registryName","entryId","PluginRegistry","name","__privateAdd","_entries","entry","__privateGet","entries","id","unique","getPanelExportFields","binding","defaultFormat","dataType","escapeCsv","text","serializePanelCsv","dataset","panel","_context","fieldIds","fieldsById","field","fields","fieldId","lineEnding","lines","row","format","_c","_b","valueFormatter","createPanelCsvFilename","dashboardId","panelId","isPanelExportEnabled","capabilities"],"mappings":"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"}
|