
if(typeof window !== 'undefined') {	
	if (!window['Smart']) {
		window['Smart'] = { RenderMode: 'manual' };
	}
	else {
		window['Smart'].RenderMode = 'manual';
	}
}
import './../source/modules/smart.pager';

import * as i0 from '@angular/core';
import { EventEmitter, Directive, Output, Input, NgModule, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';

class BaseElement {
    constructor(ref) {
        this.onCreate = new EventEmitter();
        this.onReady = new EventEmitter();
        this.onAttach = new EventEmitter();
        this.onDetach = new EventEmitter();
        const that = this;
        this.nativeElement = ref.nativeElement;
        that.nativeElement.onAttached = () => {
            that.onAttach.emit(that.nativeElement);
        };
        that.nativeElement.onDetached = () => {
            that.onDetach.emit(that.nativeElement);
        };
    }
    addEventListener(type, listener, options = false) {
        this.nativeElement.addEventListener(type, listener, options);
    }
    removeEventListener(type, listener, options = false) {
        this.nativeElement.removeEventListener(type, listener, options);
    }
    dispatchEvent(event) {
        return this.nativeElement.dispatchEvent(event);
    }
    blur() {
        this.nativeElement.blur();
    }
    click() {
        this.nativeElement.click();
    }
    focus(options) {
        this.nativeElement.focus(options);
    }
    /** @description Sets or gets the license.  */
    get license() {
        return this.nativeElement ? this.nativeElement.license : undefined;
    }
    set license(value) {
        this.nativeElement ? this.nativeElement.license = value : undefined;
    }
    /** @description Sets or gets the language. Used in conjunction with the property messages.  */
    get locale() {
        return this.nativeElement ? this.nativeElement.locale : undefined;
    }
    set locale(value) {
        this.nativeElement ? this.nativeElement.locale = value : undefined;
    }
    /** @description Callback used to customize the format of the messages that are returned from the Localization Module. */
    get localizeFormatFunction() {
        return this.nativeElement ? this.nativeElement.localizeFormatFunction : undefined;
    }
    set localizeFormatFunction(value) {
        this.nativeElement ? this.nativeElement.localizeFormatFunction = value : undefined;
    }
    /** @description Sets or gets an object specifying strings used in the widget that can be localized. Used in conjunction with the property locale.  */
    get messages() {
        return this.nativeElement ? this.nativeElement.messages : undefined;
    }
    set messages(value) {
        this.nativeElement ? this.nativeElement.messages = value : undefined;
    }
    /** @description Sets or gets the value indicating whether the element is aligned to support locales using right-to-left fonts. */
    get rightToLeft() {
        return this.nativeElement ? this.nativeElement.rightToLeft : undefined;
    }
    set rightToLeft(value) {
        this.nativeElement ? this.nativeElement.rightToLeft = value : undefined;
    }
    /** @description Determines the theme. Theme defines the look of the element */
    get theme() {
        return this.nativeElement ? this.nativeElement.theme : undefined;
    }
    set theme(value) {
        this.nativeElement ? this.nativeElement.theme = value : undefined;
    }
}
BaseElement.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.6", ngImport: i0, type: BaseElement, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
BaseElement.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.2.6", type: BaseElement, inputs: { license: "license", locale: "locale", localizeFormatFunction: "localizeFormatFunction", messages: "messages", rightToLeft: "rightToLeft", theme: "theme" }, outputs: { onCreate: "onCreate", onReady: "onReady", onAttach: "onAttach", onDetach: "onDetach" }, ngImport: i0 });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.6", ngImport: i0, type: BaseElement, decorators: [{
            type: Directive
        }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { onCreate: [{
                type: Output
            }], onReady: [{
                type: Output
            }], onAttach: [{
                type: Output
            }], onDetach: [{
                type: Output
            }], license: [{
                type: Input
            }], locale: [{
                type: Input
            }], localizeFormatFunction: [{
                type: Input
            }], messages: [{
                type: Input
            }], rightToLeft: [{
                type: Input
            }], theme: [{
                type: Input
            }] } });
let Smart;
if (typeof window !== "undefined") {
    Smart = window.Smart;
}

