ngx-emoji-picker
Version:
A simple emoji picker for Angular 2+ / Ionic 3 with AOT build support
30 lines • 3.66 kB
JavaScript
import { __decorate, __metadata } from "tslib";
import { Pipe } from '@angular/core';
import twemoji from 'twemoji';
import { DomSanitizer, SafeHtml } from '@angular/platform-browser';
var EmojiFallback = /** @class */ (function () {
function EmojiFallback(domSanitizer) {
this.domSanitizer = domSanitizer;
}
EmojiFallback.prototype.transform = function (emoji) {
return !emoji || this.supportsEmoji() ? emoji : this.domSanitizer.bypassSecurityTrustHtml(twemoji.parse(emoji.trim()));
};
// Solution: https://stackoverflow.com/questions/45576748/how-can-i-detect-rendering-support-for-emoji-in-javascript
EmojiFallback.prototype.supportsEmoji = function () {
var ctx = document.createElement("canvas").getContext("2d");
ctx.fillText("🙃", -2, 4);
return ctx.getImageData(0, 0, 1, 1).data[3] > 0;
};
EmojiFallback.ctorParameters = function () { return [
{ type: DomSanitizer }
]; };
EmojiFallback = __decorate([
Pipe({
name: 'emojiFallback'
}),
__metadata("design:paramtypes", [DomSanitizer])
], EmojiFallback);
return EmojiFallback;
}());
export { EmojiFallback };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW1vamktZmFsbGJhY2sucGlwZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25neC1lbW9qaS1waWNrZXIvIiwic291cmNlcyI6WyJsaWIvcGlwZXMvZW1vamktZmFsbGJhY2sucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFDcEQsT0FBTyxPQUFPLE1BQU0sU0FBUyxDQUFDO0FBQzlCLE9BQU8sRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFLbkU7SUFDRSx1QkFBb0IsWUFBMEI7UUFBMUIsaUJBQVksR0FBWixZQUFZLENBQWM7SUFFOUMsQ0FBQztJQUVELGlDQUFTLEdBQVQsVUFBVSxLQUFhO1FBQ3RCLE9BQU8sQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsdUJBQXVCLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3hILENBQUM7SUFFRCxvSEFBb0g7SUFDcEgscUNBQWEsR0FBYjtRQUNFLElBQUksR0FBRyxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzVELEdBQUcsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzFCLE9BQU8sR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2xELENBQUM7O2dCQWJpQyxZQUFZOztJQURuQyxhQUFhO1FBSHpCLElBQUksQ0FBQztZQUNKLElBQUksRUFBRSxlQUFlO1NBQ3RCLENBQUM7eUNBRWtDLFlBQVk7T0FEbkMsYUFBYSxDQWV6QjtJQUFELG9CQUFDO0NBQUEsQUFmRCxJQWVDO1NBZlksYUFBYSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBpcGUsIFBpcGVUcmFuc2Zvcm0gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB0d2Vtb2ppIGZyb20gJ3R3ZW1vamknO1xuaW1wb3J0IHsgRG9tU2FuaXRpemVyLCBTYWZlSHRtbCB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuXG5AUGlwZSh7XG4gIG5hbWU6ICdlbW9qaUZhbGxiYWNrJ1xufSlcbmV4cG9ydCBjbGFzcyBFbW9qaUZhbGxiYWNrIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZG9tU2FuaXRpemVyOiBEb21TYW5pdGl6ZXIpIHtcblxuICB9XG4gIFxuICB0cmFuc2Zvcm0oZW1vamk6IHN0cmluZyk6IHN0cmluZ3xTYWZlSHRtbCB7XG4gICByZXR1cm4gIWVtb2ppIHx8IHRoaXMuc3VwcG9ydHNFbW9qaSgpID8gZW1vamkgOiB0aGlzLmRvbVNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0SHRtbCh0d2Vtb2ppLnBhcnNlKGVtb2ppLnRyaW0oKSkpO1xuICB9XG5cbiAgLy8gU29sdXRpb246IGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzQ1NTc2NzQ4L2hvdy1jYW4taS1kZXRlY3QtcmVuZGVyaW5nLXN1cHBvcnQtZm9yLWVtb2ppLWluLWphdmFzY3JpcHRcbiAgc3VwcG9ydHNFbW9qaSgpIHtcbiAgICB2YXIgY3R4ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImNhbnZhc1wiKS5nZXRDb250ZXh0KFwiMmRcIik7XG4gICAgY3R4LmZpbGxUZXh0KFwi8J+Zg1wiLCAtMiwgNCk7XG4gICAgcmV0dXJuIGN0eC5nZXRJbWFnZURhdGEoMCwgMCwgMSwgMSkuZGF0YVszXSA+IDA7XG4gIH1cbn1cbiJdfQ==