@ctrl/ngx-emoji-mart 6.0.0 → 6.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (67) hide show
  1. package/README.md +3 -3
  2. package/anchors.component.d.ts +3 -0
  3. package/category.component.d.ts +7 -2
  4. package/ctrl-ngx-emoji-mart.d.ts +1 -0
  5. package/emoji-frequently.service.d.ts +3 -0
  6. package/emoji-search.service.d.ts +3 -0
  7. package/esm2020/anchors.component.mjs +83 -0
  8. package/esm2020/category.component.mjs +386 -0
  9. package/{esm2015/ctrl-ngx-emoji-mart.js → esm2020/ctrl-ngx-emoji-mart.mjs} +0 -0
  10. package/{esm2015/emoji-frequently.service.js → esm2020/emoji-frequently.service.mjs} +10 -8
  11. package/esm2020/emoji-search.service.mjs +177 -0
  12. package/{esm2015/ngx-emoji/ctrl-ngx-emoji-mart-ngx-emoji.js → esm2020/ngx-emoji/ctrl-ngx-emoji-mart-ngx-emoji.mjs} +0 -0
  13. package/{esm2015/ngx-emoji/data/categories.js → esm2020/ngx-emoji/data/categories.mjs} +0 -0
  14. package/{esm2015/ngx-emoji/data/data.interfaces.js → esm2020/ngx-emoji/data/data.interfaces.mjs} +0 -0
  15. package/{esm2015/ngx-emoji/data/emojis.js → esm2020/ngx-emoji/data/emojis.mjs} +11 -6
  16. package/{esm2015/ngx-emoji/data/skins.js → esm2020/ngx-emoji/data/skins.mjs} +0 -0
  17. package/esm2020/ngx-emoji/emoji.component.mjs +236 -0
  18. package/esm2020/ngx-emoji/emoji.module.mjs +18 -0
  19. package/esm2020/ngx-emoji/emoji.service.mjs +144 -0
  20. package/{esm2015/ngx-emoji/index.js → esm2020/ngx-emoji/index.mjs} +0 -0
  21. package/esm2020/picker.component.mjs +505 -0
  22. package/esm2020/picker.module.mjs +49 -0
  23. package/esm2020/preview.component.mjs +187 -0
  24. package/{esm2015/public_api.js → esm2020/public_api.mjs} +0 -0
  25. package/esm2020/search.component.mjs +165 -0
  26. package/esm2020/skins.component.mjs +108 -0
  27. package/{esm2015/svgs/index.js → esm2020/svgs/index.mjs} +0 -0
  28. package/{esm2015/utils/index.js → esm2020/utils/index.mjs} +0 -0
  29. package/fesm2015/{ctrl-ngx-emoji-mart-ngx-emoji.js → ctrl-ngx-emoji-mart-ngx-emoji.mjs} +111 -49
  30. package/fesm2015/ctrl-ngx-emoji-mart-ngx-emoji.mjs.map +1 -0
  31. package/fesm2015/{ctrl-ngx-emoji-mart.js → ctrl-ngx-emoji-mart.mjs} +670 -325
  32. package/fesm2015/ctrl-ngx-emoji-mart.mjs.map +1 -0
  33. package/fesm2020/ctrl-ngx-emoji-mart-ngx-emoji.mjs +31829 -0
  34. package/fesm2020/ctrl-ngx-emoji-mart-ngx-emoji.mjs.map +1 -0
  35. package/fesm2020/ctrl-ngx-emoji-mart.mjs +1757 -0
  36. package/fesm2020/ctrl-ngx-emoji-mart.mjs.map +1 -0
  37. package/ngx-emoji/ctrl-ngx-emoji-mart-ngx-emoji.d.ts +1 -0
  38. package/ngx-emoji/emoji.component.d.ts +3 -0
  39. package/ngx-emoji/emoji.module.d.ts +6 -0
  40. package/ngx-emoji/emoji.service.d.ts +3 -0
  41. package/ngx-emoji/package.json +6 -7
  42. package/package.json +35 -13
  43. package/picker.component.d.ts +3 -0
  44. package/picker.css +0 -1
  45. package/picker.module.d.ts +13 -0
  46. package/preview.component.d.ts +4 -1
  47. package/search.component.d.ts +3 -0
  48. package/skins.component.d.ts +6 -3
  49. package/bundles/ctrl-ngx-emoji-mart-ngx-emoji.umd.js +0 -32093
  50. package/bundles/ctrl-ngx-emoji-mart-ngx-emoji.umd.js.map +0 -1
  51. package/bundles/ctrl-ngx-emoji-mart.umd.js +0 -1718
  52. package/bundles/ctrl-ngx-emoji-mart.umd.js.map +0 -1
  53. package/ctrl-ngx-emoji-mart.metadata.json +0 -1
  54. package/esm2015/anchors.component.js +0 -54
  55. package/esm2015/category.component.js +0 -276
  56. package/esm2015/emoji-search.service.js +0 -179
  57. package/esm2015/ngx-emoji/emoji.component.js +0 -174
  58. package/esm2015/ngx-emoji/emoji.module.js +0 -13
  59. package/esm2015/ngx-emoji/emoji.service.js +0 -143
  60. package/esm2015/picker.component.js +0 -459
  61. package/esm2015/picker.module.js +0 -34
  62. package/esm2015/preview.component.js +0 -113
  63. package/esm2015/search.component.js +0 -115
  64. package/esm2015/skins.component.js +0 -76
  65. package/fesm2015/ctrl-ngx-emoji-mart-ngx-emoji.js.map +0 -1
  66. package/fesm2015/ctrl-ngx-emoji-mart.js.map +0 -1
  67. package/ngx-emoji/ctrl-ngx-emoji-mart-ngx-emoji.metadata.json +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"ctrl-ngx-emoji-mart.umd.js","sources":["../../src/lib/picker/anchors.component.ts","../../node_modules/tslib/tslib.es6.js","../../src/lib/picker/emoji-frequently.service.ts","../../src/lib/picker/category.component.ts","../../src/lib/picker/utils/index.ts","../../src/lib/picker/emoji-search.service.ts","../../src/lib/picker/preview.component.ts","../../src/lib/picker/search.component.ts","../../src/lib/picker/svgs/index.ts","../../src/lib/picker/picker.component.ts","../../src/lib/picker/skins.component.ts","../../src/lib/picker/picker.module.ts","../../src/lib/picker/ctrl-ngx-emoji-mart.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n Output,\n} from '@angular/core';\n\nimport { EmojiCategory } from '@ctrl/ngx-emoji-mart/ngx-emoji';\n\n@Component({\n selector: 'emoji-mart-anchors',\n template: `\n <div class=\"emoji-mart-anchors\">\n <ng-template ngFor let-category [ngForOf]=\"categories\" let-idx=\"index\" [ngForTrackBy]=\"trackByFn\">\n <span\n *ngIf=\"category.anchor !== false\"\n [attr.title]=\"i18n.categories[category.id]\"\n (click)=\"this.handleClick($event, idx)\"\n class=\"emoji-mart-anchor\"\n [class.emoji-mart-anchor-selected]=\"category.name === selected\"\n [style.color]=\"category.name === selected ? color : null\"\n >\n <div>\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" width=\"24\" height=\"24\">\n <path [attr.d]=\"icons[category.id]\" />\n </svg>\n </div>\n <span class=\"emoji-mart-anchor-bar\" [style.background-color]=\"color\"></span>\n </span>\n </ng-template>\n </div>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n preserveWhitespaces: false,\n})\nexport class AnchorsComponent {\n @Input() categories: EmojiCategory[] = [];\n @Input() color?: string;\n @Input() selected?: string;\n @Input() i18n: any;\n @Input() icons: { [key: string]: string } = {};\n @Output() anchorClick = new EventEmitter<{ category: EmojiCategory, index: number }>();\n\n trackByFn(idx: number, cat: EmojiCategory) {\n return cat.id;\n }\n handleClick($event: Event, index: number) {\n this.anchorClick.emit({\n category: this.categories[index],\n index,\n });\n }\n}\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n 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;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from) {\r\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\r\n to[j] = from[i];\r\n return to;\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n","import { isPlatformBrowser } from '@angular/common';\nimport { Inject, Injectable, PLATFORM_ID } from '@angular/core';\n\nimport { EmojiData } from '@ctrl/ngx-emoji-mart/ngx-emoji';\n\n@Injectable({ providedIn: 'root' })\nexport class EmojiFrequentlyService {\n NAMESPACE = 'emoji-mart';\n frequently: { [key: string]: number } | null = null;\n defaults: { [key: string]: number } = {};\n initialized = false;\n DEFAULTS = [\n '+1',\n 'grinning',\n 'kissing_heart',\n 'heart_eyes',\n 'laughing',\n 'stuck_out_tongue_winking_eye',\n 'sweat_smile',\n 'joy',\n 'scream',\n 'disappointed',\n 'unamused',\n 'weary',\n 'sob',\n 'sunglasses',\n 'heart',\n 'poop',\n ];\n constructor(@Inject(PLATFORM_ID) private platformId: string) {}\n init() {\n this.frequently = JSON.parse(\n (isPlatformBrowser(this.platformId) &&\n localStorage.getItem(`${this.NAMESPACE}.frequently`)) ||\n 'null',\n );\n this.initialized = true;\n }\n add(emoji: EmojiData) {\n if (!this.initialized) {\n this.init();\n }\n if (!this.frequently) {\n this.frequently = this.defaults;\n }\n if (!this.frequently[emoji.id]) {\n this.frequently[emoji.id] = 0;\n }\n this.frequently[emoji.id] += 1;\n\n if (isPlatformBrowser(this.platformId)) {\n localStorage.setItem(`${this.NAMESPACE}.last`, emoji.id);\n localStorage.setItem(`${this.NAMESPACE}.frequently`, JSON.stringify(this.frequently));\n }\n }\n get(perLine: number, totalLines: number) {\n if (!this.initialized) {\n this.init();\n }\n if (this.frequently === null) {\n this.defaults = {};\n const result = [];\n\n for (let i = 0; i < perLine; i++) {\n this.defaults[this.DEFAULTS[i]] = perLine - i;\n result.push(this.DEFAULTS[i]);\n }\n return result;\n }\n\n const quantity = perLine * totalLines;\n const frequentlyKeys = Object.keys(this.frequently);\n\n const sorted = frequentlyKeys\n .sort((a, b) => this.frequently![a] - this.frequently![b])\n .reverse();\n const sliced = sorted.slice(0, quantity);\n\n const last =\n isPlatformBrowser(this.platformId) && localStorage.getItem(`${this.NAMESPACE}.last`);\n\n if (last && !sliced.includes(last)) {\n sliced.pop();\n sliced.push(last);\n }\n return sliced;\n }\n}\n","import { Emoji, EmojiService } from '@ctrl/ngx-emoji-mart/ngx-emoji';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnChanges,\n OnInit,\n Output,\n SimpleChanges,\n ViewChild\n} from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\nimport { EmojiFrequentlyService } from './emoji-frequently.service';\n\n\n@Component({\n selector: 'emoji-category',\n template: `\n <section\n #container\n class=\"emoji-mart-category\"\n [attr.aria-label]=\"i18n.categories[id]\"\n [class.emoji-mart-no-results]=\"emojis && !emojis.length\"\n [ngStyle]=\"containerStyles\"\n >\n <div class=\"emoji-mart-category-label\" [ngStyle]=\"labelStyles\" [attr.data-name]=\"name\">\n <!-- already labeled by the section aria-label -->\n <span #label [ngStyle]=\"labelSpanStyles\" aria-hidden=\"true\">\n {{ i18n.categories[id] }}\n </span>\n </div>\n\n <div\n *ngIf=\"virtualize; else normalRenderTemplate\"\n >\n <div *ngIf=\"filteredEmojis$ | async as filteredEmojis\">\n <ngx-emoji\n *ngFor=\"let emoji of filteredEmojis; trackBy: trackById\"\n [emoji]=\"emoji\"\n [size]=\"emojiSize\"\n [skin]=\"emojiSkin\"\n [isNative]=\"emojiIsNative\"\n [set]=\"emojiSet\"\n [sheetSize]=\"emojiSheetSize\"\n [forceSize]=\"emojiForceSize\"\n [tooltip]=\"emojiTooltip\"\n [backgroundImageFn]=\"emojiBackgroundImageFn\"\n [imageUrlFn]=\"emojiImageUrlFn\"\n [hideObsolete]=\"hideObsolete\"\n [useButton]=\"emojiUseButton\"\n (emojiOver)=\"emojiOver.emit($event)\"\n (emojiLeave)=\"emojiLeave.emit($event)\"\n (emojiClick)=\"emojiClick.emit($event)\"\n ></ngx-emoji>\n </div>\n </div>\n\n <div *ngIf=\"emojis && !emojis.length\">\n <div>\n <ngx-emoji\n [emoji]=\"notFoundEmoji\"\n size=\"38\"\n [skin]=\"emojiSkin\"\n [isNative]=\"emojiIsNative\"\n [set]=\"emojiSet\"\n [sheetSize]=\"emojiSheetSize\"\n [forceSize]=\"emojiForceSize\"\n [tooltip]=\"emojiTooltip\"\n [backgroundImageFn]=\"emojiBackgroundImageFn\"\n [useButton]=\"emojiUseButton\"\n ></ngx-emoji>\n </div>\n\n <div class=\"emoji-mart-no-results-label\">\n {{ i18n.notfound }}\n </div>\n </div>\n </section>\n\n <ng-template #normalRenderTemplate>\n <div *ngIf=\"emojis\">\n <ngx-emoji\n *ngFor=\"let emoji of emojis; trackBy: trackById\"\n [emoji]=\"emoji\"\n [size]=\"emojiSize\"\n [skin]=\"emojiSkin\"\n [isNative]=\"emojiIsNative\"\n [set]=\"emojiSet\"\n [sheetSize]=\"emojiSheetSize\"\n [forceSize]=\"emojiForceSize\"\n [tooltip]=\"emojiTooltip\"\n [backgroundImageFn]=\"emojiBackgroundImageFn\"\n [imageUrlFn]=\"emojiImageUrlFn\"\n [hideObsolete]=\"hideObsolete\"\n [useButton]=\"emojiUseButton\"\n (emojiOver)=\"emojiOver.emit($event)\"\n (emojiLeave)=\"emojiLeave.emit($event)\"\n (emojiClick)=\"emojiClick.emit($event)\"\n ></ngx-emoji>\n </div>\n </ng-template>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n preserveWhitespaces: false,\n})\nexport class CategoryComponent implements OnChanges, OnInit, AfterViewInit {\n @Input() emojis?: any[] | null;\n @Input() hasStickyPosition = true;\n @Input() name = '';\n @Input() perLine = 9;\n @Input() totalFrequentLines = 4;\n @Input() recent: string[] = [];\n @Input() custom: any[] = [];\n @Input() i18n: any;\n @Input() id: any;\n @Input() hideObsolete = true;\n @Input() notFoundEmoji?: string;\n @Input() virtualize = false;\n @Input() virtualizeOffset = 0;\n @Input() emojiIsNative?: Emoji['isNative'];\n @Input() emojiSkin!: Emoji['skin'];\n @Input() emojiSize!: Emoji['size'];\n @Input() emojiSet!: Emoji['set'];\n @Input() emojiSheetSize!: Emoji['sheetSize'];\n @Input() emojiForceSize!: Emoji['forceSize'];\n @Input() emojiTooltip!: Emoji['tooltip'];\n @Input() emojiBackgroundImageFn?: Emoji['backgroundImageFn'];\n @Input() emojiImageUrlFn?: Emoji['imageUrlFn'];\n @Input() emojiUseButton?: boolean;\n @Output() emojiOver: Emoji['emojiOver'] = new EventEmitter();\n @Output() emojiLeave: Emoji['emojiLeave'] = new EventEmitter();\n @Output() emojiClick: Emoji['emojiClick'] = new EventEmitter();\n @ViewChild('container', { static: true }) container!: ElementRef;\n @ViewChild('label', { static: true }) label!: ElementRef;\n containerStyles: any = {};\n private filteredEmojisSubject = new Subject<any[] | null | undefined>();\n filteredEmojis$: Observable<any[] | null | undefined> = this.filteredEmojisSubject.asObservable();\n labelStyles: any = {};\n labelSpanStyles: any = {};\n margin = 0;\n minMargin = 0;\n maxMargin = 0;\n top = 0;\n rows = 0;\n\n constructor(\n public ref: ChangeDetectorRef,\n private emojiService: EmojiService,\n private frequently: EmojiFrequentlyService,\n ) {}\n\n ngOnInit() {\n this.emojis = this.getEmojis();\n\n if (!this.emojis) {\n this.containerStyles = { display: 'none' };\n }\n\n if (!this.hasStickyPosition) {\n this.labelStyles = { height: 28 };\n // this.labelSpanStyles = { position: 'absolute' };\n }\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes.emojis?.currentValue?.length !== changes.emojis?.previousValue?.length) {\n this.ngAfterViewInit();\n }\n }\n\n ngAfterViewInit() {\n if (!this.virtualize || !this.emojis?.length) {\n return;\n }\n\n this.emojis = this.filterEmojis();\n\n const { width } = this.container.nativeElement.getBoundingClientRect();\n\n const perRow = Math.floor(width / (this.emojiSize + 12));\n this.rows = Math.ceil(this.emojis.length / perRow);\n\n this.containerStyles = {\n ...this.containerStyles,\n minHeight: `${this.rows * (this.emojiSize + 12) + 28}px`,\n };\n\n this.ref?.detectChanges();\n\n this.handleScroll(this.container.nativeElement.parentNode.parentNode.scrollTop);\n }\n\n memoizeSize() {\n const parent = this.container.nativeElement.parentNode.parentNode;\n const { top, height } = this.container.nativeElement.getBoundingClientRect();\n const parentTop = parent.getBoundingClientRect().top;\n const labelHeight = this.label.nativeElement.getBoundingClientRect().height;\n\n this.top = top - parentTop + parent.scrollTop;\n\n if (height === 0) {\n this.maxMargin = 0;\n } else {\n this.maxMargin = height - labelHeight;\n }\n }\n handleScroll(scrollTop: number): boolean {\n let margin = scrollTop - this.top;\n margin = margin < this.minMargin ? this.minMargin : margin;\n margin = margin > this.maxMargin ? this.maxMargin : margin;\n\n if (this.virtualize) {\n const { top, height } = this.container.nativeElement.getBoundingClientRect();\n const parentHeight = this.container.nativeElement.parentNode.parentNode.clientHeight;\n\n if (parentHeight + (parentHeight + this.virtualizeOffset) >= top && -height - (parentHeight + this.virtualizeOffset) <= top) {\n this.filteredEmojisSubject.next(this.emojis);\n } else {\n this.filteredEmojisSubject.next([]);\n }\n }\n\n if (margin === this.margin) {\n this.ref.detectChanges();\n return false;\n }\n\n if (!this.hasStickyPosition) {\n this.label.nativeElement.style.top = `${margin}px`;\n }\n\n this.margin = margin;\n this.ref.detectChanges();\n return true;\n }\n\n getEmojis() {\n if (this.name === 'Recent') {\n let frequentlyUsed =\n this.recent || this.frequently.get(this.perLine, this.totalFrequentLines);\n if (!frequentlyUsed || !frequentlyUsed.length) {\n frequentlyUsed = this.frequently.get(this.perLine, this.totalFrequentLines);\n }\n if (frequentlyUsed.length) {\n this.emojis = frequentlyUsed\n .map(id => {\n const emoji = this.custom.filter((e: any) => e.id === id)[0];\n if (emoji) {\n return emoji;\n }\n\n return id;\n })\n .filter(id => !!this.emojiService.getData(id));\n }\n\n if ((!this.emojis || this.emojis.length === 0) && frequentlyUsed.length > 0) {\n return null;\n }\n }\n\n if (this.emojis) {\n this.emojis = this.emojis.slice(0);\n }\n\n return this.emojis;\n }\n updateDisplay(display: 'none' | 'block') {\n this.containerStyles.display = display;\n this.getEmojis();\n this.ref.detectChanges();\n }\n trackById(index: number, item: any) {\n return item;\n }\n\n private filterEmojis(): any[] {\n const newEmojis = [];\n for (const emoji of this.emojis || []) {\n if (!emoji) {\n continue;\n }\n const data = this.emojiService.getData(emoji);\n if (!data || (data.obsoletedBy && this.hideObsolete) || (!data.unified && !data.custom)) {\n continue;\n }\n newEmojis.push(emoji);\n }\n return newEmojis;\n }\n}\n","function uniq(arr: any[]) {\n return arr.reduce((acc: Array<any>, item: any) => {\n if (!acc.includes(item)) {\n acc.push(item);\n }\n return acc;\n }, []);\n}\n\nexport function intersect(a: any, b: any) {\n const uniqA = uniq(a);\n const uniqB = uniq(b);\n\n return uniqA.filter((item: any) => uniqB.indexOf(item) >= 0);\n}\n\n// https://github.com/sonicdoe/measure-scrollbar\nexport function measureScrollbar() {\n if (typeof document === 'undefined') {\n return 0;\n }\n const div = document.createElement('div');\n\n div.style.width = '100px';\n div.style.height = '100px';\n div.style.overflow = 'scroll';\n div.style.position = 'absolute';\n div.style.top = '-9999px';\n\n document.body.appendChild(div);\n const scrollbarWidth = div.offsetWidth - div.clientWidth;\n document.body.removeChild(div);\n\n return scrollbarWidth;\n}\n","import { Injectable } from '@angular/core';\n\nimport { categories, EmojiData, EmojiService } from '@ctrl/ngx-emoji-mart/ngx-emoji';\nimport { intersect } from './utils';\n\n@Injectable({ providedIn: 'root' })\nexport class EmojiSearch {\n originalPool: any = {};\n index: {\n results?: EmojiData[];\n pool?: { [key: string]: EmojiData };\n [key: string]: any;\n } = {};\n emojisList: any = {};\n emoticonsList: { [key: string]: string } = {};\n emojiSearch: { [key: string]: string } = {};\n\n constructor(private emojiService: EmojiService) {\n for (const emojiData of this.emojiService.emojis) {\n const { shortNames, emoticons } = emojiData;\n const id = shortNames[0];\n\n for (const emoticon of emoticons) {\n if (this.emoticonsList[emoticon]) {\n continue;\n }\n\n this.emoticonsList[emoticon] = id;\n }\n\n this.emojisList[id] = this.emojiService.getSanitizedData(id);\n this.originalPool[id] = emojiData;\n }\n }\n\n addCustomToPool(custom: any, pool: any) {\n for (const emoji of custom) {\n const emojiId = emoji.id || emoji.shortNames[0];\n\n if (emojiId && !pool[emojiId]) {\n pool[emojiId] = this.emojiService.getData(emoji);\n this.emojisList[emojiId] = this.emojiService.getSanitizedData(emoji);\n }\n }\n }\n\n search(\n value: string,\n emojisToShowFilter?: (x: any) => boolean,\n maxResults = 75,\n include: any[] = [],\n exclude: any[] = [],\n custom: any[] = [],\n ): EmojiData[] | null {\n this.addCustomToPool(custom, this.originalPool);\n\n let results: EmojiData[] | undefined;\n let pool = this.originalPool;\n\n if (value.length) {\n if (value === '-' || value === '-1') {\n return [this.emojisList['-1']];\n }\n if (value === '+' || value === '+1') {\n return [this.emojisList['+1']];\n }\n\n let values = value.toLowerCase().split(/[\\s|,|\\-|_]+/);\n let allResults = [];\n\n if (values.length > 2) {\n values = [values[0], values[1]];\n }\n\n if (include.length || exclude.length) {\n pool = {};\n\n for (const category of categories || []) {\n const isIncluded = include && include.length ? include.indexOf(category.id) > -1 : true;\n const isExcluded = exclude && exclude.length ? exclude.indexOf(category.id) > -1 : false;\n\n if (!isIncluded || isExcluded) {\n continue;\n }\n\n for (const emojiId of category.emojis || []) {\n // Need to make sure that pool gets keyed\n // with the correct id, which is why we call emojiService.getData below\n const emoji = this.emojiService.getData(emojiId);\n pool[emoji?.id ?? ''] = emoji;\n }\n }\n\n if (custom.length) {\n const customIsIncluded =\n include && include.length ? include.indexOf('custom') > -1 : true;\n const customIsExcluded =\n exclude && exclude.length ? exclude.indexOf('custom') > -1 : false;\n if (customIsIncluded && !customIsExcluded) {\n this.addCustomToPool(custom, pool);\n }\n }\n }\n\n allResults = values\n .map(v => {\n let aPool = pool;\n let aIndex = this.index;\n let length = 0;\n\n // eslint-disable-next-line @typescript-eslint/prefer-for-of\n for (let charIndex = 0; charIndex < v.length; charIndex++) {\n const char = v[charIndex];\n length++;\n if (!aIndex[char]) {\n aIndex[char] = {};\n }\n aIndex = aIndex[char];\n\n if (!aIndex.results) {\n const scores: { [key: string]: number } = {};\n\n aIndex.results = [];\n aIndex.pool = {};\n\n for (const id of Object.keys(aPool)) {\n const emoji = aPool[id];\n if (!this.emojiSearch[id]) {\n this.emojiSearch[id] = this.buildSearch(\n emoji.short_names,\n emoji.name,\n emoji.id,\n emoji.keywords,\n emoji.emoticons,\n );\n }\n const query = this.emojiSearch[id];\n const sub = v.substr(0, length);\n const subIndex = query.indexOf(sub);\n\n if (subIndex !== -1) {\n let score = subIndex + 1;\n if (sub === id) {\n score = 0;\n }\n\n aIndex.results.push(this.emojisList[id]);\n aIndex.pool[id] = emoji;\n\n scores[id] = score;\n }\n }\n\n aIndex.results.sort((a, b) => {\n const aScore = scores[a.id];\n const bScore = scores[b.id];\n\n return aScore - bScore;\n });\n }\n\n aPool = aIndex.pool;\n }\n\n return aIndex.results;\n })\n .filter(a => a);\n\n if (allResults.length > 1) {\n results = intersect.apply(null, allResults as any);\n } else if (allResults.length) {\n results = allResults[0];\n } else {\n results = [];\n }\n }\n\n if (results) {\n if (emojisToShowFilter) {\n results = results.filter((result: EmojiData) => {\n if (result && result.id) {\n return emojisToShowFilter(this.emojiService.names[result.id]);\n }\n return false;\n });\n }\n\n if (results && results.length > maxResults) {\n results = results.slice(0, maxResults);\n }\n }\n return results || null;\n }\n\n buildSearch(\n shortNames: string[],\n name: string,\n id: string,\n keywords: string[],\n emoticons: string[],\n ) {\n const search: string[] = [];\n\n const addToSearch = (strings: string | string[], split: boolean) => {\n if (!strings) {\n return;\n }\n\n const arr = Array.isArray(strings) ? strings : [strings];\n\n for (const str of arr) {\n const substrings = split ? str.split(/[-|_|\\s]+/) : [str];\n\n for (let s of substrings) {\n s = s.toLowerCase();\n\n if (!search.includes(s)) {\n search.push(s);\n }\n }\n }\n };\n\n addToSearch(shortNames, true);\n addToSearch(name, true);\n addToSearch(id, true);\n addToSearch(keywords, true);\n addToSearch(emoticons, false);\n\n return search.join(',');\n }\n}\n","import { Emoji, EmojiData, EmojiService } from '@ctrl/ngx-emoji-mart/ngx-emoji';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Input,\n OnChanges,\n Output\n} from '@angular/core';\n\n\n@Component({\n selector: 'emoji-preview',\n template: `\n <div class=\"emoji-mart-preview\" *ngIf=\"emoji && emojiData\">\n <div class=\"emoji-mart-preview-emoji\">\n <ngx-emoji\n [emoji]=\"emoji\"\n [size]=\"38\"\n [isNative]=\"emojiIsNative\"\n [skin]=\"emojiSkin\"\n [size]=\"emojiSize\"\n [set]=\"emojiSet\"\n [sheetSize]=\"emojiSheetSize\"\n [backgroundImageFn]=\"emojiBackgroundImageFn\"\n [imageUrlFn]=\"emojiImageUrlFn\"\n ></ngx-emoji>\n </div>\n\n <div class=\"emoji-mart-preview-data\">\n <div class=\"emoji-mart-preview-name\">{{ emojiData.name }}</div>\n <div class=\"emoji-mart-preview-shortname\">\n <span\n class=\"emoji-mart-preview-shortname\"\n *ngFor=\"let short_name of emojiData.shortNames\"\n >\n :{{ short_name }}:\n </span>\n </div>\n <div class=\"emoji-mart-preview-emoticons\">\n <span class=\"emoji-mart-preview-emoticon\" *ngFor=\"let emoticon of listedEmoticons\">\n {{ emoticon }}\n </span>\n </div>\n </div>\n </div>\n\n <div class=\"emoji-mart-preview\" *ngIf=\"!emoji\">\n <div class=\"emoji-mart-preview-emoji\">\n <ngx-emoji\n *ngIf=\"idleEmoji && idleEmoji.length\"\n [isNative]=\"emojiIsNative\"\n [skin]=\"emojiSkin\"\n [set]=\"emojiSet\"\n [emoji]=\"idleEmoji\"\n [backgroundImageFn]=\"emojiBackgroundImageFn\"\n [size]=\"38\"\n [imageUrlFn]=\"emojiImageUrlFn\"\n ></ngx-emoji>\n </div>\n\n <div class=\"emoji-mart-preview-data\">\n <span class=\"emoji-mart-title-label\">{{ title }}</span>\n </div>\n\n <div class=\"emoji-mart-preview-skins\">\n <emoji-skins [skin]=\"emojiSkin\" (changeSkin)=\"skinChange.emit($event)\" [i18n]=\"i18n\">\n </emoji-skins>\n </div>\n </div>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n preserveWhitespaces: false,\n})\nexport class PreviewComponent implements OnChanges {\n @Input() title?: string;\n @Input() emoji: any;\n @Input() idleEmoji: any;\n @Input() i18n: any;\n @Input() emojiIsNative?: Emoji['isNative'];\n @Input() emojiSkin?: Emoji['skin'];\n @Input() emojiSize?: Emoji['size'];\n @Input() emojiSet?: Emoji['set'];\n @Input() emojiSheetSize?: Emoji['sheetSize'];\n @Input() emojiBackgroundImageFn?: Emoji['backgroundImageFn'];\n @Input() emojiImageUrlFn?: Emoji['imageUrlFn'];\n @Output() skinChange = new EventEmitter<number>();\n emojiData: Partial<EmojiData> = {};\n listedEmoticons?: string[];\n\n constructor(public ref: ChangeDetectorRef, private emojiService: EmojiService) {}\n\n ngOnChanges() {\n if (!this.emoji) {\n return;\n }\n this.emojiData = this.emojiService.getData(\n this.emoji,\n this.emojiSkin,\n this.emojiSet,\n ) as EmojiData;\n const knownEmoticons: string[] = [];\n const listedEmoticons: string[] = [];\n const emoitcons = this.emojiData.emoticons || [];\n emoitcons.forEach((emoticon: string) => {\n if (knownEmoticons.indexOf(emoticon.toLowerCase()) >= 0) {\n return;\n }\n knownEmoticons.push(emoticon.toLowerCase());\n listedEmoticons.push(emoticon);\n });\n this.listedEmoticons = listedEmoticons;\n this.ref?.detectChanges();\n }\n}\n","import {\n AfterViewInit,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnInit,\n Output,\n ViewChild,\n} from '@angular/core';\n\nimport { EmojiSearch } from './emoji-search.service';\n\nlet id = 0;\n\n@Component({\n selector: 'emoji-search',\n template: `\n <div class=\"emoji-mart-search\">\n <input\n [id]=\"inputId\"\n #inputRef\n type=\"search\"\n (keyup.enter)=\"handleEnterKey($event)\"\n [placeholder]=\"i18n.search\"\n [autofocus]=\"autoFocus\"\n [(ngModel)]=\"query\"\n (ngModelChange)=\"handleChange()\"\n />\n <!--\n Use a <label> in addition to the placeholder for accessibility, but place it off-screen\n http://www.maxability.co.in/2016/01/placeholder-attribute-and-why-it-is-not-accessible/\n -->\n <label class=\"emoji-mart-sr-only\" [htmlFor]=\"inputId\">\n {{ i18n.search }}\n </label>\n <button\n type=\"button\"\n class=\"emoji-mart-search-icon\"\n (click)=\"clear()\"\n (keyup.enter)=\"clear()\"\n [disabled]=\"!isSearching\"\n [attr.aria-label]=\"i18n.clear\"\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 20 20\"\n width=\"13\"\n height=\"13\"\n opacity=\"0.5\"\n >\n <path [attr.d]=\"icon\" />\n </svg>\n </button>\n </div>\n `,\n preserveWhitespaces: false,\n})\nexport class SearchComponent implements AfterViewInit, OnInit {\n @Input() maxResults = 75;\n @Input() autoFocus = false;\n @Input() i18n: any;\n @Input() include: string[] = [];\n @Input() exclude: string[] = [];\n @Input() custom: any[] = [];\n @Input() icons!: { [key: string]: string };\n @Input() emojisToShowFilter?: (x: any) => boolean;\n @Output() searchResults = new EventEmitter<any[]>();\n @Output() enterKey = new EventEmitter<any>();\n @ViewChild('inputRef', { static: true }) private inputRef!: ElementRef;\n isSearching = false;\n icon?: string;\n query = '';\n inputId = `emoji-mart-search-${++id}`;\n\n constructor(private emojiSearch: EmojiSearch) {}\n\n ngOnInit() {\n this.icon = this.icons.search;\n }\n ngAfterViewInit() {\n if (this.autoFocus) {\n this.inputRef.nativeElement.focus();\n }\n }\n clear() {\n this.query = '';\n this.handleSearch('');\n this.inputRef.nativeElement.focus();\n }\n handleEnterKey($event: Event) {\n if (!this.query) {\n return;\n }\n this.enterKey.emit($event);\n $event.preventDefault();\n }\n handleSearch(value: string) {\n if (value === '') {\n this.icon = this.icons.search;\n this.isSearching = false;\n } else {\n this.icon = this.icons.delete;\n this.isSearching = true;\n }\n const emojis = this.emojiSearch.search(\n this.query,\n this.emojisToShowFilter,\n this.maxResults,\n this.include,\n this.exclude,\n this.custom,\n ) as any[];\n this.searchResults.emit(emojis);\n }\n handleChange() {\n this.handleSearch(this.query);\n }\n}\n","/* eslint-disable max-len */\nexport const categories: { [key: string]: string } = {\n activity: `M12 0a12 12 0 1 0 0 24 12 12 0 0 0 0-24m10 11h-5c.3-2.5 1.3-4.8 2-6.1a10 10 0 0 1 3 6.1m-9 0V2a10 10 0 0 1 4.4 1.6A18 18 0 0 0 15 11h-2zm-2 0H9a18 18 0 0 0-2.4-7.4A10 10 0 0 1 11 2.1V11zm0 2v9a10 10 0 0 1-4.4-1.6A18 18 0 0 0 9 13h2zm4 0a18 18 0 0 0 2.4 7.4 10 10 0 0 1-4.4 1.5V13h2zM5 4.9c.7 1.3 1.7 3.6 2 6.1H2a10 10 0 0 1 3-6.1M2 13h5c-.3 2.5-1.3 4.8-2 6.1A10 10 0 0 1 2 13m17 6.1c-.7-1.3-1.7-3.6-2-6.1h5a10 10 0 0 1-3 6.1`,\n\n custom: `M10 1h3v21h-3zm10.186 4l1.5 2.598L3.5 18.098 2 15.5zM2 7.598L3.5 5l18.186 10.5-1.5 2.598z`,\n\n flags: `M0 0l6 24h2L2 0zm21 5h-4l-1-4H4l3 12h3l1 4h13L21 5zM6.6 3h7.8l2 8H8.6l-2-8zm8.8 10l-2.9 1.9-.4-1.9h3.3zm3.6 0l-1.5-6h2l2 8H16l3-2z`,\n\n foods: `M17 5c-1.8 0-2.9.4-3.7 1 .5-1.3 1.8-3 4.7-3a1 1 0 0 0 0-2c-3 0-4.6 1.3-5.5 2.5l-.2.2c-.6-1.9-1.5-3.7-3-3.7C8.5 0 7.7.3 7 1c-2 1.5-1.7 2.9-.5 4C3.6 5.2 0 7.4 0 13c0 4.6 5 11 9 11 2 0 2.4-.5 3-1 .6.5 1 1 3 1 4 0 9-6.4 9-11 0-6-4-8-7-8M8.2 2.5c.7-.5 1-.5 1-.5.4.2 1 1.4 1.4 3-1.6-.6-2.8-1.3-3-1.8l.6-.7M15 22c-1 0-1.2-.1-1.6-.4l-.1-.2a2 2 0 0 0-2.6 0l-.1.2c-.4.3-.5.4-1.6.4-2.8 0-7-5.4-7-9 0-6 4.5-6 5-6 2 0 2.5.4 3.4 1.2l.3.3a2 2 0 0 0 2.6 0l.3-.3c1-.8 1.5-1.2 3.4-1.2.5 0 5 .1 5 6 0 3.6-4.2 9-7 9`,\n\n nature: `M15.5 8a1.5 1.5 0 1 0 0 3 1.5 1.5 0 0 0 0-3m-7 0a1.5 1.5 0 1 0 0 3 1.5 1.5 0 0 0 0-3m10.43-8h-.02c-.97 0-2.14.79-3.02 1.5A13.88 13.88 0 0 0 12 .99c-1.28 0-2.62.13-3.87.51C7.24.8 6.07 0 5.09 0h-.02C3.35 0 .07 2.67 0 7.03c-.04 2.47.28 4.23 1.04 5 .26.27.88.69 1.3.9.19 3.17.92 5.23 2.53 6.37.9.64 2.19.95 3.2 1.1-.03.2-.07.4-.07.6 0 1.77 2.35 3 4 3s4-1.23 4-3c0-.2-.04-.4-.07-.59 2.57-.38 5.43-1.87 5.92-7.58.4-.22.89-.57 1.1-.8.77-.76 1.09-2.52 1.05-5C23.93 2.67 20.65 0 18.93 0M3.23 9.13c-.24.29-.84 1.16-.9 1.24A9.67 9.67 0 0 1 2 7.08c.05-3.28 2.48-4.97 3.1-5.03.25.02.72.27 1.26.65A7.95 7.95 0 0 0 4 7.82c-.14.55-.4.86-.79 1.31M12 22c-.9 0-1.95-.7-2-1 0-.65.47-1.24 1-1.6v.6a1 1 0 1 0 2 0v-.6c.52.36 1 .95 1 1.6-.05.3-1.1 1-2 1m3-3.48v.02a4.75 4.75 0 0 0-1.26-1.02c1.09-.52 2.24-1.33 2.24-2.22 0-1.84-1.78-2.2-3.98-2.2s-3.98.36-3.98 2.2c0 .89 1.15 1.7 2.24 2.22A4.8 4.8 0 0 0 9 18.54v-.03a6.1 6.1 0 0 1-2.97-.84c-1.3-.92-1.84-3.04-1.86-6.48l.03-.04c.5-.82 1.49-1.45 1.8-3.1C6 6 7.36 4.42 8.36 3.53c1.01-.35 2.2-.53 3.59-.53 1.45 0 2.68.2 3.73.57 1 .9 2.32 2.46 2.32 4.48.31 1.65 1.3 2.27 1.8 3.1l.1.18c-.06 5.97-1.95 7.01-4.9 7.19m6.63-8.2l-.11-.2a7.59 7.59 0 0 0-.74-.98 3.02 3.02 0 0 1-.79-1.32 7.93 7.93 0 0 0-2.35-5.12c.53-.38 1-.63 1.26-.65.64.07 3.05 1.77 3.1 5.03.02 1.81-.35 3.22-.37 3.24`,\n\n objects: `M12 0a9 9 0 0 0-5 16.5V21s2 3 5 3 5-3 5-3v-4.5A9 9 0 0 0 12 0zm0 2a7 7 0 1 1 0 14 7 7 0 0 1 0-14zM9 17.5a9 9 0 0 0 6 0v.8a7 7 0 0 1-3 .7 7 7 0 0 1-3-.7v-.8zm.2 3a8.9 8.9 0 0 0 2.8.5c1 0 1.9-.2 2.8-.5-.6.7-1.6 1.5-2.8 1.5-1.1 0-2.1-.8-2.8-1.5zm5.5-8.1c-.8 0-1.1-.8-1.5-1.8-.5-1-.7-1.5-1.2-1.5s-.8.5-1.3 1.5c-.4 1-.8 1.8-1.6 1.8h-.3c-.5-.2-.8-.7-1.3-1.8l-.2-1A3 3 0 0 0 7 9a1 1 0 0 1 0-2c1.7 0 2 1.4 2.2 2.1.5-1 1.3-2 2.8-2 1.5 0 2.3 1.1 2.7 2.1.2-.8.6-2.2 2.3-2.2a1 1 0 1 1 0 2c-.2 0-.3.5-.3.7a6.5 6.5 0 0 1-.3 1c-.5 1-.8 1.7-1.7 1.7`,\n\n people: `M12 0a12 12 0 1 0 0 24 12 12 0 0 0 0-24m0 22a10 10 0 1 1 0-20 10 10 0 0 1 0 20M8 7a2 2 0 1 0 0 4 2 2 0 0 0 0-4m8 0a2 2 0 1 0 0 4 2 2 0 0 0 0-4m-.8 8c-.7 1.2-1.8 2-3.3 2-1.5 0-2.7-.8-3.4-2H15m3-2H6a6 6 0 1 0 12 0`,\n\n places: `M6.5 12a2.5 2.5 0 1 0 0 5 2.5 2.5 0 0 0 0-5m0 3c-.3 0-.5-.2-.5-.5s.2-.5.5-.5.5.2.5.5-.2.5-.5.5m11-3a2.5 2.5 0 1 0 0 5 2.5 2.5 0 0 0 0-5m0 3c-.3 0-.5-.2-.5-.5s.2-.5.5-.5.5.2.5.5-.2.5-.5.5m5-5.5l-1-.4-.1-.1h.6c.6 0 1-.4 1-1 0-1-.9-2-2-2h-.6l-.8-1.7A3 3 0 0 0 16.8 2H7.2a3 3 0 0 0-2.8 2.3L3.6 6H3a2 2 0 0 0-2 2c0 .6.4 1 1 1h.6v.1l-1 .4a2 2 0 0 0-1.4 2l.7 7.6a1 1 0 0 0 1 .9H3v1c0 1.1.9 2 2 2h2a2 2 0 0 0 2-2v-1h6v1c0 1.1.9 2 2 2h2a2 2 0 0 0 2-2v-1h1.1a1 1 0 0 0 1-.9l.7-7.5a2 2 0 0 0-1.3-2.1M6.3 4.9c.1-.5.5-.9 1-.9h9.5c.4 0 .8.4 1 .9L19.2 9H4.7l1.6-4.1zM7 21H5v-1h2v1zm12 0h-2v-1h2v1zm2.2-3H2.8l-.7-6.6.9-.4h18l.9.4-.7 6.6z`,\n\n recent: `M13 4h-2v7H9v2h2v2h2v-2h4v-2h-4zm-1-4a12 12 0 1 0 0 24 12 12 0 0 0 0-24m0 22a10 10 0 1 1 0-20 10 10 0 0 1 0 20`,\n\n symbols: `M0 0h11v2H0zm4 11h3V6h4V4H0v2h4zm11.5 6a2.5 2.5 0 1 0 0-5 2.5 2.5 0 0 0 0 5m0-2.99a.5.5 0 0 1 0 .99c-.28 0-.5-.22-.5-.5s.22-.49.5-.49m6 5a2.5 2.5 0 1 0 0 5 2.5 2.5 0 0 0 0-5m0 2.99a.5.5 0 0 1-.5-.5.5.5 0 0 1 1 .01.5.5 0 0 1-.5.49m.5-9l-9 9 1.51 1.5 9-9zm-5-2c2.2 0 4-1.12 4-2.5V2s.98-.16 1.5.95C23 4.05 23 6 23 6s1-1.12 1-3.13C24-.02 21 0 21 0h-2v6.35A5.85 5.85 0 0 0 17 6c-2.2 0-4 1.12-4 2.5s1.8 2.5 4 2.5m-6.7 9.48L8.82 18.9a47.54 47.54 0 0 1-1.44 1.13c-.3-.3-.99-1.02-2.04-2.19.9-.83 1.47-1.46 1.72-1.89s.38-.87.38-1.33c0-.6-.27-1.18-.82-1.76-.54-.58-1.33-.87-2.35-.87-1 0-1.79.29-2.34.87-.56.6-.83 1.18-.83 1.79 0 .81.42 1.75 1.25 2.8a6.57 6.57 0 0 0-1.8 1.79 3.46 3.46 0 0 0-.51 1.83c0 .86.3 1.56.92 2.1a3.5 3.5 0 0 0 2.42.83c1.17 0 2.44-.38 3.81-1.14L8.23 24h2.82l-2.09-2.38 1.34-1.14zM3.56 14.1a1.02 1.02 0 0 1 .73-.28c.31 0 .56.08.75.25a.85.85 0 0 1 .28.66c0 .52-.42 1.11-1.26 1.78-.53-.65-.8-1.23-.8-1.74a.9.9 0 0 1 .3-.67m.18 7.9c-.43 0-.78-.12-1.06-.35-.28-.23-.41-.49-.41-.76 0-.6.5-1.3 1.52-2.09a31.23 31.23 0 0 0 2.25 2.44c-.92.5-1.69.76-2.3.76`,\n};\n\nexport const search: { [key: string]: string } = {\n search: `M12.9 14.32a8 8 0 1 1 1.41-1.41l5.35 5.33-1.42 1.42-5.33-5.34zM8 14A6 6 0 1 0 8 2a6 6 0 0 0 0 12z`,\n delete: `M10 8.586L2.929 1.515 1.515 2.929 8.586 10l-7.071 7.071 1.414 1.414L10 11.414l7.071 7.071 1.414-1.414L11.414 10l7.071-7.071-1.414-1.414L10 8.586z`,\n};\n","import { isPlatformBrowser } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n Inject,\n Input,\n NgZone,\n OnDestroy,\n OnInit,\n Output,\n PLATFORM_ID,\n QueryList,\n Renderer2,\n ViewChild,\n ViewChildren,\n} from '@angular/core';\n\nimport {\n categories,\n Emoji,\n EmojiCategory,\n EmojiData,\n EmojiEvent,\n} from '@ctrl/ngx-emoji-mart/ngx-emoji';\nimport { CategoryComponent } from './category.component';\nimport { EmojiFrequentlyService } from './emoji-frequently.service';\nimport { PreviewComponent } from './preview.component';\nimport { SearchComponent } from './search.component';\nimport * as icons from './svgs';\nimport { measureScrollbar } from './utils';\n\nconst I18N: any = {\n search: 'Search',\n emojilist: 'List of emoji',\n notfound: 'No Emoji Found',\n clear: 'Clear',\n categories: {\n search: 'Search Results',\n recent: 'Frequently Used',\n people: 'Smileys & People',\n nature: 'Animals & Nature',\n foods: 'Food & Drink',\n activity: 'Activity',\n places: 'Travel & Places',\n objects: 'Objects',\n symbols: 'Symbols',\n flags: 'Flags',\n custom: 'Custom',\n },\n skintones: {\n 1: 'Default Skin Tone',\n 2: 'Light Skin Tone',\n 3: 'Medium-Light Skin Tone',\n 4: 'Medium Skin Tone',\n 5: 'Medium-Dark Skin Tone',\n 6: 'Dark Skin Tone',\n },\n};\n\n@Component({\n selector: 'emoji-mart',\n templateUrl: './picker.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n preserveWhitespaces: false,\n})\nexport class PickerComponent implements OnInit, OnDestroy {\n @Input() perLine = 9;\n @Input() totalFrequentLines = 4;\n @Input() i18n: any = {};\n @Input() style: any = {};\n @Input() title = 'Emoji Mart™';\n @Input() emoji = 'department_store';\n @Input() darkMode = !!(\n typeof matchMedia === 'function' && matchMedia('(prefers-color-scheme: dark)').matches\n );\n @Input() color = '#ae65c5';\n @Input() hideObsolete = true;\n /** all categories shown */\n @Input() categories: EmojiCategory[] = [];\n /** used to temporarily draw categories */\n @Input() activeCategories: EmojiCategory[] = [];\n @Input() set: Emoji['set'] = 'apple';\n @Input() skin: Emoji['skin'] = 1;\n /** Renders the native unicode emoji */\n @Input() isNative: Emoji['isNative'] = false;\n @Input() emojiSize: Emoji['size'] = 24;\n @Input() sheetSize: Emoji['sheetSize'] = 64;\n @Input() emojisToShowFilter?: (x: string) => boolean;\n @Input() showPreview = true;\n @Input() emojiTooltip = false;\n @Input() autoFocus = false;\n @Input() custom: any[] = [];\n @Input() hideRecent = true;\n @Input() imageUrlFn: Emoji['imageUrlFn'];\n @Input() include?: string[];\n @Input() exclude?: string[];\n @Input() notFoundEmoji = 'sleuth_or_spy';\n @Input() categoriesIcons = icons.categories;\n @Input() searchIcons = icons.search;\n @Input() useButton = false;\n @Input() enableFrequentEmojiSort = false;\n @Input() enableSearch = true;\n @Input() showSingleCategory = false;\n @Input() virtualize = false;\n @Input() virtualizeOffset = 0;\n @Input() recent?: string[];\n @Output() emojiClick = new EventEmitter<any>();\n @Output() emojiSelect = new EventEmitter<any>();\n @Output() skinChange = new EventEmitter<Emoji['skin']>();\n @ViewChild('scrollRef', { static: true }) private scrollRef!: ElementRef;\n @ViewChild(PreviewComponent, { static: false }) previewRef?: PreviewComponent;\n @ViewChild(SearchComponent, { static: false }) searchRef?: SearchComponent;\n @ViewChildren(CategoryComponent) categoryRefs!: QueryList<CategoryComponent>;\n scrollHeight = 0;\n clientHeight = 0;\n clientWidth = 0;\n selected?: string;\n nextScroll?: string;\n scrollTop?: number;\n firstRender = true;\n previewEmoji: any;\n animationFrameRequestId: number | null = null;\n NAMESPACE = 'emoji-mart';\n measureScrollbar = 0;\n RECENT_CATEGORY: EmojiCategory = {\n id: 'recent',\n name: 'Recent',\n emojis: null,\n };\n SEARCH_CATEGORY: EmojiCategory = {\n id: 'search',\n name: 'Search',\n emojis: null,\n anchor: false,\n };\n CUSTOM_CATEGORY: EmojiCategory = {\n id: 'custom',\n name: 'Custom',\n emojis: [],\n };\n private scrollListener!: () => void;\n\n @Input()\n backgroundImageFn: Emoji['backgroundImageFn'] = (set: string, sheetSize: number) =>\n `https://unpkg.com/emoji-datasource-${this.set}@6.0.1/img/${this.set}/sheets-256/${this.sheetSize}.png`\n\n constructor(\n private ngZone: NgZone,\n private renderer: Renderer2,\n private ref: ChangeDetectorRef,\n private frequently: EmojiFrequentlyService,\n @Inject(PLATFORM_ID) private platformId: string,\n ) {}\n\n ngOnInit() {\n // measure scroll\n this.measureScrollbar = measureScrollbar();\n\n this.i18n = { ...I18N, ...this.i18n };\n this.i18n.categories = { ...I18N.categories, ...this.i18n.categories };\n this.skin =\n JSON.parse(\n (isPlatformBrowser(this.platformId) && localStorage.getItem(`${this.NAMESPACE}.skin`)) ||\n 'null',\n ) || this.skin;\n\n const allCategories = [...categories];\n\n if (this.custom.length > 0) {\n this.CUSTOM_CATEGORY.emojis = this.custom.map(emoji => {\n return {\n ...emoji,\n // `<Category />` expects emoji to have an `id`.\n id: emoji.shortNames[0],\n custom: true,\n };\n });\n\n allCategories.push(this.CUSTOM_CATEGORY);\n }\n\n if (this.include !== undefined) {\n allCategories.sort((a, b) => {\n if (this.include!.indexOf(a.id) > this.include!.indexOf(b.id)) {\n return 1;\n }\n return -1;\n });\n }\n\n for (const category of allCategories) {\n const isIncluded =\n this.include && this.include.length ? this.include.indexOf(category.id) > -1 : true;\n const isExcluded =\n this.exclude && this.exclude.length ? this.exclude.indexOf(category.id) > -1 : false;\n if (!isIncluded || isExcluded) {\n continue;\n }\n\n if (this.emojisToShowFilter) {\n const newEmojis = [];\n\n const { emojis } = category;\n // eslint-disable-next-line @typescript-eslint/prefer-for-of\n for (let emojiIndex = 0; emojiIndex < emojis!.length; emojiIndex++) {\n const emoji = emojis![emojiIndex];\n if (this.emojisToShowFilter(emoji)) {\n newEmojis.push(emoji);\n }\n }\n\n if (newEmojis.length) {\n const newCategory = {\n emojis: newEmojis,\n name: category.name,\n id: category.id,\n };\n\n this.categories.push(newCategory);\n }\n } else {\n this.categories.push(category);\n }\n\n this.categoriesIcons = { ...icons.categories, ...this.categoriesIcons };\n this.searchIcons = { ...icons.search, ...this.searchIcons };\n }\n\n const includeRecent =\n this.include && this.include.length\n ? this.include.indexOf(this.RECENT_CATEGORY.id) > -1\n : true;\n const excludeRecent =\n this.exclude && this.exclude.length\n ? this.exclude.indexOf(this.RECENT_CATEGORY.id) > -1\n : false;\n if (includeRecent && !excludeRecent) {\n this.hideRecent = false;\n this.categories.unshift(this.RECENT_CATEGORY);\n }\n\n if (this.categories[0]) {\n this.categories[0].first = true;\n }\n\n this.categories.unshift(this.SEARCH_CATEGORY);\n this.selected = this.categories.filter(category => category.first)[0].name;\n\n // Need to be careful if small number of categories\n const categoriesToLoadFirst = Math.min(this.categories.length, 3);\n this.setActiveCategories(\n (this.activeCategories = this.categories.slice(0, categoriesToLoadFirst)),\n );\n\n // Trim last active category\n const lastActiveCategoryEmojis = this.categories[categoriesToLoadFirst - 1].emojis!.slice();\n this.categories[categoriesToLoadFirst - 1].emojis = lastActiveCategoryEmojis.slice(0, 60);\n\n setTimeout(() => {\n // Restore last category\n this.categories[categoriesToLoadFirst - 1].emojis = lastActiveCategoryEmojis;\n this.setActiveCategories(this.categories);\n // The `setTimeout` will trigger the change detection, but since we're inside\n // the OnPush component we can run change detection locally starting from this\n // component and going down to the children.\n this.ref.detectChanges();\n\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n isPlatformBrowser(this.platformId) &&\n this.ngZone.runOutsideAngular(() => {\n // The `updateCategoriesSize` doesn't change properties that are used\n // in templates, thus this is run in the context of the root zone to avoid\n // running change detection.\n requestAnimationFrame(() => {\n this.updateCategoriesSize();\n });\n });\n });\n\n this.ngZone.runOutsideAngular(() => {\n // DOM events that are listened by Angular inside the template trigger change detection\n // and also wrapped into additional functions that call `markForCheck()`. We listen `scroll`\n // in the context of the root zone since it will not trigger change detection each time\n // the `scroll` event is dispatched.\n this.scrollListener = this.renderer.listen(this.scrollRef.nativeElement, 'scroll', () => {\n this.handleScroll();\n });\n });\n }\n\n ngOnDestroy(): void {\n this.scrollListener();\n // This is called here because the component might be destroyed\n // but there will still be a `requestAnimationFrame` callback in the queue\n // that calls `detectChanges()` on the `ViewRef`. This will lead to a runtime\n // exception if the `detectChanges()` is called after the `ViewRef` is destroyed.\n this.cancelAnimationFrame();\n }\n\n setActiveCategories(categoriesToMakeActive: Array<EmojiCategory>) {\n if (this.showSingleCategory) {\n this.activeCategories = categoriesToMakeActive.filter(\n x => x.name === this.selected || x === this.SEARCH_CATEGORY,\n );\n } else {\n this.activeCategories = categoriesToMakeActive;\n }\n }\n updateCategoriesSize() {\n this.categoryRefs.forEach(component => component.memoizeSize());\n\n if (this.scrollRef) {\n const target = this.scrollRef.nativeElement;\n this.scrollHeight = target.scrollHeight;\n this.clientHeight = target.clientHeight;\n this.clientWidth = target.clientWidth;\n }\n }\n handleAnchorClick($event: { category: EmojiCategory; index: number }) {\n this.updateCategoriesSize();\n this.selected = $event.category.name;\n this.setActiveCategories(this.categories);\n\n if (this.SEARCH_CATEGORY.emojis) {\n this.handleSearch(null);\n this.searchRef?.clear();\n this.handleAnchorClick($event);\n return;\n }\n\n const component = this.categoryRefs.find(n => n.id === $event.category.id);\n if (component) {\n let { top } = component;\n\n if ($event.category.first) {\n top = 0;\n } else {\n top += 1;\n }\n this.scrollRef.nativeElement.scrollTop = top;\n }\n this.nextScroll = $event.category.name;\n\n // handle component scrolling to load emojis\n for (const category of this.categories) {\n const componentToScroll = this.categoryRefs.find(({ id }) => id === category.id);\n componentToScroll?.handleScroll(this.scrollRef.nativeElement.scrollTop);\n }\n }\n categoryTrack(index: number, item: any) {\n return item.id;\n }\n handleScroll(noSelectionChange = false) {\n if (this.nextScroll) {\n this.selected = this.nextScroll;\n this.nextScroll = undefined;\n this.ref.detectChanges();\n return;\n }\n if (!this.scrollRef) {\n return;\n }\n if (this.showSingleCategory) {\n return;\n }\n\n let activeCategory: EmojiCategory | undefined;\n if (this.SEARCH_CATEGORY.emojis) {\n activeCategory = this.SEARCH_CATEGORY;\n } else {\n const target = this.scrollRef.nativeElement;\n // check scroll is not at bottom\n if (target.scrollTop === 0) {\n // hit the TOP\n activeCategory = this.categories.find(n => n.first === true);\n } else if (target.scrollHeight - target.scrollTop === this.clientHeight) {\n // scrolled to bottom activate last category\n activeCategory = this.categories[this.categories.length - 1];\n } else {\n // scrolling\n for (const category of this.categories) {\n const component = this.categoryRefs.find(({ id }) => id === category.id);\n const active: boolean | undefined = component?.handleScroll(target.scrollTop);\n if (active) {\n activeCategory = category;\n }\n }\n }\n\n this.scrollTop = target.scrollTop;\n }\n // This will allow us to run the change detection only when the category changes.\n if (!noSelectionChange && activeCategory && activeCategory.name !== this.selected) {\n this.selected = activeCategory.name;\n this.ref.detectChanges();\n } else if (noSelectionChange) {\n this.ref.detectChanges();\n }\n }\n handleSearch($emojis: any[] | null) {\n this.SEARCH_CATEGORY.emojis = $emojis;\n for (const component of this.categoryRefs.toArray()) {\n if (component.name === 'Search') {\n component.emojis = $emojis;\n component.updateDisplay($emojis ? 'block' : 'none');\n } else {\n component.updateDisplay($emojis ? 'none' : 'block');\n }\n }\n\n this.scrollRef.nativeElement.scrollTop = 0;\n this.handleScroll();\n }\n\n handleEnterKey($event: Event, emoji?: EmojiData) {\n if (!emoji) {\n if (this.SEARCH_CATEGORY.emojis !== null && this.SEARCH_CATEGORY.emojis.length) {\n emoji = this.SEARCH_CATEGORY.emojis[0];\n if (emoji) {\n this.emojiSelect.emit({ $event, emoji });\n } else {\n return;\n }\n }\n }\n\n if (!this.hideRecent && !this.recent && emoji) {\n this.frequently.add(emoji);\n }\n\n const component = this.categoryRefs.toArray()[1];\n if (component && this.enableFrequentEmojiSort) {\n component.getEmojis();\n component.ref.markForCheck();\n }\n }\n handleEmojiOver($event: EmojiEvent) {\n if (!this.showPreview || !this.previewRef) {\n return;\n }\n\n const emojiData = this.CUSTOM_CATEGORY.emojis!.find(\n (customEmoji: any) => customEmoji.id === $event.emoji.id,\n );\n if (emojiData) {\n $event.emoji = { ...emojiData };\n }\n\n this.previewEmoji = $event.emoji;\n this.cancelAnimationFrame();\n this.ref?.detectChanges();\n }\n handleEmojiLeave() {\n if (!this.showPreview || !this.previewRef) {\n return;\n }\n\n this.ngZone.runOutsideAngular(() => {\n this.animationFrameRequestId = requestAnimationFrame(() => {\n this.previewEmoji = null;\n this.ref.detectChanges();\n });\n });\n }\n handleEmojiClick($event: EmojiEvent) {\n this.emojiClick.emit($event);\n this.emojiSelect.emit($event);\n this.handleEnterKey($event.$event, $event.emoji);\n }\n handleSkinChange(skin: Emoji['skin']) {\n this.skin = skin;\n localStorage.setItem(`${this.NAMESPACE}.skin`, String(skin));\n this.skinChange.emit(skin);\n }\n getWidth(): string {\n if (this.style && this.style.width) {\n return this.style.width;\n }\n return this.perLine * (this.emojiSize + 12) + 12 + 2 + this.measureScrollbar + 'px';\n }\n\n private cancelAnimationFrame(): void {\n if (this.animationFrameRequestId !== null) {\n cancelAnimationFrame(this.animationFrameRequestId);\n this.animationFrameRequestId = null;\n }\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n Output,\n} from '@angular/core';\n\nimport { Emoji } from '@ctrl/ngx-emoji-mart/ngx-emoji';\n\n@Component({\n selector: 'emoji-skins',\n template: `\n <section\n class=\"emoji-mart-skin-swatches\"\n [class.opened]=\"opened\"\n >\n <span\n *ngFor=\"let skinTone of skinTones\"\n class=\"emoji-mart-skin-swatch\"\n [class.selected]=\"skinTone === skin\"\n >\n <span\n (click)=\"this.handleClick(skinTone)\"\n (keyup.enter)=\"handleClick(skinTone)\"\n (keyup.space)=\"handleClick(skinTone)\"\n class=\"emoji-mart-skin emoji-mart-skin-tone-{{ skinTone }}\"\n role=\"button\"\n [tabIndex]=\"tabIndex(skinTone)\"\n [attr.aria-hidden]=\"!isVisible(skinTone)\"\n [attr.aria-pressed]=\"pressed(skinTone)\"\n [attr.aria-haspopup]=\"!!isSelected(skinTone)\"\n [attr.aria-expanded]=\"expanded(skinTone)\"\n [attr.aria-label]=\"i18n.skintones[skinTone]\"\n [title]=\"i18n.skintones[skinTone]\"\n ></span>\n </span>\n </section>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n preserveWhitespaces: false,\n})\nexport class SkinComponent {\n /** currently selected skin */\n @Input() skin?: Emoji['skin'];\n @Input() i18n: any;\n @Output() changeSkin = new EventEmitter<number>();\n opened = false;\n skinTones = [1, 2, 3, 4, 5, 6];\n\n toggleOpen() {\n this.opened = !this.opened;\n }\n\n isSelected(skinTone: Emoji['skin']): boolean {\n return skinTone === this.skin;\n }\n\n isVisible(skinTone: Emoji['skin']): boolean {\n return this.opened || this.isSelected(skinTone);\n }\n\n pressed(skinTone: Emoji['skin']) {\n return this.opened ? !!this.isSelected(skinTone) : '';\n }\n\n tabIndex(skinTone: Emoji['skin']) {\n return this.isVisible(skinTone) ? '0' : '';\n }\n\n expanded(skinTone: Emoji['skin']) {\n return this.isSelected(skinTone) ? this.opened : '';\n }\n\n handleClick(skin: number) {\n if (!this.opened) {\n this.opened = true;\n return;\n }\n this.opened = false;\n if (skin !== this.skin) {\n this.changeSkin.emit(skin);\n }\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\nimport { EmojiModule } from '@ctrl/ngx-emoji-mart/ngx-emoji';\nimport { AnchorsComponent } from './anchors.component';\nimport { CategoryComponent } from './category.component';\nimport { PickerComponent } from './picker.component';\nimport { PreviewComponent } from './preview.component';\nimport { SearchComponent } from './search.component';\nimport { SkinComponent } from './skins.component';\n\n@NgModule({\n imports: [CommonModule, FormsModule, EmojiModule],\n exports: [\n PickerComponent,\n AnchorsComponent,\n CategoryComponent,\n SearchComponent,\n PreviewComponent,\n SkinComponent,\n ],\n declarations: [\n PickerComponent,\n AnchorsComponent,\n CategoryComponent,\n SearchComponent,\n PreviewComponent,\n SkinComponent,\n ],\n})\nexport class PickerModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["EventEmitter","Component","ChangeDetectionStrategy","Input","Output","isPlatformBrowser","Injectable","Inject","PLATFORM_ID","Subject","ChangeDetectorRef","EmojiService","ViewChild","categories","icons.categories","icons.search","NgZone","Renderer2","ViewChildren","NgModule","CommonModule","FormsModule","EmojiModule"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"__symbolic":"module","version":4,"metadata":{"AnchorsComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":10,"character":1},"arguments":[{"selector":"emoji-mart-anchors","template":"\n <div class=\"emoji-mart-anchors\">\n <ng-template ngFor let-category [ngForOf]=\"categories\" let-idx=\"index\" [ngForTrackBy]=\"trackByFn\">\n <span\n *ngIf=\"category.anchor !== false\"\n [attr.title]=\"i18n.categories[category.id]\"\n (click)=\"this.handleClick($event, idx)\"\n class=\"emoji-mart-anchor\"\n [class.emoji-mart-anchor-selected]=\"category.name === selected\"\n [style.color]=\"category.name === selected ? color : null\"\n >\n <div>\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" width=\"24\" height=\"24\">\n <path [attr.d]=\"icons[category.id]\" />\n </svg>\n </div>\n <span class=\"emoji-mart-anchor-bar\" [style.background-color]=\"color\"></span>\n </span>\n </ng-template>\n </div>\n ","changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":33,"character":19},"member":"OnPush"},"preserveWhitespaces":false}]}],"members":{"categories":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":37,"character":3}}]}],"color":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":38,"character":3}}]}],"selected":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":39,"character":3}}]}],"i18n":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":40,"character":3}}]}],"icons":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":41,"character":3}}]}],"anchorClick":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":42,"character":3}}]}],"trackByFn":[{"__symbolic":"method"}],"handleClick":[{"__symbolic":"method"}]}},"CategoryComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":19,"character":1},"arguments":[{"selector":"emoji-category","template":"\n <section\n #container\n class=\"emoji-mart-category\"\n [attr.aria-label]=\"i18n.categories[id]\"\n [class.emoji-mart-no-results]=\"emojis && !emojis.length\"\n [ngStyle]=\"containerStyles\"\n >\n <div class=\"emoji-mart-category-label\" [ngStyle]=\"labelStyles\" [attr.data-name]=\"name\">\n <!-- already labeled by the section aria-label -->\n <span #label [ngStyle]=\"labelSpanStyles\" aria-hidden=\"true\">\n {{ i18n.categories[id] }}\n </span>\n </div>\n\n <div\n *ngIf=\"virtualize; else normalRenderTemplate\"\n >\n <div *ngIf=\"filteredEmojis$ | async as filteredEmojis\">\n <ngx-emoji\n *ngFor=\"let emoji of filteredEmojis; trackBy: trackById\"\n [emoji]=\"emoji\"\n [size]=\"emojiSize\"\n [skin]=\"emojiSkin\"\n [isNative]=\"emojiIsNative\"\n [set]=\"emojiSet\"\n [sheetSize]=\"emojiSheetSize\"\n [forceSize]=\"emojiForceSize\"\n [tooltip]=\"emojiTooltip\"\n [backgroundImageFn]=\"emojiBackgroundImageFn\"\n [imageUrlFn]=\"emojiImageUrlFn\"\n [hideObsolete]=\"hideObsolete\"\n [useButton]=\"emojiUseButton\"\n (emojiOver)=\"emojiOver.emit($event)\"\n (emojiLeave)=\"emojiLeave.emit($event)\"\n (emojiClick)=\"emojiClick.emit($event)\"\n ></ngx-emoji>\n </div>\n </div>\n\n <div *ngIf=\"emojis && !emojis.length\">\n <div>\n <ngx-emoji\n [emoji]=\"notFoundEmoji\"\n size=\"38\"\n [skin]=\"emojiSkin\"\n [isNative]=\"emojiIsNative\"\n [set]=\"emojiSet\"\n [sheetSize]=\"emojiSheetSize\"\n [forceSize]=\"emojiForceSize\"\n [tooltip]=\"emojiTooltip\"\n [backgroundImageFn]=\"emojiBackgroundImageFn\"\n [useButton]=\"emojiUseButton\"\n ></ngx-emoji>\n </div>\n\n <div class=\"emoji-mart-no-results-label\">\n {{ i18n.notfound }}\n </div>\n </div>\n </section>\n\n <ng-template #normalRenderTemplate>\n <div *ngIf=\"emojis\">\n <ngx-emoji\n *ngFor=\"let emoji of emojis; trackBy: trackById\"\n [emoji]=\"emoji\"\n [size]=\"emojiSize\"\n [skin]=\"emojiSkin\"\n [isNative]=\"emojiIsNative\"\n [set]=\"emojiSet\"\n [sheetSize]=\"emojiSheetSize\"\n [forceSize]=\"emojiForceSize\"\n [tooltip]=\"emojiTooltip\"\n [backgroundImageFn]=\"emojiBackgroundImageFn\"\n [imageUrlFn]=\"emojiImageUrlFn\"\n [hideObsolete]=\"hideObsolete\"\n [useButton]=\"emojiUseButton\"\n (emojiOver)=\"emojiOver.emit($event)\"\n (emojiLeave)=\"emojiLeave.emit($event)\"\n (emojiClick)=\"emojiClick.emit($event)\"\n ></ngx-emoji>\n </div>\n </ng-template>\n ","changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":106,"character":19},"member":"OnPush"},"preserveWhitespaces":false}]}],"members":{"emojis":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":110,"character":3}}]}],"hasStickyPosition":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":111,"character":3}}]}],"name":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":112,"character":3}}]}],"perLine":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":113,"character":3}}]}],"totalFrequentLines":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":114,"character":3}}]}],"recent":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":115,"character":3}}]}],"custom":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":116,"character":3}}]}],"i18n":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":117,"character":3}}]}],"id":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":118,"character":3}}]}],"hideObsolete":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":119,"character":3}}]}],"notFoundEmoji":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":120,"character":3}}]}],"virtualize":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":121,"character":3}}]}],"virtualizeOffset":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":122,"character":3}}]}],"emojiIsNative":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":123,"character":3}}]}],"emojiSkin":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":124,"character":3}}]}],"emojiSize":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":125,"character":3}}]}],"emojiSet":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":126,"character":3}}]}],"emojiSheetSize":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":127,"character":3}}]}],"emojiForceSize":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":128,"character":3}}]}],"emojiTooltip":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":129,"character":3}}]}],"emojiBackgroundImageFn":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":130,"character":3}}]}],"emojiImageUrlFn":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":131,"character":3}}]}],"emojiUseButton":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":132,"character":3}}]}],"emojiOver":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":133,"character":3}}]}],"emojiLeave":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":134,"character":3}}]}],"emojiClick":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":135,"character":3}}]}],"container":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":136,"character":3},"arguments":["container",{"static":true}]}]}],"label":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":137,"character":3},"arguments":["label",{"static":true}]}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":150,"character":16},{"__symbolic":"reference","module":"@ctrl/ngx-emoji-mart/ngx-emoji","name":"EmojiService","line":151,"character":26},{"__symbolic":"reference","name":"EmojiFrequentlyService"}]}],"ngOnInit":[{"__symbolic":"method"}],"ngOnChanges":[{"__symbolic":"method"}],"ngAfterViewInit":[{"__symbolic":"method"}],"memoizeSize":[{"__symbolic":"method"}],"handleScroll":[{"__symbolic":"method"}],"getEmojis":[{"__symbolic":"method"}],"updateDisplay":[{"__symbolic":"method"}],"trackById":[{"__symbolic":"method"}],"filterEmojis":[{"__symbolic":"method"}]}},"EmojiFrequentlyService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":5,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":29,"character":15},"arguments":[{"__symbolic":"reference","module":"@angular/core","name":"PLATFORM_ID","line":29,"character":22}]}]],"parameters":[{"__symbolic":"reference","name":"string"}]}],"init":[{"__symbolic":"method"}],"add":[{"__symbolic":"method"}],"get":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"EmojiSearch":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":5,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@ctrl/ngx-emoji-mart/ngx-emoji","name":"EmojiService","line":17,"character":36}]}],"addCustomToPool":[{"__symbolic":"method"}],"search":[{"__symbolic":"method"}],"buildSearch":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"PickerComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":62,"character":1},"arguments":[{"selector":"emoji-mart","changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":65,"character":19},"member":"OnPush"},"preserveWhitespaces":false,"template":"<section\n class=\"emoji-mart {{ darkMode ? 'emoji-mart-dark' : '' }}\"\n [style.width]=\"getWidth()\"\n [ngStyle]=\"style\"\n>\n <div class=\"emoji-mart-bar\">\n <emoji-mart-anchors\n [categories]=\"categories\"\n (anchorClick)=\"handleAnchorClick($event)\"\n [color]=\"color\"\n [selected]=\"selected\"\n [i18n]=\"i18n\"\n [icons]=\"categoriesIcons\"\n ></emoji-mart-anchors>\n </div>\n <emoji-search\n *ngIf=\"enableSearch\"\n [i18n]=\"i18n\"\n (searchResults)=\"handleSearch($event)\"\n (enterKey)=\"handleEnterKey($event)\"\n [include]=\"include\"\n [exclude]=\"exclude\"\n [custom]=\"custom\"\n [autoFocus]=\"autoFocus\"\n [icons]=\"searchIcons\"\n [emojisToShowFilter]=\"emojisToShowFilter\"\n ></emoji-search>\n <section #scrollRef class=\"emoji-mart-scroll\" [attr.aria-label]=\"i18n.emojilist\">\n <emoji-category\n *ngFor=\"let category of activeCategories; let idx = index; trackBy: categoryTrack\"\n [id]=\"category.id\"\n [name]=\"category.name\"\n [emojis]=\"category.emojis\"\n [perLine]=\"perLine\"\n [totalFrequentLines]=\"totalFrequentLines\"\n [hasStickyPosition]=\"isNative\"\n [i18n]=\"i18n\"\n [hideObsolete]=\"hideObsolete\"\n [notFoundEmoji]=\"notFoundEmoji\"\n [custom]=\"category.id === RECENT_CATEGORY.id ? CUSTOM_CATEGORY.emojis : undefined\"\n [recent]=\"category.id === RECENT_CATEGORY.id ? recent : undefined\"\n [virtualize]=\"virtualize\"\n [virtualizeOffset]=\"virtualizeOffset\"\n [emojiIsNative]=\"isNative\"\n [emojiSkin]=\"skin\"\n [emojiSize]=\"emojiSize\"\n [emojiSet]=\"set\"\n [emojiSheetSize]=\"sheetSize\"\n [emojiForceSize]=\"isNative\"\n [emojiTooltip]=\"emojiTooltip\"\n [emojiBackgroundImageFn]=\"backgroundImageFn\"\n [emojiImageUrlFn]=\"imageUrlFn\"\n [emojiUseButton]=\"useButton\"\n (emojiOver)=\"handleEmojiOver($event)\"\n (emojiLeave)=\"handleEmojiLeave()\"\n (emojiClick)=\"handleEmojiClick($event)\"\n ></emoji-category>\n </section>\n <div class=\"emoji-mart-bar\" *ngIf=\"showPreview\">\n <emoji-preview\n [title]=\"title\"\n [emoji]=\"previewEmoji\"\n [idleEmoji]=\"emoji\"\n [emojiIsNative]=\"isNative\"\n [emojiSize]=\"38\"\n [emojiSkin]=\"skin\"\n [emojiSet]=\"set\"\n [i18n]=\"i18n\"\n [emojiSheetSize]=\"sheetSize\"\n [emojiBackgroundImageFn]=\"backgroundImageFn\"\n [emojiImageUrlFn]=\"imageUrlFn\"\n (skinChange)=\"handleSkinChange($event)\"\n ></emoji-preview>\n </div>\n</section>\n"}]}],"members":{"perLine":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":69,"character":3}}]}],"totalFrequentLines":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":70,"character":3}}]}],"i18n":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":71,"character":3}}]}],"style":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":72,"character":3}}]}],"title":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":73,"character":3}}]}],"emoji":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":74,"character":3}}]}],"darkMode":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":75,"character":3}}]}],"color":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":78,"character":3}}]}],"hideObsolete":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":79,"character":3}}]}],"categories":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":81,"character":3}}]}],"activeCategories":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":83,"character":3}}]}],"set":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":84,"character":3}}]}],"skin":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":85,"character":3}}]}],"isNative":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":87,"character":3}}]}],"emojiSize":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":88,"character":3}}]}],"sheetSize":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":89,"character":3}}]}],"emojisToShowFilter":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":90,"character":3}}]}],"showPreview":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":91,"character":3}}]}],"emojiTooltip":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":92,"character":3}}]}],"autoFocus":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":93,"character":3}}]}],"custom":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":94,"character":3}}]}],"hideRecent":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":95,"character":3}}]}],"imageUrlFn":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":96,"character":3}}]}],"include":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":97,"character":3}}]}],"exclude":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":98,"character":3}}]}],"notFoundEmoji":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":99,"character":3}}]}],"categoriesIcons":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":100,"character":3}}]}],"searchIcons":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":101,"character":3}}]}],"useButton":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":102,"character":3}}]}],"enableFrequentEmojiSort":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":103,"character":3}}]}],"enableSearch":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":104,"character":3}}]}],"showSingleCategory":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":105,"character":3}}]}],"virtualize":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":106,"character":3}}]}],"virtualizeOffset":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":107,"character":3}}]}],"recent":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":108,"character":3}}]}],"emojiClick":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":109,"character":3}}]}],"emojiSelect":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":110,"character":3}}]}],"skinChange":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":111,"character":3}}]}],"scrollRef":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":112,"character":3},"arguments":["scrollRef",{"static":true}]}]}],"previewRef":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":113,"character":3},"arguments":[{"__symbolic":"reference","name":"PreviewComponent"},{"static":false}]}]}],"searchRef":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":114,"character":3},"arguments":[{"__symbolic":"reference","name":"SearchComponent"},{"static":false}]}]}],"categoryRefs":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChildren","line":115,"character":3},"arguments":[{"__symbolic":"reference","name":"CategoryComponent"}]}]}],"backgroundImageFn":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":145,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":154,"character":5},"arguments":[{"__symbolic":"reference","module":"@angular/core","name":"PLATFORM_ID","line":154,"character":12}]}]],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"NgZone","line":150,"character":20},{"__symbolic":"reference","module":"@angular/core","name":"Renderer2","line":151,"character":22},{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":152,"character":17},{"__symbolic":"reference","name":"EmojiFrequentlyService"},{"__symbolic":"reference","name":"string"}]}],"ngOnInit":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"setActiveCategories":[{"__symbolic":"method"}],"updateCategoriesSize":[{"__symbolic":"method"}],"handleAnchorClick":[{"__symbolic":"method"}],"categoryTrack":[{"__symbolic":"method"}],"handleScroll":[{"__symbolic":"method"}],"handleSearch":[{"__symbolic":"method"}],"handleEnterKey":[{"__symbolic":"method"}],"handleEmojiOver":[{"__symbolic":"method"}],"handleEmojiLeave":[{"__symbolic":"method"}],"handleEmojiClick":[{"__symbolic":"method"}],"handleSkinChange":[{"__symbolic":"method"}],"getWidth":[{"__symbolic":"method"}],"cancelAnimationFrame":[{"__symbolic":"method"}]}},"PickerModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":12,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":13,"character":12},{"__symbolic":"reference","module":"@angular/forms","name":"FormsModule","line":13,"character":26},{"__symbolic":"reference","module":"@ctrl/ngx-emoji-mart/ngx-emoji","name":"EmojiModule","line":13,"character":39}],"exports":[{"__symbolic":"reference","name":"PickerComponent"},{"__symbolic":"reference","name":"AnchorsComponent"},{"__symbolic":"reference","name":"CategoryComponent"},{"__symbolic":"reference","name":"SearchComponent"},{"__symbolic":"reference","name":"PreviewComponent"},{"__symbolic":"reference","name":"SkinComponent"}],"declarations":[{"__symbolic":"reference","name":"PickerComponent"},{"__symbolic":"reference","name":"AnchorsComponent"},{"__symbolic":"reference","name":"CategoryComponent"},{"__symbolic":"reference","name":"SearchComponent"},{"__symbolic":"reference","name":"PreviewComponent"},{"__symbolic":"reference","name":"SkinComponent"}]}]}],"members":{}},"PreviewComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":12,"character":1},"arguments":[{"selector":"emoji-preview","template":"\n <div class=\"emoji-mart-preview\" *ngIf=\"emoji && emojiData\">\n <div class=\"emoji-mart-preview-emoji\">\n <ngx-emoji\n [emoji]=\"emoji\"\n [size]=\"38\"\n [isNative]=\"emojiIsNative\"\n [skin]=\"emojiSkin\"\n [size]=\"emojiSize\"\n [set]=\"emojiSet\"\n [sheetSize]=\"emojiSheetSize\"\n [backgroundImageFn]=\"emojiBackgroundImageFn\"\n [imageUrlFn]=\"emojiImageUrlFn\"\n ></ngx-emoji>\n </div>\n\n <div class=\"emoji-mart-preview-data\">\n <div class=\"emoji-mart-preview-name\">{{ emojiData.name }}</div>\n <div class=\"emoji-mart-preview-shortname\">\n <span\n class=\"emoji-mart-preview-shortname\"\n *ngFor=\"let short_name of emojiData.shortNames\"\n >\n :{{ short_name }}:\n </span>\n </div>\n <div class=\"emoji-mart-preview-emoticons\">\n <span class=\"emoji-mart-preview-emoticon\" *ngFor=\"let emoticon of listedEmoticons\">\n {{ emoticon }}\n </span>\n </div>\n </div>\n </div>\n\n <div class=\"emoji-mart-preview\" *ngIf=\"!emoji\">\n <div class=\"emoji-mart-preview-emoji\">\n <ngx-emoji\n *ngIf=\"idleEmoji && idleEmoji.length\"\n [isNative]=\"emojiIsNative\"\n [skin]=\"emojiSkin\"\n [set]=\"emojiSet\"\n [emoji]=\"idleEmoji\"\n [backgroundImageFn]=\"emojiBackgroundImageFn\"\n [size]=\"38\"\n [imageUrlFn]=\"emojiImageUrlFn\"\n ></ngx-emoji>\n </div>\n\n <div class=\"emoji-mart-preview-data\">\n <span class=\"emoji-mart-title-label\">{{ title }}</span>\n </div>\n\n <div class=\"emoji-mart-preview-skins\">\n <emoji-skins [skin]=\"emojiSkin\" (changeSkin)=\"skinChange.emit($event)\" [i18n]=\"i18n\">\n </emoji-skins>\n </div>\n </div>\n ","changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":72,"character":19},"member":"OnPush"},"preserveWhitespaces":false}]}],"members":{"title":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":76,"character":3}}]}],"emoji":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":77,"character":3}}]}],"idleEmoji":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":78,"character":3}}]}],"i18n":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":79,"character":3}}]}],"emojiIsNative":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":80,"character":3}}]}],"emojiSkin":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":81,"character":3}}]}],"emojiSize":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":82,"character":3}}]}],"emojiSet":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":83,"character":3}}]}],"emojiSheetSize":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":84,"character":3}}]}],"emojiBackgroundImageFn":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":85,"character":3}}]}],"emojiImageUrlFn":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":86,"character":3}}]}],"skinChange":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":87,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":91,"character":26},{"__symbolic":"reference","module":"@ctrl/ngx-emoji-mart/ngx-emoji","name":"EmojiService","line":91,"character":67}]}],"ngOnChanges":[{"__symbolic":"method"}]}},"SearchComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":15,"character":1},"arguments":[{"selector":"emoji-search","template":"\n <div class=\"emoji-mart-search\">\n <input\n [id]=\"inputId\"\n #inputRef\n type=\"search\"\n (keyup.enter)=\"handleEnterKey($event)\"\n [placeholder]=\"i18n.search\"\n [autofocus]=\"autoFocus\"\n [(ngModel)]=\"query\"\n (ngModelChange)=\"handleChange()\"\n />\n <!--\n Use a <label> in addition to the placeholder for accessibility, but place it off-screen\n http://www.maxability.co.in/2016/01/placeholder-attribute-and-why-it-is-not-accessible/\n -->\n <label class=\"emoji-mart-sr-only\" [htmlFor]=\"inputId\">\n {{ i18n.search }}\n </label>\n <button\n type=\"button\"\n class=\"emoji-mart-search-icon\"\n (click)=\"clear()\"\n (keyup.enter)=\"clear()\"\n [disabled]=\"!isSearching\"\n [attr.aria-label]=\"i18n.clear\"\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 20 20\"\n width=\"13\"\n height=\"13\"\n opacity=\"0.5\"\n >\n <path [attr.d]=\"icon\" />\n </svg>\n </button>\n </div>\n ","preserveWhitespaces":false}]}],"members":{"maxResults":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":59,"character":3}}]}],"autoFocus":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":60,"character":3}}]}],"i18n":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":61,"character":3}}]}],"include":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":62,"character":3}}]}],"exclude":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":63,"character":3}}]}],"custom":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":64,"character":3}}]}],"icons":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":65,"character":3}}]}],"emojisToShowFilter":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":66,"character":3}}]}],"searchResults":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":67,"character":3}}]}],"enterKey":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":68,"character":3}}]}],"inputRef":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":69,"character":3},"arguments":["inputRef",{"static":true}]}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"EmojiSearch"}]}],"ngOnInit":[{"__symbolic":"method"}],"ngAfterViewInit":[{"__symbolic":"method"}],"clear":[{"__symbolic":"method"}],"handleEnterKey":[{"__symbolic":"method"}],"handleSearch":[{"__symbolic":"method"}],"handleChange":[{"__symbolic":"method"}]}},"SkinComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":10,"character":1},"arguments":[{"selector":"emoji-skins","template":"\n <section\n class=\"emoji-mart-skin-swatches\"\n [class.opened]=\"opened\"\n >\n <span\n *ngFor=\"let skinTone of skinTones\"\n class=\"emoji-mart-skin-swatch\"\n [class.selected]=\"skinTone === skin\"\n >\n <span\n (click)=\"this.handleClick(skinTone)\"\n (keyup.enter)=\"handleClick(skinTone)\"\n (keyup.space)=\"handleClick(skinTone)\"\n class=\"emoji-mart-skin emoji-mart-skin-tone-{{ skinTone }}\"\n role=\"button\"\n [tabIndex]=\"tabIndex(skinTone)\"\n [attr.aria-hidden]=\"!isVisible(skinTone)\"\n [attr.aria-pressed]=\"pressed(skinTone)\"\n [attr.aria-haspopup]=\"!!isSelected(skinTone)\"\n [attr.aria-expanded]=\"expanded(skinTone)\"\n [attr.aria-label]=\"i18n.skintones[skinTone]\"\n [title]=\"i18n.skintones[skinTone]\"\n ></span>\n </span>\n </section>\n ","changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":39,"character":19},"member":"OnPush"},"preserveWhitespaces":false}]}],"members":{"skin":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":44,"character":3}}]}],"i18n":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":45,"character":3}}]}],"changeSkin":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":46,"character":3}}]}],"toggleOpen":[{"__symbolic":"method"}],"isSelected":[{"__symbolic":"method"}],"isVisible":[{"__symbolic":"method"}],"pressed":[{"__symbolic":"method"}],"tabIndex":[{"__symbolic":"method"}],"expanded":[{"__symbolic":"method"}],"handleClick":[{"__symbolic":"method"}]}}},"origins":{"AnchorsComponent":"./anchors.component","CategoryComponent":"./category.component","EmojiFrequentlyService":"./emoji-frequently.service","EmojiSearch":"./emoji-search.service","PickerComponent":"./picker.component","PickerModule":"./picker.module","PreviewComponent":"./preview.component","SearchComponent":"./search.component","SkinComponent":"./skins.component"},"importAs":"@ctrl/ngx-emoji-mart"}