class PagerComponent extends BaseElement {
    constructor(ref) {
        super(ref);
        this.eventHandlers = [];
        /** @description This event is triggered whenever the user selects a different item from the list or dropdown menu. It fires only when the selected item changes, allowing your application to respond to user selection updates, such as displaying additional information, updating content, or triggering related actions based on the newly selected item.
        *  @param event. The custom event. 	*/
        this.onChange = new EventEmitter();
        /** @description This event is triggered whenever the page size is modified, such as when a user selects a different number of items to display per page. It allows you to respond to changes in the pagination settings, for example by updating the displayed data or adjusting the layout based on the new page size.
        *  @param event. The custom event. 	*/
        this.onPageSizeChanged = new EventEmitter();
        this.nativeElement = ref.nativeElement;
    }
    /** @description Creates the component on demand.
     * @param properties An optional object of properties, which will be added to the template binded ones.
     */
    createComponent(properties = {}) {
        this.nativeElement = document.createElement('smart-pager');
        for (let propertyName in properties) {
            this.nativeElement[propertyName] = properties[propertyName];
        }
        return this.nativeElement;
    }
    /** @description Specifies or retrieves the current animation mode. When this property is set to 'none', all animations are disabled. Assigning any other valid value enables the corresponding animation mode. */
    get animation() {
        return this.nativeElement ? this.nativeElement.animation : undefined;
    }
    set animation(value) {
        this.nativeElement ? this.nativeElement.animation = value : undefined;
    }
    /** @description "Manages the display of ellipsis ("...") within the pagination component. Ellipsis buttons appear when there are too many pages to show at once, serving as visual indicators that more pages are available. These buttons help users quickly navigate to distant pages by indicating page ranges that are not currently displayed." */
    get autoEllipsis() {
        return this.nativeElement ? this.nativeElement.autoEllipsis : undefined;
    }
    set autoEllipsis(value) {
        this.nativeElement ? this.nativeElement.autoEllipsis = value : undefined;
    }
    /** @description Controls whether the pager functionality is active. When enabled, the pager allows navigation through paginated content; when disabled, all content may be displayed at once without pagination. */
    get disabled() {
        return this.nativeElement ? this.nativeElement.disabled : undefined;
    }
    set disabled(value) {
        this.nativeElement ? this.nativeElement.disabled = value : undefined;
    }
    /** @description Retrieves or assigns the unlockKey, a unique code required to activate and access the product's full features. */
    get unlockKey() {
        return this.nativeElement ? this.nativeElement.unlockKey : undefined;
    }
    set unlockKey(value) {
        this.nativeElement ? this.nativeElement.unlockKey = value : undefined;
    }
    /** @description Sets or retrieves the current language code (e.g., 'en', 'fr', 'es'). This property determines which set of messages from the messages object will be used for localization or internationalization purposes. Update this property to change the active language displayed to users. */
    get locale() {
        return this.nativeElement ? this.nativeElement.locale : undefined;
    }
    set locale(value) {
        this.nativeElement ? this.nativeElement.locale = value : undefined;
    }
    /** @description Callback function associated with the localization module, typically used to handle events or processes such as updating language resources, switching locales, or applying translated content within the application. */
    get localizeFormatFunction() {
        return this.nativeElement ? this.nativeElement.localizeFormatFunction : undefined;
    }
    set localizeFormatFunction(value) {
        this.nativeElement ? this.nativeElement.localizeFormatFunction = value : undefined;
    }
    /** @description Defines or retrieves an object containing localized strings used within the widget interface. This property enables the customization of widget text for different languages and regions, allowing for internationalization. It is typically used alongside the locale property to display the appropriate language-specific text based on the user's locale setting. */
    get messages() {
        return this.nativeElement ? this.nativeElement.messages : undefined;
    }
    set messages(value) {
        this.nativeElement ? this.nativeElement.messages = value : undefined;
    }
    /** @description Manages the placement and alignment of navigation buttons within the user interface, determining their exact position (e.g., top, bottom, left, or right) to ensure optimal usability and layout consistency. */
    get navigationButtonsPosition() {
        return this.nativeElement ? this.nativeElement.navigationButtonsPosition : undefined;
    }
    set navigationButtonsPosition(value) {
        this.nativeElement ? this.nativeElement.navigationButtonsPosition = value : undefined;
    }
    /** @description Retrieves or updates the index of the currently active page. This value indicates which page is currently being displayed, where the index is zero-based (i.e., the first page has an index of 0). Setting this property changes the current page to the specified index. */
    get pageIndex() {
        return this.nativeElement ? this.nativeElement.pageIndex : undefined;
    }
    set pageIndex(value) {
        this.nativeElement ? this.nativeElement.pageIndex = value : undefined;
    }
    /** @description Specifies the total number of page index selectors (such as page numbers or navigation dots) displayed in the pagination component, allowing users to navigate between different pages of content. */
    get pageIndexSelectors() {
        return this.nativeElement ? this.nativeElement.pageIndexSelectors : undefined;
    }
    set pageIndexSelectors(value) {
        this.nativeElement ? this.nativeElement.pageIndexSelectors = value : undefined;
    }
    /** @description Retrieves or updates the maximum number of items displayed per page. This determines how many items are visible to the user on a single page of results, commonly used for pagination controls. */
    get pageSize() {
        return this.nativeElement ? this.nativeElement.pageSize : undefined;
    }
    set pageSize(value) {
        this.nativeElement ? this.nativeElement.pageSize = value : undefined;
    }
    /** @description Specifies the data source that populates the options available in the element’s page size selector dropdown menu. This determines which page size choices are presented to the user for selection. */
    get pageSizeSelectorDataSource() {
        return this.nativeElement ? this.nativeElement.pageSizeSelectorDataSource : undefined;
    }
    set pageSizeSelectorDataSource(value) {
        this.nativeElement ? this.nativeElement.pageSizeSelectorDataSource = value : undefined;
    }
    /** @description Specifies the total count of pages contained within the element, typically used for pagination or indicating how many discrete sections or views are available. */
    get pagesCount() {
        return this.nativeElement ? this.nativeElement.pagesCount : undefined;
    }
    set pagesCount(value) {
        this.nativeElement ? this.nativeElement.pagesCount = value : undefined;
    }
    /** @description When the element is set to readonly, users can view its content but cannot modify or input any data. Interaction such as typing, editing, or changing the value is disabled, although users may still be able to highlight and copy the text. */
    get readonly() {
        return this.nativeElement ? this.nativeElement.readonly : undefined;
    }
    set readonly(value) {
        this.nativeElement ? this.nativeElement.readonly = value : undefined;
    }
    /** @description Sets or retrieves a value that specifies whether the element’s layout is aligned to support right-to-left (RTL) languages, such as Arabic or Hebrew, by enabling RTL text direction and alignment based on the specified locale. */
    get rightToLeft() {
        return this.nativeElement ? this.nativeElement.rightToLeft : undefined;
    }
    set rightToLeft(value) {
        this.nativeElement ? this.nativeElement.rightToLeft = value : undefined;
    }
    /** @description Controls the visibility of the 'First' and 'Last' navigation buttons, allowing you to show or hide these buttons in the navigation component. */
    get showFirstLastNavigationButtons() {
        return this.nativeElement ? this.nativeElement.showFirstLastNavigationButtons : undefined;
    }
    set showFirstLastNavigationButtons(value) {
        this.nativeElement ? this.nativeElement.showFirstLastNavigationButtons = value : undefined;
    }
    /** @description Replaces the default icon-based navigation buttons with buttons that display descriptive text labels, making navigation options clearer and more accessible to users. */
    get showNavigationButtonLabels() {
        return this.nativeElement ? this.nativeElement.showNavigationButtonLabels : undefined;
    }
    set showNavigationButtonLabels(value) {
        this.nativeElement ? this.nativeElement.showNavigationButtonLabels = value : undefined;
    }
    /** @description Controls the visibility of the navigation input, specifying whether the navigation input component should be shown or hidden in the user interface. */
    get showNavigationInput() {
        return this.nativeElement ? this.nativeElement.showNavigationInput : undefined;
    }
    set showNavigationInput(value) {
        this.nativeElement ? this.nativeElement.showNavigationInput = value : undefined;
    }
    /** @description Specifies whether the page index selectors (such as numbered page buttons or links that allow users to navigate between pages) are visible in the user interface. If set to true, the page index selectors will be displayed; if set to false, they will be hidden. */
    get showPageIndexSelectors() {
        return this.nativeElement ? this.nativeElement.showPageIndexSelectors : undefined;
    }
    set showPageIndexSelectors(value) {
        this.nativeElement ? this.nativeElement.showPageIndexSelectors = value : undefined;
    }
    /** @description Specifies whether the page size selector control is visible to the user, allowing them to choose the number of items displayed per page. */
    get showPageSizeSelector() {
        return this.nativeElement ? this.nativeElement.showPageSizeSelector : undefined;
    }
    set showPageSizeSelector(value) {
        this.nativeElement ? this.nativeElement.showPageSizeSelector = value : undefined;
    }
    /** @description Controls the visibility of the 'Previous' and 'Next' navigation buttons, determining whether users can navigate backward or forward through the content. */
    get showPrevNextNavigationButtons() {
        return this.nativeElement ? this.nativeElement.showPrevNextNavigationButtons : undefined;
    }
    set showPrevNextNavigationButtons(value) {
        this.nativeElement ? this.nativeElement.showPrevNextNavigationButtons = value : undefined;
    }
    /** @description Specifies whether the page summary section is visible to users. If set to true, the summary will be displayed at the top of the page; if false, the summary section will be hidden. */
    get showSummary() {
        return this.nativeElement ? this.nativeElement.showSummary : undefined;
    }
    set showSummary(value) {
        this.nativeElement ? this.nativeElement.showSummary = value : undefined;
    }
    /** @description Specifies the theme to be applied to the element. The theme setting controls the overall appearance—including colors, fonts, and visual styles—ensuring a consistent look and feel across the component. */
    get theme() {
        return this.nativeElement ? this.nativeElement.theme : undefined;
    }
    set theme(value) {
        this.nativeElement ? this.nativeElement.theme = value : undefined;
    }
    /** @description When set to true, this property prevents the element from receiving keyboard focus, meaning users will be unable to select the element using the Tab key or other keyboard navigation methods. */
    get unfocusable() {
        return this.nativeElement ? this.nativeElement.unfocusable : undefined;
    }
    set unfocusable(value) {
        this.nativeElement ? this.nativeElement.unfocusable = value : undefined;
    }
    /** @description Gets or sets the total number of records available for pagination, which determines how many pages the Pager will display and manage. This property is particularly useful when the Pager is integrated into a larger component or application that handles data fetching, as it allows the Pager to correctly calculate page counts and navigation based on the overall dataset size. */
    get totalRecords() {
        return this.nativeElement ? this.nativeElement.totalRecords : undefined;
    }
    set totalRecords(value) {
        this.nativeElement ? this.nativeElement.totalRecords = value : undefined;
    }
    /** @description Selects the first item in the list or array. This operation targets the element at index 0, retrieving or highlighting it as the initially chosen value.
    */
    first() {
        if (this.nativeElement.isRendered) {
            this.nativeElement.first();
        }
        else {
            this.nativeElement.whenRendered(() => {
                this.nativeElement.first();
            });
        }
    }
    /** @description Selects the last item in the list or array. This operation retrieves the final element from a collection, regardless of its length. If the list is empty, no item will be selected.
    */
    last() {
        if (this.nativeElement.isRendered) {
            this.nativeElement.last();
        }
        else {
            this.nativeElement.whenRendered(() => {
                this.nativeElement.last();
            });
        }
    }
    /** @description Navigates to a specified item within the collection, allowing direct access based on a unique identifier or index.
    * @param {any} pageIndex.
    */
    navigateTo(pageIndex) {
        if (this.nativeElement.isRendered) {
            this.nativeElement.navigateTo(pageIndex);
        }
        else {
            this.nativeElement.whenRendered(() => {
                this.nativeElement.navigateTo(pageIndex);
            });
        }
    }
    /** @description Advances the pagination control to the next available page, allowing users to view additional content.
    */
    next() {
        if (this.nativeElement.isRendered) {
            this.nativeElement.next();
        }
        else {
            this.nativeElement.whenRendered(() => {
                this.nativeElement.next();
            });
        }
    }
    /** @description Navigates to the previous page in a paginated list or component by selecting the preceding pager item.
    */
    prev() {
        if (this.nativeElement.isRendered) {
            this.nativeElement.prev();
        }
        else {
            this.nativeElement.whenRendered(() => {
                this.nativeElement.prev();
            });
        }
    }
    get isRendered() {
        return this.nativeElement ? this.nativeElement.isRendered : false;
    }
    ngOnInit() {
    }
    ngAfterViewInit() {
        const that = this;
        that.onCreate.emit(that.nativeElement);
        if (Smart)
            Smart.Render();
        this.nativeElement.classList.add('smart-angular');
        if (this.nativeElement.whenRendered)
            this.nativeElement.whenRendered(() => { that.onReady.emit(that.nativeElement); });
        this.listen();
    }
    ngOnDestroy() {
        this.unlisten();
    }
    ngOnChanges(changes) {
        if (this.nativeElement && this.nativeElement.isRendered) {
            for (const propName in changes) {
                if (changes.hasOwnProperty(propName)) {
                    this.nativeElement[propName] = changes[propName].currentValue;
                }
            }
        }
    }
    /** @description Add event listeners. */
    listen() {
        const that = this;
        that.eventHandlers['changeHandler'] = (event) => { that.onChange.emit(event); };
        that.nativeElement.addEventListener('change', that.eventHandlers['changeHandler']);
        that.eventHandlers['pageSizeChangedHandler'] = (event) => { that.onPageSizeChanged.emit(event); };
        that.nativeElement.addEventListener('pageSizeChanged', that.eventHandlers['pageSizeChangedHandler']);
    }
    /** @description Remove event listeners. */
    unlisten() {
        const that = this;
        if (that.eventHandlers['changeHandler']) {
            that.nativeElement.removeEventListener('change', that.eventHandlers['changeHandler']);
        }
        if (that.eventHandlers['pageSizeChangedHandler']) {
            that.nativeElement.removeEventListener('pageSizeChanged', that.eventHandlers['pageSizeChangedHandler']);
        }
    }
}
PagerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.6", ngImport: i0, type: PagerComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
PagerComponent.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.2.6", type: PagerComponent, selector: "smart-pager, [smart-pager]", inputs: { animation: "animation", autoEllipsis: "autoEllipsis", disabled: "disabled", unlockKey: "unlockKey", locale: "locale", localizeFormatFunction: "localizeFormatFunction", messages: "messages", navigationButtonsPosition: "navigationButtonsPosition", pageIndex: "pageIndex", pageIndexSelectors: "pageIndexSelectors", pageSize: "pageSize", pageSizeSelectorDataSource: "pageSizeSelectorDataSource", pagesCount: "pagesCount", readonly: "readonly", rightToLeft: "rightToLeft", showFirstLastNavigationButtons: "showFirstLastNavigationButtons", showNavigationButtonLabels: "showNavigationButtonLabels", showNavigationInput: "showNavigationInput", showPageIndexSelectors: "showPageIndexSelectors", showPageSizeSelector: "showPageSizeSelector", showPrevNextNavigationButtons: "showPrevNextNavigationButtons", showSummary: "showSummary", theme: "theme", unfocusable: "unfocusable", totalRecords: "totalRecords" }, outputs: { onChange: "onChange", onPageSizeChanged: "onPageSizeChanged" }, exportAs: ["smart-pager"], usesInheritance: true, usesOnChanges: true, ngImport: i0 });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.6", ngImport: i0, type: PagerComponent, decorators: [{
            type: Directive,
            args: [{
                    exportAs: 'smart-pager', selector: 'smart-pager, [smart-pager]'
                }]
        }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { animation: [{
                type: Input
            }], autoEllipsis: [{
                type: Input
            }], disabled: [{
                type: Input
            }], unlockKey: [{
                type: Input
            }], locale: [{
                type: Input
            }], localizeFormatFunction: [{
                type: Input
            }], messages: [{
                type: Input
            }], navigationButtonsPosition: [{
                type: Input
            }], pageIndex: [{
                type: Input
            }], pageIndexSelectors: [{
                type: Input
            }], pageSize: [{
                type: Input
            }], pageSizeSelectorDataSource: [{
                type: Input
            }], pagesCount: [{
                type: Input
            }], readonly: [{
                type: Input
            }], rightToLeft: [{
                type: Input
            }], showFirstLastNavigationButtons: [{
                type: Input
            }], showNavigationButtonLabels: [{
                type: Input
            }], showNavigationInput: [{
                type: Input
            }], showPageIndexSelectors: [{
                type: Input
            }], showPageSizeSelector: [{
                type: Input
            }], showPrevNextNavigationButtons: [{
                type: Input
            }], showSummary: [{
                type: Input
            }], theme: [{
                type: Input
            }], unfocusable: [{
                type: Input
            }], totalRecords: [{
                type: Input
            }], onChange: [{
                type: Output
            }], onPageSizeChanged: [{
                type: Output
            }] } });

class PagerModule {
}
PagerModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.6", ngImport: i0, type: PagerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
PagerModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.2.6", ngImport: i0, type: PagerModule, declarations: [PagerComponent], exports: [PagerComponent] });
PagerModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.2.6", ngImport: i0, type: PagerModule });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.6", ngImport: i0, type: PagerModule, decorators: [{
            type: NgModule,
            args: [{
                    declarations: [PagerComponent],
                    schemas: [CUSTOM_ELEMENTS_SCHEMA],
                    exports: [PagerComponent]
                }]
        }] });

/**
 * Generated bundle index. Do not edit.
 */

export { PagerComponent, PagerModule, Smart };
//# sourceMappingURL=smart-webcomponents-angular-pager.mjs.map
