!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@angular/common"),require("@angular/core"),require("rxjs"),require("@angular/forms")):"function"==typeof define&&define.amd?define(["exports","@angular/common","@angular/core","rxjs","@angular/forms"],t):t((e.td=e.td||{},e.td.editor={}),e.ng.common,e.ng.core,e.Rxjs,e.ng.forms)}(this,function(e,o,i,r,d){"use strict";var t,n,c,a=new i.InjectionToken("NGX_MONACO_EDITOR_CONFIG"),s=window&&window.__decorate||function(e,t,o,n){var i,r=arguments.length,d=r<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,o):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)d=Reflect.decorate(e,t,o,n);else for(var c=e.length-1;0<=c;c--)(i=e[c])&&(d=(r<3?i(d):3<r?i(t,o,d):i(t,o))||d);return 3<r&&d&&Object.defineProperty(t,o,d),d},u=window&&window.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)},f=!1,l=function(){function e(e){this.config=e,this.onInit=new i.EventEmitter}return Object.defineProperty(e.prototype,"options",{get:function(){return this._options},set:function(e){this._options=Object.assign({},this.config.defaultOptions,e),this._editor&&(this._editor.dispose(),this.initMonaco(e))},enumerable:!0,configurable:!0}),e.prototype.ngAfterViewInit=function(){var i=this;f?t.then(function(){i.initMonaco(i.options)}):(f=!0,t=new Promise(function(e){var t=i.config.baseUrl||"/assets";if("object"!=typeof window.monaco){var o=function(){window.require.config({paths:{vs:t+"/monaco/vs"}}),window.require(["vs/editor/editor.main"],function(){"function"==typeof i.config.onMonacoLoad&&i.config.onMonacoLoad(),i.initMonaco(i.options),e()})};if(window.require)o();else{var n=document.createElement("script");n.type="text/javascript",n.src=t+"/monaco/vs/loader.js",n.addEventListener("load",o),document.body.appendChild(n)}}else e()}))},e.prototype.ngOnDestroy=function(){this._windowResizeSubscription&&this._windowResizeSubscription.unsubscribe(),this._editor&&(this._editor.dispose(),this._editor=void 0)},s([i.ViewChild("editorContainer"),u("design:type",i.ElementRef)],e.prototype,"_editorContainer",void 0),s([i.Output(),u("design:type",Object)],e.prototype,"onInit",void 0),s([i.Input("options"),u("design:type",Object),u("design:paramtypes",[Object])],e.prototype,"options",null),e}(),p=window&&window.__extends||(n=function(e,t){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var o in t)t.hasOwnProperty(o)&&(e[o]=t[o])})(e,t)},function(e,t){function o(){this.constructor=e}n(e,t),e.prototype=null===t?Object.create(t):(o.prototype=t.prototype,new o)}),h=window&&window.__decorate||function(e,t,o,n){var i,r=arguments.length,d=r<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,o):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)d=Reflect.decorate(e,t,o,n);else for(var c=e.length-1;0<=c;c--)(i=e[c])&&(d=(r<3?i(d):3<r?i(t,o,d):i(t,o))||d);return 3<r&&d&&Object.defineProperty(t,o,d),d},_=window&&window.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)},g=window&&window.__param||function(o,n){return function(e,t){n(e,t,o)}},w=function(o){function e(e){var t=o.call(this,e)||this;return t.editorConfig=e,t}return p(e,o),Object.defineProperty(e.prototype,"originalModel",{set:function(e){this._originalModel=e,this._editor&&(this._editor.dispose(),this.initMonaco(this.options))},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"modifiedModel",{set:function(e){this._modifiedModel=e,this._editor&&(this._editor.dispose(),this.initMonaco(this.options))},enumerable:!0,configurable:!0}),e.prototype.initMonaco=function(e){var t=this;if(!this._originalModel||!this._modifiedModel)throw new Error("originalModel or modifiedModel not found for ngx-monaco-diff-editor");this._originalModel.language=this._originalModel.language||e.language,this._modifiedModel.language=this._modifiedModel.language||e.language;var o=monaco.editor.createModel(this._originalModel.code,this._originalModel.language),n=monaco.editor.createModel(this._modifiedModel.code,this._modifiedModel.language);this._editorContainer.nativeElement.innerHTML="",this._editor=monaco.editor.createDiffEditor(this._editorContainer.nativeElement,e),this._editor.setModel({original:o,modified:n}),this._windowResizeSubscription&&this._windowResizeSubscription.unsubscribe(),this._windowResizeSubscription=r.fromEvent(window,"resize").subscribe(function(){return t._editor.layout()}),this.onInit.emit(this._editor)},h([i.Input("originalModel"),_("design:type",Object),_("design:paramtypes",[Object])],e.prototype,"originalModel",null),h([i.Input("modifiedModel"),_("design:type",Object),_("design:paramtypes",[Object])],e.prototype,"modifiedModel",null),e=h([i.Component({selector:"ngx-monaco-diff-editor",template:'<div class="editor-container" #editorContainer></div>',styles:["\n    :host {\n      display: block;\n      height: 200px;\n    }\n\n    .editor-container {\n      width: 100%;\n      height: 98%;\n    }\n  "]}),g(0,i.Inject(a)),_("design:paramtypes",[Object])],e)}(l),m=window&&window.__extends||(c=function(e,t){return(c=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var o in t)t.hasOwnProperty(o)&&(e[o]=t[o])})(e,t)},function(e,t){function o(){this.constructor=e}c(e,t),e.prototype=null===t?Object.create(t):(o.prototype=t.prototype,new o)}),y=window&&window.__decorate||function(e,t,o,n){var i,r=arguments.length,d=r<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,o):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)d=Reflect.decorate(e,t,o,n);else for(var c=e.length-1;0<=c;c--)(i=e[c])&&(d=(r<3?i(d):3<r?i(t,o,d):i(t,o))||d);return 3<r&&d&&Object.defineProperty(t,o,d),d},b=window&&window.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)},v=window&&window.__param||function(o,n){return function(e,t){n(e,t,o)}},O=function(n){function e(e,t){var o=n.call(this,t)||this;return o.zone=e,o.editorConfig=t,o._value="",o.propagateChange=function(e){},o.onTouched=function(){},o}var t;return m(e,n),t=e,Object.defineProperty(e.prototype,"model",{set:function(e){this.options.model=e,this._editor&&(this._editor.dispose(),this.initMonaco(this.options))},enumerable:!0,configurable:!0}),e.prototype.writeValue=function(e){var t=this;this._value=e||"",setTimeout(function(){t._editor&&!t.options.model&&t._editor.setValue(t._value)})},e.prototype.registerOnChange=function(e){this.propagateChange=e},e.prototype.registerOnTouched=function(e){this.onTouched=e},e.prototype.initMonaco=function(e){var o=this,t=!!e.model;t&&(e.model=monaco.editor.createModel(e.model.value,e.model.language,e.model.uri)),this._editor=monaco.editor.create(this._editorContainer.nativeElement,e),t||this._editor.setValue(this._value),this._editor.onDidChangeModelContent(function(e){var t=o._editor.getValue();o.propagateChange(t),o.zone.run(function(){return o._value=t})}),this._editor.onDidBlurEditorWidget(function(e){o.onTouched()}),this._windowResizeSubscription&&this._windowResizeSubscription.unsubscribe(),this._windowResizeSubscription=r.fromEvent(window,"resize").subscribe(function(){return o._editor.layout()}),this.onInit.emit(this._editor)},y([i.Input("model"),b("design:type",Object),b("design:paramtypes",[Object])],e.prototype,"model",null),e=t=y([i.Component({selector:"ngx-monaco-editor",template:'<div class="editor-container" #editorContainer></div>',styles:["\n    :host {\n      display: block;\n      height: 200px;\n    }\n\n    .editor-container {\n      width: 100%;\n      height: 98%;\n    }\n  "],providers:[{provide:d.NG_VALUE_ACCESSOR,useExisting:i.forwardRef(function(){return t}),multi:!0}]}),v(1,i.Inject(a)),b("design:paramtypes",[i.NgZone,Object])],e)}(l),j=window&&window.__decorate||function(e,t,o,n){var i,r=arguments.length,d=r<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,o):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)d=Reflect.decorate(e,t,o,n);else for(var c=e.length-1;0<=c;c--)(i=e[c])&&(d=(r<3?i(d):3<r?i(t,o,d):i(t,o))||d);return 3<r&&d&&Object.defineProperty(t,o,d),d},M=function(){function e(){}var t;return(t=e).forRoot=function(e){return void 0===e&&(e={}),{ngModule:t,providers:[{provide:a,useValue:e}]}},e=t=j([i.NgModule({imports:[o.CommonModule],declarations:[O,w],exports:[O,w]})],e)}();e.MonacoEditorModule=M,e.NGX_MONACO_EDITOR_CONFIG=a,Object.defineProperty(e,"__esModule",{value:!0})});