@grafana/scenes 6.41.0 → 6.42.0--canary.1272.18911329941.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/esm/index.js CHANGED
@@ -50,6 +50,8 @@ export { MultiValueVariable } from './variables/variants/MultiValueVariable.js';
50
50
  export { LocalValueVariable } from './variables/variants/LocalValueVariable.js';
51
51
  export { IntervalVariable } from './variables/variants/IntervalVariable.js';
52
52
  export { AdHocFiltersVariable } from './variables/adhoc/AdHocFiltersVariable.js';
53
+ export { AdHocFiltersVariableController } from './variables/adhoc/controller/AdHocFiltersVariableController.js';
54
+ export { AdHocFiltersComboboxRenderer } from './variables/adhoc/AdHocFiltersCombobox/AdHocFiltersComboboxRenderer.js';
53
55
  export { GroupByVariable } from './variables/groupby/GroupByVariable.js';
54
56
  export { NewSceneObjectAddedEvent, UrlSyncManager } from './services/UrlSyncManager.js';
55
57
  export { useUrlSync } from './services/useUrlSync.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../src/index.ts"],"sourcesContent":["import { getUrlWithAppState } from './components/SceneApp/utils';\nimport { registerRuntimePanelPlugin } from './components/VizPanel/registerRuntimePanelPlugin';\nimport { cloneSceneObjectState } from './core/sceneGraph/cloneSceneObject';\nimport { registerRuntimeDataSource } from './querying/RuntimeDataSource';\nimport { getUrlState, syncStateFromSearchParams } from './services/utils';\nimport { buildPathIdFor } from './utils/pathId';\nimport { isRepeatCloneOrChildOf } from './utils/utils';\n\nimport { registerVariableMacro } from './variables/macros';\nimport {\n escapeLabelValueInExactSelector,\n escapeLabelValueInRegexSelector,\n escapeURLDelimiters,\n renderPrometheusLabelFilters,\n} from './variables/utils';\nimport {\n isAdHocVariable,\n isQueryVariable,\n isTextBoxVariable,\n isCustomVariable,\n isDataSourceVariable,\n isConstantVariable,\n isIntervalVariable,\n isGroupByVariable,\n isSwitchVariable,\n} from './variables/variants/guards';\n\nexport * from './core/types';\nexport * from './core/events';\nexport { sceneGraph } from './core/sceneGraph';\nexport * as behaviors from './behaviors';\nexport * as performanceUtils from './performance';\nexport { writePerformanceLog } from './utils/writePerformanceLog';\nexport * as dataLayers from './querying/layers';\n\nexport { SceneObjectBase, useSceneObjectState } from './core/SceneObjectBase';\nexport { SceneDataNode } from './core/SceneDataNode';\nexport { SceneTimeRange } from './core/SceneTimeRange';\nexport { SceneTimeZoneOverride } from './core/SceneTimeZoneOverride';\n\nexport { SceneQueryRunner, type QueryRunnerState } from './querying/SceneQueryRunner';\nexport { DataProviderProxy } from './querying/DataProviderProxy';\nexport {\n type ExtraQueryDescriptor,\n type ExtraQueryProvider,\n type ExtraQueryDataProcessor,\n} from './querying/ExtraQueryProvider';\nexport { SceneDataLayerSet, SceneDataLayerSetBase } from './querying/SceneDataLayerSet';\nexport { SceneDataLayerBase } from './querying/layers/SceneDataLayerBase';\nexport { SceneDataLayerControls } from './querying/layers/SceneDataLayerControls';\nexport { SceneDataTransformer, type SceneDataTransformerState } from './querying/SceneDataTransformer';\nexport { registerQueryWithController } from './querying/registerQueryWithController';\nexport { registerRuntimeDataSource, RuntimeDataSource } from './querying/RuntimeDataSource';\nexport type {\n SceneQueryControllerLike,\n SceneQueryControllerEntryType,\n SceneQueryControllerEntry,\n} from './behaviors/types';\n\nexport * from './variables/types';\nexport { VariableDependencyConfig } from './variables/VariableDependencyConfig';\nexport { formatRegistry, type FormatVariable } from './variables/interpolation/formatRegistry';\nexport { VariableValueSelectors } from './variables/components/VariableValueSelectors';\nexport { VariableValueControl } from './variables/components/VariableValueControl';\nexport { SceneVariableSet } from './variables/sets/SceneVariableSet';\nexport { ConstantVariable } from './variables/variants/ConstantVariable';\nexport { CustomVariable } from './variables/variants/CustomVariable';\nexport { SwitchVariable } from './variables/variants/SwitchVariable';\nexport { DataSourceVariable } from './variables/variants/DataSourceVariable';\nexport { QueryVariable } from './variables/variants/query/QueryVariable';\nexport { TestVariable } from './variables/variants/TestVariable';\nexport { TextBoxVariable } from './variables/variants/TextBoxVariable';\nexport { ScopesVariable } from './variables/variants/ScopesVariable';\nexport {\n MultiValueVariable,\n type MultiValueVariableState,\n type VariableGetOptionsArgs,\n} from './variables/variants/MultiValueVariable';\nexport { LocalValueVariable } from './variables/variants/LocalValueVariable';\nexport { IntervalVariable } from './variables/variants/IntervalVariable';\nexport { AdHocFiltersVariable } from './variables/adhoc/AdHocFiltersVariable';\nexport type { AdHocFilterWithLabels } from './variables/adhoc/AdHocFiltersVariable';\nexport { GroupByVariable } from './variables/groupby/GroupByVariable';\nexport { type MacroVariableConstructor } from './variables/macros/types';\nexport { escapeUrlPipeDelimiters } from './variables/utils';\n\nexport { type UrlSyncManagerLike, UrlSyncManager, NewSceneObjectAddedEvent } from './services/UrlSyncManager';\nexport { useUrlSync } from './services/useUrlSync';\nexport { UrlSyncContextProvider } from './services/UrlSyncContextProvider';\nexport { SceneObjectUrlSyncConfig } from './services/SceneObjectUrlSyncConfig';\n\nexport { EmbeddedScene, type EmbeddedSceneState } from './components/EmbeddedScene';\nexport { VizPanel, type VizPanelState } from './components/VizPanel/VizPanel';\nexport { VizPanelMenu } from './components/VizPanel/VizPanelMenu';\nexport { VizPanelExploreButton } from './components/VizPanel/VizPanelExploreButton';\nexport { NestedScene } from './components/NestedScene';\nexport { SceneCanvasText } from './components/SceneCanvasText';\nexport { SceneToolbarButton, SceneToolbarInput } from './components/SceneToolbarButton';\nexport { SceneTimePicker } from './components/SceneTimePicker';\nexport { SceneRefreshPicker, type SceneRefreshPickerState } from './components/SceneRefreshPicker';\nexport { SceneTimeRangeTransformerBase } from './core/SceneTimeRangeTransformerBase';\nexport { SceneTimeRangeCompare } from './components/SceneTimeRangeCompare';\nexport { SceneByFrameRepeater } from './components/SceneByFrameRepeater';\nexport { SceneByVariableRepeater } from './components/SceneByVariableRepeater';\nexport { SceneControlsSpacer } from './components/SceneControlsSpacer';\nexport {\n SceneFlexLayout,\n SceneFlexItem,\n type SceneFlexItemState,\n type SceneFlexItemLike,\n} from './components/layout/SceneFlexLayout';\nexport { SceneCSSGridLayout, SceneCSSGridItem } from './components/layout/CSSGrid/SceneCSSGridLayout';\nexport { SceneGridLayout } from './components/layout/grid/SceneGridLayout';\nexport { SceneGridLayoutDragStartEvent } from './components/layout/grid/types';\nexport { SceneGridItem } from './components/layout/grid/SceneGridItem';\nexport { SceneGridRow } from './components/layout/grid/SceneGridRow';\nexport { type SceneGridItemStateLike, type SceneGridItemLike } from './components/layout/grid/types';\nexport { SplitLayout } from './components/layout/split/SplitLayout';\nexport { LazyLoader } from './components/layout/LazyLoader';\nexport {\n type SceneAppPageLike,\n type SceneRouteMatch,\n type SceneAppPageState,\n type SceneAppDrilldownView,\n type SceneAppRoute,\n} from './components/SceneApp/types';\nexport { SceneApp, useSceneApp } from './components/SceneApp/SceneApp';\nexport { SceneAppPage } from './components/SceneApp/SceneAppPage';\nexport { SceneReactObject } from './components/SceneReactObject';\nexport { SceneObjectRef } from './core/SceneObjectRef';\nexport {\n PanelBuilders,\n PanelOptionsBuilders,\n FieldConfigBuilders,\n FieldConfigOverridesBuilder,\n} from './core/PanelBuilders';\nexport { FieldConfigBuilder } from './core/PanelBuilders/FieldConfigBuilder';\nexport { VizPanelBuilder } from './core/PanelBuilders/VizPanelBuilder';\nexport { SceneDebugger } from './components/SceneDebugger/SceneDebugger';\nexport { VariableValueSelectWrapper } from './variables/components/VariableValueSelectors';\nexport { ControlsLabel } from './utils/ControlsLabel';\nexport { MultiOrSingleValueSelect } from './variables/components/VariableValueSelect';\nexport { VizConfigBuilder } from './core/PanelBuilders/VizConfigBuilder';\nexport { VizConfigBuilders } from './core/PanelBuilders/VizConfigBuilders';\nexport { type VizConfig } from './core/PanelBuilders/types';\n\nexport const sceneUtils = {\n getUrlWithAppState,\n registerRuntimePanelPlugin,\n registerRuntimeDataSource,\n registerVariableMacro,\n cloneSceneObjectState,\n syncStateFromSearchParams,\n getUrlState,\n renderPrometheusLabelFilters,\n escapeLabelValueInRegexSelector,\n escapeLabelValueInExactSelector,\n escapeURLDelimiters,\n\n // Variable guards\n isAdHocVariable,\n isConstantVariable,\n isCustomVariable,\n isDataSourceVariable,\n isIntervalVariable,\n isQueryVariable,\n isTextBoxVariable,\n isGroupByVariable,\n isSwitchVariable,\n isRepeatCloneOrChildOf,\n buildPathIdFor,\n};\n\nexport { SafeSerializableSceneObject } from './utils/SafeSerializableSceneObject';\nexport { getExploreURL } from './utils/explore';\nexport { loadResources } from './utils/loadResources';\nexport { PATH_ID_SEPARATOR } from './utils/pathId';\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkJO,MAAM,UAAa,GAAA;AAAA,EACxB,kBAAA;AAAA,EACA,0BAAA;AAAA,EACA,yBAAA;AAAA,EACA,qBAAA;AAAA,EACA,qBAAA;AAAA,EACA,yBAAA;AAAA,EACA,WAAA;AAAA,EACA,4BAAA;AAAA,EACA,+BAAA;AAAA,EACA,+BAAA;AAAA,EACA,mBAAA;AAAA;AAAA,EAGA,eAAA;AAAA,EACA,kBAAA;AAAA,EACA,gBAAA;AAAA,EACA,oBAAA;AAAA,EACA,kBAAA;AAAA,EACA,eAAA;AAAA,EACA,iBAAA;AAAA,EACA,iBAAA;AAAA,EACA,gBAAA;AAAA,EACA,sBAAA;AAAA,EACA;AACF;;;;"}
