theme-lib
Version:
This is a simple example Angular Library published to npm.
109 lines (107 loc) • 8.34 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
/*
* @license
* Copyright Akveo. All Rights Reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*/
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input } from '@angular/core';
import { DomSanitizer } from '@angular/platform-browser';
/*
* Chat message component.
*
* @styles
*
*/
export class NbChatMessageFileComponent {
/**
* @param {?} cd
* @param {?} domSanitizer
*/
constructor(cd, domSanitizer) {
this.cd = cd;
this.domSanitizer = domSanitizer;
}
/*
* Message file path
* @type {Date}
*/
/**
* @param {?} files
* @return {?}
*/
set files(files) {
this.readyFiles = (files || []).map((file) => {
/** @type {?} */
const isImage = this.isImage(file);
return Object.assign({}, file, { urlStyle: isImage && this.domSanitizer.bypassSecurityTrustStyle(`url(${file.url})`), isImage: isImage });
});
this.cd.detectChanges();
}
/**
* @param {?} file
* @return {?}
*/
isImage(file) {
return ['image/png', 'image/jpeg', 'image/gif'].includes(file.type);
}
}
NbChatMessageFileComponent.decorators = [
{ type: Component, args: [{
selector: 'nb-chat-message-file',
template: `
<nb-chat-message-text [sender]="sender" [date]="date" [message]="message">
{{ message }}
</nb-chat-message-text>
<ng-container *ngIf="readyFiles?.length > 1">
<div class="message-content-group">
<a *ngFor="let file of readyFiles" [href]="file.url" target="_blank">
<span [class]="file.icon" *ngIf="!file.urlStyle"></span>
<div *ngIf="file.isImage" [style.background-image]="file.urlStyle"></div>
</a>
</div>
</ng-container>
<ng-container *ngIf="readyFiles?.length === 1">
<a [href]="readyFiles[0].url" target="_blank">
<span [class]="readyFiles[0].icon" *ngIf="!readyFiles[0].urlStyle"></span>
<div *ngIf="readyFiles[0].isImage" [style.background-image]="readyFiles[0].urlStyle"></div>
</a>
</ng-container>
`,
changeDetection: ChangeDetectionStrategy.OnPush
}] }
];
/** @nocollapse */
NbChatMessageFileComponent.ctorParameters = () => [
{ type: ChangeDetectorRef },
{ type: DomSanitizer }
];
NbChatMessageFileComponent.propDecorators = {
message: [{ type: Input }],
sender: [{ type: Input }],
date: [{ type: Input }],
files: [{ type: Input }]
};
if (false) {
/** @type {?} */
NbChatMessageFileComponent.prototype.readyFiles;
/** @type {?} */
NbChatMessageFileComponent.prototype.message;
/** @type {?} */
NbChatMessageFileComponent.prototype.sender;
/** @type {?} */
NbChatMessageFileComponent.prototype.date;
/**
* @type {?}
* @private
*/
NbChatMessageFileComponent.prototype.cd;
/**
* @type {?}
* @private
*/
NbChatMessageFileComponent.prototype.domSanitizer;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdC1tZXNzYWdlLWZpbGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vdGhlbWUtbGliLyIsInNvdXJjZXMiOlsibGliL2NvbXBvbmVudHMvY2hhdC9jaGF0LW1lc3NhZ2UtZmlsZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBTUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0YsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDOzs7Ozs7O0FBaUN6RCxNQUFNLE9BQU8sMEJBQTBCOzs7OztJQXVDckMsWUFBb0IsRUFBcUIsRUFBVSxZQUEwQjtRQUF6RCxPQUFFLEdBQUYsRUFBRSxDQUFtQjtRQUFVLGlCQUFZLEdBQVosWUFBWSxDQUFjO0lBQzdFLENBQUM7Ozs7Ozs7OztJQWRELElBQ0ksS0FBSyxDQUFDLEtBQVk7UUFDcEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFTLEVBQUUsRUFBRTs7a0JBQzFDLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQztZQUNsQyx5QkFDSyxJQUFJLElBQ1AsUUFBUSxFQUFFLE9BQU8sSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLHdCQUF3QixDQUFDLE9BQU8sSUFBSSxDQUFDLEdBQUcsR0FBRyxDQUFDLEVBQ25GLE9BQU8sRUFBRSxPQUFPLElBQ2hCO1FBQ0osQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQzFCLENBQUM7Ozs7O0lBTUQsT0FBTyxDQUFDLElBQVM7UUFDZixPQUFPLENBQUMsV0FBVyxFQUFFLFlBQVksRUFBRSxXQUFXLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3RFLENBQUM7OztZQXRFRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLHNCQUFzQjtnQkFDaEMsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW9CVDtnQkFDRCxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTthQUNoRDs7OztZQWpDaUMsaUJBQWlCO1lBQzFDLFlBQVk7OztzQkF5Q2xCLEtBQUs7cUJBTUwsS0FBSzttQkFNTCxLQUFLO29CQU1MLEtBQUs7Ozs7SUF4Qk4sZ0RBQWtCOztJQU1sQiw2Q0FBeUI7O0lBTXpCLDRDQUF3Qjs7SUFNeEIsMENBQW9COzs7OztJQW1CUix3Q0FBNkI7Ozs7O0lBQUUsa0RBQWtDIiwic291cmNlc0NvbnRlbnQiOlsiLypcclxuICogQGxpY2Vuc2VcclxuICogQ29weXJpZ2h0IEFrdmVvLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxyXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSBMaWNlbnNlLnR4dCBpbiB0aGUgcHJvamVjdCByb290IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLlxyXG4gKi9cclxuXHJcbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcclxuXHJcbi8qXHJcbiAqIENoYXQgbWVzc2FnZSBjb21wb25lbnQuXHJcbiAqXHJcbiAqIEBzdHlsZXNcclxuICpcclxuICovXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbmItY2hhdC1tZXNzYWdlLWZpbGUnLFxyXG4gIHRlbXBsYXRlOiBgXHJcbiAgICA8bmItY2hhdC1tZXNzYWdlLXRleHQgW3NlbmRlcl09XCJzZW5kZXJcIiBbZGF0ZV09XCJkYXRlXCIgW21lc3NhZ2VdPVwibWVzc2FnZVwiPlxyXG4gICAgICB7eyBtZXNzYWdlIH19XHJcbiAgICA8L25iLWNoYXQtbWVzc2FnZS10ZXh0PlxyXG5cclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJyZWFkeUZpbGVzPy5sZW5ndGggPiAxXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJtZXNzYWdlLWNvbnRlbnQtZ3JvdXBcIj5cclxuICAgICAgICA8YSAqbmdGb3I9XCJsZXQgZmlsZSBvZiByZWFkeUZpbGVzXCIgW2hyZWZdPVwiZmlsZS51cmxcIiB0YXJnZXQ9XCJfYmxhbmtcIj5cclxuICAgICAgICAgIDxzcGFuIFtjbGFzc109XCJmaWxlLmljb25cIiAqbmdJZj1cIiFmaWxlLnVybFN0eWxlXCI+PC9zcGFuPlxyXG4gICAgICAgICAgPGRpdiAqbmdJZj1cImZpbGUuaXNJbWFnZVwiIFtzdHlsZS5iYWNrZ3JvdW5kLWltYWdlXT1cImZpbGUudXJsU3R5bGVcIj48L2Rpdj5cclxuICAgICAgICA8L2E+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInJlYWR5RmlsZXM/Lmxlbmd0aCA9PT0gMVwiPlxyXG4gICAgICA8YSBbaHJlZl09XCJyZWFkeUZpbGVzWzBdLnVybFwiIHRhcmdldD1cIl9ibGFua1wiPlxyXG4gICAgICAgIDxzcGFuIFtjbGFzc109XCJyZWFkeUZpbGVzWzBdLmljb25cIiAgKm5nSWY9XCIhcmVhZHlGaWxlc1swXS51cmxTdHlsZVwiPjwvc3Bhbj5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwicmVhZHlGaWxlc1swXS5pc0ltYWdlXCIgW3N0eWxlLmJhY2tncm91bmQtaW1hZ2VdPVwicmVhZHlGaWxlc1swXS51cmxTdHlsZVwiPjwvZGl2PlxyXG4gICAgICA8L2E+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICBgLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgTmJDaGF0TWVzc2FnZUZpbGVDb21wb25lbnQge1xyXG5cclxuICByZWFkeUZpbGVzOiBhbnlbXTtcclxuXHJcbiAgLypcclxuICAgKiBNZXNzYWdlIHNlbmRlclxyXG4gICAqIEB0eXBlIHtzdHJpbmd9XHJcbiAgICovXHJcbiAgQElucHV0KCkgbWVzc2FnZTogc3RyaW5nO1xyXG5cclxuICAvKlxyXG4gICAqIE1lc3NhZ2Ugc2VuZGVyXHJcbiAgICogQHR5cGUge3N0cmluZ31cclxuICAgKi9cclxuICBASW5wdXQoKSBzZW5kZXI6IHN0cmluZztcclxuXHJcbiAgLypcclxuICAgKiBNZXNzYWdlIHNlbmQgZGF0ZVxyXG4gICAqIEB0eXBlIHtEYXRlfVxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIGRhdGU6IERhdGU7XHJcblxyXG4gIC8qXHJcbiAgICogTWVzc2FnZSBmaWxlIHBhdGhcclxuICAgKiBAdHlwZSB7RGF0ZX1cclxuICAgKi9cclxuICBASW5wdXQoKVxyXG4gIHNldCBmaWxlcyhmaWxlczogYW55W10pIHtcclxuICAgIHRoaXMucmVhZHlGaWxlcyA9IChmaWxlcyB8fCBbXSkubWFwKChmaWxlOiBhbnkpID0+IHtcclxuICAgICAgY29uc3QgaXNJbWFnZSA9IHRoaXMuaXNJbWFnZShmaWxlKTtcclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICAuLi5maWxlLFxyXG4gICAgICAgIHVybFN0eWxlOiBpc0ltYWdlICYmIHRoaXMuZG9tU2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RTdHlsZShgdXJsKCR7ZmlsZS51cmx9KWApLFxyXG4gICAgICAgIGlzSW1hZ2U6IGlzSW1hZ2UsXHJcbiAgICAgIH07XHJcbiAgICB9KTtcclxuICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYsIHByaXZhdGUgZG9tU2FuaXRpemVyOiBEb21TYW5pdGl6ZXIpIHtcclxuICB9XHJcblxyXG5cclxuICBpc0ltYWdlKGZpbGU6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIFsnaW1hZ2UvcG5nJywgJ2ltYWdlL2pwZWcnLCAnaW1hZ2UvZ2lmJ10uaW5jbHVkZXMoZmlsZS50eXBlKTtcclxuICB9XHJcbn1cclxuIl19