UNPKG

@microsoft/mgt

Version:
99 lines 3.59 kB
/** * ------------------------------------------------------------------------------------------- * Copyright (c) Microsoft Corporation. All Rights Reserved. Licensed under the MIT License. * See License in the project root for license information. * ------------------------------------------------------------------------------------------- */ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; }; import { property } from 'lit-element'; import { MgtBaseComponent } from '../baseComponent'; /** * Abstract implementation for provider component * * @export * @abstract * @class MgtBaseProvider * @extends {MgtBaseComponent} */ export class MgtBaseProvider extends MgtBaseComponent { /** * The IProvider created by this component * * @memberof MgtBaseProvider */ get provider() { return this._provider; } set provider(value) { if (this._provider) { this.provider.removeStateChangedHandler(() => this.stateChangedHandler); } this._provider = value; if (this._provider) { this.provider.onStateChanged(() => this.stateChangedHandler); } } /** * Gets weather this provider can be used in this environment * * @readonly * @type {boolean} * @memberof MgtBaseProvider */ get isAvailable() { return true; } /** * Invoked when the element is first updated. Implement to perform one time * work on the element after update. * * Setting properties inside this method will trigger the element to update * again after this update cycle completes. * * * @param _changedProperties Map of changed properties with old values */ firstUpdated(changedProperties) { super.firstUpdated(changedProperties); let higherPriority = false; if (this.dependsOn) { let higherPriorityProvider = this.dependsOn; while (higherPriorityProvider) { if (higherPriorityProvider.isAvailable) { higherPriority = true; break; } higherPriorityProvider = higherPriorityProvider.dependsOn; } } if (!higherPriority && this.isAvailable) { this.initializeProvider(); } } /** * method called to initialize the provider. Each derived class should provide * their own implementation * * @protected * @memberof MgtBaseProvider */ // tslint:disable-next-line: no-empty initializeProvider() { } stateChangedHandler() { this.fireCustomEvent('onStateChanged', this.provider.state); } } __decorate([ property({ attribute: 'depends-on', converter: newValue => { return document.querySelector(newValue); }, type: String }) ], MgtBaseProvider.prototype, "dependsOn", void 0); //# sourceMappingURL=baseProvider.js.map