{"version":3,"sources":["../LuV.LUMAS.Services/scripts/controls/copyLinkDialog.ts"],"names":["CopyLinkDialogDirective","factory","directive","templateHelperService","$inject","this","restrict","templateUrl","controller","controllerAs","scope","getTemplateUrl","exports","CopyLinkDialogController","prototype","toggleDialog","data","isDialogOpen","disableChange","url","$location","absUrl","copyToClipboard","_this","hiddenInput","jquery","val","css","opacity","position","bottom","left","append","get","select","$element","ownerDocument","execCommand","copied","$timeout","e","$log","error","remove","$scope"],"mappings":";oHAKA,IAAAA,GAcQA,EAAAC,QAAP,WACmB,SAAZC,EAAaC,GAAqD,OAAA,IAAIH,EAAwBG,GAEpG,OADAD,EAAUE,QAAU,CAAC,yBACdF,GAETF,GAjBC,SAAAA,EAAoBG,GAAAE,KAAAF,sBAAAA;;AAKZE,KAAAC,SAAW,IACZD,KAAAE,YAAc;AACbF,KAAAG,WAAa,2BACbH,KAAAI,aAAe,KACfJ,KAAAK,MAAQ,GARfL,KAAKE,YAAcF,KAAKF,sBAAsBQ,eAAe,uBAHlDC,EAAAZ,wBAAAA,EAgCb,IAAAa,GAYQA,EAAAC,UAAAC,aAAP,WACCV,KAAKW,KAAKC,cAAgBZ,KAAKW,KAAKC,cAG9BJ,EAAAC,UAAAI,cAAP,WACCb,KAAKW,KAAKG,IAAMd,KAAKe,UAAUC,UAGzBR,EAAAC,UAAAQ,gBAAP,SAAuBH,GAAvB,IAAAI,EAAAlB,KAEEc,EADGA,GACGd,KAAKW,KAAKG;;AAIjB,IAAIK,EAAcC,EAAO,YACzBD,EAAYE,IAAIP,GAChBK,EAAYG,IAAI,CAAEC,QAAW,IAAKC,SAAY,WAAYC,OAAU,SAAUC,KAAQ,MAEtFN,EAAO,QAAQO,OAAOR,GACrBA,EAAYS,IAAI,GAAwBC,SAEzC,IACC7B,KAAK8B,SAAS,GAAGC,cAAcC,YAAY,QAE3ChC,KAAKW,KAAKsB,QAAS,EACnBjC,KAAKkC,SAAS,WACbhB,EAAKP,KAAKsB,QAAS,GACjB,MAEJ,MAAOE,GACNnC,KAAKoC,KAAKC,MAAM,+CAGjBlB,EAAYmB,UA5CC9B,EAAAT,QAAU,CAAC,SAAU,OAAQ,YAAa,WAAY,YA8CrES,GA7CC,SAAAA,EAAoB+B,EAAgDH,EAA8BrB,EAAwCe,EAAuBI,GAA7IlC,KAAAuC,OAAAA,EAAgDvC,KAAAoC,KAAAA,EAA8BpC,KAAAe,UAAAA,EAAwCf,KAAA8B,SAAAA,EAAuB9B,KAAAkC,SAAAA,EAI1JlC,KAAAW,KAA2B,CACjCC,cAAc,EACdE,IAAK,KACLmB,QAAQ,GANRjC,KAAKW,KAAKG,IAAMC,EAAUC,SAHfT,EAAAC,yBAAAA","file":"copyLinkDialog.js","sourcesContent":["/// <reference path=\"../types/luv/index.d.ts\" />\r\n\r\nimport jquery = require('jquery');\t\t// explicitly use jquery instead of angular jquery. in some special cases angular uses jqlite here despite being loaded after our jquery bib.\r\nimport * as ths from '../helpers/templateHelperService';\r\n\r\nexport class CopyLinkDialogDirective implements ng.IDirective\r\n{\r\n\tconstructor(private templateHelperService: ths.TemplateHelperService) {\r\n\t\tthis.templateUrl = this.templateHelperService.getTemplateUrl('copyLinkDialog.html');\r\n\t}\r\n\r\n\t\t//public replace = true;\r\n\t\tpublic restrict = `E`;\r\n\tpublic templateUrl = null;\t// get's set in constructor\r\n\t\tpublic controller = `linkCopyDialogController`;\r\n\t\tpublic controllerAs = `vm`;\r\n\t\tpublic scope = {\r\n\t}\r\n\t\r\n\tstatic factory(): ng.IDirectiveFactory {\r\n\t\tconst directive = (templateHelperService: ths.TemplateHelperService) => new CopyLinkDialogDirective(templateHelperService);\r\n\t\tdirective.$inject = ['templateHelperService'];\r\n\t\treturn directive;\r\n\t}\r\n}\r\n\r\ninterface ICopyLinkDialogControllerScope extends ng.IScope {\r\n\tvm: CopyLinkDialogController,\r\n\tdata: ICopyLinkDialogData\r\n}\r\n\r\ninterface ICopyLinkDialogData {\r\n\tisDialogOpen: boolean;\r\n\turl: string,\r\n\tcopied: boolean\r\n}\r\n\r\nexport class CopyLinkDialogController implements ng.IController {\r\n\tpublic static $inject = [`$scope`, `$log`, `$location`, `$element`, `$timeout`];\r\n\tconstructor(private $scope: ICopyLinkDialogControllerScope, private $log: ng.ILogService, private $location: ng.ILocationService, private $element: any, private $timeout: ng.ITimeoutService) {\r\n\t\tthis.data.url = $location.absUrl();\r\n\t}\r\n\r\n\tpublic data:ICopyLinkDialogData = {\r\n\t\tisDialogOpen: false,\r\n\t\turl: null,\r\n\t\tcopied: false\r\n\t}\r\n\r\n\tpublic toggleDialog() {\r\n\t\tthis.data.isDialogOpen = !this.data.isDialogOpen;\r\n\t}\r\n\r\n\tpublic disableChange() {\r\n\t\tthis.data.url = this.$location.absUrl();\r\n\t}\r\n\r\n\tpublic copyToClipboard(url?: string) {\r\n\t\tif(!url) {\r\n\t\t\turl = this.data.url;\r\n\t\t}\r\n\r\n\t\t// i could use the url input, but i want it to run more flexible\r\n\t\tlet hiddenInput = jquery('<input/>');\r\n\t\thiddenInput.val(url);\r\n\t\thiddenInput.css({ 'opacity': '0', 'position': 'absolute', 'bottom': '-100px', 'left': '0' });\r\n\r\n\t\tjquery(`body`).append(hiddenInput);\r\n\t\t(hiddenInput.get(0) as HTMLInputElement).select();\r\n\r\n\t\ttry {\r\n\t\t\tthis.$element[0].ownerDocument.execCommand('copy');\r\n\r\n\t\t\tthis.data.copied = true;\r\n\t\t\tthis.$timeout(() => {\r\n\t\t\t\tthis.data.copied = false;\r\n\t\t\t}, 1250);\r\n\t\t}\r\n\t\tcatch (e) {\r\n\t\t\tthis.$log.error('copyLinkDialog: Unable to copy to clipboard');\r\n\t\t}\r\n\r\n\t\thiddenInput.remove();\r\n\t}\r\n}"]}