UNPKG

ng-zorro-antd

Version:

An enterprise-class UI components based on Ant Design and Angular

231 lines 16.5 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import * as tslib_1 from "tslib"; /** * @license * Copyright Alibaba.com All Rights Reserved. * * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE */ import { DOCUMENT } from '@angular/common'; import { Inject, Injectable } from '@angular/core'; import { of as observableOf, BehaviorSubject, Subject } from 'rxjs'; import { map, tap } from 'rxjs/operators'; import { PREFIX } from 'ng-zorro-antd/core'; import { NzCodeEditorLoadingStatus, NZ_CODE_EDITOR_CONFIG } from './nz-code-editor.definitions'; import * as i0 from "@angular/core"; import * as i1 from "./nz-code-editor.definitions"; import * as i2 from "@angular/common"; // tslint:disable no-any /** * @param {?=} fn * @return {?} */ function tryTriggerFunc(fn) { return (/** * @param {...?} args * @return {?} */ function () { var args = []; for (var _i = 0; _i < arguments.length; _i++) { args[_i] = arguments[_i]; } if (fn) { fn.apply(void 0, tslib_1.__spread(args)); } }); } // tslint:enable no-any var NzCodeEditorService = /** @class */ (function () { function NzCodeEditorService(config, _document // tslint:disable-line no-any ) { this.config = config; this.firstEditorInitialized = false; this.loaded$ = new Subject(); this.loadingStatus = NzCodeEditorLoadingStatus.UNLOAD; this.option$ = new BehaviorSubject(this.option); this.document = _document; this.option = this.config.defaultEditorOption || {}; } // TODO: use config service later. // TODO: use config service later. /** * @param {?} option * @return {?} */ NzCodeEditorService.prototype.updateDefaultOption = // TODO: use config service later. /** * @param {?} option * @return {?} */ function (option) { this.option = tslib_1.__assign({}, this.option, option); this.option$.next(this.option); if (option.theme) { monaco.editor.setTheme(option.theme); } }; /** * @return {?} */ NzCodeEditorService.prototype.requestToInit = /** * @return {?} */ function () { var _this = this; if (this.loadingStatus === NzCodeEditorLoadingStatus.LOADED) { this.onInit(); return observableOf(this.getLatestOption()); } if (this.loadingStatus === NzCodeEditorLoadingStatus.UNLOAD) { this.loadMonacoScript(); } return this.loaded$.asObservable().pipe(tap((/** * @return {?} */ function () { return _this.onInit(); })), map((/** * @return {?} */ function () { return _this.getLatestOption(); }))); }; /** * @private * @return {?} */ NzCodeEditorService.prototype.loadMonacoScript = /** * @private * @return {?} */ function () { var _this = this; if (this.loadingStatus === NzCodeEditorLoadingStatus.LOADING) { return; } this.loadingStatus = NzCodeEditorLoadingStatus.LOADING; /** @type {?} */ var assetsRoot = this.config.assetsRoot; /** @type {?} */ var vs = assetsRoot ? assetsRoot + "/vs" : 'assets/vs'; /** @type {?} */ var windowAsAny = (/** @type {?} */ (window)); // tslint:disable-line no-any /** @type {?} */ var loadScript = this.document.createElement('script'); loadScript.type = 'text/javascript'; loadScript.src = vs + "/loader.js"; loadScript.onload = (/** * @return {?} */ function () { windowAsAny.require.config({ paths: { vs: vs } }); windowAsAny.require(['vs/editor/editor.main'], (/** * @return {?} */ function () { _this.loadingStatus = NzCodeEditorLoadingStatus.LOADED; _this.loaded$.next(true); _this.loaded$.complete(); _this.onLoad(); })); }); loadScript.onerror = (/** * @return {?} */ function () { throw new Error(PREFIX + " cannot load assets of monaco editor from source \"" + vs + "\"."); }); this.document.documentElement.appendChild(loadScript); }; /** * @private * @return {?} */ NzCodeEditorService.prototype.onInit = /** * @private * @return {?} */ function () { if (!this.firstEditorInitialized) { this.firstEditorInitialized = true; tryTriggerFunc(this.config.onFirstEditorInit)(); } tryTriggerFunc(this.config.onInit)(); }; /** * @private * @return {?} */ NzCodeEditorService.prototype.onLoad = /** * @private * @return {?} */ function () { tryTriggerFunc(this.config.onLoad)(); }; /** * @private * @return {?} */ NzCodeEditorService.prototype.getLatestOption = /** * @private * @return {?} */ function () { return tslib_1.__assign({}, this.option); }; NzCodeEditorService.decorators = [ { type: Injectable, args: [{ providedIn: 'root' },] } ]; /** @nocollapse */ NzCodeEditorService.ctorParameters = function () { return [ { type: undefined, decorators: [{ type: Inject, args: [NZ_CODE_EDITOR_CONFIG,] }] }, { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] } ]; }; /** @nocollapse */ NzCodeEditorService.ngInjectableDef = i0.ɵɵdefineInjectable({ factory: function NzCodeEditorService_Factory() { return new NzCodeEditorService(i0.ɵɵinject(i1.NZ_CODE_EDITOR_CONFIG), i0.ɵɵinject(i2.DOCUMENT)); }, token: NzCodeEditorService, providedIn: "root" }); return NzCodeEditorService; }()); export { NzCodeEditorService }; if (false) { /** * @type {?} * @private */ NzCodeEditorService.prototype.document; /** * @type {?} * @private */ NzCodeEditorService.prototype.firstEditorInitialized; /** * @type {?} * @private */ NzCodeEditorService.prototype.loaded$; /** * @type {?} * @private */ NzCodeEditorService.prototype.loadingStatus; /** * @type {?} * @private */ NzCodeEditorService.prototype.option; /** @type {?} */ NzCodeEditorService.prototype.option$; /** * @type {?} * @private */ NzCodeEditorService.prototype.config; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnotY29kZS1lZGl0b3Iuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25nLXpvcnJvLWFudGQvY29kZS1lZGl0b3IvIiwic291cmNlcyI6WyJuei1jb2RlLWVkaXRvci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQVFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsRUFBRSxJQUFJLFlBQVksRUFBRSxlQUFlLEVBQWMsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFMUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzVDLE9BQU8sRUFHTCx5QkFBeUIsRUFDekIscUJBQXFCLEVBQ3RCLE1BQU0sOEJBQThCLENBQUM7Ozs7Ozs7OztBQU10QyxTQUFTLGNBQWMsQ0FBQyxFQUE0QjtJQUNsRDs7OztJQUFPO1FBQUMsY0FBYzthQUFkLFVBQWMsRUFBZCxxQkFBYyxFQUFkLElBQWM7WUFBZCx5QkFBYzs7UUFDcEIsSUFBSSxFQUFFLEVBQUU7WUFDTixFQUFFLGdDQUFJLElBQUksR0FBRTtTQUNiO0lBQ0gsQ0FBQyxFQUFDO0FBQ0osQ0FBQzs7QUFHRDtJQVlFLDZCQUN5QyxNQUEwQixFQUMvQyxTQUFjLENBQUMsNkJBQTZCOztRQUR2QixXQUFNLEdBQU4sTUFBTSxDQUFvQjtRQVIzRCwyQkFBc0IsR0FBRyxLQUFLLENBQUM7UUFDL0IsWUFBTyxHQUFHLElBQUksT0FBTyxFQUFXLENBQUM7UUFDakMsa0JBQWEsR0FBRyx5QkFBeUIsQ0FBQyxNQUFNLENBQUM7UUFHekQsWUFBTyxHQUFHLElBQUksZUFBZSxDQUFxQixJQUFJLENBQUMsTUFBTSxDQUFDLENB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USxDQUFDLGVBQWUsQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDeEQsQ0FBQzs7Ozs7SUFFTyxvQ0FBTTs7OztJQUFkO1FBQ0UsSUFBSSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsRUFBRTtZQUNoQyxJQUFJLENBQUMsc0JBQXNCLEdBQUcsSUFBSSxDQUFDO1lBQ25DLGNBQWMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGlCQUFpQixDQUFDLEVBQUUsQ0FBQztTQUNqRDtRQUVELGNBQWMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7SUFDdkMsQ0FBQzs7Ozs7SUFFTyxvQ0FBTTs7OztJQUFkO1FBQ0UsY0FBYyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztJQUN2QyxDQUFDOzs7OztJQUVPLDZDQUFlOzs7O0lBQXZCO1FBQ0UsNEJBQVksSUFBSSxDQUFDLE1BQU0sRUFBRztJQUM1QixDQUFDOztnQkE3RkYsVUFBVSxTQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7OztnREFXSSxNQUFNLFNBQUMscUJBQXFCO2dEQUM1QixNQUFNLFNBQUMsUUFBUTs7OzhCQWhEcEI7Q0FnSUMsQUE5RkQsSUE4RkM7U0EzRlksbUJBQW1COzs7Ozs7SUFDOUIsdUNBQTJCOzs7OztJQUMzQixxREFBdUM7Ozs7O0lBQ3ZDLHNDQUF5Qzs7Ozs7SUFDekMsNENBQXlEOzs7OztJQUN6RCxxQ0FBbUM7O0lBRW5DLHNDQUErRDs7Ozs7SUFHN0QscUNBQWlFIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEFsaWJhYmEuY29tIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9naXRodWIuY29tL05HLVpPUlJPL25nLXpvcnJvLWFudGQvYmxvYi9tYXN0ZXIvTElDRU5TRVxuICovXG5cbmltcG9ydCB7IERPQ1VNRU5UIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgb2YgYXMgb2JzZXJ2YWJsZU9mLCBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBQUkVGSVggfSBmcm9tICduZy16b3Jyby1hbnRkL2NvcmUnO1xuaW1wb3J0IHtcbiAgSm9pbmVkRWRpdG9yT3B0aW9uLFxuICBOekNvZGVFZGl0b3JDb25maWcsXG4gIE56Q29kZUVkaXRvckxvYWRpbmdTdGF0dXMsXG4gIE5aX0NPREVfRURJVE9SX0NPTkZJR1xufSBmcm9tICcuL256LWNvZGUtZWRpdG9yLmRlZmluaXRpb25zJztcblxuLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lIG5vLWFueVxuZGVjbGFyZSBjb25zdCBtb25hY286IGFueTtcblxuLy8gdHNsaW50OmRpc2FibGUgbm8tYW55XG5mdW5jdGlvbiB0cnlUcmlnZ2VyRnVuYyhmbj86ICguLi5hcmdzOiBhbnlbXSkgPT4gYW55KTogKC4uLmFyZ3M6IGFueSkgPT4gdm9pZCB7XG4gIHJldHVybiAoLi4uYXJnczogYW55W10pID0+IHtcbiAgICBpZiAoZm4pIHtcbiAgICAgIGZuKC4uLmFyZ3MpO1xuICAgIH1cbiAgfTtcbn1cbi8vIHRzbGludDplbmFibGUgbm8tYW55XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIE56Q29kZUVkaXRvclNlcnZpY2Uge1xuICBwcml2YXRlIGRvY3VtZW50OiBEb2N1bWVudDtcbiAgcHJpdmF0ZSBmaXJzdEVkaXRvckluaXRpYWxpemVkID0gZmFsc2U7XG4gIHByaXZhdGUgbG9hZGVkJCA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XG4gIHByaXZhdGUgbG9hZGluZ1N0YXR1cyA9IE56Q29kZUVkaXRvckxvYWRpbmdTdGF0dXMuVU5MT0FEO1xuICBwcml2YXRlIG9wdGlvbjogSm9pbmVkRWRpdG9yT3B0aW9uO1xuXG4gIG9wdGlvbiQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEpvaW5lZEVkaXRvck9wdGlvbj4odGhpcy5vcHRpb24pO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBJbmplY3QoTlpfQ09ERV9FRElUT1JfQ09ORklHKSBwcml2YXRlIGNvbmZpZzogTnpDb2RlRWRpdG9yQ29uZmlnLFxuICAgIEBJbmplY3QoRE9DVU1FTlQpIF9kb2N1bWVudDogYW55IC8vIHRzbGludDpkaXNhYmxlLWxpbmUgbm8tYW55XG4gICkge1xuICAgIHRoaXMuZG9jdW1lbnQgPSBfZG9jdW1lbnQ7XG4gICAgdGhpcy5vcHRpb24gPSB0aGlzLmNvbmZpZy5kZWZhdWx0RWRpdG9yT3B0aW9uIHx8IHt9O1xuICB9XG5cbiAgLy8gVE9ETzogdXNlIGNvbmZpZyBzZXJ2aWNlIGxhdGVyLlxuICB1cGRhdGVEZWZhdWx0T3B0aW9uKG9wdGlvbjogSm9pbmVkRWRpdG9yT3B0aW9uKTogdm9pZCB7XG4gICAgdGhpcy5vcHRpb24gPSB7IC4uLnRoaXMub3B0aW9uLCAuLi5vcHRpb24gfTtcbiAgICB0aGlzLm9wdGlvbiQubmV4dCh0aGlzLm9wdGlvbik7XG5cbiAgICBpZiAob3B0aW9uLnRoZW1lKSB7XG4gICAgICBtb25hY28uZWRpdG9yLnNldFRoZW1lKG9wdGlvbi50aGVtZSk7XG4gICAgfVxuICB9XG5cbiAgcmVxdWVzdFRvSW5pdCgpOiBPYnNlcnZhYmxlPEpvaW5lZEVkaXRvck9wdGlvbj4ge1xuICAgIGlmICh0aGlzLmxvYWRpbmdTdGF0dXMgPT09IE56Q29kZUVkaXRvckxvYWRpbmdTdGF0dXMuTE9BREVEKSB7XG4gICAgICB0aGlzLm9uSW5pdCgpO1xuICAgICAgcmV0dXJuIG9ic2VydmFibGVPZih0aGlzLmdldExhdGVzdE9wdGlvbigpKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5sb2FkaW5nU3RhdHVzID09PSBOekNvZGVFZGl0b3JMb2FkaW5nU3RhdHVzLlVOTE9BRCkge1xuICAgICAgdGhpcy5sb2FkTW9uYWNvU2NyaXB0KCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMubG9hZGVkJC5hc09ic2VydmFibGUoKS5waXBlKFxuICAgICAgdGFwKCgpID0+IHRoaXMub25Jbml0KCkpLFxuICAgICAgbWFwKCgpID0+IHRoaXMuZ2V0TGF0ZXN0T3B0aW9uKCkpXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgbG9hZE1vbmFjb1NjcmlwdCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5sb2FkaW5nU3RhdHVzID09PSBOekNvZGVFZGl0b3JMb2FkaW5nU3RhdHVzLkxPQURJTkcpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmxvYWRpbmdTdGF0dXMgPSBOekNvZGVFZGl0b3JMb2FkaW5nU3RhdHVzLkxPQURJTkc7XG5cbiAgICBjb25zdCBhc3NldHNSb290ID0gdGhpcy5jb25maWcuYXNzZXRzUm9vdDtcbiAgICBjb25zdCB2cyA9IGFzc2V0c1Jvb3QgPyBgJHthc3NldHNSb290fS92c2AgOiAnYXNzZXRzL3ZzJztcbiAgICBjb25zdCB3aW5kb3dBc0FueSA9IHdpbmRvdyBhcyBhbnk7IC8vIHRzbGludDpkaXNhYmxlLWxpbmUgbm8tYW55XG4gICAgY29uc3QgbG9hZFNjcmlwdCA9IHRoaXMuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2NyaXB0Jyk7XG5cbiAgICBsb2FkU2NyaXB0LnR5cGUgPSAndGV4dC9qYXZhc2NyaXB0JztcbiAgICBsb2FkU2NyaXB0LnNyYyA9IGAke3ZzfS9sb2FkZXIuanNgO1xuICAgIGxvYWRTY3JpcHQub25sb2FkID0gKCkgPT4ge1xuICAgICAgd2luZG93QXNBbnkucmVxdWlyZS5jb25maWcoe1xuICAgICAgICBwYXRoczogeyB2cyB9XG4gICAgICB9KTtcbiAgICAgIHdpbmRvd0FzQW55LnJlcXVpcmUoWyd2cy9lZGl0b3IvZWRpdG9yLm1haW4nXSwgKCkgPT4ge1xuICAgICAgICB0aGlzLmxvYWRpbmdTdGF0dXMgPSBOekNvZGVFZGl0b3JMb2FkaW5nU3RhdHVzLkxPQURFRDtcbiAgICAgICAgdGhpcy5sb2FkZWQkLm5leHQodHJ1ZSk7XG4gICAgICAgIHRoaXMubG9hZGVkJC5jb21wbGV0ZSgpO1xuICAgICAgICB0aGlzLm9uTG9hZCgpO1xuICAgICAgfSk7XG4gICAgfTtcbiAgICBsb2FkU2NyaXB0Lm9uZXJyb3IgPSAoKSA9PiB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYCR7UFJFRklYfSBjYW5ub3QgbG9hZCBhc3NldHMgb2YgbW9uYWNvIGVkaXRvciBmcm9tIHNvdXJjZSBcIiR7dnN9XCIuYCk7XG4gICAgfTtcblxuICAgIHRoaXMuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmFwcGVuZENoaWxkKGxvYWRTY3JpcHQpO1xuICB9XG5cbiAgcHJpdmF0ZSBvbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmZpcnN0RWRpdG9ySW5pdGlhbGl6ZWQpIHtcbiAgICAgIHRoaXMuZmlyc3RFZGl0b3JJbml0aWFsaXplZCA9IHRydWU7XG4gICAgICB0cnlUcmlnZ2VyRnVuYyh0aGlzLmNvbmZpZy5vbkZpcnN0RWRpdG9ySW5pdCkoKTtcbiAgICB9XG5cbiAgICB0cnlUcmlnZ2VyRnVuYyh0aGlzLmNvbmZpZy5vbkluaXQpKCk7XG4gIH1cblxuICBwcml2YXRlIG9uTG9hZCgpOiB2b2lkIHtcbiAgICB0cnlUcmlnZ2VyRnVuYyh0aGlzLmNvbmZpZy5vbkxvYWQpKCk7XG4gIH1cblxuICBwcml2YXRlIGdldExhdGVzdE9wdGlvbigpOiBKb2luZWRFZGl0b3JPcHRpb24ge1xuICAgIHJldHVybiB7IC4uLnRoaXMub3B0aW9uIH07XG4gIH1cbn1cbiJdfQ==