devextreme-angular
Version:
Angular UI and visualization components based on DevExtreme widgets
1,181 lines (1,054 loc) • 123 kB
JavaScript
/*!
* devextreme-angular
* Version: 24.2.6
* Build date: Mon Mar 17 2025
*
* Copyright (c) 2012 - 2025 Developer Express Inc. ALL RIGHTS RESERVED
*
* This software may be modified and distributed under the terms
* of the MIT license. See the LICENSE file in the root of the project for details.
*
* https://github.com/DevExpress/devextreme-angular
*/
/* tslint:disable:max-line-length */
import { TransferState, Component, NgModule, ElementRef, NgZone, PLATFORM_ID, Inject, Input, Output, EventEmitter } from '@angular/core';
import DxFunnel from 'devextreme/viz/funnel';
import { DxComponent, DxTemplateHost, DxIntegrationModule, DxTemplateModule, NestedOptionHost, IterableDifferHelper, WatcherHelper } from 'devextreme-angular/core';
import { DxoAdaptiveLayoutModule } from 'devextreme-angular/ui/nested';
import { DxoExportModule } from 'devextreme-angular/ui/nested';
import { DxoItemModule } from 'devextreme-angular/ui/nested';
import { DxoBorderModule } from 'devextreme-angular/ui/nested';
import { DxoHoverStyleModule } from 'devextreme-angular/ui/nested';
import { DxoHatchingModule } from 'devextreme-angular/ui/nested';
import { DxoSelectionStyleModule } from 'devextreme-angular/ui/nested';
import { DxoLabelModule } from 'devextreme-angular/ui/nested';
import { DxoConnectorModule } from 'devextreme-angular/ui/nested';
import { DxoFontModule } from 'devextreme-angular/ui/nested';
import { DxoFormatModule } from 'devextreme-angular/ui/nested';
import { DxoLegendModule } from 'devextreme-angular/ui/nested';
import { DxoMarginModule } from 'devextreme-angular/ui/nested';
import { DxoTitleModule } from 'devextreme-angular/ui/nested';
import { DxoSubtitleModule } from 'devextreme-angular/ui/nested';
import { DxoLoadingIndicatorModule } from 'devextreme-angular/ui/nested';
import { DxoSizeModule } from 'devextreme-angular/ui/nested';
import { DxoTooltipModule } from 'devextreme-angular/ui/nested';
import { DxoShadowModule } from 'devextreme-angular/ui/nested';
import { DxoFunnelAdaptiveLayoutModule } from 'devextreme-angular/ui/funnel/nested';
import { DxoFunnelBorderModule } from 'devextreme-angular/ui/funnel/nested';
import { DxoFunnelConnectorModule } from 'devextreme-angular/ui/funnel/nested';
import { DxoFunnelExportModule } from 'devextreme-angular/ui/funnel/nested';
import { DxoFunnelFontModule } from 'devextreme-angular/ui/funnel/nested';
import { DxoFunnelFormatModule } from 'devextreme-angular/ui/funnel/nested';
import { DxoFunnelFunnelTitleModule } from 'devextreme-angular/ui/funnel/nested';
import { DxoFunnelFunnelTitleSubtitleModule } from 'devextreme-angular/ui/funnel/nested';
import { DxoFunnelHatchingModule } from 'devextreme-angular/ui/funnel/nested';
import { DxoFunnelHoverStyleModule } from 'devextreme-angular/ui/funnel/nested';
import { DxoFunnelItemModule } from 'devextreme-angular/ui/funnel/nested';
import { DxoFunnelItemBorderModule } from 'devextreme-angular/ui/funnel/nested';
import { DxoFunnelLabelModule } from 'devextreme-angular/ui/funnel/nested';
import { DxoFunnelLabelBorderModule } from 'devextreme-angular/ui/funnel/nested';
import { DxoFunnelLegendModule } from 'devextreme-angular/ui/funnel/nested';
import { DxoFunnelLegendBorderModule } from 'devextreme-angular/ui/funnel/nested';
import { DxoFunnelLegendTitleModule } from 'devextreme-angular/ui/funnel/nested';
import { DxoFunnelLegendTitleSubtitleModule } from 'devextreme-angular/ui/funnel/nested';
import { DxoFunnelLoadingIndicatorModule } from 'devextreme-angular/ui/funnel/nested';
import { DxoFunnelMarginModule } from 'devextreme-angular/ui/funnel/nested';
import { DxoFunnelSelectionStyleModule } from 'devextreme-angular/ui/funnel/nested';
import { DxoFunnelShadowModule } from 'devextreme-angular/ui/funnel/nested';
import { DxoFunnelSizeModule } from 'devextreme-angular/ui/funnel/nested';
import { DxoFunnelSubtitleModule } from 'devextreme-angular/ui/funnel/nested';
import { DxoFunnelTitleModule } from 'devextreme-angular/ui/funnel/nested';
import { DxoFunnelTooltipModule } from 'devextreme-angular/ui/funnel/nested';
import { DxoFunnelTooltipBorderModule } from 'devextreme-angular/ui/funnel/nested';
import * as i0 from "@angular/core";
import * as i1 from "devextreme-angular/core";
/**
* The Funnel is a UI component that visualizes a value at different stages. It helps assess value changes throughout these stages and identify potential issues. The Funnel UI component conveys information using different interactive elements (tooltips, labels, legend) and enables you to create not only a funnel, but also a pyramid chart.
*/
export class DxFunnelComponent extends DxComponent {
_watcherHelper;
_idh;
instance = null;
/**
* Specifies adaptive layout properties.
*/
get adaptiveLayout() {
return this._getOption('adaptiveLayout');
}
set adaptiveLayout(value) {
this._setOption('adaptiveLayout', value);
}
/**
* Specifies the algorithm for building the funnel.
*/
get algorithm() {
return this._getOption('algorithm');
}
set algorithm(value) {
this._setOption('algorithm', value);
}
/**
* Specifies which data source field provides arguments for funnel items. The argument identifies a funnel item and represents it on the legend.
*/
get argumentField() {
return this._getOption('argumentField');
}
set argumentField(value) {
this._setOption('argumentField', value);
}
/**
* Specifies which data source field provides colors for funnel items. If this field is absent, the palette provides the colors.
*/
get colorField() {
return this._getOption('colorField');
}
set colorField(value) {
this._setOption('colorField', value);
}
/**
* Binds the UI component to data.
*/
get dataSource() {
return this._getOption('dataSource');
}
set dataSource(value) {
this._setOption('dataSource', value);
}
/**
* Specifies whether the UI component responds to user interaction.
*/
get disabled() {
return this._getOption('disabled');
}
set disabled(value) {
this._setOption('disabled', value);
}
/**
* Specifies the global attributes to be attached to the UI component's container element.
*/
get elementAttr() {
return this._getOption('elementAttr');
}
set elementAttr(value) {
this._setOption('elementAttr', value);
}
/**
* Configures the exporting and printing features.
*/
get export() {
return this._getOption('export');
}
set export(value) {
this._setOption('export', value);
}
/**
* Specifies whether funnel items change their style when a user pauses on them.
*/
get hoverEnabled() {
return this._getOption('hoverEnabled');
}
set hoverEnabled(value) {
this._setOption('hoverEnabled', value);
}
/**
* Turns the funnel upside down.
*/
get inverted() {
return this._getOption('inverted');
}
set inverted(value) {
this._setOption('inverted', value);
}
/**
* Configures funnel items' appearance.
*/
get item() {
return this._getOption('item');
}
set item(value) {
this._setOption('item', value);
}
/**
* Configures funnel item labels.
*/
get label() {
return this._getOption('label');
}
set label(value) {
this._setOption('label', value);
}
/**
* Configures the legend.
*/
get legend() {
return this._getOption('legend');
}
set legend(value) {
this._setOption('legend', value);
}
/**
* Configures the loading indicator.
*/
get loadingIndicator() {
return this._getOption('loadingIndicator');
}
set loadingIndicator(value) {
this._setOption('loadingIndicator', value);
}
/**
* Generates space around the UI component.
*/
get margin() {
return this._getOption('margin');
}
set margin(value) {
this._setOption('margin', value);
}
/**
* Specifies the ratio between the height of the neck and that of the whole funnel. Accepts values from 0 to 1. Applies only if the algorithm is 'dynamicHeight'.
*/
get neckHeight() {
return this._getOption('neckHeight');
}
set neckHeight(value) {
this._setOption('neckHeight', value);
}
/**
* Specifies the ratio between the width of the neck and that of the whole funnel. Accepts values from 0 to 1. Applies only if the algorithm is 'dynamicHeight'.
*/
get neckWidth() {
return this._getOption('neckWidth');
}
set neckWidth(value) {
this._setOption('neckWidth', value);
}
/**
* Sets the palette to be used to colorize funnel items.
*/
get palette() {
return this._getOption('palette');
}
set palette(value) {
this._setOption('palette', value);
}
/**
* Specifies what to do with colors in the palette when their number is less than the number of funnel items.
*/
get paletteExtensionMode() {
return this._getOption('paletteExtensionMode');
}
set paletteExtensionMode(value) {
this._setOption('paletteExtensionMode', value);
}
/**
* Notifies the UI component that it is embedded into an HTML page that uses a tag modifying the path.
*/
get pathModified() {
return this._getOption('pathModified');
}
set pathModified(value) {
this._setOption('pathModified', value);
}
/**
* Specifies whether to redraw the UI component when the size of the container changes or a mobile device rotates.
*/
get redrawOnResize() {
return this._getOption('redrawOnResize');
}
set redrawOnResize(value) {
this._setOption('redrawOnResize', value);
}
/**
* Specifies how item labels should behave when they overlap.
*/
get resolveLabelOverlapping() {
return this._getOption('resolveLabelOverlapping');
}
set resolveLabelOverlapping(value) {
this._setOption('resolveLabelOverlapping', value);
}
/**
* Switches the UI component to a right-to-left representation.
*/
get rtlEnabled() {
return this._getOption('rtlEnabled');
}
set rtlEnabled(value) {
this._setOption('rtlEnabled', value);
}
/**
* Specifies whether a single or multiple funnel items can be in the selected state at a time. Assigning 'none' disables the selection feature.
*/
get selectionMode() {
return this._getOption('selectionMode');
}
set selectionMode(value) {
this._setOption('selectionMode', value);
}
/**
* Specifies the UI component's size in pixels.
*/
get size() {
return this._getOption('size');
}
set size(value) {
this._setOption('size', value);
}
/**
* Specifies whether to sort funnel items.
*/
get sortData() {
return this._getOption('sortData');
}
set sortData(value) {
this._setOption('sortData', value);
}
/**
* Sets the name of the theme the UI component uses.
*/
get theme() {
return this._getOption('theme');
}
set theme(value) {
this._setOption('theme', value);
}
/**
* Configures the UI component's title.
*/
get title() {
return this._getOption('title');
}
set title(value) {
this._setOption('title', value);
}
/**
* Configures tooltips - small pop-up rectangles that display information about a data-visualizing UI component element being pressed or hovered over with the mouse pointer.
*/
get tooltip() {
return this._getOption('tooltip');
}
set tooltip(value) {
this._setOption('tooltip', value);
}
/**
* Specifies which data source field provides values for funnel items. The value defines a funnel item's area.
*/
get valueField() {
return this._getOption('valueField');
}
set valueField(value) {
this._setOption('valueField', value);
}
/**
* A function that is executed before the UI component is disposed of.
*/
onDisposing;
/**
* A function that is executed when the UI component's rendering has finished.
*/
onDrawn;
/**
* A function that is executed after the UI component is exported.
*/
onExported;
/**
* A function that is executed before the UI component is exported.
*/
onExporting;
/**
* A function that is executed before a file with exported UI component is saved to the user's local storage.
*/
onFileSaving;
/**
* A function that is executed after the pointer enters or leaves a funnel item.
*/
onHoverChanged;
/**
* A function that is executed when an error or warning occurs.
*/
onIncidentOccurred;
/**
* A function used in JavaScript frameworks to save the UI component instance.
*/
onInitialized;
/**
* A function that is executed when a funnel item is clicked or tapped.
*/
onItemClick;
/**
* A function that is executed when a legend item is clicked or tapped.
*/
onLegendClick;
/**
* A function that is executed after a UI component property is changed.
*/
onOptionChanged;
/**
* A function that is executed when a funnel item is selected or selection is canceled.
*/
onSelectionChanged;
/**
* This member supports the internal infrastructure and is not intended to be used directly from your code.
*/
adaptiveLayoutChange;
/**
* This member supports the internal infrastructure and is not intended to be used directly from your code.
*/
algorithmChange;
/**
* This member supports the internal infrastructure and is not intended to be used directly from your code.
*/
argumentFieldChange;
/**
* This member supports the internal infrastructure and is not intended to be used directly from your code.
*/
colorFieldChange;
/**
* This member supports the internal infrastructure and is not intended to be used directly from your code.
*/
dataSourceChange;
/**
* This member supports the internal infrastructure and is not intended to be used directly from your code.
*/
disabledChange;
/**
* This member supports the internal infrastructure and is not intended to be used directly from your code.
*/
elementAttrChange;
/**
* This member supports the internal infrastructure and is not intended to be used directly from your code.
*/
exportChange;
/**
* This member supports the internal infrastructure and is not intended to be used directly from your code.
*/
hoverEnabledChange;
/**
* This member supports the internal infrastructure and is not intended to be used directly from your code.
*/
invertedChange;
/**
* This member supports the internal infrastructure and is not intended to be used directly from your code.
*/
itemChange;
/**
* This member supports the internal infrastructure and is not intended to be used directly from your code.
*/
labelChange;
/**
* This member supports the internal infrastructure and is not intended to be used directly from your code.
*/
legendChange;
/**
* This member supports the internal infrastructure and is not intended to be used directly from your code.
*/
loadingIndicatorChange;
/**
* This member supports the internal infrastructure and is not intended to be used directly from your code.
*/
marginChange;
/**
* This member supports the internal infrastructure and is not intended to be used directly from your code.
*/
neckHeightChange;
/**
* This member supports the internal infrastructure and is not intended to be used directly from your code.
*/
neckWidthChange;
/**
* This member supports the internal infrastructure and is not intended to be used directly from your code.
*/
paletteChange;
/**
* This member supports the internal infrastructure and is not intended to be used directly from your code.
*/
paletteExtensionModeChange;
/**
* This member supports the internal infrastructure and is not intended to be used directly from your code.
*/
pathModifiedChange;
/**
* This member supports the internal infrastructure and is not intended to be used directly from your code.
*/
redrawOnResizeChange;
/**
* This member supports the internal infrastructure and is not intended to be used directly from your code.
*/
resolveLabelOverlappingChange;
/**
* This member supports the internal infrastructure and is not intended to be used directly from your code.
*/
rtlEnabledChange;
/**
* This member supports the internal infrastructure and is not intended to be used directly from your code.
*/
selectionModeChange;
/**
* This member supports the internal infrastructure and is not intended to be used directly from your code.
*/
sizeChange;
/**
* This member supports the internal infrastructure and is not intended to be used directly from your code.
*/
sortDataChange;
/**
* This member supports the internal infrastructure and is not intended to be used directly from your code.
*/
themeChange;
/**
* This member supports the internal infrastructure and is not intended to be used directly from your code.
*/
titleChange;
/**
* This member supports the internal infrastructure and is not intended to be used directly from your code.
*/
tooltipChange;
/**
* This member supports the internal infrastructure and is not intended to be used directly from your code.
*/
valueFieldChange;
constructor(elementRef, ngZone, templateHost, _watcherHelper, _idh, optionHost, transferState, platformId) {
super(elementRef, ngZone, templateHost, _watcherHelper, transferState, platformId);
this._watcherHelper = _watcherHelper;
this._idh = _idh;
this._createEventEmitters([
{ subscribe: 'disposing', emit: 'onDisposing' },
{ subscribe: 'drawn', emit: 'onDrawn' },
{ subscribe: 'exported', emit: 'onExported' },
{ subscribe: 'exporting', emit: 'onExporting' },
{ subscribe: 'fileSaving', emit: 'onFileSaving' },
{ subscribe: 'hoverChanged', emit: 'onHoverChanged' },
{ subscribe: 'incidentOccurred', emit: 'onIncidentOccurred' },
{ subscribe: 'initialized', emit: 'onInitialized' },
{ subscribe: 'itemClick', emit: 'onItemClick' },
{ subscribe: 'legendClick', emit: 'onLegendClick' },
{ subscribe: 'optionChanged', emit: 'onOptionChanged' },
{ subscribe: 'selectionChanged', emit: 'onSelectionChanged' },
{ emit: 'adaptiveLayoutChange' },
{ emit: 'algorithmChange' },
{ emit: 'argumentFieldChange' },
{ emit: 'colorFieldChange' },
{ emit: 'dataSourceChange' },
{ emit: 'disabledChange' },
{ emit: 'elementAttrChange' },
{ emit: 'exportChange' },
{ emit: 'hoverEnabledChange' },
{ emit: 'invertedChange' },
{ emit: 'itemChange' },
{ emit: 'labelChange' },
{ emit: 'legendChange' },
{ emit: 'loadingIndicatorChange' },
{ emit: 'marginChange' },
{ emit: 'neckHeightChange' },
{ emit: 'neckWidthChange' },
{ emit: 'paletteChange' },
{ emit: 'paletteExtensionModeChange' },
{ emit: 'pathModifiedChange' },
{ emit: 'redrawOnResizeChange' },
{ emit: 'resolveLabelOverlappingChange' },
{ emit: 'rtlEnabledChange' },
{ emit: 'selectionModeChange' },
{ emit: 'sizeChange' },
{ emit: 'sortDataChange' },
{ emit: 'themeChange' },
{ emit: 'titleChange' },
{ emit: 'tooltipChange' },
{ emit: 'valueFieldChange' }
]);
this._idh.setHost(this);
optionHost.setHost(this);
}
_createInstance(element, options) {
return new DxFunnel(element, options);
}
ngOnDestroy() {
this._destroyWidget();
}
ngOnChanges(changes) {
super.ngOnChanges(changes);
this.setupChanges('dataSource', changes);
this.setupChanges('palette', changes);
}
setupChanges(prop, changes) {
if (!(prop in this._optionsToUpdate)) {
this._idh.setup(prop, changes);
}
}
ngDoCheck() {
this._idh.doCheck('dataSource');
this._idh.doCheck('palette');
this._watcherHelper.checkWatchers();
super.ngDoCheck();
super.clearChangedOptions();
}
_setOption(name, value) {
let isSetup = this._idh.setupSingle(name, value);
let isChanged = this._idh.getChanges(name, value) !== null;
if (isSetup || isChanged) {
super._setOption(name, value);
}
}
/** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DxFunnelComponent, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }, { token: i1.DxTemplateHost }, { token: i1.WatcherHelper }, { token: i1.IterableDifferHelper }, { token: i1.NestedOptionHost }, { token: i0.TransferState }, { token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Component });
/** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: DxFunnelComponent, selector: "dx-funnel", inputs: { adaptiveLayout: "adaptiveLayout", algorithm: "algorithm", argumentField: "argumentField", colorField: "colorField", dataSource: "dataSource", disabled: "disabled", elementAttr: "elementAttr", export: "export", hoverEnabled: "hoverEnabled", inverted: "inverted", item: "item", label: "label", legend: "legend", loadingIndicator: "loadingIndicator", margin: "margin", neckHeight: "neckHeight", neckWidth: "neckWidth", palette: "palette", paletteExtensionMode: "paletteExtensionMode", pathModified: "pathModified", redrawOnResize: "redrawOnResize", resolveLabelOverlapping: "resolveLabelOverlapping", rtlEnabled: "rtlEnabled", selectionMode: "selectionMode", size: "size", sortData: "sortData", theme: "theme", title: "title", tooltip: "tooltip", valueField: "valueField" }, outputs: { onDisposing: "onDisposing", onDrawn: "onDrawn", onExported: "onExported", onExporting: "onExporting", onFileSaving: "onFileSaving", onHoverChanged: "onHoverChanged", onIncidentOccurred: "onIncidentOccurred", onInitialized: "onInitialized", onItemClick: "onItemClick", onLegendClick: "onLegendClick", onOptionChanged: "onOptionChanged", onSelectionChanged: "onSelectionChanged", adaptiveLayoutChange: "adaptiveLayoutChange", algorithmChange: "algorithmChange", argumentFieldChange: "argumentFieldChange", colorFieldChange: "colorFieldChange", dataSourceChange: "dataSourceChange", disabledChange: "disabledChange", elementAttrChange: "elementAttrChange", exportChange: "exportChange", hoverEnabledChange: "hoverEnabledChange", invertedChange: "invertedChange", itemChange: "itemChange", labelChange: "labelChange", legendChange: "legendChange", loadingIndicatorChange: "loadingIndicatorChange", marginChange: "marginChange", neckHeightChange: "neckHeightChange", neckWidthChange: "neckWidthChange", paletteChange: "paletteChange", paletteExtensionModeChange: "paletteExtensionModeChange", pathModifiedChange: "pathModifiedChange", redrawOnResizeChange: "redrawOnResizeChange", resolveLabelOverlappingChange: "resolveLabelOverlappingChange", rtlEnabledChange: "rtlEnabledChange", selectionModeChange: "selectionModeChange", sizeChange: "sizeChange", sortDataChange: "sortDataChange", themeChange: "themeChange", titleChange: "titleChange", tooltipChange: "tooltipChange", valueFieldChange: "valueFieldChange" }, host: { attributes: { "ngSkipHydration": "true" } }, providers: [
DxTemplateHost,
WatcherHelper,
NestedOptionHost,
IterableDifferHelper
], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: '', isInline: true, styles: [":host{display:block}\n"] });
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DxFunnelComponent, decorators: [{
type: Component,
args: [{ selector: 'dx-funnel', template: '', host: { ngSkipHydration: 'true' }, providers: [
DxTemplateHost,
WatcherHelper,
NestedOptionHost,
IterableDifferHelper
], styles: [":host{display:block}\n"] }]
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.NgZone }, { type: i1.DxTemplateHost }, { type: i1.WatcherHelper }, { type: i1.IterableDifferHelper }, { type: i1.NestedOptionHost }, { type: i0.TransferState }, { type: undefined, decorators: [{
type: Inject,
args: [PLATFORM_ID]
}] }], propDecorators: { adaptiveLayout: [{
type: Input
}], algorithm: [{
type: Input
}], argumentField: [{
type: Input
}], colorField: [{
type: Input
}], dataSource: [{
type: Input
}], disabled: [{
type: Input
}], elementAttr: [{
type: Input
}], export: [{
type: Input
}], hoverEnabled: [{
type: Input
}], inverted: [{
type: Input
}], item: [{
type: Input
}], label: [{
type: Input
}], legend: [{
type: Input
}], loadingIndicator: [{
type: Input
}], margin: [{
type: Input
}], neckHeight: [{
type: Input
}], neckWidth: [{
type: Input
}], palette: [{
type: Input
}], paletteExtensionMode: [{
type: Input
}], pathModified: [{
type: Input
}], redrawOnResize: [{
type: Input
}], resolveLabelOverlapping: [{
type: Input
}], rtlEnabled: [{
type: Input
}], selectionMode: [{
type: Input
}], size: [{
type: Input
}], sortData: [{
type: Input
}], theme: [{
type: Input
}], title: [{
type: Input
}], tooltip: [{
type: Input
}], valueField: [{
type: Input
}], onDisposing: [{
type: Output
}], onDrawn: [{
type: Output
}], onExported: [{
type: Output
}], onExporting: [{
type: Output
}], onFileSaving: [{
type: Output
}], onHoverChanged: [{
type: Output
}], onIncidentOccurred: [{
type: Output
}], onInitialized: [{
type: Output
}], onItemClick: [{
type: Output
}], onLegendClick: [{
type: Output
}], onOptionChanged: [{
type: Output
}], onSelectionChanged: [{
type: Output
}], adaptiveLayoutChange: [{
type: Output
}], algorithmChange: [{
type: Output
}], argumentFieldChange: [{
type: Output
}], colorFieldChange: [{
type: Output
}], dataSourceChange: [{
type: Output
}], disabledChange: [{
type: Output
}], elementAttrChange: [{
type: Output
}], exportChange: [{
type: Output
}], hoverEnabledChange: [{
type: Output
}], invertedChange: [{
type: Output
}], itemChange: [{
type: Output
}], labelChange: [{
type: Output
}], legendChange: [{
type: Output
}], loadingIndicatorChange: [{
type: Output
}], marginChange: [{
type: Output
}], neckHeightChange: [{
type: Output
}], neckWidthChange: [{
type: Output
}], paletteChange: [{
type: Output
}], paletteExtensionModeChange: [{
type: Output
}], pathModifiedChange: [{
type: Output
}], redrawOnResizeChange: [{
type: Output
}], resolveLabelOverlappingChange: [{
type: Output
}], rtlEnabledChange: [{
type: Output
}], selectionModeChange: [{
type: Output
}], sizeChange: [{
type: Output
}], sortDataChange: [{
type: Output
}], themeChange: [{
type: Output
}], titleChange: [{
type: Output
}], tooltipChange: [{
type: Output
}], valueFieldChange: [{
type: Output
}] } });
export class DxFunnelModule {
/** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DxFunnelModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
/** @nocollapse */ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.12", ngImport: i0, type: DxFunnelModule, declarations: [DxFunnelComponent], imports: [DxoAdaptiveLayoutModule,
DxoExportModule,
DxoItemModule,
DxoBorderModule,
DxoHoverStyleModule,
DxoHatchingModule,
DxoSelectionStyleModule,
DxoLabelModule,
DxoConnectorModule,
DxoFontModule,
DxoFormatModule,
DxoLegendModule,
DxoMarginModule,
DxoTitleModule,
DxoSubtitleModule,
DxoLoadingIndicatorModule,
DxoSizeModule,
DxoTooltipModule,
DxoShadowModule,
DxoFunnelAdaptiveLayoutModule,
DxoFunnelBorderModule,
DxoFunnelConnectorModule,
DxoFunnelExportModule,
DxoFunnelFontModule,
DxoFunnelFormatModule,
DxoFunnelFunnelTitleModule,
DxoFunnelFunnelTitleSubtitleModule,
DxoFunnelHatchingModule,
DxoFunnelHoverStyleModule,
DxoFunnelItemModule,
DxoFunnelItemBorderModule,
DxoFunnelLabelModule,
DxoFunnelLabelBorderModule,
DxoFunnelLegendModule,
DxoFunnelLegendBorderModule,
DxoFunnelLegendTitleModule,
DxoFunnelLegendTitleSubtitleModule,
DxoFunnelLoadingIndicatorModule,
DxoFunnelMarginModule,
DxoFunnelSelectionStyleModule,
DxoFunnelShadowModule,
DxoFunnelSizeModule,
DxoFunnelSubtitleModule,
DxoFunnelTitleModule,
DxoFunnelTooltipModule,
DxoFunnelTooltipBorderModule,
DxIntegrationModule,
DxTemplateModule], exports: [DxFunnelComponent, DxoAdaptiveLayoutModule,
DxoExportModule,
DxoItemModule,
DxoBorderModule,
DxoHoverStyleModule,
DxoHatchingModule,
DxoSelectionStyleModule,
DxoLabelModule,
DxoConnectorModule,
DxoFontModule,
DxoFormatModule,
DxoLegendModule,
DxoMarginModule,
DxoTitleModule,
DxoSubtitleModule,
DxoLoadingIndicatorModule,
DxoSizeModule,
DxoTooltipModule,
DxoShadowModule,
DxoFunnelAdaptiveLayoutModule,
DxoFunnelBorderModule,
DxoFunnelConnectorModule,
DxoFunnelExportModule,
DxoFunnelFontModule,
DxoFunnelFormatModule,
DxoFunnelFunnelTitleModule,
DxoFunnelFunnelTitleSubtitleModule,
DxoFunnelHatchingModule,
DxoFunnelHoverStyleModule,
DxoFunnelItemModule,
DxoFunnelItemBorderModule,
DxoFunnelLabelModule,
DxoFunnelLabelBorderModule,
DxoFunnelLegendModule,
DxoFunnelLegendBorderModule,
DxoFunnelLegendTitleModule,
DxoFunnelLegendTitleSubtitleModule,
DxoFunnelLoadingIndicatorModule,
DxoFunnelMarginModule,
DxoFunnelSelectionStyleModule,
DxoFunnelShadowModule,
DxoFunnelSizeModule,
DxoFunnelSubtitleModule,
DxoFunnelTitleModule,
DxoFunnelTooltipModule,
DxoFunnelTooltipBorderModule,
DxTemplateModule] });
/** @nocollapse */ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DxFunnelModule, imports: [DxoAdaptiveLayoutModule,
DxoExportModule,
DxoItemModule,
DxoBorderModule,
DxoHoverStyleModule,
DxoHatchingModule,
DxoSelectionStyleModule,
DxoLabelModule,
DxoConnectorModule,
DxoFontModule,
DxoFormatModule,
DxoLegendModule,
DxoMarginModule,
DxoTitleModule,
DxoSubtitleModule,
DxoLoadingIndicatorModule,
DxoSizeModule,
DxoTooltipModule,
DxoShadowModule,
DxoFunnelAdaptiveLayoutModule,
DxoFunnelBorderModule,
DxoFunnelConnectorModule,
DxoFunnelExportModule,
DxoFunnelFontModule,
DxoFunnelFormatModule,
DxoFunnelFunnelTitleModule,
DxoFunnelFunnelTitleSubtitleModule,
DxoFunnelHatchingModule,
DxoFunnelHoverStyleModule,
DxoFunnelItemModule,
DxoFunnelItemBorderModule,
DxoFunnelLabelModule,
DxoFunnelLabelBorderModule,
DxoFunnelLegendModule,
DxoFunnelLegendBorderModule,
DxoFunnelLegendTitleModule,
DxoFunnelLegendTitleSubtitleModule,
DxoFunnelLoadingIndicatorModule,
DxoFunnelMarginModule,
DxoFunnelSelectionStyleModule,
DxoFunnelShadowModule,
DxoFunnelSizeModule,
DxoFunnelSubtitleModule,
DxoFunnelTitleModule,
DxoFunnelTooltipModule,
DxoFunnelTooltipBorderModule,
DxIntegrationModule,
DxTemplateModule, DxoAdaptiveLayoutModule,
DxoExportModule,
DxoItemModule,
DxoBorderModule,
DxoHoverStyleModule,
DxoHatchingModule,
DxoSelectionStyleModule,
DxoLabelModule,
DxoConnectorModule,
DxoFontModule,
DxoFormatModule,
DxoLegendModule,
DxoMarginModule,
DxoTitleModule,
DxoSubtitleModule,
DxoLoadingIndicatorModule,
DxoSizeModule,
DxoTooltipModule,
DxoShadowModule,
DxoFunnelAdaptiveLayoutModule,
DxoFunnelBorderModule,
DxoFunnelConnectorModule,
DxoFunnelExportModule,
DxoFunnelFontModule,
DxoFunnelFormatModule,
DxoFunnelFunnelTitleModule,
DxoFunnelFunnelTitleSubtitleModule,
DxoFunnelHatchingModule,
DxoFunnelHoverStyleModule,
DxoFunnelItemModule,
DxoFunnelItemBorderModule,
DxoFunnelLabelModule,
DxoFunnelLabelBorderModule,
DxoFunnelLegendModule,
DxoFunnelLegendBorderModule,
DxoFunnelLegendTitleModule,
DxoFunnelLegendTitleSubtitleModule,
DxoFunnelLoadingIndicatorModule,
DxoFunnelMarginModule,
DxoFunnelSelectionStyleModule,
DxoFunnelShadowModule,
DxoFunnelSizeModule,
DxoFunnelSubtitleModule,
DxoFunnelTitleModule,
DxoFunnelTooltipModule,
DxoFunnelTooltipBorderModule,
DxTemplateModule] });
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DxFunnelModule, decorators: [{
type: NgModule,
args: [{
imports: [
DxoAdaptiveLayoutModule,
DxoExportModule,
DxoItemModule,
DxoBorderModule,
DxoHoverStyleModule,
DxoHatchingModule,
DxoSelectionStyleModule,
DxoLabelModule,
DxoConnectorModule,
DxoFontModule,
DxoFormatModule,
DxoLegendModule,
DxoMarginModule,
DxoTitleModule,
DxoSubtitleModule,
DxoLoadingIndicatorModule,
DxoSizeModule,
DxoTooltipModule,
DxoShadowModule,
DxoFunnelAdaptiveLayoutModule,
DxoFunnelBorderModule,
DxoFunnelConnectorModule,
DxoFunnelExportModule,
DxoFunnelFontModule,
DxoFunnelFormatModule,
DxoFunnelFunnelTitleModule,
DxoFunnelFunnelTitleSubtitleModule,
DxoFunnelHatchingModule,
DxoFunnelHoverStyleModule,
DxoFunnelItemModule,
DxoFunnelItemBorderModule,
DxoFunnelLabelModule,
DxoFunnelLabelBorderModule,
DxoFunnelLegendModule,
DxoFunnelLegendBorderModule,
DxoFunnelLegendTitleModule,
DxoFunnelLegendTitleSubtitleModule,
DxoFunnelLoadingIndicatorModule,
DxoFunnelMarginModule,
DxoFunnelSelectionStyleModule,
DxoFunnelShadowModule,
DxoFunnelSizeModule,
DxoFunnelSubtitleModule,
DxoFunnelTitleModule,
DxoFunnelTooltipModule,
DxoFunnelTooltipBorderModule,
DxIntegrationModule,
DxTemplateModule
],
declarations: [
DxFunnelComponent
],
exports: [
DxFunnelComponent,
DxoAdaptiveLayoutModule,
DxoExportModule,
DxoItemModule,
DxoBorderModule,
DxoHoverStyleModule,
DxoHatchingModule,
DxoSelectionStyleModule,
DxoLabelModule,
DxoConnectorModule,
DxoFontModule,
DxoFormatModule,
DxoLegendModule,
DxoMarginModule,
DxoTitleModule,
DxoSubtitleModule,
DxoLoadingIndicatorModule,
DxoSizeModule,
DxoTooltipModule,
DxoShadowModule,
DxoFunnelAdaptiveLayoutModule,
DxoFunnelBorderModule,
DxoFunnelConnectorModule,
DxoFunnelExportModule,
DxoFunnelFontModule,
DxoFunnelFormatModule,
DxoFunnelFunnelTitleModule,
DxoFunnelFunnelTitleSubtitleModule,
DxoFunnelHatchingModule,
DxoFunnelHoverStyleModule,
DxoFunnelItemModule,
DxoFunnelItemBorderModule,
DxoFunnelLabelModule,
DxoFunnelLabelBorderModule,
DxoFunnelLegendModule,
DxoFunnelLegendBorderModule,
DxoFunnelLegendTitleModule,
DxoFunnelLegendTitleSubtitleModule,
DxoFunnelLoadingIndicatorModule,
DxoFunnelMarginModule,
DxoFunnelSelectionStyleModule,
DxoFunnelShadowModule,
DxoFunnelSizeModule,
DxoFunnelSubtitleModule,
DxoFunnelTitleModule,
DxoFunnelTooltipModule,
DxoFunnelTooltipBorderModule,
DxTemplateModule
]
}]
}] });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9kaXN0L3VpL2Z1bm5lbC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7R0FXRztBQUVILG9DQUFvQztBQUdwQyxPQUFPLEVBQ0gsYUFBYSxFQUNiLFNBQVMsRUFDVCxRQUFRLEVBQ1IsVUFBVSxFQUNWLE1BQU0sRUFDTixXQUFXLEVBQ1gsTUFBTSxFQUVOLEtBQUssRUFDTCxNQUFNLEVBRU4sWUFBWSxFQUlmLE1BQU0sZUFBZSxDQUFDO0FBV3ZCLE9BQU8sUUFBUSxNQUFNLHVCQUF1QixDQUFDO0FBRzdDLE9BQU8sRUFDSCxXQUFXLEVBQ1gsY0FBYyxFQUNkLG1CQUFtQixFQUNuQixnQkFBZ0IsRUFDaEIsZ0JBQWdCLEVBQ2hCLG9CQUFvQixFQUNwQixhQUFhLEVBQ2hCLE1BQU0seUJBQXlCLENBQUM7QUFFakMsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDdkUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDL0QsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDbkUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDakUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDdkUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzlELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsZUFBZSxFQUFF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