@grafana/scenes 4.11.3--canary.690.8783271240.0 → 4.12.0--canary.702.8784241126.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,18 +3145,24 @@ 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
- }
3154
3148
  function AdHocFilterRenderer({ filter, model }) {
3155
3149
  var _a, _b;
3156
3150
  const styles = ui.useStyles2(getStyles$7);
3157
3151
  const [state, setState] = React.useState({});
3158
- const keyValue = keyLabelToOption(filter.key, filter.keyLabel);
3159
- const valueValue = keyLabelToOption(filter.value, filter.valueLabel);
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;
3160
3166
  const valueSelect = /* @__PURE__ */ React__default["default"].createElement(ui.Select, {
3161
3167
  allowCustomValue: true,
3162
3168
  formatCreateLabel: (inputValue) => `Use custom value: ${inputValue}`,
@@ -3166,7 +3172,7 @@ function AdHocFilterRenderer({ filter, model }) {
3166
3172
  value: valueValue,
3167
3173
  placeholder: "Select value",
3168
3174
  options: state.values,
3169
- onChange: (v) => model._updateFilter(filter, "value", v),
3175
+ onChange: (v) => model._updateFilter(filter, "value", v.value),
3170
3176
  isOpen: state.isValuesOpen,
3171
3177
  isLoading: state.isValuesLoading,
3172
3178
  autoFocus: filter.key !== "" && filter.value === "",
@@ -3188,7 +3194,7 @@ function AdHocFilterRenderer({ filter, model }) {
3188
3194
  value: keyValue,
3189
3195
  placeholder: "Select label",
3190
3196
  options: state.keys,
3191
- onChange: (v) => model._updateFilter(filter, "key", v),
3197
+ onChange: (v) => model._updateFilter(filter, "key", v.value),
3192
3198
  autoFocus: filter.key === "",
3193
3199
  isOpen: state.isKeysOpen,
3194
3200
  isLoading: state.isKeysLoading,
@@ -3235,7 +3241,7 @@ function AdHocFilterRenderer({ filter, model }) {
3235
3241
  disabled: model.state.readOnly,
3236
3242
  options: model._getOperators(),
3237
3243
  width: "auto",
3238
- onChange: (v) => model._updateFilter(filter, "operator", v)
3244
+ onChange: (v) => model._updateFilter(filter, "operator", v.value)
3239
3245
  }), valueSelect, /* @__PURE__ */ React__default["default"].createElement(ui.Button, {
3240
3246
  variant: "secondary",
3241
3247
  "aria-label": "Remove filter",
@@ -3322,7 +3328,7 @@ class AdHocFiltersVariableUrlSyncHandler {
3322
3328
  if (filters.length === 0) {
3323
3329
  return { [this.getKey()]: [""] };
3324
3330
  }
3325
- const value = filters.map((filter) => toArray(filter).map(escapePipeDelimiters).join("|"));
3331
+ const value = filters.map((filter) => toArray(filter).map(escapeDelimiter).join("|"));
3326
3332
  return { [this.getKey()]: value };
3327
3333
  }
3328
3334
  updateFromUrl(values) {
@@ -3342,54 +3348,30 @@ function deserializeUrlToFilters(value) {
3342
3348
  const filter = toFilter(value);
3343
3349
  return filter === null ? [] : [filter];
3344
3350
  }
3345
- function escapePipeDelimiters(value) {
3351
+ function escapeDelimiter(value) {
3346
3352
  if (value === null || value === void 0) {
3347
3353
  return "";
3348
3354
  }
3349
- return value = /\|/g[Symbol.replace](value, "__gfp__");
3355
+ return /\|/g[Symbol.replace](value, "__gfp__");
3350
3356
  }
3351
- function escapeCommaDelimiters(value) {
3357
+ function unescapeDelimiter(value) {
3352
3358
  if (value === null || value === void 0) {
3353
3359
  return "";
3354
3360
  }
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;
3361
+ return /__gfp__/g[Symbol.replace](value, "|");
3364
3362
  }
3365
3363
  function toArray(filter) {
3366
- return [
3367
- toCommaDelimitedString(filter.key, filter.keyLabel),
3368
- filter.operator,
3369
- toCommaDelimitedString(filter.value, filter.valueLabel)
3370
- ];
3364
+ return [filter.key, filter.operator, filter.value];
3371
3365
  }
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) {
3366
+ function toFilter(value) {
3367
+ if (typeof value !== "string" || value.length === 0) {
3380
3368
  return null;
3381
3369
  }
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);
3370
+ const parts = value.split("|").map(unescapeDelimiter);
3387
3371
  return {
3388
- key,
3389
- keyLabel,
3390
- operator,
3391
- value,
3392
- valueLabel,
3372
+ key: parts[0],
3373
+ operator: parts[1],
3374
+ value: parts[2],
3393
3375
  condition: ""
3394
3376
  };
3395
3377
  }
@@ -3448,23 +3430,22 @@ class AdHocFiltersVariable extends SceneObjectBase {
3448
3430
  getValue() {
3449
3431
  return this.state.filterExpression;
3450
3432
  }
3451
- _updateFilter(filter, prop, { value, label }) {
3433
+ _updateFilter(filter, prop, value) {
3452
3434
  if (value == null) {
3453
3435
  return;
3454
3436
  }
3455
3437
  const { filters, _wip } = this.state;
3456
- const propLabelKey = `${prop}Label`;
3457
3438
  if (filter === _wip) {
3458
3439
  if (prop === "value") {
3459
- this.setState({ filters: [...filters, __spreadProps$l(__spreadValues$x({}, _wip), { [prop]: value, [propLabelKey]: label })], _wip: void 0 });
3440
+ this.setState({ filters: [...filters, __spreadProps$l(__spreadValues$x({}, _wip), { [prop]: value })], _wip: void 0 });
3460
3441
  } else {
3461
- this.setState({ _wip: __spreadProps$l(__spreadValues$x({}, filter), { [prop]: value, [propLabelKey]: label }) });
3442
+ this.setState({ _wip: __spreadProps$l(__spreadValues$x({}, filter), { [prop]: value }) });
3462
3443
  }
3463
3444
  return;
3464
3445
  }
3465
3446
  const updatedFilters = this.state.filters.map((f) => {
3466
3447
  if (f === filter) {
3467
- return __spreadProps$l(__spreadValues$x({}, f), { [prop]: value, [propLabelKey]: label });
3448
+ return __spreadProps$l(__spreadValues$x({}, f), { [prop]: value });
3468
3449
  }
3469
3450
  return f;
3470
3451
  });
@@ -3523,9 +3504,7 @@ class AdHocFiltersVariable extends SceneObjectBase {
3523
3504
  return values.map(toSelectableValue);
3524
3505
  }
3525
3506
  _addWip() {
3526
- this.setState({
3527
- _wip: { key: "", keyLabel: "", value: "", valueLabel: "", operator: "=", condition: "" }
3528
- });
3507
+ this.setState({ _wip: { key: "", value: "", operator: "=", condition: "" } });
3529
3508
  }
3530
3509
  _getOperators() {
3531
3510
  return ["=", "!=", "<", ">", "=~", "!~"].map((value) => ({
@@ -4766,6 +4745,11 @@ class VizPanel extends SceneObjectBase {
4766
4745
  );
4767
4746
  };
4768
4747
  this._onInstanceStateChange = (state) => {
4748
+ if (this._panelContext) {
4749
+ this._panelContext = __spreadProps$g(__spreadValues$s({}, this._panelContext), {
4750
+ instanceState: this.state._pluginInstanceState
4751
+ });
4752
+ }
4769
4753
  this.setState({ _pluginInstanceState: state });
4770
4754
  };
4771
4755
  this._onToggleLegendSort = (sortKey) => {