@grafana/scenes 4.12.0--canary.702.8784241126.0 → 4.12.0--canary.702.8784713837.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/index.js CHANGED
@@ -3145,24 +3145,18 @@ var __spreadValues$y = (a, b) => {
3145
3145
  return a;
3146
3146
  };
3147
3147
  var __spreadProps$m = (a, b) => __defProps$m(a, __getOwnPropDescs$m(b));
3148
+ function keyLabelToOption(key, label) {
3149
+ return key !== "" ? {
3150
+ value: key,
3151
+ label: label || key
3152
+ } : null;
3153
+ }
3148
3154
  function AdHocFilterRenderer({ filter, model }) {
3149
3155
  var _a, _b;
3150
3156
  const styles = ui.useStyles2(getStyles$7);
3151
3157
  const [state, setState] = React.useState({});
3152
- const keyValue = React.useMemo(() => {
3153
- if (filter.key !== "") {
3154
- if (model.state.defaultKeys) {
3155
- const matchingDefaultKey = model.state.defaultKeys.find((option) => option.value === filter.key);
3156
- if (matchingDefaultKey) {
3157
- return toSelectableValue(matchingDefaultKey);
3158
- }
3159
- } else {
3160
- return data.toOption(filter.key);
3161
- }
3162
- }
3163
- return null;
3164
- }, [filter.key, model.state.defaultKeys]);
3165
- const valueValue = filter.value !== "" ? data.toOption(filter.value) : null;
3158
+ const keyValue = keyLabelToOption(filter.key, filter.keyLabel);
3159
+ const valueValue = keyLabelToOption(filter.value, filter.valueLabel);
3166
3160
  const valueSelect = /* @__PURE__ */ React__default["default"].createElement(ui.Select, {
3167
3161
  allowCustomValue: true,
3168
3162
  formatCreateLabel: (inputValue) => `Use custom value: ${inputValue}`,
@@ -3172,7 +3166,7 @@ function AdHocFilterRenderer({ filter, model }) {
3172
3166
  value: valueValue,
3173
3167
  placeholder: "Select value",
3174
3168
  options: state.values,
3175
- onChange: (v) => model._updateFilter(filter, "value", v.value),
3169
+ onChange: (v) => model._updateFilter(filter, "value", v),
3176
3170
  isOpen: state.isValuesOpen,
3177
3171
  isLoading: state.isValuesLoading,
3178
3172
  autoFocus: filter.key !== "" && filter.value === "",
@@ -3194,7 +3188,7 @@ function AdHocFilterRenderer({ filter, model }) {
3194
3188
  value: keyValue,
3195
3189
  placeholder: "Select label",
3196
3190
  options: state.keys,
3197
- onChange: (v) => model._updateFilter(filter, "key", v.value),
3191
+ onChange: (v) => model._updateFilter(filter, "key", v),
3198
3192
  autoFocus: filter.key === "",
3199
3193
  isOpen: state.isKeysOpen,
3200
3194
  isLoading: state.isKeysLoading,
@@ -3241,7 +3235,7 @@ function AdHocFilterRenderer({ filter, model }) {
3241
3235
  disabled: model.state.readOnly,
3242
3236
  options: model._getOperators(),
3243
3237
  width: "auto",
3244
- onChange: (v) => model._updateFilter(filter, "operator", v.value)
3238
+ onChange: (v) => model._updateFilter(filter, "operator", v)
3245
3239
  }), valueSelect, /* @__PURE__ */ React__default["default"].createElement(ui.Button, {
3246
3240
  variant: "secondary",
3247
3241
  "aria-label": "Remove filter",
@@ -3328,7 +3322,7 @@ class AdHocFiltersVariableUrlSyncHandler {
3328
3322
  if (filters.length === 0) {
3329
3323
  return { [this.getKey()]: [""] };
3330
3324
  }
3331
- const value = filters.map((filter) => toArray(filter).map(escapeDelimiter).join("|"));
3325
+ const value = filters.map((filter) => toArray(filter).map(escapePipeDelimiters).join("|"));
3332
3326
  return { [this.getKey()]: value };
3333
3327
  }
3334
3328
  updateFromUrl(values) {
@@ -3348,30 +3342,54 @@ function deserializeUrlToFilters(value) {
3348
3342
  const filter = toFilter(value);
3349
3343
  return filter === null ? [] : [filter];
3350
3344
  }
3351
- function escapeDelimiter(value) {
3345
+ function escapePipeDelimiters(value) {
3352
3346
  if (value === null || value === void 0) {
3353
3347
  return "";
3354
3348
  }
3355
- return /\|/g[Symbol.replace](value, "__gfp__");
3349
+ return value = /\|/g[Symbol.replace](value, "__gfp__");
3356
3350
  }
3357
- function unescapeDelimiter(value) {
3351
+ function escapeCommaDelimiters(value) {
3358
3352
  if (value === null || value === void 0) {
3359
3353
  return "";
3360
3354
  }
3361
- return /__gfp__/g[Symbol.replace](value, "|");
3355
+ return /,/g[Symbol.replace](value, "__gfc__");
3356
+ }
3357
+ function unescapeDelimiters(value) {
3358
+ if (value === null || value === void 0) {
3359
+ return "";
3360
+ }
3361
+ value = /__gfp__/g[Symbol.replace](value, "|");
3362
+ value = /__gfc__/g[Symbol.replace](value, ",");
3363
+ return value;
3362
3364
  }
3363
3365
  function toArray(filter) {
3364
- return [filter.key, filter.operator, filter.value];
3366
+ return [
3367
+ toCommaDelimitedString(filter.key, filter.keyLabel),
3368
+ filter.operator,
3369
+ toCommaDelimitedString(filter.value, filter.valueLabel)
3370
+ ];
3365
3371
  }
3366
- function toFilter(value) {
3367
- if (typeof value !== "string" || value.length === 0) {
3372
+ function toCommaDelimitedString(key, label) {
3373
+ if (!label || key === label) {
3374
+ return escapeCommaDelimiters(key);
3375
+ }
3376
+ return [key, label].map(escapeCommaDelimiters).join(",");
3377
+ }
3378
+ function toFilter(urlValue) {
3379
+ if (typeof urlValue !== "string" || urlValue.length === 0) {
3368
3380
  return null;
3369
3381
  }
3370
- const parts = value.split("|").map(unescapeDelimiter);
3382
+ const [key, keyLabel, operator, _operatorLabel, value, valueLabel] = urlValue.split("|").reduce((acc, v) => {
3383
+ const [key2, label] = v.split(",");
3384
+ acc.push(key2, label != null ? label : key2);
3385
+ return acc;
3386
+ }, []).map(unescapeDelimiters);
3371
3387
  return {
3372
- key: parts[0],
3373
- operator: parts[1],
3374
- value: parts[2],
3388
+ key,
3389
+ keyLabel,
3390
+ operator,
3391
+ value,
3392
+ valueLabel,
3375
3393
  condition: ""
3376
3394
  };
3377
3395
  }
@@ -3430,22 +3448,23 @@ class AdHocFiltersVariable extends SceneObjectBase {
3430
3448
  getValue() {
3431
3449
  return this.state.filterExpression;
3432
3450
  }
3433
- _updateFilter(filter, prop, value) {
3451
+ _updateFilter(filter, prop, { value, label }) {
3434
3452
  if (value == null) {
3435
3453
  return;
3436
3454
  }
3437
3455
  const { filters, _wip } = this.state;
3456
+ const propLabelKey = `${prop}Label`;
3438
3457
  if (filter === _wip) {
3439
3458
  if (prop === "value") {
3440
- this.setState({ filters: [...filters, __spreadProps$l(__spreadValues$x({}, _wip), { [prop]: value })], _wip: void 0 });
3459
+ this.setState({ filters: [...filters, __spreadProps$l(__spreadValues$x({}, _wip), { [prop]: value, [propLabelKey]: label })], _wip: void 0 });
3441
3460
  } else {
3442
- this.setState({ _wip: __spreadProps$l(__spreadValues$x({}, filter), { [prop]: value }) });
3461
+ this.setState({ _wip: __spreadProps$l(__spreadValues$x({}, filter), { [prop]: value, [propLabelKey]: label }) });
3443
3462
  }
3444
3463
  return;
3445
3464
  }
3446
3465
  const updatedFilters = this.state.filters.map((f) => {
3447
3466
  if (f === filter) {
3448
- return __spreadProps$l(__spreadValues$x({}, f), { [prop]: value });
3467
+ return __spreadProps$l(__spreadValues$x({}, f), { [prop]: value, [propLabelKey]: label });
3449
3468
  }
3450
3469
  return f;
3451
3470
  });
@@ -3504,7 +3523,9 @@ class AdHocFiltersVariable extends SceneObjectBase {
3504
3523
  return values.map(toSelectableValue);
3505
3524
  }
3506
3525
  _addWip() {
3507
- this.setState({ _wip: { key: "", value: "", operator: "=", condition: "" } });
3526
+ this.setState({
3527
+ _wip: { key: "", keyLabel: "", value: "", valueLabel: "", operator: "=", condition: "" }
3528
+ });
3508
3529
  }
3509
3530
  _getOperators() {
3510
3531
  return ["=", "!=", "<", ">", "=~", "!~"].map((value) => ({
@@ -4747,7 +4768,7 @@ class VizPanel extends SceneObjectBase {
4747
4768
  this._onInstanceStateChange = (state) => {
4748
4769
  if (this._panelContext) {
4749
4770
  this._panelContext = __spreadProps$g(__spreadValues$s({}, this._panelContext), {
4750
- instanceState: this.state._pluginInstanceState
4771
+ instanceState: state
4751
4772
  });
4752
4773
  }
4753
4774
  this.setState({ _pluginInstanceState: state });
@@ -4806,8 +4827,11 @@ class VizPanel extends SceneObjectBase {
4806
4827
  }
4807
4828
  }
4808
4829
  getLegacyPanelId() {
4809
- var _a, _b;
4810
- return (_b = (_a = this.getPanelContext().instanceState) == null ? void 0 : _a.legacyPanelId) != null ? _b : 1;
4830
+ const panelId = parseInt(this.state.key.replace("panel-", ""), 10);
4831
+ if (isNaN(panelId)) {
4832
+ return 0;
4833
+ }
4834
+ return panelId;
4811
4835
  }
4812
4836
  async _pluginLoaded(plugin) {
4813
4837
  const { options, fieldConfig, title, pluginVersion, _UNSAFE_customMigrationHandler } = this.state;