{"version":3,"file":"index.mjs","sources":["../../../../../../projects/components/widgets/input/epoch/picker/src/picker.component.ts","../../../../../../projects/components/widgets/input/epoch/picker/src/index.ts"],"sourcesContent":["import { AfterViewInit, Component, ElementRef, EventEmitter, Injector, Input, Output } from '@angular/core';\n\ndeclare const $;\n\n@Component({\n    standalone: true,\n    selector: 'wm-pickergroup',\n    template: `\n        <div class=\"app-picker-group\">\n            <ng-content></ng-content>\n        </div>\n    `\n})\nexport class PickerGroupComponent {\n\n}\n\n@Component({\n    selector: 'wm-picker',\n    standalone: true,\n    template: `\n        <div class=\"app-picker\">\n          <div class=\"app-picker-option-container\">\n            <div class=\"app-picker-option app-picker-empty-option\">E</div>\n            <div class=\"app-picker-option app-picker-empty-option\">E</div>\n            @for (option of options; track option; let i = $index) {\n              <div class=\"app-picker-option\">\n                {{option.label}}\n              </div>\n            }\n            <div class=\"app-picker-option app-picker-empty-option\">E</div>\n            <div class=\"app-picker-option app-picker-empty-option\">E</div>\n          </div>\n          <div class=\"app-picker-ruler\"></div>\n        </div>\n        `\n})\nexport class PickerComponent implements AfterViewInit {\n\n    public $el;\n\n    private pickerAnimator;\n\n    @Output() change = new EventEmitter<{\n        label: string,\n        value?: any\n    }>();\n\n    private _selectedIndex = 0;\n\n    private _selectedValue: any;\n\n    private _options: Array<{label: string, value?: any}> = [];\n\n    noOfEmptyElements = 2;\n\n    constructor(protected inj: Injector) {\n        this.$el =  $(inj.get(ElementRef).nativeElement);\n    }\n\n    @Input()\n    set selectedValue(s: string) {\n        this._selectedValue = s;\n        this.reRender();\n    }\n\n    get selectedValue() {\n        return this._selectedValue;\n    }\n\n    @Input()\n    set options(opts:  Array<{label: string, value?: any}>) {\n        this._options = opts.map(o => ({\n            label: o.label,\n            value: o.value !== undefined ? o.value : o.label\n        }));\n        this.reRender();\n    }\n\n    get options() {\n        return this._options;\n    }\n\n    reRender() {\n        this._selectedIndex = this.options.findIndex(o => o.value === this.selectedValue);\n        this.pickerAnimator?.select(this._selectedIndex + this.noOfEmptyElements);\n    }\n\n    set selectedIndex(i: number) {\n        this._selectedIndex = i;\n        this._selectedValue = this.options[i].value;\n        this.change.emit(this.options[i]);\n    }\n\n    get selectedIndex() {\n        return this._selectedIndex;\n    }\n\n    ngAfterViewInit(): void {\n        this.pickerAnimator = new PickerAnimator(this);\n    }\n\n}\n\nclass PickerAnimator {\n\n    constructor(private picker: PickerComponent) {\n        let lastSelectedIndex = picker.selectedIndex + picker.noOfEmptyElements;\n        const computeIndex = (d: number) => lastSelectedIndex + Math.floor(d / 16);\n        this.select(lastSelectedIndex);\n        this.getElement().swipey({\n            'direction': $.fn.swipey.DIRECTIONS.VERTICAL,\n            'threshold': 10,\n            'target': picker.$el,\n            'onSwipe': (e, data) => {\n                this.select(computeIndex(-1 * data.length));\n            },\n            'onSwipeEnd': (e, data) => {\n                const nextSelectedIndex = computeIndex(-1 * data.length);\n                this.select(nextSelectedIndex);\n                lastSelectedIndex = picker.selectedIndex + picker.noOfEmptyElements;\n            }\n        });\n    }\n\n    getElement() {\n        return this.picker.$el.find('.app-picker-option-container:first');\n    }\n\n    getOptionElements() {\n        return this.getElement().find('.app-picker-option');\n    }\n\n    select(selectedIndex: number) {\n        const options = this.getOptionElements();\n        if (selectedIndex < this.picker.noOfEmptyElements\n            || selectedIndex >= options.length - this.picker.noOfEmptyElements) {\n            return;\n        }\n        this.getElement()\n            .find('.app-picker-option.app-picker-option-selected')\n            .removeClass('app-picker-option-selected');\n        options.eq(selectedIndex).addClass('app-picker-option-selected');\n        this.picker.selectedIndex = selectedIndex - this.picker.noOfEmptyElements;\n        const minIndex = selectedIndex - this.picker.noOfEmptyElements;\n        const maxIndex = selectedIndex + this.picker.noOfEmptyElements;\n        options.each((i, e) => {\n            if (i >= minIndex && i <= maxIndex) {\n                const rotation = (i - selectedIndex) * 30;\n                const opacity = 1 - Math.abs(i - selectedIndex) * 0.3;\n                $(e).css({\n                    transform : 'perspective(500px) rotateX(' + rotation + 'deg)',\n                    opacity: opacity\n                }).show();\n            } else {\n                $(e).hide();\n            }\n        });\n    }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}