@@ -1,54 +0,0 @@
1
- import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, } from '@angular/core';
2
- export class AnchorsComponent {
3
- constructor() {
4
- this.categories = [];
5
- this.icons = {};
6
- this.anchorClick = new EventEmitter();
7
- }
8
- trackByFn(idx, cat) {
9
- return cat.id;
10
- }
11
- handleClick($event, index) {
12
- this.anchorClick.emit({
13
- category: this.categories[index],
14
- index,
15
- });
16
- }
17
- }
18
- AnchorsComponent.decorators = [
19
- { type: Component, args: [{
20
- selector: 'emoji-mart-anchors',
21
- template: `
22
- <div class="emoji-mart-anchors">
23
- <ng-template ngFor let-category [ngForOf]="categories" let-idx="index" [ngForTrackBy]="trackByFn">
24
- <span
25
- *ngIf="category.anchor !== false"
26
- [attr.title]="i18n.categories[category.id]"
27
- (click)="this.handleClick($event, idx)"
28
- class="emoji-mart-anchor"
29
- [class.emoji-mart-anchor-selected]="category.name === selected"
30
- [style.color]="category.name === selected ? color : null"
31
- >
32
- <div>
33
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24" height="24">
34
- <path [attr.d]="icons[category.id]" />
35
- </svg>
36
- </div>
37
- <span class="emoji-mart-anchor-bar" [style.background-color]="color"></span>
38
- </span>
39
- </ng-template>
40
- </div>
41
- `,
42
- changeDetection: ChangeDetectionStrategy.OnPush,
43
- preserveWhitespaces: false
44
- },] }
45
- ];
46
- AnchorsComponent.propDecorators = {
47
- categories: [{ type: Input }],
48
- color: [{ type: Input }],
49
- selected: [{ type: Input }],
50
- i18n: [{ type: Input }],
51
- icons: [{ type: Input }],
52
- anchorClick: [{ type: Output }]
53
- };
54
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5jaG9ycy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbGliL3BpY2tlci9hbmNob3JzLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUNMLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQThCdkIsTUFBTSxPQUFPLGdCQUFnQjtJQTFCN0I7UUEyQlcsZUFBVSxHQUFvQixFQUFFLENBQUM7UUFJakMsVUFBSyxHQUE4QixFQUFFLENBQUM7UUFDckMsZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBOEMsQ0FBQztJQVd6RixDQUFDO0lBVEMsU0FBUyxDQUFDLEdBQVcsRUFBRSxHQUFrQjtRQUN2QyxPQUFPLEdBQUcsQ0FBQyxFQUFFLENBQUM7SUFDaEIsQ0FBQztJQUNELFdBQVcsQ0FBQyxNQUFhLEVBQUUsS0FBYTtRQUN0QyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQztZQUNwQixRQUFRLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUM7WUFDaEMsS0FBSztTQUNOLENBQUMsQ0FBQztJQUNMLENBQUM7OztZQTFDRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLG9CQUFvQjtnQkFDOUIsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW9CVDtnQkFDRCxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtnQkFDL0MsbUJBQW1CLEVBQUUsS0FBSzthQUMzQjs7O3lCQUVFLEtBQUs7b0JBQ0wsS0FBSzt1QkFDTCxLQUFLO21CQUNMLEtBQUs7b0JBQ0wsS0FBSzswQkFDTCxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT3V0cHV0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgRW1vamlDYXRlZ29yeSB9IGZyb20gJ0BjdHJsL25neC1lbW9qaS1tYXJ0L25neC1lbW9qaSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2Vtb2ppLW1hcnQtYW5jaG9ycycsXG4gIHRlbXBsYXRlOiBgXG4gIDxkaXYgY2xhc3M9XCJlbW9qaS1tYXJ0LWFuY2hvcnNcIj5cbiAgICA8bmctdGVtcGxhdGUgbmdGb3IgbGV0LWNhdGVnb3J5IFtuZ0Zvck9mXT1cImNhdGVnb3JpZXNcIiBsZXQtaWR4PVwiaW5kZXhcIiBbbmdGb3JUcmFja0J5XT1cInRyYWNrQnlGblwiPlxuICAgICAgPHNwYW5cbiAgICAgICAgKm5nSWY9XCJjYXRlZ29yeS5hbmNob3IgIT09IGZhbHNlXCJcbiAgICAgICAgW2F0dHIudGl0bGVdPVwiaTE4bi5jYXRlZ29yaWVzW2NhdGVnb3J5LmlkXVwiXG4gICAgICAgIChjbGljayk9XCJ0aGlzLmhhbmRsZUNsaWNrKCRldmVudCwgaWR4KVwiXG4gICAgICAgIGNsYXNzPVwiZW1vamktbWFydC1hbmNob3JcIlxuICAgICAgICBbY2xhc3MuZW1vamktbWFydC1hbmNob3Itc2VsZWN0ZWRdPVwiY2F0ZWdvcnkubmFtZSA9PT0gc2VsZWN0ZWRcIlxuICAgICAgICBbc3R5bGUuY29sb3JdPVwiY2F0ZWdvcnkubmFtZSA9PT0gc2VsZWN0ZWQgPyBjb2xvciA6IG51bGxcIlxuICAgICAgPlxuICAgICAgICA8ZGl2PlxuICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIj5cbiAgICAgICAgICAgIDxwYXRoIFthdHRyLmRdPVwiaWNvbnNbY2F0ZWdvcnkuaWRdXCIgLz5cbiAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiZW1vamktbWFydC1hbmNob3ItYmFyXCIgW3N0eWxlLmJhY2tncm91bmQtY29sb3JdPVwiY29sb3JcIj48L3NwYW4+XG4gICAgICA8L3NwYW4+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC9kaXY+XG4gIGAsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBwcmVzZXJ2ZVdoaXRlc3BhY2VzOiBmYWxzZSxcbn0pXG5leHBvcnQgY2xhc3MgQW5jaG9yc0NvbXBvbmVudCB7XG4gIEBJbnB1dCgpIGNhdGVnb3JpZXM6IEVtb2ppQ2F0ZWdvcnlbXSA9IFtdO1xuICBASW5wdXQoKSBjb2xvcj86IHN0cmluZztcbiAgQElucHV0KCkgc2VsZWN0ZWQ/OiBzdHJpbmc7XG4gIEBJbnB1dCgpIGkxOG46IGFueTtcbiAgQElucHV0KCkgaWNvbnM6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gPSB7fTtcbiAgQE91dHB1dCgpIGFuY2hvckNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjx7IGNhdGVnb3J5OiBFbW9qaUNhdGVnb3J5LCBpbmRleDogbnVtYmVyIH0+KCk7XG5cbiAgdHJhY2tCeUZuKGlkeDogbnVtYmVyLCBjYXQ6IEVtb2ppQ2F0ZWdvcnkpIHtcbiAgICByZXR1cm4gY2F0LmlkO1xuICB9XG4gIGhhbmRsZUNsaWNrKCRldmVudDogRXZlbnQsIGluZGV4OiBudW1iZXIpIHtcbiAgICB0aGlzLmFuY2hvckNsaWNrLmVtaXQoe1xuICAgICAgY2F0ZWdvcnk6IHRoaXMuY2F0ZWdvcmllc1tpbmRleF0sXG4gICAgICBpbmRleCxcbiAgICB9KTtcbiAgfVxufVxuIl19