smart-webcomponents-angular
Version:
[](https://jqwidgets.com/license/)
1 lines • 58.3 kB
Source Map (JSON)
{"version":3,"file":"smart-webcomponents-angular-gauge.mjs","sources":["../../gauge/src/smart.element.ts","../../gauge/src/smart.gauge.ts","../../gauge/src/smart.gauge.module.ts","../../gauge/src/smart-webcomponents-angular-gauge.ts"],"sourcesContent":["\ndeclare global {\n interface Window {\n Smart: any;\n}\n}\n\n\nimport { Directive, ElementRef, Input, Output, EventEmitter } from '@angular/core';\nimport { ElementRenderMode } from './../index';\n\n@Directive()\nexport class BaseElement {\n constructor(ref: ElementRef) {\n const that = this;\n this.nativeElement = ref.nativeElement as any;\n\n that.nativeElement.onAttached = () => {\n that.onAttach.emit(that.nativeElement);\n }\n\n that.nativeElement.onDetached = () => {\n that.onDetach.emit(that.nativeElement);\n }\n }\n\n @Output() onCreate: EventEmitter<any> = new EventEmitter();\n @Output() onReady: EventEmitter<any> = new EventEmitter();\n @Output() onAttach: EventEmitter<any> = new EventEmitter();\n @Output() onDetach: EventEmitter<any> = new EventEmitter();\n\n public nativeElement: any;\n\n public addEventListener(type: string, listener: EventListenerOrEventListenerObject, options: boolean | AddEventListenerOptions = false): void {\n this.nativeElement.addEventListener(type, listener, options);\n\t}\n\n\tpublic removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options: boolean | AddEventListenerOptions = false): void {\n\t\tthis.nativeElement.removeEventListener(type, listener, options);\n\t}\n\n\tpublic dispatchEvent(event: Event): boolean {\n\t\treturn this.nativeElement.dispatchEvent(event);\n\t}\n\n\tpublic blur(): void {\n\t\tthis.nativeElement.blur();\n\t}\n\n\tpublic click(): void {\n\t\tthis.nativeElement.click();\n\t}\n\n\tpublic focus(options?: FocusOptions): void {\n\t\tthis.nativeElement.focus(options);\n\t}\n\n/** @description Sets or gets the license. */\n\t@Input()\n\tget license(): string {\n\t\treturn this.nativeElement ? this.nativeElement.license : undefined;\n\t}\n\tset license(value: string) {\n\t\tthis.nativeElement ? this.nativeElement.license = value : undefined;\n\t}\n\t\n/** @description Sets or gets the language. Used in conjunction with the property messages. */\n\t@Input()\n\tget locale(): string {\n\t\treturn this.nativeElement ? this.nativeElement.locale : undefined;\n\t}\n\tset locale(value: string) {\n\t\tthis.nativeElement ? this.nativeElement.locale = value : undefined;\n\t}\n\n\t/** @description Callback used to customize the format of the messages that are returned from the Localization Module. */\n\t@Input()\n\tget localizeFormatFunction(): any {\n\t\treturn this.nativeElement ? this.nativeElement.localizeFormatFunction : undefined;\n\t}\n\tset localizeFormatFunction(value: any) {\n\t\tthis.nativeElement ? this.nativeElement.localizeFormatFunction = value : undefined;\n\t}\n\n\t/** @description Sets or gets an object specifying strings used in the widget that can be localized. Used in conjunction with the property locale. */\n\t@Input()\n\tget messages(): any {\n\t\treturn this.nativeElement ? this.nativeElement.messages : undefined;\n\t}\n\tset messages(value: any) {\n\t\tthis.nativeElement ? this.nativeElement.messages = value : undefined;\n\t}\n\n\t/** @description Sets or gets the value indicating whether the element is aligned to support locales using right-to-left fonts. */\n\t@Input()\n\tget rightToLeft(): boolean {\n\t\treturn this.nativeElement ? this.nativeElement.rightToLeft : undefined;\n\t}\n\tset rightToLeft(value: boolean) {\n\t\tthis.nativeElement ? this.nativeElement.rightToLeft = value : undefined;\n\t}\n\n\t/** @description Determines the theme. Theme defines the look of the element */\n\t@Input()\n\tget theme(): string {\n\t\treturn this.nativeElement ? this.nativeElement.theme : undefined;\n\t}\n\tset theme(value: string) {\n\t\tthis.nativeElement ? this.nativeElement.theme = value : undefined;\n\t}\n}\n\nlet Smart: any;\nif (typeof window !== \"undefined\") {\n\tSmart = window.Smart;\n}\nexport { Smart };\n\n","import { Gauge } from './../index';\nimport { GaugeAnalogDisplayType, Animation, GaugeDigitalDisplayPosition, LabelsVisibility, DragMechanicalAction, ScaleMode, GaugeNeedlePosition, GaugeScalePosition, ScaleType, GaugeSizeMode, TicksPosition, TicksVisibility, Validation, WordLength, ElementRenderMode} from './../index';\nimport { Component, Directive, AfterViewInit, ElementRef, Input, OnInit, OnChanges, OnDestroy, SimpleChanges, forwardRef, ChangeDetectionStrategy, Output, EventEmitter } from '@angular/core';\nimport { BaseElement, Smart } from './smart.element';\nexport { GaugeAnalogDisplayType, Animation, GaugeDigitalDisplayPosition, LabelsVisibility, DragMechanicalAction, ScaleMode, GaugeNeedlePosition, GaugeScalePosition, ScaleType, GaugeSizeMode, TicksPosition, TicksVisibility, Validation, WordLength, ElementRenderMode} from './../index';\nexport { Smart } from './smart.element';\nexport { Gauge } from './../index';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\n\n\nconst CUSTOM_INPUT_CONTROL_VALUE_ACCESSOR: any = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => GaugeComponent),\n multi: true\n}\n\n@Directive({\n\texportAs: 'smart-gauge',\tselector: 'smart-gauge, [smart-gauge]',\n\tproviders: [CUSTOM_INPUT_CONTROL_VALUE_ACCESSOR]\n\n})\n\nexport class GaugeComponent extends BaseElement implements OnInit, AfterViewInit, OnDestroy, OnChanges, ControlValueAccessor {\n\tconstructor(ref: ElementRef<Gauge>) {\n\t\tsuper(ref);\n\t\tthis.nativeElement = ref.nativeElement as Gauge;\n\t}\n\n\tprivate eventHandlers: any[] = [];\n\n\tpublic declare nativeElement: Gauge;\n\t/** @description Creates the component on demand.\n\t * @param properties An optional object of properties, which will be added to the template binded ones.\n\t */\n\tpublic createComponent(properties = {}): any {\n \tthis.nativeElement = <Gauge>document.createElement('smart-gauge');\n\t\tfor (let propertyName in properties) { \n \t\t\tthis.nativeElement[propertyName] = properties[propertyName];\n\t\t}\n\t\treturn this.nativeElement;\n\t}\n /**\n * @description\n * The registered callback function called when a change event occurs on the form elements.\n */\n _onChange: (value: any) => void = () => {};\n /**\n * @description\n * The registered callback function called when a blur event occurs on the form elements.\n */\n _onTouched: () => any = () => {};\n\n\n\t/** @description Specifies the style or format of the gauge's indicator, such as a needle, bar, or marker, which visually represents the current value on the gauge. */\n\t@Input()\n\tget analogDisplayType(): GaugeAnalogDisplayType | string {\n\t\treturn this.nativeElement ? this.nativeElement.analogDisplayType : undefined;\n\t}\n\tset analogDisplayType(value: GaugeAnalogDisplayType | string) {\n\t\tthis.nativeElement ? this.nativeElement.analogDisplayType = value : undefined;\n\t}\n\n\t/** @description Configures or retrieves the current animation mode. When this property is set to 'none', all animations are disabled, resulting in static content with no animated transitions or effects. Setting a different value enables animation according to the specified mode. */\n\t@Input()\n\tget animation(): Animation | string {\n\t\treturn this.nativeElement ? this.nativeElement.animation : undefined;\n\t}\n\tset animation(value: Animation | string) {\n\t\tthis.nativeElement ? this.nativeElement.animation = value : undefined;\n\t}\n\n\t/** @description Defines or retrieves the duration of the gauge's animation effect, measured in milliseconds. This property only applies when the animation setting is enabled (i.e., its value is not 'none'). If animation is set to 'none', this duration has no effect. */\n\t@Input()\n\tget animationDuration(): number {\n\t\treturn this.nativeElement ? this.nativeElement.animationDuration : undefined;\n\t}\n\tset animationDuration(value: number) {\n\t\tthis.nativeElement ? this.nativeElement.animationDuration = value : undefined;\n\t}\n\n\t/** @description When the coerce property is set to true, any value provided will automatically be adjusted to the nearest valid value based on the defined interval. This ensures that the resulting value always conforms to the step size specified by the interval property, even if the original input does not exactly match an allowed value. */\n\t@Input()\n\tget coerce(): boolean {\n\t\treturn this.nativeElement ? this.nativeElement.coerce : undefined;\n\t}\n\tset coerce(value: boolean) {\n\t\tthis.nativeElement ? this.nativeElement.coerce = value : undefined;\n\t}\n\n\t/** @description Determines whether custom tick marks, which may be placed at uneven intervals, are displayed on the plot. The specific positions of these custom ticks are specified using the customTicks property. This option allows you to override the default tick placement and use your own set of tick values. */\n\t@Input()\n\tget customInterval(): boolean {\n\t\treturn this.nativeElement ? this.nativeElement.customInterval : undefined;\n\t}\n\tset customInterval(value: boolean) {\n\t\tthis.nativeElement ? this.nativeElement.customInterval = value : undefined;\n\t}\n\n\t/** @description When customInterval is enabled, you can define a specific list of tick values to be displayed on the plot. If coerce is set to true, any input value will automatically snap to the nearest tick from this predefined list, ensuring that only these tick values can be selected or represented. */\n\t@Input()\n\tget customTicks(): number[] {\n\t\treturn this.nativeElement ? this.nativeElement.customTicks : undefined;\n\t}\n\tset customTicks(value: number[]) {\n\t\tthis.nativeElement ? this.nativeElement.customTicks = value : undefined;\n\t}\n\n\t/** @description Specifies the format of the date labels that appear when the mode property is set to 'date'. This determines how dates are displayed on the labels (e.g., 'YYYY-MM-DD', 'MM/DD/YYYY'). */\n\t@Input()\n\tget dateLabelFormatString(): string {\n\t\treturn this.nativeElement ? this.nativeElement.dateLabelFormatString : undefined;\n\t}\n\tset dateLabelFormatString(value: string) {\n\t\tthis.nativeElement ? this.nativeElement.dateLabelFormatString = value : undefined;\n\t}\n\n\t/** @description Specifies or retrieves the character used as the decimal separator in numeric values. This property allows you to define which character (such as \".\" or \",\") separates the integer part from the fractional part in numbers when displaying or parsing numeric data. */\n\t@Input()\n\tget decimalSeparator(): string {\n\t\treturn this.nativeElement ? this.nativeElement.decimalSeparator : undefined;\n\t}\n\tset decimalSeparator(value: string) {\n\t\tthis.nativeElement ? this.nativeElement.decimalSeparator = value : undefined;\n\t}\n\n\t/** @description Determines whether the element's content is shown or hidden on the digital interface. When enabled, the element is visible to users; when disabled, the element is not displayed on the screen. */\n\t@Input()\n\tget digitalDisplay(): boolean {\n\t\treturn this.nativeElement ? this.nativeElement.digitalDisplay : undefined;\n\t}\n\tset digitalDisplay(value: boolean) {\n\t\tthis.nativeElement ? this.nativeElement.digitalDisplay = value : undefined;\n\t}\n\n\t/** @description Specifies the placement of the digital display within the element, allowing you to control its alignment (e.g., top, bottom, left, right, or center) relative to the element’s boundaries. */\n\t@Input()\n\tget digitalDisplayPosition(): GaugeDigitalDisplayPosition | string {\n\t\treturn this.nativeElement ? this.nativeElement.digitalDisplayPosition : undefined;\n\t}\n\tset digitalDisplayPosition(value: GaugeDigitalDisplayPosition | string) {\n\t\tthis.nativeElement ? this.nativeElement.digitalDisplayPosition = value : undefined;\n\t}\n\n\t/** @description Determines whether the element is interactive or not. When enabled, the element responds to user actions (such as clicks or keyboard input); when disabled, the element appears inactive and does not accept user interaction. */\n\t@Input()\n\tget disabled(): boolean {\n\t\treturn this.nativeElement ? this.nativeElement.disabled : undefined;\n\t}\n\tset disabled(value: boolean) {\n\t\tthis.nativeElement ? this.nativeElement.disabled = value : undefined;\n\t}\n\n\t/** @description Callback function that enables custom rendering of the needle element when using the 'analogDisplayType' setting. This function is called during the drawing process, allowing you to define the appearance and behavior of the needle beyond the default rendering. Only applicable when the display type is set to 'analog'. */\n\t@Input()\n\tget drawNeedle(): any {\n\t\treturn this.nativeElement ? this.nativeElement.drawNeedle : undefined;\n\t}\n\tset drawNeedle(value: any) {\n\t\tthis.nativeElement ? this.nativeElement.drawNeedle = value : undefined;\n\t}\n\n\t/** @description Defines or retrieves the end angle of the gauge, specifying where the gauge’s scale terminates. The angle is measured in degrees, starting from the gauge’s initial position (commonly 0 degrees). Adjusting this property determines the extent of the gauge’s arc and affects how the scale is rendered visually. */\n\t@Input()\n\tget endAngle(): number {\n\t\treturn this.nativeElement ? this.nativeElement.endAngle : undefined;\n\t}\n\tset endAngle(value: number) {\n\t\tthis.nativeElement ? this.nativeElement.endAngle = value : undefined;\n\t}\n\n\t/** @description \"When the 'coerce' property is set to 'true', all input values are automatically adjusted to fall within the specified interval. Any value outside the interval will be coerced to the nearest boundary value of the interval.\" */\n\t@Input()\n\tget interval(): number {\n\t\treturn this.nativeElement ? this.nativeElement.interval : undefined;\n\t}\n\tset interval(value: number) {\n\t\tthis.nativeElement ? this.nativeElement.interval = value : undefined;\n\t}\n\n\t/** @description Specifies the orientation of the gauge. When set to true, the starting and ending positions of the gauge are reversed, causing the gauge to be displayed in the opposite direction. If false, the gauge follows its default direction. Use this option to customize the gauge's flow based on your application's requirements. */\n\t@Input()\n\tget inverted(): boolean {\n\t\treturn this.nativeElement ? this.nativeElement.inverted : undefined;\n\t}\n\tset inverted(value: boolean) {\n\t\tthis.nativeElement ? this.nativeElement.inverted = value : undefined;\n\t}\n\n\t/** @description A callback function that allows you to customize the formatting of the values shown within the gauge labels. This function receives the raw value as an argument and should return the formatted string to be displayed. Use this to control the appearance, number formatting, units, or localization of label values inside the gauge. */\n\t@Input()\n\tget labelFormatFunction(): any {\n\t\treturn this.nativeElement ? this.nativeElement.labelFormatFunction : undefined;\n\t}\n\tset labelFormatFunction(value: any) {\n\t\tthis.nativeElement ? this.nativeElement.labelFormatFunction = value : undefined;\n\t}\n\n\t/** @description Specifies whether the labels within the element are displayed or hidden. When set to true, the labels inside the element are visible; when set to false, the labels are not shown. This property allows you to control the display of label text within the element. */\n\t@Input()\n\tget labelsVisibility(): LabelsVisibility | string {\n\t\treturn this.nativeElement ? this.nativeElement.labelsVisibility : undefined;\n\t}\n\tset labelsVisibility(value: LabelsVisibility | string) {\n\t\tthis.nativeElement ? this.nativeElement.labelsVisibility = value : undefined;\n\t}\n\n\t/** @description Provides a way to retrieve or assign the unlockKey property, which is a unique code required to activate or gain access to the product's full features. Use this property to securely manage the product's access control. */\n\t@Input()\n\tget unlockKey(): string {\n\t\treturn this.nativeElement ? this.nativeElement.unlockKey : undefined;\n\t}\n\tset unlockKey(value: string) {\n\t\tthis.nativeElement ? this.nativeElement.unlockKey = value : undefined;\n\t}\n\n\t/** @description Specifies or retrieves the current locale setting, typically defined as a language and regional code (e.g., \"en-US\" for U.S. English). This property works together with the messages property to determine which localized message set is displayed, enabling proper language and formatting support for users based on their selected locale. */\n\t@Input()\n\tget locale(): string {\n\t\treturn this.nativeElement ? this.nativeElement.locale : undefined;\n\t}\n\tset locale(value: string) {\n\t\tthis.nativeElement ? this.nativeElement.locale = value : undefined;\n\t}\n\n\t/** @description A callback function that allows you to customize the formatting of messages returned by the Localization Module. Use this to modify how localized strings are structured or displayed before they are delivered to your application, enabling support for advanced formatting, variable interpolation, or context-specific adaptations. */\n\t@Input()\n\tget localizeFormatFunction(): any {\n\t\treturn this.nativeElement ? this.nativeElement.localizeFormatFunction : undefined;\n\t}\n\tset localizeFormatFunction(value: any) {\n\t\tthis.nativeElement ? this.nativeElement.localizeFormatFunction = value : undefined;\n\t}\n\n\t/** @description Controls whether the element displays data using a logarithmic scale. When enabled, values are plotted on a logarithmic axis, which is useful for visualizing data that spans several orders of magnitude. When disabled, a standard linear scale is used. */\n\t@Input()\n\tget logarithmicScale(): boolean {\n\t\treturn this.nativeElement ? this.nativeElement.logarithmicScale : undefined;\n\t}\n\tset logarithmicScale(value: boolean) {\n\t\tthis.nativeElement ? this.nativeElement.logarithmicScale = value : undefined;\n\t}\n\n\t/** @description Specifies the upper limit for the element's scale, preventing it from being scaled beyond this maximum value. This setting ensures that when the element is resized or transformed, its scale will not exceed the defined maximum threshold. */\n\t@Input()\n\tget max(): number {\n\t\treturn this.nativeElement ? this.nativeElement.max : undefined;\n\t}\n\tset max(value: number) {\n\t\tthis.nativeElement ? this.nativeElement.max = value : undefined;\n\t}\n\n\t/** @description Specifies the event or condition that triggers the update of the element’s value, such as on user input, when focus is lost, or after a specific action occurs. This setting controls how and when changes to the element's value are recognized and processed in the application. */\n\t@Input()\n\tget mechanicalAction(): DragMechanicalAction | string {\n\t\treturn this.nativeElement ? this.nativeElement.mechanicalAction : undefined;\n\t}\n\tset mechanicalAction(value: DragMechanicalAction | string) {\n\t\tthis.nativeElement ? this.nativeElement.mechanicalAction = value : undefined;\n\t}\n\n\t/** @description Specifies or retrieves an object containing the text strings displayed by the widget, allowing for customization and localization of all user-facing messages. This property works together with the locale property to support multiple languages by providing translated strings for different locales. Use this to ensure the widget's interface is fully adaptable to users' language preferences. */\n\t@Input()\n\tget messages(): any {\n\t\treturn this.nativeElement ? this.nativeElement.messages : undefined;\n\t}\n\tset messages(value: any) {\n\t\tthis.nativeElement ? this.nativeElement.messages = value : undefined;\n\t}\n\n\t/** @description Specifies the lowest allowable value for the element’s scale, preventing the element from being scaled below this threshold. This property ensures that the element cannot appear smaller than the defined minimum scale value. */\n\t@Input()\n\tget min(): number {\n\t\treturn this.nativeElement ? this.nativeElement.min : undefined;\n\t}\n\tset min(value: number) {\n\t\tthis.nativeElement ? this.nativeElement.min = value : undefined;\n\t}\n\n\t/** @description Specifies whether the element is configured to handle numerical values or date values, enabling appropriate functionality and validation for each data type. */\n\t@Input()\n\tget mode(): ScaleMode | string {\n\t\treturn this.nativeElement ? this.nativeElement.mode : undefined;\n\t}\n\tset mode(value: ScaleMode | string) {\n\t\tthis.nativeElement ? this.nativeElement.mode = value : undefined;\n\t}\n\n\t/** @description Specifies or retrieves the element’s name attribute, which serves as the identifier for the element’s value when form data is submitted to the server. This name is used as the key in the name-value pair sent with the form submission, enabling the server-side application to access the corresponding data. */\n\t@Input()\n\tget name(): string {\n\t\treturn this.nativeElement ? this.nativeElement.name : undefined;\n\t}\n\tset name(value: string) {\n\t\tthis.nativeElement ? this.nativeElement.name = value : undefined;\n\t}\n\n\t/** @description Specifies the angle or position of the needle when analogDisplayType is set to 'needle'. This value controls where the needle points on the analog display, allowing customization of its exact placement based on the current data or setting. */\n\t@Input()\n\tget needlePosition(): GaugeNeedlePosition | string {\n\t\treturn this.nativeElement ? this.nativeElement.needlePosition : undefined;\n\t}\n\tset needlePosition(value: GaugeNeedlePosition | string) {\n\t\tthis.nativeElement ? this.nativeElement.needlePosition = value : undefined;\n\t}\n\n\t/** @description Specifies how many digits should be displayed after the decimal point for numeric values. This property is only applicable when the scaleType is set to 'floatingPoint'; it has no effect for other scale types. */\n\t@Input()\n\tget precisionDigits(): number {\n\t\treturn this.nativeElement ? this.nativeElement.precisionDigits : undefined;\n\t}\n\tset precisionDigits(value: number) {\n\t\tthis.nativeElement ? this.nativeElement.precisionDigits = value : undefined;\n\t}\n\n\t/** @description This property is an array containing multiple objects, where each object defines a distinct range. Each range represents a colored area characterized by its own specific size and properties, such as start and end values, color, and label. These ranges allow you to visually differentiate segments according to predefined criteria on a graphical interface or data visualization component. */\n\t@Input()\n\tget ranges(): {startValue: number, endValue: number, className: string}[] {\n\t\treturn this.nativeElement ? this.nativeElement.ranges : undefined;\n\t}\n\tset ranges(value: {startValue: number, endValue: number, className: string}[]) {\n\t\tthis.nativeElement ? this.nativeElement.ranges = value : undefined;\n\t}\n\n\t/** @description When the element is set to read-only, users are unable to modify its value or content; they can view the information but cannot interact with or edit the element in any way. */\n\t@Input()\n\tget readonly(): boolean {\n\t\treturn this.nativeElement ? this.nativeElement.readonly : undefined;\n\t}\n\tset readonly(value: boolean) {\n\t\tthis.nativeElement ? this.nativeElement.readonly = value : undefined;\n\t}\n\n\t/** @description Specifies whether the element should use right-to-left (RTL) alignment to support languages and locales that utilize right-to-left fonts, such as Arabic or Hebrew. When enabled, the element's scale is inverted, and all labels and digital displays are repositioned and rendered in a right-to-left orientation to ensure proper localization and readability for RTL scripts. This property can be both set and retrieved. */\n\t@Input()\n\tget rightToLeft(): boolean {\n\t\treturn this.nativeElement ? this.nativeElement.rightToLeft : undefined;\n\t}\n\tset rightToLeft(value: boolean) {\n\t\tthis.nativeElement ? this.nativeElement.rightToLeft = value : undefined;\n\t}\n\n\t/** @description Specifies the placement of the scale within the element, indicating where the scale will appear (e.g., top, bottom, left, or right) relative to the element. */\n\t@Input()\n\tget scalePosition(): GaugeScalePosition | string {\n\t\treturn this.nativeElement ? this.nativeElement.scalePosition : undefined;\n\t}\n\tset scalePosition(value: GaugeScalePosition | string) {\n\t\tthis.nativeElement ? this.nativeElement.scalePosition = value : undefined;\n\t}\n\n\t/** @description Specifies the data type used for the gauge’s value and defines the corresponding scale (e.g., linear, logarithmic). This setting ensures that input values are interpreted correctly and displayed with the appropriate measurement scale on the gauge. */\n\t@Input()\n\tget scaleType(): ScaleType | string {\n\t\treturn this.nativeElement ? this.nativeElement.scaleType : undefined;\n\t}\n\tset scaleType(value: ScaleType | string) {\n\t\tthis.nativeElement ? this.nativeElement.scaleType = value : undefined;\n\t}\n\n\t/** @description Specifies whether numerical values should be displayed using scientific notation (e.g., 1.23e+4) instead of standard decimal formatting. Set to true to enable scientific notation, or false to display numbers in regular decimal form. */\n\t@Input()\n\tget scientificNotation(): boolean {\n\t\treturn this.nativeElement ? this.nativeElement.scientificNotation : undefined;\n\t}\n\tset scientificNotation(value: boolean) {\n\t\tthis.nativeElement ? this.nativeElement.scientificNotation = value : undefined;\n\t}\n\n\t/** @description This property determines whether the gauge’s range indicators are displayed on the gauge component. When set to true, the range segments (such as colored bands or sections representing value intervals) will be visible on the gauge; when set to false, these range indicators will be hidden. */\n\t@Input()\n\tget showRanges(): boolean {\n\t\treturn this.nativeElement ? this.nativeElement.showRanges : undefined;\n\t}\n\tset showRanges(value: boolean) {\n\t\tthis.nativeElement ? this.nativeElement.showRanges = value : undefined;\n\t}\n\n\t/** @description Controls whether units are shown or hidden in the user interface, allowing you to toggle the display of measurement units (e.g., px, %, em) alongside values. */\n\t@Input()\n\tget showUnit(): boolean {\n\t\treturn this.nativeElement ? this.nativeElement.showUnit : undefined;\n\t}\n\tset showUnit(value: boolean) {\n\t\tthis.nativeElement ? this.nativeElement.showUnit = value : undefined;\n\t}\n\n\t/** @description Calculates the number of significant digits present in a given number. This property is relevant only when the scaleType is set to 'integer', ensuring that the digit count pertains exclusively to whole numbers, not decimals or other formats. */\n\t@Input()\n\tget significantDigits(): number | null {\n\t\treturn this.nativeElement ? this.nativeElement.significantDigits : undefined;\n\t}\n\tset significantDigits(value: number | null) {\n\t\tthis.nativeElement ? this.nativeElement.significantDigits = value : undefined;\n\t}\n\n\t/** @description Specifies the method used to determine the overall dimensions (width and height) of the Gauge component, affecting how it adapts to its parent container or specified sizing rules. */\n\t@Input()\n\tget sizeMode(): GaugeSizeMode | string {\n\t\treturn this.nativeElement ? this.nativeElement.sizeMode : undefined;\n\t}\n\tset sizeMode(value: GaugeSizeMode | string) {\n\t\tthis.nativeElement ? this.nativeElement.sizeMode = value : undefined;\n\t}\n\n\t/** @description Sets or retrieves the starting angle of the gauge. This property defines the position, in degrees, where the gauge's scale begins, measured clockwise from the reference point (typically the rightmost horizontal axis at 0 degrees). Adjusting this value changes where the gauge arc starts, allowing for customized gauge orientations. */\n\t@Input()\n\tget startAngle(): number {\n\t\treturn this.nativeElement ? this.nativeElement.startAngle : undefined;\n\t}\n\tset startAngle(value: number) {\n\t\tthis.nativeElement ? this.nativeElement.startAngle = value : undefined;\n\t}\n\n\t/** @description Sets or retrieves the visual theme applied to the element, allowing you to customize or query its overall appearance—such as colors, backgrounds, and style variations—to match different design schemes. */\n\t@Input()\n\tget theme(): string {\n\t\treturn this.nativeElement ? this.nativeElement.theme : undefined;\n\t}\n\tset theme(value: string) {\n\t\tthis.nativeElement ? this.nativeElement.theme = value : undefined;\n\t}\n\n\t/** @description Specifies the exact placement of tick marks along the Gauge's scale, such as inside, outside, or across the gauge axis. This setting controls where the ticks appear relative to the gauge track for improved readability and customization. */\n\t@Input()\n\tget ticksPosition(): TicksPosition | string {\n\t\treturn this.nativeElement ? this.nativeElement.ticksPosition : undefined;\n\t}\n\tset ticksPosition(value: TicksPosition | string) {\n\t\tthis.nativeElement ? this.nativeElement.ticksPosition = value : undefined;\n\t}\n\n\t/** @description Controls whether the ticks are displayed or hidden on the axis. If set to true, ticks will be visible; if false, ticks will be hidden. This option allows you to toggle the tick marks for improved chart customization. */\n\t@Input()\n\tget ticksVisibility(): TicksVisibility | string {\n\t\treturn this.nativeElement ? this.nativeElement.ticksVisibility : undefined;\n\t}\n\tset ticksVisibility(value: TicksVisibility | string) {\n\t\tthis.nativeElement ? this.nativeElement.ticksVisibility = value : undefined;\n\t}\n\n\t/** @description Specifies whether the element can receive keyboard focus. When set to true, the element can be focused programmatically or via user interaction (such as using the Tab key); when set to false, the element will be excluded from the tab order and cannot be focused. */\n\t@Input()\n\tget unfocusable(): boolean {\n\t\treturn this.nativeElement ? this.nativeElement.unfocusable : undefined;\n\t}\n\tset unfocusable(value: boolean) {\n\t\tthis.nativeElement ? this.nativeElement.unfocusable = value : undefined;\n\t}\n\n\t/** @description Specifies or retrieves the unit of measurement (such as pixels, percentage, or em) that is applied to the values displayed on the element's scale. This determines how the scale values are interpreted and rendered for the element. */\n\t@Input()\n\tget unit(): string {\n\t\treturn this.nativeElement ? this.nativeElement.unit : undefined;\n\t}\n\tset unit(value: string) {\n\t\tthis.nativeElement ? this.nativeElement.unit = value : undefined;\n\t}\n\n\t/** @description Defines validation constraints for the value by specifying minimum and maximum allowable limits. Ensures that the value entered falls within the specified range. */\n\t@Input()\n\tget validation(): Validation | string {\n\t\treturn this.nativeElement ? this.nativeElement.validation : undefined;\n\t}\n\tset validation(value: Validation | string) {\n\t\tthis.nativeElement ? this.nativeElement.validation = value : undefined;\n\t}\n\n\t/** @description Sets or retrieves the current value of the element. If the scaleType property is set to 'date', the value must be a date object or a valid date string; otherwise, the value should match the expected data type for the current scaleType. */\n\t@Input()\n\tget value(): string | number | Date {\n\t\treturn this.nativeElement ? this.nativeElement.value : undefined;\n\t}\n\tset value(value: string | number | Date) {\n\t\tthis.nativeElement ? this.nativeElement.value = value : undefined;\n\t}\n\n\t/** @description Gets or sets the word length used for values. This property is only applicable when scaleType is set to 'integer'; it has no effect for other scale types. */\n\t@Input()\n\tget wordLength(): WordLength | string {\n\t\treturn this.nativeElement ? this.nativeElement.wordLength : undefined;\n\t}\n\tset wordLength(value: WordLength | string) {\n\t\tthis.nativeElement ? this.nativeElement.wordLength = value : undefined;\n\t}\n\n\t/** @description This event is triggered whenever the value of the element is modified by the user or through a script, typically after the element loses focus or its value is updated programmatically. It allows you to detect and respond to changes in the element’s content.\n\t* @param event. The custom event. \tCustom event was created with: event.detail(\toldValue, \tvalue)\n\t* oldValue - The previous value of the element.\n\t* value - The new value of the element.\n\t*/\n\t@Output() onChange: EventEmitter<CustomEvent> = new EventEmitter();\n\n\t/** @description Sets keyboard focus to the specified element, making it the active element for user input and interaction. This allows users to immediately begin typing or interacting with the element without manually clicking or tabbing to it. Commonly used for form fields or interactive components to improve accessibility and user experience. \n\t*/\n public focus(): void {\n if (this.nativeElement.isRendered) {\n this.nativeElement.focus();\n }\n else\n {\n this.nativeElement.whenRendered(() => {\n this.nativeElement.focus();\n });\n }\n }\n\n\t/** @description Returns the optimal size of the element, including the current width and the calculated height based on the layout and dimensions of its internal child elements. This ensures the element can fully contain its content without overflow, reflecting the most appropriate size for display. \n\t* @returns {any}\n */\n\tpublic async getOptimalSize(): Promise<any> {\n\t\tconst getResultOnRender = () => {\n return new Promise(resolve => {\n this.nativeElement.whenRendered(() => {\n const result = this.nativeElement.getOptimalSize();\n resolve(result)\n });\n });\n };\n const result = await getResultOnRender();\n\n return result;\n }\n\n\tpublic getOptimalSizeSync(): any {\n if (this.nativeElement.isRendered) {\n \t return this.nativeElement.getOptimalSize();\n }\n return null;\n }\n\n\t/** @description Retrieves or updates the current value displayed by the gauge component. Use this to programmatically read the gauge’s status or set it to a new value within its defined range. \n\t* @param {string | number | Date} value?. The value to be set. If no parameter is passed, returns the current value of the gauge. The value can be a date only when <b>scaleType</b> is 'date'.\n\t* @returns {string}\n */\n\tpublic async val(value?): Promise<any> {\n\t\tconst getResultOnRender = () => {\n return new Promise(resolve => {\n this.nativeElement.whenRendered(() => {\n const result = this.nativeElement.val(value);\n resolve(result)\n });\n });\n };\n const result = await getResultOnRender();\n\n return result;\n }\n\n\tpublic valSync(value?): string {\n if (this.nativeElement.isRendered) {\n \t return this.nativeElement.val(value);\n }\n return null;\n }\n\n\n\tget isRendered(): boolean {\n\t\treturn this.nativeElement ? this.nativeElement.isRendered : false;\n\t}\n\n\tngOnInit() {\n\t}\n\n ngAfterViewInit() {\n const that = this;\n\n that.onCreate.emit(that.nativeElement);\n\n\t\tif (Smart) Smart.Render();\n\n\t\tthis.nativeElement.classList.add('smart-angular');\n\n\t\tif (this.nativeElement.whenRendered) this.nativeElement.whenRendered(() => { that.onReady.emit(that.nativeElement); });\n\t\tthis.listen();\n\t}\n\n\tngOnDestroy() {\n\t\tthis.unlisten();\n\t}\n\n\t_initialChange = true; \n\n\tget ngValue(): any {\n\t\tif (!this.nativeElement) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst value = this.nativeElement.value;\n\t\treturn value;\n\t}\n\n\tset ngValue(value: any) {\n\t\tif (this.nativeElement) {\n\t\t this.writeValue(value);\n\t\t}\n\t}\n\n\twriteValue(value: any): void {\n const that = this;\n const normalizedValue = value == null ? '' : value;\n\n\t\tthat.nativeElement.whenRendered(() => {\n\t\t\tthat.value = normalizedValue;\n\t\t\tif (that._initialChange === false) {\n\t \t\tthat._onChange(that.value);\n }\n\t\t});\n\t}\n\n\tregisterOnChange(fn: any): void {\n\t\tthis._onChange = fn;\n\t}\n\n\tregisterOnTouched(fn: any): void {\n\t\tthis._onTouched = fn;\n\t}\n\n\tngOnChanges(changes: SimpleChanges) {\n\t\tif (this.nativeElement && this.nativeElement.isRendered) {\n\t\t\tfor (const propName in changes) {\n\t\t\t\tif (changes.hasOwnProperty(propName)) {\n\t\t\t\t\tthis.nativeElement[propName] = changes[propName].currentValue;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t/** @description Add event listeners. */\n\tprivate listen(): void {\n const that = this;\n\t\tthat.eventHandlers['changeHandler'] = (event: CustomEvent) => { that.onChange.emit(event); }\n\t\tthat.nativeElement.addEventListener('change', that.eventHandlers['changeHandler']);\n\n\n that.eventHandlers['changeModelHandler'] = (event: Event) => {\n that._initialChange = false;\n that._onChange(that.nativeElement.value);\n };\n that.eventHandlers['blurModelHandler'] = (event: Event) => {\n that._onTouched();\n };\n that.nativeElement.whenRendered(() => {\n if (that.nativeElement.querySelector('input')) {\n that.eventHandlers['keyupModelHandler'] = (event) => {\n setTimeout(() => { that.eventHandlers['changeModelHandler'](event); }, 50);\n };\n\n that.nativeElement.querySelector('input').addEventListener('keyup', that.eventHandlers['keyupModelHandler']);\n }\n });\n\t\tthat.nativeElement.addEventListener('change', that.eventHandlers['changeModelHandler']);\n\t\tthat.nativeElement.addEventListener('blur', that.eventHandlers['blurModelHandler']);\n\t}\n\n\t/** @description Remove event listeners. */\n\tprivate unlisten(): void {\n const that = this;\n\t\tif (that.eventHandlers['changeHandler']) {\n\t\t\tthat.nativeElement.removeEventListener('change', that.eventHandlers['changeHandler']);\n\t\t}\n\n\t\tif (that.eventHandlers['changeModelHandler']) {\n\t\t\tthat.nativeElement.removeEventListener('change', that.eventHandlers['changeModelHandler']);\n if (that.nativeElement.querySelector('input')) {\n that.nativeElement.querySelector('input').removeEventListener('keyup', that.eventHandlers['keyupModelHandler']);\n }\n\t\t}\n\t\tif (that.eventHandlers['blurModelHandler']) {\n\t\t\tthat.nativeElement.removeEventListener('blur', that.eventHandlers['blurModelHandler']);\n\t\t}\n\t}\n}\n","import { NgModule } from '@angular/core';\n\nimport { GaugeComponent } from './smart.gauge';\nimport { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';\n\n@NgModule({\n declarations: [GaugeComponent],\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\texports: [GaugeComponent]\n})\n\nexport class GaugeModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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