{"version":3,"file":"seniorsistemas-angular-components-mouse-events.mjs","sources":["../../projects/angular-components/mouse-events/src/lib/mouse-events/long-press.directive.ts","../../projects/angular-components/mouse-events/src/lib/mouse-events/double-click.directive.ts","../../projects/angular-components/mouse-events/src/lib/mouse-events/mouse-events.module.ts","../../projects/angular-components/mouse-events/src/seniorsistemas-angular-components-mouse-events.ts"],"sourcesContent":["import { Directive, EventEmitter, HostListener, Input, OnDestroy, OnInit, Output } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { debounceTime, repeat, takeUntil } from 'rxjs/operators';\n\n/**\n * @description Diretiva que detecta o gesto de pressão longa (long press) em um elemento.\n * Emite o evento `sLongPress` após o tempo configurado em `sLongPressDelay` sem que o\n * botão do mouse ou o toque seja liberado.\n *\n * @example\n * ```html\n * <button [sLongPressDelay]=\"800\" (sLongPress)=\"onLongPress($event)\">Segurar</button>\n * ```\n *\n * @category Inputs\n */\n@Directive({\n    selector: '[sLongPress]',\n})\nexport class LongPressDirective implements OnInit, OnDestroy {\n    /** @description Tempo em milissegundos para disparar o long press. @default 500 */\n    @Input()\n    public sLongPressDelay = 500;\n\n    /** @description Emitido quando o elemento é pressionado por mais de `sLongPressDelay` ms. */\n    @Output()\n    public sLongPress = new EventEmitter<MouseEvent>();\n\n    public mouseUp = new Subject<MouseEvent>();\n    public mouseDown = new Subject<MouseEvent>();\n    public ngUnsubscribe: Subject<void> = new Subject();\n\n    @HostListener('mouseup', ['$event'])\n    @HostListener('touchend', ['$event'])\n    public onMouseUp(event: MouseEvent) {\n        this.mouseUp.next(event);\n    }\n\n    @HostListener('mousedown', ['$event'])\n    @HostListener('touchstart', ['$event'])\n    public onMouseDown(event: MouseEvent) {\n        this.mouseDown.next(event);\n    }\n\n    public ngOnInit() {\n        this.mouseDown\n            .pipe(debounceTime(this.sLongPressDelay), takeUntil(this.mouseUp), repeat(), takeUntil(this.ngUnsubscribe))\n            .subscribe((event) => this.sLongPress.emit(event));\n    }\n\n    public ngOnDestroy() {\n        this.ngUnsubscribe.next();\n        this.ngUnsubscribe.complete();\n    }\n}\n\n","import { Directive, EventEmitter, HostListener, Output } from '@angular/core';\n\n/**\n * @description Diretiva que detecta duplo clique em um elemento com um intervalo\n * configurável entre cliques (`_DOUBLE_CLICK_DELAY`). Emite o evento `doubleClicked`\n * somente quando dois cliques ocorrem dentro do intervalo definido.\n *\n * @example\n * ```html\n * <div sDoubleClick (doubleClicked)=\"onDoubleClick($event)\">Duplo clique aqui</div>\n * ```\n *\n * @category Inputs\n */\n@Directive({\n    selector: '[sDoubleClick]',\n})\nexport class DoubleClickDirective {\n    /** @description Emitido quando um duplo clique é detectado dentro do intervalo de tempo. */\n    @Output() public doubleClicked: EventEmitter<PointerEvent> = new EventEmitter();\n\n    private _timeout: number | undefined;\n    private _DOUBLE_CLICK_DELAY = 500;\n\n    @HostListener('click', ['$event'])\n    public onClick(event: PointerEvent): void {\n        this.handleOnClickEvent(event);\n    }\n\n    private handleOnClickEvent(event: PointerEvent): void {\n        if (this._timeout) {\n            this.clearTimeout();\n            this.doubleClicked.emit(event);\n        } else {\n            this._timeout = setTimeout(() => this.clearTimeout(), this._DOUBLE_CLICK_DELAY) as unknown as number;\n        }\n    }\n\n    private clearTimeout(): void {\n        clearTimeout(this._timeout);\n        this._timeout = undefined;\n    }\n}\n\n","import { CommonModule } from \"@angular/common\";\nimport { NgModule } from \"@angular/core\";\nimport { LongPressDirective } from \"./long-press.directive\";\nimport { DoubleClickDirective } from \"./double-click.directive\";\n\n@NgModule({\n    imports: [CommonModule],\n    declarations: [\n        LongPressDirective,\n        DoubleClickDirective\n    ],\n    exports: [\n        LongPressDirective,\n        DoubleClickDirective\n    ],\n})\nexport class MouseEventsModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}