@ctrl/ngx-emoji-mart 9.1.2 → 9.3.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.
- package/README.md +0 -1
- package/category.component.d.ts +2 -2
- package/esm2022/anchors.component.mjs +3 -3
- package/esm2022/category.component.mjs +12 -12
- package/esm2022/emoji-frequently.service.mjs +3 -3
- package/esm2022/emoji-search.service.mjs +3 -3
- package/esm2022/ngx-emoji/emoji.component.mjs +20 -15
- package/esm2022/ngx-emoji/emoji.module.mjs +4 -4
- package/esm2022/ngx-emoji/emoji.service.mjs +3 -3
- package/esm2022/picker.component.mjs +27 -10
- package/esm2022/picker.module.mjs +4 -4
- package/esm2022/preview.component.mjs +5 -5
- package/esm2022/search.component.mjs +27 -17
- package/esm2022/skins.component.mjs +3 -3
- package/fesm2022/ctrl-ngx-emoji-mart-ngx-emoji.mjs +26 -21
- package/fesm2022/ctrl-ngx-emoji-mart-ngx-emoji.mjs.map +1 -1
- package/fesm2022/ctrl-ngx-emoji-mart.mjs +83 -57
- package/fesm2022/ctrl-ngx-emoji-mart.mjs.map +1 -1
- package/ngx-emoji/emoji.component.d.ts +3 -3
- package/package.json +1 -1
- package/search.component.d.ts +9 -6
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"ctrl-ngx-emoji-mart.mjs","sources":["../../src/lib/picker/anchors.component.ts","../../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/skins.component.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/picker.component.html","../../src/lib/picker/picker.module.ts","../../src/lib/picker/ctrl-ngx-emoji-mart.ts"],"sourcesContent":["import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } 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\n ngFor\n let-category\n [ngForOf]=\"categories\"\n let-idx=\"index\"\n [ngForTrackBy]=\"trackByFn\"\n >\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 standalone: true,\n imports: [CommonModule],\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\n handleClick($event: Event, index: number) {\n this.anchorClick.emit({\n category: this.categories[index],\n index,\n });\n }\n}\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, EmojiComponent, 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 { CommonModule } from '@angular/common';\nimport { Observable, Subject } from 'rxjs';\n\nimport { EmojiFrequentlyService } from './emoji-frequently.service';\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]=\"noEmojiToDisplay\"\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 *ngIf=\"virtualize; else normalRenderTemplate\">\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 (emojiOverOutsideAngular)=\"emojiOverOutsideAngular.emit($event)\"\n (emojiLeaveOutsideAngular)=\"emojiLeaveOutsideAngular.emit($event)\"\n (emojiClick)=\"emojiClick.emit($event)\"\n ></ngx-emoji>\n </div>\n </div>\n\n <div *ngIf=\"noEmojiToDisplay\">\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 <ngx-emoji\n *ngFor=\"let emoji of emojisToDisplay; 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 (emojiOverOutsideAngular)=\"emojiOverOutsideAngular.emit($event)\"\n (emojiLeaveOutsideAngular)=\"emojiLeaveOutsideAngular.emit($event)\"\n (emojiClick)=\"emojiClick.emit($event)\"\n ></ngx-emoji>\n </ng-template>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n preserveWhitespaces: false,\n standalone: true,\n imports: [CommonModule, EmojiComponent],\n})\nexport class CategoryComponent implements OnChanges, OnInit, AfterViewInit {\n @Input() emojis: any[] | null = 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() emojiClick: Emoji['emojiClick'] = new EventEmitter();\n /**\n * Note: the suffix is added explicitly so we know the event is dispatched outside of the Angular zone.\n */\n @Output() emojiOverOutsideAngular: Emoji['emojiOver'] = new EventEmitter();\n @Output() emojiLeaveOutsideAngular: Emoji['emojiLeave'] = new EventEmitter();\n @ViewChild('container', { static: true }) container!: ElementRef;\n @ViewChild('label', { static: true }) label!: ElementRef;\n containerStyles: any = {};\n emojisToDisplay: 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.updateRecentEmojis();\n this.emojisToDisplay = this.filterEmojis();\n\n if (this.noEmojiToDisplay) {\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.emojisToDisplay = this.filterEmojis();\n this.ngAfterViewInit();\n }\n }\n\n ngAfterViewInit() {\n if (!this.virtualize) {\n return;\n }\n\n const { width } = this.container.nativeElement.getBoundingClientRect();\n\n const perRow = Math.floor(width / (this.emojiSize + 12));\n this.rows = Math.ceil(this.emojisToDisplay.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 get noEmojiToDisplay(): boolean {\n return this.emojisToDisplay.length === 0;\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\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 (\n parentHeight + (parentHeight + this.virtualizeOffset) >= top &&\n -height - (parentHeight + this.virtualizeOffset) <= top\n ) {\n this.filteredEmojisSubject.next(this.emojisToDisplay);\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 updateRecentEmojis() {\n if (this.name !== 'Recent') {\n return;\n }\n\n let frequentlyUsed = 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 return;\n }\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 updateDisplay(display: 'none' | 'block') {\n this.containerStyles.display = display;\n this.updateRecentEmojis();\n this.ref.detectChanges();\n }\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 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 { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\n\nimport { Emoji } from '@ctrl/ngx-emoji-mart/ngx-emoji';\n\n@Component({\n selector: 'emoji-skins',\n template: `\n <section class=\"emoji-mart-skin-swatches\" [class.opened]=\"opened\">\n <span\n *ngFor=\"let skinTone of skinTones\"\n class=\"emoji-mart-skin-swatch\"\n [class.selected]=\"skinTone === skin\"\n >\n <span\n (click)=\"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 [attr.title]=\"i18n.skintones[skinTone]\"\n ></span>\n </span>\n </section>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n preserveWhitespaces: false,\n standalone: true,\n imports: [CommonModule],\n})\nexport class SkinComponent {\n /** currently selected skin */\n @Input() skin?: Emoji['skin'];\n @Input() i18n: any;\n @Output() changeSkin = new EventEmitter<Emoji['skin']>();\n opened = false;\n skinTones: Emoji['skin'][] = [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: Emoji['skin']) {\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 { Emoji, EmojiComponent, 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';\nimport { CommonModule } from '@angular/common';\n\nimport { SkinComponent } from './skins.component';\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\" [hidden]=\"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\n [skin]=\"emojiSkin\"\n (changeSkin)=\"skinChange.emit($event)\"\n [i18n]=\"i18n\"\n ></emoji-skins>\n </div>\n </div>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n preserveWhitespaces: false,\n standalone: true,\n imports: [CommonModule, EmojiComponent, SkinComponent],\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<Emoji['skin']>();\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';\nimport { FormsModule } from '@angular/forms';\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 standalone: true,\n imports: [FormsModule],\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 { CommonModule, 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\nimport { AnchorsComponent } from './anchors.component';\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 standalone: true,\n imports: [CommonModule, AnchorsComponent, SearchComponent, PreviewComponent, CategoryComponent],\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: EmojiData | null = null;\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://cdn.jsdelivr.net/npm/emoji-datasource-${set}@14.0.0/img/${set}/sheets-256/${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 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 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.updateRecentEmojis();\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 // Note: `handleEmojiLeave` will be invoked outside of the Angular zone because of the `mouseleave`\n // event set up outside of the Angular zone in `ngx-emoji`. See `setupMouseLeaveListener`.\n // This is done explicitly because we don't have to run redundant change detection since we\n // would still want to leave the Angular zone here when scheduling animation frame.\n this.animationFrameRequestId = requestAnimationFrame(() => {\n this.previewEmoji = null;\n this.ref.detectChanges();\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","<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 (emojiOverOutsideAngular)=\"handleEmojiOver($event)\"\n (emojiLeaveOutsideAngular)=\"handleEmojiLeave()\"\n (emojiClick)=\"handleEmojiClick($event)\"\n ></emoji-category>\n </section>\n <div class=\"emoji-mart-bar\" *ngIf=\"showPreview\">\n <emoji-preview\n [attr.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","import { NgModule } from '@angular/core';\n\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\nconst components = [\n PickerComponent,\n AnchorsComponent,\n CategoryComponent,\n SearchComponent,\n PreviewComponent,\n SkinComponent,\n];\n\n@NgModule({\n imports: components,\n exports: components,\n})\nexport class PickerModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i1","i2.EmojiFrequentlyService","categories","i1.EmojiSearch","i2","icons.categories","icons.search"],"mappings":"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"}
|
1
|
+
{"version":3,"file":"ctrl-ngx-emoji-mart.mjs","sources":["../../src/lib/picker/anchors.component.ts","../../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/skins.component.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/picker.component.html","../../src/lib/picker/picker.module.ts","../../src/lib/picker/ctrl-ngx-emoji-mart.ts"],"sourcesContent":["import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } 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\n ngFor\n let-category\n [ngForOf]=\"categories\"\n let-idx=\"index\"\n [ngForTrackBy]=\"trackByFn\"\n >\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 standalone: true,\n imports: [CommonModule],\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\n handleClick($event: Event, index: number) {\n this.anchorClick.emit({\n category: this.categories[index],\n index,\n });\n }\n}\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, EmojiComponent, 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 { CommonModule } from '@angular/common';\nimport { Observable, Subject } from 'rxjs';\n\nimport { EmojiFrequentlyService } from './emoji-frequently.service';\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]=\"noEmojiToDisplay\"\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 *ngIf=\"virtualize; else normalRenderTemplate\">\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 (emojiOverOutsideAngular)=\"emojiOverOutsideAngular.emit($event)\"\n (emojiLeaveOutsideAngular)=\"emojiLeaveOutsideAngular.emit($event)\"\n (emojiClickOutsideAngular)=\"emojiClickOutsideAngular.emit($event)\"\n ></ngx-emoji>\n </div>\n </div>\n\n <div *ngIf=\"noEmojiToDisplay\">\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 <ngx-emoji\n *ngFor=\"let emoji of emojisToDisplay; 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 (emojiOverOutsideAngular)=\"emojiOverOutsideAngular.emit($event)\"\n (emojiLeaveOutsideAngular)=\"emojiLeaveOutsideAngular.emit($event)\"\n (emojiClickOutsideAngular)=\"emojiClickOutsideAngular.emit($event)\"\n ></ngx-emoji>\n </ng-template>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n preserveWhitespaces: false,\n standalone: true,\n imports: [CommonModule, EmojiComponent],\n})\nexport class CategoryComponent implements OnChanges, OnInit, AfterViewInit {\n @Input() emojis: any[] | null = 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\n /**\n * Note: the suffix is added explicitly so we know the event is dispatched outside of the Angular zone.\n */\n @Output() emojiOverOutsideAngular: Emoji['emojiOver'] = new EventEmitter();\n @Output() emojiLeaveOutsideAngular: Emoji['emojiLeave'] = new EventEmitter();\n @Output() emojiClickOutsideAngular: Emoji['emojiClick'] = new EventEmitter();\n\n @ViewChild('container', { static: true }) container!: ElementRef;\n @ViewChild('label', { static: true }) label!: ElementRef;\n containerStyles: any = {};\n emojisToDisplay: 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.updateRecentEmojis();\n this.emojisToDisplay = this.filterEmojis();\n\n if (this.noEmojiToDisplay) {\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.emojisToDisplay = this.filterEmojis();\n this.ngAfterViewInit();\n }\n }\n\n ngAfterViewInit() {\n if (!this.virtualize) {\n return;\n }\n\n const { width } = this.container.nativeElement.getBoundingClientRect();\n\n const perRow = Math.floor(width / (this.emojiSize + 12));\n this.rows = Math.ceil(this.emojisToDisplay.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 get noEmojiToDisplay(): boolean {\n return this.emojisToDisplay.length === 0;\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\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 (\n parentHeight + (parentHeight + this.virtualizeOffset) >= top &&\n -height - (parentHeight + this.virtualizeOffset) <= top\n ) {\n this.filteredEmojisSubject.next(this.emojisToDisplay);\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 updateRecentEmojis() {\n if (this.name !== 'Recent') {\n return;\n }\n\n let frequentlyUsed = 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 return;\n }\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 updateDisplay(display: 'none' | 'block') {\n this.containerStyles.display = display;\n this.updateRecentEmojis();\n this.ref.detectChanges();\n }\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 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 { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\n\nimport { Emoji } from '@ctrl/ngx-emoji-mart/ngx-emoji';\n\n@Component({\n selector: 'emoji-skins',\n template: `\n <section class=\"emoji-mart-skin-swatches\" [class.opened]=\"opened\">\n <span\n *ngFor=\"let skinTone of skinTones\"\n class=\"emoji-mart-skin-swatch\"\n [class.selected]=\"skinTone === skin\"\n >\n <span\n (click)=\"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 [attr.title]=\"i18n.skintones[skinTone]\"\n ></span>\n </span>\n </section>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n preserveWhitespaces: false,\n standalone: true,\n imports: [CommonModule],\n})\nexport class SkinComponent {\n /** currently selected skin */\n @Input() skin?: Emoji['skin'];\n @Input() i18n: any;\n @Output() changeSkin = new EventEmitter<Emoji['skin']>();\n opened = false;\n skinTones: Emoji['skin'][] = [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: Emoji['skin']) {\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 { Emoji, EmojiComponent, 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';\nimport { CommonModule } from '@angular/common';\n\nimport { SkinComponent } from './skins.component';\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\" [hidden]=\"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\n [skin]=\"emojiSkin\"\n (changeSkin)=\"skinChange.emit($event)\"\n [i18n]=\"i18n\"\n ></emoji-skins>\n </div>\n </div>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n preserveWhitespaces: false,\n standalone: true,\n imports: [CommonModule, EmojiComponent, SkinComponent],\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<Emoji['skin']>();\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 NgZone,\n OnDestroy,\n OnInit,\n Output,\n ViewChild,\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\nimport { EmojiSearch } from './emoji-search.service';\nimport { Subject, fromEvent, takeUntil } from 'rxjs';\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 [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 standalone: true,\n imports: [FormsModule],\n})\nexport class SearchComponent implements AfterViewInit, OnInit, OnDestroy {\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() enterKeyOutsideAngular = new EventEmitter<KeyboardEvent>();\n @ViewChild('inputRef', { static: true }) private inputRef!: ElementRef<HTMLInputElement>;\n isSearching = false;\n icon?: string;\n query = '';\n inputId = `emoji-mart-search-${++id}`;\n\n private destroy$ = new Subject<void>();\n\n constructor(private ngZone: NgZone, private emojiSearch: EmojiSearch) {}\n\n ngOnInit() {\n this.icon = this.icons.search;\n this.setupKeyupListener();\n }\n\n ngAfterViewInit() {\n if (this.autoFocus) {\n this.inputRef.nativeElement.focus();\n }\n }\n\n ngOnDestroy(): void {\n this.destroy$.next();\n }\n\n clear() {\n this.query = '';\n this.handleSearch('');\n this.inputRef.nativeElement.focus();\n }\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\n handleChange() {\n this.handleSearch(this.query);\n }\n\n private setupKeyupListener(): void {\n this.ngZone.runOutsideAngular(() =>\n fromEvent<KeyboardEvent>(this.inputRef.nativeElement, 'keyup')\n .pipe(takeUntil(this.destroy$))\n .subscribe($event => {\n if (!this.query || $event.key !== 'Enter') {\n return;\n }\n this.enterKeyOutsideAngular.emit($event);\n $event.preventDefault();\n }),\n );\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 { CommonModule, 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\nimport { AnchorsComponent } from './anchors.component';\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 standalone: true,\n imports: [CommonModule, AnchorsComponent, SearchComponent, PreviewComponent, CategoryComponent],\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: EmojiData | null = null;\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://cdn.jsdelivr.net/npm/emoji-datasource-${set}@14.0.0/img/${set}/sheets-256/${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 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 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\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): void {\n // Note: the `handleEnterKey` is invoked when the search component dispatches the\n // `enterKeyOutsideAngular` event or when any emoji is clicked thus `emojiClickOutsideAngular`\n // event is dispatched. Both events are dispatched outside of the Angular zone to prevent\n // no-op ticks, basically when users outside of the picker component are not listening\n // to any of these events.\n\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 dispatchInAngularContextIfObserved(this.emojiSelect, this.ngZone, { $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 this.ngZone.run(() => {\n component.updateRecentEmojis();\n component.ref.markForCheck();\n });\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\n handleEmojiLeave() {\n if (!this.showPreview || !this.previewRef) {\n return;\n }\n // Note: `handleEmojiLeave` will be invoked outside of the Angular zone because of the `mouseleave`\n // event set up outside of the Angular zone in `ngx-emoji`. See `setupMouseLeaveListener`.\n // This is done explicitly because we don't have to run redundant change detection since we\n // would still want to leave the Angular zone here when scheduling animation frame.\n this.animationFrameRequestId = requestAnimationFrame(() => {\n this.previewEmoji = null;\n this.ref.detectChanges();\n });\n }\n\n handleEmojiClick($event: EmojiEvent) {\n // Note: we're getting back into the Angular zone because click events on emojis are handled\n // outside of the Angular zone.\n dispatchInAngularContextIfObserved(this.emojiClick, this.ngZone, $event);\n dispatchInAngularContextIfObserved(this.emojiSelect, this.ngZone, $event);\n this.handleEnterKey($event.$event, $event.emoji);\n }\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\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\n/**\n * This is only a helper function because the same code is being re-used many times.\n */\nfunction dispatchInAngularContextIfObserved<T>(\n emitter: EventEmitter<T>,\n ngZone: NgZone,\n value: T,\n): void {\n if (emitter.observed) {\n ngZone.run(() => emitter.emit(value));\n }\n}\n","<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 (enterKeyOutsideAngular)=\"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 (emojiOverOutsideAngular)=\"handleEmojiOver($event)\"\n (emojiLeaveOutsideAngular)=\"handleEmojiLeave()\"\n (emojiClickOutsideAngular)=\"handleEmojiClick($event)\"\n ></emoji-category>\n </section>\n <div class=\"emoji-mart-bar\" *ngIf=\"showPreview\">\n <emoji-preview\n [attr.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","import { NgModule } from '@angular/core';\n\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\nconst components = [\n PickerComponent,\n AnchorsComponent,\n CategoryComponent,\n SearchComponent,\n PreviewComponent,\n SkinComponent,\n];\n\n@NgModule({\n imports: components,\n exports: components,\n})\nexport class PickerModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i1","i2.EmojiFrequentlyService","categories","i1.EmojiSearch","i2","icons.categories","icons.search"],"mappings":"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"}
|
@@ -38,7 +38,6 @@ export declare class EmojiComponent implements OnChanges, Emoji, OnDestroy {
|
|
38
38
|
sheetRows?: number;
|
39
39
|
sheetColumns?: number;
|
40
40
|
useButton?: boolean;
|
41
|
-
emojiClick: Emoji['emojiClick'];
|
42
41
|
/**
|
43
42
|
* Note: `emojiOver` and `emojiOverOutsideAngular` are dispatched on the same event (`mouseenter`), but
|
44
43
|
* for different purposes. The `emojiOverOutsideAngular` event is listened only in `emoji-category`
|
@@ -50,6 +49,8 @@ export declare class EmojiComponent implements OnChanges, Emoji, OnDestroy {
|
|
50
49
|
/** See comments above, this serves the same purpose. */
|
51
50
|
emojiLeave: Emoji['emojiLeave'];
|
52
51
|
emojiLeaveOutsideAngular: Emoji['emojiLeave'];
|
52
|
+
emojiClick: Emoji['emojiClick'];
|
53
|
+
emojiClickOutsideAngular: Emoji['emojiClick'];
|
53
54
|
style: any;
|
54
55
|
title?: string;
|
55
56
|
label: string;
|
@@ -72,8 +73,7 @@ export declare class EmojiComponent implements OnChanges, Emoji, OnDestroy {
|
|
72
73
|
ngOnDestroy(): void;
|
73
74
|
getData(): EmojiData;
|
74
75
|
getSanitizedData(): EmojiData;
|
75
|
-
handleClick($event: Event): void;
|
76
76
|
private setupMouseListeners;
|
77
77
|
static ɵfac: i0.ɵɵFactoryDeclaration<EmojiComponent, never>;
|
78
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<EmojiComponent, "ngx-emoji", never, { "skin": { "alias": "skin"; "required": false; }; "set": { "alias": "set"; "required": false; }; "sheetSize": { "alias": "sheetSize"; "required": false; }; "isNative": { "alias": "isNative"; "required": false; }; "forceSize": { "alias": "forceSize"; "required": false; }; "tooltip": { "alias": "tooltip"; "required": false; }; "size": { "alias": "size"; "required": false; }; "emoji": { "alias": "emoji"; "required": false; }; "fallback": { "alias": "fallback"; "required": false; }; "hideObsolete": { "alias": "hideObsolete"; "required": false; }; "sheetRows": { "alias": "sheetRows"; "required": false; }; "sheetColumns": { "alias": "sheetColumns"; "required": false; }; "useButton": { "alias": "useButton"; "required": false; }; "backgroundImageFn": { "alias": "backgroundImageFn"; "required": false; }; "imageUrlFn": { "alias": "imageUrlFn"; "required": false; }; }, { "
|
78
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<EmojiComponent, "ngx-emoji", never, { "skin": { "alias": "skin"; "required": false; }; "set": { "alias": "set"; "required": false; }; "sheetSize": { "alias": "sheetSize"; "required": false; }; "isNative": { "alias": "isNative"; "required": false; }; "forceSize": { "alias": "forceSize"; "required": false; }; "tooltip": { "alias": "tooltip"; "required": false; }; "size": { "alias": "size"; "required": false; }; "emoji": { "alias": "emoji"; "required": false; }; "fallback": { "alias": "fallback"; "required": false; }; "hideObsolete": { "alias": "hideObsolete"; "required": false; }; "sheetRows": { "alias": "sheetRows"; "required": false; }; "sheetColumns": { "alias": "sheetColumns"; "required": false; }; "useButton": { "alias": "useButton"; "required": false; }; "backgroundImageFn": { "alias": "backgroundImageFn"; "required": false; }; "imageUrlFn": { "alias": "imageUrlFn"; "required": false; }; }, { "emojiOver": "emojiOver"; "emojiOverOutsideAngular": "emojiOverOutsideAngular"; "emojiLeave": "emojiLeave"; "emojiLeaveOutsideAngular": "emojiLeaveOutsideAngular"; "emojiClick": "emojiClick"; "emojiClickOutsideAngular": "emojiClickOutsideAngular"; }, never, ["*", "*"], true, never>;
|
79
79
|
}
|