{"version":3,"file":"ngx-copypaste.mjs","sources":["../../../projects/ngx-copypaste-lib/src/lib/ngx-copypaste.directive.ts","../../../projects/ngx-copypaste-lib/src/public-api.ts","../../../projects/ngx-copypaste-lib/src/ngx-copypaste.ts"],"sourcesContent":["import { Directive, ElementRef, inject, output } from '@angular/core';\n\n@Directive({\n    selector: '[ngxCopyPaste]',\n    exportAs: 'copy,ngxCopy',\n    standalone: true,\n})\nexport class NgxCopyPasteDirective {\n    public successCb = output();\n\n    private readonly _elementRef = inject(ElementRef);\n\n    private copyWithSelection(): void {\n        let select: Selection | null = window.getSelection();\n        if (select) {\n            select.removeAllRanges();\n        }\n        const element = this._elementRef.nativeElement as HTMLElement;\n        if (element instanceof HTMLInputElement || element instanceof HTMLTextAreaElement) {\n            element.select();\n        } else {\n            const range: Range = document.createRange();\n            range.selectNodeContents(element);\n            select = window.getSelection();\n            if (select) {\n                select.addRange(range);\n            }\n        }\n        this.successCb.emit();\n        // eslint-disable-next-line @typescript-eslint/no-deprecated\n        document.execCommand('copy');\n    }\n\n    public async copy(): Promise<void> {\n        this.copyWithSelection();\n        try {\n            if (typeof navigator.clipboard === 'undefined') {\n                this.copyWithSelection();\n                return;\n            }\n            const element = this._elementRef.nativeElement as HTMLElement;\n            const value =\n                element instanceof HTMLInputElement || element instanceof HTMLTextAreaElement\n                    ? element.value\n                    : element.textContent;\n            if (!value) {\n                return;\n            }\n            await navigator.clipboard.writeText(value.trim());\n            this.successCb.emit();\n        } catch (err) {\n            // eslint-disable-next-line no-console\n            console.error('Error copying content: ', err);\n        }\n    }\n}\n","/*\n * Public API Surface of ngx-copypaste-lib\n */\n\nexport * from './lib/ngx-copypaste.directive';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;MAOa,qBAAqB,CAAA;AALlC,IAAA,WAAA,GAAA;QAMW,IAAS,CAAA,SAAA,GAAG,MAAM,EAAE;AAEV,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC;AA6CpD;IA3CW,iBAAiB,GAAA;AACrB,QAAA,IAAI,MAAM,GAAqB,MAAM,CAAC,YAAY,EAAE;QACpD,IAAI,MAAM,EAAE;YACR,MAAM,CAAC,eAAe,EAAE;;AAE5B,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,aAA4B;QAC7D,IAAI,OAAO,YAAY,gBAAgB,IAAI,OAAO,YAAY,mBAAmB,EAAE;YAC/E,OAAO,CAAC,MAAM,EAAE;;aACb;AACH,YAAA,MAAM,KAAK,GAAU,QAAQ,CAAC,WAAW,EAAE;AAC3C,YAAA,KAAK,CAAC,kBAAkB,CAAC,OAAO,CAAC;AACjC,YAAA,MAAM,GAAG,MAAM,CAAC,YAAY,EAAE;YAC9B,IAAI,MAAM,EAAE;AACR,gBAAA,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;;;AAG9B,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE;;AAErB,QAAA,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC;;AAGzB,IAAA,MAAM,IAAI,GAAA;QACb,IAAI,CAAC,iBAAiB,EAAE;AACxB,QAAA,IAAI;AACA,YAAA,IAAI,OAAO,SAAS,CAAC,SAAS,KAAK,WAAW,EAAE;gBAC5C,IAAI,CAAC,iBAAiB,EAAE;gBACxB;;AAEJ,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,aAA4B;YAC7D,MAAM,KAAK,GACP,OAAO,YAAY,gBAAgB,IAAI,OAAO,YAAY;kBACpD,OAAO,CAAC;AACV,kBAAE,OAAO,CAAC,WAAW;YAC7B,IAAI,CAAC,KAAK,EAAE;gBACR;;YAEJ,MAAM,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;AACjD,YAAA,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE;;QACvB,OAAO,GAAG,EAAE;;AAEV,YAAA,OAAO,CAAC,KAAK,CAAC,yBAAyB,EAAE,GAAG,CAAC;;;8GA7C5C,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAArB,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,OAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,QAAA,EAAA,CAAA,MAAA,EAAA,SAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAArB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBALjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,gBAAgB;AAC1B,oBAAA,QAAQ,EAAE,cAAc;AACxB,oBAAA,UAAU,EAAE,IAAI;AACnB,iBAAA;;;ACND;;AAEG;;ACFH;;AAEG;;;;"}