@zeroleo12345/tabby-send-input 0.0.5 → 0.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -1,3 +1,3 @@
1
1
  /*! For license information please see index.js.LICENSE.txt */
2
- !function(t,e){if("object"==typeof exports&&"object"==typeof module)module.exports=e(require("@angular/common"),require("@angular/core"),require("@angular/forms"),require("@ng-bootstrap/ng-bootstrap"),require("tabby-core"),require("tabby-settings"),require("tabby-terminal"));else if("function"==typeof define&&define.amd)define(["@angular/common","@angular/core","@angular/forms","@ng-bootstrap/ng-bootstrap","tabby-core","tabby-settings","tabby-terminal"],e);else{var o="object"==typeof exports?e(require("@angular/common"),require("@angular/core"),require("@angular/forms"),require("@ng-bootstrap/ng-bootstrap"),require("tabby-core"),require("tabby-settings"),require("tabby-terminal")):e(t["@angular/common"],t["@angular/core"],t["@angular/forms"],t["@ng-bootstrap/ng-bootstrap"],t["tabby-core"],t["tabby-settings"],t["tabby-terminal"]);for(var n in o)("object"==typeof exports?exports:t)[n]=o[n]}}(global,((t,e,o,n,r,a,i)=>{return s={27:(t,e,o)=>{var n=o(817);t.exports=(n.default||n).apply(n,[])},721:(t,e,o)=>{var n=o(29);t.exports=(n.default||n).apply(n,[])},774:(t,e,o)=>{var n=o(772);t.exports=(n.default||n).apply(n,[])},817:(t,e,o)=>{o(55),t.exports=function(t){var e="",o=t||{};return function(t){e+='<div class="modal-body"><div class="form-group"><label>Name</label><input class="form-control" type="text" placeholder="Name" autofocus [(ngModel)]="command.name"></div><div class="form-group"><label>Text</label><textarea class="form-control" rows="6" style="white-space: pre-line" placeholder="Text to be sent" [(ngModel)]="command.text"></textarea></div><div class="form-group"><label>Group</label><select class="form-control" [(ngModel)]="command.group"><option [value]="">Ungrouped</option><option *ngFor="let group of allGroups" [value]="group">{{ group }}</option></select></div><div class="form-group"><label>Shortcut</label><div class="input-group"><input class="form-control" type="text" placeholder="Click to capture shortcut" [(ngModel)]="command.shortcut" (click)="startCaptureShortcut($event)" (focus)="startCaptureShortcut($event)" [disabled]="isCapturingShortcut"><div class="input-group-append"><button class="btn btn-outline-secondary" type="button" (click)="startCaptureShortcut($event)" [class.btn-outline-primary]="isCapturingShortcut">',e+=t?"Capturing...":"Capture",e+='</button></div></div></div><div class="form-line"><div class="header"><div class="title">Append \'\\n\'</div><div class="description">Automatically append a \'\\n\' char to the end</div></div><toggle [(ngModel)]="command.appendCR"></toggle></div></div><div class="modal-footer"><button class="btn btn-outline-primary" (click)="save()">Save</button><button class="btn btn-outline-danger" (click)="cancel()">Cancel</button></div>'}.call(this,"isCapturingShortcut"in o?o.isCapturingShortcut:"undefined"!=typeof isCapturingShortcut?isCapturingShortcut:void 0),e}},29:(t,e,o)=>{o(55),t.exports=function(t){return""+'<div class="modal-body"><input class="form-control" [type]="password ? &quot;password&quot; : &quot;text&quot;" autofocus [(ngModel)]="value" #input [placeholder]="prompt" (keyup.enter)="ok()" (keyup.esc)="cancel()"></div>'}},772:(t,e,o)=>{o(55),t.exports=function(t){return""+'<h3>Quick Commands</h3><div class="form-group"><button class="btn btn-outline-primary" (click)="createCommand()"><div class="fa fa-fw fa-globe"></div><span class="ml-2">Add command</span></button></div><div class="form-group"><input class="form-control quickCmd" type="text" [(ngModel)]="quickCmd" autofocus placeholder="enter to filter" (ngModelChange)="refresh()" (keyup.esc)="cancelFilter()"></div><div class="list-group mt-3 mb-3"><ng-container *ngFor="let group of childGroups"> <div class="list-group-item list-group-item-action d-flex align-items-center" (click)="groupCollapsed[group.name] = !groupCollapsed[group.name]"><div class="fa fa-fw fa-chevron-right" *ngIf="groupCollapsed[group.name]"></div><div class="fa fa-fw fa-chevron-down" *ngIf="!groupCollapsed[group.name]"></div><span class="ml-3 mr-auto">{{group.name || "Ungrouped"}}</span><button class="btn btn-outline-info ml-2" (click)="editGroup(group)"><i class="fa fa-pencil"></i></button><button class="btn btn-outline-danger ml-1" (click)="deleteGroup(group)"><i class="fa fa-trash-can"> </i></button></div><ng-container *ngIf="!groupCollapsed[group.name]"><div class="list-group-item pl-5 d-flex align-items-center" *ngFor="let cmd of group.cmds"> <div class="mr-auto"><div>{{cmd.name}}</div><div class="text-muted">{{cmd.text}} {{cmd.appendCR ? "\\\\n" : ""}}</div></div><button class="btn btn-outline-info ml-2" (click)="editCommand(cmd)"><i class="fa fa-pencil"></i></button><button class="btn btn-outline-danger ml-1" (click)="deleteCommand(cmd)"><i class="fa fa-trash-can"> </i></button></div></ng-container></ng-container></div>'}},55:(t,e,o)=>{"use strict";var n=Object.prototype.hasOwnProperty;function r(t,e){return Array.isArray(t)?function(t,e){for(var o,n="",a="",i=Array.isArray(e),s=0;s<t.length;s++)(o=r(t[s]))&&(i&&e[s]&&(o=c(o)),n=n+a+o,a=" ");return n}(t,e):t&&"object"==typeof t?function(t){var e="",o="";for(var r in t)r&&t[r]&&n.call(t,r)&&(e=e+o+r,o=" ");return e}(t):t||""}function a(t){if(!t)return"";if("object"==typeof t){var e="";for(var o in t)n.call(t,o)&&(e=e+o+":"+t[o]+";");return e}return t+""}function i(t,e,o,n){if(!1===e||null==e||!e&&("class"===t||"style"===t))return"";if(!0===e)return" "+(n?t:t+'="'+t+'"');var r=typeof e;return"object"!==r&&"function"!==r||"function"!=typeof e.toJSON||(e=e.toJSON()),"string"==typeof e||(e=JSON.stringify(e),o||-1===e.indexOf('"'))?(o&&(e=c(e))," "+t+'="'+e+'"'):" "+t+"='"+e.replace(/'/g,"&#39;")+"'"}e.merge=function t(e,o){if(1===arguments.length){for(var n=e[0],r=1;r<e.length;r++)n=t(n,e[r]);return n}for(var i in o)if("class"===i){var s=e[i]||[];e[i]=(Array.isArray(s)?s:[s]).concat(o[i]||[])}else if("style"===i){s=(s=a(e[i]))&&";"!==s[s.length-1]?s+";":s;var c=a(o[i]);c=c&&";"!==c[c.length-1]?c+";":c,e[i]=s+c}else e[i]=o[i];return e},e.classes=r,e.style=a,e.attr=i,e.attrs=function(t,e){var o="";for(var s in t)if(n.call(t,s)){var c=t[s];if("class"===s){o=i(s,c=r(c),!1,e)+o;continue}"style"===s&&(c=a(c)),o+=i(s,c,!1,e)}return o};var s=/["&<>]/;function c(t){var e=""+t,o=s.exec(e);if(!o)return t;var n,r,a,i="";for(n=o.index,r=0;n<e.length;n++){switch(e.charCodeAt(n)){case 34:a="&quot;";break;case 38:a="&amp;";break;case 60:a="&lt;";break;case 62:a="&gt;";break;default:continue}r!==n&&(i+=e.substring(r,n)),r=n+1,i+=a}return r!==n?i+e.substring(r,n):i}e.escape=c,e.rethrow=function t(e,n,r,a){if(!(e instanceof Error))throw e;if(!("undefined"==typeof window&&n||a))throw e.message+=" on line "+r,e;var i,s,c,l;try{a=a||o(147).readFileSync(n,{encoding:"utf8"}),i=3,s=a.split("\n"),c=Math.max(r-i,0),l=Math.min(s.length,r+i)}catch(o){return e.message+=" - could not read from "+n+" ("+o.message+")",void t(e,null,r)}i=s.slice(c,l).map((function(t,e){var o=e+c+1;return(o==r?" > ":" ")+o+"| "+t})).join("\n"),e.path=n;try{e.message=(n||"Pug")+":"+r+"\n"+i+"\n\n"+e.message}catch(t){}throw e}},812:t=>{t.exports='<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 1000 1000" enable-background="new 0 0 1000 1000" xml:space="preserve"><metadata> Svg Vector Icons : http://www.onlinewebfonts.com/icon </metadata><g><path d="M286.1,422.2h-79.4c-16.2,0-29.4-13.2-29.4-29.4v-54.4c0-16.2,13.2-29.4,29.4-29.4h79.4c16.2,0,29.4,13.2,29.4,29.4v54.4C315.5,409,302.3,422.2,286.1,422.2z"></path><path d="M455.2,422.2h-79.4c-16.2,0-29.4-13.2-29.4-29.4v-54.4c0-16.2,13.2-29.4,29.4-29.4h79.4c16.2,0,29.4,13.2,29.4,29.4v54.4C484.6,409,471.3,422.2,455.2,422.2z"></path><path d="M624.2,422.2h-79.4c-16.2,0-29.4-13.2-29.4-29.4v-54.4c0-16.2,13.2-29.4,29.4-29.4h79.4c16.2,0,29.4,13.2,29.4,29.4v54.4C653.6,409,640.4,422.2,624.2,422.2z"></path><path d="M793.2,422.2h-79.4c-16.2,0-29.4-13.2-29.4-29.4v-54.4c0-16.2,13.2-29.4,29.4-29.4h79.4c16.2,0,29.4,13.2,29.4,29.4v54.4C822.6,409,809.4,422.2,793.2,422.2z"></path><path d="M305,573.6h-79.4c-16.2,0-29.4-13.2-29.4-29.4v-54.4c0-16.2,13.2-29.4,29.4-29.4H305c16.2,0,29.4,13.2,29.4,29.4v54.4C334.4,560.4,321.2,573.6,305,573.6z"></path><path d="M461.5,573.6h-79.4c-16.2,0-29.4-13.2-29.4-29.4v-54.4c0-16.2,13.2-29.4,29.4-29.4h79.4c16.2,0,29.4,13.2,29.4,29.4v54.4C490.9,560.4,477.6,573.6,461.5,573.6z"></path><path d="M617.9,573.6h-79.4c-16.2,0-29.4-13.2-29.4-29.4v-54.4c0-16.2,13.2-29.4,29.4-29.4h79.4c16.2,0,29.4,13.2,29.4,29.4v54.4C647.3,560.4,634.1,573.6,617.9,573.6z"></path><path d="M774.4,573.6H695c-16.2,0-29.4-13.2-29.4-29.4v-54.4c0-16.2,13.2-29.4,29.4-29.4h79.4c16.2,0,29.4,13.2,29.4,29.4v54.4C803.8,560.4,790.6,573.6,774.4,573.6z"></path><path d="M741.1,732.1H258.9c-16.2,0-29.4-13.2-29.4-29.4v-35.3c0-16.2,13.2-29.4,29.4-29.4h482.2c16.2,0,29.4,13.2,29.4,29.4v35.3C770.5,718.9,757.3,732.1,741.1,732.1z"></path><path d="M500,39.4c62.2,0,122.5,12.2,179.3,36.2c54.8,23.2,104.1,56.4,146.4,98.7s75.5,91.6,98.7,146.4c24,56.8,36.2,117.1,36.2,179.3c0,62.2-12.2,122.5-36.2,179.3c-23.2,54.8-56.4,104.1-98.7,146.4s-91.6,75.5-146.4,98.7c-56.8,24-117.1,36.2-179.3,36.2c-62.2,0-122.5-12.2-179.3-36.2c-54.8-23.2-104.1-56.4-146.4-98.7s-75.5-91.6-98.7-146.4c-24-56.8-36.2-117.1-36.2-179.3c0-62.2,12.2-122.5,36.2-179.3c23.2-54.8,56.4-104.1,98.7-146.4s91.6-75.5,146.4-98.7C377.5,51.6,437.8,39.4,500,39.4 M500,10C229.4,10,10,229.4,10,500s219.4,490,490,490c270.6,0,490-219.4,490-490S770.6,10,500,10L500,10z"></path></g></svg>'},881:function(t,e,o){"use strict";var n=this&&this.__decorate||function(t,e,o,n){var r,a=arguments.length,i=a<3?e:null===n?n=Object.getOwnPropertyDescriptor(e,o):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)i=Reflect.decorate(t,e,o,n);else for(var s=t.length-1;s>=0;s--)(r=t[s])&&(i=(a<3?r(i):a>3?r(e,o,i):r(e,o))||i);return a>3&&i&&Object.defineProperty(e,o,i),i},r=this&&this.__metadata||function(t,e){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(t,e)},a=this&&this.__awaiter||function(t,e,o,n){return new(o||(o=Promise))((function(r,a){function i(t){try{c(n.next(t))}catch(t){a(t)}}function s(t){try{c(n.throw(t))}catch(t){a(t)}}function c(t){var e;t.done?r(t.value):(e=t.value,e instanceof o?e:new o((function(t){t(e)}))).then(i,s)}c((n=n.apply(t,e||[])).next())}))};Object.defineProperty(e,"__esModule",{value:!0}),e.QuickCmdButtonProvider=void 0;const i=o(900),s=o(315),c=o(316);let l=class extends s.ToolbarButtonProvider{constructor(t,e,o){super(),this.hotkeys=t,this.config=e,this.app=o,this.PLUGIN_NAME="Quick Cmd",this.config.ready$.toPromise().then((()=>{this.reload_hotkey()})),this.hotkeys.hotkey$.subscribe((t=>a(this,void 0,void 0,(function*(){yield this.executeCommandByShortcut(t)}))))}executeCommandByShortcut(t){return a(this,void 0,void 0,(function*(){const e=this.config.store.qc.cmds.find((e=>e.id===t));e&&(yield this._send(this.app.activeTab,e))}))}_send(t,e){return a(this,void 0,void 0,(function*(){if(t instanceof s.SplitTabComponent)return this._send(t.getFocusedTab(),e);if(t instanceof c.BaseTerminalTabComponent){let o=e.text;o.startsWith("\\x")&&(o=o.replace(/\\x([0-9a-f]{2})/gi,(function(t,e){return String.fromCharCode(parseInt(e,16))})));let n=t;return yield n.sendInput(o),!0}return!1}))}reload_hotkey(){console.log("[Quick Cmd] reload hotkeys");for(const t of Object.keys(this.config.store.hotkeys))t.startsWith(this.PLUGIN_NAME)&&delete this.config.store.hotkeys[t];let t;for(let e of this.config.store.qc.cmds)t=this.PLUGIN_NAME+":"+e.name,this.config.store.hotkeys[t]=[e.shortcut.replace(/\+/g,"-")],e.id=t}provide(){return[{icon:o(812),weight:5,title:"Quick commands",touchBarNSImage:"NSTouchBarComposeTemplate"}]}};l=n([(0,i.Injectable)(),r("design:paramtypes",[s.HotkeysService,s.ConfigService,s.AppService])],l),e.QuickCmdButtonProvider=l},704:function(t,e,o){"use strict";var n=this&&this.__decorate||function(t,e,o,n){var r,a=arguments.length,i=a<3?e:null===n?n=Object.getOwnPropertyDescriptor(e,o):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)i=Reflect.decorate(t,e,o,n);else for(var s=t.length-1;s>=0;s--)(r=t[s])&&(i=(a<3?r(i):a>3?r(e,o,i):r(e,o))||i);return a>3&&i&&Object.defineProperty(e,o,i),i},r=this&&this.__metadata||function(t,e){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(t,e)};Object.defineProperty(e,"__esModule",{value:!0}),e.EditCommandModalComponent=void 0;const a=o(900),i=o(571),s=o(684),c=o(315);let l=class{constructor(t){this.modalInstance=t,this.allGroups=[],this.isCapturingShortcut=!1}onKeyDown(t){if(this.isCapturingShortcut){t.preventDefault(),t.stopPropagation();const e={ctrlKey:t.ctrlKey,metaKey:t.metaKey,altKey:t.altKey,shiftKey:t.shiftKey,code:t.code,key:t.key,eventName:"keydown",time:t.timeStamp,registrationTime:performance.now()},o=(0,s.getKeyName)(e);if("Escape"===o)return void(this.isCapturingShortcut=!1);if("Delete"===o||"Backspace"===o)return this.command.shortcut="",void(this.isCapturingShortcut=!1);const n=[];e.ctrlKey&&n.push("Ctrl"),e.metaKey&&n.push(c.metaKeyName),e.altKey&&n.push(c.altKeyName),e.shiftKey&&n.push("Shift"),n.sort();let r="";n.length>0&&(r=n.join("+")+"+"),["Control",c.altKeyName,"Shift",c.metaKeyName].includes(o)||(r+=o,this.command.shortcut=r,this.isCapturingShortcut=!1)}}startCaptureShortcut(t){t.preventDefault(),this.isCapturingShortcut=!0}save(){this.modalInstance.close(this.command)}cancel(){this.modalInstance.dismiss()}};n([(0,a.HostListener)("document:keydown",["$event"]),r("design:type",Function),r("design:paramtypes",[KeyboardEvent]),r("design:returntype",void 0)],l.prototype,"onKeyDown",null),l=n([(0,a.Component)({template:o(27)}),r("design:paramtypes",[i.NgbActiveModal])],l),e.EditCommandModalComponent=l},491:function(t,e,o){"use strict";var n=this&&this.__decorate||function(t,e,o,n){var r,a=arguments.length,i=a<3?e:null===n?n=Object.getOwnPropertyDescriptor(e,o):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)i=Reflect.decorate(t,e,o,n);else for(var s=t.length-1;s>=0;s--)(r=t[s])&&(i=(a<3?r(i):a>3?r(e,o,i):r(e,o))||i);return a>3&&i&&Object.defineProperty(e,o,i),i},r=this&&this.__metadata||function(t,e){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(t,e)};Object.defineProperty(e,"__esModule",{value:!0}),e.PromptModalComponent=void 0;const a=o(900),i=o(571);let s=class{constructor(t){this.modalInstance=t}ngOnInit(){this.input.nativeElement.focus()}ok(){this.modalInstance.close(this.value)}cancel(){this.modalInstance.close("")}};n([(0,a.Input)(),r("design:type",String)],s.prototype,"value",void 0),n([(0,a.Input)(),r("design:type",Boolean)],s.prototype,"password",void 0),n([(0,a.ViewChild)("input"),r("design:type",a.ElementRef)],s.prototype,"input",void 0),s=n([(0,a.Component)({template:o(721)}),r("design:paramtypes",[i.NgbActiveModal])],s),e.PromptModalComponent=s},864:function(t,e,o){"use strict";var n=this&&this.__decorate||function(t,e,o,n){var r,a=arguments.length,i=a<3?e:null===n?n=Object.getOwnPropertyDescriptor(e,o):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)i=Reflect.decorate(t,e,o,n);else for(var s=t.length-1;s>=0;s--)(r=t[s])&&(i=(a<3?r(i):a>3?r(e,o,i):r(e,o))||i);return a>3&&i&&Object.defineProperty(e,o,i),i},r=this&&this.__metadata||function(t,e){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(t,e)},a=this&&this.__param||function(t,e){return function(o,n){e(o,n,t)}};Object.defineProperty(e,"__esModule",{value:!0}),e.QuickCmdsSettingsTabComponent=void 0;const i=o(900),s=o(571),c=o(315),l=o(704),u=o(491),d=o(881);let p=class{constructor(t,e,o){this.config=t,this.ngbModal=e,this.buttonProviders=o,this.groupCollapsed={},this.commands=this.config.store.qc.cmds,this.refresh()}get_button(){return this.buttonProviders.find((t=>t instanceof d.QuickCmdButtonProvider))}createCommand(){let t=this.ngbModal.open(l.EditCommandModalComponent);t.componentInstance.command={id:"",name:"",text:"",appendCR:!1},t.componentInstance.allGroups=Array.from(new Set(this.commands.map((t=>t.group||"")))).filter((t=>t)),t.result.then((t=>{this.commands.push(t),this.config.store.qc.cmds=this.commands,this.config.save(),this.refresh()}))}editCommand(t){let e=this.ngbModal.open(l.EditCommandModalComponent);e.componentInstance.command=Object.assign(Object.assign({},t),{group:t.group||"Ungrouped"}),e.componentInstance.allGroups=Array.from(new Set(this.commands.map((t=>t.group||"")))).filter((t=>t)),e.result.then((e=>{"Ungrouped"===e.group&&(e.group=null),Object.assign(t,e),this.config.save(),this.refresh()}))}deleteCommand(t){confirm(`Delete "${t.name}"?`)&&(this.commands=this.commands.filter((e=>e!==t)),this.config.store.qc.cmds=this.commands,this.config.save(),this.refresh())}editGroup(t){let e=this.ngbModal.open(u.PromptModalComponent);e.componentInstance.prompt="New group name",e.componentInstance.value=t.name,e.result.then((e=>{if(e){for(let o of this.commands.filter((e=>e.group===t.name)))o.group=e;this.config.save(),this.refresh()}}))}deleteGroup(t){if(confirm(`Delete "${t}"?`)){for(let e of this.commands.filter((e=>e.group===t.name)))e.group=null;this.config.save(),this.refresh()}}cancelFilter(){this.quickCmd="",this.refresh()}refresh(){var t;this.childGroups=[];let e=this.commands;this.quickCmd&&(e=e.filter((t=>(t.name+t.group+t.text).toLowerCase().includes(this.quickCmd))));for(let t of e){t.group=t.group||null;let e=this.childGroups.find((e=>e.name===t.group));e||(e={name:t.group,cmds:[]},this.childGroups.push(e)),e.cmds.push(t)}null===(t=this.get_button())||void 0===t||t.reload_hotkey()}};p=n([(0,i.Component)({template:o(774)}),a(2,(0,i.Inject)(c.ToolbarButtonProvider)),r("design:paramtypes",[c.ConfigService,s.NgbModal,Array])],p),e.QuickCmdsSettingsTabComponent=p},913:(t,e,o)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.QuickCmdsConfigProvider=void 0;const n=o(315);class r extends n.ConfigProvider{constructor(){super(...arguments),this.defaults={qc:{cmds:[]},hotkeys:{}},this.platformDefaults={}}}e.QuickCmdsConfigProvider=r},684:(t,e,o)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.getKeystrokeName=e.getKeyName=e.metaKeyName=e.altKeyName=void 0;const n=o(315);Object.defineProperty(e,"altKeyName",{enumerable:!0,get:function(){return n.altKeyName}}),Object.defineProperty(e,"metaKeyName",{enumerable:!0,get:function(){return n.metaKeyName}});const r=/^[A-Za-z]$/;e.getKeyName=function(t){var e;let o;return"Control"===t.key?o="Ctrl":"Meta"===t.key?o=n.metaKeyName:"Alt"===t.key?o=n.altKeyName:"Shift"===t.key?o="Shift":"`"===t.key?o="`":"~"===t.key?o="~":(o=t.code,r.test(t.key)?o=t.key.toUpperCase():(o=o.replace("Key",""),o=o.replace("Arrow",""),o=o.replace("Digit",""),o=null!==(e={Comma:",",Period:".",Slash:"/",Backslash:"\\",IntlBackslash:"`",Minus:"-",Equal:"=",Semicolon:";",Quote:"'",BracketLeft:"[",BracketRight:"]"}[o])&&void 0!==e?e:o)),o},e.getKeystrokeName=function(t){const e=["Ctrl",n.metaKeyName,n.altKeyName,"Shift"];return(t=[...e.map((e=>t.find((t=>t===e)))).filter((t=>!!t)),...t.filter((t=>!e.includes(t)))]).join("-")}},607:function(t,e,o){"use strict";var n=this&&this.__decorate||function(t,e,o,n){var r,a=arguments.length,i=a<3?e:null===n?n=Object.getOwnPropertyDescriptor(e,o):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)i=Reflect.decorate(t,e,o,n);else for(var s=t.length-1;s>=0;s--)(r=t[s])&&(i=(a<3?r(i):a>3?r(e,o,i):r(e,o))||i);return a>3&&i&&Object.defineProperty(e,o,i),i};Object.defineProperty(e,"__esModule",{value:!0});const r=o(900),a=o(848),i=o(161),s=o(571),c=o(315),l=o(315),u=o(663),d=o(704),p=o(864),f=o(491),m=o(881),h=o(913),g=o(310);let v=class{};v=n([(0,r.NgModule)({imports:[s.NgbModule,a.CommonModule,i.FormsModule,l.default],providers:[{provide:c.ToolbarButtonProvider,useClass:m.QuickCmdButtonProvider,multi:!0},{provide:c.ConfigProvider,useClass:h.QuickCmdsConfigProvider,multi:!0},{provide:u.SettingsTabProvider,useClass:g.QuickCmdsSettingsTabProvider,multi:!0}],declarations:[f.PromptModalComponent,d.EditCommandModalComponent,p.QuickCmdsSettingsTabComponent]})],v),e.default=v},310:function(t,e,o){"use strict";var n=this&&this.__decorate||function(t,e,o,n){var r,a=arguments.length,i=a<3?e:null===n?n=Object.getOwnPropertyDescriptor(e,o):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)i=Reflect.decorate(t,e,o,n);else for(var s=t.length-1;s>=0;s--)(r=t[s])&&(i=(a<3?r(i):a>3?r(e,o,i):r(e,o))||i);return a>3&&i&&Object.defineProperty(e,o,i),i};Object.defineProperty(e,"__esModule",{value:!0}),e.QuickCmdsSettingsTabProvider=void 0;const r=o(900),a=o(663),i=o(864);let s=class extends a.SettingsTabProvider{constructor(){super(...arguments),this.id="qc",this.title="Quick Commands"}getComponentType(){return i.QuickCmdsSettingsTabComponent}};s=n([(0,r.Injectable)()],s),e.QuickCmdsSettingsTabProvider=s},147:t=>{"use strict";t.exports=require("fs")},848:e=>{"use strict";e.exports=t},900:t=>{"use strict";t.exports=e},161:t=>{"use strict";t.exports=o},571:t=>{"use strict";t.exports=n},315:t=>{"use strict";t.exports=r},663:t=>{"use strict";t.exports=a},316:t=>{"use strict";t.exports=i}},c={},function t(e){var o=c[e];if(void 0!==o)return o.exports;var n=c[e]={exports:{}};return s[e].call(n.exports,n,n.exports,t),n.exports}(607);var s,c}));
2
+ !function(t,e){if("object"==typeof exports&&"object"==typeof module)module.exports=e(require("@angular/common"),require("@angular/core"),require("@angular/forms"),require("@ng-bootstrap/ng-bootstrap"),require("tabby-core"),require("tabby-settings"),require("tabby-terminal"));else if("function"==typeof define&&define.amd)define(["@angular/common","@angular/core","@angular/forms","@ng-bootstrap/ng-bootstrap","tabby-core","tabby-settings","tabby-terminal"],e);else{var o="object"==typeof exports?e(require("@angular/common"),require("@angular/core"),require("@angular/forms"),require("@ng-bootstrap/ng-bootstrap"),require("tabby-core"),require("tabby-settings"),require("tabby-terminal")):e(t["@angular/common"],t["@angular/core"],t["@angular/forms"],t["@ng-bootstrap/ng-bootstrap"],t["tabby-core"],t["tabby-settings"],t["tabby-terminal"]);for(var n in o)("object"==typeof exports?exports:t)[n]=o[n]}}(global,((t,e,o,n,r,a,i)=>{return s={27:(t,e,o)=>{var n=o(817);t.exports=(n.default||n).apply(n,[])},721:(t,e,o)=>{var n=o(29);t.exports=(n.default||n).apply(n,[])},774:(t,e,o)=>{var n=o(772);t.exports=(n.default||n).apply(n,[])},817:(t,e,o)=>{o(55),t.exports=function(t){var e="",o=t||{};return function(t){e+='<div class="modal-body"><div class="form-group"><label>Name</label><input class="form-control" type="text" placeholder="Name" autofocus [(ngModel)]="command.name"></div><div class="form-group"><label>Text</label><textarea class="form-control" rows="6" style="white-space: pre-line" placeholder="Text to be sent" [(ngModel)]="command.text"></textarea></div><div class="form-group"><label>Group</label><select class="form-control" [(ngModel)]="command.group"><option [value]="">Ungrouped</option><option *ngFor="let group of allGroups" [value]="group">{{ group }}</option></select></div><div class="form-group"><label>Shortcut</label><div class="input-group"><input class="form-control" type="text" placeholder="Click to capture shortcut" [(ngModel)]="command.shortcut" (click)="startCaptureShortcut($event)" (focus)="startCaptureShortcut($event)" [disabled]="isCapturingShortcut"><div class="input-group-append"><button class="btn btn-outline-secondary" type="button" (click)="startCaptureShortcut($event)" [class.btn-outline-primary]="isCapturingShortcut">',e+=t?"Capturing...":"Capture",e+='</button></div></div></div><div class="form-line"><div class="header"><div class="title">Append \'\\n\'</div><div class="description">Automatically append a \'\\n\' char to the end</div></div><toggle [(ngModel)]="command.appendCR"></toggle></div></div><div class="modal-footer"><button class="btn btn-outline-primary" (click)="save()">Save</button><button class="btn btn-outline-danger" (click)="cancel()">Cancel</button></div>'}.call(this,"isCapturingShortcut"in o?o.isCapturingShortcut:"undefined"!=typeof isCapturingShortcut?isCapturingShortcut:void 0),e}},29:(t,e,o)=>{o(55),t.exports=function(t){return""+'<div class="modal-body"><input class="form-control" [type]="password ? &quot;password&quot; : &quot;text&quot;" autofocus [(ngModel)]="value" #input [placeholder]="prompt" (keyup.enter)="ok()" (keyup.esc)="cancel()"></div>'}},772:(t,e,o)=>{o(55),t.exports=function(t){return""+'<h3>Quick Commands</h3><div class="form-group"><button class="btn btn-outline-primary" (click)="createCommand()"><div class="fa fa-fw fa-globe"></div><span class="ml-2">Add command</span></button></div><div class="form-group"><input class="form-control quickCmd" type="text" [(ngModel)]="quickCmd" autofocus placeholder="enter to filter" (ngModelChange)="refresh()" (keyup.esc)="cancelFilter()"></div><div class="list-group mt-3 mb-3"><ng-container *ngFor="let group of childGroups"> <div class="list-group-item list-group-item-action d-flex align-items-center" (click)="groupCollapsed[group.name] = !groupCollapsed[group.name]"><div class="fa fa-fw fa-chevron-right" *ngIf="groupCollapsed[group.name]"></div><div class="fa fa-fw fa-chevron-down" *ngIf="!groupCollapsed[group.name]"></div><span class="ml-3 mr-auto">{{group.name || "Ungrouped"}}</span><button class="btn btn-outline-info ml-2" (click)="editGroup(group)"><i class="fa fa-pencil"></i></button><button class="btn btn-outline-danger ml-1" (click)="deleteGroup(group)"><i class="fa fa-trash-can"> </i></button></div><ng-container *ngIf="!groupCollapsed[group.name]"><div class="list-group-item pl-5 d-flex align-items-center" *ngFor="let cmd of group.cmds"> <div class="mr-auto"><div>{{cmd.name}}</div><div class="text-muted">{{cmd.text}} {{cmd.appendCR ? "\\\\n" : ""}}</div></div><button class="btn btn-outline-info ml-2" (click)="editCommand(cmd)"><i class="fa fa-pencil"></i></button><button class="btn btn-outline-danger ml-1" (click)="deleteCommand(cmd)"><i class="fa fa-trash-can"> </i></button></div></ng-container></ng-container></div>'}},55:(t,e,o)=>{"use strict";var n=Object.prototype.hasOwnProperty;function r(t,e){return Array.isArray(t)?function(t,e){for(var o,n="",a="",i=Array.isArray(e),s=0;s<t.length;s++)(o=r(t[s]))&&(i&&e[s]&&(o=c(o)),n=n+a+o,a=" ");return n}(t,e):t&&"object"==typeof t?function(t){var e="",o="";for(var r in t)r&&t[r]&&n.call(t,r)&&(e=e+o+r,o=" ");return e}(t):t||""}function a(t){if(!t)return"";if("object"==typeof t){var e="";for(var o in t)n.call(t,o)&&(e=e+o+":"+t[o]+";");return e}return t+""}function i(t,e,o,n){if(!1===e||null==e||!e&&("class"===t||"style"===t))return"";if(!0===e)return" "+(n?t:t+'="'+t+'"');var r=typeof e;return"object"!==r&&"function"!==r||"function"!=typeof e.toJSON||(e=e.toJSON()),"string"==typeof e||(e=JSON.stringify(e),o||-1===e.indexOf('"'))?(o&&(e=c(e))," "+t+'="'+e+'"'):" "+t+"='"+e.replace(/'/g,"&#39;")+"'"}e.merge=function t(e,o){if(1===arguments.length){for(var n=e[0],r=1;r<e.length;r++)n=t(n,e[r]);return n}for(var i in o)if("class"===i){var s=e[i]||[];e[i]=(Array.isArray(s)?s:[s]).concat(o[i]||[])}else if("style"===i){s=(s=a(e[i]))&&";"!==s[s.length-1]?s+";":s;var c=a(o[i]);c=c&&";"!==c[c.length-1]?c+";":c,e[i]=s+c}else e[i]=o[i];return e},e.classes=r,e.style=a,e.attr=i,e.attrs=function(t,e){var o="";for(var s in t)if(n.call(t,s)){var c=t[s];if("class"===s){o=i(s,c=r(c),!1,e)+o;continue}"style"===s&&(c=a(c)),o+=i(s,c,!1,e)}return o};var s=/["&<>]/;function c(t){var e=""+t,o=s.exec(e);if(!o)return t;var n,r,a,i="";for(n=o.index,r=0;n<e.length;n++){switch(e.charCodeAt(n)){case 34:a="&quot;";break;case 38:a="&amp;";break;case 60:a="&lt;";break;case 62:a="&gt;";break;default:continue}r!==n&&(i+=e.substring(r,n)),r=n+1,i+=a}return r!==n?i+e.substring(r,n):i}e.escape=c,e.rethrow=function t(e,n,r,a){if(!(e instanceof Error))throw e;if(!("undefined"==typeof window&&n||a))throw e.message+=" on line "+r,e;var i,s,c,l;try{a=a||o(147).readFileSync(n,{encoding:"utf8"}),i=3,s=a.split("\n"),c=Math.max(r-i,0),l=Math.min(s.length,r+i)}catch(o){return e.message+=" - could not read from "+n+" ("+o.message+")",void t(e,null,r)}i=s.slice(c,l).map((function(t,e){var o=e+c+1;return(o==r?" > ":" ")+o+"| "+t})).join("\n"),e.path=n;try{e.message=(n||"Pug")+":"+r+"\n"+i+"\n\n"+e.message}catch(t){}throw e}},812:t=>{t.exports='<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 1000 1000" enable-background="new 0 0 1000 1000" xml:space="preserve"><metadata> Svg Vector Icons : http://www.onlinewebfonts.com/icon </metadata><g><path d="M286.1,422.2h-79.4c-16.2,0-29.4-13.2-29.4-29.4v-54.4c0-16.2,13.2-29.4,29.4-29.4h79.4c16.2,0,29.4,13.2,29.4,29.4v54.4C315.5,409,302.3,422.2,286.1,422.2z"></path><path d="M455.2,422.2h-79.4c-16.2,0-29.4-13.2-29.4-29.4v-54.4c0-16.2,13.2-29.4,29.4-29.4h79.4c16.2,0,29.4,13.2,29.4,29.4v54.4C484.6,409,471.3,422.2,455.2,422.2z"></path><path d="M624.2,422.2h-79.4c-16.2,0-29.4-13.2-29.4-29.4v-54.4c0-16.2,13.2-29.4,29.4-29.4h79.4c16.2,0,29.4,13.2,29.4,29.4v54.4C653.6,409,640.4,422.2,624.2,422.2z"></path><path d="M793.2,422.2h-79.4c-16.2,0-29.4-13.2-29.4-29.4v-54.4c0-16.2,13.2-29.4,29.4-29.4h79.4c16.2,0,29.4,13.2,29.4,29.4v54.4C822.6,409,809.4,422.2,793.2,422.2z"></path><path d="M305,573.6h-79.4c-16.2,0-29.4-13.2-29.4-29.4v-54.4c0-16.2,13.2-29.4,29.4-29.4H305c16.2,0,29.4,13.2,29.4,29.4v54.4C334.4,560.4,321.2,573.6,305,573.6z"></path><path d="M461.5,573.6h-79.4c-16.2,0-29.4-13.2-29.4-29.4v-54.4c0-16.2,13.2-29.4,29.4-29.4h79.4c16.2,0,29.4,13.2,29.4,29.4v54.4C490.9,560.4,477.6,573.6,461.5,573.6z"></path><path d="M617.9,573.6h-79.4c-16.2,0-29.4-13.2-29.4-29.4v-54.4c0-16.2,13.2-29.4,29.4-29.4h79.4c16.2,0,29.4,13.2,29.4,29.4v54.4C647.3,560.4,634.1,573.6,617.9,573.6z"></path><path d="M774.4,573.6H695c-16.2,0-29.4-13.2-29.4-29.4v-54.4c0-16.2,13.2-29.4,29.4-29.4h79.4c16.2,0,29.4,13.2,29.4,29.4v54.4C803.8,560.4,790.6,573.6,774.4,573.6z"></path><path d="M741.1,732.1H258.9c-16.2,0-29.4-13.2-29.4-29.4v-35.3c0-16.2,13.2-29.4,29.4-29.4h482.2c16.2,0,29.4,13.2,29.4,29.4v35.3C770.5,718.9,757.3,732.1,741.1,732.1z"></path><path d="M500,39.4c62.2,0,122.5,12.2,179.3,36.2c54.8,23.2,104.1,56.4,146.4,98.7s75.5,91.6,98.7,146.4c24,56.8,36.2,117.1,36.2,179.3c0,62.2-12.2,122.5-36.2,179.3c-23.2,54.8-56.4,104.1-98.7,146.4s-91.6,75.5-146.4,98.7c-56.8,24-117.1,36.2-179.3,36.2c-62.2,0-122.5-12.2-179.3-36.2c-54.8-23.2-104.1-56.4-146.4-98.7s-75.5-91.6-98.7-146.4c-24-56.8-36.2-117.1-36.2-179.3c0-62.2,12.2-122.5,36.2-179.3c23.2-54.8,56.4-104.1,98.7-146.4s91.6-75.5,146.4-98.7C377.5,51.6,437.8,39.4,500,39.4 M500,10C229.4,10,10,229.4,10,500s219.4,490,490,490c270.6,0,490-219.4,490-490S770.6,10,500,10L500,10z"></path></g></svg>'},881:function(t,e,o){"use strict";var n=this&&this.__decorate||function(t,e,o,n){var r,a=arguments.length,i=a<3?e:null===n?n=Object.getOwnPropertyDescriptor(e,o):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)i=Reflect.decorate(t,e,o,n);else for(var s=t.length-1;s>=0;s--)(r=t[s])&&(i=(a<3?r(i):a>3?r(e,o,i):r(e,o))||i);return a>3&&i&&Object.defineProperty(e,o,i),i},r=this&&this.__metadata||function(t,e){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(t,e)},a=this&&this.__awaiter||function(t,e,o,n){return new(o||(o=Promise))((function(r,a){function i(t){try{c(n.next(t))}catch(t){a(t)}}function s(t){try{c(n.throw(t))}catch(t){a(t)}}function c(t){var e;t.done?r(t.value):(e=t.value,e instanceof o?e:new o((function(t){t(e)}))).then(i,s)}c((n=n.apply(t,e||[])).next())}))};Object.defineProperty(e,"__esModule",{value:!0}),e.QuickCmdButtonProvider=void 0;const i=o(900),s=o(315),c=o(316);let l=class extends s.ToolbarButtonProvider{constructor(t,e,o){super(),this.hotkeys=t,this.config=e,this.app=o,this.PLUGIN_NAME="Quick Cmd",this.config.ready$.toPromise().then((()=>{this.reload_hotkey()})),this.config.changed$.subscribe((()=>{this.reload_hotkey()})),this.hotkeys.hotkey$.subscribe((t=>a(this,void 0,void 0,(function*(){yield this.executeCommandByShortcut(t)}))))}executeCommandByShortcut(t){return a(this,void 0,void 0,(function*(){const e=this.config.store.qc.cmds.find((e=>e.id===t));e&&(yield this._send(this.app.activeTab,e))}))}_send(t,e){return a(this,void 0,void 0,(function*(){if(t instanceof s.SplitTabComponent)return this._send(t.getFocusedTab(),e);if(t instanceof c.BaseTerminalTabComponent){let o=e.text;o.startsWith("\\x")&&(o=o.replace(/\\x([0-9a-f]{2})/gi,(function(t,e){return String.fromCharCode(parseInt(e,16))})));let n=t;return yield n.sendInput(o),!0}return!1}))}reload_hotkey(){console.log("[Quick Cmd] reload hotkeys");for(const t of Object.keys(this.config.store.hotkeys))t.startsWith(this.PLUGIN_NAME)&&delete this.config.store.hotkeys[t];let t;for(let e of this.config.store.qc.cmds)t=this.PLUGIN_NAME+":"+e.name,this.config.store.hotkeys[t]=[e.shortcut.replace(/\+/g,"-")],e.id=t}provide(){return[{icon:o(812),weight:5,title:"Quick commands",touchBarNSImage:"NSTouchBarComposeTemplate"}]}};l=n([(0,i.Injectable)(),r("design:paramtypes",[s.HotkeysService,s.ConfigService,s.AppService])],l),e.QuickCmdButtonProvider=l},704:function(t,e,o){"use strict";var n=this&&this.__decorate||function(t,e,o,n){var r,a=arguments.length,i=a<3?e:null===n?n=Object.getOwnPropertyDescriptor(e,o):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)i=Reflect.decorate(t,e,o,n);else for(var s=t.length-1;s>=0;s--)(r=t[s])&&(i=(a<3?r(i):a>3?r(e,o,i):r(e,o))||i);return a>3&&i&&Object.defineProperty(e,o,i),i},r=this&&this.__metadata||function(t,e){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(t,e)};Object.defineProperty(e,"__esModule",{value:!0}),e.EditCommandModalComponent=void 0;const a=o(900),i=o(571),s=o(684),c=o(315);let l=class{constructor(t){this.modalInstance=t,this.allGroups=[],this.isCapturingShortcut=!1}onKeyDown(t){if(this.isCapturingShortcut){t.preventDefault(),t.stopPropagation();const e={ctrlKey:t.ctrlKey,metaKey:t.metaKey,altKey:t.altKey,shiftKey:t.shiftKey,code:t.code,key:t.key,eventName:"keydown",time:t.timeStamp,registrationTime:performance.now()},o=(0,s.getKeyName)(e);if("Escape"===o)return void(this.isCapturingShortcut=!1);if("Delete"===o||"Backspace"===o)return this.command.shortcut="",void(this.isCapturingShortcut=!1);const n=[];e.ctrlKey&&n.push("Ctrl"),e.metaKey&&n.push(c.metaKeyName),e.altKey&&n.push(c.altKeyName),e.shiftKey&&n.push("Shift"),n.sort();let r="";n.length>0&&(r=n.join("+")+"+"),["Control",c.altKeyName,"Shift",c.metaKeyName].includes(o)||(r+=o,this.command.shortcut=r,this.isCapturingShortcut=!1)}}startCaptureShortcut(t){t.preventDefault(),this.isCapturingShortcut=!0}save(){this.modalInstance.close(this.command)}cancel(){this.modalInstance.dismiss()}};n([(0,a.HostListener)("document:keydown",["$event"]),r("design:type",Function),r("design:paramtypes",[KeyboardEvent]),r("design:returntype",void 0)],l.prototype,"onKeyDown",null),l=n([(0,a.Component)({template:o(27)}),r("design:paramtypes",[i.NgbActiveModal])],l),e.EditCommandModalComponent=l},491:function(t,e,o){"use strict";var n=this&&this.__decorate||function(t,e,o,n){var r,a=arguments.length,i=a<3?e:null===n?n=Object.getOwnPropertyDescriptor(e,o):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)i=Reflect.decorate(t,e,o,n);else for(var s=t.length-1;s>=0;s--)(r=t[s])&&(i=(a<3?r(i):a>3?r(e,o,i):r(e,o))||i);return a>3&&i&&Object.defineProperty(e,o,i),i},r=this&&this.__metadata||function(t,e){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(t,e)};Object.defineProperty(e,"__esModule",{value:!0}),e.PromptModalComponent=void 0;const a=o(900),i=o(571);let s=class{constructor(t){this.modalInstance=t}ngOnInit(){this.input.nativeElement.focus()}ok(){this.modalInstance.close(this.value)}cancel(){this.modalInstance.close("")}};n([(0,a.Input)(),r("design:type",String)],s.prototype,"value",void 0),n([(0,a.Input)(),r("design:type",Boolean)],s.prototype,"password",void 0),n([(0,a.ViewChild)("input"),r("design:type",a.ElementRef)],s.prototype,"input",void 0),s=n([(0,a.Component)({template:o(721)}),r("design:paramtypes",[i.NgbActiveModal])],s),e.PromptModalComponent=s},864:function(t,e,o){"use strict";var n=this&&this.__decorate||function(t,e,o,n){var r,a=arguments.length,i=a<3?e:null===n?n=Object.getOwnPropertyDescriptor(e,o):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)i=Reflect.decorate(t,e,o,n);else for(var s=t.length-1;s>=0;s--)(r=t[s])&&(i=(a<3?r(i):a>3?r(e,o,i):r(e,o))||i);return a>3&&i&&Object.defineProperty(e,o,i),i},r=this&&this.__metadata||function(t,e){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(t,e)},a=this&&this.__param||function(t,e){return function(o,n){e(o,n,t)}};Object.defineProperty(e,"__esModule",{value:!0}),e.QuickCmdsSettingsTabComponent=void 0;const i=o(900),s=o(571),c=o(315),l=o(704),u=o(491),d=o(881);let p=class{constructor(t,e,o){this.config=t,this.ngbModal=e,this.buttonProviders=o,this.groupCollapsed={},this.commands=this.config.store.qc.cmds,this.refresh()}get_button(){return this.buttonProviders.find((t=>t instanceof d.QuickCmdButtonProvider))}createCommand(){let t=this.ngbModal.open(l.EditCommandModalComponent);t.componentInstance.command={id:"",name:"",text:"",appendCR:!1},t.componentInstance.allGroups=Array.from(new Set(this.commands.map((t=>t.group||"")))).filter((t=>t)),t.result.then((t=>{this.commands.push(t),this.config.store.qc.cmds=this.commands,this.config.save(),this.refresh()}))}editCommand(t){let e=this.ngbModal.open(l.EditCommandModalComponent);e.componentInstance.command=Object.assign(Object.assign({},t),{group:t.group||"Ungrouped"}),e.componentInstance.allGroups=Array.from(new Set(this.commands.map((t=>t.group||"")))).filter((t=>t)),e.result.then((e=>{"Ungrouped"===e.group&&(e.group=null),Object.assign(t,e),this.config.save(),this.refresh()}))}deleteCommand(t){confirm(`Delete "${t.name}"?`)&&(this.commands=this.commands.filter((e=>e!==t)),this.config.store.qc.cmds=this.commands,this.config.save(),this.refresh())}editGroup(t){let e=this.ngbModal.open(u.PromptModalComponent);e.componentInstance.prompt="New group name",e.componentInstance.value=t.name,e.result.then((e=>{if(e){for(let o of this.commands.filter((e=>e.group===t.name)))o.group=e;this.config.save(),this.refresh()}}))}deleteGroup(t){if(confirm(`Delete "${t}"?`)){for(let e of this.commands.filter((e=>e.group===t.name)))e.group=null;this.config.save(),this.refresh()}}cancelFilter(){this.quickCmd="",this.refresh()}refresh(){var t;this.childGroups=[];let e=this.commands;this.quickCmd&&(e=e.filter((t=>(t.name+t.group+t.text).toLowerCase().includes(this.quickCmd))));for(let t of e){t.group=t.group||null;let e=this.childGroups.find((e=>e.name===t.group));e||(e={name:t.group,cmds:[]},this.childGroups.push(e)),e.cmds.push(t)}null===(t=this.get_button())||void 0===t||t.reload_hotkey()}};p=n([(0,i.Component)({template:o(774)}),a(2,(0,i.Inject)(c.ToolbarButtonProvider)),r("design:paramtypes",[c.ConfigService,s.NgbModal,Array])],p),e.QuickCmdsSettingsTabComponent=p},913:(t,e,o)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.QuickCmdsConfigProvider=void 0;const n=o(315);class r extends n.ConfigProvider{constructor(){super(...arguments),this.defaults={qc:{cmds:[]},hotkeys:{}},this.platformDefaults={}}}e.QuickCmdsConfigProvider=r},684:(t,e,o)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.getKeystrokeName=e.getKeyName=e.metaKeyName=e.altKeyName=void 0;const n=o(315);Object.defineProperty(e,"altKeyName",{enumerable:!0,get:function(){return n.altKeyName}}),Object.defineProperty(e,"metaKeyName",{enumerable:!0,get:function(){return n.metaKeyName}});const r=/^[A-Za-z]$/;e.getKeyName=function(t){var e;let o;return"Control"===t.key?o="Ctrl":"Meta"===t.key?o=n.metaKeyName:"Alt"===t.key?o=n.altKeyName:"Shift"===t.key?o="Shift":"`"===t.key?o="`":"~"===t.key?o="~":(o=t.code,r.test(t.key)?o=t.key.toUpperCase():(o=o.replace("Key",""),o=o.replace("Arrow",""),o=o.replace("Digit",""),o=null!==(e={Comma:",",Period:".",Slash:"/",Backslash:"\\",IntlBackslash:"`",Minus:"-",Equal:"=",Semicolon:";",Quote:"'",BracketLeft:"[",BracketRight:"]"}[o])&&void 0!==e?e:o)),o},e.getKeystrokeName=function(t){const e=["Ctrl",n.metaKeyName,n.altKeyName,"Shift"];return(t=[...e.map((e=>t.find((t=>t===e)))).filter((t=>!!t)),...t.filter((t=>!e.includes(t)))]).join("-")}},607:function(t,e,o){"use strict";var n=this&&this.__decorate||function(t,e,o,n){var r,a=arguments.length,i=a<3?e:null===n?n=Object.getOwnPropertyDescriptor(e,o):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)i=Reflect.decorate(t,e,o,n);else for(var s=t.length-1;s>=0;s--)(r=t[s])&&(i=(a<3?r(i):a>3?r(e,o,i):r(e,o))||i);return a>3&&i&&Object.defineProperty(e,o,i),i};Object.defineProperty(e,"__esModule",{value:!0});const r=o(900),a=o(848),i=o(161),s=o(571),c=o(315),l=o(315),u=o(663),d=o(704),p=o(864),f=o(491),m=o(881),h=o(913),g=o(310);let v=class{};v=n([(0,r.NgModule)({imports:[s.NgbModule,a.CommonModule,i.FormsModule,l.default],providers:[{provide:c.ToolbarButtonProvider,useClass:m.QuickCmdButtonProvider,multi:!0},{provide:c.ConfigProvider,useClass:h.QuickCmdsConfigProvider,multi:!0},{provide:u.SettingsTabProvider,useClass:g.QuickCmdsSettingsTabProvider,multi:!0}],declarations:[f.PromptModalComponent,d.EditCommandModalComponent,p.QuickCmdsSettingsTabComponent]})],v),e.default=v},310:function(t,e,o){"use strict";var n=this&&this.__decorate||function(t,e,o,n){var r,a=arguments.length,i=a<3?e:null===n?n=Object.getOwnPropertyDescriptor(e,o):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)i=Reflect.decorate(t,e,o,n);else for(var s=t.length-1;s>=0;s--)(r=t[s])&&(i=(a<3?r(i):a>3?r(e,o,i):r(e,o))||i);return a>3&&i&&Object.defineProperty(e,o,i),i};Object.defineProperty(e,"__esModule",{value:!0}),e.QuickCmdsSettingsTabProvider=void 0;const r=o(900),a=o(663),i=o(864);let s=class extends a.SettingsTabProvider{constructor(){super(...arguments),this.id="qc",this.title="Quick Commands"}getComponentType(){return i.QuickCmdsSettingsTabComponent}};s=n([(0,r.Injectable)()],s),e.QuickCmdsSettingsTabProvider=s},147:t=>{"use strict";t.exports=require("fs")},848:e=>{"use strict";e.exports=t},900:t=>{"use strict";t.exports=e},161:t=>{"use strict";t.exports=o},571:t=>{"use strict";t.exports=n},315:t=>{"use strict";t.exports=r},663:t=>{"use strict";t.exports=a},316:t=>{"use strict";t.exports=i}},c={},function t(e){var o=c[e];if(void 0!==o)return o.exports;var n=c[e]={exports:{}};return s[e].call(n.exports,n,n.exports,t),n.exports}(607);var s,c}));
3
3
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","mappings":"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","sources":["webpack-terminus-quick-cmds:///webpack/universalModuleDefinition","webpack://@zeroleo12345/tabby-send-input/./src/components/editCommandModal.component.pug?27df","webpack://@zeroleo12345/tabby-send-input/./src/components/promptModal.component.pug?9184","webpack://@zeroleo12345/tabby-send-input/./src/components/quickCmdsSettingsTab.component.pug?4c61","webpack-terminus-quick-cmds:///./src/components/editCommandModal.component.pug","webpack-terminus-quick-cmds:///./src/components/promptModal.component.pug","webpack-terminus-quick-cmds:///./src/components/quickCmdsSettingsTab.component.pug","webpack-terminus-quick-cmds:///./node_modules/pug-runtime/index.js","webpack-terminus-quick-cmds:///./src/icons/keyboard.svg","webpack-terminus-quick-cmds:///./src/button.ts","webpack-terminus-quick-cmds:///./src/components/editCommandModal.component.ts","webpack-terminus-quick-cmds:///./src/components/promptModal.component.ts","webpack-terminus-quick-cmds:///./src/components/quickCmdsSettingsTab.component.ts","webpack-terminus-quick-cmds:///./src/config.ts","webpack-terminus-quick-cmds:///./src/hotkeys.util.ts","webpack-terminus-quick-cmds:///./src/index.ts","webpack-terminus-quick-cmds:///./src/settings.ts","webpack-terminus-quick-cmds:///external node-commonjs \"fs\"","webpack-terminus-quick-cmds:///external umd \"@angular/common\"","webpack-terminus-quick-cmds:///external umd \"@angular/core\"","webpack-terminus-quick-cmds:///external umd \"@angular/forms\"","webpack-terminus-quick-cmds:///external umd \"@ng-bootstrap/ng-bootstrap\"","webpack-terminus-quick-cmds:///external umd \"tabby-core\"","webpack-terminus-quick-cmds:///external umd \"tabby-settings\"","webpack-terminus-quick-cmds:///external umd \"tabby-terminal\"","webpack-terminus-quick-cmds:///webpack/bootstrap","webpack-terminus-quick-cmds:///webpack/startup"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"@angular/common\"), require(\"@angular/core\"), require(\"@angular/forms\"), require(\"@ng-bootstrap/ng-bootstrap\"), require(\"tabby-core\"), require(\"tabby-settings\"), require(\"tabby-terminal\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"@angular/common\", \"@angular/core\", \"@angular/forms\", \"@ng-bootstrap/ng-bootstrap\", \"tabby-core\", \"tabby-settings\", \"tabby-terminal\"], factory);\n\telse {\n\t\tvar a = typeof exports === 'object' ? factory(require(\"@angular/common\"), require(\"@angular/core\"), require(\"@angular/forms\"), require(\"@ng-bootstrap/ng-bootstrap\"), require(\"tabby-core\"), require(\"tabby-settings\"), require(\"tabby-terminal\")) : factory(root[\"@angular/common\"], root[\"@angular/core\"], root[\"@angular/forms\"], root[\"@ng-bootstrap/ng-bootstrap\"], root[\"tabby-core\"], root[\"tabby-settings\"], root[\"tabby-terminal\"]);\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(global, (__WEBPACK_EXTERNAL_MODULE__848__, __WEBPACK_EXTERNAL_MODULE__900__, __WEBPACK_EXTERNAL_MODULE__161__, __WEBPACK_EXTERNAL_MODULE__571__, __WEBPACK_EXTERNAL_MODULE__315__, __WEBPACK_EXTERNAL_MODULE__663__, __WEBPACK_EXTERNAL_MODULE__316__) => {\nreturn ","var req = require(\"!!/Users/zlx/github/tabby_project/terminus-quick-cmds/node_modules/pug-loader/index.js!/Users/zlx/github/tabby_project/terminus-quick-cmds/src/components/editCommandModal.component.pug\");\nmodule.exports = (req['default'] || req).apply(req, [])","var req = require(\"!!/Users/zlx/github/tabby_project/terminus-quick-cmds/node_modules/pug-loader/index.js!/Users/zlx/github/tabby_project/terminus-quick-cmds/src/components/promptModal.component.pug\");\nmodule.exports = (req['default'] || req).apply(req, [])","var req = require(\"!!/Users/zlx/github/tabby_project/terminus-quick-cmds/node_modules/pug-loader/index.js!/Users/zlx/github/tabby_project/terminus-quick-cmds/src/components/quickCmdsSettingsTab.component.pug\");\nmodule.exports = (req['default'] || req).apply(req, [])","var pug = require(\"!../../node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;\n var locals_for_with = (locals || {});\n \n (function (isCapturingShortcut) {\n pug_html = pug_html + \"\\u003Cdiv class=\\\"modal-body\\\"\\u003E\\u003Cdiv class=\\\"form-group\\\"\\u003E\\u003Clabel\\u003EName\\u003C\\u002Flabel\\u003E\\u003Cinput class=\\\"form-control\\\" type=\\\"text\\\" placeholder=\\\"Name\\\" autofocus [(ngModel)]=\\\"command.name\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"form-group\\\"\\u003E\\u003Clabel\\u003EText\\u003C\\u002Flabel\\u003E\\u003Ctextarea class=\\\"form-control\\\" rows=\\\"6\\\" style=\\\"white-space: pre-line\\\" placeholder=\\\"Text to be sent\\\" [(ngModel)]=\\\"command.text\\\"\\u003E\\u003C\\u002Ftextarea\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"form-group\\\"\\u003E\\u003Clabel\\u003EGroup\\u003C\\u002Flabel\\u003E\\u003Cselect class=\\\"form-control\\\" [(ngModel)]=\\\"command.group\\\"\\u003E\\u003Coption [value]=\\\"\\\"\\u003EUngrouped\\u003C\\u002Foption\\u003E\\u003Coption *ngFor=\\\"let group of allGroups\\\" [value]=\\\"group\\\"\\u003E{{ group }}\\u003C\\u002Foption\\u003E\\u003C\\u002Fselect\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"form-group\\\"\\u003E\\u003Clabel\\u003EShortcut\\u003C\\u002Flabel\\u003E\\u003Cdiv class=\\\"input-group\\\"\\u003E\\u003Cinput class=\\\"form-control\\\" type=\\\"text\\\" placeholder=\\\"Click to capture shortcut\\\" [(ngModel)]=\\\"command.shortcut\\\" (click)=\\\"startCaptureShortcut($event)\\\" (focus)=\\\"startCaptureShortcut($event)\\\" [disabled]=\\\"isCapturingShortcut\\\"\\u003E\\u003Cdiv class=\\\"input-group-append\\\"\\u003E\\u003Cbutton class=\\\"btn btn-outline-secondary\\\" type=\\\"button\\\" (click)=\\\"startCaptureShortcut($event)\\\" [class.btn-outline-primary]=\\\"isCapturingShortcut\\\"\\u003E\";\nif (isCapturingShortcut) {\npug_html = pug_html + \"Capturing...\";\n}\nelse {\npug_html = pug_html + \"Capture\";\n}\npug_html = pug_html + \"\\u003C\\u002Fbutton\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"form-line\\\"\\u003E\\u003Cdiv class=\\\"header\\\"\\u003E\\u003Cdiv class=\\\"title\\\"\\u003EAppend '\\\\n'\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"description\\\"\\u003EAutomatically append a '\\\\n' char to the end\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Ctoggle [(ngModel)]=\\\"command.appendCR\\\"\\u003E\\u003C\\u002Ftoggle\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"modal-footer\\\"\\u003E\\u003Cbutton class=\\\"btn btn-outline-primary\\\" (click)=\\\"save()\\\"\\u003ESave\\u003C\\u002Fbutton\\u003E\\u003Cbutton class=\\\"btn btn-outline-danger\\\" (click)=\\\"cancel()\\\"\\u003ECancel\\u003C\\u002Fbutton\\u003E\\u003C\\u002Fdiv\\u003E\";\n }.call(this, \"isCapturingShortcut\" in locals_for_with ?\n locals_for_with.isCapturingShortcut :\n typeof isCapturingShortcut !== 'undefined' ? isCapturingShortcut : undefined));\n ;;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;pug_html = pug_html + \"\\u003Cdiv class=\\\"modal-body\\\"\\u003E\\u003Cinput class=\\\"form-control\\\" [type]=\\\"password ? &quot;password&quot; : &quot;text&quot;\\\" autofocus [(ngModel)]=\\\"value\\\" #input [placeholder]=\\\"prompt\\\" (keyup.enter)=\\\"ok()\\\" (keyup.esc)=\\\"cancel()\\\"\\u003E\\u003C\\u002Fdiv\\u003E\";;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;pug_html = pug_html + \"\\u003Ch3\\u003EQuick Commands\\u003C\\u002Fh3\\u003E\\u003Cdiv class=\\\"form-group\\\"\\u003E\\u003Cbutton class=\\\"btn btn-outline-primary\\\" (click)=\\\"createCommand()\\\"\\u003E\\u003Cdiv class=\\\"fa fa-fw fa-globe\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cspan class=\\\"ml-2\\\"\\u003EAdd command\\u003C\\u002Fspan\\u003E\\u003C\\u002Fbutton\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"form-group\\\"\\u003E\\u003Cinput class=\\\"form-control quickCmd\\\" type=\\\"text\\\" [(ngModel)]=\\\"quickCmd\\\" autofocus placeholder=\\\"enter to filter\\\" (ngModelChange)=\\\"refresh()\\\" (keyup.esc)=\\\"cancelFilter()\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"list-group mt-3 mb-3\\\"\\u003E\\u003Cng-container *ngFor=\\\"let group of childGroups\\\"\\u003E \\u003Cdiv class=\\\"list-group-item list-group-item-action d-flex align-items-center\\\" (click)=\\\"groupCollapsed[group.name] = !groupCollapsed[group.name]\\\"\\u003E\\u003Cdiv class=\\\"fa fa-fw fa-chevron-right\\\" *ngIf=\\\"groupCollapsed[group.name]\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"fa fa-fw fa-chevron-down\\\" *ngIf=\\\"!groupCollapsed[group.name]\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cspan class=\\\"ml-3 mr-auto\\\"\\u003E{{group.name || \\\"Ungrouped\\\"}}\\u003C\\u002Fspan\\u003E\\u003Cbutton class=\\\"btn btn-outline-info ml-2\\\" (click)=\\\"editGroup(group)\\\"\\u003E\\u003Ci class=\\\"fa fa-pencil\\\"\\u003E\\u003C\\u002Fi\\u003E\\u003C\\u002Fbutton\\u003E\\u003Cbutton class=\\\"btn btn-outline-danger ml-1\\\" (click)=\\\"deleteGroup(group)\\\"\\u003E\\u003Ci class=\\\"fa fa-trash-can\\\"\\u003E \\u003C\\u002Fi\\u003E\\u003C\\u002Fbutton\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cng-container *ngIf=\\\"!groupCollapsed[group.name]\\\"\\u003E\\u003Cdiv class=\\\"list-group-item pl-5 d-flex align-items-center\\\" *ngFor=\\\"let cmd of group.cmds\\\"\\u003E \\u003Cdiv class=\\\"mr-auto\\\"\\u003E\\u003Cdiv\\u003E{{cmd.name}}\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"text-muted\\\"\\u003E{{cmd.text}} {{cmd.appendCR ? \\\"\\\\\\\\n\\\" : \\\"\\\"}}\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cbutton class=\\\"btn btn-outline-info ml-2\\\" (click)=\\\"editCommand(cmd)\\\"\\u003E\\u003Ci class=\\\"fa fa-pencil\\\"\\u003E\\u003C\\u002Fi\\u003E\\u003C\\u002Fbutton\\u003E\\u003Cbutton class=\\\"btn btn-outline-danger ml-1\\\" (click)=\\\"deleteCommand(cmd)\\\"\\u003E\\u003Ci class=\\\"fa fa-trash-can\\\"\\u003E \\u003C\\u002Fi\\u003E\\u003C\\u002Fbutton\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fng-container\\u003E\\u003C\\u002Fng-container\\u003E\\u003C\\u002Fdiv\\u003E\";;return pug_html;};\nmodule.exports = template;","'use strict';\n\nvar pug_has_own_property = Object.prototype.hasOwnProperty;\n\n/**\n * Merge two attribute objects giving precedence\n * to values in object `b`. Classes are special-cased\n * allowing for arrays and merging/joining appropriately\n * resulting in a string.\n *\n * @param {Object} a\n * @param {Object} b\n * @return {Object} a\n * @api private\n */\n\nexports.merge = pug_merge;\nfunction pug_merge(a, b) {\n if (arguments.length === 1) {\n var attrs = a[0];\n for (var i = 1; i < a.length; i++) {\n attrs = pug_merge(attrs, a[i]);\n }\n return attrs;\n }\n\n for (var key in b) {\n if (key === 'class') {\n var valA = a[key] || [];\n a[key] = (Array.isArray(valA) ? valA : [valA]).concat(b[key] || []);\n } else if (key === 'style') {\n var valA = pug_style(a[key]);\n valA = valA && valA[valA.length - 1] !== ';' ? valA + ';' : valA;\n var valB = pug_style(b[key]);\n valB = valB && valB[valB.length - 1] !== ';' ? valB + ';' : valB;\n a[key] = valA + valB;\n } else {\n a[key] = b[key];\n }\n }\n\n return a;\n}\n\n/**\n * Process array, object, or string as a string of classes delimited by a space.\n *\n * If `val` is an array, all members of it and its subarrays are counted as\n * classes. If `escaping` is an array, then whether or not the item in `val` is\n * escaped depends on the corresponding item in `escaping`. If `escaping` is\n * not an array, no escaping is done.\n *\n * If `val` is an object, all the keys whose value is truthy are counted as\n * classes. No escaping is done.\n *\n * If `val` is a string, it is counted as a class. No escaping is done.\n *\n * @param {(Array.<string>|Object.<string, boolean>|string)} val\n * @param {?Array.<string>} escaping\n * @return {String}\n */\nexports.classes = pug_classes;\nfunction pug_classes_array(val, escaping) {\n var classString = '',\n className,\n padding = '',\n escapeEnabled = Array.isArray(escaping);\n for (var i = 0; i < val.length; i++) {\n className = pug_classes(val[i]);\n if (!className) continue;\n escapeEnabled && escaping[i] && (className = pug_escape(className));\n classString = classString + padding + className;\n padding = ' ';\n }\n return classString;\n}\nfunction pug_classes_object(val) {\n var classString = '',\n padding = '';\n for (var key in val) {\n if (key && val[key] && pug_has_own_property.call(val, key)) {\n classString = classString + padding + key;\n padding = ' ';\n }\n }\n return classString;\n}\nfunction pug_classes(val, escaping) {\n if (Array.isArray(val)) {\n return pug_classes_array(val, escaping);\n } else if (val && typeof val === 'object') {\n return pug_classes_object(val);\n } else {\n return val || '';\n }\n}\n\n/**\n * Convert object or string to a string of CSS styles delimited by a semicolon.\n *\n * @param {(Object.<string, string>|string)} val\n * @return {String}\n */\n\nexports.style = pug_style;\nfunction pug_style(val) {\n if (!val) return '';\n if (typeof val === 'object') {\n var out = '';\n for (var style in val) {\n /* istanbul ignore else */\n if (pug_has_own_property.call(val, style)) {\n out = out + style + ':' + val[style] + ';';\n }\n }\n return out;\n } else {\n return val + '';\n }\n}\n\n/**\n * Render the given attribute.\n *\n * @param {String} key\n * @param {String} val\n * @param {Boolean} escaped\n * @param {Boolean} terse\n * @return {String}\n */\nexports.attr = pug_attr;\nfunction pug_attr(key, val, escaped, terse) {\n if (\n val === false ||\n val == null ||\n (!val && (key === 'class' || key === 'style'))\n ) {\n return '';\n }\n if (val === true) {\n return ' ' + (terse ? key : key + '=\"' + key + '\"');\n }\n var type = typeof val;\n if (\n (type === 'object' || type === 'function') &&\n typeof val.toJSON === 'function'\n ) {\n val = val.toJSON();\n }\n if (typeof val !== 'string') {\n val = JSON.stringify(val);\n if (!escaped && val.indexOf('\"') !== -1) {\n return ' ' + key + \"='\" + val.replace(/'/g, '&#39;') + \"'\";\n }\n }\n if (escaped) val = pug_escape(val);\n return ' ' + key + '=\"' + val + '\"';\n}\n\n/**\n * Render the given attributes object.\n *\n * @param {Object} obj\n * @param {Object} terse whether to use HTML5 terse boolean attributes\n * @return {String}\n */\nexports.attrs = pug_attrs;\nfunction pug_attrs(obj, terse) {\n var attrs = '';\n\n for (var key in obj) {\n if (pug_has_own_property.call(obj, key)) {\n var val = obj[key];\n\n if ('class' === key) {\n val = pug_classes(val);\n attrs = pug_attr(key, val, false, terse) + attrs;\n continue;\n }\n if ('style' === key) {\n val = pug_style(val);\n }\n attrs += pug_attr(key, val, false, terse);\n }\n }\n\n return attrs;\n}\n\n/**\n * Escape the given string of `html`.\n *\n * @param {String} html\n * @return {String}\n * @api private\n */\n\nvar pug_match_html = /[\"&<>]/;\nexports.escape = pug_escape;\nfunction pug_escape(_html) {\n var html = '' + _html;\n var regexResult = pug_match_html.exec(html);\n if (!regexResult) return _html;\n\n var result = '';\n var i, lastIndex, escape;\n for (i = regexResult.index, lastIndex = 0; i < html.length; i++) {\n switch (html.charCodeAt(i)) {\n case 34:\n escape = '&quot;';\n break;\n case 38:\n escape = '&amp;';\n break;\n case 60:\n escape = '&lt;';\n break;\n case 62:\n escape = '&gt;';\n break;\n default:\n continue;\n }\n if (lastIndex !== i) result += html.substring(lastIndex, i);\n lastIndex = i + 1;\n result += escape;\n }\n if (lastIndex !== i) return result + html.substring(lastIndex, i);\n else return result;\n}\n\n/**\n * Re-throw the given `err` in context to the\n * the pug in `filename` at the given `lineno`.\n *\n * @param {Error} err\n * @param {String} filename\n * @param {String} lineno\n * @param {String} str original source\n * @api private\n */\n\nexports.rethrow = pug_rethrow;\nfunction pug_rethrow(err, filename, lineno, str) {\n if (!(err instanceof Error)) throw err;\n if ((typeof window != 'undefined' || !filename) && !str) {\n err.message += ' on line ' + lineno;\n throw err;\n }\n var context, lines, start, end;\n try {\n str = str || require('fs').readFileSync(filename, {encoding: 'utf8'});\n context = 3;\n lines = str.split('\\n');\n start = Math.max(lineno - context, 0);\n end = Math.min(lines.length, lineno + context);\n } catch (ex) {\n err.message +=\n ' - could not read from ' + filename + ' (' + ex.message + ')';\n pug_rethrow(err, null, lineno);\n return;\n }\n\n // Error context\n context = lines\n .slice(start, end)\n .map(function(line, i) {\n var curr = i + start + 1;\n return (curr == lineno ? ' > ' : ' ') + curr + '| ' + line;\n })\n .join('\\n');\n\n // Alter exception message\n err.path = filename;\n try {\n err.message =\n (filename || 'Pug') +\n ':' +\n lineno +\n '\\n' +\n context +\n '\\n\\n' +\n err.message;\n } catch (e) {}\n throw err;\n}\n","module.exports = \"<svg version=\\\"1.1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\" x=\\\"0px\\\" y=\\\"0px\\\" viewBox=\\\"0 0 1000 1000\\\" enable-background=\\\"new 0 0 1000 1000\\\" xml:space=\\\"preserve\\\"><metadata> Svg Vector Icons : http://www.onlinewebfonts.com/icon </metadata><g><path d=\\\"M286.1,422.2h-79.4c-16.2,0-29.4-13.2-29.4-29.4v-54.4c0-16.2,13.2-29.4,29.4-29.4h79.4c16.2,0,29.4,13.2,29.4,29.4v54.4C315.5,409,302.3,422.2,286.1,422.2z\\\"></path><path d=\\\"M455.2,422.2h-79.4c-16.2,0-29.4-13.2-29.4-29.4v-54.4c0-16.2,13.2-29.4,29.4-29.4h79.4c16.2,0,29.4,13.2,29.4,29.4v54.4C484.6,409,471.3,422.2,455.2,422.2z\\\"></path><path d=\\\"M624.2,422.2h-79.4c-16.2,0-29.4-13.2-29.4-29.4v-54.4c0-16.2,13.2-29.4,29.4-29.4h79.4c16.2,0,29.4,13.2,29.4,29.4v54.4C653.6,409,640.4,422.2,624.2,422.2z\\\"></path><path d=\\\"M793.2,422.2h-79.4c-16.2,0-29.4-13.2-29.4-29.4v-54.4c0-16.2,13.2-29.4,29.4-29.4h79.4c16.2,0,29.4,13.2,29.4,29.4v54.4C822.6,409,809.4,422.2,793.2,422.2z\\\"></path><path d=\\\"M305,573.6h-79.4c-16.2,0-29.4-13.2-29.4-29.4v-54.4c0-16.2,13.2-29.4,29.4-29.4H305c16.2,0,29.4,13.2,29.4,29.4v54.4C334.4,560.4,321.2,573.6,305,573.6z\\\"></path><path d=\\\"M461.5,573.6h-79.4c-16.2,0-29.4-13.2-29.4-29.4v-54.4c0-16.2,13.2-29.4,29.4-29.4h79.4c16.2,0,29.4,13.2,29.4,29.4v54.4C490.9,560.4,477.6,573.6,461.5,573.6z\\\"></path><path d=\\\"M617.9,573.6h-79.4c-16.2,0-29.4-13.2-29.4-29.4v-54.4c0-16.2,13.2-29.4,29.4-29.4h79.4c16.2,0,29.4,13.2,29.4,29.4v54.4C647.3,560.4,634.1,573.6,617.9,573.6z\\\"></path><path d=\\\"M774.4,573.6H695c-16.2,0-29.4-13.2-29.4-29.4v-54.4c0-16.2,13.2-29.4,29.4-29.4h79.4c16.2,0,29.4,13.2,29.4,29.4v54.4C803.8,560.4,790.6,573.6,774.4,573.6z\\\"></path><path d=\\\"M741.1,732.1H258.9c-16.2,0-29.4-13.2-29.4-29.4v-35.3c0-16.2,13.2-29.4,29.4-29.4h482.2c16.2,0,29.4,13.2,29.4,29.4v35.3C770.5,718.9,757.3,732.1,741.1,732.1z\\\"></path><path d=\\\"M500,39.4c62.2,0,122.5,12.2,179.3,36.2c54.8,23.2,104.1,56.4,146.4,98.7s75.5,91.6,98.7,146.4c24,56.8,36.2,117.1,36.2,179.3c0,62.2-12.2,122.5-36.2,179.3c-23.2,54.8-56.4,104.1-98.7,146.4s-91.6,75.5-146.4,98.7c-56.8,24-117.1,36.2-179.3,36.2c-62.2,0-122.5-12.2-179.3-36.2c-54.8-23.2-104.1-56.4-146.4-98.7s-75.5-91.6-98.7-146.4c-24-56.8-36.2-117.1-36.2-179.3c0-62.2,12.2-122.5,36.2-179.3c23.2-54.8,56.4-104.1,98.7-146.4s91.6-75.5,146.4-98.7C377.5,51.6,437.8,39.4,500,39.4 M500,10C229.4,10,10,229.4,10,500s219.4,490,490,490c270.6,0,490-219.4,490-490S770.6,10,500,10L500,10z\\\"></path></g></svg>\"","import { Injectable } from '@angular/core'\nimport { HotkeysService, ToolbarButtonProvider, IToolbarButton, ConfigService, AppService, BaseTabComponent, SplitTabComponent } from 'tabby-core'\nimport { BaseTerminalTabComponent } from 'tabby-terminal';\nimport { QuickCmds } from './api'\n\n@Injectable()\nexport class QuickCmdButtonProvider extends ToolbarButtonProvider {\n PLUGIN_NAME = \"Quick Cmd\"\n\n constructor (\n private hotkeys: HotkeysService,\n private config: ConfigService,\n private app: AppService,\n ) {\n super()\n\n this.config.ready$.toPromise().then(() => {\n this.reload_hotkey()\n })\n // Listen for hotkey matches\n this.hotkeys.hotkey$.subscribe(async (hotkey_id) => {\n await this.executeCommandByShortcut(hotkey_id)\n })\n }\n\n async executeCommandByShortcut(hotkey_id: string) {\n const commands = this.config.store.qc.cmds\n const matchedCommand = commands.find(cmd => cmd.id === hotkey_id)\n // console.log(\"[quick-cmd] hotkey_id:\", hotkey_id)\n // console.log(\"[quick-cmd] commands:\", commands)\n // console.log(\"[quick-cmd] match:\", matchedCommand)\n\n if (matchedCommand) {\n await this._send(this.app.activeTab, matchedCommand)\n }\n }\n\n async _send (tab: BaseTabComponent, quick_cmd: QuickCmds) {\n if (tab instanceof SplitTabComponent) {\n return this._send((tab as SplitTabComponent).getFocusedTab(), quick_cmd)\n }\n if (tab instanceof BaseTerminalTabComponent) {\n let cmd = quick_cmd.text\n\n if (cmd.startsWith('\\\\x')) {\n cmd = cmd.replace(/\\\\x([0-9a-f]{2})/ig, function(_, pair) { return String.fromCharCode(parseInt(pair, 16)) })\n }\n\n let currentTab = tab as BaseTerminalTabComponent<any>\n await currentTab.sendInput(cmd)\n return true\n }\n return false\n }\n\n reload_hotkey () {\n console.log(\"[Quick Cmd] reload hotkeys\")\n\n // Cleanup Quick Cmd hotkeys\n for (const key of Object.keys(this.config.store.hotkeys)) {\n if (key.startsWith(this.PLUGIN_NAME)) {\n delete this.config.store.hotkeys[key]\n }\n }\n // Add new Quick Cmd hotkeys\n let hotkey_id: string\n for (let cmd of this.config.store.qc.cmds) {\n hotkey_id = this.PLUGIN_NAME + \":\" + cmd.name\n this.config.store.hotkeys[hotkey_id] = [cmd.shortcut.replace(/\\+/g, '-')]\n cmd.id = hotkey_id\n }\n }\n\n provide (): IToolbarButton[] {\n return [{\n icon: require('./icons/keyboard.svg'),\n weight: 5,\n title: 'Quick commands',\n touchBarNSImage: 'NSTouchBarComposeTemplate',\n }]\n }\n}\n","import { Component, HostListener } from '@angular/core'\nimport { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap'\nimport { QuickCmds } from '../api'\nimport { getKeyName } from \"../hotkeys.util\"\nimport { altKeyName, metaKeyName, KeyEventData } from \"tabby-core\"\n\n@Component({\n template: require('./editCommandModal.component.pug'),\n})\nexport class EditCommandModalComponent {\n allGroups: string[] = []\n command: QuickCmds\n isCapturingShortcut: boolean = false\n\n constructor (\n private modalInstance: NgbActiveModal,\n ) {\n }\n\n @HostListener('document:keydown', ['$event'])\n onKeyDown(event: KeyboardEvent) {\n /*\n UI输入框监听设置快捷键\n */\n if (this.isCapturingShortcut) {\n event.preventDefault()\n event.stopPropagation()\n\n const eventData: KeyEventData = {\n ctrlKey: event.ctrlKey,\n metaKey: event.metaKey,\n altKey: event.altKey,\n shiftKey: event.shiftKey,\n code: event.code,\n key: event.key,\n eventName: \"keydown\",\n time: event.timeStamp,\n registrationTime: performance.now(),\n }\n const keyName = getKeyName(eventData)\n\n // Handle ESC key to cancel capture without changes\n if (keyName === 'Escape') {\n this.isCapturingShortcut = false\n return\n }\n\n // Handle Delete or Backspace to clear the shortcut\n if (keyName === 'Delete' || keyName === 'Backspace') {\n this.command.shortcut = ''\n this.isCapturingShortcut = false\n return\n }\n\n const modifiers: string[] = []\n\n if (eventData.ctrlKey) {\n modifiers.push('Ctrl')\n }\n if (eventData.metaKey) {\n modifiers.push(metaKeyName)\n }\n if (eventData.altKey) {\n modifiers.push(altKeyName)\n }\n if (eventData.shiftKey) {\n modifiers.push('Shift')\n }\n\n // Sort modifiers to ensure consistent ordering\n modifiers.sort()\n\n // Add modifiers to shortcut string\n let shortcut = ''\n if (modifiers.length > 0) {\n shortcut = modifiers.join('+') + '+'\n }\n\n // Only process if we have a valid main key (not just modifiers)\n // console.log(\"222 eventData.ctrlKey\", eventData.ctrlKey)\n // console.log(\"222 eventData.metaKey\", eventData.metaKey)\n // console.log(\"222 eventData.shiftKey\", eventData.shiftKey)\n // console.log(\"222 eventData.altKey\", eventData.altKey)\n // console.log(\"222 eventData.key\", eventData.key)\n // console.log(\"222 keyName\", keyName)\n // console.log(\"222 altKeyName\", altKeyName)\n if (!['Control', altKeyName, 'Shift', metaKeyName].includes(keyName)) {\n shortcut += keyName\n this.command.shortcut = shortcut\n this.isCapturingShortcut = false\n }\n }\n }\n\n startCaptureShortcut(event: Event) {\n event.preventDefault()\n this.isCapturingShortcut = true\n }\n\n save () {\n this.modalInstance.close(this.command)\n }\n\n cancel () {\n this.modalInstance.dismiss()\n }\n}\n","import { Component, Input, ViewChild, ElementRef } from '@angular/core'\nimport { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap'\n\n@Component({\n template: require('./promptModal.component.pug'),\n})\nexport class PromptModalComponent {\n @Input() value: string\n @Input() password: boolean\n @ViewChild('input') input: ElementRef\n\n constructor (\n private modalInstance: NgbActiveModal,\n ) { }\n\n ngOnInit () {\n this.input.nativeElement.focus()\n }\n\n ok () {\n this.modalInstance.close(this.value)\n }\n\n cancel () {\n this.modalInstance.close('')\n }\n}\n","import { Component, Inject } from '@angular/core'\nimport { NgbModal } from '@ng-bootstrap/ng-bootstrap'\nimport { ConfigService, ToolbarButtonProvider } from 'tabby-core'\nimport { QuickCmds, ICmdGroup } from '../api'\nimport { EditCommandModalComponent } from './editCommandModal.component'\nimport { PromptModalComponent } from './promptModal.component'\nimport { QuickCmdButtonProvider } from \"../button\";\n\n@Component({\n template: require('./quickCmdsSettingsTab.component.pug'),\n})\nexport class QuickCmdsSettingsTabComponent {\n quickCmd: string\n commands: QuickCmds[]\n childGroups: ICmdGroup[]\n groupCollapsed: {[id: string]: boolean} = {}\n\n constructor (\n public config: ConfigService,\n private ngbModal: NgbModal,\n @Inject(ToolbarButtonProvider)\n private buttonProviders: ToolbarButtonProvider[],\n ) {\n this.commands = this.config.store.qc.cmds\n this.refresh()\n }\n\n private get_button (): QuickCmdButtonProvider | undefined {\n return this.buttonProviders.find(p => p instanceof QuickCmdButtonProvider) as QuickCmdButtonProvider\n }\n\n createCommand () {\n let command: QuickCmds = {\n id: '',\n name: '',\n text: '',\n appendCR: false,\n }\n\n let modal = this.ngbModal.open(EditCommandModalComponent)\n modal.componentInstance.command = command\n modal.componentInstance.allGroups = Array.from(new Set(this.commands.map(x => x.group || ''))).filter(x => x)\n\n modal.result.then(result => {\n /*\n // 从UI新建 QuickCmds: name, shortcut, text, group\n export interface QuickCmds {\n name: string\n text: string\n appendCR: boolean\n group?: string\n shortcut?: string\n }\n */\n this.commands.push(result)\n this.config.store.qc.cmds = this.commands\n this.config.save()\n this.refresh()\n })\n }\n\n editCommand (command: QuickCmds) {\n let modal = this.ngbModal.open(EditCommandModalComponent)\n // Ensure command.group is an empty string if it's null or undefined\n modal.componentInstance.command = { ...command, group: command.group || 'Ungrouped' }\n modal.componentInstance.allGroups = Array.from(new Set(this.commands.map(x => x.group || ''))).filter(x => x)\n modal.result.then(result => {\n // If the group is 'Ungrouped', set it to null\n if (result.group === 'Ungrouped') {\n result.group = null\n }\n /*\n // 从UI修改 QuickCmds: name, shortcut, text, group\n export interface QuickCmds {\n name: string\n text: string\n appendCR: boolean\n group?: string\n shortcut?: string\n }\n */\n Object.assign(command, result)\n this.config.save()\n this.refresh()\n })\n }\n\n deleteCommand (command: QuickCmds) {\n if (confirm(`Delete \"${command.name}\"?`)) {\n this.commands = this.commands.filter(x => x !== command)\n this.config.store.qc.cmds = this.commands\n this.config.save()\n this.refresh()\n }\n }\n\n editGroup (group: ICmdGroup) {\n let modal = this.ngbModal.open(PromptModalComponent)\n modal.componentInstance.prompt = 'New group name'\n modal.componentInstance.value = group.name\n modal.result.then(result => {\n if (result) {\n for (let connection of this.commands.filter(x => x.group === group.name)) {\n connection.group = result\n }\n this.config.save()\n this.refresh()\n }\n })\n }\n\n deleteGroup (group: ICmdGroup) {\n if (confirm(`Delete \"${group}\"?`)) {\n for (let command of this.commands.filter(x => x.group === group.name)) {\n command.group = null\n }\n this.config.save()\n this.refresh()\n }\n }\n\n cancelFilter(){\n this.quickCmd=''\n this.refresh()\n }\n\n refresh () {\n this.childGroups = []\n\n let cmds = this.commands\n if (this.quickCmd) {\n cmds = cmds.filter(cmd => (cmd.name + cmd.group + cmd.text).toLowerCase().includes(this.quickCmd))\n }\n\n for (let cmd of cmds) {\n cmd.group = cmd.group || null\n let group = this.childGroups.find(x => x.name === cmd.group)\n if (!group) {\n group = {\n name: cmd.group,\n cmds: [],\n }\n this.childGroups.push(group)\n }\n group.cmds.push(cmd)\n }\n this.get_button()?.reload_hotkey()\n }\n\n}\n","import { ConfigProvider } from 'tabby-core'\nimport {QuickCmds} from \"./api\";\n\nexport class QuickCmdsConfigProvider extends ConfigProvider {\n defaults = {\n qc: {\n cmds: [] as QuickCmds[],\n },\n hotkeys: {},\n }\n\n platformDefaults = { }\n}\n","import { altKeyName, metaKeyName } from \"tabby-core\"\nexport { altKeyName, metaKeyName }\n\nexport interface KeyEventData {\n ctrlKey?: boolean\n metaKey?: boolean\n altKey?: boolean\n shiftKey?: boolean\n key: string\n code: string\n eventName: string\n time: number\n registrationTime: number\n}\n\nconst REGEX_LATIN_KEYNAME = /^[A-Za-z]$/\n\nexport type KeyName = string\nexport type Keystroke = string\n\nexport function getKeyName (event: KeyEventData): KeyName {\n // eslint-disable-next-line @typescript-eslint/init-declarations\n let key: string\n if (event.key === 'Control') {\n key = 'Ctrl'\n } else if (event.key === 'Meta') {\n key = metaKeyName\n } else if (event.key === 'Alt') {\n key = altKeyName\n } else if (event.key === 'Shift') {\n key = 'Shift'\n } else if (event.key === '`') {\n key = '`'\n } else if (event.key === '~') {\n key = '~'\n } else {\n key = event.code\n if (REGEX_LATIN_KEYNAME.test(event.key)) {\n // Handle Dvorak etc via the reported \"character\" instead of the scancode\n key = event.key.toUpperCase()\n } else {\n key = key.replace('Key', '')\n key = key.replace('Arrow', '')\n key = key.replace('Digit', '')\n key = {\n Comma: ',',\n Period: '.',\n Slash: '/',\n Backslash: '\\\\',\n IntlBackslash: '`',\n Minus: '-',\n Equal: '=',\n Semicolon: ';',\n Quote: '\\'',\n BracketLeft: '[',\n BracketRight: ']',\n }[key] ?? key\n }\n }\n return key\n}\n\nexport function getKeystrokeName (keys: KeyName[]): Keystroke {\n const strictOrdering: KeyName[] = ['Ctrl', metaKeyName, altKeyName, 'Shift']\n keys = [\n ...strictOrdering.map(x => keys.find(k => k === x)).filter(x => !!x) as KeyName[],\n ...keys.filter(k => !strictOrdering.includes(k)),\n ]\n return keys.join('-')\n}\n","import { NgModule } from '@angular/core'\nimport { CommonModule } from '@angular/common'\nimport { FormsModule } from '@angular/forms'\nimport { NgbModule } from '@ng-bootstrap/ng-bootstrap'\nimport { ToolbarButtonProvider, ConfigProvider } from 'tabby-core'\nimport TabbyCoreModule from 'tabby-core'\nimport { SettingsTabProvider } from 'tabby-settings'\n\nimport { EditCommandModalComponent } from './components/editCommandModal.component'\nimport { QuickCmdsSettingsTabComponent } from './components/quickCmdsSettingsTab.component'\nimport { PromptModalComponent } from './components/promptModal.component'\n\nimport { QuickCmdButtonProvider } from './button'\nimport { QuickCmdsConfigProvider } from './config'\nimport { QuickCmdsSettingsTabProvider } from './settings'\n\n@NgModule({\n imports: [\n NgbModule,\n CommonModule,\n FormsModule,\n TabbyCoreModule,\n ],\n providers: [\n { provide: ToolbarButtonProvider, useClass: QuickCmdButtonProvider, multi: true },\n { provide: ConfigProvider, useClass: QuickCmdsConfigProvider, multi: true },\n { provide: SettingsTabProvider, useClass: QuickCmdsSettingsTabProvider, multi: true },\n ],\n declarations: [\n PromptModalComponent,\n EditCommandModalComponent,\n QuickCmdsSettingsTabComponent,\n ],\n})\nexport default class QuickCmdsModule { }\n","import { Injectable } from '@angular/core'\nimport { SettingsTabProvider } from 'tabby-settings'\n\nimport { QuickCmdsSettingsTabComponent } from './components/quickCmdsSettingsTab.component'\n\n@Injectable()\nexport class QuickCmdsSettingsTabProvider extends SettingsTabProvider {\n id = 'qc'\n title = 'Quick Commands'\n\n getComponentType (): any {\n return QuickCmdsSettingsTabComponent\n }\n}\n","module.exports = require(\"fs\");","module.exports = __WEBPACK_EXTERNAL_MODULE__848__;","module.exports = __WEBPACK_EXTERNAL_MODULE__900__;","module.exports = __WEBPACK_EXTERNAL_MODULE__161__;","module.exports = __WEBPACK_EXTERNAL_MODULE__571__;","module.exports = __WEBPACK_EXTERNAL_MODULE__315__;","module.exports = __WEBPACK_EXTERNAL_MODULE__663__;","module.exports = __WEBPACK_EXTERNAL_MODULE__316__;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// startup\n// Load entry module and return exports\n// This entry module is referenced by other modules so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(607);\n"],"names":["root","factory","exports","module","require","define","amd","a","i","global","__WEBPACK_EXTERNAL_MODULE__848__","__WEBPACK_EXTERNAL_MODULE__900__","__WEBPACK_EXTERNAL_MODULE__161__","__WEBPACK_EXTERNAL_MODULE__571__","__WEBPACK_EXTERNAL_MODULE__315__","__WEBPACK_EXTERNAL_MODULE__663__","__WEBPACK_EXTERNAL_MODULE__316__","req","apply","locals","pug_html","locals_for_with","isCapturingShortcut","call","this","undefined","pug_has_own_property","Object","prototype","hasOwnProperty","pug_classes","val","escaping","Array","isArray","className","classString","padding","escapeEnabled","length","pug_escape","pug_classes_array","key","pug_classes_object","pug_style","out","style","pug_attr","escaped","terse","type","toJSON","JSON","stringify","indexOf","replace","merge","pug_merge","b","arguments","attrs","valA","concat","valB","classes","attr","obj","pug_match_html","_html","html","regexResult","exec","lastIndex","escape","result","index","charCodeAt","substring","rethrow","pug_rethrow","err","filename","lineno","str","Error","window","message","context","lines","start","end","encoding","split","Math","max","min","ex","slice","map","line","curr","join","path","e","QuickCmdButtonProvider","ToolbarButtonProvider","constructor","hotkeys","config","app","super","PLUGIN_NAME","ready$","toPromise","then","reload_hotkey","hotkey$","subscribe","hotkey_id","executeCommandByShortcut","matchedCommand","store","qc","cmds","find","cmd","id","_send","activeTab","tab","quick_cmd","SplitTabComponent","getFocusedTab","BaseTerminalTabComponent","text","startsWith","_","pair","String","fromCharCode","parseInt","currentTab","sendInput","console","log","keys","name","shortcut","provide","icon","weight","title","touchBarNSImage","Injectable","HotkeysService","ConfigService","AppService","EditCommandModalComponent","modalInstance","allGroups","onKeyDown","event","preventDefault","stopPropagation","eventData","ctrlKey","metaKey","altKey","shiftKey","code","eventName","time","timeStamp","registrationTime","performance","now","keyName","getKeyName","command","modifiers","push","metaKeyName","altKeyName","sort","includes","startCaptureShortcut","save","close","cancel","dismiss","HostListener","KeyboardEvent","Component","template","NgbActiveModal","PromptModalComponent","ngOnInit","input","nativeElement","focus","ok","value","Input","ViewChild","ElementRef","QuickCmdsSettingsTabComponent","ngbModal","buttonProviders","groupCollapsed","commands","refresh","get_button","p","createCommand","modal","open","componentInstance","appendCR","from","Set","x","group","filter","editCommand","assign","deleteCommand","confirm","editGroup","prompt","connection","deleteGroup","cancelFilter","quickCmd","childGroups","toLowerCase","Inject","NgbModal","QuickCmdsConfigProvider","ConfigProvider","defaults","platformDefaults","REGEX_LATIN_KEYNAME","test","toUpperCase","Comma","Period","Slash","Backslash","IntlBackslash","Minus","Equal","Semicolon","Quote","BracketLeft","BracketRight","strictOrdering","k","QuickCmdsModule","NgModule","imports","NgbModule","CommonModule","FormsModule","providers","useClass","multi","SettingsTabProvider","QuickCmdsSettingsTabProvider","declarations","getComponentType","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__"],"sourceRoot":""}
1
+ {"version":3,"file":"index.js","mappings":"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","sources":["webpack-terminus-quick-cmds:///webpack/universalModuleDefinition","webpack://@zeroleo12345/tabby-send-input/./src/components/editCommandModal.component.pug?27df","webpack://@zeroleo12345/tabby-send-input/./src/components/promptModal.component.pug?9184","webpack://@zeroleo12345/tabby-send-input/./src/components/quickCmdsSettingsTab.component.pug?4c61","webpack-terminus-quick-cmds:///./src/components/editCommandModal.component.pug","webpack-terminus-quick-cmds:///./src/components/promptModal.component.pug","webpack-terminus-quick-cmds:///./src/components/quickCmdsSettingsTab.component.pug","webpack-terminus-quick-cmds:///./node_modules/pug-runtime/index.js","webpack-terminus-quick-cmds:///./src/icons/keyboard.svg","webpack-terminus-quick-cmds:///./src/button.ts","webpack-terminus-quick-cmds:///./src/components/editCommandModal.component.ts","webpack-terminus-quick-cmds:///./src/components/promptModal.component.ts","webpack-terminus-quick-cmds:///./src/components/quickCmdsSettingsTab.component.ts","webpack-terminus-quick-cmds:///./src/config.ts","webpack-terminus-quick-cmds:///./src/hotkeys.util.ts","webpack-terminus-quick-cmds:///./src/index.ts","webpack-terminus-quick-cmds:///./src/settings.ts","webpack-terminus-quick-cmds:///external node-commonjs \"fs\"","webpack-terminus-quick-cmds:///external umd \"@angular/common\"","webpack-terminus-quick-cmds:///external umd \"@angular/core\"","webpack-terminus-quick-cmds:///external umd \"@angular/forms\"","webpack-terminus-quick-cmds:///external umd \"@ng-bootstrap/ng-bootstrap\"","webpack-terminus-quick-cmds:///external umd \"tabby-core\"","webpack-terminus-quick-cmds:///external umd \"tabby-settings\"","webpack-terminus-quick-cmds:///external umd \"tabby-terminal\"","webpack-terminus-quick-cmds:///webpack/bootstrap","webpack-terminus-quick-cmds:///webpack/startup"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"@angular/common\"), require(\"@angular/core\"), require(\"@angular/forms\"), require(\"@ng-bootstrap/ng-bootstrap\"), require(\"tabby-core\"), require(\"tabby-settings\"), require(\"tabby-terminal\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"@angular/common\", \"@angular/core\", \"@angular/forms\", \"@ng-bootstrap/ng-bootstrap\", \"tabby-core\", \"tabby-settings\", \"tabby-terminal\"], factory);\n\telse {\n\t\tvar a = typeof exports === 'object' ? factory(require(\"@angular/common\"), require(\"@angular/core\"), require(\"@angular/forms\"), require(\"@ng-bootstrap/ng-bootstrap\"), require(\"tabby-core\"), require(\"tabby-settings\"), require(\"tabby-terminal\")) : factory(root[\"@angular/common\"], root[\"@angular/core\"], root[\"@angular/forms\"], root[\"@ng-bootstrap/ng-bootstrap\"], root[\"tabby-core\"], root[\"tabby-settings\"], root[\"tabby-terminal\"]);\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(global, (__WEBPACK_EXTERNAL_MODULE__848__, __WEBPACK_EXTERNAL_MODULE__900__, __WEBPACK_EXTERNAL_MODULE__161__, __WEBPACK_EXTERNAL_MODULE__571__, __WEBPACK_EXTERNAL_MODULE__315__, __WEBPACK_EXTERNAL_MODULE__663__, __WEBPACK_EXTERNAL_MODULE__316__) => {\nreturn ","var req = require(\"!!/Users/zlx/github/tabby_project/terminus-quick-cmds/node_modules/pug-loader/index.js!/Users/zlx/github/tabby_project/terminus-quick-cmds/src/components/editCommandModal.component.pug\");\nmodule.exports = (req['default'] || req).apply(req, [])","var req = require(\"!!/Users/zlx/github/tabby_project/terminus-quick-cmds/node_modules/pug-loader/index.js!/Users/zlx/github/tabby_project/terminus-quick-cmds/src/components/promptModal.component.pug\");\nmodule.exports = (req['default'] || req).apply(req, [])","var req = require(\"!!/Users/zlx/github/tabby_project/terminus-quick-cmds/node_modules/pug-loader/index.js!/Users/zlx/github/tabby_project/terminus-quick-cmds/src/components/quickCmdsSettingsTab.component.pug\");\nmodule.exports = (req['default'] || req).apply(req, [])","var pug = require(\"!../../node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;\n var locals_for_with = (locals || {});\n \n (function (isCapturingShortcut) {\n pug_html = pug_html + \"\\u003Cdiv class=\\\"modal-body\\\"\\u003E\\u003Cdiv class=\\\"form-group\\\"\\u003E\\u003Clabel\\u003EName\\u003C\\u002Flabel\\u003E\\u003Cinput class=\\\"form-control\\\" type=\\\"text\\\" placeholder=\\\"Name\\\" autofocus [(ngModel)]=\\\"command.name\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"form-group\\\"\\u003E\\u003Clabel\\u003EText\\u003C\\u002Flabel\\u003E\\u003Ctextarea class=\\\"form-control\\\" rows=\\\"6\\\" style=\\\"white-space: pre-line\\\" placeholder=\\\"Text to be sent\\\" [(ngModel)]=\\\"command.text\\\"\\u003E\\u003C\\u002Ftextarea\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"form-group\\\"\\u003E\\u003Clabel\\u003EGroup\\u003C\\u002Flabel\\u003E\\u003Cselect class=\\\"form-control\\\" [(ngModel)]=\\\"command.group\\\"\\u003E\\u003Coption [value]=\\\"\\\"\\u003EUngrouped\\u003C\\u002Foption\\u003E\\u003Coption *ngFor=\\\"let group of allGroups\\\" [value]=\\\"group\\\"\\u003E{{ group }}\\u003C\\u002Foption\\u003E\\u003C\\u002Fselect\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"form-group\\\"\\u003E\\u003Clabel\\u003EShortcut\\u003C\\u002Flabel\\u003E\\u003Cdiv class=\\\"input-group\\\"\\u003E\\u003Cinput class=\\\"form-control\\\" type=\\\"text\\\" placeholder=\\\"Click to capture shortcut\\\" [(ngModel)]=\\\"command.shortcut\\\" (click)=\\\"startCaptureShortcut($event)\\\" (focus)=\\\"startCaptureShortcut($event)\\\" [disabled]=\\\"isCapturingShortcut\\\"\\u003E\\u003Cdiv class=\\\"input-group-append\\\"\\u003E\\u003Cbutton class=\\\"btn btn-outline-secondary\\\" type=\\\"button\\\" (click)=\\\"startCaptureShortcut($event)\\\" [class.btn-outline-primary]=\\\"isCapturingShortcut\\\"\\u003E\";\nif (isCapturingShortcut) {\npug_html = pug_html + \"Capturing...\";\n}\nelse {\npug_html = pug_html + \"Capture\";\n}\npug_html = pug_html + \"\\u003C\\u002Fbutton\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"form-line\\\"\\u003E\\u003Cdiv class=\\\"header\\\"\\u003E\\u003Cdiv class=\\\"title\\\"\\u003EAppend '\\\\n'\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"description\\\"\\u003EAutomatically append a '\\\\n' char to the end\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Ctoggle [(ngModel)]=\\\"command.appendCR\\\"\\u003E\\u003C\\u002Ftoggle\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"modal-footer\\\"\\u003E\\u003Cbutton class=\\\"btn btn-outline-primary\\\" (click)=\\\"save()\\\"\\u003ESave\\u003C\\u002Fbutton\\u003E\\u003Cbutton class=\\\"btn btn-outline-danger\\\" (click)=\\\"cancel()\\\"\\u003ECancel\\u003C\\u002Fbutton\\u003E\\u003C\\u002Fdiv\\u003E\";\n }.call(this, \"isCapturingShortcut\" in locals_for_with ?\n locals_for_with.isCapturingShortcut :\n typeof isCapturingShortcut !== 'undefined' ? isCapturingShortcut : undefined));\n ;;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;pug_html = pug_html + \"\\u003Cdiv class=\\\"modal-body\\\"\\u003E\\u003Cinput class=\\\"form-control\\\" [type]=\\\"password ? &quot;password&quot; : &quot;text&quot;\\\" autofocus [(ngModel)]=\\\"value\\\" #input [placeholder]=\\\"prompt\\\" (keyup.enter)=\\\"ok()\\\" (keyup.esc)=\\\"cancel()\\\"\\u003E\\u003C\\u002Fdiv\\u003E\";;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;pug_html = pug_html + \"\\u003Ch3\\u003EQuick Commands\\u003C\\u002Fh3\\u003E\\u003Cdiv class=\\\"form-group\\\"\\u003E\\u003Cbutton class=\\\"btn btn-outline-primary\\\" (click)=\\\"createCommand()\\\"\\u003E\\u003Cdiv class=\\\"fa fa-fw fa-globe\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cspan class=\\\"ml-2\\\"\\u003EAdd command\\u003C\\u002Fspan\\u003E\\u003C\\u002Fbutton\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"form-group\\\"\\u003E\\u003Cinput class=\\\"form-control quickCmd\\\" type=\\\"text\\\" [(ngModel)]=\\\"quickCmd\\\" autofocus placeholder=\\\"enter to filter\\\" (ngModelChange)=\\\"refresh()\\\" (keyup.esc)=\\\"cancelFilter()\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"list-group mt-3 mb-3\\\"\\u003E\\u003Cng-container *ngFor=\\\"let group of childGroups\\\"\\u003E \\u003Cdiv class=\\\"list-group-item list-group-item-action d-flex align-items-center\\\" (click)=\\\"groupCollapsed[group.name] = !groupCollapsed[group.name]\\\"\\u003E\\u003Cdiv class=\\\"fa fa-fw fa-chevron-right\\\" *ngIf=\\\"groupCollapsed[group.name]\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"fa fa-fw fa-chevron-down\\\" *ngIf=\\\"!groupCollapsed[group.name]\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cspan class=\\\"ml-3 mr-auto\\\"\\u003E{{group.name || \\\"Ungrouped\\\"}}\\u003C\\u002Fspan\\u003E\\u003Cbutton class=\\\"btn btn-outline-info ml-2\\\" (click)=\\\"editGroup(group)\\\"\\u003E\\u003Ci class=\\\"fa fa-pencil\\\"\\u003E\\u003C\\u002Fi\\u003E\\u003C\\u002Fbutton\\u003E\\u003Cbutton class=\\\"btn btn-outline-danger ml-1\\\" (click)=\\\"deleteGroup(group)\\\"\\u003E\\u003Ci class=\\\"fa fa-trash-can\\\"\\u003E \\u003C\\u002Fi\\u003E\\u003C\\u002Fbutton\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cng-container *ngIf=\\\"!groupCollapsed[group.name]\\\"\\u003E\\u003Cdiv class=\\\"list-group-item pl-5 d-flex align-items-center\\\" *ngFor=\\\"let cmd of group.cmds\\\"\\u003E \\u003Cdiv class=\\\"mr-auto\\\"\\u003E\\u003Cdiv\\u003E{{cmd.name}}\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"text-muted\\\"\\u003E{{cmd.text}} {{cmd.appendCR ? \\\"\\\\\\\\n\\\" : \\\"\\\"}}\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cbutton class=\\\"btn btn-outline-info ml-2\\\" (click)=\\\"editCommand(cmd)\\\"\\u003E\\u003Ci class=\\\"fa fa-pencil\\\"\\u003E\\u003C\\u002Fi\\u003E\\u003C\\u002Fbutton\\u003E\\u003Cbutton class=\\\"btn btn-outline-danger ml-1\\\" (click)=\\\"deleteCommand(cmd)\\\"\\u003E\\u003Ci class=\\\"fa fa-trash-can\\\"\\u003E \\u003C\\u002Fi\\u003E\\u003C\\u002Fbutton\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fng-container\\u003E\\u003C\\u002Fng-container\\u003E\\u003C\\u002Fdiv\\u003E\";;return pug_html;};\nmodule.exports = template;","'use strict';\n\nvar pug_has_own_property = Object.prototype.hasOwnProperty;\n\n/**\n * Merge two attribute objects giving precedence\n * to values in object `b`. Classes are special-cased\n * allowing for arrays and merging/joining appropriately\n * resulting in a string.\n *\n * @param {Object} a\n * @param {Object} b\n * @return {Object} a\n * @api private\n */\n\nexports.merge = pug_merge;\nfunction pug_merge(a, b) {\n if (arguments.length === 1) {\n var attrs = a[0];\n for (var i = 1; i < a.length; i++) {\n attrs = pug_merge(attrs, a[i]);\n }\n return attrs;\n }\n\n for (var key in b) {\n if (key === 'class') {\n var valA = a[key] || [];\n a[key] = (Array.isArray(valA) ? valA : [valA]).concat(b[key] || []);\n } else if (key === 'style') {\n var valA = pug_style(a[key]);\n valA = valA && valA[valA.length - 1] !== ';' ? valA + ';' : valA;\n var valB = pug_style(b[key]);\n valB = valB && valB[valB.length - 1] !== ';' ? valB + ';' : valB;\n a[key] = valA + valB;\n } else {\n a[key] = b[key];\n }\n }\n\n return a;\n}\n\n/**\n * Process array, object, or string as a string of classes delimited by a space.\n *\n * If `val` is an array, all members of it and its subarrays are counted as\n * classes. If `escaping` is an array, then whether or not the item in `val` is\n * escaped depends on the corresponding item in `escaping`. If `escaping` is\n * not an array, no escaping is done.\n *\n * If `val` is an object, all the keys whose value is truthy are counted as\n * classes. No escaping is done.\n *\n * If `val` is a string, it is counted as a class. No escaping is done.\n *\n * @param {(Array.<string>|Object.<string, boolean>|string)} val\n * @param {?Array.<string>} escaping\n * @return {String}\n */\nexports.classes = pug_classes;\nfunction pug_classes_array(val, escaping) {\n var classString = '',\n className,\n padding = '',\n escapeEnabled = Array.isArray(escaping);\n for (var i = 0; i < val.length; i++) {\n className = pug_classes(val[i]);\n if (!className) continue;\n escapeEnabled && escaping[i] && (className = pug_escape(className));\n classString = classString + padding + className;\n padding = ' ';\n }\n return classString;\n}\nfunction pug_classes_object(val) {\n var classString = '',\n padding = '';\n for (var key in val) {\n if (key && val[key] && pug_has_own_property.call(val, key)) {\n classString = classString + padding + key;\n padding = ' ';\n }\n }\n return classString;\n}\nfunction pug_classes(val, escaping) {\n if (Array.isArray(val)) {\n return pug_classes_array(val, escaping);\n } else if (val && typeof val === 'object') {\n return pug_classes_object(val);\n } else {\n return val || '';\n }\n}\n\n/**\n * Convert object or string to a string of CSS styles delimited by a semicolon.\n *\n * @param {(Object.<string, string>|string)} val\n * @return {String}\n */\n\nexports.style = pug_style;\nfunction pug_style(val) {\n if (!val) return '';\n if (typeof val === 'object') {\n var out = '';\n for (var style in val) {\n /* istanbul ignore else */\n if (pug_has_own_property.call(val, style)) {\n out = out + style + ':' + val[style] + ';';\n }\n }\n return out;\n } else {\n return val + '';\n }\n}\n\n/**\n * Render the given attribute.\n *\n * @param {String} key\n * @param {String} val\n * @param {Boolean} escaped\n * @param {Boolean} terse\n * @return {String}\n */\nexports.attr = pug_attr;\nfunction pug_attr(key, val, escaped, terse) {\n if (\n val === false ||\n val == null ||\n (!val && (key === 'class' || key === 'style'))\n ) {\n return '';\n }\n if (val === true) {\n return ' ' + (terse ? key : key + '=\"' + key + '\"');\n }\n var type = typeof val;\n if (\n (type === 'object' || type === 'function') &&\n typeof val.toJSON === 'function'\n ) {\n val = val.toJSON();\n }\n if (typeof val !== 'string') {\n val = JSON.stringify(val);\n if (!escaped && val.indexOf('\"') !== -1) {\n return ' ' + key + \"='\" + val.replace(/'/g, '&#39;') + \"'\";\n }\n }\n if (escaped) val = pug_escape(val);\n return ' ' + key + '=\"' + val + '\"';\n}\n\n/**\n * Render the given attributes object.\n *\n * @param {Object} obj\n * @param {Object} terse whether to use HTML5 terse boolean attributes\n * @return {String}\n */\nexports.attrs = pug_attrs;\nfunction pug_attrs(obj, terse) {\n var attrs = '';\n\n for (var key in obj) {\n if (pug_has_own_property.call(obj, key)) {\n var val = obj[key];\n\n if ('class' === key) {\n val = pug_classes(val);\n attrs = pug_attr(key, val, false, terse) + attrs;\n continue;\n }\n if ('style' === key) {\n val = pug_style(val);\n }\n attrs += pug_attr(key, val, false, terse);\n }\n }\n\n return attrs;\n}\n\n/**\n * Escape the given string of `html`.\n *\n * @param {String} html\n * @return {String}\n * @api private\n */\n\nvar pug_match_html = /[\"&<>]/;\nexports.escape = pug_escape;\nfunction pug_escape(_html) {\n var html = '' + _html;\n var regexResult = pug_match_html.exec(html);\n if (!regexResult) return _html;\n\n var result = '';\n var i, lastIndex, escape;\n for (i = regexResult.index, lastIndex = 0; i < html.length; i++) {\n switch (html.charCodeAt(i)) {\n case 34:\n escape = '&quot;';\n break;\n case 38:\n escape = '&amp;';\n break;\n case 60:\n escape = '&lt;';\n break;\n case 62:\n escape = '&gt;';\n break;\n default:\n continue;\n }\n if (lastIndex !== i) result += html.substring(lastIndex, i);\n lastIndex = i + 1;\n result += escape;\n }\n if (lastIndex !== i) return result + html.substring(lastIndex, i);\n else return result;\n}\n\n/**\n * Re-throw the given `err` in context to the\n * the pug in `filename` at the given `lineno`.\n *\n * @param {Error} err\n * @param {String} filename\n * @param {String} lineno\n * @param {String} str original source\n * @api private\n */\n\nexports.rethrow = pug_rethrow;\nfunction pug_rethrow(err, filename, lineno, str) {\n if (!(err instanceof Error)) throw err;\n if ((typeof window != 'undefined' || !filename) && !str) {\n err.message += ' on line ' + lineno;\n throw err;\n }\n var context, lines, start, end;\n try {\n str = str || require('fs').readFileSync(filename, {encoding: 'utf8'});\n context = 3;\n lines = str.split('\\n');\n start = Math.max(lineno - context, 0);\n end = Math.min(lines.length, lineno + context);\n } catch (ex) {\n err.message +=\n ' - could not read from ' + filename + ' (' + ex.message + ')';\n pug_rethrow(err, null, lineno);\n return;\n }\n\n // Error context\n context = lines\n .slice(start, end)\n .map(function(line, i) {\n var curr = i + start + 1;\n return (curr == lineno ? ' > ' : ' ') + curr + '| ' + line;\n })\n .join('\\n');\n\n // Alter exception message\n err.path = filename;\n try {\n err.message =\n (filename || 'Pug') +\n ':' +\n lineno +\n '\\n' +\n context +\n '\\n\\n' +\n err.message;\n } catch (e) {}\n throw err;\n}\n","module.exports = \"<svg version=\\\"1.1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\" x=\\\"0px\\\" y=\\\"0px\\\" viewBox=\\\"0 0 1000 1000\\\" enable-background=\\\"new 0 0 1000 1000\\\" xml:space=\\\"preserve\\\"><metadata> Svg Vector Icons : http://www.onlinewebfonts.com/icon </metadata><g><path d=\\\"M286.1,422.2h-79.4c-16.2,0-29.4-13.2-29.4-29.4v-54.4c0-16.2,13.2-29.4,29.4-29.4h79.4c16.2,0,29.4,13.2,29.4,29.4v54.4C315.5,409,302.3,422.2,286.1,422.2z\\\"></path><path d=\\\"M455.2,422.2h-79.4c-16.2,0-29.4-13.2-29.4-29.4v-54.4c0-16.2,13.2-29.4,29.4-29.4h79.4c16.2,0,29.4,13.2,29.4,29.4v54.4C484.6,409,471.3,422.2,455.2,422.2z\\\"></path><path d=\\\"M624.2,422.2h-79.4c-16.2,0-29.4-13.2-29.4-29.4v-54.4c0-16.2,13.2-29.4,29.4-29.4h79.4c16.2,0,29.4,13.2,29.4,29.4v54.4C653.6,409,640.4,422.2,624.2,422.2z\\\"></path><path d=\\\"M793.2,422.2h-79.4c-16.2,0-29.4-13.2-29.4-29.4v-54.4c0-16.2,13.2-29.4,29.4-29.4h79.4c16.2,0,29.4,13.2,29.4,29.4v54.4C822.6,409,809.4,422.2,793.2,422.2z\\\"></path><path d=\\\"M305,573.6h-79.4c-16.2,0-29.4-13.2-29.4-29.4v-54.4c0-16.2,13.2-29.4,29.4-29.4H305c16.2,0,29.4,13.2,29.4,29.4v54.4C334.4,560.4,321.2,573.6,305,573.6z\\\"></path><path d=\\\"M461.5,573.6h-79.4c-16.2,0-29.4-13.2-29.4-29.4v-54.4c0-16.2,13.2-29.4,29.4-29.4h79.4c16.2,0,29.4,13.2,29.4,29.4v54.4C490.9,560.4,477.6,573.6,461.5,573.6z\\\"></path><path d=\\\"M617.9,573.6h-79.4c-16.2,0-29.4-13.2-29.4-29.4v-54.4c0-16.2,13.2-29.4,29.4-29.4h79.4c16.2,0,29.4,13.2,29.4,29.4v54.4C647.3,560.4,634.1,573.6,617.9,573.6z\\\"></path><path d=\\\"M774.4,573.6H695c-16.2,0-29.4-13.2-29.4-29.4v-54.4c0-16.2,13.2-29.4,29.4-29.4h79.4c16.2,0,29.4,13.2,29.4,29.4v54.4C803.8,560.4,790.6,573.6,774.4,573.6z\\\"></path><path d=\\\"M741.1,732.1H258.9c-16.2,0-29.4-13.2-29.4-29.4v-35.3c0-16.2,13.2-29.4,29.4-29.4h482.2c16.2,0,29.4,13.2,29.4,29.4v35.3C770.5,718.9,757.3,732.1,741.1,732.1z\\\"></path><path d=\\\"M500,39.4c62.2,0,122.5,12.2,179.3,36.2c54.8,23.2,104.1,56.4,146.4,98.7s75.5,91.6,98.7,146.4c24,56.8,36.2,117.1,36.2,179.3c0,62.2-12.2,122.5-36.2,179.3c-23.2,54.8-56.4,104.1-98.7,146.4s-91.6,75.5-146.4,98.7c-56.8,24-117.1,36.2-179.3,36.2c-62.2,0-122.5-12.2-179.3-36.2c-54.8-23.2-104.1-56.4-146.4-98.7s-75.5-91.6-98.7-146.4c-24-56.8-36.2-117.1-36.2-179.3c0-62.2,12.2-122.5,36.2-179.3c23.2-54.8,56.4-104.1,98.7-146.4s91.6-75.5,146.4-98.7C377.5,51.6,437.8,39.4,500,39.4 M500,10C229.4,10,10,229.4,10,500s219.4,490,490,490c270.6,0,490-219.4,490-490S770.6,10,500,10L500,10z\\\"></path></g></svg>\"","import { Injectable } from '@angular/core'\nimport { HotkeysService, ToolbarButtonProvider, IToolbarButton, ConfigService, AppService, BaseTabComponent, SplitTabComponent } from 'tabby-core'\nimport { BaseTerminalTabComponent } from 'tabby-terminal';\nimport { QuickCmds } from './api'\n\n@Injectable()\nexport class QuickCmdButtonProvider extends ToolbarButtonProvider {\n PLUGIN_NAME = \"Quick Cmd\"\n\n constructor (\n private hotkeys: HotkeysService,\n private config: ConfigService,\n private app: AppService,\n ) {\n super()\n\n this.config.ready$.toPromise().then(() => {\n this.reload_hotkey()\n })\n this.config.changed$.subscribe(() => {\n this.reload_hotkey()\n })\n // Listen for hotkey matches\n this.hotkeys.hotkey$.subscribe(async (hotkey_id) => {\n await this.executeCommandByShortcut(hotkey_id)\n })\n }\n\n async executeCommandByShortcut(hotkey_id: string) {\n const commands = this.config.store.qc.cmds\n const matchedCommand = commands.find(cmd => cmd.id === hotkey_id)\n // console.log(\"[quick-cmd] hotkey_id:\", hotkey_id)\n // console.log(\"[quick-cmd] commands:\", commands)\n // console.log(\"[quick-cmd] match:\", matchedCommand)\n\n if (matchedCommand) {\n await this._send(this.app.activeTab, matchedCommand)\n }\n }\n\n async _send (tab: BaseTabComponent, quick_cmd: QuickCmds) {\n if (tab instanceof SplitTabComponent) {\n return this._send((tab as SplitTabComponent).getFocusedTab(), quick_cmd)\n }\n if (tab instanceof BaseTerminalTabComponent) {\n let cmd = quick_cmd.text\n\n if (cmd.startsWith('\\\\x')) {\n cmd = cmd.replace(/\\\\x([0-9a-f]{2})/ig, function(_, pair) { return String.fromCharCode(parseInt(pair, 16)) })\n }\n\n let currentTab = tab as BaseTerminalTabComponent<any>\n await currentTab.sendInput(cmd)\n return true\n }\n return false\n }\n\n reload_hotkey () {\n console.log(\"[Quick Cmd] reload hotkeys\")\n\n // Cleanup Quick Cmd hotkeys\n for (const key of Object.keys(this.config.store.hotkeys)) {\n if (key.startsWith(this.PLUGIN_NAME)) {\n delete this.config.store.hotkeys[key]\n }\n }\n // Add new Quick Cmd hotkeys\n let hotkey_id: string\n for (let cmd of this.config.store.qc.cmds) {\n hotkey_id = this.PLUGIN_NAME + \":\" + cmd.name\n this.config.store.hotkeys[hotkey_id] = [cmd.shortcut.replace(/\\+/g, '-')]\n cmd.id = hotkey_id\n }\n }\n\n provide (): IToolbarButton[] {\n return [{\n icon: require('./icons/keyboard.svg'),\n weight: 5,\n title: 'Quick commands',\n touchBarNSImage: 'NSTouchBarComposeTemplate',\n }]\n }\n}\n","import { Component, HostListener } from '@angular/core'\nimport { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap'\nimport { QuickCmds } from '../api'\nimport { getKeyName } from \"../hotkeys.util\"\nimport { altKeyName, metaKeyName, KeyEventData } from \"tabby-core\"\n\n@Component({\n template: require('./editCommandModal.component.pug'),\n})\nexport class EditCommandModalComponent {\n allGroups: string[] = []\n command: QuickCmds\n isCapturingShortcut: boolean = false\n\n constructor (\n private modalInstance: NgbActiveModal,\n ) {\n }\n\n @HostListener('document:keydown', ['$event'])\n onKeyDown(event: KeyboardEvent) {\n /*\n UI输入框监听设置快捷键\n */\n if (this.isCapturingShortcut) {\n event.preventDefault()\n event.stopPropagation()\n\n const eventData: KeyEventData = {\n ctrlKey: event.ctrlKey,\n metaKey: event.metaKey,\n altKey: event.altKey,\n shiftKey: event.shiftKey,\n code: event.code,\n key: event.key,\n eventName: \"keydown\",\n time: event.timeStamp,\n registrationTime: performance.now(),\n }\n const keyName = getKeyName(eventData)\n\n // Handle ESC key to cancel capture without changes\n if (keyName === 'Escape') {\n this.isCapturingShortcut = false\n return\n }\n\n // Handle Delete or Backspace to clear the shortcut\n if (keyName === 'Delete' || keyName === 'Backspace') {\n this.command.shortcut = ''\n this.isCapturingShortcut = false\n return\n }\n\n const modifiers: string[] = []\n\n if (eventData.ctrlKey) {\n modifiers.push('Ctrl')\n }\n if (eventData.metaKey) {\n modifiers.push(metaKeyName)\n }\n if (eventData.altKey) {\n modifiers.push(altKeyName)\n }\n if (eventData.shiftKey) {\n modifiers.push('Shift')\n }\n\n // Sort modifiers to ensure consistent ordering\n modifiers.sort()\n\n // Add modifiers to shortcut string\n let shortcut = ''\n if (modifiers.length > 0) {\n shortcut = modifiers.join('+') + '+'\n }\n\n // Only process if we have a valid main key (not just modifiers)\n // console.log(\"222 eventData.ctrlKey\", eventData.ctrlKey)\n // console.log(\"222 eventData.metaKey\", eventData.metaKey)\n // console.log(\"222 eventData.shiftKey\", eventData.shiftKey)\n // console.log(\"222 eventData.altKey\", eventData.altKey)\n // console.log(\"222 eventData.key\", eventData.key)\n // console.log(\"222 keyName\", keyName)\n // console.log(\"222 altKeyName\", altKeyName)\n if (!['Control', altKeyName, 'Shift', metaKeyName].includes(keyName)) {\n shortcut += keyName\n this.command.shortcut = shortcut\n this.isCapturingShortcut = false\n }\n }\n }\n\n startCaptureShortcut(event: Event) {\n event.preventDefault()\n this.isCapturingShortcut = true\n }\n\n save () {\n this.modalInstance.close(this.command)\n }\n\n cancel () {\n this.modalInstance.dismiss()\n }\n}\n","import { Component, Input, ViewChild, ElementRef } from '@angular/core'\nimport { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap'\n\n@Component({\n template: require('./promptModal.component.pug'),\n})\nexport class PromptModalComponent {\n @Input() value: string\n @Input() password: boolean\n @ViewChild('input') input: ElementRef\n\n constructor (\n private modalInstance: NgbActiveModal,\n ) { }\n\n ngOnInit () {\n this.input.nativeElement.focus()\n }\n\n ok () {\n this.modalInstance.close(this.value)\n }\n\n cancel () {\n this.modalInstance.close('')\n }\n}\n","import { Component, Inject } from '@angular/core'\nimport { NgbModal } from '@ng-bootstrap/ng-bootstrap'\nimport { ConfigService, ToolbarButtonProvider } from 'tabby-core'\nimport { QuickCmds, ICmdGroup } from '../api'\nimport { EditCommandModalComponent } from './editCommandModal.component'\nimport { PromptModalComponent } from './promptModal.component'\nimport { QuickCmdButtonProvider } from \"../button\";\n\n@Component({\n template: require('./quickCmdsSettingsTab.component.pug'),\n})\nexport class QuickCmdsSettingsTabComponent {\n quickCmd: string\n commands: QuickCmds[]\n childGroups: ICmdGroup[]\n groupCollapsed: {[id: string]: boolean} = {}\n\n constructor (\n public config: ConfigService,\n private ngbModal: NgbModal,\n @Inject(ToolbarButtonProvider)\n private buttonProviders: ToolbarButtonProvider[],\n ) {\n this.commands = this.config.store.qc.cmds\n this.refresh()\n }\n\n private get_button (): QuickCmdButtonProvider | undefined {\n return this.buttonProviders.find(p => p instanceof QuickCmdButtonProvider) as QuickCmdButtonProvider\n }\n\n createCommand () {\n let command: QuickCmds = {\n id: '',\n name: '',\n text: '',\n appendCR: false,\n }\n\n let modal = this.ngbModal.open(EditCommandModalComponent)\n modal.componentInstance.command = command\n modal.componentInstance.allGroups = Array.from(new Set(this.commands.map(x => x.group || ''))).filter(x => x)\n\n modal.result.then(result => {\n /*\n // 从UI新建 QuickCmds: name, shortcut, text, group\n export interface QuickCmds {\n name: string\n text: string\n appendCR: boolean\n group?: string\n shortcut?: string\n }\n */\n this.commands.push(result)\n this.config.store.qc.cmds = this.commands\n this.config.save()\n this.refresh()\n })\n }\n\n editCommand (command: QuickCmds) {\n let modal = this.ngbModal.open(EditCommandModalComponent)\n // Ensure command.group is an empty string if it's null or undefined\n modal.componentInstance.command = { ...command, group: command.group || 'Ungrouped' }\n modal.componentInstance.allGroups = Array.from(new Set(this.commands.map(x => x.group || ''))).filter(x => x)\n modal.result.then(result => {\n // If the group is 'Ungrouped', set it to null\n if (result.group === 'Ungrouped') {\n result.group = null\n }\n /*\n // 从UI修改 QuickCmds: name, shortcut, text, group\n export interface QuickCmds {\n name: string\n text: string\n appendCR: boolean\n group?: string\n shortcut?: string\n }\n */\n Object.assign(command, result)\n this.config.save()\n this.refresh()\n })\n }\n\n deleteCommand (command: QuickCmds) {\n if (confirm(`Delete \"${command.name}\"?`)) {\n this.commands = this.commands.filter(x => x !== command)\n this.config.store.qc.cmds = this.commands\n this.config.save()\n this.refresh()\n }\n }\n\n editGroup (group: ICmdGroup) {\n let modal = this.ngbModal.open(PromptModalComponent)\n modal.componentInstance.prompt = 'New group name'\n modal.componentInstance.value = group.name\n modal.result.then(result => {\n if (result) {\n for (let connection of this.commands.filter(x => x.group === group.name)) {\n connection.group = result\n }\n this.config.save()\n this.refresh()\n }\n })\n }\n\n deleteGroup (group: ICmdGroup) {\n if (confirm(`Delete \"${group}\"?`)) {\n for (let command of this.commands.filter(x => x.group === group.name)) {\n command.group = null\n }\n this.config.save()\n this.refresh()\n }\n }\n\n cancelFilter(){\n this.quickCmd=''\n this.refresh()\n }\n\n refresh () {\n this.childGroups = []\n\n let cmds = this.commands\n if (this.quickCmd) {\n cmds = cmds.filter(cmd => (cmd.name + cmd.group + cmd.text).toLowerCase().includes(this.quickCmd))\n }\n\n for (let cmd of cmds) {\n cmd.group = cmd.group || null\n let group = this.childGroups.find(x => x.name === cmd.group)\n if (!group) {\n group = {\n name: cmd.group,\n cmds: [],\n }\n this.childGroups.push(group)\n }\n group.cmds.push(cmd)\n }\n this.get_button()?.reload_hotkey()\n }\n\n}\n","import { ConfigProvider } from 'tabby-core'\nimport {QuickCmds} from \"./api\";\n\nexport class QuickCmdsConfigProvider extends ConfigProvider {\n defaults = {\n qc: {\n cmds: [] as QuickCmds[],\n },\n hotkeys: {},\n }\n\n platformDefaults = { }\n}\n","import { altKeyName, metaKeyName } from \"tabby-core\"\nexport { altKeyName, metaKeyName }\n\nexport interface KeyEventData {\n ctrlKey?: boolean\n metaKey?: boolean\n altKey?: boolean\n shiftKey?: boolean\n key: string\n code: string\n eventName: string\n time: number\n registrationTime: number\n}\n\nconst REGEX_LATIN_KEYNAME = /^[A-Za-z]$/\n\nexport type KeyName = string\nexport type Keystroke = string\n\nexport function getKeyName (event: KeyEventData): KeyName {\n // eslint-disable-next-line @typescript-eslint/init-declarations\n let key: string\n if (event.key === 'Control') {\n key = 'Ctrl'\n } else if (event.key === 'Meta') {\n key = metaKeyName\n } else if (event.key === 'Alt') {\n key = altKeyName\n } else if (event.key === 'Shift') {\n key = 'Shift'\n } else if (event.key === '`') {\n key = '`'\n } else if (event.key === '~') {\n key = '~'\n } else {\n key = event.code\n if (REGEX_LATIN_KEYNAME.test(event.key)) {\n // Handle Dvorak etc via the reported \"character\" instead of the scancode\n key = event.key.toUpperCase()\n } else {\n key = key.replace('Key', '')\n key = key.replace('Arrow', '')\n key = key.replace('Digit', '')\n key = {\n Comma: ',',\n Period: '.',\n Slash: '/',\n Backslash: '\\\\',\n IntlBackslash: '`',\n Minus: '-',\n Equal: '=',\n Semicolon: ';',\n Quote: '\\'',\n BracketLeft: '[',\n BracketRight: ']',\n }[key] ?? key\n }\n }\n return key\n}\n\nexport function getKeystrokeName (keys: KeyName[]): Keystroke {\n const strictOrdering: KeyName[] = ['Ctrl', metaKeyName, altKeyName, 'Shift']\n keys = [\n ...strictOrdering.map(x => keys.find(k => k === x)).filter(x => !!x) as KeyName[],\n ...keys.filter(k => !strictOrdering.includes(k)),\n ]\n return keys.join('-')\n}\n","import { NgModule } from '@angular/core'\nimport { CommonModule } from '@angular/common'\nimport { FormsModule } from '@angular/forms'\nimport { NgbModule } from '@ng-bootstrap/ng-bootstrap'\nimport { ToolbarButtonProvider, ConfigProvider } from 'tabby-core'\nimport TabbyCoreModule from 'tabby-core'\nimport { SettingsTabProvider } from 'tabby-settings'\n\nimport { EditCommandModalComponent } from './components/editCommandModal.component'\nimport { QuickCmdsSettingsTabComponent } from './components/quickCmdsSettingsTab.component'\nimport { PromptModalComponent } from './components/promptModal.component'\n\nimport { QuickCmdButtonProvider } from './button'\nimport { QuickCmdsConfigProvider } from './config'\nimport { QuickCmdsSettingsTabProvider } from './settings'\n\n@NgModule({\n imports: [\n NgbModule,\n CommonModule,\n FormsModule,\n TabbyCoreModule,\n ],\n providers: [\n { provide: ToolbarButtonProvider, useClass: QuickCmdButtonProvider, multi: true },\n { provide: ConfigProvider, useClass: QuickCmdsConfigProvider, multi: true },\n { provide: SettingsTabProvider, useClass: QuickCmdsSettingsTabProvider, multi: true },\n ],\n declarations: [\n PromptModalComponent,\n EditCommandModalComponent,\n QuickCmdsSettingsTabComponent,\n ],\n})\nexport default class QuickCmdsModule { }\n","import { Injectable } from '@angular/core'\nimport { SettingsTabProvider } from 'tabby-settings'\n\nimport { QuickCmdsSettingsTabComponent } from './components/quickCmdsSettingsTab.component'\n\n@Injectable()\nexport class QuickCmdsSettingsTabProvider extends SettingsTabProvider {\n id = 'qc'\n title = 'Quick Commands'\n\n getComponentType (): any {\n return QuickCmdsSettingsTabComponent\n }\n}\n","module.exports = require(\"fs\");","module.exports = __WEBPACK_EXTERNAL_MODULE__848__;","module.exports = __WEBPACK_EXTERNAL_MODULE__900__;","module.exports = __WEBPACK_EXTERNAL_MODULE__161__;","module.exports = __WEBPACK_EXTERNAL_MODULE__571__;","module.exports = __WEBPACK_EXTERNAL_MODULE__315__;","module.exports = __WEBPACK_EXTERNAL_MODULE__663__;","module.exports = __WEBPACK_EXTERNAL_MODULE__316__;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// startup\n// Load entry module and return exports\n// This entry module is referenced by other modules so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(607);\n"],"names":["root","factory","exports","module","require","define","amd","a","i","global","__WEBPACK_EXTERNAL_MODULE__848__","__WEBPACK_EXTERNAL_MODULE__900__","__WEBPACK_EXTERNAL_MODULE__161__","__WEBPACK_EXTERNAL_MODULE__571__","__WEBPACK_EXTERNAL_MODULE__315__","__WEBPACK_EXTERNAL_MODULE__663__","__WEBPACK_EXTERNAL_MODULE__316__","req","apply","locals","pug_html","locals_for_with","isCapturingShortcut","call","this","undefined","pug_has_own_property","Object","prototype","hasOwnProperty","pug_classes","val","escaping","Array","isArray","className","classString","padding","escapeEnabled","length","pug_escape","pug_classes_array","key","pug_classes_object","pug_style","out","style","pug_attr","escaped","terse","type","toJSON","JSON","stringify","indexOf","replace","merge","pug_merge","b","arguments","attrs","valA","concat","valB","classes","attr","obj","pug_match_html","_html","html","regexResult","exec","lastIndex","escape","result","index","charCodeAt","substring","rethrow","pug_rethrow","err","filename","lineno","str","Error","window","message","context","lines","start","end","encoding","split","Math","max","min","ex","slice","map","line","curr","join","path","e","QuickCmdButtonProvider","ToolbarButtonProvider","constructor","hotkeys","config","app","super","PLUGIN_NAME","ready$","toPromise","then","reload_hotkey","changed$","subscribe","hotkey$","hotkey_id","executeCommandByShortcut","matchedCommand","store","qc","cmds","find","cmd","id","_send","activeTab","tab","quick_cmd","SplitTabComponent","getFocusedTab","BaseTerminalTabComponent","text","startsWith","_","pair","String","fromCharCode","parseInt","currentTab","sendInput","console","log","keys","name","shortcut","provide","icon","weight","title","touchBarNSImage","Injectable","HotkeysService","ConfigService","AppService","EditCommandModalComponent","modalInstance","allGroups","onKeyDown","event","preventDefault","stopPropagation","eventData","ctrlKey","metaKey","altKey","shiftKey","code","eventName","time","timeStamp","registrationTime","performance","now","keyName","getKeyName","command","modifiers","push","metaKeyName","altKeyName","sort","includes","startCaptureShortcut","save","close","cancel","dismiss","HostListener","KeyboardEvent","Component","template","NgbActiveModal","PromptModalComponent","ngOnInit","input","nativeElement","focus","ok","value","Input","ViewChild","ElementRef","QuickCmdsSettingsTabComponent","ngbModal","buttonProviders","groupCollapsed","commands","refresh","get_button","p","createCommand","modal","open","componentInstance","appendCR","from","Set","x","group","filter","editCommand","assign","deleteCommand","confirm","editGroup","prompt","connection","deleteGroup","cancelFilter","quickCmd","childGroups","toLowerCase","Inject","NgbModal","QuickCmdsConfigProvider","ConfigProvider","defaults","platformDefaults","REGEX_LATIN_KEYNAME","test","toUpperCase","Comma","Period","Slash","Backslash","IntlBackslash","Minus","Equal","Semicolon","Quote","BracketLeft","BracketRight","strictOrdering","k","QuickCmdsModule","NgModule","imports","NgbModule","CommonModule","FormsModule","providers","useClass","multi","SettingsTabProvider","QuickCmdsSettingsTabProvider","declarations","getComponentType","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__"],"sourceRoot":""}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zeroleo12345/tabby-send-input",
3
- "version": "0.0.5",
3
+ "version": "0.0.6",
4
4
  "description": "hotkey plugin for Tabby",
5
5
  "keywords": [
6
6
  "tabby-plugin",