1
+ {"version":3,"file":"index.js","sources":["../../src/index.ts"],"sourcesContent":["import { getUrlWithAppState } from './components/SceneApp/utils';\nimport { registerRuntimePanelPlugin } from './components/VizPanel/registerRuntimePanelPlugin';\nimport { cloneSceneObjectState } from './core/sceneGraph/cloneSceneObject';\nimport { registerRuntimeDataSource } from './querying/RuntimeDataSource';\nimport { getUrlState, syncStateFromSearchParams } from './services/utils';\nimport { buildPathIdFor } from './utils/pathId';\nimport { isRepeatCloneOrChildOf } from './utils/utils';\n\nimport { registerVariableMacro } from './variables/macros';\nimport {\n escapeLabelValueInExactSelector,\n escapeLabelValueInRegexSelector,\n escapeURLDelimiters,\n renderPrometheusLabelFilters,\n} from './variables/utils';\nimport {\n isAdHocVariable,\n isQueryVariable,\n isTextBoxVariable,\n isCustomVariable,\n isDataSourceVariable,\n isConstantVariable,\n isIntervalVariable,\n isGroupByVariable,\n isSwitchVariable,\n} from './variables/variants/guards';\n\nexport * from './core/types';\nexport * from './core/events';\nexport { sceneGraph } from './core/sceneGraph';\nexport * as behaviors from './behaviors';\nexport * as performanceUtils from './performance';\nexport { writePerformanceLog } from './utils/writePerformanceLog';\nexport * as dataLayers from './querying/layers';\n\nexport { SceneObjectBase, useSceneObjectState } from './core/SceneObjectBase';\nexport { SceneDataNode } from './core/SceneDataNode';\nexport { SceneTimeRange } from './core/SceneTimeRange';\nexport { SceneTimeZoneOverride } from './core/SceneTimeZoneOverride';\n\nexport { SceneQueryRunner, type QueryRunnerState } from './querying/SceneQueryRunner';\nexport { DataProviderProxy } from './querying/DataProviderProxy';\nexport {\n type ExtraQueryDescriptor,\n type ExtraQueryProvider,\n type ExtraQueryDataProcessor,\n} from './querying/ExtraQueryProvider';\nexport { SceneDataLayerSet, SceneDataLayerSetBase } from './querying/SceneDataLayerSet';\nexport { SceneDataLayerBase } from './querying/layers/SceneDataLayerBase';\nexport { SceneDataLayerControls } from './querying/layers/SceneDataLayerControls';\nexport { SceneDataTransformer, type SceneDataTransformerState } from './querying/SceneDataTransformer';\nexport { registerQueryWithController } from './querying/registerQueryWithController';\nexport { registerRuntimeDataSource, RuntimeDataSource } from './querying/RuntimeDataSource';\nexport type {\n SceneQueryControllerLike,\n SceneQueryControllerEntryType,\n SceneQueryControllerEntry,\n} from './behaviors/types';\n\nexport * from './variables/types';\nexport { VariableDependencyConfig } from './variables/VariableDependencyConfig';\nexport { formatRegistry, type FormatVariable } from './variables/interpolation/formatRegistry';\nexport { VariableValueSelectors } from './variables/components/VariableValueSelectors';\nexport { VariableValueControl } from './variables/components/VariableValueControl';\nexport { SceneVariableSet } from './variables/sets/SceneVariableSet';\nexport { ConstantVariable } from './variables/variants/ConstantVariable';\nexport { CustomVariable } from './variables/variants/CustomVariable';\nexport { SwitchVariable } from './variables/variants/SwitchVariable';\nexport { DataSourceVariable } from './variables/variants/DataSourceVariable';\nexport { QueryVariable } from './variables/variants/query/QueryVariable';\nexport { TestVariable } from './variables/variants/TestVariable';\nexport { TextBoxVariable } from './variables/variants/TextBoxVariable';\nexport { ScopesVariable } from './variables/variants/ScopesVariable';\nexport {\n MultiValueVariable,\n type MultiValueVariableState,\n type VariableGetOptionsArgs,\n} from './variables/variants/MultiValueVariable';\nexport { LocalValueVariable } from './variables/variants/LocalValueVariable';\nexport { IntervalVariable } from './variables/variants/IntervalVariable';\nexport { AdHocFiltersVariable } from './variables/adhoc/AdHocFiltersVariable';\nexport type { AdHocFilterWithLabels } from './variables/adhoc/AdHocFiltersVariable';\nexport type {\n AdHocFiltersController,\n AdHocFiltersControllerState,\n} from './variables/adhoc/controller/AdHocFiltersController';\nexport { AdHocFiltersVariableController } from './variables/adhoc/controller/AdHocFiltersVariableController';\nexport { AdHocFiltersComboboxRenderer } from './variables/adhoc/AdHocFiltersCombobox/AdHocFiltersComboboxRenderer';\nexport { GroupByVariable } from './variables/groupby/GroupByVariable';\nexport { type MacroVariableConstructor } from './variables/macros/types';\nexport { escapeUrlPipeDelimiters } from './variables/utils';\n\nexport { type UrlSyncManagerLike, UrlSyncManager, NewSceneObjectAddedEvent } from './services/UrlSyncManager';\nexport { useUrlSync } from './services/useUrlSync';\nexport { UrlSyncContextProvider } from './services/UrlSyncContextProvider';\nexport { SceneObjectUrlSyncConfig } from './services/SceneObjectUrlSyncConfig';\n\nexport { EmbeddedScene, type EmbeddedSceneState } from './components/EmbeddedScene';\nexport { VizPanel, type VizPanelState } from './components/VizPanel/VizPanel';\nexport { VizPanelMenu } from './components/VizPanel/VizPanelMenu';\nexport { VizPanelExploreButton } from './components/VizPanel/VizPanelExploreButton';\nexport { NestedScene } from './components/NestedScene';\nexport { SceneCanvasText } from './components/SceneCanvasText';\nexport { SceneToolbarButton, SceneToolbarInput } from './components/SceneToolbarButton';\nexport { SceneTimePicker } from './components/SceneTimePicker';\nexport { SceneRefreshPicker, type SceneRefreshPickerState } from './components/SceneRefreshPicker';\nexport { SceneTimeRangeTransformerBase } from './core/SceneTimeRangeTransformerBase';\nexport { SceneTimeRangeCompare } from './components/SceneTimeRangeCompare';\nexport { SceneByFrameRepeater } from './components/SceneByFrameRepeater';\nexport { SceneByVariableRepeater } from './components/SceneByVariableRepeater';\nexport { SceneControlsSpacer } from './components/SceneControlsSpacer';\nexport {\n SceneFlexLayout,\n SceneFlexItem,\n type SceneFlexItemState,\n type SceneFlexItemLike,\n} from './components/layout/SceneFlexLayout';\nexport { SceneCSSGridLayout, SceneCSSGridItem } from './components/layout/CSSGrid/SceneCSSGridLayout';\nexport { SceneGridLayout } from './components/layout/grid/SceneGridLayout';\nexport { SceneGridLayoutDragStartEvent } from './components/layout/grid/types';\nexport { SceneGridItem } from './components/layout/grid/SceneGridItem';\nexport { SceneGridRow } from './components/layout/grid/SceneGridRow';\nexport { type SceneGridItemStateLike, type SceneGridItemLike } from './components/layout/grid/types';\nexport { SplitLayout } from './components/layout/split/SplitLayout';\nexport { LazyLoader } from './components/layout/LazyLoader';\nexport {\n type SceneAppPageLike,\n type SceneRouteMatch,\n type SceneAppPageState,\n type SceneAppDrilldownView,\n type SceneAppRoute,\n} from './components/SceneApp/types';\nexport { SceneApp, useSceneApp } from './components/SceneApp/SceneApp';\nexport { SceneAppPage } from './components/SceneApp/SceneAppPage';\nexport { SceneReactObject } from './components/SceneReactObject';\nexport { SceneObjectRef } from './core/SceneObjectRef';\nexport {\n PanelBuilders,\n PanelOptionsBuilders,\n FieldConfigBuilders,\n FieldConfigOverridesBuilder,\n} from './core/PanelBuilders';\nexport { FieldConfigBuilder } from './core/PanelBuilders/FieldConfigBuilder';\nexport { VizPanelBuilder } from './core/PanelBuilders/VizPanelBuilder';\nexport { SceneDebugger } from './components/SceneDebugger/SceneDebugger';\nexport { VariableValueSelectWrapper } from './variables/components/VariableValueSelectors';\nexport { ControlsLabel } from './utils/ControlsLabel';\nexport { MultiOrSingleValueSelect } from './variables/components/VariableValueSelect';\nexport { VizConfigBuilder } from './core/PanelBuilders/VizConfigBuilder';\nexport { VizConfigBuilders } from './core/PanelBuilders/VizConfigBuilders';\nexport { type VizConfig } from './core/PanelBuilders/types';\n\nexport const sceneUtils = {\n getUrlWithAppState,\n registerRuntimePanelPlugin,\n registerRuntimeDataSource,\n registerVariableMacro,\n cloneSceneObjectState,\n syncStateFromSearchParams,\n getUrlState,\n renderPrometheusLabelFilters,\n escapeLabelValueInRegexSelector,\n escapeLabelValueInExactSelector,\n escapeURLDelimiters,\n\n // Variable guards\n isAdHocVariable,\n isConstantVariable,\n isCustomVariable,\n isDataSourceVariable,\n isIntervalVariable,\n isQueryVariable,\n isTextBoxVariable,\n isGroupByVariable,\n isSwitchVariable,\n isRepeatCloneOrChildOf,\n buildPathIdFor,\n};\n\nexport { SafeSerializableSceneObject } from './utils/SafeSerializableSceneObject';\nexport { getExploreURL } from './utils/explore';\nexport { loadResources } from './utils/loadResources';\nexport { PATH_ID_SEPARATOR } from './utils/pathId';\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwJO,MAAM,UAAa,GAAA;AAAA,EACxB,kBAAA;AAAA,EACA,0BAAA;AAAA,EACA,yBAAA;AAAA,EACA,qBAAA;AAAA,EACA,qBAAA;AAAA,EACA,yBAAA;AAAA,EACA,WAAA;AAAA,EACA,4BAAA;AAAA,EACA,+BAAA;AAAA,EACA,+BAAA;AAAA,EACA,mBAAA;AAAA;AAAA,EAGA,eAAA;AAAA,EACA,kBAAA;AAAA,EACA,gBAAA;AAAA,EACA,oBAAA;AAAA,EACA,kBAAA;AAAA,EACA,eAAA;AAAA,EACA,iBAAA;AAAA,EACA,iBAAA;AAAA,EACA,gBAAA;AAAA,EACA,sBAAA;AAAA,EACA;AACF;;;;"}
@@ -7,7 +7,7 @@ import { t } from '@grafana/i18n';
7
7
  import { getNonApplicablePillStyles } from '../../utils.js';
8
8
 
9
9
  const LABEL_MAX_VISIBLE_LENGTH = 20;
10
- function AdHocFilterPill({ filter, model, readOnly, focusOnWipInputRef }) {
10
+ function AdHocFilterPill({ filter, controller, readOnly, focusOnWipInputRef }) {
11
11
  var _a, _b, _c, _d;
12
12
  const styles = useStyles2(getStyles);
13
13
  const [viewMode, setViewMode] = useState(true);
@@ -37,9 +37,9 @@ function AdHocFilterPill({ filter, model, readOnly, focusOnWipInputRef }) {
37
37
  useEffect(() => {
38
38
  if (filter.forceEdit && viewMode) {
39
39
  setViewMode(false);
40
- model._updateFilter(filter, { forceEdit: void 0 });
40
+ controller.updateFilter(filter, { forceEdit: void 0 });
41
41
  }
42
- }, [filter, model, viewMode]);
42
+ }, [filter, controller, viewMode]);
43
43
  useEffect(() => {
44
44
  if (viewMode) {
45
45
  setPopulateInputOnEdit((prevValue) => prevValue ? false : prevValue);
@@ -105,9 +105,9 @@ function AdHocFilterPill({ filter, model, readOnly, focusOnWipInputRef }) {
105
105
  onClick: (e) => {
106
106
  e.stopPropagation();
107
107
  if (filter.origin && filter.origin === "dashboard") {
108
- model.updateToMatchAll(filter);
108
+ controller.updateToMatchAll(filter);
109
109
  } else {
110
- model._removeFilter(filter);
110
+ controller.removeFilter(filter);
111
111
  }
112
112
  setTimeout(() => focusOnWipInputRef == null ? void 0 : focusOnWipInputRef());
113
113
  },
@@ -116,9 +116,9 @@ function AdHocFilterPill({ filter, model, readOnly, focusOnWipInputRef }) {
116
116
  e.preventDefault();
117
117
  e.stopPropagation();
118
118
  if (filter.origin && filter.origin === "dashboard") {
119
- model.updateToMatchAll(filter);
119
+ controller.updateToMatchAll(filter);
120
120
  } else {
121
- model._removeFilter(filter);
121
+ controller.removeFilter(filter);
122
122
  }
123
123
  setTimeout(() => focusOnWipInputRef == null ? void 0 : focusOnWipInputRef());
124
124
  }
@@ -151,13 +151,13 @@ function AdHocFilterPill({ filter, model, readOnly, focusOnWipInputRef }) {
151
151
  {
152
152
  onClick: (e) => {
153
153
  e.stopPropagation();
154
- model.restoreOriginalFilter(filter);
154
+ controller.restoreOriginalFilter(filter);
155
155
  },
156
156
  onKeyDownCapture: (e) => {
157
157
  if (e.key === "Enter") {
158
158
  e.preventDefault();
159
159
  e.stopPropagation();
160
- model.restoreOriginalFilter(filter);
160
+ controller.restoreOriginalFilter(filter);
161
161
  }
162
162
  },
163
163
  name: "history",
@@ -180,7 +180,7 @@ function AdHocFilterPill({ filter, model, readOnly, focusOnWipInputRef }) {
180
180
  AdHocCombobox,
181
181
  {
182
182
  filter,
183
- model,
183
+ controller,
184
184
  handleChangeViewMode,
185
185
  focusOnWipInputRef,
186
186
  populateInputOnEdit
@@ -1 +1 @@
1
- {"version":3,"file":"AdHocFilterPill.js","sources":["../../../../../src/variables/adhoc/AdHocFiltersCombobox/AdHocFilterPill.tsx"],"sourcesContent":["import { css, cx } from '@emotion/css';\nimport { GrafanaTheme2 } from '@grafana/data';\nimport { useStyles2, IconButton, Tooltip, Icon } from '@grafana/ui';\nimport React, { useState, useRef, useCallback, useEffect } from 'react';\nimport { AdHocCombobox } from './AdHocFiltersCombobox';\nimport { AdHocFilterWithLabels, AdHocFiltersVariable, FilterOrigin, isMatchAllFilter } from '../AdHocFiltersVariable';\nimport { t } from '@grafana/i18n';\nimport { getNonApplicablePillStyles } from '../../utils';\n\nconst LABEL_MAX_VISIBLE_LENGTH = 20;\n\ninterface Props {\n filter: AdHocFilterWithLabels;\n model: AdHocFiltersVariable;\n readOnly?: boolean;\n focusOnWipInputRef?: () => void;\n}\n\nexport function AdHocFilterPill({ filter, model, readOnly, focusOnWipInputRef }: Props) {\n const styles = useStyles2(getStyles);\n const [viewMode, setViewMode] = useState(true);\n const [shouldFocusOnPillWrapper, setShouldFocusOnPillWrapper] = useState(false);\n const pillWrapperRef = useRef<HTMLDivElement>(null);\n const [populateInputOnEdit, setPopulateInputOnEdit] = useState(false);\n\n const keyLabel = filter.keyLabel ?? filter.key;\n const valueLabel = filter.valueLabels?.join(', ') || filter.values?.join(', ') || filter.value;\n\n const handleChangeViewMode = useCallback(\n (event?: React.MouseEvent, shouldFocusOnPillWrapperOverride?: boolean) => {\n event?.stopPropagation();\n if (readOnly) {\n return;\n }\n\n setShouldFocusOnPillWrapper(shouldFocusOnPillWrapperOverride ?? !viewMode);\n setViewMode(!viewMode);\n },\n [readOnly, viewMode]\n );\n\n useEffect(() => {\n if (shouldFocusOnPillWrapper) {\n pillWrapperRef.current?.focus();\n setShouldFocusOnPillWrapper(false);\n }\n }, [shouldFocusOnPillWrapper]);\n\n // set viewMode to false when filter.forceEdit is defined\n useEffect(() => {\n if (filter.forceEdit && viewMode) {\n setViewMode(false);\n // immediately set forceEdit back to undefined as a clean up\n model._updateFilter(filter, { forceEdit: undefined });\n }\n }, [filter, model, viewMode]);\n\n // reset populateInputOnEdit when pill goes into view mode\n useEffect(() => {\n if (viewMode) {\n setPopulateInputOnEdit((prevValue) => (prevValue ? false : prevValue));\n }\n }, [viewMode]);\n\n const getOriginFilterTooltips = (origin: FilterOrigin): { info: string; restore: string } => {\n if (origin === 'dashboard') {\n return {\n info: 'Applied by default in this dashboard. If edited, it carries over to other dashboards.',\n restore: 'Restore the value set by this dashboard.',\n };\n } else if (origin === 'scope') {\n return {\n info: 'Applied automatically from your selected scope.',\n restore: 'Restore the value set by your selected scope.',\n };\n } else {\n return {\n info: `This is a ${origin} injected filter.`,\n restore: `Restore filter to its original value.`,\n };\n }\n };\n\n // filters that are in a clean, original state that are applicable and not readonly\n const cleanFilter = !filter.restorable && !filter.readOnly && !filter.nonApplicable;\n\n if (viewMode) {\n const pillTextContent = `${keyLabel} ${filter.operator} ${valueLabel}`;\n const pillText = (\n <span className={cx(styles.pillText, filter.nonApplicable && styles.strikethrough)}>{pillTextContent}</span>\n );\n\n return (\n <div\n className={cx(\n styles.combinedFilterPill,\n readOnly && styles.readOnlyCombinedFilter,\n (isMatchAllFilter(filter) || filter.nonApplicable) && styles.disabledPill,\n filter.readOnly && styles.filterReadOnly\n )}\n onClick={(e) => {\n e.stopPropagation();\n setPopulateInputOnEdit(true);\n handleChangeViewMode();\n }}\n onKeyDown={(e) => {\n if (e.key === 'Enter') {\n setPopulateInputOnEdit(true);\n handleChangeViewMode();\n }\n }}\n role={readOnly ? undefined : 'button'}\n aria-label={t(\n 'grafana-scenes.components.adhoc-filter-pill.edit-filter-with-key',\n 'Edit filter with key {{keyLabel}}',\n {\n keyLabel,\n }\n )}\n tabIndex={0}\n ref={pillWrapperRef}\n >\n {pillTextContent.length < LABEL_MAX_VISIBLE_LENGTH ? (\n pillText\n ) : (\n <Tooltip content={<div className={styles.tooltipText}>{pillTextContent}</div>} placement=\"top\">\n {pillText}\n </Tooltip>\n )}\n\n {!readOnly && !filter.matchAllFilter && (!filter.origin || filter.origin === 'dashboard') ? (\n <IconButton\n onClick={(e) => {\n e.stopPropagation();\n if (filter.origin && filter.origin === 'dashboard') {\n model.updateToMatchAll(filter);\n } else {\n model._removeFilter(filter);\n }\n\n setTimeout(() => focusOnWipInputRef?.());\n }}\n onKeyDownCapture={(e) => {\n if (e.key === 'Enter') {\n e.preventDefault();\n e.stopPropagation();\n if (filter.origin && filter.origin === 'dashboard') {\n model.updateToMatchAll(filter);\n } else {\n model._removeFilter(filter);\n }\n setTimeout(() => focusOnWipInputRef?.());\n }\n }}\n name=\"times\"\n size=\"md\"\n className={cx(styles.pillIcon, filter.nonApplicable && styles.disabledPillIcon)}\n tooltip={t(\n 'grafana-scenes.components.adhoc-filter-pill.remove-filter-with-key',\n 'Remove filter with key {{keyLabel}}',\n {\n keyLabel,\n }\n )}\n />\n ) : null}\n\n {filter.origin && filter.readOnly && (\n <Tooltip\n content={t('grafana-scenes.components.adhoc-filter-pill.managed-filter', '{{origin}} managed filter', {\n origin: filter.origin,\n })}\n placement={'bottom'}\n >\n <Icon name=\"lock\" size=\"md\" className={styles.readOnlyPillIcon} />\n </Tooltip>\n )}\n\n {filter.origin && cleanFilter && (\n <Tooltip content={getOriginFilterTooltips(filter.origin).info} placement={'bottom'}>\n <Icon name=\"info-circle\" size=\"md\" className={styles.infoPillIcon} />\n </Tooltip>\n )}\n\n {filter.origin && filter.restorable && !filter.readOnly && (\n <IconButton\n onClick={(e) => {\n e.stopPropagation();\n model.restoreOriginalFilter(filter);\n }}\n onKeyDownCapture={(e) => {\n if (e.key === 'Enter') {\n e.preventDefault();\n e.stopPropagation();\n model.restoreOriginalFilter(filter);\n }\n }}\n name=\"history\"\n size=\"md\"\n className={isMatchAllFilter(filter) ? styles.matchAllPillIcon : styles.pillIcon}\n tooltip={getOriginFilterTooltips(filter.origin).restore}\n />\n )}\n\n {filter.nonApplicable && (\n <Tooltip\n content={\n filter.nonApplicableReason ??\n t('grafana-scenes.components.adhoc-filter-pill.non-applicable', 'Filter is not applicable')\n }\n placement={'bottom'}\n >\n <Icon name=\"info-circle\" size=\"md\" className={styles.infoPillIcon} />\n </Tooltip>\n )}\n </div>\n );\n }\n\n return (\n <AdHocCombobox\n filter={filter}\n model={model}\n handleChangeViewMode={handleChangeViewMode}\n focusOnWipInputRef={focusOnWipInputRef}\n populateInputOnEdit={populateInputOnEdit}\n />\n );\n}\n\nconst getStyles = (theme: GrafanaTheme2) => ({\n combinedFilterPill: css({\n display: 'flex',\n alignItems: 'center',\n background: theme.colors.action.selected,\n borderRadius: theme.shape.radius.default,\n border: `1px solid ${theme.colors.border.weak}`,\n padding: theme.spacing(0.125, 0, 0.125, 1),\n color: theme.colors.text.primary,\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n minHeight: theme.spacing(2.75),\n ...theme.typography.bodySmall,\n fontWeight: theme.typography.fontWeightBold,\n cursor: 'pointer',\n\n '&:hover': {\n background: theme.colors.action.hover,\n },\n }),\n readOnlyCombinedFilter: css({\n paddingRight: theme.spacing(1),\n cursor: 'text',\n '&:hover': {\n background: theme.colors.action.selected,\n },\n }),\n filterReadOnly: css({\n background: theme.colors.background.canvas,\n cursor: 'text',\n '&:hover': {\n background: theme.colors.background.canvas,\n },\n }),\n pillIcon: css({\n marginInline: theme.spacing(0.5),\n cursor: 'pointer',\n '&:hover': {\n color: theme.colors.text.primary,\n },\n }),\n pillText: css({\n maxWidth: '200px',\n width: '100%',\n textOverflow: 'ellipsis',\n overflow: 'hidden',\n }),\n tooltipText: css({\n textAlign: 'center',\n }),\n infoPillIcon: css({\n marginInline: theme.spacing(0.5),\n cursor: 'pointer',\n }),\n readOnlyPillIcon: css({\n marginInline: theme.spacing(0.5),\n }),\n matchAllPillIcon: css({\n marginInline: theme.spacing(0.5),\n cursor: 'pointer',\n color: theme.colors.text.disabled,\n }),\n disabledPillIcon: css({\n marginInline: theme.spacing(0.5),\n cursor: 'pointer',\n color: theme.colors.text.disabled,\n '&:hover': {\n color: theme.colors.text.disabled,\n },\n }),\n ...getNonApplicablePillStyles(theme),\n});\n"],"names":["_a"],"mappings":"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"}
1
+ {"version":3,"file":"AdHocFilterPill.js","sources":["../../../../../src/variables/adhoc/AdHocFiltersCombobox/AdHocFilterPill.tsx"],"sourcesContent":["import { css, cx } from '@emotion/css';\nimport { GrafanaTheme2 } from '@grafana/data';\nimport { useStyles2, IconButton, Tooltip, Icon } from '@grafana/ui';\nimport React, { useState, useRef, useCallback, useEffect } from 'react';\nimport { AdHocCombobox } from './AdHocFiltersCombobox';\nimport { AdHocFilterWithLabels, FilterOrigin, isMatchAllFilter } from '../AdHocFiltersVariable';\nimport { AdHocFiltersController } from '../controller/AdHocFiltersController';\nimport { t } from '@grafana/i18n';\nimport { getNonApplicablePillStyles } from '../../utils';\n\nconst LABEL_MAX_VISIBLE_LENGTH = 20;\n\ninterface Props {\n filter: AdHocFilterWithLabels;\n controller: AdHocFiltersController;\n readOnly?: boolean;\n focusOnWipInputRef?: () => void;\n}\n\nexport function AdHocFilterPill({ filter, controller, readOnly, focusOnWipInputRef }: Props) {\n const styles = useStyles2(getStyles);\n const [viewMode, setViewMode] = useState(true);\n const [shouldFocusOnPillWrapper, setShouldFocusOnPillWrapper] = useState(false);\n const pillWrapperRef = useRef<HTMLDivElement>(null);\n const [populateInputOnEdit, setPopulateInputOnEdit] = useState(false);\n\n const keyLabel = filter.keyLabel ?? filter.key;\n const valueLabel = filter.valueLabels?.join(', ') || filter.values?.join(', ') || filter.value;\n\n const handleChangeViewMode = useCallback(\n (event?: React.MouseEvent, shouldFocusOnPillWrapperOverride?: boolean) => {\n event?.stopPropagation();\n if (readOnly) {\n return;\n }\n\n setShouldFocusOnPillWrapper(shouldFocusOnPillWrapperOverride ?? !viewMode);\n setViewMode(!viewMode);\n },\n [readOnly, viewMode]\n );\n\n useEffect(() => {\n if (shouldFocusOnPillWrapper) {\n pillWrapperRef.current?.focus();\n setShouldFocusOnPillWrapper(false);\n }\n }, [shouldFocusOnPillWrapper]);\n\n // set viewMode to false when filter.forceEdit is defined\n useEffect(() => {\n if (filter.forceEdit && viewMode) {\n setViewMode(false);\n // immediately set forceEdit back to undefined as a clean up\n controller.updateFilter(filter, { forceEdit: undefined });\n }\n }, [filter, controller, viewMode]);\n\n // reset populateInputOnEdit when pill goes into view mode\n useEffect(() => {\n if (viewMode) {\n setPopulateInputOnEdit((prevValue) => (prevValue ? false : prevValue));\n }\n }, [viewMode]);\n\n const getOriginFilterTooltips = (origin: FilterOrigin): { info: string; restore: string } => {\n if (origin === 'dashboard') {\n return {\n info: 'Applied by default in this dashboard. If edited, it carries over to other dashboards.',\n restore: 'Restore the value set by this dashboard.',\n };\n } else if (origin === 'scope') {\n return {\n info: 'Applied automatically from your selected scope.',\n restore: 'Restore the value set by your selected scope.',\n };\n } else {\n return {\n info: `This is a ${origin} injected filter.`,\n restore: `Restore filter to its original value.`,\n };\n }\n };\n\n // filters that are in a clean, original state that are applicable and not readonly\n const cleanFilter = !filter.restorable && !filter.readOnly && !filter.nonApplicable;\n\n if (viewMode) {\n const pillTextContent = `${keyLabel} ${filter.operator} ${valueLabel}`;\n const pillText = (\n <span className={cx(styles.pillText, filter.nonApplicable && styles.strikethrough)}>{pillTextContent}</span>\n );\n\n return (\n <div\n className={cx(\n styles.combinedFilterPill,\n readOnly && styles.readOnlyCombinedFilter,\n (isMatchAllFilter(filter) || filter.nonApplicable) && styles.disabledPill,\n filter.readOnly && styles.filterReadOnly\n )}\n onClick={(e) => {\n e.stopPropagation();\n setPopulateInputOnEdit(true);\n handleChangeViewMode();\n }}\n onKeyDown={(e) => {\n if (e.key === 'Enter') {\n setPopulateInputOnEdit(true);\n handleChangeViewMode();\n }\n }}\n role={readOnly ? undefined : 'button'}\n aria-label={t(\n 'grafana-scenes.components.adhoc-filter-pill.edit-filter-with-key',\n 'Edit filter with key {{keyLabel}}',\n {\n keyLabel,\n }\n )}\n tabIndex={0}\n ref={pillWrapperRef}\n >\n {pillTextContent.length < LABEL_MAX_VISIBLE_LENGTH ? (\n pillText\n ) : (\n <Tooltip content={<div className={styles.tooltipText}>{pillTextContent}</div>} placement=\"top\">\n {pillText}\n </Tooltip>\n )}\n\n {!readOnly && !filter.matchAllFilter && (!filter.origin || filter.origin === 'dashboard') ? (\n <IconButton\n onClick={(e) => {\n e.stopPropagation();\n if (filter.origin && filter.origin === 'dashboard') {\n controller.updateToMatchAll(filter);\n } else {\n controller.removeFilter(filter);\n }\n\n setTimeout(() => focusOnWipInputRef?.());\n }}\n onKeyDownCapture={(e) => {\n if (e.key === 'Enter') {\n e.preventDefault();\n e.stopPropagation();\n if (filter.origin && filter.origin === 'dashboard') {\n controller.updateToMatchAll(filter);\n } else {\n controller.removeFilter(filter);\n }\n setTimeout(() => focusOnWipInputRef?.());\n }\n }}\n name=\"times\"\n size=\"md\"\n className={cx(styles.pillIcon, filter.nonApplicable && styles.disabledPillIcon)}\n tooltip={t(\n 'grafana-scenes.components.adhoc-filter-pill.remove-filter-with-key',\n 'Remove filter with key {{keyLabel}}',\n {\n keyLabel,\n }\n )}\n />\n ) : null}\n\n {filter.origin && filter.readOnly && (\n <Tooltip\n content={t('grafana-scenes.components.adhoc-filter-pill.managed-filter', '{{origin}} managed filter', {\n origin: filter.origin,\n })}\n placement={'bottom'}\n >\n <Icon name=\"lock\" size=\"md\" className={styles.readOnlyPillIcon} />\n </Tooltip>\n )}\n\n {filter.origin && cleanFilter && (\n <Tooltip content={getOriginFilterTooltips(filter.origin).info} placement={'bottom'}>\n <Icon name=\"info-circle\" size=\"md\" className={styles.infoPillIcon} />\n </Tooltip>\n )}\n\n {filter.origin && filter.restorable && !filter.readOnly && (\n <IconButton\n onClick={(e) => {\n e.stopPropagation();\n controller.restoreOriginalFilter(filter);\n }}\n onKeyDownCapture={(e) => {\n if (e.key === 'Enter') {\n e.preventDefault();\n e.stopPropagation();\n controller.restoreOriginalFilter(filter);\n }\n }}\n name=\"history\"\n size=\"md\"\n className={isMatchAllFilter(filter) ? styles.matchAllPillIcon : styles.pillIcon}\n tooltip={getOriginFilterTooltips(filter.origin).restore}\n />\n )}\n\n {filter.nonApplicable && (\n <Tooltip\n content={\n filter.nonApplicableReason ??\n t('grafana-scenes.components.adhoc-filter-pill.non-applicable', 'Filter is not applicable')\n }\n placement={'bottom'}\n >\n <Icon name=\"info-circle\" size=\"md\" className={styles.infoPillIcon} />\n </Tooltip>\n )}\n </div>\n );\n }\n\n return (\n <AdHocCombobox\n filter={filter}\n controller={controller}\n handleChangeViewMode={handleChangeViewMode}\n focusOnWipInputRef={focusOnWipInputRef}\n populateInputOnEdit={populateInputOnEdit}\n />\n );\n}\n\nconst getStyles = (theme: GrafanaTheme2) => ({\n combinedFilterPill: css({\n display: 'flex',\n alignItems: 'center',\n background: theme.colors.action.selected,\n borderRadius: theme.shape.radius.default,\n border: `1px solid ${theme.colors.border.weak}`,\n padding: theme.spacing(0.125, 0, 0.125, 1),\n color: theme.colors.text.primary,\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n minHeight: theme.spacing(2.75),\n ...theme.typography.bodySmall,\n fontWeight: theme.typography.fontWeightBold,\n cursor: 'pointer',\n\n '&:hover': {\n background: theme.colors.action.hover,\n },\n }),\n readOnlyCombinedFilter: css({\n paddingRight: theme.spacing(1),\n cursor: 'text',\n '&:hover': {\n background: theme.colors.action.selected,\n },\n }),\n filterReadOnly: css({\n background: theme.colors.background.canvas,\n cursor: 'text',\n '&:hover': {\n background: theme.colors.background.canvas,\n },\n }),\n pillIcon: css({\n marginInline: theme.spacing(0.5),\n cursor: 'pointer',\n '&:hover': {\n color: theme.colors.text.primary,\n },\n }),\n pillText: css({\n maxWidth: '200px',\n width: '100%',\n textOverflow: 'ellipsis',\n overflow: 'hidden',\n }),\n tooltipText: css({\n textAlign: 'center',\n }),\n infoPillIcon: css({\n marginInline: theme.spacing(0.5),\n cursor: 'pointer',\n }),\n readOnlyPillIcon: css({\n marginInline: theme.spacing(0.5),\n }),\n matchAllPillIcon: css({\n marginInline: theme.spacing(0.5),\n cursor: 'pointer',\n color: theme.colors.text.disabled,\n }),\n disabledPillIcon: css({\n marginInline: theme.spacing(0.5),\n cursor: 'pointer',\n color: theme.colors.text.disabled,\n '&:hover': {\n color: theme.colors.text.disabled,\n },\n }),\n ...getNonApplicablePillStyles(theme),\n});\n"],"names":["_a"],"mappings":"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"}
@@ -1,14 +1,14 @@
1
1
  import React, { forwardRef, useLayoutEffect } from 'react';
2
2
  import { AdHocCombobox } from './AdHocFiltersCombobox.js';
3
3
 
4
- const AdHocFiltersAlwaysWipCombobox = forwardRef(function AdHocFiltersAlwaysWipCombobox2({ model }, parentRef) {
5
- const { _wip } = model.useState();
4
+ const AdHocFiltersAlwaysWipCombobox = forwardRef(function AdHocFiltersAlwaysWipCombobox2({ controller }, parentRef) {
5
+ const { wip } = controller.useState();
6
6
  useLayoutEffect(() => {
7
- if (!_wip) {
8
- model._addWip();
7
+ if (!wip) {
8
+ controller.addWip();
9
9
  }
10
- }, [_wip]);
11
- return /* @__PURE__ */ React.createElement(AdHocCombobox, { model, filter: _wip, isAlwaysWip: true, ref: parentRef });
10
+ }, [wip]);
11
+ return /* @__PURE__ */ React.createElement(AdHocCombobox, { controller, filter: wip, isAlwaysWip: true, ref: parentRef });
12
12
  });
13
13
 
14
14
  export { AdHocFiltersAlwaysWipCombobox };
@@ -1 +1 @@
1
- {"version":3,"file":"AdHocFiltersAlwaysWipCombobox.js","sources":["../../../../../src/variables/adhoc/AdHocFiltersCombobox/AdHocFiltersAlwaysWipCombobox.tsx"],"sourcesContent":["import React, { forwardRef, useLayoutEffect } from 'react';\nimport { AdHocFiltersVariable } from '../AdHocFiltersVariable';\nimport { AdHocCombobox } from './AdHocFiltersCombobox';\n\ninterface Props {\n model: AdHocFiltersVariable;\n}\n\nexport const AdHocFiltersAlwaysWipCombobox = forwardRef(function AdHocFiltersAlwaysWipCombobox(\n { model }: Props,\n // pass ability to focus on input element back to parent\n // parentRef is coming from AdHocFiltersComboboxRenderer\n // parentRef is mutated through useImperativeHandle in AdHocCombobox\n parentRef\n) {\n const { _wip } = model.useState();\n\n // when combobox is in wip mode then check and add _wip if its missing\n // needed on first render and when _wip is reset on filter value commit\n useLayoutEffect(() => {\n if (!_wip) {\n model._addWip();\n }\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [_wip]);\n\n return <AdHocCombobox model={model} filter={_wip} isAlwaysWip ref={parentRef} />;\n});\n"],"names":["AdHocFiltersAlwaysWipCombobox"],"mappings":";;;AAQO,MAAM,gCAAgC,UAAW,CAAA,SAASA,+BAC/D,EAAE,KAAA,IAIF,SACA,EAAA;AACA,EAAA,MAAM,EAAE,IAAA,EAAS,GAAA,KAAA,CAAM,QAAS,EAAA;AAIhC,EAAA,eAAA,CAAgB,MAAM;AACpB,IAAA,IAAI,CAAC,IAAM,EAAA;AACT,MAAA,KAAA,CAAM,OAAQ,EAAA;AAAA;AAChB,GAGF,EAAG,CAAC,IAAI,CAAC,CAAA;AAET,EAAO,uBAAA,KAAA,CAAA,aAAA,CAAC,iBAAc,KAAc,EAAA,MAAA,EAAQ,MAAM,WAAW,EAAA,IAAA,EAAC,KAAK,SAAW,EAAA,CAAA;AAChF,CAAC;;;;"}
1
+ {"version":3,"file":"AdHocFiltersAlwaysWipCombobox.js","sources":["../../../../../src/variables/adhoc/AdHocFiltersCombobox/AdHocFiltersAlwaysWipCombobox.tsx"],"sourcesContent":["import React, { forwardRef, useLayoutEffect } from 'react';\nimport { AdHocFiltersController } from '../controller/AdHocFiltersController';\nimport { AdHocCombobox } from './AdHocFiltersCombobox';\n\ninterface Props {\n controller: AdHocFiltersController;\n}\n\nexport const AdHocFiltersAlwaysWipCombobox = forwardRef(function AdHocFiltersAlwaysWipCombobox(\n { controller }: Props,\n // pass ability to focus on input element back to parent\n // parentRef is coming from AdHocFiltersComboboxRenderer\n // parentRef is mutated through useImperativeHandle in AdHocCombobox\n parentRef\n) {\n const { wip } = controller.useState();\n\n // when combobox is in wip mode then check and add wip if its missing\n // needed on first render and when wip is reset on filter value commit\n useLayoutEffect(() => {\n if (!wip) {\n controller.addWip();\n }\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [wip]);\n\n return <AdHocCombobox controller={controller} filter={wip} isAlwaysWip ref={parentRef} />;\n});\n"],"names":["AdHocFiltersAlwaysWipCombobox"],"mappings":";;;AAQO,MAAM,gCAAgC,UAAW,CAAA,SAASA,+BAC/D,EAAE,UAAA,IAIF,SACA,EAAA;AACA,EAAA,MAAM,EAAE,GAAA,EAAQ,GAAA,UAAA,CAAW,QAAS,EAAA;AAIpC,EAAA,eAAA,CAAgB,MAAM;AACpB,IAAA,IAAI,CAAC,GAAK,EAAA;AACR,MAAA,UAAA,CAAW,MAAO,EAAA;AAAA;AACpB,GAGF,EAAG,CAAC,GAAG,CAAC,CAAA;AAER,EAAO,uBAAA,KAAA,CAAA,aAAA,CAAC,iBAAc,UAAwB,EAAA,MAAA,EAAQ,KAAK,WAAW,EAAA,IAAA,EAAC,KAAK,SAAW,EAAA,CAAA;AACzF,CAAC;;;;"}
@@ -11,12 +11,17 @@ import { handleOptionGroups } from '../../utils.js';
11
11
  import { useFloatingInteractions, MAX_MENU_HEIGHT } from './useFloatingInteractions.js';
12
12
  import { MultiValuePill } from './MultiValuePill.js';
13
13
  import { getAdhocOptionSearcher } from '../getAdhocOptionSearcher.js';
14
- import { getQueryController } from '../../../core/sceneGraph/getQueryController.js';
15
14
  import { FILTER_CHANGED_INTERACTION, ADHOC_KEYS_DROPDOWN_INTERACTION, ADHOC_VALUES_DROPDOWN_INTERACTION, FILTER_REMOVED_INTERACTION } from '../../../performance/interactionConstants.js';
16
- import { getInteractionTracker } from '../../../core/sceneGraph/getInteractionTracker.js';
17
15
 
18
- const AdHocCombobox = forwardRef(function AdHocCombobox2({ filter, model, isAlwaysWip, handleChangeViewMode, focusOnWipInputRef, populateInputOnEdit }, parentRef) {
19
- var _a, _b, _c, _d;
16
+ const AdHocCombobox = forwardRef(function AdHocCombobox2({
17
+ filter,
18
+ controller,
19
+ isAlwaysWip,
20
+ handleChangeViewMode,
21
+ focusOnWipInputRef,
22
+ populateInputOnEdit
23
+ }, parentRef) {
24
+ var _a, _b, _c;
20
25
  const [open, setOpen] = useState(false);
21
26
  const [options, setOptions] = useState([]);
22
27
  const [optionsLoading, setOptionsLoading] = useState(false);
@@ -28,7 +33,7 @@ const AdHocCombobox = forwardRef(function AdHocCombobox2({ filter, model, isAlwa
28
33
  const styles = useStyles2(getStyles);
29
34
  const [filterMultiValues, setFilterMultiValues] = useState([]);
30
35
  const [_, setForceRefresh] = useState({});
31
- const allowCustomValue = (_a = model.state.allowCustomValue) != null ? _a : true;
36
+ const { allowCustomValue = true, onAddCustomValue, filters, inputPlaceholder } = controller.useState();
32
37
  const multiValuePillWrapperRef = useRef(null);
33
38
  const hasMultiValueOperator = isMultiValueOperator((filter == null ? void 0 : filter.operator) || "");
34
39
  const isMultiValueEdit = hasMultiValueOperator && filterInputType === "value";
@@ -41,29 +46,30 @@ const AdHocCombobox = forwardRef(function AdHocCombobox2({ filter, model, isAlwa
41
46
  if (isAlwaysWip) {
42
47
  return false;
43
48
  }
44
- if (model.state.filters.at(-1) === filter) {
49
+ if (filters.at(-1) === filter) {
45
50
  return true;
46
51
  }
47
52
  return false;
48
- }, [filter, isAlwaysWip, model.state.filters]);
53
+ }, [filter, isAlwaysWip, filters]);
49
54
  const handleResetWip = useCallback(() => {
50
55
  if (isAlwaysWip) {
51
- model._addWip();
56
+ controller.addWip();
52
57
  setInputType("key");
53
58
  setInputValue("");
54
59
  }
55
- }, [model, isAlwaysWip]);
60
+ }, [controller, isAlwaysWip]);
56
61
  const handleMultiValueFilterCommit = useCallback(
57
- (model2, filter2, filterMultiValues2, preventFocus) => {
62
+ (controller2, filter2, filterMultiValues2, preventFocus) => {
63
+ var _a2;
58
64
  if (!filterMultiValues2.length && filter2.origin) {
59
- model2.updateToMatchAll(filter2);
65
+ controller2.updateToMatchAll(filter2);
60
66
  }
61
67
  if (filterMultiValues2.length) {
62
68
  const valueLabels = [];
63
69
  const values = [];
64
70
  filterMultiValues2.forEach((item) => {
65
- var _a2;
66
- valueLabels.push((_a2 = item.label) != null ? _a2 : item.value);
71
+ var _a3;
72
+ valueLabels.push((_a3 = item.label) != null ? _a3 : item.value);
67
73
  values.push(item.value);
68
74
  });
69
75
  let shouldUpdate = true;
@@ -71,16 +77,15 @@ const AdHocCombobox = forwardRef(function AdHocCombobox2({ filter, model, isAlwa
71
77
  shouldUpdate = !filter2.values.every((v, i) => v === values[i]);
72
78
  }
73
79
  if (shouldUpdate) {
74
- const queryController = getQueryController(model2);
75
- queryController == null ? void 0 : queryController.startProfile(FILTER_CHANGED_INTERACTION);
80
+ (_a2 = controller2.startProfile) == null ? void 0 : _a2.call(controller2, FILTER_CHANGED_INTERACTION);
76
81
  }
77
- model2._updateFilter(filter2, { valueLabels, values, value: values[0] });
82
+ controller2.updateFilter(filter2, { valueLabels, values, value: values[0] });
78
83
  setFilterMultiValues([]);
79
84
  }
80
85
  if (!preventFocus) {
81
86
  setTimeout(() => {
82
- var _a2;
83
- return (_a2 = refs.domReference.current) == null ? void 0 : _a2.focus();
87
+ var _a3;
88
+ return (_a3 = refs.domReference.current) == null ? void 0 : _a3.focus();
84
89
  });
85
90
  }
86
91
  },
@@ -100,10 +105,10 @@ const AdHocCombobox = forwardRef(function AdHocCombobox2({ filter, model, isAlwa
100
105
  setOpen(nextOpen);
101
106
  if (reason && ["outside-press", "escape-key"].includes(reason)) {
102
107
  if (isMultiValueEdit) {
103
- handleMultiValueFilterCommit(model, filter, filterMultiValues);
108
+ handleMultiValueFilterCommit(controller, filter, filterMultiValues);
104
109
  } else {
105
110
  if (filter && filter.origin && inputValue === "") {
106
- model.updateToMatchAll(filter);
111
+ controller.updateToMatchAll(filter);
107
112
  }
108
113
  }
109
114
  handleResetWip();
@@ -118,7 +123,7 @@ const AdHocCombobox = forwardRef(function AdHocCombobox2({ filter, model, isAlwa
118
123
  handleResetWip,
119
124
  inputValue,
120
125
  isMultiValueEdit,
121
- model
126
+ controller
122
127
  ]
123
128
  );
124
129
  const outsidePressIdsToIgnore = useMemo(() => {
@@ -177,15 +182,13 @@ const AdHocCombobox = forwardRef(function AdHocCombobox2({ filter, model, isAlwa
177
182
  filteredDropDownItems.push(customOptionValue);
178
183
  }
179
184
  }
180
- const onAddCustomValue = model.state.onAddCustomValue;
181
185
  const maxOptionWidth = setupDropdownAccessibility(filteredDropDownItems, listRef, disabledIndicesRef);
182
186
  const handleFetchOptions = useCallback(
183
187
  async (inputType) => {
184
- var _a2;
185
- const profiler = getInteractionTracker(model);
188
+ var _a2, _b2, _c2, _d;
186
189
  const interactionName = inputType === "key" ? ADHOC_KEYS_DROPDOWN_INTERACTION : ADHOC_VALUES_DROPDOWN_INTERACTION;
187
190
  if (inputType !== "operator") {
188
- profiler == null ? void 0 : profiler.startInteraction(interactionName);
191
+ (_a2 = controller.startInteraction) == null ? void 0 : _a2.call(controller, interactionName);
189
192
  }
190
193
  setOptionsError(false);
191
194
  setOptionsLoading(true);
@@ -193,18 +196,18 @@ const AdHocCombobox = forwardRef(function AdHocCombobox2({ filter, model, isAlwa
193
196
  let options2 = [];
194
197
  try {
195
198
  if (inputType === "key") {
196
- options2 = await model._getKeys(null);
199
+ options2 = await controller.getKeys(null);
197
200
  } else if (inputType === "operator") {
198
- options2 = model._getOperators();
201
+ options2 = controller.getOperators();
199
202
  } else if (inputType === "value") {
200
- options2 = await model._getValuesFor(filter);
203
+ options2 = await controller.getValuesFor(filter);
201
204
  }
202
205
  if (filterInputTypeRef.current !== inputType) {
203
- profiler == null ? void 0 : profiler.stopInteraction();
206
+ (_b2 = controller.stopInteraction) == null ? void 0 : _b2.call(controller);
204
207
  return;
205
208
  }
206
209
  setOptions(options2);
207
- if ((_a2 = options2[0]) == null ? void 0 : _a2.group) {
210
+ if ((_c2 = options2[0]) == null ? void 0 : _c2.group) {
208
211
  setActiveIndex(1);
209
212
  } else {
210
213
  setActiveIndex(0);
@@ -213,9 +216,9 @@ const AdHocCombobox = forwardRef(function AdHocCombobox2({ filter, model, isAlwa
213
216
  setOptionsError(true);
214
217
  }
215
218
  setOptionsLoading(false);
216
- profiler == null ? void 0 : profiler.stopInteraction();
219
+ (_d = controller.stopInteraction) == null ? void 0 : _d.call(controller);
217
220
  },
218
- [filter, model]
221
+ [filter, controller]
219
222
  );
220
223
  const rowVirtualizer = useVirtualizer({
221
224
  count: filteredDropDownItems.length,
@@ -225,6 +228,7 @@ const AdHocCombobox = forwardRef(function AdHocCombobox2({ filter, model, isAlwa
225
228
  });
226
229
  const handleBackspaceInput = useCallback(
227
230
  (event, multiValueEdit) => {
231
+ var _a2;
228
232
  if (event.key === "Backspace" && !inputValue) {
229
233
  if (filterInputType === "value") {
230
234
  if (multiValueEdit) {
@@ -245,10 +249,9 @@ const AdHocCombobox = forwardRef(function AdHocCombobox2({ filter, model, isAlwa
245
249
  }
246
250
  focusOnWipInputRef == null ? void 0 : focusOnWipInputRef();
247
251
  if (isFilterComplete(filter)) {
248
- const queryController = getQueryController(model);
249
- queryController == null ? void 0 : queryController.startProfile(FILTER_REMOVED_INTERACTION);
252
+ (_a2 = controller.startProfile) == null ? void 0 : _a2.call(controller, FILTER_REMOVED_INTERACTION);
250
253
  }
251
- model._handleComboboxBackspace(filter);
254
+ controller.handleComboboxBackspace(filter);
252
255
  if (isAlwaysWip) {
253
256
  handleResetWip();
254
257
  }
@@ -257,7 +260,7 @@ const AdHocCombobox = forwardRef(function AdHocCombobox2({ filter, model, isAlwa
257
260
  [
258
261
  inputValue,
259
262
  filterInputType,
260
- model,
263
+ controller,
261
264
  filter,
262
265
  isAlwaysWip,
263
266
  filterMultiValues.length,
@@ -271,7 +274,7 @@ const AdHocCombobox = forwardRef(function AdHocCombobox2({ filter, model, isAlwa
271
274
  if (event.key === "Tab" && !event.shiftKey) {
272
275
  if (multiValueEdit) {
273
276
  event.preventDefault();
274
- handleMultiValueFilterCommit(model, filter, filterMultiValues);
277
+ handleMultiValueFilterCommit(controller, filter, filterMultiValues);
275
278
  (_a2 = refs.domReference.current) == null ? void 0 : _a2.focus();
276
279
  }
277
280
  handleChangeViewMode == null ? void 0 : handleChangeViewMode();
@@ -284,7 +287,7 @@ const AdHocCombobox = forwardRef(function AdHocCombobox2({ filter, model, isAlwa
284
287
  handleChangeViewMode,
285
288
  handleMultiValueFilterCommit,
286
289
  handleResetWip,
287
- model,
290
+ controller,
288
291
  refs.domReference
289
292
  ]
290
293
  );
@@ -293,16 +296,17 @@ const AdHocCombobox = forwardRef(function AdHocCombobox2({ filter, model, isAlwa
293
296
  if (event.key === "Tab" && event.shiftKey) {
294
297
  if (multiValueEdit) {
295
298
  event.preventDefault();
296
- handleMultiValueFilterCommit(model, filter, filterMultiValues, true);
299
+ handleMultiValueFilterCommit(controller, filter, filterMultiValues, true);
297
300
  }
298
301
  handleChangeViewMode == null ? void 0 : handleChangeViewMode();
299
302
  handleResetWip();
300
303
  }
301
304
  },
302
- [filter, filterMultiValues, handleChangeViewMode, handleMultiValueFilterCommit, handleResetWip, model]
305
+ [filter, filterMultiValues, handleChangeViewMode, handleMultiValueFilterCommit, handleResetWip, controller]
303
306
  );
304
307
  const handleEnterInput = useCallback(
305
308
  (event, multiValueEdit) => {
309
+ var _a2;
306
310
  if (event.key === "Enter" && activeIndex != null) {
307
311
  if (!filteredDropDownItems[activeIndex]) {
308
312
  return;
@@ -320,10 +324,9 @@ const AdHocCombobox = forwardRef(function AdHocCombobox2({ filter, model, isAlwa
320
324
  onAddCustomValue
321
325
  });
322
326
  if (filterInputType === "value" && payload.value !== (filter == null ? void 0 : filter.value)) {
323
- const queryController = getQueryController(model);
324
- queryController == null ? void 0 : queryController.startProfile(FILTER_CHANGED_INTERACTION);
327
+ (_a2 = controller.startProfile) == null ? void 0 : _a2.call(controller, FILTER_CHANGED_INTERACTION);
325
328
  }
326
- model._updateFilter(filter, payload);
329
+ controller.updateFilter(filter, payload);
327
330
  populateInputValueOnInputTypeSwitch({
328
331
  populateInputOnEdit,
329
332
  item: selectedItem,
@@ -350,7 +353,7 @@ const AdHocCombobox = forwardRef(function AdHocCombobox2({ filter, model, isAlwa
350
353
  activeIndex,
351
354
  filteredDropDownItems,
352
355
  handleLocalMultiValueChange,
353
- model,
356
+ controller,
354
357
  filter,
355
358
  filterInputType,
356
359
  populateInputOnEdit,
@@ -382,7 +385,7 @@ const AdHocCombobox = forwardRef(function AdHocCombobox2({ filter, model, isAlwa
382
385
  }
383
386
  }, [open, filterInputType]);
384
387
  useEffect(() => {
385
- var _a2, _b2, _c2, _d2;
388
+ var _a2, _b2, _c2, _d;
386
389
  if (!isAlwaysWip) {
387
390
  if (hasMultiValueOperator && ((_a2 = filter == null ? void 0 : filter.values) == null ? void 0 : _a2.length)) {
388
391
  const multiValueOptions = filter.values.reduce(
@@ -407,7 +410,7 @@ const AdHocCombobox = forwardRef(function AdHocCombobox2({ filter, model, isAlwa
407
410
  (_a3 = refs.domReference.current) == null ? void 0 : _a3.select();
408
411
  });
409
412
  }
410
- (_d2 = refs.domReference.current) == null ? void 0 : _d2.focus();
413
+ (_d = refs.domReference.current) == null ? void 0 : _d.focus();
411
414
  }
412
415
  }, []);
413
416
  useEffect(() => {
@@ -426,7 +429,7 @@ const AdHocCombobox = forwardRef(function AdHocCombobox2({ filter, model, isAlwa
426
429
  rowVirtualizer.scrollToIndex(activeIndex);
427
430
  }
428
431
  }, [activeIndex, rowVirtualizer]);
429
- const keyLabel = (_b = filter == null ? void 0 : filter.keyLabel) != null ? _b : filter == null ? void 0 : filter.key;
432
+ const keyLabel = (_a = filter == null ? void 0 : filter.keyLabel) != null ? _a : filter == null ? void 0 : filter.key;
430
433
  return /* @__PURE__ */ React.createElement("div", { className: styles.comboboxWrapper }, filter ? /* @__PURE__ */ React.createElement("div", { className: styles.pillWrapper }, (filter == null ? void 0 : filter.key) ? /* @__PURE__ */ React.createElement("div", { className: cx(styles.basePill, styles.keyPill) }, keyLabel) : null, (filter == null ? void 0 : filter.key) && (filter == null ? void 0 : filter.operator) && filterInputType !== "operator" ? /* @__PURE__ */ React.createElement(
431
434
  "div",
432
435
  {
@@ -481,7 +484,7 @@ const AdHocCombobox = forwardRef(function AdHocCombobox2({ filter, model, isAlwa
481
484
  onChange,
482
485
  value: inputValue,
483
486
  // dynamic placeholder to display operator and/or value in filter edit mode
484
- placeholder: generatePlaceholder(filter, filterInputType, isMultiValueEdit, isAlwaysWip),
487
+ placeholder: generatePlaceholder(filter, filterInputType, isMultiValueEdit, isAlwaysWip, inputPlaceholder),
485
488
  "aria-autocomplete": "list",
486
489
  onKeyDown(event) {
487
490
  if (!open) {
@@ -511,7 +514,7 @@ const AdHocCombobox = forwardRef(function AdHocCombobox2({ filter, model, isAlwa
511
514
  style: {
512
515
  ...floatingStyles,
513
516
  width: `${optionsError ? ERROR_STATE_DROPDOWN_WIDTH : maxOptionWidth}px`,
514
- transform: isMultiValueEdit ? `translate(${((_c = multiValuePillWrapperRef.current) == null ? void 0 : _c.getBoundingClientRect().left) || 0}px, ${(((_d = refs.domReference.current) == null ? void 0 : _d.getBoundingClientRect().bottom) || 0) + 10}px )` : floatingStyles.transform
517
+ transform: isMultiValueEdit ? `translate(${((_b = multiValuePillWrapperRef.current) == null ? void 0 : _b.getBoundingClientRect().left) || 0}px, ${(((_c = refs.domReference.current) == null ? void 0 : _c.getBoundingClientRect().bottom) || 0) + 10}px )` : floatingStyles.transform
515
518
  },
516
519
  ref: refs.setFloating,
517
520
  className: styles.dropdownWrapper,
@@ -560,7 +563,7 @@ const AdHocCombobox = forwardRef(function AdHocCombobox2({ filter, model, isAlwa
560
563
  listRef.current[index] = node;
561
564
  },
562
565
  onClick(event) {
563
- var _a3;
566
+ var _a3, _b2;
564
567
  if (filterInputType !== "value") {
565
568
  event.stopPropagation();
566
569
  }
@@ -579,10 +582,9 @@ const AdHocCombobox = forwardRef(function AdHocCombobox2({ filter, model, isAlwa
579
582
  onAddCustomValue
580
583
  });
581
584
  if (filterInputType === "value" && payload.value !== (filter == null ? void 0 : filter.value)) {
582
- const queryController = getQueryController(model);
583
- queryController == null ? void 0 : queryController.startProfile(FILTER_CHANGED_INTERACTION);
585
+ (_b2 = controller.startProfile) == null ? void 0 : _b2.call(controller, FILTER_CHANGED_INTERACTION);
584
586
  }
585
- model._updateFilter(filter, payload);
587
+ controller.updateFilter(filter, payload);
586
588
  populateInputValueOnInputTypeSwitch({
587
589
  populateInputOnEdit,
588
590
  item,
@@ -626,7 +628,7 @@ const AdHocCombobox = forwardRef(function AdHocCombobox2({ filter, model, isAlwa
626
628
  MultiValueApplyButton,
627
629
  {
628
630
  onApply: () => {
629
- handleMultiValueFilterCommit(model, filter, filterMultiValues);
631
+ handleMultiValueFilterCommit(controller, filter, filterMultiValues);
630
632
  },
631
633
  floatingElement: refs.floating.current,
632
634
  maxOptionWidth,