@banta/sdk 5.8.3 → 5.8.5
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 +2 -2
- package/esm2022/lib/comments/banta-comments/banta-comments.component.mjs +4 -2
- package/esm2022/lib/comments/comment-view/comment-view.component.mjs +29 -16
- package/esm2022/public-api.mjs +1 -1
- package/fesm2022/banta-sdk.mjs +31 -16
- package/fesm2022/banta-sdk.mjs.map +1 -1
- package/lib/chat-source.d.ts +3 -3
- package/lib/comments/banta-comments/banta-comments.component.d.ts +1 -1
- package/lib/comments/comment-view/comment-view.component.d.ts +7 -3
- package/lib/static-chat-source.d.ts +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"banta-sdk.mjs","sources":["../../../projects/sdk/src/lib/common/lazy-connection.ts","../../../projects/sdk/src/lib/common/timer-pool.service.ts","../../../projects/sdk/src/lib/common/timestamp.component.ts","../../../projects/sdk/src/lib/common/lightbox/lightbox.component.ts","../../../projects/sdk/src/lib/common/lightbox/lightbox.component.html","../../../projects/sdk/src/lib/sdk-options.ts","../../../projects/sdk/src/lib/common/markdown-to-html.pipe.ts","../../../projects/sdk/src/lib/common/trust-resource-url.pipe.ts","../../../projects/sdk/src/lib/common/mention-linker.pipe.ts","../../../projects/sdk/src/lib/common/attachment/attachment.component.ts","../../../projects/sdk/src/lib/common/attachment/attachment.component.html","../../../projects/sdk/src/lib/common/attachments/attachments.component.ts","../../../projects/sdk/src/lib/common/attachments/attachments.component.html","../../../projects/sdk/src/lib/common/common.module.ts","../../../projects/sdk/src/lib/emoji/emojis.ts","../../../projects/sdk/src/lib/emoji/emoji-selector-panel/emoji-selector-panel.component.ts","../../../projects/sdk/src/lib/emoji/emoji-selector-panel/emoji-selector-panel.component.html","../../../projects/sdk/src/lib/emoji/emoji-selector-button.component.ts","../../../projects/sdk/src/lib/emoji/emoji.module.ts","../../../projects/sdk/src/lib/chat-backend-base.ts","../../../projects/sdk/src/lib/comments/comment/comment.component.ts","../../../projects/sdk/src/lib/comments/comment/comment.component.html","../../../projects/sdk/src/lib/comments/comment-view/comment-view.component.ts","../../../projects/sdk/src/lib/comments/comment-view/comment-view.component.html","../../../projects/sdk/src/lib/comments/reply-send-options.directive.ts","../../../projects/sdk/src/lib/comments/attachment-button/attachment-button.component.ts","../../../projects/sdk/src/lib/comments/attachment-button/attachment-button.component.html","../../../projects/sdk/src/lib/comments/attachment-scraper.directive.ts","../../../projects/sdk/src/lib/comments/comment-field/comment-field.component.ts","../../../projects/sdk/src/lib/comments/comment-field/comment-field.component.html","../../../projects/sdk/src/lib/comments/banta-comments/banta-comments.component.ts","../../../projects/sdk/src/lib/comments/banta-comments/banta-comments.component.html","../../../projects/sdk/src/lib/chat/chat-message/chat-message.component.ts","../../../projects/sdk/src/lib/chat/chat-message/chat-message.component.html","../../../projects/sdk/src/lib/chat/chat-view/chat-view.component.ts","../../../projects/sdk/src/lib/chat/chat-view/chat-view.component.html","../../../projects/sdk/src/lib/chat/banta-chat/banta-chat.component.ts","../../../projects/sdk/src/lib/chat/banta-chat/banta-chat.component.html","../../../projects/sdk/src/lib/comments/live-comment.component.ts","../../../projects/sdk/src/lib/chat/live-chat-message.component.ts","../../../projects/sdk/src/lib/live-message.component.ts","../../../projects/sdk/src/lib/banta/banta.component.ts","../../../projects/sdk/src/lib/banta/banta.component.html","../../../projects/sdk/src/lib/banta-logo.component.ts","../../../projects/sdk/src/lib/chat/chat.module.ts","../../../projects/sdk/src/lib/comments/comment-sort/comment-sort.component.ts","../../../projects/sdk/src/lib/comments/comment-sort/comment-sort.component.html","../../../projects/sdk/src/lib/comments/comments.module.ts","../../../projects/sdk/src/lib/chat-source.ts","../../../projects/sdk/src/lib/static-chat-source.ts","../../../projects/sdk/src/lib/chat-backend.ts","../../../projects/sdk/src/lib/url-attachments.ts","../../../projects/sdk/src/lib/youtube-attachments.ts","../../../projects/sdk/src/lib/giphy-attachments.ts","../../../projects/sdk/src/lib/tweet-attachments.ts","../../../projects/sdk/src/lib/banta-sdk.module.ts","../../../projects/sdk/src/public-api.ts","../../../projects/sdk/src/banta-sdk.ts"],"sourcesContent":["import { Subject, Observable, ConnectableObservable } from 'rxjs';\r\nimport { publish } from 'rxjs/operators';\r\n\r\nexport interface LazyConnectionOptions<T> {\r\n start : (subject : Subject<T>) => void;\r\n stop : () => void;\r\n}\r\n\r\nexport function lazyConnection<T>(options : LazyConnectionOptions<T>): Observable<T> {\r\n\r\n let obs = new Observable(observer => {\r\n let subject = new Subject<T>();\r\n let subscription = subject.subscribe(observer);\r\n\r\n options.start(subject);\r\n return () => {\r\n subscription.unsubscribe();\r\n options.stop();\r\n };\r\n });\r\n \r\n return (<ConnectableObservable<T>>obs.pipe(publish())).refCount();\r\n}","import { Injectable } from \"@banta/common\";\r\n\r\ninterface TimerState {\r\n handle?;\r\n subscribers: (() => void)[];\r\n}\r\n\r\n/**\r\n * Provides a way to hook in to a shared set of timers, instead of creating a timer per instance.\r\n * This is very useful for cases where the update is not extremely time-sensitive, but happens at scale.\r\n * The principal use case is the TimestampComponent. When several hundred (or several thousand) comments are \r\n * being displayed, we do not want to trigger thousands of independent relative timestamp updates, because over \r\n * time the updates will saturate the CPU since they don't perfectly align. \r\n */\r\n@Injectable()\r\nexport class TimerPool {\r\n private subscriptions = new Map<number, TimerState>();\r\n\r\n private newSubscriptionsNotice;\r\n private newSubscriptions = new Map<number, number>();\r\n\r\n private removedSubscriptionsNotice;\r\n private removedSubscriptions = new Map<number, number>();\r\n\r\n addTimer(interval: number, callback: () => void) {\r\n if (interval <= 0) {\r\n console.warn(`Refusing to set timer with interval of ${interval}!`);\r\n return () => {};\r\n }\r\n\r\n let state: TimerState;\r\n let sizeWas = this.subscriptions.size;\r\n\r\n if (!this.subscriptions.has(interval)) {\r\n state = { subscribers: [] };\r\n state.handle = setInterval(() => {\r\n console.debug(`[Banta/TimerPool] Notifying ${state.subscribers.length} subs [${interval}ms]`);\r\n state.subscribers.forEach(sub => sub());\r\n }, interval);\r\n this.subscriptions.set(interval, state);\r\n } else {\r\n state = this.subscriptions.get(interval);\r\n }\r\n\r\n state.subscribers.push(callback);\r\n\r\n // Debug information //////////////////////////\r\n //\r\n\r\n if (!this.newSubscriptions.has(interval))\r\n this.newSubscriptions.set(interval, 0);\r\n this.newSubscriptions.set(interval, (this.newSubscriptions.get(interval) ?? 0) + 1);\r\n\r\n clearTimeout(this.newSubscriptionsNotice);\r\n this.newSubscriptionsNotice = setTimeout(() => {\r\n for (let [interval, count] of this.newSubscriptions) {\r\n console.debug(`[Banta/TimerPool] ${count} new subscriptions to ${interval}ms [${state.subscribers.length} total]`);\r\n }\r\n\r\n this.newSubscriptions.clear();\r\n });\r\n\r\n //\r\n ///////////////////////////////////////////////\r\n\r\n if (sizeWas === 0) {\r\n console.debug(`[Banta/TimerPool] No longer idle.`);\r\n }\r\n\r\n // Unsubscribe function \r\n\r\n return () => {\r\n let state = this.subscriptions.get(interval);\r\n if (!state)\r\n return;\r\n\r\n let index = state.subscribers.indexOf(callback);\r\n if (index >= 0)\r\n state.subscribers.splice(index, 1);\r\n\r\n if (state.subscribers.length === 0) {\r\n clearInterval(state.handle);\r\n this.subscriptions.delete(interval);\r\n }\r\n\r\n if (!this.removedSubscriptions.has(interval))\r\n this.removedSubscriptions.set(interval, 0);\r\n this.removedSubscriptions.set(interval, (this.removedSubscriptions.get(interval) ?? 0) + 1);\r\n\r\n // Debug information ////////////////////////////////////////////////////////////////////\r\n\r\n clearTimeout(this.removedSubscriptionsNotice);\r\n this.removedSubscriptionsNotice = setTimeout(() => {\r\n for (let [interval, count] of this.removedSubscriptions) {\r\n let state = this.subscriptions.get(interval);\r\n console.debug(`[Banta/TimerPool] ${count} unsubscribed from ${interval}ms [${state?.subscribers?.length ?? 0} remain]`);\r\n }\r\n\r\n if (this.subscriptions.size === 0)\r\n console.debug(`[Banta/TimerPool] All subscriptions have been removed. Now idle.`);\r\n\r\n this.removedSubscriptions.clear();\r\n });\r\n };\r\n }\r\n}","import { Component, Input } from \"@angular/core\";\r\nimport { TimerPool } from \"../../lib/common/timer-pool.service\";\r\n\r\n@Component({\r\n selector: 'banta-timestamp',\r\n template: `\r\n <span *ngIf=\"showAbsolute\" [title]=\"value | date : 'short'\">\r\n {{value | date : 'shortDate'}}\r\n </span>\r\n <span *ngIf=\"!showAbsolute\" [title]=\"value | date : 'short'\">\r\n {{relative}}\r\n </span>\r\n `,\r\n styles: [``]\r\n})\r\nexport class TimestampComponent {\r\n constructor(\r\n private timerPool: TimerPool\r\n ) {\r\n }\r\n\r\n private _value : number;\r\n relative = '';\r\n tooltip = '';\r\n\r\n private timerUnsubscribe: () => void;\r\n private timerInterval: number = 0;\r\n\r\n private _destroyed = false;\r\n\r\n ngOnDestroy() {\r\n this._destroyed = true;\r\n this.timerUnsubscribe?.();\r\n this.timerUnsubscribe = undefined;\r\n }\r\n\r\n @Input()\r\n get value() {\r\n return this._value;\r\n }\r\n\r\n showAbsolute = false;\r\n\r\n update() {\r\n if (this._destroyed)\r\n return;\r\n \r\n let now = Date.now();\r\n let diff = now - this.value;\r\n let minute = 1000*60;\r\n let hour = minute * 60;\r\n let day = hour * 24;\r\n let week = day * 7;\r\n let month = day * 30;\r\n let year = day * 365;\r\n this.showAbsolute = false;\r\n let updateTime = 0;\r\n\r\n if (diff > year) {\r\n this.showAbsolute = true;\r\n this.relative = 'abs';\r\n return;\r\n }\r\n\r\n if (diff > month) {\r\n let months = Math.floor(diff / month);\r\n\r\n if (months === 1)\r\n this.relative = `${months} month ago`;\r\n else\r\n this.relative = `${months} months ago`;\r\n \r\n } else if (diff > week) {\r\n let weeks = Math.floor(diff / week);\r\n\r\n if (weeks === 1)\r\n this.relative = `${weeks} week ago`;\r\n else\r\n this.relative = `${weeks} weeks ago`;\r\n } else if (diff > day) {\r\n let days = Math.floor(diff / day);\r\n if (days === 1)\r\n this.relative = `${days} day ago`;\r\n else\r\n this.relative = `${days} days ago`;\r\n } else if (diff > hour) {\r\n let hours = Math.floor(diff / hour);\r\n if (hours === 1)\r\n this.relative = `${hours} hour ago`;\r\n else\r\n this.relative = `${hours} hours ago`;\r\n \r\n updateTime = 1000 * 60 * 30;\r\n } else if (diff > minute) {\r\n let minutes = Math.floor(diff / minute);\r\n if (minutes === 1)\r\n this.relative = `${minutes} minute ago`;\r\n else\r\n this.relative = `${minutes} minutes ago`;\r\n updateTime = 1000 * 45;\r\n } else if (diff > 30_000) {\r\n this.relative = `about a minute ago`;\r\n updateTime = 1000 * 60;\r\n } else {\r\n this.relative = `just now`;\r\n updateTime = 1000 * 30;\r\n }\r\n \r\n if (typeof window !== 'undefined') {\r\n if (this.timerInterval !== updateTime) {\r\n this.timerInterval = updateTime;\r\n this.timerUnsubscribe?.();\r\n if (updateTime > 0) {\r\n this.timerUnsubscribe = this.timerPool.addTimer(updateTime, () => this.update());\r\n }\r\n }\r\n }\r\n }\r\n\r\n set value(v) {\r\n if (this._value !== v) {\r\n this._value = v;\r\n this.update();\r\n }\r\n }\r\n}","import { Component, ElementRef, ViewChild } from \"@angular/core\";\r\n\r\n@Component({\r\n selector: 'banta-lightbox',\r\n templateUrl: './lightbox.component.html',\r\n styleUrls: ['./lightbox.component.scss']\r\n})\r\nexport class LightboxComponent {\r\n @ViewChild('container') \r\n containerElement: ElementRef<HTMLDivElement>;\r\n\r\n ngAfterViewInit() {\r\n if (typeof window !== 'undefined') {\r\n document.body.appendChild(this.containerElement.nativeElement);\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n this.containerElement.nativeElement.remove();\r\n }\r\n\r\n images: string[];\r\n currentImage: string;\r\n\r\n isOpen: boolean;\r\n\r\n close() {\r\n this.isOpen = false;\r\n }\r\n\r\n open(currentImage: string, images: string[]) {\r\n this.currentImage = currentImage;\r\n this.images = images;\r\n this.isOpen = true;\r\n }\r\n}","<div \r\n class=\"banta-lightbox-container\" \r\n #container\r\n [class.open]=\"isOpen\"\r\n >\r\n\r\n <a class=\"underlay\" (click)=\"close()\" href=\"javascript:;\"></a>\r\n\r\n <a class=\"close-button\" href=\"javascript:;\" (click)=\"close()\">\r\n <mat-icon>close</mat-icon>\r\n </a>\r\n\r\n <img [src]=\"currentImage\" />\r\n</div>\r\n","import { InjectionToken, Type } from \"@angular/core\";\r\nimport { ChatBackendBase } from \"./chat-backend-base\";\r\n\r\nexport interface SdkOptions {\r\n serviceUrl?: string;\r\n emojiUrl?: string;\r\n backendClass?: Type<ChatBackendBase>\r\n}\r\n\r\nexport const BANTA_SDK_OPTIONS = new InjectionToken<SdkOptions>('BANTA_SDK_OPTIONS');","import { Pipe, PipeTransform, inject } from '@angular/core';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\nimport { BANTA_SDK_OPTIONS } from '../sdk-options';\r\n\r\nimport createDOMPurify from 'dompurify';\r\nimport twemoji from 'twemoji';\r\n\r\nimport * as marked from 'marked';\r\n\r\nconst underline = {\r\n name: 'underline',\r\n level: 'inline', // Is this a block-level or inline-level tokenizer?\r\n start(src) { return src.match(/\\+\\+/)?.index; }, // Hint to Marked.js to stop and check for a match\r\n tokenizer(src, tokens) {\r\n const rule = /^\\+\\+(.*?)\\+\\+/; // Regex for the complete token\r\n const match = rule.exec(src);\r\n if (match) {\r\n return { // Token to generate\r\n type: 'underline', // Should match \"name\" above\r\n raw: match[0], // Text to consume from the source\r\n text: this.lexer.inlineTokens(match[1].trim()), // Additional custom properties\r\n };\r\n }\r\n },\r\n renderer(token) {\r\n return `<u>${this.parser.parseInline(token.text)}</u>`;\r\n }\r\n};\r\n\r\nmarked.marked.use({\r\n extensions: [underline]\r\n});\r\n\r\n@Pipe({\r\n name: 'bantaMarkdownToHtml'\r\n})\r\nexport class BantaMarkdownToHtmlPipe implements PipeTransform {\r\n private sanitizer = inject(DomSanitizer);\r\n private sdkOptions = inject(BANTA_SDK_OPTIONS, { optional: true });\r\n\r\n constructor() {\r\n this.renderer = new marked.Renderer();\r\n const linkRenderer = this.renderer.link;\r\n this.renderer.link = token => {\r\n const html = linkRenderer.call(this.renderer, token);\r\n return html.replace(/^<a /, '<a target=\"_blank\" rel=\"noopener noreferrer nofollow\" ');\r\n };\r\n }\r\n\r\n\tprivate get emojiUrl() {\r\n\t\treturn this.sdkOptions?.emojiUrl ?? 'https://cdn.jsdelivr.net/gh/twitter/twemoji@14.0.2/assets/';\r\n\t}\r\n\r\n renderer: marked.Renderer;\r\n transform(value: string) {\r\n if (!value)\r\n return '';\r\n\r\n let purifier = createDOMPurify(window);\r\n \r\n // https://github.com/cure53/DOMPurify/blob/e1c19cf6407d782b666cb1d02a6af191f9cbc09e/demos/hooks-target-blank-demo.html\r\n // Add a hook to make all links open a new window\r\n purifier.addHook('afterSanitizeAttributes', function(node: HTMLElement & { target?: string }) {\r\n // set all elements owning target to target=_blank\r\n if ('target' in node) {\r\n node.setAttribute('target','_blank');\r\n // prevent https://www.owasp.org/index.php/Reverse_Tabnabbing\r\n node.setAttribute('rel', 'noopener noreferrer nofollow');\r\n }\r\n // set non-HTML/MathML links to xlink:show=new\r\n if (!node.hasAttribute('target')\r\n && (node.hasAttribute('xlink:href')\r\n || node.hasAttribute('href'))) {\r\n node.setAttribute('xlink:show', 'new');\r\n }\r\n });\r\n\r\n value = marked.marked.parse(value, {\r\n renderer: this.renderer\r\n }) as string;\r\n\r\n value = twemoji.parse(value, { base: this.emojiUrl });\r\n\r\n return this.sanitizer.bypassSecurityTrustHtml(\r\n purifier.sanitize(value,\r\n {\r\n FORBID_TAGS: ['h1', 'h2', 'h3', 'h4', 'style', 'link', 'script'],\r\n FORBID_ATTR: ['style'],\r\n KEEP_CONTENT: true\r\n }\r\n )\r\n );\r\n }\r\n}","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\n\r\n@Pipe({\r\n name: 'trustResourceUrl'\r\n})\r\nexport class BantaTrustResourceUrlPipe implements PipeTransform {\r\n constructor(\r\n private sanitizer: DomSanitizer\r\n ) {\r\n }\r\n\r\n transform(value: string) {\r\n if (!value)\r\n return undefined;\r\n\r\n return this.sanitizer.bypassSecurityTrustResourceUrl(value);\r\n }\r\n}","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\nimport { ChatMessageMention } from '@banta/common';\r\n\r\n@Pipe({\r\n name: 'mentionLinker'\r\n})\r\nexport class BantaMentionLinkerPipe implements PipeTransform {\r\n transform(value: string, links?: ChatMessageMention[]) {\r\n if (!value)\r\n return '';\r\n\r\n if (!links)\r\n return value;\r\n\r\n let text = value;\r\n\r\n for (let i = 0, max = links.length; i < max; ++i) {\r\n let mention = links[i];\r\n text = text.replace(new RegExp(`${this.escapeRegExp(mention.text)}`, `gi`), `@{${i + 1}}`);\r\n }\r\n\r\n text = text.replace(/@\\{(\\d+)\\}/g, (text, i) => links[i - 1] ? this.formatLink(links[i - 1]) : text);\r\n\r\n return text;\r\n }\r\n\r\n formatLink(link: ChatMessageMention) {\r\n return `<a${ link.external ? ` target=\"_blank\" rel=\"noopener\"` : `` } class=\"mention\" href=\"${link.link}\">${link.text}</a>`;\r\n }\r\n\r\n /**\r\n * https://stackoverflow.com/questions/3446170/escape-string-for-use-in-javascript-regex\r\n */\r\n escapeRegExp(string) {\r\n return string.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&'); // $& means the whole matched string\r\n }\r\n}","import { Component, ElementRef, HostBinding, Input, Output } from \"@angular/core\";\r\nimport { ChatMessageAttachment } from \"@banta/common\";\r\nimport { Subject } from \"rxjs\";\r\n\r\nlet TWITTER_LOADED = false;\r\n\r\n@Component({\r\n selector: 'banta-attachment',\r\n templateUrl: './attachment.component.html',\r\n styleUrls: ['./attachment.component.scss']\r\n})\r\nexport class BantaAttachmentComponent {\r\n constructor(\r\n private elementRef: ElementRef<HTMLElement>\r\n ) {\r\n\r\n }\r\n\r\n private _attachment: ChatMessageAttachment;\r\n @Input() get attachment() { return this._attachment; }\r\n set attachment(value) {\r\n this._attachment = value;\r\n this.checkLoad();\r\n this.loadPlatformSpecific();\r\n }\r\n \r\n @Input() loading = false;\r\n @Input() editing = false;\r\n @Input() loadingMessage: string = 'Please wait...';\r\n @Input() error = false;\r\n @Input() errorMessage: string = 'An error has occurred';\r\n @Output() removed = new Subject<void>();\r\n @Output() activated = new Subject<void>();\r\n @Output() loaded = new Subject<void>();\r\n\r\n private _viewLoaded = false;\r\n ngAfterViewInit() {\r\n this._viewLoaded = true;\r\n this.checkLoad();\r\n }\r\n\r\n private loadTwitterWidgets() {\r\n if (typeof window !== 'undefined')\r\n window['twttr']?.widgets.load();\r\n }\r\n\r\n private loadPlatformSpecific() {\r\n if (typeof window === 'undefined')\r\n return;\r\n \r\n if (this._attachment?.type === 'tweet') {\r\n if (!TWITTER_LOADED && document.querySelector('script[src=\"https://platform.twitter.com/widgets.js\"]'))\r\n TWITTER_LOADED = true;\r\n\r\n if (typeof window !== 'undefined' && !TWITTER_LOADED) {\r\n TWITTER_LOADED = true;\r\n let script = document.createElement('script');\r\n script.src = 'https://platform.twitter.com/widgets.js';\r\n script.async = true;\r\n script.addEventListener('load', () => setTimeout(() => this.loadTwitterWidgets()));\r\n document.body.appendChild(script);\r\n } else {\r\n setTimeout(() => this.loadTwitterWidgets());\r\n }\r\n }\r\n }\r\n\r\n private checkLoad() {\r\n if (!this._attachment || !this._viewLoaded || !this.elementRef?.nativeElement)\r\n return;\r\n\r\n if (typeof window === 'undefined')\r\n this.loaded.next();\r\n else\r\n setTimeout(() => this.loaded.next(), 250);\r\n }\r\n\r\n activate() {\r\n this.activated.next();\r\n }\r\n\r\n remove() {\r\n this.removed.next();\r\n }\r\n\r\n get isError() {\r\n return this.error || this.attachment?.transientState?.error;\r\n }\r\n\r\n get theErrorMessage() {\r\n return this.errorMessage || this.attachment?.transientState?.errorMessage;\r\n }\r\n\r\n @HostBinding('class.loading')\r\n get isLoading() {\r\n return this.editing && (\r\n this.loading || !this.attachment || this.attachment.transientState?.loading \r\n || !this.attachment.url\r\n );\r\n }\r\n\r\n get isImageAttachment() {\r\n return this.attachment?.type?.startsWith('image/');\r\n }\r\n\r\n get hasFrame() {\r\n if (!this.attachment)\r\n return false;\r\n\r\n return this.attachment.type === 'iframe' || (\r\n this.attachment.type === 'card' \r\n && this.attachment.card?.player\r\n );\r\n }\r\n\r\n get frameUrl() {\r\n if (!this.attachment)\r\n return undefined;\r\n \r\n if (this.attachment.type === 'iframe') {\r\n return this.attachment.url;\r\n } else if (this.attachment.type === 'card') {\r\n return this.attachment.card.player;\r\n }\r\n }\r\n}","<button type=\"button\" (click)=\"remove()\" mat-mini-fab color=\"primary\" class=\"remove-button\" *ngIf=\"editing\">\r\n <mat-icon>close</mat-icon>\r\n</button>\r\n\r\n<ng-container *ngIf=\"isError\">\r\n <mat-icon class=\"error\">close</mat-icon>\r\n <em class=\"error\">{{theErrorMessage}}</em>\r\n</ng-container>\r\n<ng-container *ngIf=\"!isError\">\r\n <ng-container *ngIf=\"isLoading\">\r\n <mat-spinner></mat-spinner>\r\n <em>{{loadingMessage}}</em>\r\n </ng-container>\r\n <ng-container *ngIf=\"!isLoading && attachment\">\r\n <iframe *ngIf=\"hasFrame\"\r\n sandbox=\"allow-scripts allow-popups allow-same-origin allow-presentation\" \r\n [src]=\"frameUrl | trustResourceUrl\"></iframe>\r\n <a *ngIf=\"attachment.type === 'card'\" class=\"card-attachment\" [href]=\"attachment.url\" target=\"_blank\" [class.has-image]=\"attachment.card.image\">\r\n <img \r\n *ngIf=\"attachment.card.image\"\r\n class=\"thumbnail\" \r\n [src]=\"attachment.card.image\"\r\n />\r\n <div class=\"description\">\r\n <h1>{{attachment.card.title}}</h1>\r\n <div class=\"summary\">\r\n {{attachment.card.description}}\r\n </div>\r\n <cite>{{attachment.card.url}}</cite>\r\n </div>\r\n </a>\r\n <a class=\"image-attachment\" *ngIf=\"isImageAttachment && attachment.url\" href=\"javascript:;\" (click)=\"activate()\">\r\n <img [src]=\"attachment.url\" alt=\"Image Attachment\">\r\n </a>\r\n <blockquote *ngIf=\"attachment.type === 'tweet'\" \r\n class=\"twitter-tweet\">\r\n <p lang=\"en\" dir=\"ltr\"></p>\r\n <a [href]=\"attachment.url\"></a>\r\n </blockquote>\r\n </ng-container>\r\n</ng-container>","import { Component, Input, Output, ViewChild } from \"@angular/core\";\r\nimport { ChatMessage, ChatMessageAttachment } from \"@banta/common\";\r\nimport { Subject } from \"rxjs\";\r\nimport { LightboxComponent } from \"../lightbox/lightbox.component\";\r\n\r\n@Component({\r\n selector: 'banta-attachments',\r\n templateUrl: './attachments.component.html',\r\n styleUrls: ['./attachments.component.scss']\r\n})\r\nexport class BantaAttachmentsComponent {\r\n @Input() attachments: ChatMessageAttachment[];\r\n @Input() editing = false;\r\n @ViewChild('lightbox') lightbox: LightboxComponent;\r\n @Output() remove = new Subject<ChatMessageAttachment>();\r\n @Output() loaded = new Subject<void>();\r\n\r\n loadedAttachments = new WeakMap<ChatMessageAttachment, boolean>();\r\n\r\n ngAfterViewInit() {\r\n\r\n }\r\n\r\n markAttachmentLoaded(attachment: ChatMessageAttachment) {\r\n this.loadedAttachments.set(attachment, true);\r\n\r\n if (this.allAttachmentsLoaded)\r\n this.loaded.next();\r\n }\r\n\r\n isAttachmentLoaded(attachment: ChatMessageAttachment) {\r\n return this.loadedAttachments.has(attachment);\r\n }\r\n\r\n get allAttachmentsLoaded() {\r\n return this.attachments.every(x => this.isAttachmentLoaded(x));\r\n }\r\n\r\n removeAttachment(attachment: ChatMessageAttachment) {\r\n this.remove.next(attachment);\r\n }\r\n\r\n isImageAttachment(attachment: ChatMessageAttachment) {\r\n if (attachment.type.startsWith('image/'))\r\n return true;\r\n return false;\r\n }\r\n\r\n isCardAttachment(attachment: ChatMessageAttachment) {\r\n if (['card'].includes(attachment.type))\r\n return true;\r\n return false;\r\n }\r\n\r\n showLightbox(image: ChatMessageAttachment) {\r\n this.lightbox.open(\r\n image.url,\r\n this.attachments\r\n .filter(x => x.type === 'image/png')\r\n .map(x => x.url)\r\n )\r\n }\r\n\r\n get validAttachments() {\r\n return this.attachments.filter(x => x.type);\r\n }\r\n\r\n get inlineAttachments() {\r\n return this.validAttachments.filter(x => x.type !== 'card' && (x.style === 'inline' || !x.style));\r\n }\r\n\r\n get blockAttachments() {\r\n return this.validAttachments.filter(x => x.style === 'block' || x.type === 'card');\r\n }\r\n\r\n attachmentId(index: number, attachment: ChatMessageAttachment) {\r\n return attachment.url;\r\n }\r\n}","<ng-container *ngIf=\"attachments?.length > 0\">\r\n <banta-lightbox #lightbox></banta-lightbox>\r\n <div class=\"block-attachments\">\r\n <ng-container *ngFor=\"let attachment of blockAttachments; trackBy: attachmentId\">\r\n <banta-attachment \r\n [attachment]=\"attachment\"\r\n [editing]=\"editing\"\r\n (loaded)=\"markAttachmentLoaded(attachment)\"\r\n (removed)=\"removeAttachment(attachment)\"\r\n (activated)=\"showLightbox(attachment)\"\r\n ></banta-attachment>\r\n </ng-container>\r\n </div>\r\n\r\n <div \r\n class=\"inline-attachments\" \r\n [class.single]=\"attachments?.length === 1\" \r\n *ngIf=\"attachments && attachments?.length > 0\"\r\n >\r\n <ng-container *ngFor=\"let attachment of inlineAttachments; trackBy: attachmentId\">\r\n <banta-attachment \r\n [attachment]=\"attachment\"\r\n [editing]=\"editing\"\r\n (loaded)=\"markAttachmentLoaded(attachment)\"\r\n (removed)=\"removeAttachment(attachment)\"\r\n (activated)=\"showLightbox(attachment)\"\r\n ></banta-attachment>\r\n </ng-container>\r\n </div>\r\n</ng-container>","import { NgModule, ModuleWithProviders } from '@angular/core';\r\nimport { TimestampComponent } from './timestamp.component';\r\nimport { CommonModule } from '@angular/common';\r\nimport { LightboxComponent } from './lightbox/lightbox.component';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { BantaMarkdownToHtmlPipe } from './markdown-to-html.pipe';\r\nimport { BantaAttachmentsComponent } from './attachments/attachments.component';\r\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { BantaTrustResourceUrlPipe } from './trust-resource-url.pipe';\r\nimport { BantaAttachmentComponent } from './attachment/attachment.component';\r\nimport { BantaMentionLinkerPipe } from './mention-linker.pipe';\r\nimport { TimerPool } from './timer-pool.service';\r\n\r\nconst COMPONENTS = [\r\n TimestampComponent,\r\n LightboxComponent,\r\n BantaMarkdownToHtmlPipe,\r\n BantaMentionLinkerPipe,\r\n BantaTrustResourceUrlPipe,\r\n BantaAttachmentComponent,\r\n BantaAttachmentsComponent\r\n];\r\n\r\n@NgModule({\r\n declarations: COMPONENTS,\r\n imports: [\r\n CommonModule,\r\n MatIconModule,\r\n MatProgressSpinnerModule,\r\n MatButtonModule\r\n ],\r\n exports: COMPONENTS\r\n})\r\nexport class BantaCommonModule {\r\n static forRoot(): ModuleWithProviders<BantaCommonModule> {\r\n return {\r\n ngModule: BantaCommonModule,\r\n providers: [\r\n TimerPool\r\n ]\r\n }\r\n }\r\n}","export const EMOJIS = {\r\n \"grinning\": {\r\n \"keywords\": [\"face\", \"smile\", \"happy\", \"joy\", \":D\", \"grin\"],\r\n \"char\": \"😀\",\r\n \"category\": \"people\"\r\n },\r\n \"grimacing\": {\r\n \"keywords\": [\"face\", \"grimace\", \"teeth\"],\r\n \"char\": \"😬\",\r\n \"category\": \"people\"\r\n },\r\n \"grin\": {\r\n \"keywords\": [\"face\", \"happy\", \"smile\", \"joy\", \"kawaii\"],\r\n \"char\": \"😁\",\r\n \"category\": \"people\"\r\n },\r\n \"joy\": {\r\n \"keywords\": [\"face\", \"cry\", \"tears\", \"weep\", \"happy\", \"happytears\", \"haha\"],\r\n \"char\": \"😂\",\r\n \"category\": \"people\"\r\n },\r\n \"smiley\": {\r\n \"keywords\": [\"face\", \"happy\", \"joy\", \"haha\", \":D\", \":)\", \"smile\", \"funny\"],\r\n \"char\": \"😃\",\r\n \"category\": \"people\"\r\n },\r\n \"smile\": {\r\n \"keywords\": [\"face\", \"happy\", \"joy\", \"funny\", \"haha\", \"laugh\", \"like\", \":D\", \":)\"],\r\n \"char\": \"😄\",\r\n \"category\": \"people\"\r\n },\r\n \"sweat_smile\": {\r\n \"keywords\": [\"face\", \"hot\", \"happy\", \"laugh\", \"sweat\", \"smile\", \"relief\"],\r\n \"char\": \"😅\",\r\n \"category\": \"people\"\r\n },\r\n \"laughing\": {\r\n \"keywords\": [\"happy\", \"joy\", \"lol\", \"satisfied\", \"haha\", \"face\", \"glad\", \"XD\", \"laugh\"],\r\n \"char\": \"😆\",\r\n \"category\": \"people\"\r\n },\r\n \"innocent\": {\r\n \"keywords\": [\"face\", \"angel\", \"heaven\", \"halo\"],\r\n \"char\": \"😇\",\r\n \"category\": \"people\"\r\n },\r\n \"wink\": {\r\n \"keywords\": [\"face\", \"happy\", \"mischievous\", \"secret\", \";)\", \"smile\"],\r\n \"char\": \"😉\",\r\n \"category\": \"people\"\r\n },\r\n \"blush\": {\r\n \"keywords\": [\"face\", \"smile\", \"happy\", \"flushed\", \"crush\", \"embarrassed\", \"shy\", \"joy\"],\r\n \"char\": \"😊\",\r\n \"category\": \"people\"\r\n },\r\n \"slightly_smiling\": {\r\n \"keywords\": [\"face\", \"smile\"],\r\n \"char\": \"🙂\",\r\n \"category\": \"people\"\r\n },\r\n \"upside_down\": {\r\n \"keywords\": [\"face\", \"flipped\", \"silly\", \"smile\"],\r\n \"char\": \"🙃\",\r\n \"category\": \"people\"\r\n },\r\n \"relaxed\": {\r\n \"keywords\": [\"face\", \"blush\", \"massage\", \"happiness\"],\r\n \"char\": \"☺️\",\r\n \"category\": \"people\"\r\n },\r\n \"yum\": {\r\n \"keywords\": [\"happy\", \"joy\", \"tongue\", \"smile\", \"face\", \"silly\", \"yummy\", \"nom\"],\r\n \"char\": \"😋\",\r\n \"category\": \"people\"\r\n },\r\n \"relieved\": {\r\n \"keywords\": [\"face\", \"relaxed\", \"phew\", \"massage\", \"happiness\"],\r\n \"char\": \"😌\",\r\n \"category\": \"people\"\r\n },\r\n \"heart_eyes\": {\r\n \"keywords\": [\"face\", \"love\", \"like\", \"affection\", \"valentines\", \"infatuation\", \"crush\", \"heart\"],\r\n \"char\": \"😍\",\r\n \"category\": \"people\"\r\n },\r\n \"kissing_heart\": {\r\n \"keywords\": [\"face\", \"love\", \"like\", \"affection\", \"valentines\", \"infatuation\", \"kiss\"],\r\n \"char\": \"😘\",\r\n \"category\": \"people\"\r\n },\r\n \"kissing\": {\r\n \"keywords\": [\"love\", \"like\", \"face\", \"3\", \"valentines\", \"infatuation\", \"kiss\"],\r\n \"char\": \"😗\",\r\n \"category\": \"people\"\r\n },\r\n \"kissing_smiling_eyes\": {\r\n \"keywords\": [\"face\", \"affection\", \"valentines\", \"infatuation\", \"kiss\"],\r\n \"char\": \"😙\",\r\n \"category\": \"people\"\r\n },\r\n \"kissing_closed_eyes\": {\r\n \"keywords\": [\"face\", \"love\", \"like\", \"affection\", \"valentines\", \"infatuation\", \"kiss\"],\r\n \"char\": \"😚\",\r\n \"category\": \"people\"\r\n },\r\n \"stuck_out_tongue_winking_eye\": {\r\n \"keywords\": [\"face\", \"prank\", \"childish\", \"playful\", \"mischievous\", \"smile\", \"wink\", \"tongue\"],\r\n \"char\": \"😜\",\r\n \"category\": \"people\"\r\n },\r\n \"stuck_out_tongue_closed_eyes\": {\r\n \"keywords\": [\"face\", \"prank\", \"playful\", \"mischievous\", \"smile\", \"tongue\"],\r\n \"char\": \"😝\",\r\n \"category\": \"people\"\r\n },\r\n \"stuck_out_tongue\": {\r\n \"keywords\": [\"face\", \"prank\", \"childish\", \"playful\", \"mischievous\", \"smile\", \"tongue\"],\r\n \"char\": \"😛\",\r\n \"category\": \"people\"\r\n },\r\n \"money_mouth\": {\r\n \"keywords\": [\"face\", \"rich\", \"dollar\", \"money\"],\r\n \"char\": \"🤑\",\r\n \"category\": \"people\"\r\n },\r\n \"nerd\": {\r\n \"keywords\": [\"face\", \"nerdy\", \"geek\", \"dork\"],\r\n \"char\": \"🤓\",\r\n \"category\": \"people\"\r\n },\r\n \"sunglasses\": {\r\n \"keywords\": [\"face\", \"cool\", \"smile\", \"summer\", \"beach\", \"sunglass\"],\r\n \"char\": \"😎\",\r\n \"category\": \"people\"\r\n },\r\n \"hugging\": {\r\n \"keywords\": [\"face\", \"smile\", \"hug\"],\r\n \"char\": \"🤗\",\r\n \"category\": \"people\"\r\n },\r\n \"smirk\": {\r\n \"keywords\": [\"face\", \"smile\", \"mean\", \"prank\", \"smug\", \"sarcasm\"],\r\n \"char\": \"😏\",\r\n \"category\": \"people\"\r\n },\r\n \"no_mouth\": {\r\n \"keywords\": [\"face\", \"hellokitty\"],\r\n \"char\": \"😶\",\r\n \"category\": \"people\"\r\n },\r\n \"neutral_face\": {\r\n \"keywords\": [\"indifference\", \"meh\", \":|\", \"neutral\"],\r\n \"char\": \"😐\",\r\n \"category\": \"people\"\r\n },\r\n \"expressionless\": {\r\n \"keywords\": [\"face\", \"indifferent\", \"-_-\", \"meh\", \"deadpan\"],\r\n \"char\": \"😑\",\r\n \"category\": \"people\"\r\n },\r\n \"unamused\": {\r\n \"keywords\": [\"indifference\", \"bored\", \"straight face\", \"serious\", \"sarcasm\"],\r\n \"char\": \"😒\",\r\n \"category\": \"people\"\r\n },\r\n \"rolling_eyes\": {\r\n \"keywords\": [\"face\", \"eyeroll\", \"frustrated\"],\r\n \"char\": \"🙄\",\r\n \"category\": \"people\"\r\n },\r\n \"thinking\": {\r\n \"keywords\": [\"face\", \"hmmm\", \"think\", \"consider\"],\r\n \"char\": \"🤔\",\r\n \"category\": \"people\"\r\n },\r\n \"flushed\": {\r\n \"keywords\": [\"face\", \"blush\", \"shy\", \"flattered\"],\r\n \"char\": \"😳\",\r\n \"category\": \"people\"\r\n },\r\n \"disappointed\": {\r\n \"keywords\": [\"face\", \"sad\", \"upset\", \"depressed\", \":(\"],\r\n \"char\": \"😞\",\r\n \"category\": \"people\"\r\n },\r\n \"worried\": {\r\n \"keywords\": [\"face\", \"concern\", \"nervous\", \":(\"],\r\n \"char\": \"😟\",\r\n \"category\": \"people\"\r\n },\r\n \"angry\": {\r\n \"keywords\": [\"mad\", \"face\", \"annoyed\", \"frustrated\"],\r\n \"char\": \"😠\",\r\n \"category\": \"people\"\r\n },\r\n \"rage\": {\r\n \"keywords\": [\"angry\", \"mad\", \"hate\", \"despise\"],\r\n \"char\": \"😡\",\r\n \"category\": \"people\"\r\n },\r\n \"pensive\": {\r\n \"keywords\": [\"face\", \"sad\", \"depressed\", \"okay\", \"upset\"],\r\n \"char\": \"😔\",\r\n \"category\": \"people\"\r\n },\r\n \"confused\": {\r\n \"keywords\": [\"face\", \"indifference\", \"huh\", \"weird\", \"hmmm\", \":/\"],\r\n \"char\": \"😕\",\r\n \"category\": \"people\"\r\n },\r\n \"slightly_sad\": {\r\n \"keywords\": [\"face\", \"frowning\", \"disappointed\", \"sad\", \"upset\"],\r\n \"char\": \"🙁\",\r\n \"category\": \"people\"\r\n },\r\n \"white_frowning\": {\r\n \"keywords\": [\"face\", \"sad\", \"upset\", \"frown\"],\r\n \"char\": \"☹\",\r\n \"category\": \"people\"\r\n },\r\n \"persevere\": {\r\n \"keywords\": [\"face\", \"sick\", \"no\", \"upset\", \"oops\"],\r\n \"char\": \"😣\",\r\n \"category\": \"people\"\r\n },\r\n \"confounded\": {\r\n \"keywords\": [\"face\", \"confused\", \"sick\", \"unwell\", \"oops\", \":S\"],\r\n \"char\": \"😖\",\r\n \"category\": \"people\"\r\n },\r\n \"tired_face\": {\r\n \"keywords\": [\"sick\", \"whine\", \"upset\", \"frustrated\"],\r\n \"char\": \"😫\",\r\n \"category\": \"people\"\r\n },\r\n \"weary\": {\r\n \"keywords\": [\"face\", \"tired\", \"sleepy\", \"sad\", \"frustrated\", \"upset\"],\r\n \"char\": \"😩\",\r\n \"category\": \"people\"\r\n },\r\n \"triumph\": {\r\n \"keywords\": [\"face\", \"gas\", \"phew\", \"proud\", \"pride\"],\r\n \"char\": \"😤\",\r\n \"category\": \"people\"\r\n },\r\n \"open_mouth\": {\r\n \"keywords\": [\"face\", \"surprise\", \"impressed\", \"wow\", \"whoa\", \":O\"],\r\n \"char\": \"😮\",\r\n \"category\": \"people\"\r\n },\r\n \"scream\": {\r\n \"keywords\": [\"face\", \"munch\", \"scared\", \"omg\"],\r\n \"char\": \"😱\",\r\n \"category\": \"people\"\r\n },\r\n \"fearful\": {\r\n \"keywords\": [\"face\", \"scared\", \"terrified\", \"nervous\", \"oops\", \"huh\"],\r\n \"char\": \"😨\",\r\n \"category\": \"people\"\r\n },\r\n \"cold_sweat\": {\r\n \"keywords\": [\"face\", \"nervous\", \"sweat\"],\r\n \"char\": \"😰\",\r\n \"category\": \"people\"\r\n },\r\n \"hushed\": {\r\n \"keywords\": [\"face\", \"woo\", \"shh\"],\r\n \"char\": \"😯\",\r\n \"category\": \"people\"\r\n },\r\n \"frowning\": {\r\n \"keywords\": [\"face\", \"aw\", \"what\"],\r\n \"char\": \"😦\",\r\n \"category\": \"people\"\r\n },\r\n \"anguished\": {\r\n \"keywords\": [\"face\", \"stunned\", \"nervous\"],\r\n \"char\": \"😧\",\r\n \"category\": \"people\"\r\n },\r\n \"cry\": {\r\n \"keywords\": [\"face\", \"tears\", \"sad\", \"depressed\", \"upset\", \":'(\"],\r\n \"char\": \"😢\",\r\n \"category\": \"people\"\r\n },\r\n \"disappointed_relieved\": {\r\n \"keywords\": [\"face\", \"phew\", \"sweat\", \"nervous\"],\r\n \"char\": \"😥\",\r\n \"category\": \"people\"\r\n },\r\n \"sleepy\": {\r\n \"keywords\": [\"face\", \"tired\", \"rest\", \"nap\"],\r\n \"char\": \"😪\",\r\n \"category\": \"people\"\r\n },\r\n \"sweat\": {\r\n \"keywords\": [\"face\", \"hot\", \"sad\", \"tired\", \"exercise\"],\r\n \"char\": \"😓\",\r\n \"category\": \"people\"\r\n },\r\n \"sob\": {\r\n \"keywords\": [\"face\", \"cry\", \"tears\", \"sad\", \"upset\", \"depressed\"],\r\n \"char\": \"😭\",\r\n \"category\": \"people\"\r\n },\r\n \"dizzy_face\": {\r\n \"keywords\": [\"spent\", \"unconscious\", \"xox\", \"dizzy\"],\r\n \"char\": \"😵\",\r\n \"category\": \"people\"\r\n },\r\n \"astonished\": {\r\n \"keywords\": [\"face\", \"xox\", \"surprised\", \"poisoned\"],\r\n \"char\": \"😲\",\r\n \"category\": \"people\"\r\n },\r\n \"zipper_mouth\": {\r\n \"keywords\": [\"face\", \"sealed\", \"zipper\", \"secret\"],\r\n \"char\": \"🤐\",\r\n \"category\": \"people\"\r\n },\r\n \"mask\": {\r\n \"keywords\": [\"face\", \"sick\", \"ill\", \"disease\"],\r\n \"char\": \"😷\",\r\n \"category\": \"people\"\r\n },\r\n \"thermometer_face\": {\r\n \"keywords\": [\"sick\", \"temperature\", \"thermometer\", \"cold\"],\r\n \"char\": \"🤒\",\r\n \"category\": \"people\"\r\n },\r\n \"bandage_face\": {\r\n \"keywords\": [\"injured\", \"clumsy\", \"bandage\", \"hurt\"],\r\n \"char\": \"🤕\",\r\n \"category\": \"people\"\r\n },\r\n \"sleeping\": {\r\n \"keywords\": [\"face\", \"tired\", \"sleepy\", \"night\", \"zzz\"],\r\n \"char\": \"😴\",\r\n \"category\": \"people\"\r\n },\r\n \"zzz\": {\r\n \"keywords\": [\"sleepy\", \"tired\"],\r\n \"char\": \"💤\",\r\n \"category\": \"people\"\r\n },\r\n \"hankey\": {\r\n \"keywords\": [\"poop\", \"shitface\", \"fail\", \"turd\", \"shit\"],\r\n \"char\": \"💩\",\r\n \"category\": \"people\"\r\n },\r\n \"smiling_imp\": {\r\n \"keywords\": [\"devil\", \"horns\"],\r\n \"char\": \"😈\",\r\n \"category\": \"people\"\r\n },\r\n \"imp\": {\r\n \"keywords\": [\"devil\", \"angry\", \"horns\"],\r\n \"char\": \"👿\",\r\n \"category\": \"people\"\r\n },\r\n \"japanese_ogre\": {\r\n \"keywords\": [\"monster\", \"red\", \"mask\", \"halloween\", \"scary\", \"creepy\", \"devil\", \"demon\", \"japanese\", \"ogre\"],\r\n \"char\": \"👹\",\r\n \"category\": \"people\"\r\n },\r\n \"japanese_goblin\": {\r\n \"keywords\": [\"red\", \"evil\", \"mask\", \"monster\", \"scary\", \"creepy\", \"japanese\", \"goblin\"],\r\n \"char\": \"👺\",\r\n \"category\": \"people\"\r\n },\r\n \"skull\": {\r\n \"keywords\": [\"dead\", \"skeleton\", \"creepy\"],\r\n \"char\": \"💀\",\r\n \"category\": \"people\"\r\n },\r\n \"ghost\": {\r\n \"keywords\": [\"halloween\", \"spooky\", \"scary\"],\r\n \"char\": \"👻\",\r\n \"category\": \"people\"\r\n },\r\n \"alien\": {\r\n \"keywords\": [\"UFO\", \"paul\", \"weird\", \"outer_space\"],\r\n \"char\": \"👽\",\r\n \"category\": \"people\"\r\n },\r\n \"robot\": {\r\n \"keywords\": [\"computer\", \"machine\"],\r\n \"char\": \"🤖\",\r\n \"category\": \"people\"\r\n },\r\n \"smiley_cat\": {\r\n \"keywords\": [\"animal\", \"cats\", \"happy\", \"smile\"],\r\n \"char\": \"😺\",\r\n \"category\": \"people\"\r\n },\r\n \"smile_cat\": {\r\n \"keywords\": [\"animal\", \"cats\", \"smile\"],\r\n \"char\": \"😸\",\r\n \"category\": \"people\"\r\n },\r\n \"joy_cat\": {\r\n \"keywords\": [\"animal\", \"cats\", \"haha\", \"happy\", \"tears\"],\r\n \"char\": \"😹\",\r\n \"category\": \"people\"\r\n },\r\n \"heart_eyes_cat\": {\r\n \"keywords\": [\"animal\", \"love\", \"like\", \"affection\", \"cats\", \"valentines\", \"heart\"],\r\n \"char\": \"😻\",\r\n \"category\": \"people\"\r\n },\r\n \"smirk_cat\": {\r\n \"keywords\": [\"animal\", \"cats\", \"smirk\"],\r\n \"char\": \"😼\",\r\n \"category\": \"people\"\r\n },\r\n \"kissing_cat\": {\r\n \"keywords\": [\"animal\", \"cats\", \"kiss\"],\r\n \"char\": \"😽\",\r\n \"category\": \"people\"\r\n },\r\n \"scream_cat\": {\r\n \"keywords\": [\"animal\", \"cats\", \"munch\", \"scared\", \"scream\"],\r\n \"char\": \"🙀\",\r\n \"category\": \"people\"\r\n },\r\n \"crying_cat_face\": {\r\n \"keywords\": [\"animal\", \"tears\", \"weep\", \"sad\", \"cats\", \"upset\", \"cry\"],\r\n \"char\": \"😿\",\r\n \"category\": \"people\"\r\n },\r\n \"pouting_cat\": {\r\n \"keywords\": [\"animal\", \"cats\"],\r\n \"char\": \"😾\",\r\n \"category\": \"people\"\r\n },\r\n \"raised_hands\": {\r\n \"keywords\": [\"gesture\", \"hooray\", \"yea\", \"celebration\", \"hands\"],\r\n \"char\": \"🙌\",\r\n \"category\": \"people\"\r\n },\r\n \"clap\": {\r\n \"keywords\": [\"hands\", \"praise\", \"applause\", \"congrats\", \"yay\"],\r\n \"char\": \"👏\",\r\n \"category\": \"people\"\r\n },\r\n \"wave\": {\r\n \"keywords\": [\"hands\", \"gesture\", \"goodbye\", \"solong\", \"farewell\", \"hello\", \"palm\"],\r\n \"char\": \"👋\",\r\n \"category\": \"people\"\r\n },\r\n \"+1\": {\r\n \"keywords\": [\"thumbsup\", \"yes\", \"awesome\", \"good\", \"agree\", \"accept\", \"cool\", \"hand\", \"like\"],\r\n \"char\": \"👍\",\r\n \"category\": \"people\"\r\n },\r\n \"minus1\": { // TODO: should be \"-1\", fix TS bug\r\n \"keywords\": [\"thumbsdown\", \"no\", \"dislike\", \"hand\"],\r\n \"char\": \"👎\",\r\n \"category\": \"people\"\r\n },\r\n \"facepunch\": {\r\n \"keywords\": [\"angry\", \"violence\", \"fist\", \"hit\", \"attack\", \"hand\"],\r\n \"char\": \"👊\",\r\n \"category\": \"people\"\r\n },\r\n \"fist\": {\r\n \"keywords\": [\"fingers\", \"hand\", \"grasp\"],\r\n \"char\": \"✊\",\r\n \"category\": \"people\"\r\n },\r\n \"v\": {\r\n \"keywords\": [\"fingers\", \"ohyeah\", \"hand\", \"peace\", \"victory\", \"two\"],\r\n \"char\": \"✌️\",\r\n \"category\": \"people\"\r\n },\r\n \"ok_hand\": {\r\n \"keywords\": [\"fingers\", \"limbs\", \"perfect\", \"ok\"],\r\n \"char\": \"👌\",\r\n \"category\": \"people\"\r\n },\r\n \"hand\": {\r\n \"keywords\": [\"fingers\", \"stop\", \"highfive\", \"palm\", \"ban\", \"raised_hand\"],\r\n \"char\": \"✋\",\r\n \"category\": \"people\"\r\n },\r\n \"open_hands\": {\r\n \"keywords\": [\"fingers\", \"butterfly\", \"hands\", \"open\"],\r\n \"char\": \"👐\",\r\n \"category\": \"people\"\r\n },\r\n \"muscle\": {\r\n \"keywords\": [\"arm\", \"flex\", \"hand\", \"summer\", \"strong\", \"biceps\"],\r\n \"char\": \"💪\",\r\n \"category\": \"people\"\r\n },\r\n \"pray\": {\r\n \"keywords\": [\"please\", \"hope\", \"wish\", \"namaste\", \"highfive\"],\r\n \"char\": \"🙏\",\r\n \"category\": \"people\"\r\n },\r\n \"point_up\": {\r\n \"keywords\": [\"hand\", \"fingers\", \"direction\", \"up\"],\r\n \"char\": \"☝️\",\r\n \"category\": \"people\"\r\n },\r\n \"point_up_2\": {\r\n \"keywords\": [\"fingers\", \"hand\", \"direction\", \"up\"],\r\n \"char\": \"👆\",\r\n \"category\": \"people\"\r\n },\r\n \"point_down\": {\r\n \"keywords\": [\"fingers\", \"hand\", \"direction\", \"down\"],\r\n \"char\": \"👇\",\r\n \"category\": \"people\"\r\n },\r\n \"point_left\": {\r\n \"keywords\": [\"direction\", \"fingers\", \"hand\", \"left\"],\r\n \"char\": \"👈\",\r\n \"category\": \"people\"\r\n },\r\n \"point_right\": {\r\n \"keywords\": [\"fingers\", \"hand\", \"direction\", \"right\"],\r\n \"char\": \"👉\",\r\n \"category\": \"people\"\r\n },\r\n \"middle_finger\": {\r\n \"keywords\": [\"hand\", \"fingers\", \"rude\"],\r\n \"char\": \"🖕\",\r\n \"category\": \"people\"\r\n },\r\n \"splayed_fingers\": {\r\n \"keywords\": [\"hand\", \"fingers\", \"palm\"],\r\n \"char\": \"🖐\",\r\n \"category\": \"people\"\r\n },\r\n \"sign_of_horns\": {\r\n \"keywords\": [\"hand\", \"fingers\", \"evil_eye\", \"metal\", \"rock_on\"],\r\n \"char\": \"🤘\",\r\n \"category\": \"people\"\r\n },\r\n \"vulcan_salute\": {\r\n \"keywords\": [\"hand\", \"fingers\", \"spock\", \"star trek\"],\r\n \"char\": \"🖖\",\r\n \"category\": \"people\"\r\n },\r\n \"writing_hand\": {\r\n \"keywords\": [\"pen\", \"stationery\", \"write\"],\r\n \"char\": \"✍\",\r\n \"category\": \"people\"\r\n },\r\n \"nail_care\": {\r\n \"keywords\": [\"beauty\", \"manicure\", \"finger\", \"fashion\", \"nail\"],\r\n \"char\": \"💅\",\r\n \"category\": \"people\"\r\n },\r\n \"lips\": {\r\n \"keywords\": [\"mouth\", \"kiss\"],\r\n \"char\": \"👄\",\r\n \"category\": \"people\"\r\n },\r\n \"tongue\": {\r\n \"keywords\": [\"mouth\", \"playful\"],\r\n \"char\": \"👅\",\r\n \"category\": \"people\"\r\n },\r\n \"ear\": {\r\n \"keywords\": [\"face\", \"hear\", \"sound\", \"listen\"],\r\n \"char\": \"👂\",\r\n \"category\": \"people\"\r\n },\r\n \"nose\": {\r\n \"keywords\": [\"smell\", \"sniff\"],\r\n \"char\": \"👃\",\r\n \"category\": \"people\"\r\n },\r\n \"eye\": {\r\n \"keywords\": [\"face\", \"look\", \"see\", \"watch\", \"stare\"],\r\n \"char\": \"👁\",\r\n \"category\": \"people\"\r\n },\r\n \"eyes\": {\r\n \"keywords\": [\"look\", \"watch\", \"stalk\", \"peek\", \"see\"],\r\n \"char\": \"👀\",\r\n \"category\": \"people\"\r\n },\r\n \"bust_in_silhouette\": {\r\n \"keywords\": [\"user\", \"person\", \"human\"],\r\n \"char\": \"👤\",\r\n \"category\": \"people\"\r\n },\r\n \"busts_in_silhouette\": {\r\n \"keywords\": [\"user\", \"person\", \"human\", \"group\", \"team\"],\r\n \"char\": \"👥\",\r\n \"category\": \"people\"\r\n },\r\n \"speaking_head\": {\r\n \"keywords\": [\"user\", \"person\", \"human\"],\r\n \"char\": \"🗣\",\r\n \"category\": \"people\"\r\n },\r\n \"baby\": {\r\n \"keywords\": [\"child\", \"boy\", \"girl\", \"toddler\"],\r\n \"char\": \"👶\",\r\n \"category\": \"people\"\r\n },\r\n \"boy\": {\r\n \"keywords\": [\"man\", \"male\", \"guy\", \"teenager\"],\r\n \"char\": \"👦\",\r\n \"category\": \"people\"\r\n },\r\n \"girl\": {\r\n \"keywords\": [\"female\", \"woman\", \"teenager\"],\r\n \"char\": \"👧\",\r\n \"category\": \"people\"\r\n },\r\n \"man\": {\r\n \"keywords\": [\"mustache\", \"father\", \"dad\", \"guy\", \"classy\", \"sir\", \"moustache\"],\r\n \"char\": \"👨\",\r\n \"category\": \"people\"\r\n },\r\n \"woman\": {\r\n \"keywords\": [\"female\", \"girls\", \"lady\"],\r\n \"char\": \"👩\",\r\n \"category\": \"people\"\r\n },\r\n \"person_with_blond_hair\": {\r\n \"keywords\": [\"man\", \"male\", \"boy\", \"blonde\", \"guy\", \"person\"],\r\n \"char\": \"👱\",\r\n \"category\": \"people\"\r\n },\r\n \"older_man\": {\r\n \"keywords\": [\"human\", \"male\", \"men\", \"old\", \"elder\", \"senior\"],\r\n \"char\": \"👴\",\r\n \"category\": \"people\"\r\n },\r\n \"older_woman\": {\r\n \"keywords\": [\"human\", \"female\", \"women\", \"lady\", \"old\", \"elder\", \"senior\"],\r\n \"char\": \"👵\",\r\n \"category\": \"people\"\r\n },\r\n \"man_with_gua_pi_mao\": {\r\n \"keywords\": [\"male\", \"boy\", \"chinese\"],\r\n \"char\": \"👲\",\r\n \"category\": \"people\"\r\n },\r\n \"man_with_turban\": {\r\n \"keywords\": [\"male\", \"indian\", \"hinduism\", \"arabs\"],\r\n \"char\": \"👳\",\r\n \"category\": \"people\"\r\n },\r\n \"cop\": {\r\n \"keywords\": [\"man\", \"police\", \"law\", \"legal\", \"enforcement\", \"arrest\", \"911\"],\r\n \"char\": \"👮\",\r\n \"category\": \"people\"\r\n },\r\n \"construction_worker\": {\r\n \"keywords\": [\"male\", \"human\", \"wip\", \"guy\", \"build\", \"construction\", \"worker\", \"labor\"],\r\n \"char\": \"👷\",\r\n \"category\": \"people\"\r\n },\r\n \"guardsman\": {\r\n \"keywords\": [\"uk\", \"gb\", \"british\", \"male\", \"guy\", \"royal\"],\r\n \"char\": \"💂\",\r\n \"category\": \"people\"\r\n },\r\n \"sleuth\": {\r\n \"keywords\": [\"human\", \"spy\", \"detective\"],\r\n \"char\": \"🕵\",\r\n \"category\": \"people\"\r\n },\r\n \"santa\": {\r\n \"keywords\": [\"festival\", \"man\", \"male\", \"xmas\", \"father christmas\"],\r\n \"char\": \"🎅\",\r\n \"category\": \"people\"\r\n },\r\n \"angel\": {\r\n \"keywords\": [\"heaven\", \"wings\", \"halo\"],\r\n \"char\": \"👼\",\r\n \"category\": \"people\"\r\n },\r\n \"princess\": {\r\n \"keywords\": [\"girl\", \"woman\", \"female\", \"blond\", \"crown\", \"royal\", \"queen\"],\r\n \"char\": \"👸\",\r\n \"category\": \"people\"\r\n },\r\n \"bride_with_veil\": {\r\n \"keywords\": [\"couple\", \"marriage\", \"wedding\", \"woman\", \"bride\"],\r\n \"char\": \"👰\",\r\n \"category\": \"people\"\r\n },\r\n \"runner\": {\r\n \"keywords\": [\"man\", \"walking\", \"exercise\", \"race\", \"running\"],\r\n \"char\": \"🏃\",\r\n \"category\": \"people\"\r\n },\r\n \"walking\": {\r\n \"keywords\": [\"human\", \"feet\", \"steps\"],\r\n \"char\": \"🚶\",\r\n \"category\": \"people\"\r\n },\r\n \"dancer\": {\r\n \"keywords\": [\"female\", \"girl\", \"woman\", \"fun\"],\r\n \"char\": \"💃\",\r\n \"category\": \"people\"\r\n },\r\n \"dancers\": {\r\n \"keywords\": [\"female\", \"bunny\", \"women\", \"girls\"],\r\n \"char\": \"👯\",\r\n \"category\": \"people\"\r\n },\r\n \"couple\": {\r\n \"keywords\": [\"pair\", \"people\", \"human\", \"love\", \"date\", \"dating\", \"like\", \"affection\", \"valentines\", \"marriage\"],\r\n \"char\": \"👫\",\r\n \"category\": \"people\"\r\n },\r\n \"two_men_holding_hands\": {\r\n \"keywords\": [\"pair\", \"couple\", \"love\", \"like\", \"bromance\", \"friendship\", \"people\", \"human\"],\r\n \"char\": \"👬\",\r\n \"category\": \"people\"\r\n },\r\n \"two_women_holding_hands\": {\r\n \"keywords\": [\"pair\", \"friendship\", \"couple\", \"love\", \"like\", \"female\", \"people\", \"human\"],\r\n \"char\": \"👭\",\r\n \"category\": \"people\"\r\n },\r\n \"bow\": {\r\n \"keywords\": [\"man\", \"male\", \"boy\"],\r\n \"char\": \"🙇\",\r\n \"category\": \"people\"\r\n },\r\n \"information_desk_person\": {\r\n \"keywords\": [\"female\", \"girl\", \"woman\", \"human\", \"information\"],\r\n \"char\": \"💁\",\r\n \"category\": \"people\"\r\n },\r\n \"no_good\": {\r\n \"keywords\": [\"female\", \"girl\", \"woman\", \"nope\"],\r\n \"char\": \"🙅\",\r\n \"category\": \"people\"\r\n },\r\n \"ok_woman\": {\r\n \"keywords\": [\"women\", \"girl\", \"female\", \"pink\", \"human\", \"woman\"],\r\n \"char\": \"🙆\",\r\n \"category\": \"people\"\r\n },\r\n \"raising_hand\": {\r\n \"keywords\": [\"female\", \"girl\", \"woman\"],\r\n \"char\": \"🙋\",\r\n \"category\": \"people\"\r\n },\r\n \"person_with_pouting_face\": {\r\n \"keywords\": [\"female\", \"girl\", \"woman\"],\r\n \"char\": \"🙎\",\r\n \"category\": \"people\"\r\n },\r\n \"person_frowning\": {\r\n \"keywords\": [\"female\", \"girl\", \"woman\", \"sad\", \"depressed\", \"discouraged\", \"unhappy\"],\r\n \"char\": \"🙍\",\r\n \"category\": \"people\"\r\n },\r\n \"haircut\": {\r\n \"keywords\": [\"female\", \"girl\", \"woman\"],\r\n \"char\": \"💇\",\r\n \"category\": \"people\"\r\n },\r\n \"massage\": {\r\n \"keywords\": [\"female\", \"girl\", \"woman\", \"head\"],\r\n \"char\": \"💆\",\r\n \"category\": \"people\"\r\n },\r\n \"couple_with_heart\": {\r\n \"keywords\": [\"pair\", \"love\", \"like\", \"affection\", \"human\", \"dating\", \"valentines\", \"marriage\"],\r\n \"char\": \"💑\",\r\n \"category\": \"people\"\r\n },\r\n \"female_couple_with_heart\": {\r\n \"keywords\": [\"pair\", \"love\", \"like\", \"affection\", \"human\", \"dating\", \"valentines\", \"marriage\"],\r\n \"char\": \"👩❤️👩\",\r\n \"category\": \"people\"\r\n },\r\n \"male_couple_with_heart\": {\r\n \"keywords\": [\"pair\", \"love\", \"like\", \"affection\", \"human\", \"dating\", \"valentines\", \"marriage\"],\r\n \"char\": \"👨❤️👨\",\r\n \"category\": \"people\"\r\n },\r\n \"couplekiss\": {\r\n \"keywords\": [\"pair\", \"valentines\", \"love\", \"like\", \"dating\", \"marriage\"],\r\n \"char\": \"💏\",\r\n \"category\": \"people\"\r\n },\r\n \"female_couplekiss\": {\r\n \"keywords\": [\"pair\", \"valentines\", \"love\", \"like\", \"dating\", \"marriage\"],\r\n \"char\": \"👩❤️💋👩\",\r\n \"category\": \"people\"\r\n },\r\n \"male_couplekiss\": {\r\n \"keywords\": [\"pair\", \"valentines\", \"love\", \"like\", \"dating\", \"marriage\"],\r\n \"char\": \"👨❤️💋👨\",\r\n \"category\": \"people\"\r\n },\r\n \"family\": {\r\n \"keywords\": [\"home\", \"parents\", \"child\", \"mom\", \"dad\", \"father\", \"mother\", \"people\", \"human\"],\r\n \"char\": \"👪\",\r\n \"category\": \"people\"\r\n },\r\n \"family_man_woman_girl\": {\r\n \"keywords\": [\"home\", \"parents\", \"people\", \"human\", \"child\"],\r\n \"char\": \"👨👩👧\",\r\n \"category\": \"people\"\r\n },\r\n \"family_man_woman_girl_boy\": {\r\n \"keywords\": [\"home\", \"parents\", \"people\", \"human\", \"children\"],\r\n \"char\": \"👨👩👧👦\",\r\n \"category\": \"people\"\r\n },\r\n \"family_man_woman_boys\": {\r\n \"keywords\": [\"home\", \"parents\", \"people\", \"human\", \"children\"],\r\n \"char\": \"👨👩👦👦\",\r\n \"category\": \"people\"\r\n },\r\n \"family_man_woman_girls\": {\r\n \"keywords\": [\"home\", \"parents\", \"people\", \"human\", \"children\"],\r\n \"char\": \"👨👩👧👧\",\r\n \"category\": \"people\"\r\n },\r\n \"family_women_boy\": {\r\n \"keywords\": [\"home\", \"parents\", \"people\", \"human\", \"children\"],\r\n \"char\": \"👩👩👦\",\r\n \"category\": \"people\"\r\n },\r\n \"family_women_girl\": {\r\n \"keywords\": [\"home\", \"parents\", \"people\", \"human\", \"children\"],\r\n \"char\": \"👩👩👧\",\r\n \"category\": \"people\"\r\n },\r\n \"family_women_girl_boy\": {\r\n \"keywords\": [\"home\", \"parents\", \"people\", \"human\", \"children\"],\r\n \"char\": \"👩👩👧👦\",\r\n \"category\": \"people\"\r\n },\r\n \"family_women_boys\": {\r\n \"keywords\": [\"home\", \"parents\", \"people\", \"human\", \"children\"],\r\n \"char\": \"👩👩👦👦\",\r\n \"category\": \"people\"\r\n },\r\n \"family_women_girls\": {\r\n \"keywords\": [\"home\", \"parents\", \"people\", \"human\", \"children\"],\r\n \"char\": \"👩👩👧👧\",\r\n \"category\": \"people\"\r\n },\r\n \"family_men_boy\": {\r\n \"keywords\": [\"home\", \"parents\", \"people\", \"human\", \"children\"],\r\n \"char\": \"👨👨👦\",\r\n \"category\": \"people\"\r\n },\r\n \"family_men_girl\": {\r\n \"keywords\": [\"home\", \"parents\", \"people\", \"human\", \"children\"],\r\n \"char\": \"👨👨👧\",\r\n \"category\": \"people\"\r\n },\r\n \"family_men_girl_boy\": {\r\n \"keywords\": [\"home\", \"parents\", \"people\", \"human\", \"children\"],\r\n \"char\": \"👨👨👧👦\",\r\n \"category\": \"people\"\r\n },\r\n \"family_men_boys\": {\r\n \"keywords\": [\"home\", \"parents\", \"people\", \"human\", \"children\"],\r\n \"char\": \"👨👨👦👦\",\r\n \"category\": \"people\"\r\n },\r\n \"family_men_girls\": {\r\n \"keywords\": [\"home\", \"parents\", \"people\", \"human\", \"children\"],\r\n \"char\": \"👨👨👧👧\",\r\n \"category\": \"people\"\r\n },\r\n \"womans_clothes\": {\r\n \"keywords\": [\"fashion\", \"shopping\", \"female\"],\r\n \"char\": \"👚\",\r\n \"category\": \"people\"\r\n },\r\n \"shirt\": {\r\n \"keywords\": [\"fashion\", \"cloth\", \"casual\", \"tshirt\", \"tee\"],\r\n \"char\": \"👕\",\r\n \"category\": \"people\"\r\n },\r\n \"jeans\": {\r\n \"keywords\": [\"fashion\", \"shopping\"],\r\n \"char\": \"👖\",\r\n \"category\": \"people\"\r\n },\r\n \"necktie\": {\r\n \"keywords\": [\"shirt\", \"suitup\", \"formal\", \"fashion\", \"cloth\", \"business\"],\r\n \"char\": \"👔\",\r\n \"category\": \"people\"\r\n },\r\n \"dress\": {\r\n \"keywords\": [\"clothes\", \"fashion\", \"shopping\"],\r\n \"char\": \"👗\",\r\n \"category\": \"people\"\r\n },\r\n \"bikini\": {\r\n \"keywords\": [\"swimming\", \"female\", \"woman\", \"girl\", \"fashion\", \"beach\", \"summer\"],\r\n \"char\": \"👙\",\r\n \"category\": \"people\"\r\n },\r\n \"kimono\": {\r\n \"keywords\": [\"dress\", \"fashion\", \"women\", \"female\", \"japanese\"],\r\n \"char\": \"👘\",\r\n \"category\": \"people\"\r\n },\r\n \"lipstick\": {\r\n \"keywords\": [\"female\", \"girl\", \"fashion\", \"woman\"],\r\n \"char\": \"💄\",\r\n \"category\": \"people\"\r\n },\r\n \"kiss\": {\r\n \"keywords\": [\"face\", \"lips\", \"love\", \"like\", \"affection\", \"valentines\"],\r\n \"char\": \"💋\",\r\n \"category\": \"people\"\r\n },\r\n \"footprints\": {\r\n \"keywords\": [\"feet\", \"tracking\", \"walking\", \"beach\"],\r\n \"char\": \"👣\",\r\n \"category\": \"people\"\r\n },\r\n \"high_heel\": {\r\n \"keywords\": [\"fashion\", \"shoes\", \"female\", \"pumps\", \"stiletto\"],\r\n \"char\": \"👠\",\r\n \"category\": \"people\"\r\n },\r\n \"sandal\": {\r\n \"keywords\": [\"shoes\", \"fashion\", \"flip flops\"],\r\n \"char\": \"👡\",\r\n \"category\": \"people\"\r\n },\r\n \"boot\": {\r\n \"keywords\": [\"shoes\", \"fashion\"],\r\n \"char\": \"👢\",\r\n \"category\": \"people\"\r\n },\r\n \"mans_shoe\": {\r\n \"keywords\": [\"fashion\", \"male\"],\r\n \"char\": \"👞\",\r\n \"category\": \"people\"\r\n },\r\n \"athletic_shoe\": {\r\n \"keywords\": [\"shoes\", \"sports\", \"sneakers\"],\r\n \"char\": \"👟\",\r\n \"category\": \"people\"\r\n },\r\n \"womans_hat\": {\r\n \"keywords\": [\"fashion\", \"accessories\", \"female\", \"lady\", \"spring\"],\r\n \"char\": \"👒\",\r\n \"category\": \"people\"\r\n },\r\n \"tophat\": {\r\n \"keywords\": [\"magic\", \"gentleman\", \"classy\", \"circus\"],\r\n \"char\": \"🎩\",\r\n \"category\": \"people\"\r\n },\r\n \"helmet\": {\r\n \"keywords\": [\"construction\", \"build\"],\r\n \"char\": \"⛑\",\r\n \"category\": \"people\"\r\n },\r\n \"mortar_board\": {\r\n \"keywords\": [\"school\", \"college\", \"degree\", \"university\", \"graduation\", \"cap\", \"hat\", \"legal\", \"learn\", \"education\"],\r\n \"char\": \"🎓\",\r\n \"category\": \"people\"\r\n },\r\n \"crown\": {\r\n \"keywords\": [\"king\", \"kod\", \"leader\", \"royalty\", \"lord\"],\r\n \"char\": \"👑\",\r\n \"category\": \"people\"\r\n },\r\n \"school_satchel\": {\r\n \"keywords\": [\"student\", \"education\", \"bag\", \"backpack\"],\r\n \"char\": \"🎒\",\r\n \"category\": \"people\"\r\n },\r\n \"pouch\": {\r\n \"keywords\": [\"bag\", \"accessories\", \"shopping\"],\r\n \"char\": \"👝\",\r\n \"category\": \"people\"\r\n },\r\n \"purse\": {\r\n \"keywords\": [\"fashion\", \"accessories\", \"money\", \"sales\", \"shopping\"],\r\n \"char\": \"👛\",\r\n \"category\": \"people\"\r\n },\r\n \"handbag\": {\r\n \"keywords\": [\"fashion\", \"accessory\", \"accessories\", \"shopping\"],\r\n \"char\": \"👜\",\r\n \"category\": \"people\"\r\n },\r\n \"briefcase\": {\r\n \"keywords\": [\"business\", \"documents\", \"work\", \"law\", \"legal\"],\r\n \"char\": \"💼\",\r\n \"category\": \"people\"\r\n },\r\n \"eyeglasses\": {\r\n \"keywords\": [\"fashion\", \"accessories\", \"eyesight\", \"nerdy\", \"dork\", \"geek\"],\r\n \"char\": \"👓\",\r\n \"category\": \"people\"\r\n },\r\n \"dark_sunglasses\": {\r\n \"keywords\": [\"face\", \"cool\", \"accessories\"],\r\n \"char\": \"🕶\",\r\n \"category\": \"people\"\r\n },\r\n \"ring\": {\r\n \"keywords\": [\"wedding\", \"propose\", \"marriage\", \"valentines\", \"diamond\", \"fashion\", \"jewelry\", \"gem\", \"engagement\"],\r\n \"char\": \"💍\",\r\n \"category\": \"people\"\r\n },\r\n \"closed_umbrella\": {\r\n \"keywords\": [\"weather\", \"rain\", \"drizzle\"],\r\n \"char\": \"🌂\",\r\n \"category\": \"people\"\r\n },\r\n \"dog\": {\r\n \"keywords\": [\"animal\", \"friend\", \"nature\", \"woof\", \"puppy\", \"pet\", \"faithful\"],\r\n \"char\": \"🐶\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"cat\": {\r\n \"keywords\": [\"animal\", \"meow\", \"nature\", \"pet\", \"kitten\"],\r\n \"char\": \"🐱\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"mouse\": {\r\n \"keywords\": [\"animal\", \"nature\", \"cheese\", \"rodent\"],\r\n \"char\": \"🐭\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"hamster\": {\r\n \"keywords\": [\"animal\", \"nature\"],\r\n \"char\": \"🐹\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"rabbit\": {\r\n \"keywords\": [\"animal\", \"nature\", \"pet\", \"spring\", \"magic\", \"bunny\"],\r\n \"char\": \"🐰\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"bear\": {\r\n \"keywords\": [\"animal\", \"nature\", \"wild\"],\r\n \"char\": \"🐻\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"panda_face\": {\r\n \"keywords\": [\"animal\", \"nature\", \"panda\"],\r\n \"char\": \"🐼\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"koala\": {\r\n \"keywords\": [\"animal\", \"nature\"],\r\n \"char\": \"🐨\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"tiger\": {\r\n \"keywords\": [\"animal\", \"cat\", \"danger\", \"wild\", \"nature\", \"roar\"],\r\n \"char\": \"🐯\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"lion_face\": {\r\n \"keywords\": [\"animal\", \"nature\"],\r\n \"char\": \"🦁\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"cow\": {\r\n \"keywords\": [\"beef\", \"ox\", \"animal\", \"nature\", \"moo\", \"milk\"],\r\n \"char\": \"🐮\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"pig\": {\r\n \"keywords\": [\"animal\", \"oink\", \"nature\"],\r\n \"char\": \"🐷\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"pig_nose\": {\r\n \"keywords\": [\"animal\", \"oink\"],\r\n \"char\": \"🐽\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"frog\": {\r\n \"keywords\": [\"animal\", \"nature\", \"croak\", \"toad\"],\r\n \"char\": \"🐸\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"octopus\": {\r\n \"keywords\": [\"animal\", \"creature\", \"ocean\", \"sea\", \"nature\", \"beach\"],\r\n \"char\": \"🐙\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"monkey_face\": {\r\n \"keywords\": [\"animal\", \"nature\", \"circus\"],\r\n \"char\": \"🐵\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"see_no_evil\": {\r\n \"keywords\": [\"monkey\", \"animal\", \"nature\", \"haha\"],\r\n \"char\": \"🙈\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"hear_no_evil\": {\r\n \"keywords\": [\"animal\", \"monkey\", \"nature\"],\r\n \"char\": \"🙉\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"speak_no_evil\": {\r\n \"keywords\": [\"monkey\", \"animal\", \"nature\", \"omg\"],\r\n \"char\": \"🙊\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"monkey\": {\r\n \"keywords\": [\"animal\", \"nature\", \"banana\", \"circus\"],\r\n \"char\": \"🐒\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"chicken\": {\r\n \"keywords\": [\"animal\", \"cluck\", \"nature\", \"bird\"],\r\n \"char\": \"🐔\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"penguin\": {\r\n \"keywords\": [\"animal\", \"nature\"],\r\n \"char\": \"🐧\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"bird\": {\r\n \"keywords\": [\"animal\", \"nature\", \"fly\", \"tweet\", \"spring\"],\r\n \"char\": \"🐦\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"baby_chick\": {\r\n \"keywords\": [\"animal\", \"chicken\", \"bird\"],\r\n \"char\": \"🐤\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"hatching_chick\": {\r\n \"keywords\": [\"animal\", \"chicken\", \"egg\", \"born\", \"baby\", \"bird\"],\r\n \"char\": \"🐣\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"hatched_chick\": {\r\n \"keywords\": [\"animal\", \"chicken\", \"baby\", \"bird\"],\r\n \"char\": \"🐥\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"wolf\": {\r\n \"keywords\": [\"animal\", \"nature\", \"wild\"],\r\n \"char\": \"🐺\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"boar\": {\r\n \"keywords\": [\"animal\", \"nature\"],\r\n \"char\": \"🐗\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"horse\": {\r\n \"keywords\": [\"animal\", \"brown\", \"nature\"],\r\n \"char\": \"🐴\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"unicorn_face\": {\r\n \"keywords\": [\"animal\", \"nature\", \"mystical\"],\r\n \"char\": \"🦄\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"bee\": {\r\n \"keywords\": [\"animal\", \"insect\", \"nature\", \"bug\", \"spring\", \"honey\"],\r\n \"char\": \"🐝\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"bug\": {\r\n \"keywords\": [\"animal\", \"insect\", \"nature\", \"worm\"],\r\n \"char\": \"🐛\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"snail\": {\r\n \"keywords\": [\"slow\", \"animal\", \"shell\"],\r\n \"char\": \"🐌\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"beetle\": {\r\n \"keywords\": [\"animal\", \"insect\", \"nature\", \"ladybug\"],\r\n \"char\": \"🐞\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"ant\": {\r\n \"keywords\": [\"animal\", \"insect\", \"nature\", \"bug\"],\r\n \"char\": \"🐜\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"spider\": {\r\n \"keywords\": [\"animal\", \"arachnid\"],\r\n \"char\": \"🕷\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"scorpion\": {\r\n \"keywords\": [\"animal\", \"arachnid\"],\r\n \"char\": \"🦂\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"crab\": {\r\n \"keywords\": [\"animal\", \"crustacean\"],\r\n \"char\": \"🦀\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"snake\": {\r\n \"keywords\": [\"animal\", \"evil\", \"nature\", \"hiss\", \"python\"],\r\n \"char\": \"🐍\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"turtle\": {\r\n \"keywords\": [\"animal\", \"slow\", \"nature\", \"tortoise\"],\r\n \"char\": \"🐢\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"tropical_fish\": {\r\n \"keywords\": [\"animal\", \"swim\", \"ocean\", \"beach\", \"nemo\"],\r\n \"char\": \"🐠\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"fish\": {\r\n \"keywords\": [\"animal\", \"food\", \"nature\"],\r\n \"char\": \"🐟\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"blowfish\": {\r\n \"keywords\": [\"animal\", \"nature\", \"food\", \"sea\", \"ocean\"],\r\n \"char\": \"🐡\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"dolphin\": {\r\n \"keywords\": [\"animal\", \"nature\", \"fish\", \"sea\", \"ocean\", \"flipper\", \"fins\", \"beach\"],\r\n \"char\": \"🐬\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"whale\": {\r\n \"keywords\": [\"animal\", \"nature\", \"sea\", \"ocean\"],\r\n \"char\": \"🐳\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"whale2\": {\r\n \"keywords\": [\"animal\", \"nature\", \"sea\", \"ocean\"],\r\n \"char\": \"🐋\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"crocodile\": {\r\n \"keywords\": [\"animal\", \"nature\", \"reptile\", \"lizard\", \"alligator\"],\r\n \"char\": \"🐊\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"leopard\": {\r\n \"keywords\": [\"animal\", \"nature\"],\r\n \"char\": \"🐆\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"tiger2\": {\r\n \"keywords\": [\"animal\", \"nature\", \"roar\"],\r\n \"char\": \"🐅\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"water_buffalo\": {\r\n \"keywords\": [\"animal\", \"nature\", \"ox\", \"cow\"],\r\n \"char\": \"🐃\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"ox\": {\r\n \"keywords\": [\"animal\", \"cow\", \"beef\"],\r\n \"char\": \"🐂\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"cow2\": {\r\n \"keywords\": [\"beef\", \"ox\", \"animal\", \"nature\", \"moo\", \"milk\"],\r\n \"char\": \"🐄\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"dromedary_camel\": {\r\n \"keywords\": [\"animal\", \"hot\", \"desert\", \"hump\"],\r\n \"char\": \"🐪\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"camel\": {\r\n \"keywords\": [\"animal\", \"nature\", \"hot\", \"desert\", \"hump\"],\r\n \"char\": \"🐫\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"elephant\": {\r\n \"keywords\": [\"animal\", \"nature\", \"nose\", \"thailand\", \"circus\"],\r\n \"char\": \"🐘\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"goat\": {\r\n \"keywords\": [\"animal\", \"nature\"],\r\n \"char\": \"🐐\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"ram\": {\r\n \"keywords\": [\"animal\", \"sheep\", \"nature\"],\r\n \"char\": \"🐏\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"sheep\": {\r\n \"keywords\": [\"animal\", \"nature\", \"wool\", \"shipit\"],\r\n \"char\": \"🐑\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"racehorse\": {\r\n \"keywords\": [\"animal\", \"gamble\", \"luck\"],\r\n \"char\": \"🐎\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"pig2\": {\r\n \"keywords\": [\"animal\", \"nature\"],\r\n \"char\": \"🐖\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"rat\": {\r\n \"keywords\": [\"animal\", \"mouse\", \"rodent\"],\r\n \"char\": \"🐀\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"mouse2\": {\r\n \"keywords\": [\"animal\", \"nature\", \"rodent\"],\r\n \"char\": \"🐁\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"rooster\": {\r\n \"keywords\": [\"animal\", \"nature\", \"chicken\"],\r\n \"char\": \"🐓\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"turkey\": {\r\n \"keywords\": [\"animal\", \"bird\"],\r\n \"char\": \"🦃\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"dove_of_peace\": {\r\n \"keywords\": [\"animal\", \"bird\"],\r\n \"char\": \"🕊\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"dog2\": {\r\n \"keywords\": [\"animal\", \"nature\", \"friend\", \"doge\", \"pet\", \"faithful\"],\r\n \"char\": \"🐕\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"poodle\": {\r\n \"keywords\": [\"dog\", \"animal\", \"101\", \"nature\", \"pet\"],\r\n \"char\": \"🐩\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"cat2\": {\r\n \"keywords\": [\"animal\", \"meow\", \"pet\", \"cats\"],\r\n \"char\": \"🐈\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"rabbit2\": {\r\n \"keywords\": [\"animal\", \"nature\", \"pet\", \"magic\", \"spring\"],\r\n \"char\": \"🐇\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"chipmunk\": {\r\n \"keywords\": [\"animal\", \"nature\", \"rodent\", \"squirrel\"],\r\n \"char\": \"🐿\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"feet\": {\r\n \"keywords\": [\"animal\", \"tracking\", \"footprints\", \"dog\", \"cat\", \"pet\", \"paw_prints\"],\r\n \"char\": \"🐾\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"dragon\": {\r\n \"keywords\": [\"animal\", \"myth\", \"nature\", \"chinese\", \"green\"],\r\n \"char\": \"🐉\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"dragon_face\": {\r\n \"keywords\": [\"animal\", \"myth\", \"nature\", \"chinese\", \"green\"],\r\n \"char\": \"🐲\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"cactus\": {\r\n \"keywords\": [\"vegetable\", \"plant\", \"nature\"],\r\n \"char\": \"🌵\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"christmas_tree\": {\r\n \"keywords\": [\"festival\", \"vacation\", \"december\", \"xmas\", \"celebration\"],\r\n \"char\": \"🎄\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"evergreen_tree\": {\r\n \"keywords\": [\"plant\", \"nature\"],\r\n \"char\": \"🌲\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"deciduous_tree\": {\r\n \"keywords\": [\"plant\", \"nature\"],\r\n \"char\": \"🌳\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"palm_tree\": {\r\n \"keywords\": [\"plant\", \"vegetable\", \"nature\", \"summer\", \"beach\", \"mojito\", \"tropical\"],\r\n \"char\": \"🌴\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"seedling\": {\r\n \"keywords\": [\"plant\", \"nature\", \"grass\", \"lawn\", \"spring\"],\r\n \"char\": \"🌱\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"herb\": {\r\n \"keywords\": [\"vegetable\", \"plant\", \"medicine\", \"weed\", \"grass\", \"lawn\"],\r\n \"char\": \"🌿\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"shamrock\": {\r\n \"keywords\": [\"vegetable\", \"plant\", \"nature\", \"irish\", \"clover\"],\r\n \"char\": \"☘\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"four_leaf_clover\": {\r\n \"keywords\": [\"vegetable\", \"plant\", \"nature\", \"lucky\", \"irish\"],\r\n \"char\": \"🍀\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"bamboo\": {\r\n \"keywords\": [\"plant\", \"nature\", \"vegetable\", \"panda\", \"pine_decoration\"],\r\n \"char\": \"🎍\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"tanabata_tree\": {\r\n \"keywords\": [\"plant\", \"nature\", \"branch\", \"summer\"],\r\n \"char\": \"🎋\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"leaves\": {\r\n \"keywords\": [\"nature\", \"plant\", \"tree\", \"vegetable\", \"grass\", \"lawn\", \"spring\"],\r\n \"char\": \"🍃\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"fallen_leaf\": {\r\n \"keywords\": [\"nature\", \"plant\", \"vegetable\", \"leaves\"],\r\n \"char\": \"🍂\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"maple_leaf\": {\r\n \"keywords\": [\"nature\", \"plant\", \"vegetable\", \"canada\", \"fall\"],\r\n \"char\": \"🍁\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"ear_of_rice\": {\r\n \"keywords\": [\"nature\", \"plant\"],\r\n \"char\": \"🌾\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"hibiscus\": {\r\n \"keywords\": [\"plant\", \"vegetable\", \"flowers\", \"beach\"],\r\n \"char\": \"🌺\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"sunflower\": {\r\n \"keywords\": [\"nature\", \"plant\", \"fall\"],\r\n \"char\": \"🌻\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"rose\": {\r\n \"keywords\": [\"flowers\", \"valentines\", \"love\", \"spring\"],\r\n \"char\": \"🌹\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"tulip\": {\r\n \"keywords\": [\"flowers\", \"plant\", \"nature\", \"summer\", \"spring\"],\r\n \"char\": \"🌷\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"blossom\": {\r\n \"keywords\": [\"nature\", \"flowers\", \"yellow\"],\r\n \"char\": \"🌼\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"cherry_blossom\": {\r\n \"keywords\": [\"nature\", \"plant\", \"spring\", \"flower\"],\r\n \"char\": \"🌸\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"bouquet\": {\r\n \"keywords\": [\"flowers\", \"nature\", \"spring\"],\r\n \"char\": \"💐\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"mushroom\": {\r\n \"keywords\": [\"plant\", \"vegetable\"],\r\n \"char\": \"🍄\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"chestnut\": {\r\n \"keywords\": [\"food\", \"squirrel\"],\r\n \"char\": \"🌰\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"jack_o_lantern\": {\r\n \"keywords\": [\"halloween\", \"light\", \"pumpkin\", \"creepy\", \"fall\"],\r\n \"char\": \"🎃\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"shell\": {\r\n \"keywords\": [\"nature\", \"sea\", \"beach\"],\r\n \"char\": \"🐚\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"spider_web\": {\r\n \"keywords\": [\"animal\", \"insect\", \"arachnid\", \"silk\"],\r\n \"char\": \"🕸\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"earth_americas\": {\r\n \"keywords\": [\"globe\", \"world\", \"USA\", \"international\"],\r\n \"char\": \"🌎\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"earth_africa\": {\r\n \"keywords\": [\"globe\", \"world\", \"international\"],\r\n \"char\": \"🌍\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"earth_asia\": {\r\n \"keywords\": [\"globe\", \"world\", \"east\", \"international\"],\r\n \"char\": \"🌏\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"full_moon\": {\r\n \"keywords\": [\"nature\", \"yellow\", \"twilight\", \"planet\", \"space\", \"night\", \"evening\", \"sleep\"],\r\n \"char\": \"🌕\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"waning_gibbous_moon\": {\r\n \"keywords\": [\"nature\", \"twilight\", \"planet\", \"space\", \"night\", \"evening\", \"sleep\", \"waxing_gibbous_moon\"],\r\n \"char\": \"🌖\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"last_quarter_moon\": {\r\n \"keywords\": [\"nature\", \"twilight\", \"planet\", \"space\", \"night\", \"evening\", \"sleep\"],\r\n \"char\": \"🌗\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"waning_crescent_moon\": {\r\n \"keywords\": [\"nature\", \"twilight\", \"planet\", \"space\", \"night\", \"evening\", \"sleep\"],\r\n \"char\": \"🌘\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"new_moon\": {\r\n \"keywords\": [\"nature\", \"twilight\", \"planet\", \"space\", \"night\", \"evening\", \"sleep\"],\r\n \"char\": \"🌑\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"waxing_crescent_moon\": {\r\n \"keywords\": [\"nature\", \"twilight\", \"planet\", \"space\", \"night\", \"evening\", \"sleep\"],\r\n \"char\": \"🌒\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"first_quarter_moon\": {\r\n \"keywords\": [\"nature\", \"twilight\", \"planet\", \"space\", \"night\", \"evening\", \"sleep\"],\r\n \"char\": \"🌓\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"moon\": {\r\n \"keywords\": [\"nature\", \"night\", \"sky\", \"gray\", \"twilight\", \"planet\", \"space\", \"evening\", \"sleep\"],\r\n \"char\": \"🌔\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"new_moon_with_face\": {\r\n \"keywords\": [\"nature\", \"twilight\", \"planet\", \"space\", \"night\", \"evening\", \"sleep\"],\r\n \"char\": \"🌚\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"full_moon_with_face\": {\r\n \"keywords\": [\"nature\", \"twilight\", \"planet\", \"space\", \"night\", \"evening\", \"sleep\"],\r\n \"char\": \"🌝\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"first_quarter_moon_with_face\": {\r\n \"keywords\": [\"nature\", \"twilight\", \"planet\", \"space\", \"night\", \"evening\", \"sleep\"],\r\n \"char\": \"🌛\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"last_quarter_moon_with_face\": {\r\n \"keywords\": [\"nature\", \"twilight\", \"planet\", \"space\", \"night\", \"evening\", \"sleep\"],\r\n \"char\": \"🌜\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"sun_with_face\": {\r\n \"keywords\": [\"nature\", \"morning\", \"sky\"],\r\n \"char\": \"🌞\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"crescent_moon\": {\r\n \"keywords\": [\"night\", \"sleep\", \"sky\", \"evening\", \"magic\"],\r\n \"char\": \"🌙\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"star\": {\r\n \"keywords\": [\"night\", \"yellow\"],\r\n \"char\": \"⭐\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"star2\": {\r\n \"keywords\": [\"night\", \"sparkle\", \"awesome\", \"good\", \"magic\"],\r\n \"char\": \"🌟\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"dizzy\": {\r\n \"keywords\": [\"star\", \"sparkle\", \"shoot\", \"magic\"],\r\n \"char\": \"💫\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"sparkles\": {\r\n \"keywords\": [\"stars\", \"shine\", \"shiny\", \"cool\", \"awesome\", \"good\", \"magic\"],\r\n \"char\": \"✨\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"comet\": {\r\n \"keywords\": [\"space\"],\r\n \"char\": \"☄\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"sunny\": {\r\n \"keywords\": [\"weather\", \"nature\", \"brightness\", \"summer\", \"beach\", \"spring\"],\r\n \"char\": \"☀️\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"white_sun_with_small_cloud\": {\r\n \"keywords\": [\"weather\"],\r\n \"char\": \"🌤\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"partly_sunny\": {\r\n \"keywords\": [\"weather\", \"nature\", \"cloudy\", \"morning\", \"fall\", \"spring\"],\r\n \"char\": \"⛅\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"white_sun_behind_cloud\": {\r\n \"keywords\": [\"weather\"],\r\n \"char\": \"🌥\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"white_sun_behind_cloud_with_rain\": {\r\n \"keywords\": [\"weather\"],\r\n \"char\": \"🌦\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"cloud\": {\r\n \"keywords\": [\"weather\", \"sky\"],\r\n \"char\": \"☁️\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"cloud_with_rain\": {\r\n \"keywords\": [\"weather\"],\r\n \"char\": \"🌧\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"thunder_cloud_and_rain\": {\r\n \"keywords\": [\"weather\", \"lightning\"],\r\n \"char\": \"⛈\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"cloud_with_lightning\": {\r\n \"keywords\": [\"weather\", \"thunder\"],\r\n \"char\": \"🌩\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"zap\": {\r\n \"keywords\": [\"thunder\", \"weather\", \"lightning bolt\", \"fast\"],\r\n \"char\": \"⚡\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"fire\": {\r\n \"keywords\": [\"hot\", \"cook\", \"flame\"],\r\n \"char\": \"🔥\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"boom\": {\r\n \"keywords\": [\"bomb\", \"explode\", \"explosion\", \"collision\", \"blown\"],\r\n \"char\": \"💥\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"snowflake\": {\r\n \"keywords\": [\"winter\", \"season\", \"cold\", \"weather\", \"christmas\", \"xmas\"],\r\n \"char\": \"❄️\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"cloud_with_snow\": {\r\n \"keywords\": [\"weather\"],\r\n \"char\": \"🌨\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"snowman\": {\r\n \"keywords\": [\"winter\", \"season\", \"cold\", \"weather\", \"christmas\", \"xmas\", \"frozen\", \"without_snow\"],\r\n \"char\": \"⛄\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"snowman_with_snow\": {\r\n \"keywords\": [\"winter\", \"season\", \"cold\", \"weather\", \"christmas\", \"xmas\", \"frozen\"],\r\n \"char\": \"☃\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"wind_blowing_face\": {\r\n \"keywords\": [\"gust\", \"air\"],\r\n \"char\": \"🌬\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"dash\": {\r\n \"keywords\": [\"wind\", \"air\", \"fast\", \"shoo\", \"fart\", \"smoke\", \"puff\"],\r\n \"char\": \"💨\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"cloud_with_tornado\": {\r\n \"keywords\": [\"weather\", \"cyclone\", \"twister\"],\r\n \"char\": \"🌪\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"fog\": {\r\n \"keywords\": [\"weather\"],\r\n \"char\": \"🌫\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"umbrella_without_rain\": {\r\n \"keywords\": [\"weather\", \"spring\"],\r\n \"char\": \"☂\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"umbrella\": {\r\n \"keywords\": [\"rainy\", \"weather\", \"spring\"],\r\n \"char\": \"☔\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"droplet\": {\r\n \"keywords\": [\"water\", \"drip\", \"faucet\", \"spring\"],\r\n \"char\": \"💧\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"sweat_drops\": {\r\n \"keywords\": [\"water\", \"drip\", \"oops\"],\r\n \"char\": \"💦\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"ocean\": {\r\n \"keywords\": [\"sea\", \"water\", \"wave\", \"nature\", \"tsunami\", \"disaster\"],\r\n \"char\": \"🌊\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"green_apple\": {\r\n \"keywords\": [\"fruit\", \"nature\"],\r\n \"char\": \"🍏\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"apple\": {\r\n \"keywords\": [\"fruit\", \"mac\", \"school\"],\r\n \"char\": \"🍎\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"pear\": {\r\n \"keywords\": [\"fruit\", \"nature\", \"food\"],\r\n \"char\": \"🍐\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"tangerine\": {\r\n \"keywords\": [\"food\", \"fruit\", \"nature\", \"orange\"],\r\n \"char\": \"🍊\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"lemon\": {\r\n \"keywords\": [\"fruit\", \"nature\"],\r\n \"char\": \"🍋\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"banana\": {\r\n \"keywords\": [\"fruit\", \"food\", \"monkey\"],\r\n \"char\": \"🍌\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"watermelon\": {\r\n \"keywords\": [\"fruit\", \"food\", \"picnic\", \"summer\"],\r\n \"char\": \"🍉\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"grapes\": {\r\n \"keywords\": [\"fruit\", \"food\", \"wine\"],\r\n \"char\": \"🍇\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"strawberry\": {\r\n \"keywords\": [\"fruit\", \"food\", \"nature\"],\r\n \"char\": \"🍓\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"melon\": {\r\n \"keywords\": [\"fruit\", \"nature\", \"food\"],\r\n \"char\": \"🍈\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"cherries\": {\r\n \"keywords\": [\"food\", \"fruit\"],\r\n \"char\": \"🍒\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"peach\": {\r\n \"keywords\": [\"fruit\", \"nature\", \"food\"],\r\n \"char\": \"🍑\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"pineapple\": {\r\n \"keywords\": [\"fruit\", \"nature\", \"food\"],\r\n \"char\": \"🍍\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"tomato\": {\r\n \"keywords\": [\"fruit\", \"vegetable\", \"nature\", \"food\"],\r\n \"char\": \"🍅\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"eggplant\": {\r\n \"keywords\": [\"vegetable\", \"nature\", \"food\", \"aubergine\"],\r\n \"char\": \"🍆\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"hot_pepper\": {\r\n \"keywords\": [\"food\", \"spicy\", \"chilli\", \"chili\"],\r\n \"char\": \"🌶\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"corn\": {\r\n \"keywords\": [\"food\", \"vegetable\", \"plant\"],\r\n \"char\": \"🌽\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"sweet_potato\": {\r\n \"keywords\": [\"food\", \"nature\"],\r\n \"char\": \"🍠\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"honey_pot\": {\r\n \"keywords\": [\"bees\", \"sweet\", \"kitchen\"],\r\n \"char\": \"🍯\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"bread\": {\r\n \"keywords\": [\"food\", \"wheat\", \"breakfast\", \"toast\"],\r\n \"char\": \"🍞\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"cheese_wedge\": {\r\n \"keywords\": [\"food\", \"chadder\"],\r\n \"char\": \"🧀\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"poultry_leg\": {\r\n \"keywords\": [\"food\", \"meat\", \"drumstick\", \"bird\", \"chicken\", \"turkey\"],\r\n \"char\": \"🍗\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"meat_on_bone\": {\r\n \"keywords\": [\"good\", \"food\", \"drumstick\"],\r\n \"char\": \"🍖\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"fried_shrimp\": {\r\n \"keywords\": [\"food\", \"animal\", \"appetizer\", \"summer\"],\r\n \"char\": \"🍤\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"egg\": {\r\n \"keywords\": [\"food\", \"breakfast\", \"kitchen\"],\r\n \"char\": \"🍳\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"hamburger\": {\r\n \"keywords\": [\"meat\", \"fast food\", \"beef\", \"cheeseburger\", \"mcdonalds\", \"burger king\"],\r\n \"char\": \"🍔\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"fries\": {\r\n \"keywords\": [\"chips\", \"snack\", \"fast food\"],\r\n \"char\": \"🍟\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"hot_dog\": {\r\n \"keywords\": [\"food\", \"frankfurter\", \"hotdog\"],\r\n \"char\": \"🌭\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"pizza\": {\r\n \"keywords\": [\"food\", \"party\"],\r\n \"char\": \"🍕\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"spaghetti\": {\r\n \"keywords\": [\"food\", \"italian\", \"noodle\"],\r\n \"char\": \"🍝\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"taco\": {\r\n \"keywords\": [\"food\", \"mexican\"],\r\n \"char\": \"🌮\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"burrito\": {\r\n \"keywords\": [\"food\", \"mexican\"],\r\n \"char\": \"🌯\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"ramen\": {\r\n \"keywords\": [\"food\", \"japanese\", \"noodle\", \"chopsticks\"],\r\n \"char\": \"🍜\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"stew\": {\r\n \"keywords\": [\"food\", \"meat\", \"soup\"],\r\n \"char\": \"🍲\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"fish_cake\": {\r\n \"keywords\": [\"food\", \"japan\", \"sea\", \"beach\"],\r\n \"char\": \"🍥\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"sushi\": {\r\n \"keywords\": [\"food\", \"fish\", \"japanese\", \"rice\"],\r\n \"char\": \"🍣\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"bento\": {\r\n \"keywords\": [\"food\", \"japanese\", \"box\"],\r\n \"char\": \"🍱\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"curry\": {\r\n \"keywords\": [\"food\", \"spicy\", \"hot\", \"indian\"],\r\n \"char\": \"🍛\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"rice_ball\": {\r\n \"keywords\": [\"food\", \"japanese\"],\r\n \"char\": \"🍙\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"rice\": {\r\n \"keywords\": [\"food\", \"china\", \"asian\"],\r\n \"char\": \"🍚\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"rice_cracker\": {\r\n \"keywords\": [\"food\", \"japanese\"],\r\n \"char\": \"🍘\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"oden\": {\r\n \"keywords\": [\"food\", \"japanese\"],\r\n \"char\": \"🍢\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"dango\": {\r\n \"keywords\": [\"food\", \"dessert\", \"sweet\", \"japanese\", \"barbecue\", \"meat\"],\r\n \"char\": \"🍡\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"shaved_ice\": {\r\n \"keywords\": [\"hot\", \"dessert\", \"summer\"],\r\n \"char\": \"🍧\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"ice_cream\": {\r\n \"keywords\": [\"food\", \"hot\", \"dessert\"],\r\n \"char\": \"🍨\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"icecream\": {\r\n \"keywords\": [\"food\", \"hot\", \"dessert\", \"summer\"],\r\n \"char\": \"🍦\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"cake\": {\r\n \"keywords\": [\"food\", \"dessert\"],\r\n \"char\": \"🍰\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"birthday\": {\r\n \"keywords\": [\"food\", \"dessert\", \"cake\"],\r\n \"char\": \"🎂\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"custard\": {\r\n \"keywords\": [\"dessert\", \"food\"],\r\n \"char\": \"🍮\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"candy\": {\r\n \"keywords\": [\"snack\", \"dessert\", \"sweet\", \"lolly\"],\r\n \"char\": \"🍬\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"lollipop\": {\r\n \"keywords\": [\"food\", \"snack\", \"candy\", \"sweet\"],\r\n \"char\": \"🍭\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"chocolate_bar\": {\r\n \"keywords\": [\"food\", \"snack\", \"dessert\", \"sweet\"],\r\n \"char\": \"🍫\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"popcorn\": {\r\n \"keywords\": [\"food\", \"movie theater\", \"films\", \"snack\"],\r\n \"char\": \"🍿\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"doughnut\": {\r\n \"keywords\": [\"food\", \"dessert\", \"snack\", \"sweet\", \"donut\"],\r\n \"char\": \"🍩\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"cookie\": {\r\n \"keywords\": [\"food\", \"snack\", \"oreo\", \"chocolate\", \"sweet\", \"dessert\"],\r\n \"char\": \"🍪\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"beer\": {\r\n \"keywords\": [\"relax\", \"beverage\", \"drink\", \"drunk\", \"party\", \"pub\", \"summer\", \"alcohol\", \"booze\"],\r\n \"char\": \"🍺\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"beers\": {\r\n \"keywords\": [\"relax\", \"beverage\", \"drink\", \"drunk\", \"party\", \"pub\", \"summer\", \"alcohol\", \"booze\"],\r\n \"char\": \"🍻\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"wine_glass\": {\r\n \"keywords\": [\"drink\", \"beverage\", \"drunk\", \"alcohol\", \"booze\"],\r\n \"char\": \"🍷\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"cocktail\": {\r\n \"keywords\": [\"drink\", \"drunk\", \"alcohol\", \"beverage\", \"booze\", \"mojito\"],\r\n \"char\": \"🍸\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"tropical_drink\": {\r\n \"keywords\": [\"beverage\", \"cocktail\", \"summer\", \"beach\", \"alcohol\", \"booze\", \"mojito\"],\r\n \"char\": \"🍹\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"bottle\": {\r\n \"keywords\": [\"drink\", \"wine\", \"champagne\"],\r\n \"char\": \"🍾\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"sake\": {\r\n \"keywords\": [\"wine\", \"drink\", \"drunk\", \"beverage\", \"japanese\", \"alcohol\", \"booze\"],\r\n \"char\": \"🍶\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"tea\": {\r\n \"keywords\": [\"drink\", \"bowl\", \"breakfast\", \"green\", \"british\"],\r\n \"char\": \"🍵\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"coffee\": {\r\n \"keywords\": [\"beverage\", \"caffeine\", \"latte\", \"espresso\"],\r\n \"char\": \"☕\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"baby_bottle\": {\r\n \"keywords\": [\"food\", \"container\", \"milk\"],\r\n \"char\": \"🍼\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"fork_and_knife\": {\r\n \"keywords\": [\"cutlery\", \"kitchen\"],\r\n \"char\": \"🍴\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"fork_and_knife_with_plate\": {\r\n \"keywords\": [\"food\", \"eat\", \"meal\", \"lunch\", \"dinner\", \"restaurant\"],\r\n \"char\": \"🍽\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"soccer\": {\r\n \"keywords\": [\"sports\", \"football\"],\r\n \"char\": \"⚽\",\r\n \"category\": \"activity\"\r\n },\r\n \"basketball\": {\r\n \"keywords\": [\"sports\", \"balls\", \"NBA\"],\r\n \"char\": \"🏀\",\r\n \"category\": \"activity\"\r\n },\r\n \"football\": {\r\n \"keywords\": [\"sports\", \"balls\", \"NFL\"],\r\n \"char\": \"🏈\",\r\n \"category\": \"activity\"\r\n },\r\n \"baseball\": {\r\n \"keywords\": [\"sports\", \"balls\"],\r\n \"char\": \"⚾\",\r\n \"category\": \"activity\"\r\n },\r\n \"tennis\": {\r\n \"keywords\": [\"sports\", \"balls\", \"green\"],\r\n \"char\": \"🎾\",\r\n \"category\": \"activity\"\r\n },\r\n \"volleyball\": {\r\n \"keywords\": [\"sports\", \"balls\"],\r\n \"char\": \"🏐\",\r\n \"category\": \"activity\"\r\n },\r\n \"rugby_football\": {\r\n \"keywords\": [\"sports\", \"team\"],\r\n \"char\": \"🏉\",\r\n \"category\": \"activity\"\r\n },\r\n \"8ball\": {\r\n \"keywords\": [\"pool\", \"hobby\", \"game\", \"luck\", \"magic\"],\r\n \"char\": \"🎱\",\r\n \"category\": \"activity\"\r\n },\r\n \"golf\": {\r\n \"keywords\": [\"sports\", \"business\", \"flag\", \"hole\", \"summer\"],\r\n \"char\": \"⛳\",\r\n \"category\": \"activity\"\r\n },\r\n \"golfer\": {\r\n \"keywords\": [\"sports\", \"business\"],\r\n \"char\": \"🏌\",\r\n \"category\": \"activity\"\r\n },\r\n \"table_tennis\": {\r\n \"keywords\": [\"sports\", \"pingpong\"],\r\n \"char\": \"🏓\",\r\n \"category\": \"activity\"\r\n },\r\n \"badminton\": {\r\n \"keywords\": [\"sports\"],\r\n \"char\": \"🏸\",\r\n \"category\": \"activity\"\r\n },\r\n \"ice_hockey\": {\r\n \"keywords\": [\"sports\"],\r\n \"char\": \"🏒\",\r\n \"category\": \"activity\"\r\n },\r\n \"field_hockey\": {\r\n \"keywords\": [\"sports\"],\r\n \"char\": \"🏑\",\r\n \"category\": \"activity\"\r\n },\r\n \"cricket\": {\r\n \"keywords\": [\"sports\"],\r\n \"char\": \"🏏\",\r\n \"category\": \"activity\"\r\n },\r\n \"ski\": {\r\n \"keywords\": [\"sports\", \"winter\", \"cold\", \"snow\"],\r\n \"char\": \"🎿\",\r\n \"category\": \"activity\"\r\n },\r\n \"skier\": {\r\n \"keywords\": [\"sports\", \"winter\", \"snow\"],\r\n \"char\": \"⛷\",\r\n \"category\": \"activity\"\r\n },\r\n \"snowboarder\": {\r\n \"keywords\": [\"sports\", \"winter\"],\r\n \"char\": \"🏂\",\r\n \"category\": \"activity\"\r\n },\r\n \"ice_skate\": {\r\n \"keywords\": [\"sports\"],\r\n \"char\": \"⛸\",\r\n \"category\": \"activity\"\r\n },\r\n \"bow_and_arrow\": {\r\n \"keywords\": [\"sports\"],\r\n \"char\": \"🏹\",\r\n \"category\": \"activity\"\r\n },\r\n \"fishing_pole_and_fish\": {\r\n \"keywords\": [\"food\", \"hobby\", \"summer\"],\r\n \"char\": \"🎣\",\r\n \"category\": \"activity\"\r\n },\r\n \"rowboat\": {\r\n \"keywords\": [\"sports\", \"hobby\", \"water\", \"ship\"],\r\n \"char\": \"🚣\",\r\n \"category\": \"activity\"\r\n },\r\n \"swimmer\": {\r\n \"keywords\": [\"sports\", \"exercise\", \"human\", \"athlete\", \"water\", \"summer\"],\r\n \"char\": \"🏊\",\r\n \"category\": \"activity\"\r\n },\r\n \"surfer\": {\r\n \"keywords\": [\"sports\", \"ocean\", \"sea\", \"summer\", \"beach\"],\r\n \"char\": \"🏄\",\r\n \"category\": \"activity\"\r\n },\r\n \"bath\": {\r\n \"keywords\": [\"clean\", \"shower\", \"bathroom\"],\r\n \"char\": \"🛀\",\r\n \"category\": \"activity\"\r\n },\r\n \"person_with_ball\": {\r\n \"keywords\": [\"sports\", \"human\"],\r\n \"char\": \"⛹\",\r\n \"category\": \"activity\"\r\n },\r\n \"weight_lifter\": {\r\n \"keywords\": [\"sports\", \"training\", \"exercise\"],\r\n \"char\": \"🏋\",\r\n \"category\": \"activity\"\r\n },\r\n \"bicyclist\": {\r\n \"keywords\": [\"sports\", \"bike\", \"exercise\", \"hipster\"],\r\n \"char\": \"🚴\",\r\n \"category\": \"activity\"\r\n },\r\n \"mountain_bicyclist\": {\r\n \"keywords\": [\"transportation\", \"sports\", \"human\", \"race\", \"bike\"],\r\n \"char\": \"🚵\",\r\n \"category\": \"activity\"\r\n },\r\n \"horse_racing\": {\r\n \"keywords\": [\"animal\", \"betting\", \"competition\", \"gambling\", \"luck\"],\r\n \"char\": \"🏇\",\r\n \"category\": \"activity\"\r\n },\r\n \"man_levitating\": {\r\n \"keywords\": [\"suit\", \"business\", \"levitate\", \"hover\", \"jump\"],\r\n \"char\": \"🕴\",\r\n \"category\": \"activity\"\r\n },\r\n \"trophy\": {\r\n \"keywords\": [\"win\", \"award\", \"contest\", \"place\", \"ftw\", \"ceremony\"],\r\n \"char\": \"🏆\",\r\n \"category\": \"activity\"\r\n },\r\n \"running_shirt_with_sash\": {\r\n \"keywords\": [\"play\", \"pageant\"],\r\n \"char\": \"🎽\",\r\n \"category\": \"activity\"\r\n },\r\n \"sports_medal\": {\r\n \"keywords\": [\"award\", \"winning\"],\r\n \"char\": \"🏅\",\r\n \"category\": \"activity\"\r\n },\r\n \"military_medal\": {\r\n \"keywords\": [\"award\", \"winning\", \"army\"],\r\n \"char\": \"🎖\",\r\n \"category\": \"activity\"\r\n },\r\n \"reminder_ribbon\": {\r\n \"keywords\": [\"sports\", \"cause\", \"support\", \"awareness\"],\r\n \"char\": \"🎗\",\r\n \"category\": \"activity\"\r\n },\r\n \"rosette\": {\r\n \"keywords\": [\"flower\", \"decoration\", \"military\"],\r\n \"char\": \"🏵\",\r\n \"category\": \"activity\"\r\n },\r\n \"ticket\": {\r\n \"keywords\": [\"event\", \"concert\", \"pass\"],\r\n \"char\": \"🎫\",\r\n \"category\": \"activity\"\r\n },\r\n \"admission_ticket\": {\r\n \"keywords\": [\"sports\", \"concert\", \"entrance\"],\r\n \"char\": \"🎟\",\r\n \"category\": \"activity\"\r\n },\r\n \"performing_arts\": {\r\n \"keywords\": [\"acting\", \"theater\", \"drama\"],\r\n \"char\": \"🎭\",\r\n \"category\": \"activity\"\r\n },\r\n \"art\": {\r\n \"keywords\": [\"design\", \"paint\", \"draw\", \"colors\"],\r\n \"char\": \"🎨\",\r\n \"category\": \"activity\"\r\n },\r\n \"circus_tent\": {\r\n \"keywords\": [\"festival\", \"carnival\", \"party\"],\r\n \"char\": \"🎪\",\r\n \"category\": \"activity\"\r\n },\r\n \"microphone\": {\r\n \"keywords\": [\"sound\", \"music\", \"PA\"],\r\n \"char\": \"🎤\",\r\n \"category\": \"activity\"\r\n },\r\n \"headphones\": {\r\n \"keywords\": [\"music\", \"score\", \"gadgets\"],\r\n \"char\": \"🎧\",\r\n \"category\": \"activity\"\r\n },\r\n \"musical_score\": {\r\n \"keywords\": [\"treble\", \"clef\"],\r\n \"char\": \"🎼\",\r\n \"category\": \"activity\"\r\n },\r\n \"musical_keyboard\": {\r\n \"keywords\": [\"piano\", \"instrument\"],\r\n \"char\": \"🎹\",\r\n \"category\": \"activity\"\r\n },\r\n \"saxophone\": {\r\n \"keywords\": [\"music\", \"instrument\", \"jazz\", \"blues\"],\r\n \"char\": \"🎷\",\r\n \"category\": \"activity\"\r\n },\r\n \"trumpet\": {\r\n \"keywords\": [\"music\", \"brass\"],\r\n \"char\": \"🎺\",\r\n \"category\": \"activity\"\r\n },\r\n \"guitar\": {\r\n \"keywords\": [\"music\", \"instrument\"],\r\n \"char\": \"🎸\",\r\n \"category\": \"activity\"\r\n },\r\n \"violin\": {\r\n \"keywords\": [\"music\", \"instrument\", \"orchestra\", \"symphony\"],\r\n \"char\": \"🎻\",\r\n \"category\": \"activity\"\r\n },\r\n \"clapper\": {\r\n \"keywords\": [\"movie\", \"film\", \"record\"],\r\n \"char\": \"🎬\",\r\n \"category\": \"activity\"\r\n },\r\n \"video_game\": {\r\n \"keywords\": [\"play\", \"console\", \"PS4\", \"controller\"],\r\n \"char\": \"🎮\",\r\n \"category\": \"activity\"\r\n },\r\n \"space_invader\": {\r\n \"keywords\": [\"game\", \"arcade\", \"play\"],\r\n \"char\": \"👾\",\r\n \"category\": \"activity\"\r\n },\r\n \"dart\": {\r\n \"keywords\": [\"game\", \"play\", \"bar\"],\r\n \"char\": \"🎯\",\r\n \"category\": \"activity\"\r\n },\r\n \"game_die\": {\r\n \"keywords\": [\"dice\", \"random\", \"tabletop\", \"play\", \"luck\"],\r\n \"char\": \"🎲\",\r\n \"category\": \"activity\"\r\n },\r\n \"slot_machine\": {\r\n \"keywords\": [\"bet\", \"gamble\", \"vegas\", \"fruit machine\", \"luck\", \"casino\"],\r\n \"char\": \"🎰\",\r\n \"category\": \"activity\"\r\n },\r\n \"bowling\": {\r\n \"keywords\": [\"sports\", \"fun\", \"play\"],\r\n \"char\": \"🎳\",\r\n \"category\": \"activity\"\r\n },\r\n \"car\": {\r\n \"keywords\": [\"red\", \"transportation\", \"vehicle\"],\r\n \"char\": \"🚗\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"taxi\": {\r\n \"keywords\": [\"uber\", \"vehicle\", \"cars\", \"transportation\"],\r\n \"char\": \"🚕\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"blue_car\": {\r\n \"keywords\": [\"transportation\", \"vehicle\"],\r\n \"char\": \"🚙\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"bus\": {\r\n \"keywords\": [\"car\", \"vehicle\", \"transportation\"],\r\n \"char\": \"🚌\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"trolleybus\": {\r\n \"keywords\": [\"bart\", \"transportation\", \"vehicle\"],\r\n \"char\": \"🚎\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"racing_car\": {\r\n \"keywords\": [\"sports\", \"race\", \"fast\", \"formula\", \"f1\"],\r\n \"char\": \"🏎\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"police_car\": {\r\n \"keywords\": [\"vehicle\", \"cars\", \"transportation\", \"law\", \"legal\", \"enforcement\"],\r\n \"char\": \"🚓\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"ambulance\": {\r\n \"keywords\": [\"health\", \"911\", \"hospital\"],\r\n \"char\": \"🚑\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"fire_engine\": {\r\n \"keywords\": [\"transportation\", \"cars\", \"vehicle\"],\r\n \"char\": \"🚒\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"minibus\": {\r\n \"keywords\": [\"vehicle\", \"car\", \"transportation\"],\r\n \"char\": \"🚐\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"truck\": {\r\n \"keywords\": [\"cars\", \"transportation\"],\r\n \"char\": \"🚚\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"articulated_lorry\": {\r\n \"keywords\": [\"vehicle\", \"cars\", \"transportation\", \"express\"],\r\n \"char\": \"🚛\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"tractor\": {\r\n \"keywords\": [\"vehicle\", \"car\", \"farming\", \"agriculture\"],\r\n \"char\": \"🚜\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"racing_motorcycle\": {\r\n \"keywords\": [\"race\", \"sports\", \"fast\"],\r\n \"char\": \"🏍\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"bike\": {\r\n \"keywords\": [\"sports\", \"bicycle\", \"exercise\", \"hipster\"],\r\n \"char\": \"🚲\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"rotating_light\": {\r\n \"keywords\": [\"police\", \"ambulance\", \"911\", \"emergency\", \"alert\", \"error\", \"pinged\", \"law\", \"legal\"],\r\n \"char\": \"🚨\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"oncoming_police_car\": {\r\n \"keywords\": [\"vehicle\", \"law\", \"legal\", \"enforcement\", \"911\"],\r\n \"char\": \"🚔\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"oncoming_bus\": {\r\n \"keywords\": [\"vehicle\", \"transportation\"],\r\n \"char\": \"🚍\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"oncoming_automobile\": {\r\n \"keywords\": [\"car\", \"vehicle\", \"transportation\"],\r\n \"char\": \"🚘\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"oncoming_taxi\": {\r\n \"keywords\": [\"vehicle\", \"cars\", \"uber\"],\r\n \"char\": \"🚖\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"aerial_tramway\": {\r\n \"keywords\": [\"transportation\", \"vehicle\", \"ski\"],\r\n \"char\": \"🚡\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"mountain_cableway\": {\r\n \"keywords\": [\"transportation\", \"vehicle\", \"ski\"],\r\n \"char\": \"🚠\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"suspension_railway\": {\r\n \"keywords\": [\"vehicle\", \"transportation\"],\r\n \"char\": \"🚟\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"railway_car\": {\r\n \"keywords\": [\"transportation\", \"vehicle\"],\r\n \"char\": \"🚃\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"train\": {\r\n \"keywords\": [\"transportation\", \"vehicle\", \"carriage\", \"public\", \"travel\"],\r\n \"char\": \"🚋\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"monorail\": {\r\n \"keywords\": [\"transportation\", \"vehicle\"],\r\n \"char\": \"🚝\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"bullettrain_side\": {\r\n \"keywords\": [\"transportation\", \"vehicle\"],\r\n \"char\": \"🚄\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"bullettrain_front\": {\r\n \"keywords\": [\"transportation\", \"vehicle\", \"speed\", \"fast\", \"public\", \"travel\"],\r\n \"char\": \"🚅\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"light_rail\": {\r\n \"keywords\": [\"transportation\", \"vehicle\"],\r\n \"char\": \"🚈\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"mountain_railway\": {\r\n \"keywords\": [\"transportation\", \"vehicle\"],\r\n \"char\": \"🚞\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"steam_locomotive\": {\r\n \"keywords\": [\"transportation\", \"vehicle\", \"train\"],\r\n \"char\": \"🚂\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"train2\": {\r\n \"keywords\": [\"transportation\", \"vehicle\"],\r\n \"char\": \"🚆\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"metro\": {\r\n \"keywords\": [\"transportation\", \"blue-square\", \"mrt\", \"underground\", \"tube\"],\r\n \"char\": \"🚇\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"tram\": {\r\n \"keywords\": [\"transportation\", \"vehicle\"],\r\n \"char\": \"🚊\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"station\": {\r\n \"keywords\": [\"transportation\", \"vehicle\", \"public\"],\r\n \"char\": \"🚉\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"helicopter\": {\r\n \"keywords\": [\"transportation\", \"vehicle\", \"fly\"],\r\n \"char\": \"🚁\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"small_airplane\": {\r\n \"keywords\": [\"flight\", \"transportation\", \"fly\", \"vehicle\"],\r\n \"char\": \"🛩\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"airplane\": {\r\n \"keywords\": [\"vehicle\", \"transportation\", \"flight\", \"fly\"],\r\n \"char\": \"✈️\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"airplane_departure\": {\r\n \"keywords\": [\"airport\", \"flight\", \"landing\"],\r\n \"char\": \"🛫\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"airplane_arrival\": {\r\n \"keywords\": [\"airport\", \"flight\", \"boarding\"],\r\n \"char\": \"🛬\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"boat\": {\r\n \"keywords\": [\"ship\", \"summer\", \"transportation\", \"water\", \"sailing\", \"sailboat\"],\r\n \"char\": \"⛵\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"motor_boat\": {\r\n \"keywords\": [\"ship\"],\r\n \"char\": \"🛥\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"speedboat\": {\r\n \"keywords\": [\"ship\", \"transportation\", \"vehicle\", \"summer\"],\r\n \"char\": \"🚤\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"ferry\": {\r\n \"keywords\": [\"boat\", \"ship\", \"yacht\"],\r\n \"char\": \"⛴\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"passenger_ship\": {\r\n \"keywords\": [\"yacht\", \"cruise\", \"ferry\"],\r\n \"char\": \"🛳\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"rocket\": {\r\n \"keywords\": [\"launch\", \"ship\", \"staffmode\", \"NASA\", \"outer space\", \"outer_space\", \"fly\"],\r\n \"char\": \"🚀\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"artificial_satellite\": {\r\n \"keywords\": [\"communication\", \"gps\", \"orbit\", \"spaceflight\", \"NASA\", \"ISS\"],\r\n \"char\": \"🛰\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"seat\": {\r\n \"keywords\": [\"sit\", \"airplane\", \"transport\", \"bus\", \"flight\", \"fly\"],\r\n \"char\": \"💺\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"anchor\": {\r\n \"keywords\": [\"ship\", \"ferry\", \"sea\", \"boat\"],\r\n \"char\": \"⚓\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"construction\": {\r\n \"keywords\": [\"wip\", \"progress\", \"caution\", \"warning\"],\r\n \"char\": \"🚧\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"fuelpump\": {\r\n \"keywords\": [\"gas station\", \"petroleum\"],\r\n \"char\": \"⛽\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"busstop\": {\r\n \"keywords\": [\"transportation\", \"wait\"],\r\n \"char\": \"🚏\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"vertical_traffic_light\": {\r\n \"keywords\": [\"transportation\", \"driving\"],\r\n \"char\": \"🚦\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"traffic_light\": {\r\n \"keywords\": [\"transportation\", \"signal\"],\r\n \"char\": \"🚥\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"checkered_flag\": {\r\n \"keywords\": [\"contest\", \"finishline\", \"race\", \"gokart\"],\r\n \"char\": \"🏁\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"ship\": {\r\n \"keywords\": [\"transportation\", \"titanic\", \"deploy\"],\r\n \"char\": \"🚢\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"ferris_wheel\": {\r\n \"keywords\": [\"photo\", \"carnival\", \"londoneye\"],\r\n \"char\": \"🎡\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"roller_coaster\": {\r\n \"keywords\": [\"carnival\", \"playground\", \"photo\", \"fun\"],\r\n \"char\": \"🎢\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"carousel_horse\": {\r\n \"keywords\": [\"photo\", \"carnival\"],\r\n \"char\": \"🎠\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"building_construction\": {\r\n \"keywords\": [\"wip\", \"working\", \"progress\"],\r\n \"char\": \"🏗\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"foggy\": {\r\n \"keywords\": [\"photo\", \"mountain\"],\r\n \"char\": \"🌁\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"tokyo_tower\": {\r\n \"keywords\": [\"photo\", \"japanese\"],\r\n \"char\": \"🗼\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"factory\": {\r\n \"keywords\": [\"building\", \"industry\", \"pollution\", \"smoke\"],\r\n \"char\": \"🏭\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"fountain\": {\r\n \"keywords\": [\"photo\", \"summer\", \"water\", \"fresh\"],\r\n \"char\": \"⛲\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"rice_scene\": {\r\n \"keywords\": [\"photo\", \"japan\", \"asia\", \"tsukimi\"],\r\n \"char\": \"🎑\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"mountain\": {\r\n \"keywords\": [\"photo\", \"nature\", \"environment\"],\r\n \"char\": \"⛰\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"snow_capped_mountain\": {\r\n \"keywords\": [\"photo\", \"nature\", \"environment\", \"winter\", \"cold\"],\r\n \"char\": \"🏔\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"mount_fuji\": {\r\n \"keywords\": [\"photo\", \"mountain\", \"nature\", \"japanese\"],\r\n \"char\": \"🗻\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"volcano\": {\r\n \"keywords\": [\"photo\", \"nature\", \"disaster\"],\r\n \"char\": \"🌋\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"japan\": {\r\n \"keywords\": [\"nation\", \"country\", \"japanese\", \"asia\"],\r\n \"char\": \"🗾\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"camping\": {\r\n \"keywords\": [\"photo\", \"outdoors\", \"tent\"],\r\n \"char\": \"🏕\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"tent\": {\r\n \"keywords\": [\"photo\", \"camping\", \"outdoors\"],\r\n \"char\": \"⛺\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"national_park\": {\r\n \"keywords\": [\"photo\", \"environment\", \"nature\"],\r\n \"char\": \"🏞\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"motorway\": {\r\n \"keywords\": [\"road\", \"cupertino\", \"interstate\", \"highway\"],\r\n \"char\": \"🛣\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"railway_track\": {\r\n \"keywords\": [\"train\", \"transportation\"],\r\n \"char\": \"🛤\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"sunrise\": {\r\n \"keywords\": [\"morning\", \"view\", \"vacation\", \"photo\"],\r\n \"char\": \"🌅\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"sunrise_over_mountains\": {\r\n \"keywords\": [\"view\", \"vacation\", \"photo\"],\r\n \"char\": \"🌄\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"desert\": {\r\n \"keywords\": [\"photo\", \"warm\", \"saharah\"],\r\n \"char\": \"🏜\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"beach_with_umbrella\": {\r\n \"keywords\": [\"weather\", \"summer\", \"sunny\", \"sand\", \"mojito\"],\r\n \"char\": \"🏖\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"desert_island\": {\r\n \"keywords\": [\"photo\", \"tropical\", \"mojito\"],\r\n \"char\": \"🏝\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"city_sunrise\": {\r\n \"keywords\": [\"photo\", \"good morning\", \"dawn\"],\r\n \"char\": \"🌇\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"city_sunset\": {\r\n \"keywords\": [\"photo\", \"evening\", \"sky\", \"buildings\"],\r\n \"char\": \"🌆\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"cityscape\": {\r\n \"keywords\": [\"photo\", \"night life\", \"urban\"],\r\n \"char\": \"🏙\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"night_with_stars\": {\r\n \"keywords\": [\"evening\", \"city\", \"downtown\"],\r\n \"char\": \"🌃\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"bridge_at_night\": {\r\n \"keywords\": [\"photo\", \"sanfrancisco\"],\r\n \"char\": \"🌉\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"milky_way\": {\r\n \"keywords\": [\"photo\", \"space\", \"stars\"],\r\n \"char\": \"🌌\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"stars\": {\r\n \"keywords\": [\"night\", \"photo\"],\r\n \"char\": \"🌠\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"sparkler\": {\r\n \"keywords\": [\"stars\", \"night\", \"shine\"],\r\n \"char\": \"🎇\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"fireworks\": {\r\n \"keywords\": [\"photo\", \"festival\", \"carnival\", \"congratulations\"],\r\n \"char\": \"🎆\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"rainbow\": {\r\n \"keywords\": [\"nature\", \"happy\", \"unicorn\", \"photo\", \"sky\", \"spring\"],\r\n \"char\": \"🌈\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"buildings\": {\r\n \"keywords\": [\"houses\", \"photo\"],\r\n \"char\": \"🏘\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"european_castle\": {\r\n \"keywords\": [\"building\", \"royalty\", \"history\"],\r\n \"char\": \"🏰\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"japanese_castle\": {\r\n \"keywords\": [\"photo\", \"building\"],\r\n \"char\": \"🏯\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"stadium\": {\r\n \"keywords\": [\"photo\", \"place\", \"sports\", \"concert\", \"venue\"],\r\n \"char\": \"🏟\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"statue_of_liberty\": {\r\n \"keywords\": [\"american\", \"newyork\"],\r\n \"char\": \"🗽\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"house\": {\r\n \"keywords\": [\"building\", \"home\"],\r\n \"char\": \"🏠\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"house_with_garden\": {\r\n \"keywords\": [\"home\", \"plant\", \"nature\"],\r\n \"char\": \"🏡\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"derelict_house\": {\r\n \"keywords\": [\"abandon\", \"evict\", \"broken\", \"building\"],\r\n \"char\": \"🏚\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"office\": {\r\n \"keywords\": [\"building\", \"bureau\", \"work\"],\r\n \"char\": \"🏢\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"department_store\": {\r\n \"keywords\": [\"building\", \"shopping\", \"mall\"],\r\n \"char\": \"🏬\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"post_office\": {\r\n \"keywords\": [\"building\", \"email\", \"communication\"],\r\n \"char\": \"🏣\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"european_post_office\": {\r\n \"keywords\": [\"building\", \"email\"],\r\n \"char\": \"🏤\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"hospital\": {\r\n \"keywords\": [\"building\", \"health\", \"surgery\", \"doctor\"],\r\n \"char\": \"🏥\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"bank\": {\r\n \"keywords\": [\"building\", \"money\", \"sales\", \"cash\", \"business\", \"enterprise\"],\r\n \"char\": \"🏦\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"hotel\": {\r\n \"keywords\": [\"building\", \"accomodation\", \"checkin\"],\r\n \"char\": \"🏨\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"convenience_store\": {\r\n \"keywords\": [\"building\", \"shopping\", \"groceries\"],\r\n \"char\": \"🏪\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"school\": {\r\n \"keywords\": [\"building\", \"student\", \"education\", \"learn\", \"teach\"],\r\n \"char\": \"🏫\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"love_hotel\": {\r\n \"keywords\": [\"like\", \"affection\", \"dating\"],\r\n \"char\": \"🏩\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"wedding\": {\r\n \"keywords\": [\"love\", \"like\", \"affection\", \"couple\", \"marriage\", \"bride\", \"groom\"],\r\n \"char\": \"💒\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"museum\": {\r\n \"keywords\": [\"art\", \"culture\", \"history\"],\r\n \"char\": \"🏛\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"church\": {\r\n \"keywords\": [\"building\", \"religion\", \"christ\"],\r\n \"char\": \"⛪\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"mosque\": {\r\n \"keywords\": [\"islam\", \"worship\", \"minaret\"],\r\n \"char\": \"🕌\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"synagogue\": {\r\n \"keywords\": [\"judaism\", \"worship\", \"temple\", \"jewish\"],\r\n \"char\": \"🕍\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"kaaba\": {\r\n \"keywords\": [\"mecca\", \"mosque\", \"islam\"],\r\n \"char\": \"🕋\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"shinto_shrine\": {\r\n \"keywords\": [\"temple\", \"japan\", \"kyoto\"],\r\n \"char\": \"⛩\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"watch\": {\r\n \"keywords\": [\"time\", \"accessories\"],\r\n \"char\": \"⌚\",\r\n \"category\": \"objects\"\r\n },\r\n \"iphone\": {\r\n \"keywords\": [\"technology\", \"apple\", \"gadgets\", \"dial\"],\r\n \"char\": \"📱\",\r\n \"category\": \"objects\"\r\n },\r\n \"calling\": {\r\n \"keywords\": [\"iphone\", \"incoming\"],\r\n \"char\": \"📲\",\r\n \"category\": \"objects\"\r\n },\r\n \"computer\": {\r\n \"keywords\": [\"technology\", \"laptop\", \"screen\", \"display\", \"monitor\"],\r\n \"char\": \"💻\",\r\n \"category\": \"objects\"\r\n },\r\n \"keyboard\": {\r\n \"keywords\": [\"technology\", \"computer\", \"type\", \"input\", \"text\"],\r\n \"char\": \"⌨\",\r\n \"category\": \"objects\"\r\n },\r\n \"desktop_computer\": {\r\n \"keywords\": [\"technology\", \"computing\", \"screen\"],\r\n \"char\": \"🖥\",\r\n \"category\": \"objects\"\r\n },\r\n \"printer\": {\r\n \"keywords\": [\"paper\", \"ink\"],\r\n \"char\": \"🖨\",\r\n \"category\": \"objects\"\r\n },\r\n \"three_button_mouse\": {\r\n \"keywords\": [\"click\"],\r\n \"char\": \"🖱\",\r\n \"category\": \"objects\"\r\n },\r\n \"trackball\": {\r\n \"keywords\": [\"technology\", \"trackpad\"],\r\n \"char\": \"🖲\",\r\n \"category\": \"objects\"\r\n },\r\n \"joystick\": {\r\n \"keywords\": [\"game\", \"play\"],\r\n \"char\": \"🕹\",\r\n \"category\": \"objects\"\r\n },\r\n \"compression\": {\r\n \"keywords\": [\"tool\"],\r\n \"char\": \"🗜\",\r\n \"category\": \"objects\"\r\n },\r\n \"minidisc\": {\r\n \"keywords\": [\"technology\", \"record\", \"data\", \"disk\", \"90s\"],\r\n \"char\": \"💽\",\r\n \"category\": \"objects\"\r\n },\r\n \"floppy_disk\": {\r\n \"keywords\": [\"oldschool\", \"technology\", \"save\", \"90s\", \"80s\"],\r\n \"char\": \"💾\",\r\n \"category\": \"objects\"\r\n },\r\n \"cd\": {\r\n \"keywords\": [\"technology\", \"dvd\", \"disk\", \"disc\", \"90s\"],\r\n \"char\": \"💿\",\r\n \"category\": \"objects\"\r\n },\r\n \"dvd\": {\r\n \"keywords\": [\"cd\", \"disk\", \"disc\"],\r\n \"char\": \"📀\",\r\n \"category\": \"objects\"\r\n },\r\n \"vhs\": {\r\n \"keywords\": [\"record\", \"video\", \"oldschool\", \"90s\", \"80s\"],\r\n \"char\": \"📼\",\r\n \"category\": \"objects\"\r\n },\r\n \"camera\": {\r\n \"keywords\": [\"gadgets\", \"photography\"],\r\n \"char\": \"📷\",\r\n \"category\": \"objects\"\r\n },\r\n \"camera_with_flash\": {\r\n \"keywords\": [\"photography\", \"gadgets\"],\r\n \"char\": \"📸\",\r\n \"category\": \"objects\"\r\n },\r\n \"video_camera\": {\r\n \"keywords\": [\"film\", \"record\"],\r\n \"char\": \"📹\",\r\n \"category\": \"objects\"\r\n },\r\n \"movie_camera\": {\r\n \"keywords\": [\"film\", \"record\"],\r\n \"char\": \"🎥\",\r\n \"category\": \"objects\"\r\n },\r\n \"film_projector\": {\r\n \"keywords\": [\"video\", \"tape\", \"record\", \"movie\"],\r\n \"char\": \"📽\",\r\n \"category\": \"objects\"\r\n },\r\n \"film_frames\": {\r\n \"keywords\": [\"movie\"],\r\n \"char\": \"🎞\",\r\n \"category\": \"objects\"\r\n },\r\n \"telephone_receiver\": {\r\n \"keywords\": [\"technology\", \"communication\", \"dial\"],\r\n \"char\": \"📞\",\r\n \"category\": \"objects\"\r\n },\r\n \"phone\": {\r\n \"keywords\": [\"technology\", \"communication\", \"dial\", \"telephone\"],\r\n \"char\": \"☎️\",\r\n \"category\": \"objects\"\r\n },\r\n \"pager\": {\r\n \"keywords\": [\"bbcall\", \"oldschool\", \"90s\"],\r\n \"char\": \"📟\",\r\n \"category\": \"objects\"\r\n },\r\n \"fax\": {\r\n \"keywords\": [\"communication\", \"technology\"],\r\n \"char\": \"📠\",\r\n \"category\": \"objects\"\r\n },\r\n \"tv\": {\r\n \"keywords\": [\"technology\", \"program\", \"oldschool\", \"show\", \"television\"],\r\n \"char\": \"📺\",\r\n \"category\": \"objects\"\r\n },\r\n \"radio\": {\r\n \"keywords\": [\"communication\", \"music\", \"podcast\", \"program\"],\r\n \"char\": \"📻\",\r\n \"category\": \"objects\"\r\n },\r\n \"studio_microphone\": {\r\n \"keywords\": [\"singer\", \"recording\", \"artist\"],\r\n \"char\": \"🎙\",\r\n \"category\": \"objects\"\r\n },\r\n \"level_slider\": {\r\n \"keywords\": [\"scale\"],\r\n \"char\": \"🎚\",\r\n \"category\": \"objects\"\r\n },\r\n \"control_knobs\": {\r\n \"keywords\": [\"dial\"],\r\n \"char\": \"🎛\",\r\n \"category\": \"objects\"\r\n },\r\n \"stopwatch\": {\r\n \"keywords\": [\"time\", \"deadline\"],\r\n \"char\": \"⏱\",\r\n \"category\": \"objects\"\r\n },\r\n \"timer_clock\": {\r\n \"keywords\": [\"alarm\"],\r\n \"char\": \"⏲\",\r\n \"category\": \"objects\"\r\n },\r\n \"alarm_clock\": {\r\n \"keywords\": [\"time\", \"wake\"],\r\n \"char\": \"⏰\",\r\n \"category\": \"objects\"\r\n },\r\n \"mantelpiece_clock\": {\r\n \"keywords\": [\"time\"],\r\n \"char\": \"🕰\",\r\n \"category\": \"objects\"\r\n },\r\n \"hourglass_flowing_sand\": {\r\n \"keywords\": [\"oldschool\", \"time\", \"countdown\"],\r\n \"char\": \"⏳\",\r\n \"category\": \"objects\"\r\n },\r\n \"hourglass\": {\r\n \"keywords\": [\"time\", \"clock\", \"oldschool\", \"limit\", \"exam\", \"quiz\", \"test\"],\r\n \"char\": \"⌛\",\r\n \"category\": \"objects\"\r\n },\r\n \"satellite\": {\r\n \"keywords\": [\"communication\", \"future\", \"radio\", \"space\"],\r\n \"char\": \"📡\",\r\n \"category\": \"objects\"\r\n },\r\n \"battery\": {\r\n \"keywords\": [\"power\", \"energy\", \"sustain\"],\r\n \"char\": \"🔋\",\r\n \"category\": \"objects\"\r\n },\r\n \"electric_plug\": {\r\n \"keywords\": [\"charger\", \"power\"],\r\n \"char\": \"🔌\",\r\n \"category\": \"objects\"\r\n },\r\n \"bulb\": {\r\n \"keywords\": [\"light\", \"electricity\", \"idea\"],\r\n \"char\": \"💡\",\r\n \"category\": \"objects\"\r\n },\r\n \"flashlight\": {\r\n \"keywords\": [\"dark\", \"camping\", \"sight\", \"night\"],\r\n \"char\": \"🔦\",\r\n \"category\": \"objects\"\r\n },\r\n \"candle\": {\r\n \"keywords\": [\"fire\", \"wax\"],\r\n \"char\": \"🕯\",\r\n \"category\": \"objects\"\r\n },\r\n \"wastebasket\": {\r\n \"keywords\": [\"bin\", \"trash\", \"rubbish\", \"garbage\", \"toss\"],\r\n \"char\": \"🗑\",\r\n \"category\": \"objects\"\r\n },\r\n \"oil_drum\": {\r\n \"keywords\": [\"barrell\"],\r\n \"char\": \"🛢\",\r\n \"category\": \"objects\"\r\n },\r\n \"money_with_wings\": {\r\n \"keywords\": [\"dollar\", \"bills\", \"payment\", \"sale\"],\r\n \"char\": \"💸\",\r\n \"category\": \"objects\"\r\n },\r\n \"dollar\": {\r\n \"keywords\": [\"money\", \"sales\", \"bill\", \"currency\"],\r\n \"char\": \"💵\",\r\n \"category\": \"objects\"\r\n },\r\n \"yen\": {\r\n \"keywords\": [\"money\", \"sales\", \"japanese\", \"dollar\", \"currency\"],\r\n \"char\": \"💴\",\r\n \"category\": \"objects\"\r\n },\r\n \"euro\": {\r\n \"keywords\": [\"money\", \"sales\", \"dollar\", \"currency\"],\r\n \"char\": \"💶\",\r\n \"category\": \"objects\"\r\n },\r\n \"pound\": {\r\n \"keywords\": [\"british\", \"sterling\", \"money\", \"sales\", \"bills\", \"uk\", \"england\", \"currency\"],\r\n \"char\": \"💷\",\r\n \"category\": \"objects\"\r\n },\r\n \"moneybag\": {\r\n \"keywords\": [\"dollar\", \"payment\", \"coins\", \"sale\"],\r\n \"char\": \"💰\",\r\n \"category\": \"objects\"\r\n },\r\n \"credit_card\": {\r\n \"keywords\": [\"money\", \"sales\", \"dollar\", \"bill\", \"payment\", \"shopping\"],\r\n \"char\": \"💳\",\r\n \"category\": \"objects\"\r\n },\r\n \"gem\": {\r\n \"keywords\": [\"blue\", \"ruby\", \"diamond\", \"jewelry\"],\r\n \"char\": \"💎\",\r\n \"category\": \"objects\"\r\n },\r\n \"scales\": {\r\n \"keywords\": [\"law\", \"fairness\", \"weight\"],\r\n \"char\": \"⚖\",\r\n \"category\": \"objects\"\r\n },\r\n \"wrench\": {\r\n \"keywords\": [\"tools\", \"diy\", \"ikea\", \"fix\", \"maintainer\"],\r\n \"char\": \"🔧\",\r\n \"category\": \"objects\"\r\n },\r\n \"hammer\": {\r\n \"keywords\": [\"tools\", \"build\", \"create\"],\r\n \"char\": \"🔨\",\r\n \"category\": \"objects\"\r\n },\r\n \"hammer_and_pick\": {\r\n \"keywords\": [\"tools\", \"build\", \"create\"],\r\n \"char\": \"⚒\",\r\n \"category\": \"objects\"\r\n },\r\n \"hammer_and_wrench\": {\r\n \"keywords\": [\"tools\", \"build\", \"create\"],\r\n \"char\": \"🛠\",\r\n \"category\": \"objects\"\r\n },\r\n \"pick\": {\r\n \"keywords\": [\"tools\", \"dig\"],\r\n \"char\": \"⛏\",\r\n \"category\": \"objects\"\r\n },\r\n \"nut_and_bolt\": {\r\n \"keywords\": [\"handy\", \"tools\", \"fix\"],\r\n \"char\": \"🔩\",\r\n \"category\": \"objects\"\r\n },\r\n \"gear\": {\r\n \"keywords\": [\"cog\"],\r\n \"char\": \"⚙\",\r\n \"category\": \"objects\"\r\n },\r\n \"chains\": {\r\n \"keywords\": [\"lock\", \"arrest\"],\r\n \"char\": \"⛓\",\r\n \"category\": \"objects\"\r\n },\r\n \"gun\": {\r\n \"keywords\": [\"violence\", \"weapon\", \"pistol\", \"revolver\"],\r\n \"char\": \"🔫\",\r\n \"category\": \"objects\"\r\n },\r\n \"bomb\": {\r\n \"keywords\": [\"boom\", \"explode\", \"explosion\", \"terrorism\"],\r\n \"char\": \"💣\",\r\n \"category\": \"objects\"\r\n },\r\n \"hocho\": {\r\n \"keywords\": [\"knife\", \"blade\", \"cutlery\", \"kitchen\", \"weapon\"],\r\n \"char\": \"🔪\",\r\n \"category\": \"objects\"\r\n },\r\n \"dagger_knife\": {\r\n \"keywords\": [\"weapon\"],\r\n \"char\": \"🗡\",\r\n \"category\": \"objects\"\r\n },\r\n \"crossed_swords\": {\r\n \"keywords\": [\"weapon\"],\r\n \"char\": \"⚔\",\r\n \"category\": \"objects\"\r\n },\r\n \"shield\": {\r\n \"keywords\": [\"protection\", \"security\"],\r\n \"char\": \"🛡\",\r\n \"category\": \"objects\"\r\n },\r\n \"smoking\": {\r\n \"keywords\": [\"kills\", \"tobacco\", \"cigarette\", \"joint\", \"smoke\"],\r\n \"char\": \"🚬\",\r\n \"category\": \"objects\"\r\n },\r\n \"skull_and_crossbones\": {\r\n \"keywords\": [\"poison\", \"danger\", \"deadly\", \"scary\"],\r\n \"char\": \"☠\",\r\n \"category\": \"objects\"\r\n },\r\n \"coffin\": {\r\n \"keywords\": [\"vampire\", \"dead\", \"die\", \"death\", \"rip\", \"graveyard\", \"cemetery\"],\r\n \"char\": \"⚰\",\r\n \"category\": \"objects\"\r\n },\r\n \"funeral_urn\": {\r\n \"keywords\": [\"dead\", \"die\", \"death\", \"rip\", \"ashes\"],\r\n \"char\": \"⚱\",\r\n \"category\": \"objects\"\r\n },\r\n \"amphora\": {\r\n \"keywords\": [\"vase\", \"jar\"],\r\n \"char\": \"🏺\",\r\n \"category\": \"objects\"\r\n },\r\n \"crystal_ball\": {\r\n \"keywords\": [\"disco\", \"party\", \"magic\", \"circus\", \"fortune_teller\"],\r\n \"char\": \"🔮\",\r\n \"category\": \"objects\"\r\n },\r\n \"prayer_beads\": {\r\n \"keywords\": [\"dhikr\", \"religious\"],\r\n \"char\": \"📿\",\r\n \"category\": \"objects\"\r\n },\r\n \"barber\": {\r\n \"keywords\": [\"hair\", \"salon\", \"style\"],\r\n \"char\": \"💈\",\r\n \"category\": \"objects\"\r\n },\r\n \"alembic\": {\r\n \"keywords\": [\"distilling\", \"science\", \"experiment\"],\r\n \"char\": \"⚗\",\r\n \"category\": \"objects\"\r\n },\r\n \"telescope\": {\r\n \"keywords\": [\"stars\", \"space\", \"zoom\"],\r\n \"char\": \"🔭\",\r\n \"category\": \"objects\"\r\n },\r\n \"microscope\": {\r\n \"keywords\": [\"laboratory\", \"experiment\", \"zoomin\", \"science\", \"study\"],\r\n \"char\": \"🔬\",\r\n \"category\": \"objects\"\r\n },\r\n \"hole\": {\r\n \"keywords\": [\"embarrassing\"],\r\n \"char\": \"🕳\",\r\n \"category\": \"objects\"\r\n },\r\n \"pill\": {\r\n \"keywords\": [\"health\", \"medicine\", \"doctor\", \"pharmacy\", \"drug\"],\r\n \"char\": \"💊\",\r\n \"category\": \"objects\"\r\n },\r\n \"syringe\": {\r\n \"keywords\": [\"health\", \"hospital\", \"drugs\", \"blood\", \"medicine\", \"needle\", \"doctor\", \"nurse\"],\r\n \"char\": \"💉\",\r\n \"category\": \"objects\"\r\n },\r\n \"thermometer\": {\r\n \"keywords\": [\"weather\", \"temperature\", \"hot\", \"cold\"],\r\n \"char\": \"🌡\",\r\n \"category\": \"objects\"\r\n },\r\n \"label\": {\r\n \"keywords\": [\"sale\", \"tag\"],\r\n \"char\": \"🏷\",\r\n \"category\": \"objects\"\r\n },\r\n \"bookmark\": {\r\n \"keywords\": [\"favorite\", \"label\", \"save\"],\r\n \"char\": \"🔖\",\r\n \"category\": \"objects\"\r\n },\r\n \"toilet\": {\r\n \"keywords\": [\"restroom\", \"wc\", \"washroom\", \"bathroom\", \"potty\"],\r\n \"char\": \"🚽\",\r\n \"category\": \"objects\"\r\n },\r\n \"shower\": {\r\n \"keywords\": [\"clean\", \"water\", \"bathroom\"],\r\n \"char\": \"🚿\",\r\n \"category\": \"objects\"\r\n },\r\n \"bathtub\": {\r\n \"keywords\": [\"clean\", \"shower\", \"bathroom\"],\r\n \"char\": \"🛁\",\r\n \"category\": \"objects\"\r\n },\r\n \"key\": {\r\n \"keywords\": [\"lock\", \"door\", \"password\"],\r\n \"char\": \"🔑\",\r\n \"category\": \"objects\"\r\n },\r\n \"old_key\": {\r\n \"keywords\": [\"lock\", \"door\", \"password\"],\r\n \"char\": \"🗝\",\r\n \"category\": \"objects\"\r\n },\r\n \"couch_and_lamp\": {\r\n \"keywords\": [\"read\", \"chill\"],\r\n \"char\": \"🛋\",\r\n \"category\": \"objects\"\r\n },\r\n \"sleeping_accommodation\": {\r\n \"keywords\": [\"bed\", \"rest\"],\r\n \"char\": \"🛌\",\r\n \"category\": \"objects\"\r\n },\r\n \"bed\": {\r\n \"keywords\": [\"sleep\", \"rest\"],\r\n \"char\": \"🛏\",\r\n \"category\": \"objects\"\r\n },\r\n \"door\": {\r\n \"keywords\": [\"house\", \"entry\", \"exit\"],\r\n \"char\": \"🚪\",\r\n \"category\": \"objects\"\r\n },\r\n \"bellhop_bell\": {\r\n \"keywords\": [\"service\"],\r\n \"char\": \"🛎\",\r\n \"category\": \"objects\"\r\n },\r\n \"frame_with_picture\": {\r\n \"keywords\": [\"photography\"],\r\n \"char\": \"🖼\",\r\n \"category\": \"objects\"\r\n },\r\n \"world_map\": {\r\n \"keywords\": [\"location\", \"direction\"],\r\n \"char\": \"🗺\",\r\n \"category\": \"objects\"\r\n },\r\n \"umbrella_on_ground\": {\r\n \"keywords\": [\"weather\", \"summer\"],\r\n \"char\": \"⛱\",\r\n \"category\": \"objects\"\r\n },\r\n \"moyai\": {\r\n \"keywords\": [\"rock\", \"easter island\", \"moai\"],\r\n \"char\": \"🗿\",\r\n \"category\": \"objects\"\r\n },\r\n \"shopping_bags\": {\r\n \"keywords\": [\"mall\", \"buy\", \"purchase\"],\r\n \"char\": \"🛍\",\r\n \"category\": \"objects\"\r\n },\r\n \"balloon\": {\r\n \"keywords\": [\"party\", \"celebration\", \"birthday\", \"circus\"],\r\n \"char\": \"🎈\",\r\n \"category\": \"objects\"\r\n },\r\n \"flags\": {\r\n \"keywords\": [\"fish\", \"japanese\", \"koinobori\", \"carp\", \"banner\"],\r\n \"char\": \"🎏\",\r\n \"category\": \"objects\"\r\n },\r\n \"ribbon\": {\r\n \"keywords\": [\"decoration\", \"pink\", \"girl\", \"bowtie\"],\r\n \"char\": \"🎀\",\r\n \"category\": \"objects\"\r\n },\r\n \"gift\": {\r\n \"keywords\": [\"present\", \"birthday\", \"christmas\", \"xmas\"],\r\n \"char\": \"🎁\",\r\n \"category\": \"objects\"\r\n },\r\n \"confetti_ball\": {\r\n \"keywords\": [\"festival\", \"party\", \"birthday\", \"circus\"],\r\n \"char\": \"🎊\",\r\n \"category\": \"objects\"\r\n },\r\n \"tada\": {\r\n \"keywords\": [\"party\", \"contulations\", \"birthday\", \"magic\", \"circus\"],\r\n \"char\": \"🎉\",\r\n \"category\": \"objects\"\r\n },\r\n \"dolls\": {\r\n \"keywords\": [\"japanese\", \"toy\", \"kimono\"],\r\n \"char\": \"🎎\",\r\n \"category\": \"objects\"\r\n },\r\n \"wind_chime\": {\r\n \"keywords\": [\"nature\", \"ding\", \"spring\", \"bell\"],\r\n \"char\": \"🎐\",\r\n \"category\": \"objects\"\r\n },\r\n \"crossed_flags\": {\r\n \"keywords\": [\"japanese\", \"nation\", \"country\", \"border\"],\r\n \"char\": \"🎌\",\r\n \"category\": \"objects\"\r\n },\r\n \"izakaya_lantern\": {\r\n \"keywords\": [\"light\", \"paper\", \"halloween\", \"spooky\"],\r\n \"char\": \"🏮\",\r\n \"category\": \"objects\"\r\n },\r\n \"envelope\": {\r\n \"keywords\": [\"letter\", \"postal\", \"inbox\", \"communication\"],\r\n \"char\": \"✉️\",\r\n \"category\": \"objects\"\r\n },\r\n \"envelope_with_arrow\": {\r\n \"keywords\": [\"email\", \"communication\"],\r\n \"char\": \"📩\",\r\n \"category\": \"objects\"\r\n },\r\n \"incoming_envelope\": {\r\n \"keywords\": [\"email\", \"inbox\"],\r\n \"char\": \"📨\",\r\n \"category\": \"objects\"\r\n },\r\n \"email\": {\r\n \"keywords\": [\"communication\", \"inbox\"],\r\n \"char\": \"📧\",\r\n \"category\": \"objects\"\r\n },\r\n \"love_letter\": {\r\n \"keywords\": [\"email\", \"like\", \"affection\", \"envelope\", \"valentines\"],\r\n \"char\": \"💌\",\r\n \"category\": \"objects\"\r\n },\r\n \"postbox\": {\r\n \"keywords\": [\"email\", \"letter\", \"envelope\"],\r\n \"char\": \"📮\",\r\n \"category\": \"objects\"\r\n },\r\n \"mailbox_closed\": {\r\n \"keywords\": [\"email\", \"communication\", \"inbox\"],\r\n \"char\": \"📪\",\r\n \"category\": \"objects\"\r\n },\r\n \"mailbox\": {\r\n \"keywords\": [\"email\", \"inbox\", \"communication\"],\r\n \"char\": \"📫\",\r\n \"category\": \"objects\"\r\n },\r\n \"mailbox_with_mail\": {\r\n \"keywords\": [\"email\", \"inbox\", \"communication\"],\r\n \"char\": \"📬\",\r\n \"category\": \"objects\"\r\n },\r\n \"mailbox_with_no_mail\": {\r\n \"keywords\": [\"email\", \"inbox\"],\r\n \"char\": \"📭\",\r\n \"category\": \"objects\"\r\n },\r\n \"package\": {\r\n \"keywords\": [\"mail\", \"gift\", \"cardboard\", \"box\", \"moving\"],\r\n \"char\": \"📦\",\r\n \"category\": \"objects\"\r\n },\r\n \"postal_horn\": {\r\n \"keywords\": [\"instrument\", \"music\"],\r\n \"char\": \"📯\",\r\n \"category\": \"objects\"\r\n },\r\n \"inbox_tray\": {\r\n \"keywords\": [\"email\", \"documents\"],\r\n \"char\": \"📥\",\r\n \"category\": \"objects\"\r\n },\r\n \"outbox_tray\": {\r\n \"keywords\": [\"inbox\", \"email\"],\r\n \"char\": \"📤\",\r\n \"category\": \"objects\"\r\n },\r\n \"scroll\": {\r\n \"keywords\": [\"documents\", \"ancient\", \"history\", \"paper\"],\r\n \"char\": \"📜\",\r\n \"category\": \"objects\"\r\n },\r\n \"page_with_curl\": {\r\n \"keywords\": [\"documents\", \"office\", \"paper\"],\r\n \"char\": \"📃\",\r\n \"category\": \"objects\"\r\n },\r\n \"bookmark_tabs\": {\r\n \"keywords\": [\"favorite\", \"save\", \"order\", \"tidy\"],\r\n \"char\": \"📑\",\r\n \"category\": \"objects\"\r\n },\r\n \"bar_chart\": {\r\n \"keywords\": [\"graph\", \"presentation\", \"stats\"],\r\n \"char\": \"📊\",\r\n \"category\": \"objects\"\r\n },\r\n \"chart_with_upwards_trend\": {\r\n \"keywords\": [\"graph\", \"presentation\", \"stats\", \"recovery\", \"business\", \"economics\", \"money\", \"sales\", \"good\", \"success\"],\r\n \"char\": \"📈\",\r\n \"category\": \"objects\"\r\n },\r\n \"chart_with_downwards_trend\": {\r\n \"keywords\": [\"graph\", \"presentation\", \"stats\", \"recession\", \"business\", \"economics\", \"money\", \"sales\", \"bad\", \"failure\"],\r\n \"char\": \"📉\",\r\n \"category\": \"objects\"\r\n },\r\n \"page_facing_up\": {\r\n \"keywords\": [\"documents\", \"office\", \"paper\", \"information\"],\r\n \"char\": \"📄\",\r\n \"category\": \"objects\"\r\n },\r\n \"date\": {\r\n \"keywords\": [\"calendar\", \"schedule\"],\r\n \"char\": \"📅\",\r\n \"category\": \"objects\"\r\n },\r\n \"calendar\": {\r\n \"keywords\": [\"schedule\", \"date\", \"planning\"],\r\n \"char\": \"📆\",\r\n \"category\": \"objects\"\r\n },\r\n \"spiral_calendar_pad\": {\r\n \"keywords\": [\"date\", \"schedule\", \"planning\"],\r\n \"char\": \"🗓\",\r\n \"category\": \"objects\"\r\n },\r\n \"card_index\": {\r\n \"keywords\": [\"business\", \"stationery\"],\r\n \"char\": \"📇\",\r\n \"category\": \"objects\"\r\n },\r\n \"card_file_box\": {\r\n \"keywords\": [\"business\", \"stationery\"],\r\n \"char\": \"🗃\",\r\n \"category\": \"objects\"\r\n },\r\n \"ballot_box_with_ballot\": {\r\n \"keywords\": [\"election\", \"vote\"],\r\n \"char\": \"🗳\",\r\n \"category\": \"objects\"\r\n },\r\n \"file_cabinet\": {\r\n \"keywords\": [\"filing\", \"organizing\"],\r\n \"char\": \"🗄\",\r\n \"category\": \"objects\"\r\n },\r\n \"clipboard\": {\r\n \"keywords\": [\"stationery\", \"documents\"],\r\n \"char\": \"📋\",\r\n \"category\": \"objects\"\r\n },\r\n \"spiral_note_pad\": {\r\n \"keywords\": [\"memo\", \"stationery\"],\r\n \"char\": \"🗒\",\r\n \"category\": \"objects\"\r\n },\r\n \"file_folder\": {\r\n \"keywords\": [\"documents\", \"business\", \"office\"],\r\n \"char\": \"📁\",\r\n \"category\": \"objects\"\r\n },\r\n \"open_file_folder\": {\r\n \"keywords\": [\"documents\", \"load\"],\r\n \"char\": \"📂\",\r\n \"category\": \"objects\"\r\n },\r\n \"card_index_dividers\": {\r\n \"keywords\": [\"organizing\", \"business\", \"stationery\"],\r\n \"char\": \"🗂\",\r\n \"category\": \"objects\"\r\n },\r\n \"rolled_up_newspaper\": {\r\n \"keywords\": [\"press\", \"headline\"],\r\n \"char\": \"🗞\",\r\n \"category\": \"objects\"\r\n },\r\n \"newspaper\": {\r\n \"keywords\": [\"press\", \"headline\"],\r\n \"char\": \"📰\",\r\n \"category\": \"objects\"\r\n },\r\n \"notebook\": {\r\n \"keywords\": [\"stationery\", \"record\", \"notes\", \"paper\", \"study\"],\r\n \"char\": \"📓\",\r\n \"category\": \"objects\"\r\n },\r\n \"closed_book\": {\r\n \"keywords\": [\"read\", \"library\", \"knowledge\", \"textbook\", \"learn\"],\r\n \"char\": \"📕\",\r\n \"category\": \"objects\"\r\n },\r\n \"green_book\": {\r\n \"keywords\": [\"read\", \"library\", \"knowledge\", \"study\"],\r\n \"char\": \"📗\",\r\n \"category\": \"objects\"\r\n },\r\n \"blue_book\": {\r\n \"keywords\": [\"read\", \"library\", \"knowledge\", \"learn\", \"study\"],\r\n \"char\": \"📘\",\r\n \"category\": \"objects\"\r\n },\r\n \"orange_book\": {\r\n \"keywords\": [\"read\", \"library\", \"knowledge\", \"textbook\", \"study\"],\r\n \"char\": \"📙\",\r\n \"category\": \"objects\"\r\n },\r\n \"notebook_with_decorative_cover\": {\r\n \"keywords\": [\"classroom\", \"notes\", \"record\", \"paper\", \"study\"],\r\n \"char\": \"📔\",\r\n \"category\": \"objects\"\r\n },\r\n \"ledger\": {\r\n \"keywords\": [\"notes\", \"paper\"],\r\n \"char\": \"📒\",\r\n \"category\": \"objects\"\r\n },\r\n \"books\": {\r\n \"keywords\": [\"literature\", \"library\", \"study\"],\r\n \"char\": \"📚\",\r\n \"category\": \"objects\"\r\n },\r\n \"book\": {\r\n \"keywords\": [\"open_book\", \"read\", \"library\", \"knowledge\", \"literature\", \"learn\", \"study\"],\r\n \"char\": \"📖\",\r\n \"category\": \"objects\"\r\n },\r\n \"link\": {\r\n \"keywords\": [\"rings\", \"url\"],\r\n \"char\": \"🔗\",\r\n \"category\": \"objects\"\r\n },\r\n \"paperclip\": {\r\n \"keywords\": [\"documents\", \"stationery\"],\r\n \"char\": \"📎\",\r\n \"category\": \"objects\"\r\n },\r\n \"linked_paperclips\": {\r\n \"keywords\": [\"documents\", \"stationery\"],\r\n \"char\": \"🖇\",\r\n \"category\": \"objects\"\r\n },\r\n \"scissors\": {\r\n \"keywords\": [\"stationery\", \"cut\"],\r\n \"char\": \"✂️\",\r\n \"category\": \"objects\"\r\n },\r\n \"triangular_ruler\": {\r\n \"keywords\": [\"stationery\", \"math\", \"architect\", \"sketch\"],\r\n \"char\": \"📐\",\r\n \"category\": \"objects\"\r\n },\r\n \"straight_ruler\": {\r\n \"keywords\": [\"stationery\", \"calculate\", \"length\", \"math\", \"school\", \"drawing\", \"architect\", \"sketch\"],\r\n \"char\": \"📏\",\r\n \"category\": \"objects\"\r\n },\r\n \"pushpin\": {\r\n \"keywords\": [\"stationery\", \"mark\", \"here\"],\r\n \"char\": \"📌\",\r\n \"category\": \"objects\"\r\n },\r\n \"round_pushpin\": {\r\n \"keywords\": [\"stationery\", \"location\", \"map\", \"here\"],\r\n \"char\": \"📍\",\r\n \"category\": \"objects\"\r\n },\r\n \"triangular_flag_on_post\": {\r\n \"keywords\": [\"mark\", \"milestone\", \"place\"],\r\n \"char\": \"🚩\",\r\n \"category\": \"objects\"\r\n },\r\n \"waving_white_flag\": {\r\n \"keywords\": [\"losing\", \"loser\", \"lost\", \"surrender\", \"give up\", \"fail\"],\r\n \"char\": \"🏳\",\r\n \"category\": \"objects\"\r\n },\r\n \"waving_black_flag\": {\r\n \"keywords\": [\"pirate\"],\r\n \"char\": \"🏴\",\r\n \"category\": \"objects\"\r\n },\r\n \"closed_lock_with_key\": {\r\n \"keywords\": [\"security\", \"privacy\"],\r\n \"char\": \"🔐\",\r\n \"category\": \"objects\"\r\n },\r\n \"lock\": {\r\n \"keywords\": [\"security\", \"password\", \"padlock\"],\r\n \"char\": \"🔒\",\r\n \"category\": \"objects\"\r\n },\r\n \"unlock\": {\r\n \"keywords\": [\"privacy\", \"security\"],\r\n \"char\": \"🔓\",\r\n \"category\": \"objects\"\r\n },\r\n \"lock_with_ink_pen\": {\r\n \"keywords\": [\"security\", \"secret\"],\r\n \"char\": \"🔏\",\r\n \"category\": \"objects\"\r\n },\r\n \"lower_left_ballpoint_pen\": {\r\n \"keywords\": [\"stationery\", \"writing\", \"write\"],\r\n \"char\": \"🖊\",\r\n \"category\": \"objects\"\r\n },\r\n \"lower_left_fountain_pen\": {\r\n \"keywords\": [\"stationery\", \"writing\", \"write\"],\r\n \"char\": \"🖋\",\r\n \"category\": \"objects\"\r\n },\r\n \"black_nib\": {\r\n \"keywords\": [\"pen\", \"stationery\", \"writing\", \"write\"],\r\n \"char\": \"✒️\",\r\n \"category\": \"objects\"\r\n },\r\n \"memo\": {\r\n \"keywords\": [\"write\", \"documents\", \"stationery\", \"pencil\", \"paper\", \"writing\", \"legal\", \"exam\", \"quiz\", \"test\", \"study\"],\r\n \"char\": \"📝\",\r\n \"category\": \"objects\"\r\n },\r\n \"pencil2\": {\r\n \"keywords\": [\"stationery\", \"write\", \"paper\", \"writing\", \"school\", \"study\"],\r\n \"char\": \"✏️\",\r\n \"category\": \"objects\"\r\n },\r\n \"lower_left_crayon\": {\r\n \"keywords\": [\"drawing\", \"creativity\"],\r\n \"char\": \"🖍\",\r\n \"category\": \"objects\"\r\n },\r\n \"lower_left_paintbrush\": {\r\n \"keywords\": [\"drawing\", \"creativity\", \"art\"],\r\n \"char\": \"🖌\",\r\n \"category\": \"objects\"\r\n },\r\n \"mag\": {\r\n \"keywords\": [\"search\", \"zoom\", \"find\", \"detective\"],\r\n \"char\": \"🔍\",\r\n \"category\": \"objects\"\r\n },\r\n \"mag_right\": {\r\n \"keywords\": [\"search\", \"zoom\", \"find\", \"detective\"],\r\n \"char\": \"🔎\",\r\n \"category\": \"objects\"\r\n },\r\n \"heart\": {\r\n \"keywords\": [\"love\", \"like\", \"valentines\"],\r\n \"char\": \"❤️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"yellow_heart\": {\r\n \"keywords\": [\"love\", \"like\", \"affection\", \"valentines\"],\r\n \"char\": \"💛\",\r\n \"category\": \"symbols\"\r\n },\r\n \"green_heart\": {\r\n \"keywords\": [\"love\", \"like\", \"affection\", \"valentines\"],\r\n \"char\": \"💚\",\r\n \"category\": \"symbols\"\r\n },\r\n \"blue_heart\": {\r\n \"keywords\": [\"love\", \"like\", \"affection\", \"valentines\"],\r\n \"char\": \"💙\",\r\n \"category\": \"symbols\"\r\n },\r\n \"purple_heart\": {\r\n \"keywords\": [\"love\", \"like\", \"affection\", \"valentines\"],\r\n \"char\": \"💜\",\r\n \"category\": \"symbols\"\r\n },\r\n \"broken_heart\": {\r\n \"keywords\": [\"sad\", \"sorry\", \"break\", \"heart\", \"heartbreak\"],\r\n \"char\": \"💔\",\r\n \"category\": \"symbols\"\r\n },\r\n \"heavy_heart_exclamation_mark_ornament\": {\r\n \"keywords\": [\"decoration\", \"love\"],\r\n \"char\": \"❣\",\r\n \"category\": \"symbols\"\r\n },\r\n \"two_hearts\": {\r\n \"keywords\": [\"love\", \"like\", \"affection\", \"valentines\", \"heart\"],\r\n \"char\": \"💕\",\r\n \"category\": \"symbols\"\r\n },\r\n \"revolving_hearts\": {\r\n \"keywords\": [\"love\", \"like\", \"affection\", \"valentines\"],\r\n \"char\": \"💞\",\r\n \"category\": \"symbols\"\r\n },\r\n \"heartbeat\": {\r\n \"keywords\": [\"love\", \"like\", \"affection\", \"valentines\", \"pink\", \"heart\"],\r\n \"char\": \"💓\",\r\n \"category\": \"symbols\"\r\n },\r\n \"heartpulse\": {\r\n \"keywords\": [\"like\", \"love\", \"affection\", \"valentines\", \"pink\"],\r\n \"char\": \"💗\",\r\n \"category\": \"symbols\"\r\n },\r\n \"sparkling_heart\": {\r\n \"keywords\": [\"love\", \"like\", \"affection\", \"valentines\"],\r\n \"char\": \"💖\",\r\n \"category\": \"symbols\"\r\n },\r\n \"cupid\": {\r\n \"keywords\": [\"love\", \"like\", \"heart\", \"affection\", \"valentines\"],\r\n \"char\": \"💘\",\r\n \"category\": \"symbols\"\r\n },\r\n \"gift_heart\": {\r\n \"keywords\": [\"love\", \"valentines\"],\r\n \"char\": \"💝\",\r\n \"category\": \"symbols\"\r\n },\r\n \"heart_decoration\": {\r\n \"keywords\": [\"purple-square\", \"love\", \"like\"],\r\n \"char\": \"💟\",\r\n \"category\": \"symbols\"\r\n },\r\n \"peace_symbol\": {\r\n \"keywords\": [\"hippie\"],\r\n \"char\": \"☮\",\r\n \"category\": \"symbols\"\r\n },\r\n \"latin_cross\": {\r\n \"keywords\": [\"christianity\"],\r\n \"char\": \"✝\",\r\n \"category\": \"symbols\"\r\n },\r\n \"star_and_crescent\": {\r\n \"keywords\": [\"islam\"],\r\n \"char\": \"☪\",\r\n \"category\": \"symbols\"\r\n },\r\n \"om_symbol\": {\r\n \"keywords\": [\"hinduism\", \"buddhism\", \"sikhism\", \"jainism\"],\r\n \"char\": \"🕉\",\r\n \"category\": \"symbols\"\r\n },\r\n \"wheel_of_dharma\": {\r\n \"keywords\": [\"hinduism\", \"buddhism\", \"sikhism\", \"jainism\"],\r\n \"char\": \"☸\",\r\n \"category\": \"symbols\"\r\n },\r\n \"star_of_david\": {\r\n \"keywords\": [\"judaism\"],\r\n \"char\": \"✡\",\r\n \"category\": \"symbols\"\r\n },\r\n \"six_pointed_star\": {\r\n \"keywords\": [\"purple-square\", \"religion\", \"jewish\", \"hexagram\"],\r\n \"char\": \"🔯\",\r\n \"category\": \"symbols\"\r\n },\r\n \"menorah_with_nine_branches\": {\r\n \"keywords\": [\"hanukkah\", \"candles\", \"jewish\"],\r\n \"char\": \"🕎\",\r\n \"category\": \"symbols\"\r\n },\r\n \"yin_yang\": {\r\n \"keywords\": [\"balance\"],\r\n \"char\": \"☯\",\r\n \"category\": \"symbols\"\r\n },\r\n \"orthodox_cross\": {\r\n \"keywords\": [\"suppedaneum\", \"religion\"],\r\n \"char\": \"☦\",\r\n \"category\": \"symbols\"\r\n },\r\n \"place_of_worship\": {\r\n \"keywords\": [\"religion\", \"church\", \"temple\", \"prayer\"],\r\n \"char\": \"🛐\",\r\n \"category\": \"symbols\"\r\n },\r\n \"ophiuchus\": {\r\n \"keywords\": [\"sign\", \"purple-square\", \"constellation\", \"astrology\"],\r\n \"char\": \"⛎\",\r\n \"category\": \"symbols\"\r\n },\r\n \"aries\": {\r\n \"keywords\": [\"sign\", \"purple-square\", \"zodiac\", \"astrology\"],\r\n \"char\": \"♈\",\r\n \"category\": \"symbols\"\r\n },\r\n \"taurus\": {\r\n \"keywords\": [\"purple-square\", \"sign\", \"zodiac\", \"astrology\"],\r\n \"char\": \"♉\",\r\n \"category\": \"symbols\"\r\n },\r\n \"gemini\": {\r\n \"keywords\": [\"sign\", \"zodiac\", \"purple-square\", \"astrology\"],\r\n \"char\": \"♊\",\r\n \"category\": \"symbols\"\r\n },\r\n \"cancer\": {\r\n \"keywords\": [\"sign\", \"zodiac\", \"purple-square\", \"astrology\"],\r\n \"char\": \"♋\",\r\n \"category\": \"symbols\"\r\n },\r\n \"leo\": {\r\n \"keywords\": [\"sign\", \"purple-square\", \"zodiac\", \"astrology\"],\r\n \"char\": \"♌\",\r\n \"category\": \"symbols\"\r\n },\r\n \"virgo\": {\r\n \"keywords\": [\"sign\", \"zodiac\", \"purple-square\", \"astrology\"],\r\n \"char\": \"♍\",\r\n \"category\": \"symbols\"\r\n },\r\n \"libra\": {\r\n \"keywords\": [\"sign\", \"purple-square\", \"zodiac\", \"astrology\"],\r\n \"char\": \"♎\",\r\n \"category\": \"symbols\"\r\n },\r\n \"scorpius\": {\r\n \"keywords\": [\"sign\", \"zodiac\", \"purple-square\", \"astrology\", \"scorpio\"],\r\n \"char\": \"♏\",\r\n \"category\": \"symbols\"\r\n },\r\n \"sagittarius\": {\r\n \"keywords\": [\"sign\", \"zodiac\", \"purple-square\", \"astrology\"],\r\n \"char\": \"♐\",\r\n \"category\": \"symbols\"\r\n },\r\n \"capricorn\": {\r\n \"keywords\": [\"sign\", \"zodiac\", \"purple-square\", \"astrology\"],\r\n \"char\": \"♑\",\r\n \"category\": \"symbols\"\r\n },\r\n \"aquarius\": {\r\n \"keywords\": [\"sign\", \"purple-square\", \"zodiac\", \"astrology\"],\r\n \"char\": \"♒\",\r\n \"category\": \"symbols\"\r\n },\r\n \"pisces\": {\r\n \"keywords\": [\"purple-square\", \"sign\", \"zodiac\", \"astrology\"],\r\n \"char\": \"♓\",\r\n \"category\": \"symbols\"\r\n },\r\n \"id\": {\r\n \"keywords\": [\"purple-square\", \"words\"],\r\n \"char\": \"🆔\",\r\n \"category\": \"symbols\"\r\n },\r\n \"atom_symbol\": {\r\n \"keywords\": [\"science\"],\r\n \"char\": \"⚛\",\r\n \"category\": \"symbols\"\r\n },\r\n \"u7a7a\": {\r\n \"keywords\": [\"kanji\", \"japanese\", \"chinese\", \"empty\", \"sky\", \"blue-square\"],\r\n \"char\": \"🈳\",\r\n \"category\": \"symbols\"\r\n },\r\n \"u5272\": {\r\n \"keywords\": [\"cut\", \"divide\", \"chinese\", \"kanji\", \"pink-square\"],\r\n \"char\": \"🈹\",\r\n \"category\": \"symbols\"\r\n },\r\n \"radioactive_sign\": {\r\n \"keywords\": [\"nuclear\", \"danger\"],\r\n \"char\": \"☢\",\r\n \"category\": \"symbols\"\r\n },\r\n \"biohazard_sign\": {\r\n \"keywords\": [\"danger\"],\r\n \"char\": \"☣\",\r\n \"category\": \"symbols\"\r\n },\r\n \"mobile_phone_off\": {\r\n \"keywords\": [\"mute\", \"orange-square\", \"silence\", \"quiet\"],\r\n \"char\": \"📴\",\r\n \"category\": \"symbols\"\r\n },\r\n \"vibration_mode\": {\r\n \"keywords\": [\"orange-square\", \"phone\"],\r\n \"char\": \"📳\",\r\n \"category\": \"symbols\"\r\n },\r\n \"u6709\": {\r\n \"keywords\": [\"orange-square\", \"chinese\", \"have\", \"kanji\"],\r\n \"char\": \"🈶\",\r\n \"category\": \"symbols\"\r\n },\r\n \"u7121\": {\r\n \"keywords\": [\"nothing\", \"chinese\", \"kanji\", \"japanese\", \"orange-square\"],\r\n \"char\": \"🈚\",\r\n \"category\": \"symbols\"\r\n },\r\n \"u7533\": {\r\n \"keywords\": [\"chinese\", \"japanese\", \"kanji\", \"orange-square\"],\r\n \"char\": \"🈸\",\r\n \"category\": \"symbols\"\r\n },\r\n \"u55b6\": {\r\n \"keywords\": [\"japanese\", \"opening hours\", \"orange-square\"],\r\n \"char\": \"🈺\",\r\n \"category\": \"symbols\"\r\n },\r\n \"u6708\": {\r\n \"keywords\": [\"chinese\", \"month\", \"moon\", \"japanese\", \"orange-square\", \"kanji\"],\r\n \"char\": \"🈷️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"eight_pointed_black_star\": {\r\n \"keywords\": [\"orange-square\", \"shape\", \"polygon\"],\r\n \"char\": \"✴️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"vs\": {\r\n \"keywords\": [\"words\", \"orange-square\"],\r\n \"char\": \"🆚\",\r\n \"category\": \"symbols\"\r\n },\r\n \"accept\": {\r\n \"keywords\": [\"ok\", \"good\", \"chinese\", \"kanji\", \"agree\", \"yes\", \"orange-circle\"],\r\n \"char\": \"🉑\",\r\n \"category\": \"symbols\"\r\n },\r\n \"white_flower\": {\r\n \"keywords\": [\"japanese\", \"spring\"],\r\n \"char\": \"💮\",\r\n \"category\": \"symbols\"\r\n },\r\n \"ideograph_advantage\": {\r\n \"keywords\": [\"chinese\", \"kanji\", \"obtain\", \"get\", \"circle\"],\r\n \"char\": \"🉐\",\r\n \"category\": \"symbols\"\r\n },\r\n \"secret\": {\r\n \"keywords\": [\"privacy\", \"chinese\", \"sshh\", \"kanji\", \"red-circle\"],\r\n \"char\": \"㊙️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"congratulations\": {\r\n \"keywords\": [\"chinese\", \"kanji\", \"japanese\", \"red-circle\"],\r\n \"char\": \"㊗️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"u5408\": {\r\n \"keywords\": [\"japanese\", \"chinese\", \"join\", \"kanji\", \"red-square\"],\r\n \"char\": \"🈴\",\r\n \"category\": \"symbols\"\r\n },\r\n \"u6e80\": {\r\n \"keywords\": [\"full\", \"chinese\", \"japanese\", \"red-square\", \"kanji\"],\r\n \"char\": \"🈵\",\r\n \"category\": \"symbols\"\r\n },\r\n \"u7981\": {\r\n \"keywords\": [\"kanji\", \"japanese\", \"chinese\", \"forbidden\", \"limit\", \"restricted\", \"red-square\"],\r\n \"char\": \"🈲\",\r\n \"category\": \"symbols\"\r\n },\r\n \"a\": {\r\n \"keywords\": [\"red-square\", \"alphabet\", \"letter\"],\r\n \"char\": \"🅰️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"b\": {\r\n \"keywords\": [\"red-square\", \"alphabet\", \"letter\"],\r\n \"char\": \"🅱️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"ab\": {\r\n \"keywords\": [\"red-square\", \"alphabet\"],\r\n \"char\": \"🆎\",\r\n \"category\": \"symbols\"\r\n },\r\n \"cl\": {\r\n \"keywords\": [\"alphabet\", \"words\", \"red-square\"],\r\n \"char\": \"🆑\",\r\n \"category\": \"symbols\"\r\n },\r\n \"o2\": {\r\n \"keywords\": [\"alphabet\", \"red-square\", \"letter\"],\r\n \"char\": \"🅾️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"sos\": {\r\n \"keywords\": [\"help\", \"red-square\", \"words\", \"emergency\", \"911\"],\r\n \"char\": \"🆘\",\r\n \"category\": \"symbols\"\r\n },\r\n \"no_entry\": {\r\n \"keywords\": [\"limit\", \"security\", \"privacy\", \"bad\", \"denied\", \"stop\", \"circle\"],\r\n \"char\": \"⛔\",\r\n \"category\": \"symbols\"\r\n },\r\n \"name_badge\": {\r\n \"keywords\": [\"fire\", \"forbid\"],\r\n \"char\": \"📛\",\r\n \"category\": \"symbols\"\r\n },\r\n \"no_entry_sign\": {\r\n \"keywords\": [\"forbid\", \"stop\", \"limit\", \"denied\", \"disallow\", \"circle\"],\r\n \"char\": \"🚫\",\r\n \"category\": \"symbols\"\r\n },\r\n \"x\": {\r\n \"keywords\": [\"no\", \"delete\", \"remove\", \"cancel\"],\r\n \"char\": \"❌\",\r\n \"category\": \"symbols\"\r\n },\r\n \"o\": {\r\n \"keywords\": [\"circle\", \"round\"],\r\n \"char\": \"⭕\",\r\n \"category\": \"symbols\"\r\n },\r\n \"anger\": {\r\n \"keywords\": [\"angry\", \"mad\"],\r\n \"char\": \"💢\",\r\n \"category\": \"symbols\"\r\n },\r\n \"hotsprings\": {\r\n \"keywords\": [\"bath\", \"warm\", \"relax\"],\r\n \"char\": \"♨️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"no_pedestrians\": {\r\n \"keywords\": [\"rules\", \"crossing\", \"walking\", \"circle\"],\r\n \"char\": \"🚷\",\r\n \"category\": \"symbols\"\r\n },\r\n \"do_not_litter\": {\r\n \"keywords\": [\"trash\", \"bin\", \"garbage\", \"circle\"],\r\n \"char\": \"🚯\",\r\n \"category\": \"symbols\"\r\n },\r\n \"no_bicycles\": {\r\n \"keywords\": [\"cyclist\", \"prohibited\", \"circle\"],\r\n \"char\": \"🚳\",\r\n \"category\": \"symbols\"\r\n },\r\n \"non-potable_water\": {\r\n \"keywords\": [\"drink\", \"faucet\", \"tap\", \"circle\"],\r\n \"char\": \"🚱\",\r\n \"category\": \"symbols\"\r\n },\r\n \"underage\": {\r\n \"keywords\": [\"18\", \"drink\", \"pub\", \"night\", \"minor\", \"circle\"],\r\n \"char\": \"🔞\",\r\n \"category\": \"symbols\"\r\n },\r\n \"no_mobile_phones\": {\r\n \"keywords\": [\"iphone\", \"mute\", \"circle\"],\r\n \"char\": \"📵\",\r\n \"category\": \"symbols\"\r\n },\r\n \"exclamation\": {\r\n \"keywords\": [\"heavy_exclamation_mark\", \"danger\", \"surprise\", \"punctuation\", \"wow\", \"warning\"],\r\n \"char\": \"❗\",\r\n \"category\": \"symbols\"\r\n },\r\n \"grey_exclamation\": {\r\n \"keywords\": [\"surprise\", \"punctuation\", \"gray\", \"wow\", \"warning\"],\r\n \"char\": \"❕\",\r\n \"category\": \"symbols\"\r\n },\r\n \"question\": {\r\n \"keywords\": [\"doubt\", \"confused\"],\r\n \"char\": \"❓\",\r\n \"category\": \"symbols\"\r\n },\r\n \"grey_question\": {\r\n \"keywords\": [\"doubts\", \"gray\", \"huh\", \"confused\"],\r\n \"char\": \"❔\",\r\n \"category\": \"symbols\"\r\n },\r\n \"bangbang\": {\r\n \"keywords\": [\"exclamation\", \"surprise\"],\r\n \"char\": \"‼️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"interrobang\": {\r\n \"keywords\": [\"wat\", \"punctuation\", \"surprise\"],\r\n \"char\": \"⁉️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"100\": {\r\n \"keywords\": [\"score\", \"perfect\", \"numbers\", \"century\", \"exam\", \"quiz\", \"test\", \"pass\", \"hundred\"],\r\n \"char\": \"💯\",\r\n \"category\": \"symbols\"\r\n },\r\n \"low_brightness\": {\r\n \"keywords\": [\"sun\", \"afternoon\", \"warm\", \"summer\"],\r\n \"char\": \"🔅\",\r\n \"category\": \"symbols\"\r\n },\r\n \"high_brightness\": {\r\n \"keywords\": [\"sun\", \"light\"],\r\n \"char\": \"🔆\",\r\n \"category\": \"symbols\"\r\n },\r\n \"trident\": {\r\n \"keywords\": [\"weapon\", \"spear\"],\r\n \"char\": \"🔱\",\r\n \"category\": \"symbols\"\r\n },\r\n \"fleur_de_lis\": {\r\n \"keywords\": [\"decorative\", \"scout\"],\r\n \"char\": \"⚜\",\r\n \"category\": \"symbols\"\r\n },\r\n \"part_alternation_mark\": {\r\n \"keywords\": [\"graph\", \"presentation\", \"stats\", \"business\", \"economics\", \"bad\"],\r\n \"char\": \"〽️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"warning\": {\r\n \"keywords\": [\"exclamation\", \"wip\", \"alert\", \"error\", \"problem\", \"issue\"],\r\n \"char\": \"⚠️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"children_crossing\": {\r\n \"keywords\": [\"school\", \"warning\", \"danger\", \"sign\", \"driving\", \"yellow-diamond\"],\r\n \"char\": \"🚸\",\r\n \"category\": \"symbols\"\r\n },\r\n \"beginner\": {\r\n \"keywords\": [\"badge\", \"shield\"],\r\n \"char\": \"🔰\",\r\n \"category\": \"symbols\"\r\n },\r\n \"recycle\": {\r\n \"keywords\": [\"arrow\", \"environment\", \"garbage\", \"trash\"],\r\n \"char\": \"♻️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"u6307\": {\r\n \"keywords\": [\"chinese\", \"point\", \"green-square\", \"kanji\"],\r\n \"char\": \"🈯\",\r\n \"category\": \"symbols\"\r\n },\r\n \"chart\": {\r\n \"keywords\": [\"green-square\", \"graph\", \"presentation\", \"stats\"],\r\n \"char\": \"💹\",\r\n \"category\": \"symbols\"\r\n },\r\n \"sparkle\": {\r\n \"keywords\": [\"stars\", \"green-square\", \"awesome\", \"good\", \"fireworks\"],\r\n \"char\": \"❇️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"eight_spoked_asterisk\": {\r\n \"keywords\": [\"star\", \"sparkle\", \"green-square\"],\r\n \"char\": \"✳️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"negative_squared_cross_mark\": {\r\n \"keywords\": [\"x\", \"green-square\", \"no\", \"deny\"],\r\n \"char\": \"❎\",\r\n \"category\": \"symbols\"\r\n },\r\n \"white_check_mark\": {\r\n \"keywords\": [\"green-square\", \"ok\", \"agree\", \"vote\", \"election\", \"answer\"],\r\n \"char\": \"✅\",\r\n \"category\": \"symbols\"\r\n },\r\n \"diamond_shape_with_a_dot_inside\": {\r\n \"keywords\": [\"jewel\", \"blue\", \"gem\", \"crystal\", \"fancy\"],\r\n \"char\": \"💠\",\r\n \"category\": \"symbols\"\r\n },\r\n \"cyclone\": {\r\n \"keywords\": [\"weather\", \"swirl\", \"blue\", \"cloud\", \"vortex\", \"spiral\", \"whirlpool\", \"spin\"],\r\n \"char\": \"🌀\",\r\n \"category\": \"symbols\"\r\n },\r\n \"loop\": {\r\n \"keywords\": [\"tape\", \"cassette\"],\r\n \"char\": \"➿\",\r\n \"category\": \"symbols\"\r\n },\r\n \"globe_with_meridians\": {\r\n \"keywords\": [\"earth\", \"international\", \"world\", \"internet\", \"interweb\", \"i18n\"],\r\n \"char\": \"🌐\",\r\n \"category\": \"symbols\"\r\n },\r\n \"m\": {\r\n \"keywords\": [\"alphabet\", \"blue-circle\", \"letter\"],\r\n \"char\": \"Ⓜ️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"atm\": {\r\n \"keywords\": [\"money\", \"sales\", \"cash\", \"blue-square\", \"payment\", \"bank\"],\r\n \"char\": \"🏧\",\r\n \"category\": \"symbols\"\r\n },\r\n \"sa\": {\r\n \"keywords\": [\"japanese\", \"blue-square\", \"katakana\"],\r\n \"char\": \"🈂️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"passport_control\": {\r\n \"keywords\": [\"custom\", \"blue-square\"],\r\n \"char\": \"🛂\",\r\n \"category\": \"symbols\"\r\n },\r\n \"customs\": {\r\n \"keywords\": [\"passport\", \"border\", \"blue-square\"],\r\n \"char\": \"🛃\",\r\n \"category\": \"symbols\"\r\n },\r\n \"baggage_claim\": {\r\n \"keywords\": [\"blue-square\", \"airport\", \"transport\"],\r\n \"char\": \"🛄\",\r\n \"category\": \"symbols\"\r\n },\r\n \"left_luggage\": {\r\n \"keywords\": [\"blue-square\", \"travel\"],\r\n \"char\": \"🛅\",\r\n \"category\": \"symbols\"\r\n },\r\n \"wheelchair\": {\r\n \"keywords\": [\"blue-square\", \"disabled\", \"a11y\", \"accessibility\"],\r\n \"char\": \"♿\",\r\n \"category\": \"symbols\"\r\n },\r\n \"no_smoking\": {\r\n \"keywords\": [\"cigarette\", \"blue-square\", \"smell\", \"smoke\"],\r\n \"char\": \"🚭\",\r\n \"category\": \"symbols\"\r\n },\r\n \"wc\": {\r\n \"keywords\": [\"toilet\", \"restroom\", \"blue-square\"],\r\n \"char\": \"🚾\",\r\n \"category\": \"symbols\"\r\n },\r\n \"parking\": {\r\n \"keywords\": [\"cars\", \"blue-square\", \"alphabet\", \"letter\"],\r\n \"char\": \"🅿️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"potable_water\": {\r\n \"keywords\": [\"blue-square\", \"liquid\", \"restroom\", \"cleaning\", \"faucet\"],\r\n \"char\": \"🚰\",\r\n \"category\": \"symbols\"\r\n },\r\n \"mens\": {\r\n \"keywords\": [\"toilet\", \"restroom\", \"wc\", \"blue-square\", \"gender\", \"male\"],\r\n \"char\": \"🚹\",\r\n \"category\": \"symbols\"\r\n },\r\n \"womens\": {\r\n \"keywords\": [\"purple-square\", \"woman\", \"female\", \"toilet\", \"loo\", \"restroom\", \"gender\"],\r\n \"char\": \"🚺\",\r\n \"category\": \"symbols\"\r\n },\r\n \"baby_symbol\": {\r\n \"keywords\": [\"orange-square\", \"child\"],\r\n \"char\": \"🚼\",\r\n \"category\": \"symbols\"\r\n },\r\n \"restroom\": {\r\n \"keywords\": [\"blue-square\", \"toilet\", \"refresh\", \"wc\", \"gender\"],\r\n \"char\": \"🚻\",\r\n \"category\": \"symbols\"\r\n },\r\n \"put_litter_in_its_place\": {\r\n \"keywords\": [\"blue-square\", \"sign\", \"human\", \"info\"],\r\n \"char\": \"🚮\",\r\n \"category\": \"symbols\"\r\n },\r\n \"cinema\": {\r\n \"keywords\": [\"blue-square\", \"record\", \"film\", \"movie\", \"curtain\", \"stage\", \"theater\"],\r\n \"char\": \"🎦\",\r\n \"category\": \"symbols\"\r\n },\r\n \"signal_strength\": {\r\n \"keywords\": [\"blue-square\", \"reception\", \"phone\", \"internet\", \"connection\", \"wifi\", \"bluetooth\", \"bars\"],\r\n \"char\": \"📶\",\r\n \"category\": \"symbols\"\r\n },\r\n \"koko\": {\r\n \"keywords\": [\"blue-square\", \"here\", \"katakana\", \"japanese\", \"destination\"],\r\n \"char\": \"🈁\",\r\n \"category\": \"symbols\"\r\n },\r\n \"ng\": {\r\n \"keywords\": [\"blue-square\", \"words\", \"shape\", \"icon\"],\r\n \"char\": \"🆖\",\r\n \"category\": \"symbols\"\r\n },\r\n \"ok\": {\r\n \"keywords\": [\"good\", \"agree\", \"yes\", \"blue-square\"],\r\n \"char\": \"🆗\",\r\n \"category\": \"symbols\"\r\n },\r\n \"up\": {\r\n \"keywords\": [\"blue-square\", \"above\", \"high\"],\r\n \"char\": \"🆙\",\r\n \"category\": \"symbols\"\r\n },\r\n \"cool\": {\r\n \"keywords\": [\"words\", \"blue-square\"],\r\n \"char\": \"🆒\",\r\n \"category\": \"symbols\"\r\n },\r\n \"new\": {\r\n \"keywords\": [\"blue-square\", \"words\", \"start\"],\r\n \"char\": \"🆕\",\r\n \"category\": \"symbols\"\r\n },\r\n \"free\": {\r\n \"keywords\": [\"blue-square\", \"words\"],\r\n \"char\": \"🆓\",\r\n \"category\": \"symbols\"\r\n },\r\n \"zero\": {\r\n \"keywords\": [\"0\", \"numbers\", \"blue-square\", \"null\"],\r\n \"char\": \"0️⃣\",\r\n \"category\": \"symbols\"\r\n },\r\n \"one\": {\r\n \"keywords\": [\"blue-square\", \"numbers\", \"1\"],\r\n \"char\": \"1️⃣\",\r\n \"category\": \"symbols\"\r\n },\r\n \"two\": {\r\n \"keywords\": [\"numbers\", \"2\", \"prime\", \"blue-square\"],\r\n \"char\": \"2️⃣\",\r\n \"category\": \"symbols\"\r\n },\r\n \"three\": {\r\n \"keywords\": [\"3\", \"numbers\", \"prime\", \"blue-square\"],\r\n \"char\": \"3️⃣\",\r\n \"category\": \"symbols\"\r\n },\r\n \"four\": {\r\n \"keywords\": [\"4\", \"numbers\", \"blue-square\"],\r\n \"char\": \"4️⃣\",\r\n \"category\": \"symbols\"\r\n },\r\n \"five\": {\r\n \"keywords\": [\"5\", \"numbers\", \"blue-square\", \"prime\"],\r\n \"char\": \"5️⃣\",\r\n \"category\": \"symbols\"\r\n },\r\n \"six\": {\r\n \"keywords\": [\"6\", \"numbers\", \"blue-square\"],\r\n \"char\": \"6️⃣\",\r\n \"category\": \"symbols\"\r\n },\r\n \"seven\": {\r\n \"keywords\": [\"7\", \"numbers\", \"blue-square\", \"prime\"],\r\n \"char\": \"7️⃣\",\r\n \"category\": \"symbols\"\r\n },\r\n \"eight\": {\r\n \"keywords\": [\"8\", \"blue-square\", \"numbers\"],\r\n \"char\": \"8️⃣\",\r\n \"category\": \"symbols\"\r\n },\r\n \"nine\": {\r\n \"keywords\": [\"blue-square\", \"numbers\", \"9\"],\r\n \"char\": \"9️⃣\",\r\n \"category\": \"symbols\"\r\n },\r\n \"keycap_ten\": {\r\n \"keywords\": [\"numbers\", \"10\", \"blue-square\"],\r\n \"char\": \"🔟\",\r\n \"category\": \"symbols\"\r\n },\r\n \"keycap_star\": {\r\n \"keywords\": [\"asterisk\"],\r\n \"char\": \"*⃣\",\r\n \"category\": \"symbols\"\r\n },\r\n \"1234\": {\r\n \"keywords\": [\"numbers\", \"blue-square\"],\r\n \"char\": \"🔢\",\r\n \"category\": \"symbols\"\r\n },\r\n \"arrow_forward\": {\r\n \"keywords\": [\"blue-square\", \"right\", \"direction\", \"play\"],\r\n \"char\": \"▶️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"double_vertical_bar\": {\r\n \"keywords\": [\"pause\", \"blue-square\"],\r\n \"char\": \"⏸\",\r\n \"category\": \"symbols\"\r\n },\r\n \"black_right_pointing_triangle_with_double_vertical_bar\": {\r\n \"keywords\": [\"forward\", \"next\", \"blue-square\"],\r\n \"char\": \"⏭\",\r\n \"category\": \"symbols\"\r\n },\r\n \"black_square_for_stop\": {\r\n \"keywords\": [\"blue-square\"],\r\n \"char\": \"⏹\",\r\n \"category\": \"symbols\"\r\n },\r\n \"black_circle_for_record\": {\r\n \"keywords\": [\"blue-square\"],\r\n \"char\": \"⏺\",\r\n \"category\": \"symbols\"\r\n },\r\n \"black_right_pointing_double_triangle_with_vertical_bar\": {\r\n \"keywords\": [\"blue-square\", \"play\", \"pause\"],\r\n \"char\": \"⏯\",\r\n \"category\": \"symbols\"\r\n },\r\n \"black_left_pointing_double_triangle_with_vertical_bar\": {\r\n \"keywords\": [\"backward\"],\r\n \"char\": \"⏮\",\r\n \"category\": \"symbols\"\r\n },\r\n \"fast_forward\": {\r\n \"keywords\": [\"blue-square\", \"play\", \"speed\", \"continue\"],\r\n \"char\": \"⏩\",\r\n \"category\": \"symbols\"\r\n },\r\n \"rewind\": {\r\n \"keywords\": [\"play\", \"blue-square\"],\r\n \"char\": \"⏪\",\r\n \"category\": \"symbols\"\r\n },\r\n \"twisted_rightwards_arrows\": {\r\n \"keywords\": [\"blue-square\", \"shuffle\", \"music\", \"random\"],\r\n \"char\": \"🔀\",\r\n \"category\": \"symbols\"\r\n },\r\n \"repeat\": {\r\n \"keywords\": [\"loop\", \"record\"],\r\n \"char\": \"🔁\",\r\n \"category\": \"symbols\"\r\n },\r\n \"repeat_one\": {\r\n \"keywords\": [\"blue-square\", \"loop\"],\r\n \"char\": \"🔂\",\r\n \"category\": \"symbols\"\r\n },\r\n \"arrow_backward\": {\r\n \"keywords\": [\"blue-square\", \"left\", \"direction\"],\r\n \"char\": \"◀️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"arrow_up_small\": {\r\n \"keywords\": [\"blue-square\", \"triangle\", \"direction\", \"point\", \"forward\", \"top\"],\r\n \"char\": \"🔼\",\r\n \"category\": \"symbols\"\r\n },\r\n \"arrow_down_small\": {\r\n \"keywords\": [\"blue-square\", \"direction\", \"bottom\"],\r\n \"char\": \"🔽\",\r\n \"category\": \"symbols\"\r\n },\r\n \"arrow_double_up\": {\r\n \"keywords\": [\"blue-square\", \"direction\", \"top\"],\r\n \"char\": \"⏫\",\r\n \"category\": \"symbols\"\r\n },\r\n \"arrow_double_down\": {\r\n \"keywords\": [\"blue-square\", \"direction\", \"bottom\"],\r\n \"char\": \"⏬\",\r\n \"category\": \"symbols\"\r\n },\r\n \"arrow_right\": {\r\n \"keywords\": [\"blue-square\", \"next\"],\r\n \"char\": \"➡️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"arrow_left\": {\r\n \"keywords\": [\"blue-square\", \"previous\", \"back\"],\r\n \"char\": \"⬅️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"arrow_up\": {\r\n \"keywords\": [\"blue-square\", \"continue\", \"top\", \"direction\"],\r\n \"char\": \"⬆️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"arrow_down\": {\r\n \"keywords\": [\"blue-square\", \"direction\", \"bottom\"],\r\n \"char\": \"⬇️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"arrow_upper_right\": {\r\n \"keywords\": [\"blue-square\", \"point\", \"direction\", \"diagonal\", \"northeast\"],\r\n \"char\": \"↗️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"arrow_lower_right\": {\r\n \"keywords\": [\"blue-square\", \"direction\", \"diagonal\", \"southeast\"],\r\n \"char\": \"↘️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"arrow_lower_left\": {\r\n \"keywords\": [\"blue-square\", \"direction\", \"diagonal\", \"southwest\"],\r\n \"char\": \"↙️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"arrow_upper_left\": {\r\n \"keywords\": [\"blue-square\", \"point\", \"direction\", \"diagonal\", \"northwest\"],\r\n \"char\": \"↖️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"arrow_up_down\": {\r\n \"keywords\": [\"blue-square\", \"direction\", \"way\", \"vertical\"],\r\n \"char\": \"↕️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"left_right_arrow\": {\r\n \"keywords\": [\"shape\", \"direction\", \"horizontal\", \"sideways\"],\r\n \"char\": \"↔️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"arrows_counterclockwise\": {\r\n \"keywords\": [\"blue-square\", \"sync\", \"cycle\"],\r\n \"char\": \"🔄\",\r\n \"category\": \"symbols\"\r\n },\r\n \"arrow_right_hook\": {\r\n \"keywords\": [\"blue-square\", \"return\", \"rotate\", \"direction\"],\r\n \"char\": \"↪️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"leftwards_arrow_with_hook\": {\r\n \"keywords\": [\"back\", \"return\", \"blue-square\", \"undo\", \"enter\"],\r\n \"char\": \"↩️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"arrow_heading_up\": {\r\n \"keywords\": [\"blue-square\", \"direction\", \"top\"],\r\n \"char\": \"⤴️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"arrow_heading_down\": {\r\n \"keywords\": [\"blue-square\", \"direction\", \"bottom\"],\r\n \"char\": \"⤵️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"hash\": {\r\n \"keywords\": [\"symbol\", \"blue-square\", \"twitter\"],\r\n \"char\": \"#️⃣\",\r\n \"category\": \"symbols\"\r\n },\r\n \"information_source\": {\r\n \"keywords\": [\"blue-square\", \"alphabet\", \"letter\"],\r\n \"char\": \"ℹ️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"abc\": {\r\n \"keywords\": [\"blue-square\", \"alphabet\"],\r\n \"char\": \"🔤\",\r\n \"category\": \"symbols\"\r\n },\r\n \"abcd\": {\r\n \"keywords\": [\"blue-square\", \"alphabet\"],\r\n \"char\": \"🔡\",\r\n \"category\": \"symbols\"\r\n },\r\n \"capital_abcd\": {\r\n \"keywords\": [\"alphabet\", \"words\", \"blue-square\"],\r\n \"char\": \"🔠\",\r\n \"category\": \"symbols\"\r\n },\r\n \"symbols\": {\r\n \"keywords\": [\"blue-square\", \"music\", \"note\", \"ampersand\", \"percent\", \"glyphs\", \"characters\"],\r\n \"char\": \"🔣\",\r\n \"category\": \"symbols\"\r\n },\r\n \"musical_note\": {\r\n \"keywords\": [\"score\", \"tone\", \"sound\"],\r\n \"char\": \"🎵\",\r\n \"category\": \"symbols\"\r\n },\r\n \"notes\": {\r\n \"keywords\": [\"music\", \"score\"],\r\n \"char\": \"🎶\",\r\n \"category\": \"symbols\"\r\n },\r\n \"wavy_dash\": {\r\n \"keywords\": [\"draw\", \"line\", \"moustache\", \"mustache\", \"squiggle\", \"scribble\"],\r\n \"char\": \"〰️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"curly_loop\": {\r\n \"keywords\": [\"scribble\", \"draw\", \"shape\", \"squiggle\"],\r\n \"char\": \"➰\",\r\n \"category\": \"symbols\"\r\n },\r\n \"heavy_check_mark\": {\r\n \"keywords\": [\"ok\", \"nike\", \"answer\", \"yes\", \"tick\"],\r\n \"char\": \"✔️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"arrows_clockwise\": {\r\n \"keywords\": [\"sync\", \"cycle\", \"round\", \"repeat\"],\r\n \"char\": \"🔃\",\r\n \"category\": \"symbols\"\r\n },\r\n \"heavy_plus_sign\": {\r\n \"keywords\": [\"math\", \"calculation\", \"addition\", \"more\", \"increase\"],\r\n \"char\": \"➕\",\r\n \"category\": \"symbols\"\r\n },\r\n \"heavy_minus_sign\": {\r\n \"keywords\": [\"math\", \"calculation\", \"subtract\", \"less\"],\r\n \"char\": \"➖\",\r\n \"category\": \"symbols\"\r\n },\r\n \"heavy_division_sign\": {\r\n \"keywords\": [\"divide\", \"math\", \"calculation\"],\r\n \"char\": \"➗\",\r\n \"category\": \"symbols\"\r\n },\r\n \"heavy_multiplication_x\": {\r\n \"keywords\": [\"math\", \"calculation\"],\r\n \"char\": \"✖️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"heavy_dollar_sign\": {\r\n \"keywords\": [\"money\", \"sales\", \"payment\", \"currency\", \"buck\"],\r\n \"char\": \"💲\",\r\n \"category\": \"symbols\"\r\n },\r\n \"currency_exchange\": {\r\n \"keywords\": [\"money\", \"sales\", \"dollar\", \"travel\"],\r\n \"char\": \"💱\",\r\n \"category\": \"symbols\"\r\n },\r\n \"copyright\": {\r\n \"keywords\": [\"ip\", \"license\", \"circle\", \"law\", \"legal\"],\r\n \"char\": \"©️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"registered\": {\r\n \"keywords\": [\"alphabet\", \"circle\"],\r\n \"char\": \"®️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"tm\": {\r\n \"keywords\": [\"trademark\", \"brand\", \"law\", \"legal\"],\r\n \"char\": \"™️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"end\": {\r\n \"keywords\": [\"words\", \"arrow\"],\r\n \"char\": \"🔚\",\r\n \"category\": \"symbols\"\r\n },\r\n \"back\": {\r\n \"keywords\": [\"arrow\", \"words\", \"return\"],\r\n \"char\": \"🔙\",\r\n \"category\": \"symbols\"\r\n },\r\n \"on\": {\r\n \"keywords\": [\"arrow\", \"words\"],\r\n \"char\": \"🔛\",\r\n \"category\": \"symbols\"\r\n },\r\n \"top\": {\r\n \"keywords\": [\"words\", \"blue-square\"],\r\n \"char\": \"🔝\",\r\n \"category\": \"symbols\"\r\n },\r\n \"soon\": {\r\n \"keywords\": [\"arrow\", \"words\"],\r\n \"char\": \"🔜\",\r\n \"category\": \"symbols\"\r\n },\r\n \"ballot_box_with_check\": {\r\n \"keywords\": [\"ok\", \"agree\", \"confirm\", \"black-square\", \"vote\", \"election\", \"yes\"],\r\n \"char\": \"☑️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"radio_button\": {\r\n \"keywords\": [\"input\", \"old\", \"music\", \"circle\"],\r\n \"char\": \"🔘\",\r\n \"category\": \"symbols\"\r\n },\r\n \"white_circle\": {\r\n \"keywords\": [\"shape\", \"round\"],\r\n \"char\": \"⚪\",\r\n \"category\": \"symbols\"\r\n },\r\n \"black_circle\": {\r\n \"keywords\": [\"shape\", \"button\", \"round\"],\r\n \"char\": \"⚫\",\r\n \"category\": \"symbols\"\r\n },\r\n \"red_circle\": {\r\n \"keywords\": [\"shape\", \"error\", \"danger\"],\r\n \"char\": \"🔴\",\r\n \"category\": \"symbols\"\r\n },\r\n \"large_blue_circle\": {\r\n \"keywords\": [\"shape\", \"icon\", \"button\"],\r\n \"char\": \"🔵\",\r\n \"category\": \"symbols\"\r\n },\r\n \"small_orange_diamond\": {\r\n \"keywords\": [\"shape\", \"jewel\", \"gem\"],\r\n \"char\": \"🔸\",\r\n \"category\": \"symbols\"\r\n },\r\n \"small_blue_diamond\": {\r\n \"keywords\": [\"shape\", \"jewel\", \"gem\"],\r\n \"char\": \"🔹\",\r\n \"category\": \"symbols\"\r\n },\r\n \"large_orange_diamond\": {\r\n \"keywords\": [\"shape\", \"jewel\", \"gem\"],\r\n \"char\": \"🔶\",\r\n \"category\": \"symbols\"\r\n },\r\n \"large_blue_diamond\": {\r\n \"keywords\": [\"shape\", \"jewel\", \"gem\"],\r\n \"char\": \"🔷\",\r\n \"category\": \"symbols\"\r\n },\r\n \"small_red_triangle\": {\r\n \"keywords\": [\"shape\", \"direction\", \"up\", \"top\"],\r\n \"char\": \"🔺\",\r\n \"category\": \"symbols\"\r\n },\r\n \"black_small_square\": {\r\n \"keywords\": [\"shape\", \"icon\"],\r\n \"char\": \"▪️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"white_small_square\": {\r\n \"keywords\": [\"shape\", \"icon\"],\r\n \"char\": \"▫️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"black_large_square\": {\r\n \"keywords\": [\"shape\", \"icon\", \"button\"],\r\n \"char\": \"⬛\",\r\n \"category\": \"symbols\"\r\n },\r\n \"white_large_square\": {\r\n \"keywords\": [\"shape\", \"icon\", \"stone\", \"button\"],\r\n \"char\": \"⬜\",\r\n \"category\": \"symbols\"\r\n },\r\n \"small_red_triangle_down\": {\r\n \"keywords\": [\"shape\", \"direction\", \"bottom\"],\r\n \"char\": \"🔻\",\r\n \"category\": \"symbols\"\r\n },\r\n \"black_medium_square\": {\r\n \"keywords\": [\"shape\", \"button\", \"icon\"],\r\n \"char\": \"◼️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"white_medium_square\": {\r\n \"keywords\": [\"shape\", \"stone\", \"icon\"],\r\n \"char\": \"◻️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"black_medium_small_square\": {\r\n \"keywords\": [\"icon\", \"shape\", \"button\"],\r\n \"char\": \"◾\",\r\n \"category\": \"symbols\"\r\n },\r\n \"white_medium_small_square\": {\r\n \"keywords\": [\"shape\", \"stone\", \"icon\", \"button\"],\r\n \"char\": \"◽\",\r\n \"category\": \"symbols\"\r\n },\r\n \"black_square_button\": {\r\n \"keywords\": [\"shape\", \"input\", \"frame\"],\r\n \"char\": \"🔲\",\r\n \"category\": \"symbols\"\r\n },\r\n \"white_square_button\": {\r\n \"keywords\": [\"shape\", \"input\"],\r\n \"char\": \"🔳\",\r\n \"category\": \"symbols\"\r\n },\r\n \"speaker\": {\r\n \"keywords\": [\"sound\", \"volume\", \"silence\", \"broadcast\"],\r\n \"char\": \"🔈\",\r\n \"category\": \"symbols\"\r\n },\r\n \"sound\": {\r\n \"keywords\": [\"volume\", \"speaker\", \"broadcast\"],\r\n \"char\": \"🔉\",\r\n \"category\": \"symbols\"\r\n },\r\n \"loud_sound\": {\r\n \"keywords\": [\"volume\", \"noise\", \"noisy\", \"speaker\", \"broadcast\"],\r\n \"char\": \"🔊\",\r\n \"category\": \"symbols\"\r\n },\r\n \"mute\": {\r\n \"keywords\": [\"sound\", \"volume\", \"silence\", \"quiet\"],\r\n \"char\": \"🔇\",\r\n \"category\": \"symbols\"\r\n },\r\n \"mega\": {\r\n \"keywords\": [\"sound\", \"speaker\", \"volume\"],\r\n \"char\": \"📣\",\r\n \"category\": \"symbols\"\r\n },\r\n \"loudspeaker\": {\r\n \"keywords\": [\"volume\", \"sound\"],\r\n \"char\": \"📢\",\r\n \"category\": \"symbols\"\r\n },\r\n \"bell\": {\r\n \"keywords\": [\"sound\", \"notification\", \"christmas\", \"xmas\", \"chime\"],\r\n \"char\": \"🔔\",\r\n \"category\": \"symbols\"\r\n },\r\n \"no_bell\": {\r\n \"keywords\": [\"sound\", \"volume\", \"mute\", \"quiet\", \"silent\"],\r\n \"char\": \"🔕\",\r\n \"category\": \"symbols\"\r\n },\r\n \"black_joker\": {\r\n \"keywords\": [\"poker\", \"cards\", \"game\", \"play\", \"magic\"],\r\n \"char\": \"🃏\",\r\n \"category\": \"symbols\"\r\n },\r\n \"mahjong\": {\r\n \"keywords\": [\"game\", \"play\", \"chinese\", \"kanji\"],\r\n \"char\": \"🀄\",\r\n \"category\": \"symbols\"\r\n },\r\n \"spades\": {\r\n \"keywords\": [\"poker\", \"cards\", \"suits\", \"magic\"],\r\n \"char\": \"♠️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"clubs\": {\r\n \"keywords\": [\"poker\", \"cards\", \"magic\", \"suits\"],\r\n \"char\": \"♣️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"hearts\": {\r\n \"keywords\": [\"poker\", \"cards\", \"magic\", \"suits\"],\r\n \"char\": \"♥️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"diamonds\": {\r\n \"keywords\": [\"poker\", \"cards\", \"magic\", \"suits\"],\r\n \"char\": \"♦️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"flower_playing_cards\": {\r\n \"keywords\": [\"game\", \"sunset\", \"red\"],\r\n \"char\": \"🎴\",\r\n \"category\": \"symbols\"\r\n },\r\n \"thought_balloon\": {\r\n \"keywords\": [\"bubble\", \"cloud\", \"speech\", \"thinking\"],\r\n \"char\": \"💭\",\r\n \"category\": \"symbols\"\r\n },\r\n \"right_anger_bubble\": {\r\n \"keywords\": [\"caption\", \"speech\", \"thinking\", \"mad\"],\r\n \"char\": \"🗯\",\r\n \"category\": \"symbols\"\r\n },\r\n \"speech_balloon\": {\r\n \"keywords\": [\"bubble\", \"words\", \"message\", \"talk\", \"chatting\"],\r\n \"char\": \"💬\",\r\n \"category\": \"symbols\"\r\n },\r\n \"left_speech_bubble\": {\r\n \"keywords\": [\"words\", \"message\", \"talk\", \"chatting\"],\r\n \"char\": \"🗨\",\r\n \"category\": \"symbols\"\r\n },\r\n \"clock1\": {\r\n \"keywords\": [\"time\", \"late\", \"early\", \"schedule\"],\r\n \"char\": \"🕐\",\r\n \"category\": \"symbols\"\r\n },\r\n \"clock2\": {\r\n \"keywords\": [\"time\", \"late\", \"early\", \"schedule\"],\r\n \"char\": \"🕑\",\r\n \"category\": \"symbols\"\r\n },\r\n \"clock3\": {\r\n \"keywords\": [\"time\", \"late\", \"early\", \"schedule\"],\r\n \"char\": \"🕒\",\r\n \"category\": \"symbols\"\r\n },\r\n \"clock4\": {\r\n \"keywords\": [\"time\", \"late\", \"early\", \"schedule\"],\r\n \"char\": \"🕓\",\r\n \"category\": \"symbols\"\r\n },\r\n \"clock5\": {\r\n \"keywords\": [\"time\", \"late\", \"early\", \"schedule\"],\r\n \"char\": \"🕔\",\r\n \"category\": \"symbols\"\r\n },\r\n \"clock6\": {\r\n \"keywords\": [\"time\", \"late\", \"early\", \"schedule\", \"dawn\", \"dusk\"],\r\n \"char\": \"🕕\",\r\n \"category\": \"symbols\"\r\n },\r\n \"clock7\": {\r\n \"keywords\": [\"time\", \"late\", \"early\", \"schedule\"],\r\n \"char\": \"🕖\",\r\n \"category\": \"symbols\"\r\n },\r\n \"clock8\": {\r\n \"keywords\": [\"time\", \"late\", \"early\", \"schedule\"],\r\n \"char\": \"🕗\",\r\n \"category\": \"symbols\"\r\n },\r\n \"clock9\": {\r\n \"keywords\": [\"time\", \"late\", \"early\", \"schedule\"],\r\n \"char\": \"🕘\",\r\n \"category\": \"symbols\"\r\n },\r\n \"clock10\": {\r\n \"keywords\": [\"time\", \"late\", \"early\", \"schedule\"],\r\n \"char\": \"🕙\",\r\n \"category\": \"symbols\"\r\n },\r\n \"clock11\": {\r\n \"keywords\": [\"time\", \"late\", \"early\", \"schedule\"],\r\n \"char\": \"🕚\",\r\n \"category\": \"symbols\"\r\n },\r\n \"clock12\": {\r\n \"keywords\": [\"time\", \"noon\", \"midnight\", \"midday\", \"late\", \"early\", \"schedule\"],\r\n \"char\": \"🕛\",\r\n \"category\": \"symbols\"\r\n },\r\n \"clock130\": {\r\n \"keywords\": [\"time\", \"late\", \"early\", \"schedule\"],\r\n \"char\": \"🕜\",\r\n \"category\": \"symbols\"\r\n },\r\n \"clock230\": {\r\n \"keywords\": [\"time\", \"late\", \"early\", \"schedule\"],\r\n \"char\": \"🕝\",\r\n \"category\": \"symbols\"\r\n },\r\n \"clock330\": {\r\n \"keywords\": [\"time\", \"late\", \"early\", \"schedule\"],\r\n \"char\": \"🕞\",\r\n \"category\": \"symbols\"\r\n },\r\n \"clock430\": {\r\n \"keywords\": [\"time\", \"late\", \"early\", \"schedule\"],\r\n \"char\": \"🕟\",\r\n \"category\": \"symbols\"\r\n },\r\n \"clock530\": {\r\n \"keywords\": [\"time\", \"late\", \"early\", \"schedule\"],\r\n \"char\": \"🕠\",\r\n \"category\": \"symbols\"\r\n },\r\n \"clock630\": {\r\n \"keywords\": [\"time\", \"late\", \"early\", \"schedule\"],\r\n \"char\": \"🕡\",\r\n \"category\": \"symbols\"\r\n },\r\n \"clock730\": {\r\n \"keywords\": [\"time\", \"late\", \"early\", \"schedule\"],\r\n \"char\": \"🕢\",\r\n \"category\": \"symbols\"\r\n },\r\n \"clock830\": {\r\n \"keywords\": [\"time\", \"late\", \"early\", \"schedule\"],\r\n \"char\": \"🕣\",\r\n \"category\": \"symbols\"\r\n },\r\n \"clock930\": {\r\n \"keywords\": [\"time\", \"late\", \"early\", \"schedule\"],\r\n \"char\": \"🕤\",\r\n \"category\": \"symbols\"\r\n },\r\n \"clock1030\": {\r\n \"keywords\": [\"time\", \"late\", \"early\", \"schedule\"],\r\n \"char\": \"🕥\",\r\n \"category\": \"symbols\"\r\n },\r\n \"clock1130\": {\r\n \"keywords\": [\"time\", \"late\", \"early\", \"schedule\"],\r\n \"char\": \"🕦\",\r\n \"category\": \"symbols\"\r\n },\r\n \"clock1230\": {\r\n \"keywords\": [\"time\", \"late\", \"early\", \"schedule\"],\r\n \"char\": \"🕧\",\r\n \"category\": \"symbols\"\r\n },\r\n \"af\": {\r\n \"keywords\": [\"afghanistan\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇦🇫\",\r\n \"category\": \"flags\"\r\n },\r\n \"ax\": {\r\n \"keywords\": [\"Åland\", \"islands\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇦🇽\",\r\n \"category\": \"flags\"\r\n },\r\n \"al\": {\r\n \"keywords\": [\"albania\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇦🇱\",\r\n \"category\": \"flags\"\r\n },\r\n \"dz\": {\r\n \"keywords\": [\"algeria\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇩🇿\",\r\n \"category\": \"flags\"\r\n },\r\n \"as\": {\r\n \"keywords\": [\"american\", \"samoa\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇦🇸\",\r\n \"category\": \"flags\"\r\n },\r\n \"ad\": {\r\n \"keywords\": [\"andorra\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇦🇩\",\r\n \"category\": \"flags\"\r\n },\r\n \"ao\": {\r\n \"keywords\": [\"angola\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇦🇴\",\r\n \"category\": \"flags\"\r\n },\r\n \"ai\": {\r\n \"keywords\": [\"anguilla\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇦🇮\",\r\n \"category\": \"flags\"\r\n },\r\n \"aq\": {\r\n \"keywords\": [\"antarctica\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇦🇶\",\r\n \"category\": \"flags\"\r\n },\r\n \"ag\": {\r\n \"keywords\": [\"antigua\", \"barbuda\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇦🇬\",\r\n \"category\": \"flags\"\r\n },\r\n \"ar\": {\r\n \"keywords\": [\"argentina\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇦🇷\",\r\n \"category\": \"flags\"\r\n },\r\n \"am\": {\r\n \"keywords\": [\"armenia\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇦🇲\",\r\n \"category\": \"flags\"\r\n },\r\n \"aw\": {\r\n \"keywords\": [\"aruba\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇦🇼\",\r\n \"category\": \"flags\"\r\n },\r\n \"au\": {\r\n \"keywords\": [\"australia\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇦🇺\",\r\n \"category\": \"flags\"\r\n },\r\n \"at\": {\r\n \"keywords\": [\"austria\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇦🇹\",\r\n \"category\": \"flags\"\r\n },\r\n \"az\": {\r\n \"keywords\": [\"azerbaijan\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇦🇿\",\r\n \"category\": \"flags\"\r\n },\r\n \"bs\": {\r\n \"keywords\": [\"bahamas\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇧🇸\",\r\n \"category\": \"flags\"\r\n },\r\n \"bh\": {\r\n \"keywords\": [\"bahrain\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇧🇭\",\r\n \"category\": \"flags\"\r\n },\r\n \"bd\": {\r\n \"keywords\": [\"bangladesh\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇧🇩\",\r\n \"category\": \"flags\"\r\n },\r\n \"bb\": {\r\n \"keywords\": [\"barbados\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇧🇧\",\r\n \"category\": \"flags\"\r\n },\r\n \"by\": {\r\n \"keywords\": [\"belarus\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇧🇾\",\r\n \"category\": \"flags\"\r\n },\r\n \"be\": {\r\n \"keywords\": [\"belgium\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇧🇪\",\r\n \"category\": \"flags\"\r\n },\r\n \"bz\": {\r\n \"keywords\": [\"belize\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇧🇿\",\r\n \"category\": \"flags\"\r\n },\r\n \"bj\": {\r\n \"keywords\": [\"benin\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇧🇯\",\r\n \"category\": \"flags\"\r\n },\r\n \"bm\": {\r\n \"keywords\": [\"bermuda\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇧🇲\",\r\n \"category\": \"flags\"\r\n },\r\n \"bt\": {\r\n \"keywords\": [\"bhutan\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇧🇹\",\r\n \"category\": \"flags\"\r\n },\r\n \"bo\": {\r\n \"keywords\": [\"bolivia\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇧🇴\",\r\n \"category\": \"flags\"\r\n },\r\n \"bq\": {\r\n \"keywords\": [\"bonaire\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇧🇶\",\r\n \"category\": \"flags\"\r\n },\r\n \"ba\": {\r\n \"keywords\": [\"bosnia\", \"herzegovina\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇧🇦\",\r\n \"category\": \"flags\"\r\n },\r\n \"bw\": {\r\n \"keywords\": [\"botswana\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇧🇼\",\r\n \"category\": \"flags\"\r\n },\r\n \"br\": {\r\n \"keywords\": [\"brazil\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇧🇷\",\r\n \"category\": \"flags\"\r\n },\r\n \"io\": {\r\n \"keywords\": [\"british\", \"indian\", \"ocean\", \"territory\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇮🇴\",\r\n \"category\": \"flags\"\r\n },\r\n \"vg\": {\r\n \"keywords\": [\"british\", \"virgin\", \"islands\", \"bvi\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇻🇬\",\r\n \"category\": \"flags\"\r\n },\r\n \"bn\": {\r\n \"keywords\": [\"brunei\", \"darussalam\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇧🇳\",\r\n \"category\": \"flags\"\r\n },\r\n \"bg\": {\r\n \"keywords\": [\"bulgaria\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇧🇬\",\r\n \"category\": \"flags\"\r\n },\r\n \"bf\": {\r\n \"keywords\": [\"burkina\", \"faso\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇧🇫\",\r\n \"category\": \"flags\"\r\n },\r\n \"bi\": {\r\n \"keywords\": [\"burundi\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇧🇮\",\r\n \"category\": \"flags\"\r\n },\r\n \"cv\": {\r\n \"keywords\": [\"cabo\", \"verde\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇨🇻\",\r\n \"category\": \"flags\"\r\n },\r\n \"kh\": {\r\n \"keywords\": [\"cambodia\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇰🇭\",\r\n \"category\": \"flags\"\r\n },\r\n \"cm\": {\r\n \"keywords\": [\"cameroon\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇨🇲\",\r\n \"category\": \"flags\"\r\n },\r\n \"ca\": {\r\n \"keywords\": [\"canada\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇨🇦\",\r\n \"category\": \"flags\"\r\n },\r\n \"ic\": {\r\n \"keywords\": [\"canary\", \"islands\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇮🇨\",\r\n \"category\": \"flags\"\r\n },\r\n \"ky\": {\r\n \"keywords\": [\"cayman\", \"islands\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇰🇾\",\r\n \"category\": \"flags\"\r\n },\r\n \"cf\": {\r\n \"keywords\": [\"central\", \"african\", \"republic\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇨🇫\",\r\n \"category\": \"flags\"\r\n },\r\n \"td\": {\r\n \"keywords\": [\"chad\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇹🇩\",\r\n \"category\": \"flags\"\r\n },\r\n \"chile\": {\r\n \"keywords\": [\"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇨🇱\",\r\n \"category\": \"flags\"\r\n },\r\n \"cn\": {\r\n \"keywords\": [\"china\", \"chinese\", \"prc\", \"flag\", \"country\", \"nation\", \"banner\"],\r\n \"char\": \"🇨🇳\",\r\n \"category\": \"flags\"\r\n },\r\n \"cx\": {\r\n \"keywords\": [\"christmas\", \"island\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇨🇽\",\r\n \"category\": \"flags\"\r\n },\r\n \"cc\": {\r\n \"keywords\": [\"cocos\", \"keeling\", \"islands\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇨🇨\",\r\n \"category\": \"flags\"\r\n },\r\n \"co\": {\r\n \"keywords\": [\"colombia\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇨🇴\",\r\n \"category\": \"flags\"\r\n },\r\n \"km\": {\r\n \"keywords\": [\"comoros\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇰🇲\",\r\n \"category\": \"flags\"\r\n },\r\n \"cg\": {\r\n \"keywords\": [\"congo\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇨🇬\",\r\n \"category\": \"flags\"\r\n },\r\n \"drc\": {\r\n \"keywords\": [\"congo\", \"democratic\", \"republic\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇨🇩\",\r\n \"category\": \"flags\"\r\n },\r\n \"ck\": {\r\n \"keywords\": [\"cook\", \"islands\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇨🇰\",\r\n \"category\": \"flags\"\r\n },\r\n \"cr\": {\r\n \"keywords\": [\"costa\", \"rica\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇨🇷\",\r\n \"category\": \"flags\"\r\n },\r\n \"hr\": {\r\n \"keywords\": [\"croatia\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇭🇷\",\r\n \"category\": \"flags\"\r\n },\r\n \"cu\": {\r\n \"keywords\": [\"cuba\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇨🇺\",\r\n \"category\": \"flags\"\r\n },\r\n \"cw\": {\r\n \"keywords\": [\"curaçao\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇨🇼\",\r\n \"category\": \"flags\"\r\n },\r\n \"cy\": {\r\n \"keywords\": [\"cyprus\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇨🇾\",\r\n \"category\": \"flags\"\r\n },\r\n \"cz\": {\r\n \"keywords\": [\"czech_republic\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇨🇿\",\r\n \"category\": \"flags\"\r\n },\r\n \"dk\": {\r\n \"keywords\": [\"denmark\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇩🇰\",\r\n \"category\": \"flags\"\r\n },\r\n \"dj\": {\r\n \"keywords\": [\"djibouti\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇩🇯\",\r\n \"category\": \"flags\"\r\n },\r\n \"dm\": {\r\n \"keywords\": [\"dominica\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇩🇲\",\r\n \"category\": \"flags\"\r\n },\r\n \"do\": {\r\n \"keywords\": [\"dominican\", \"republic\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇩🇴\",\r\n \"category\": \"flags\"\r\n },\r\n \"ec\": {\r\n \"keywords\": [\"ecuador\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇪🇨\",\r\n \"category\": \"flags\"\r\n },\r\n \"eg\": {\r\n \"keywords\": [\"egypt\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇪🇬\",\r\n \"category\": \"flags\"\r\n },\r\n \"sv\": {\r\n \"keywords\": [\"el\", \"salvador\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇸🇻\",\r\n \"category\": \"flags\"\r\n },\r\n \"gq\": {\r\n \"keywords\": [\"equatorial\", \"guinea\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇬🇶\",\r\n \"category\": \"flags\"\r\n },\r\n \"er\": {\r\n \"keywords\": [\"eritrea\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇪🇷\",\r\n \"category\": \"flags\"\r\n },\r\n \"ee\": {\r\n \"keywords\": [\"estonia\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇪🇪\",\r\n \"category\": \"flags\"\r\n },\r\n \"et\": {\r\n \"keywords\": [\"ethiopia\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇪🇹\",\r\n \"category\": \"flags\"\r\n },\r\n \"eu\": {\r\n \"keywords\": [\"european\", \"union\", \"flag\", \"banner\"],\r\n \"char\": \"🇪🇺\",\r\n \"category\": \"flags\"\r\n },\r\n \"fk\": {\r\n \"keywords\": [\"falkland\", \"islands\", \"malvinas\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇫🇰\",\r\n \"category\": \"flags\"\r\n },\r\n \"fo\": {\r\n \"keywords\": [\"faroe\", \"islands\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇫🇴\",\r\n \"category\": \"flags\"\r\n },\r\n \"fj\": {\r\n \"keywords\": [\"fiji\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇫🇯\",\r\n \"category\": \"flags\"\r\n },\r\n \"fi\": {\r\n \"keywords\": [\"finland\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇫🇮\",\r\n \"category\": \"flags\"\r\n },\r\n \"fr\": {\r\n \"keywords\": [\"banner\", \"flag\", \"nation\", \"france\", \"french\", \"country\"],\r\n \"char\": \"🇫🇷\",\r\n \"category\": \"flags\"\r\n },\r\n \"gf\": {\r\n \"keywords\": [\"french\", \"guiana\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇬🇫\",\r\n \"category\": \"flags\"\r\n },\r\n \"pf\": {\r\n \"keywords\": [\"french\", \"polynesia\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇵🇫\",\r\n \"category\": \"flags\"\r\n },\r\n \"tf\": {\r\n \"keywords\": [\"french\", \"southern\", \"territories\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇹🇫\",\r\n \"category\": \"flags\"\r\n },\r\n \"ga\": {\r\n \"keywords\": [\"gabon\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇬🇦\",\r\n \"category\": \"flags\"\r\n },\r\n \"gm\": {\r\n \"keywords\": [\"gambia\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇬🇲\",\r\n \"category\": \"flags\"\r\n },\r\n \"ge\": {\r\n \"keywords\": [\"georgia\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇬🇪\",\r\n \"category\": \"flags\"\r\n },\r\n \"de\": {\r\n \"keywords\": [\"german\", \"nation\", \"flag\", \"country\", \"banner\"],\r\n \"char\": \"🇩🇪\",\r\n \"category\": \"flags\"\r\n },\r\n \"gh\": {\r\n \"keywords\": [\"ghana\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇬🇭\",\r\n \"category\": \"flags\"\r\n },\r\n \"gi\": {\r\n \"keywords\": [\"gibraltar\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇬🇮\",\r\n \"category\": \"flags\"\r\n },\r\n \"gr\": {\r\n \"keywords\": [\"greece\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇬🇷\",\r\n \"category\": \"flags\"\r\n },\r\n \"gl\": {\r\n \"keywords\": [\"greenland\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇬🇱\",\r\n \"category\": \"flags\"\r\n },\r\n \"gd\": {\r\n \"keywords\": [\"grenada\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇬🇩\",\r\n \"category\": \"flags\"\r\n },\r\n \"gp\": {\r\n \"keywords\": [\"guadeloupe\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇬🇵\",\r\n \"category\": \"flags\"\r\n },\r\n \"gu\": {\r\n \"keywords\": [\"guam\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇬🇺\",\r\n \"category\": \"flags\"\r\n },\r\n \"gt\": {\r\n \"keywords\": [\"guatemala\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇬🇹\",\r\n \"category\": \"flags\"\r\n },\r\n \"gg\": {\r\n \"keywords\": [\"guernsey\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇬🇬\",\r\n \"category\": \"flags\"\r\n },\r\n \"gn\": {\r\n \"keywords\": [\"guinea\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇬🇳\",\r\n \"category\": \"flags\"\r\n },\r\n \"gw\": {\r\n \"keywords\": [\"guinea\", \"bissau\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇬🇼\",\r\n \"category\": \"flags\"\r\n },\r\n \"gy\": {\r\n \"keywords\": [\"guyana\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇬🇾\",\r\n \"category\": \"flags\"\r\n },\r\n \"ht\": {\r\n \"keywords\": [\"haiti\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇭🇹\",\r\n \"category\": \"flags\"\r\n },\r\n \"hn\": {\r\n \"keywords\": [\"honduras\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇭🇳\",\r\n \"category\": \"flags\"\r\n },\r\n \"hk\": {\r\n \"keywords\": [\"hong\", \"kong\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇭🇰\",\r\n \"category\": \"flags\"\r\n },\r\n \"hu\": {\r\n \"keywords\": [\"hungary\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇭🇺\",\r\n \"category\": \"flags\"\r\n },\r\n \"is\": {\r\n \"keywords\": [\"iceland\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇮🇸\",\r\n \"category\": \"flags\"\r\n },\r\n \"in\": {\r\n \"keywords\": [\"india\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇮🇳\",\r\n \"category\": \"flags\"\r\n },\r\n \"indonesia\": {\r\n \"keywords\": [\"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇮🇩\",\r\n \"category\": \"flags\"\r\n },\r\n \"ir\": {\r\n \"keywords\": [\"iran,\", \"islamic\", \"republic\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇮🇷\",\r\n \"category\": \"flags\"\r\n },\r\n \"iq\": {\r\n \"keywords\": [\"iraq\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇮🇶\",\r\n \"category\": \"flags\"\r\n },\r\n \"ie\": {\r\n \"keywords\": [\"ireland\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇮🇪\",\r\n \"category\": \"flags\"\r\n },\r\n \"im\": {\r\n \"keywords\": [\"isle\", \"man\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇮🇲\",\r\n \"category\": \"flags\"\r\n },\r\n \"il\": {\r\n \"keywords\": [\"israel\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇮🇱\",\r\n \"category\": \"flags\"\r\n },\r\n \"it\": {\r\n \"keywords\": [\"italy\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇮🇹\",\r\n \"category\": \"flags\"\r\n },\r\n \"ci\": {\r\n \"keywords\": [\"ivory\", \"coast\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇨🇮\",\r\n \"category\": \"flags\"\r\n },\r\n \"jm\": {\r\n \"keywords\": [\"jamaica\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇯🇲\",\r\n \"category\": \"flags\"\r\n },\r\n \"jp\": {\r\n \"keywords\": [\"japanese\", \"nation\", \"flag\", \"country\", \"banner\"],\r\n \"char\": \"🇯🇵\",\r\n \"category\": \"flags\"\r\n },\r\n \"je\": {\r\n \"keywords\": [\"jersey\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇯🇪\",\r\n \"category\": \"flags\"\r\n },\r\n \"jo\": {\r\n \"keywords\": [\"jordan\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇯🇴\",\r\n \"category\": \"flags\"\r\n },\r\n \"kz\": {\r\n \"keywords\": [\"kazakhstan\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇰🇿\",\r\n \"category\": \"flags\"\r\n },\r\n \"ke\": {\r\n \"keywords\": [\"kenya\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇰🇪\",\r\n \"category\": \"flags\"\r\n },\r\n \"ki\": {\r\n \"keywords\": [\"kiribati\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇰🇮\",\r\n \"category\": \"flags\"\r\n },\r\n \"xk\": {\r\n \"keywords\": [\"kosovo\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇽🇰\",\r\n \"category\": \"flags\"\r\n },\r\n \"kw\": {\r\n \"keywords\": [\"kuwait\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇰🇼\",\r\n \"category\": \"flags\"\r\n },\r\n \"kg\": {\r\n \"keywords\": [\"kyrgyzstan\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇰🇬\",\r\n \"category\": \"flags\"\r\n },\r\n \"la\": {\r\n \"keywords\": [\"lao\", \"democratic\", \"republic\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇱🇦\",\r\n \"category\": \"flags\"\r\n },\r\n \"lv\": {\r\n \"keywords\": [\"latvia\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇱🇻\",\r\n \"category\": \"flags\"\r\n },\r\n \"lb\": {\r\n \"keywords\": [\"lebanon\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇱🇧\",\r\n \"category\": \"flags\"\r\n },\r\n \"ls\": {\r\n \"keywords\": [\"lesotho\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇱🇸\",\r\n \"category\": \"flags\"\r\n },\r\n \"lr\": {\r\n \"keywords\": [\"liberia\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇱🇷\",\r\n \"category\": \"flags\"\r\n },\r\n \"ly\": {\r\n \"keywords\": [\"libya\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇱🇾\",\r\n \"category\": \"flags\"\r\n },\r\n \"li\": {\r\n \"keywords\": [\"liechtenstein\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇱🇮\",\r\n \"category\": \"flags\"\r\n },\r\n \"lt\": {\r\n \"keywords\": [\"lithuania\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇱🇹\",\r\n \"category\": \"flags\"\r\n },\r\n \"lu\": {\r\n \"keywords\": [\"luxembourg\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇱🇺\",\r\n \"category\": \"flags\"\r\n },\r\n \"mo\": {\r\n \"keywords\": [\"macao\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇲🇴\",\r\n \"category\": \"flags\"\r\n },\r\n \"mk\": {\r\n \"keywords\": [\"macedonia,\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇲🇰\",\r\n \"category\": \"flags\"\r\n },\r\n \"mg\": {\r\n \"keywords\": [\"madagascar\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇲🇬\",\r\n \"category\": \"flags\"\r\n },\r\n \"mw\": {\r\n \"keywords\": [\"malawi\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇲🇼\",\r\n \"category\": \"flags\"\r\n },\r\n \"my\": {\r\n \"keywords\": [\"malaysia\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇲🇾\",\r\n \"category\": \"flags\"\r\n },\r\n \"mv\": {\r\n \"keywords\": [\"maldives\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇲🇻\",\r\n \"category\": \"flags\"\r\n },\r\n \"ml\": {\r\n \"keywords\": [\"mali\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇲🇱\",\r\n \"category\": \"flags\"\r\n },\r\n \"mt\": {\r\n \"keywords\": [\"malta\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇲🇹\",\r\n \"category\": \"flags\"\r\n },\r\n \"mh\": {\r\n \"keywords\": [\"marshall\", \"islands\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇲🇭\",\r\n \"category\": \"flags\"\r\n },\r\n \"mq\": {\r\n \"keywords\": [\"martinique\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇲🇶\",\r\n \"category\": \"flags\"\r\n },\r\n \"mr\": {\r\n \"keywords\": [\"mauritania\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇲🇷\",\r\n \"category\": \"flags\"\r\n },\r\n \"mu\": {\r\n \"keywords\": [\"mauritius\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇲🇺\",\r\n \"category\": \"flags\"\r\n },\r\n \"yt\": {\r\n \"keywords\": [\"mayotte\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇾🇹\",\r\n \"category\": \"flags\"\r\n },\r\n \"mx\": {\r\n \"keywords\": [\"mexico\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇲🇽\",\r\n \"category\": \"flags\"\r\n },\r\n \"fm\": {\r\n \"keywords\": [\"micronesia,\", \"federated\", \"states\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇫🇲\",\r\n \"category\": \"flags\"\r\n },\r\n \"md\": {\r\n \"keywords\": [\"moldova,\", \"republic\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇲🇩\",\r\n \"category\": \"flags\"\r\n },\r\n \"mc\": {\r\n \"keywords\": [\"monaco\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇲🇨\",\r\n \"category\": \"flags\"\r\n },\r\n \"mn\": {\r\n \"keywords\": [\"mongolia\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇲🇳\",\r\n \"category\": \"flags\"\r\n },\r\n \"me\": {\r\n \"keywords\": [\"montenegro\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇲🇪\",\r\n \"category\": \"flags\"\r\n },\r\n \"ms\": {\r\n \"keywords\": [\"montserrat\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇲🇸\",\r\n \"category\": \"flags\"\r\n },\r\n \"ma\": {\r\n \"keywords\": [\"morocco\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇲🇦\",\r\n \"category\": \"flags\"\r\n },\r\n \"mz\": {\r\n \"keywords\": [\"mozambique\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇲🇿\",\r\n \"category\": \"flags\"\r\n },\r\n \"mm\": {\r\n \"keywords\": [\"myanmar\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇲🇲\",\r\n \"category\": \"flags\"\r\n },\r\n \"na\": {\r\n \"keywords\": [\"namibia\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇳🇦\",\r\n \"category\": \"flags\"\r\n },\r\n \"nr\": {\r\n \"keywords\": [\"nauru\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇳🇷\",\r\n \"category\": \"flags\"\r\n },\r\n \"np\": {\r\n \"keywords\": [\"nepal\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇳🇵\",\r\n \"category\": \"flags\"\r\n },\r\n \"nl\": {\r\n \"keywords\": [\"netherlands\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇳🇱\",\r\n \"category\": \"flags\"\r\n },\r\n \"nc\": {\r\n \"keywords\": [\"new\", \"caledonia\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇳🇨\",\r\n \"category\": \"flags\"\r\n },\r\n \"nz\": {\r\n \"keywords\": [\"new\", \"zealand\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇳🇿\",\r\n \"category\": \"flags\"\r\n },\r\n \"ni\": {\r\n \"keywords\": [\"nicaragua\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇳🇮\",\r\n \"category\": \"flags\"\r\n },\r\n \"ne\": {\r\n \"keywords\": [\"niger\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇳🇪\",\r\n \"category\": \"flags\"\r\n },\r\n \"nigeria\": {\r\n \"keywords\": [\"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇳🇬\",\r\n \"category\": \"flags\"\r\n },\r\n \"nu\": {\r\n \"keywords\": [\"niue\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇳🇺\",\r\n \"category\": \"flags\"\r\n },\r\n \"nf\": {\r\n \"keywords\": [\"norfolk\", \"island\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇳🇫\",\r\n \"category\": \"flags\"\r\n },\r\n \"mp\": {\r\n \"keywords\": [\"northern\", \"mariana\", \"islands\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇲🇵\",\r\n \"category\": \"flags\"\r\n },\r\n \"kp\": {\r\n \"keywords\": [\"north\", \"korea\", \"nation\", \"flag\", \"country\", \"banner\"],\r\n \"char\": \"🇰🇵\",\r\n \"category\": \"flags\"\r\n },\r\n \"no\": {\r\n \"keywords\": [\"norway\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇳🇴\",\r\n \"category\": \"flags\"\r\n },\r\n \"om\": {\r\n \"keywords\": [\"oman\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇴🇲\",\r\n \"category\": \"flags\"\r\n },\r\n \"pk\": {\r\n \"keywords\": [\"pakistan\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇵🇰\",\r\n \"category\": \"flags\"\r\n },\r\n \"pw\": {\r\n \"keywords\": [\"palau\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇵🇼\",\r\n \"category\": \"flags\"\r\n },\r\n \"ps\": {\r\n \"keywords\": [\"palestine\", \"palestinian\", \"territories\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇵🇸\",\r\n \"category\": \"flags\"\r\n },\r\n \"pa\": {\r\n \"keywords\": [\"panama\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇵🇦\",\r\n \"category\": \"flags\"\r\n },\r\n \"pg\": {\r\n \"keywords\": [\"papua\", \"new\", \"guinea\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇵🇬\",\r\n \"category\": \"flags\"\r\n },\r\n \"py\": {\r\n \"keywords\": [\"paraguay\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇵🇾\",\r\n \"category\": \"flags\"\r\n },\r\n \"pe\": {\r\n \"keywords\": [\"peru\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇵🇪\",\r\n \"category\": \"flags\"\r\n },\r\n \"ph\": {\r\n \"keywords\": [\"philippines\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇵🇭\",\r\n \"category\": \"flags\"\r\n },\r\n \"pn\": {\r\n \"keywords\": [\"pitcairn\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇵🇳\",\r\n \"category\": \"flags\"\r\n },\r\n \"pl\": {\r\n \"keywords\": [\"poland\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇵🇱\",\r\n \"category\": \"flags\"\r\n },\r\n \"pt\": {\r\n \"keywords\": [\"portugal\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇵🇹\",\r\n \"category\": \"flags\"\r\n },\r\n \"pr\": {\r\n \"keywords\": [\"puerto\", \"rico\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇵🇷\",\r\n \"category\": \"flags\"\r\n },\r\n \"qa\": {\r\n \"keywords\": [\"qatar\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇶🇦\",\r\n \"category\": \"flags\"\r\n },\r\n \"re\": {\r\n \"keywords\": [\"réunion\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇷🇪\",\r\n \"category\": \"flags\"\r\n },\r\n \"ro\": {\r\n \"keywords\": [\"romania\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇷🇴\",\r\n \"category\": \"flags\"\r\n },\r\n \"ru\": {\r\n \"keywords\": [\"russian\", \"federation\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇷🇺\",\r\n \"category\": \"flags\"\r\n },\r\n \"rw\": {\r\n \"keywords\": [\"rwanda\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇷🇼\",\r\n \"category\": \"flags\"\r\n },\r\n \"bl\": {\r\n \"keywords\": [\"saint\", \"barthélemy\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇧🇱\",\r\n \"category\": \"flags\"\r\n },\r\n \"sh\": {\r\n \"keywords\": [\"saint\", \"helena\", \"ascension\", \"tristan\", \"cunha\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇸🇭\",\r\n \"category\": \"flags\"\r\n },\r\n \"kn\": {\r\n \"keywords\": [\"saint\", \"kitts\", \"nevis\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇰🇳\",\r\n \"category\": \"flags\"\r\n },\r\n \"lc\": {\r\n \"keywords\": [\"saint\", \"lucia\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇱🇨\",\r\n \"category\": \"flags\"\r\n },\r\n \"pm\": {\r\n \"keywords\": [\"saint\", \"pierre\", \"miquelon\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇵🇲\",\r\n \"category\": \"flags\"\r\n },\r\n \"vc\": {\r\n \"keywords\": [\"saint\", \"vincent\", \"grenadines\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇻🇨\",\r\n \"category\": \"flags\"\r\n },\r\n \"ws\": {\r\n \"keywords\": [\"samoa\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇼🇸\",\r\n \"category\": \"flags\"\r\n },\r\n \"sm\": {\r\n \"keywords\": [\"san\", \"marino\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇸🇲\",\r\n \"category\": \"flags\"\r\n },\r\n \"st\": {\r\n \"keywords\": [\"sao\", \"tome\", \"principe\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇸🇹\",\r\n \"category\": \"flags\"\r\n },\r\n \"saudi_arabia\": {\r\n \"keywords\": [\"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇸🇦\",\r\n \"category\": \"flags\"\r\n },\r\n \"sn\": {\r\n \"keywords\": [\"senegal\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇸🇳\",\r\n \"category\": \"flags\"\r\n },\r\n \"rs\": {\r\n \"keywords\": [\"serbia\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇷🇸\",\r\n \"category\": \"flags\"\r\n },\r\n \"sc\": {\r\n \"keywords\": [\"seychelles\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇸🇨\",\r\n \"category\": \"flags\"\r\n },\r\n \"sl\": {\r\n \"keywords\": [\"sierra\", \"leone\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇸🇱\",\r\n \"category\": \"flags\"\r\n },\r\n \"sg\": {\r\n \"keywords\": [\"singapore\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇸🇬\",\r\n \"category\": \"flags\"\r\n },\r\n \"sx\": {\r\n \"keywords\": [\"sint\", \"maarten\", \"dutch\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇸🇽\",\r\n \"category\": \"flags\"\r\n },\r\n \"sk\": {\r\n \"keywords\": [\"slovakia\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇸🇰\",\r\n \"category\": \"flags\"\r\n },\r\n \"si\": {\r\n \"keywords\": [\"slovenia\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇸🇮\",\r\n \"category\": \"flags\"\r\n },\r\n \"sb\": {\r\n \"keywords\": [\"solomon\", \"islands\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇸🇧\",\r\n \"category\": \"flags\"\r\n },\r\n \"so\": {\r\n \"keywords\": [\"somalia\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇸🇴\",\r\n \"category\": \"flags\"\r\n },\r\n \"za\": {\r\n \"keywords\": [\"south\", \"africa\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇿🇦\",\r\n \"category\": \"flags\"\r\n },\r\n \"gs\": {\r\n \"keywords\": [\"south\", \"georgia\", \"sandwich\", \"islands\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇬🇸\",\r\n \"category\": \"flags\"\r\n },\r\n \"kr\": {\r\n \"keywords\": [\"south\", \"korea\", \"nation\", \"flag\", \"country\", \"banner\"],\r\n \"char\": \"🇰🇷\",\r\n \"category\": \"flags\"\r\n },\r\n \"ss\": {\r\n \"keywords\": [\"south\", \"sudan\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇸🇸\",\r\n \"category\": \"flags\"\r\n },\r\n \"es\": {\r\n \"keywords\": [\"spain\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇪🇸\",\r\n \"category\": \"flags\"\r\n },\r\n \"lk\": {\r\n \"keywords\": [\"sri\", \"lanka\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇱🇰\",\r\n \"category\": \"flags\"\r\n },\r\n \"sd\": {\r\n \"keywords\": [\"sudan\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇸🇩\",\r\n \"category\": \"flags\"\r\n },\r\n \"sr\": {\r\n \"keywords\": [\"suriname\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇸🇷\",\r\n \"category\": \"flags\"\r\n },\r\n \"sz\": {\r\n \"keywords\": [\"swaziland\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇸🇿\",\r\n \"category\": \"flags\"\r\n },\r\n \"se\": {\r\n \"keywords\": [\"sweden\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇸🇪\",\r\n \"category\": \"flags\"\r\n },\r\n \"ch\": {\r\n \"keywords\": [\"switzerland\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇨🇭\",\r\n \"category\": \"flags\"\r\n },\r\n \"sy\": {\r\n \"keywords\": [\"syrian\", \"arab\", \"republic\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇸🇾\",\r\n \"category\": \"flags\"\r\n },\r\n \"tw\": {\r\n \"keywords\": [\"taiwan\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇹🇼\",\r\n \"category\": \"flags\"\r\n },\r\n \"tj\": {\r\n \"keywords\": [\"tajikistan\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇹🇯\",\r\n \"category\": \"flags\"\r\n },\r\n \"tz\": {\r\n \"keywords\": [\"tanzania,\", \"united\", \"republic\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇹🇿\",\r\n \"category\": \"flags\"\r\n },\r\n \"th\": {\r\n \"keywords\": [\"thailand\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇹🇭\",\r\n \"category\": \"flags\"\r\n },\r\n \"tl\": {\r\n \"keywords\": [\"timor\", \"leste\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇹🇱\",\r\n \"category\": \"flags\"\r\n },\r\n \"tg\": {\r\n \"keywords\": [\"togo\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇹🇬\",\r\n \"category\": \"flags\"\r\n },\r\n \"tk\": {\r\n \"keywords\": [\"tokelau\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇹🇰\",\r\n \"category\": \"flags\"\r\n },\r\n \"to\": {\r\n \"keywords\": [\"tonga\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇹🇴\",\r\n \"category\": \"flags\"\r\n },\r\n \"tt\": {\r\n \"keywords\": [\"trinidad\", \"tobago\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇹🇹\",\r\n \"category\": \"flags\"\r\n },\r\n \"tn\": {\r\n \"keywords\": [\"tunisia\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇹🇳\",\r\n \"category\": \"flags\"\r\n },\r\n \"tr\": {\r\n \"keywords\": [\"turkey\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇹🇷\",\r\n \"category\": \"flags\"\r\n },\r\n \"turkmenistan\": {\r\n \"keywords\": [\"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇹🇲\",\r\n \"category\": \"flags\"\r\n },\r\n \"tc\": {\r\n \"keywords\": [\"turks\", \"caicos\", \"islands\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇹🇨\",\r\n \"category\": \"flags\"\r\n },\r\n \"tuvalu\": {\r\n \"keywords\": [\"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇹🇻\",\r\n \"category\": \"flags\"\r\n },\r\n \"ug\": {\r\n \"keywords\": [\"uganda\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇺🇬\",\r\n \"category\": \"flags\"\r\n },\r\n \"ua\": {\r\n \"keywords\": [\"ukraine\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇺🇦\",\r\n \"category\": \"flags\"\r\n },\r\n \"ae\": {\r\n \"keywords\": [\"united\", \"arab\", \"emirates\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇦🇪\",\r\n \"category\": \"flags\"\r\n },\r\n \"gb\": {\r\n \"keywords\": [\"united\", \"kingdom\", \"great\", \"britain\", \"northern\", \"ireland\", \"flag\", \"nation\", \"country\", \"banner\", \"british\", \"UK\", \"english\", \"england\", \"union jack\"],\r\n \"char\": \"🇬🇧\",\r\n \"category\": \"flags\"\r\n },\r\n \"us\": {\r\n \"keywords\": [\"united\", \"states\", \"america\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇺🇸\",\r\n \"category\": \"flags\"\r\n },\r\n \"vi\": {\r\n \"keywords\": [\"virgin\", \"islands\", \"us\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇻🇮\",\r\n \"category\": \"flags\"\r\n },\r\n \"uy\": {\r\n \"keywords\": [\"uruguay\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇺🇾\",\r\n \"category\": \"flags\"\r\n },\r\n \"uz\": {\r\n \"keywords\": [\"uzbekistan\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇺🇿\",\r\n \"category\": \"flags\"\r\n },\r\n \"vu\": {\r\n \"keywords\": [\"vanuatu\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇻🇺\",\r\n \"category\": \"flags\"\r\n },\r\n \"va\": {\r\n \"keywords\": [\"vatican\", \"city\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇻🇦\",\r\n \"category\": \"flags\"\r\n },\r\n \"ve\": {\r\n \"keywords\": [\"venezuela\", \"bolivarian\", \"republic\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇻🇪\",\r\n \"category\": \"flags\"\r\n },\r\n \"vn\": {\r\n \"keywords\": [\"viet\", \"nam\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇻🇳\",\r\n \"category\": \"flags\"\r\n },\r\n \"wf\": {\r\n \"keywords\": [\"wallis\", \"futuna\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇼🇫\",\r\n \"category\": \"flags\"\r\n },\r\n \"eh\": {\r\n \"keywords\": [\"western\", \"sahara\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇪🇭\",\r\n \"category\": \"flags\"\r\n },\r\n \"ye\": {\r\n \"keywords\": [\"yemen\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇾🇪\",\r\n \"category\": \"flags\"\r\n },\r\n \"zm\": {\r\n \"keywords\": [\"zambia\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇿🇲\",\r\n \"category\": \"flags\"\r\n },\r\n \"zw\": {\r\n \"keywords\": [\"zimbabwe\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇿🇼\",\r\n \"category\": \"flags\"\r\n },\r\n \"octocat\": {\r\n \"keywords\": [\"animal\", \"octopus\", \"github\", \"custom_\"],\r\n \"char\": null,\r\n \"category\": \"_custom\"\r\n },\r\n \"shipit\": {\r\n \"keywords\": [\"squirrel\", \"detective\", \"animal\", \"sherlock\", \"inspector\", \"custom_\"],\r\n \"char\": null,\r\n \"category\": \"_custom\"\r\n },\r\n \"bowtie\": {\r\n \"keywords\": [\"face\", \"formal\", \"fashion\", \"suit\", \"classy\", \"magic\", \"circus\"],\r\n \"char\": null,\r\n \"category\": \"_custom\"\r\n },\r\n \"neckbeard\": {\r\n \"keywords\": [\"nerdy\", \"face\", \"custom_\"],\r\n \"char\": null,\r\n \"category\": \"_custom\"\r\n },\r\n \"metal\": {\r\n \"keywords\": [\"fingers\", \"rocknroll\", \"concert\", \"band\", \"custom_\"],\r\n \"char\": null,\r\n \"category\": \"_custom\"\r\n },\r\n \"fu\": {\r\n \"keywords\": [\"fuck\", \"finger\", \"dislike\", \"thumbsdown\", \"disapprove\", \"no\", \"custom_\"],\r\n \"char\": null,\r\n \"category\": \"_custom\"\r\n },\r\n \"trollface\": {\r\n \"keywords\": [\"internet\", \"meme\", \"custom_\"],\r\n \"char\": null,\r\n \"category\": \"_custom\"\r\n },\r\n \"godmode\": {\r\n \"keywords\": [\"doom\", \"oldschool\"],\r\n \"char\": null,\r\n \"category\": \"_custom\"\r\n },\r\n \"goberserk\": {\r\n \"keywords\": [\"doom\", \"rage\", \"bloody\", \"hurt\"],\r\n \"char\": null,\r\n \"category\": \"_custom\"\r\n },\r\n \"finnadie\": {\r\n \"keywords\": [\"doom\", \"oldschool\"],\r\n \"char\": null,\r\n \"category\": \"_custom\"\r\n },\r\n \"feelsgood\": {\r\n \"keywords\": [\"doom\", \"oldschool\"],\r\n \"char\": null,\r\n \"category\": \"_custom\"\r\n },\r\n \"rage1\": {\r\n \"keywords\": [\"angry\", \"mad\", \"hate\", \"despise\"],\r\n \"char\": null,\r\n \"category\": \"_custom\"\r\n },\r\n \"rage2\": {\r\n \"keywords\": [\"angry\", \"mad\", \"hate\", \"despise\"],\r\n \"char\": null,\r\n \"category\": \"_custom\"\r\n },\r\n \"rage3\": {\r\n \"keywords\": [\"angry\", \"mad\", \"hate\", \"despise\"],\r\n \"char\": null,\r\n \"category\": \"_custom\"\r\n },\r\n \"rage4\": {\r\n \"keywords\": [\"angry\", \"mad\", \"hate\", \"despise\"],\r\n \"char\": null,\r\n \"category\": \"_custom\"\r\n },\r\n \"suspect\": {\r\n \"keywords\": [\"mad\", \"custom_\"],\r\n \"char\": null,\r\n \"category\": \"_custom\"\r\n },\r\n \"hurtrealbad\": {\r\n \"keywords\": [\"mad\", \"injured\", \"doom\", \"oldschool\", \"custom_\"],\r\n \"char\": null,\r\n \"category\": \"_custom\"\r\n }\r\n}","declare var twemoji: {\r\n parse(str: string, options?: { folder?: string, ext?: string, base?: string }): string;\r\n}\r\n\r\nimport { Component, inject, OnInit, Output } from '@angular/core';\r\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\r\nimport { Subject } from 'rxjs';\r\nimport { BANTA_SDK_OPTIONS } from '../../sdk-options';\r\n\r\ninterface Emoji {\r\n\tkeywords : string[];\r\n\tchar : string;\r\n\thtml? : SafeHtml;\r\n\tcategory : string;\r\n}\r\n\r\nimport { EMOJIS } from '../emojis';\r\n\r\n@Component({\r\n\tselector: 'emoji-selector-panel',\r\n\ttemplateUrl: './emoji-selector-panel.component.html',\r\n\tstyleUrls: ['./emoji-selector-panel.component.scss']\r\n})\r\nexport class EmojiSelectorPanelComponent implements OnInit {\r\n\r\n\tprivate sanitizer = inject(DomSanitizer);\r\n\tprivate sdkOptions = inject(BANTA_SDK_OPTIONS, { optional: true });\r\n\r\n\tcategories : any[];\r\n\tactiveCategory : string = 'people';\r\n\tsearchResults : any[] = [];\r\n searchVisible = false;\r\n\t\r\n\t@Output()\r\n\tprivate selected : Subject<string> = new Subject();\r\n\r\n\tprivate _searchQuery : string;\r\n\r\n\tget searchQuery() {\r\n\t\treturn this._searchQuery;\r\n\t}\r\n\r\n\tset searchQuery(value) {\r\n\t\tthis._searchQuery = value;\r\n\t\tsetTimeout(() => {\r\n\t\t\tthis.searchResults = Object.keys(EMOJIS).filter(k => k.includes(value)).map(k => EMOJIS[k]);\r\n\t\t\tthis.searchResults.splice(50, this.searchResults.length);\r\n\t\t\tconsole.log(`looking for '${value}' => ${this.searchResults.length} results`);\r\n\t\t});\r\n\t}\r\n\r\n\thumanize(str : string) {\r\n\t\treturn str.replace(/(^| )[a-z]/g, k => k.toUpperCase()).replace(/_/g, ' ');\r\n\t}\r\n\r\n\tselect(char : string) {\r\n\t\tthis.selected.next(char);\r\n\t}\r\n\r\n\tpairs(object) {\r\n\t\treturn Object.keys(object).map(key => [key, object[key]]);\r\n\t}\r\n\r\n\thideSearch() {\r\n\t\t// because of the \"outside click detection\"\r\n setTimeout(() => {\r\n this.searchVisible = false;\r\n });\r\n\t}\r\n\t\r\n showSearch() {\r\n\t\t// because of the \"outside click detection\"\r\n setTimeout(() => {\r\n this.searchVisible = true;\r\n });\r\n }\r\n\r\n\tprivate get emojiUrl() {\r\n\t\treturn this.sdkOptions?.emojiUrl ?? 'https://cdn.jsdelivr.net/gh/twitter/twemoji@14.0.2/assets/';\r\n\t}\r\n\r\n\tngOnInit() {\r\n\r\n\t\tlet cats = {};\r\n\t\tlet categoryIcons = {\r\n\t\t\tsymbols: 'warning',\r\n\t\t\tpeople: 'people',\r\n\t\t\tanimals_and_nature: 'nature',\r\n\t\t\ttravel_and_places: 'location_on',\r\n\t\t\tactivity: 'local_activity',\r\n\t\t\tfood_and_drink: 'restaurant',\r\n\t\t\tobjects: 'computer',\r\n\t\t\tflags: 'flag'\r\n\t\t};\r\n\t\tfor (let pair of this.pairs(EMOJIS)) {\r\n\t\t\tlet name = pair[0];\r\n\t\t\tlet emoji : Emoji = pair[1];\r\n\r\n\t\t\tif (!cats[emoji.category]) {\r\n\t\t\t\tcats[emoji.category] = {\r\n\t\t\t\t\tname: emoji.category,\r\n\t\t\t\t\ticon: categoryIcons[emoji.category] || 'code',\r\n\t\t\t\t\temojis: []\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\temoji.html = this.sanitizer.bypassSecurityTrustHtml(\r\n\t\t\t\ttwemoji.parse(emoji.char || '', { base: this.emojiUrl })\r\n\t\t\t);\r\n\r\n\t\t\tcats[emoji.category].emojis.push(emoji);\r\n\t\t}\r\n\r\n\t\tthis.categories = this.pairs(cats).map(pair => pair[1]);\r\n\t}\r\n\r\n}\r\n","<div class=\"search-box\" *ngIf=\"searchVisible\">\r\n\t<a mat-icon-button href=\"javascript:;\" (click)=\"hideSearch()\">\r\n\t\t<mat-icon>arrow_back</mat-icon>\r\n\t</a>\r\n\t<mat-form-field appearance=\"outline\" floatLabel=\"always\">\r\n\t\t<mat-label>Search for emoji</mat-label>\r\n\t\t<input name=\"search\" type=\"text\" matInput placeholder=\"Start typing\" [(ngModel)]=\"searchQuery\" />\r\n\t</mat-form-field>\r\n</div>\r\n\r\n<div class=\"selector\">\r\n\t<ng-container *ngIf=\"searchVisible\">\r\n\t\t<div class=\"emoji-list\">\r\n\t\t\t<a href=\"javascript:;\" (click)=\"select(emoji.char)\" \r\n\t\t\t\t*ngFor=\"let emoji of searchResults\" [innerHtml]=\"emoji.html || ''\">\r\n\t\t\t</a>\r\n\t\t</div>\r\n\t</ng-container>\r\n\t<ng-container *ngIf=\"!searchVisible\">\r\n\t\t<div class=\"categories\">\r\n\t\t\t<ng-container *ngIf=\"!searchVisible\">\r\n\t\t\t\t<a [title]=\"humanize(category.name)\" [class.active]=\"activeCategory === category.name\" mat-icon-button *ngFor=\"let category of categories\" (click)=\"activeCategory = category.name\">\r\n\t\t\t\t\t<mat-icon>{{category.icon}}</mat-icon>\r\n\t\t\t\t</a>\r\n\r\n\t\t\t\t<a title=\"Search\" [class.active] mat-icon-button (click)=\"showSearch()\">\r\n\t\t\t\t\t<mat-icon>search</mat-icon>\r\n\t\t\t\t</a>\r\n\t\t\t</ng-container>\r\n\t\t</div>\r\n\t\t<ng-container *ngFor=\"let category of categories\">\r\n\t\t\t<div class=\"emoji-list\" *ngIf=\"activeCategory && activeCategory == category.name\">\r\n\t\t\t\t<a href=\"javascript:;\" (click)=\"select(emoji.char)\" \r\n\t\t\t\t\t*ngFor=\"let emoji of category.emojis\" [innerHtml]=\"emoji.html || ''\">\r\n\t\t\t\t</a>\r\n\t\t\t</div>\r\n\t\t</ng-container>\r\n\t</ng-container>\r\n</div>","/// <reference types=\"@types/resize-observer-browser\" />\r\n\r\nimport { FlexibleConnectedPositionStrategy, Overlay, OverlayRef } from '@angular/cdk/overlay';\r\nimport { ComponentPortal, TemplatePortal } from '@angular/cdk/portal';\r\nimport { Component, ElementRef, HostBinding, Output, ViewChild, Input } from '@angular/core';\r\nimport { Subject, Observable } from 'rxjs';\r\nimport { EmojiSelectorPanelComponent } from './emoji-selector-panel/emoji-selector-panel.component';\r\n\r\n@Component({\r\n selector: 'emoji-selector-button',\r\n template: `\r\n <button #button type=\"button\" mat-icon-button (click)=\"show()\" [disabled]=\"disabled\">\r\n <mat-icon>emoji_emotions</mat-icon>\r\n </button>\r\n <ng-template cdkPortal #selectorPanelTemplate=\"cdkPortal\">\r\n <emoji-selector-panel \r\n #panel\r\n (selected)=\"insert($event)\"\r\n ></emoji-selector-panel>\r\n </ng-template>\r\n `,\r\n styles: [`\r\n :host {\r\n display: block;\r\n position: relative;\r\n }\r\n\r\n button {\r\n color: #666\r\n }\r\n `]\r\n})\r\nexport class EmojiSelectorButtonComponent {\r\n constructor(\r\n private elementRef: ElementRef<HTMLElement>,\r\n private overlay: Overlay\r\n ) {\r\n }\r\n\r\n @ViewChild('selectorPanelTemplate') selectorPanelTemplate: TemplatePortal<any>;\r\n\r\n private _selected = new Subject<string>();\r\n showEmojiPanel = false;\r\n\r\n @Output()\r\n get selected() : Observable<string> {\r\n return this._selected;\r\n }\r\n\r\n private overlayRef: OverlayRef;\r\n\r\n get isOpen() {\r\n return this.overlayRef;\r\n }\r\n\r\n /**\r\n * Insert the given emoji.\r\n * @param str \r\n */\r\n insert(str) {\r\n this._selected.next(str);\r\n this.close();\r\n }\r\n\r\n close() {\r\n if (this.overlayRef) {\r\n this.overlayRef.dispose();\r\n this.overlayRef = null;\r\n }\r\n }\r\n\r\n @Input() disabled = false;\r\n @Input() overlayX: 'start' | 'center' | 'end' = 'end';\r\n @Input() overlayY: 'top' | 'center' | 'bottom' = 'top';\r\n @Input() originX: 'start' | 'center' | 'end' = 'end';\r\n @Input() originY: 'top' | 'center' | 'bottom' = 'bottom';\r\n\r\n show() {\r\n if (this.isOpen) {\r\n this.close();\r\n }\r\n\r\n this.overlayRef = this.overlay.create({\r\n positionStrategy: this.overlay.position()\r\n .flexibleConnectedTo(this.elementRef)\r\n .withPositions([\r\n { \r\n originX: this.originX, \r\n originY: this.originY,\r\n overlayX: this.overlayX,\r\n overlayY: this.overlayY\r\n }\r\n ])\r\n .withFlexibleDimensions(true),\r\n hasBackdrop: true,\r\n disposeOnNavigation: true,\r\n scrollStrategy: this.overlay.scrollStrategies.reposition({\r\n autoClose: true\r\n })\r\n });\r\n\r\n this.overlayRef.backdropClick().subscribe(() => {\r\n this.close();\r\n })\r\n\r\n this.overlayRef.keydownEvents().subscribe(event => {\r\n if (event.key === 'Escape') {\r\n this.close();\r\n }\r\n });\r\n this.overlayRef.attach(this.selectorPanelTemplate);\r\n }\r\n}","import { NgModule } from '@angular/core';\r\nimport { EmojiSelectorPanelComponent } from './emoji-selector-panel/emoji-selector-panel.component';\r\nimport { CommonModule } from '@angular/common';\r\nimport { EmojiSelectorButtonComponent } from './emoji-selector-button.component';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { OverlayModule } from '@angular/cdk/overlay';\r\nimport { PortalModule } from '@angular/cdk/portal';\r\n\r\nconst COMPONENTS = [\r\n EmojiSelectorPanelComponent,\r\n EmojiSelectorButtonComponent\r\n];\r\n\r\n@NgModule({\r\n declarations: COMPONENTS,\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n MatIconModule,\r\n MatButtonModule,\r\n MatFormFieldModule,\r\n MatInputModule,\r\n OverlayModule,\r\n PortalModule\r\n ],\r\n exports: COMPONENTS\r\n})\r\nexport class EmojiModule {\r\n\r\n}","import { BehaviorSubject, Observable } from 'rxjs';\r\nimport { ChatMessage, Vote, CommentsOrder, Notification, User, UrlCard, FilterMode, Topic } from '@banta/common';\r\nimport { ChatSourceBase } from './chat-source-base';\r\nimport { AttachmentResolver, AttachmentScraper } from './attachment-scraper';\r\n\r\nexport interface ChatSourceOptions {\r\n sortOrder?: CommentsOrder;\r\n filterMode?: FilterMode;\r\n\r\n /**\r\n * How many messages should be loaded initially?\r\n */\r\n initialMessageCount?: number;\r\n metadata?: Record<string, any>;\r\n}\r\n\r\nexport abstract class ChatBackendBase {\r\n constructor() {\r\n }\r\n \r\n abstract getSourceForTopic(topicId : string, options?: ChatSourceOptions) : Promise<ChatSourceBase>;\r\n abstract getSourceForThread(topicId : string, messageId : string, options?: ChatSourceOptions) : Promise<ChatSourceBase>;\r\n\r\n /**\r\n * Get the count of the given topic\r\n * @param topicId \r\n * @returns \r\n */\r\n abstract getSourceCountForTopic(topicId: string): Promise<number>;\r\n\r\n /**\r\n * Get the count of the given topics. \r\n * @param topicId Topics to count messages on. Maximum of 1000.\r\n * @returns \r\n */\r\n abstract getSourceCountForTopics(topicIds: string[]): Promise<Record<string, number>>;\r\n\r\n /**\r\n * Get information about the given topic. \r\n * @param topicId \r\n * @returns The topic object, or undefined if no such topic was found.\r\n */\r\n abstract getTopic(topicId: string): Promise<Topic | undefined>;\r\n\r\n /**\r\n * Get information about the given topics\r\n * @param topicIds The topic IDs to look up. Maximum of 1000.\r\n * @returns An array of matching topic objects.\r\n */\r\n abstract getTopicsById(topicIds: string[]): Promise<Topic[]>;\r\n\r\n /**\r\n * Get a set of messages from the given topic.\r\n * @param topicId \r\n * @returns \r\n */\r\n abstract getMessages(\r\n topicId: string, \r\n sort?: CommentsOrder, \r\n filter?: FilterMode, \r\n offset?: number, \r\n limit?: number\r\n ): Promise<ChatMessage[]>;\r\n\r\n /**\r\n * Get a set of messages from the given topic.\r\n * @param topicId \r\n * @returns \r\n */\r\n abstract getReplies(\r\n parentMessageId: string,\r\n sort?: CommentsOrder, \r\n filter?: FilterMode, \r\n offset?: number, \r\n limit?: number\r\n ): Promise<ChatMessage[]>;\r\n\r\n abstract refreshMessage(message : ChatMessage): Promise<ChatMessage>;\r\n abstract getMessage(topicId : string, messageId : string): Promise<ChatMessage>;\r\n abstract getSubMessage(topicId : string, parentMessageId : string, messageId : string): Promise<ChatMessage>;\r\n abstract watchMessage(message : ChatMessage, handler : (message : ChatMessage) => void) : () => void;\r\n abstract getCardForUrl(url: string): Promise<UrlCard>;\r\n readonly notificationsChanged : Observable<Notification[]>;\r\n readonly newNotification : Observable<Notification>;\r\n \r\n private _userChanged = new BehaviorSubject<User>(null);\r\n private _user : User;\r\n \r\n get userChanged() : Observable<User> {\r\n return this._userChanged;\r\n }\r\n \r\n set user(user : User) {\r\n this._user = user;\r\n this._userChanged.next(user);\r\n }\r\n\r\n get user() {\r\n return this._user;\r\n }\r\n \r\n private _attachmentScrapers: AttachmentScraper[] = [];\r\n private _attachmentResolvers: AttachmentResolver[] = [];\r\n\r\n registerAttachmentScraper(scraper: AttachmentScraper) {\r\n this._attachmentScrapers.push(scraper);\r\n }\r\n\r\n registerAttachmentResolver(resolver: AttachmentResolver) {\r\n this._attachmentResolvers.push(resolver);\r\n }\r\n\r\n get attachmentScrapers() {\r\n return this._attachmentScrapers.slice();\r\n }\r\n\r\n get attachmentResolvers() {\r\n return this._attachmentResolvers.slice();\r\n }\r\n}","import { Component, Output, Input, HostBinding, ElementRef } from \"@angular/core\";\r\nimport { Subject } from 'rxjs';\r\nimport { ChatMessage, ChatPermissions, User } from '@banta/common';\r\nimport { MessageMenuItem } from \"../../message-menu-item\";\r\nimport { take } from 'rxjs/operators';\r\n\r\n@Component({\r\n selector: 'banta-comment',\r\n templateUrl: './comment.component.html',\r\n styleUrls: ['./comment.component.scss']\r\n})\r\nexport class CommentComponent {\r\n constructor(\r\n private elementRef: ElementRef<HTMLElement>\r\n ) {\r\n }\r\n\r\n ngOnInit() {\r\n let maxTime = 100;\r\n let minTime = 0;\r\n let randomTime = minTime + Math.random() * (maxTime - minTime);\r\n\r\n setTimeout(() => {\r\n this.isNew = true;\r\n this.visible = true;\r\n setTimeout(() => this.isNew = false, 1000);\r\n }, randomTime);\r\n }\r\n\r\n //#region Message\r\n\r\n @Input() get message() { return this._message; }\r\n set message(value) { this.setMessage(value); }\r\n private _message : ChatMessage;\r\n\r\n //#endregion\r\n //#region Properties\r\n \r\n private isLoaded = false;\r\n editedMessage: string;\r\n\r\n //#endregion\r\n //#region Inputs\r\n \r\n @Input() customMenuItems: MessageMenuItem[];\r\n @Input() showReplyAction = true;\r\n @Input() maxLength: number = 1500;\r\n @Input() permissions: ChatPermissions;\r\n @Input() mine = false;\r\n @Input() editing = false;\r\n @Input() genericAvatarUrl: string;\r\n @Input() readonly = false;\r\n\r\n //#endregion\r\n //#region Outputs\r\n\r\n private _reported = new Subject<void>();\r\n private _selected = new Subject<void>();\r\n private _liked = new Subject<void>();\r\n private _unliked = new Subject<void>();\r\n private _shared = new Subject<ChatMessage>();\r\n\tprivate _userSelected = new Subject<void>();\r\n\tprivate _avatarSelected = new Subject<User>();\r\n\tprivate _usernameSelected = new Subject<User>();\r\n private _editStarted = new Subject<void>();\r\n private _deleted = new Subject<void>();\r\n private _editEnded = new Subject<void>();\r\n private _edited = new Subject<string>();\r\n private _loaded = new Subject<void>();\r\n \r\n @Output() readonly liked = this._liked.asObservable();\r\n @Output() readonly unliked = this._unliked.asObservable();\r\n @Output() readonly selected = this._selected.asObservable();\r\n @Output() readonly edited = this._edited.asObservable();\r\n @Output() readonly deleted = this._deleted.asObservable();\r\n @Output() readonly editStarted = this._editStarted.asObservable();\r\n @Output() readonly editEnded = this._editEnded.asObservable();\r\n @Output() readonly shared = this._shared.asObservable();\r\n\t@Output() readonly userSelected = this._userSelected.asObservable();\r\n @Output() readonly usernameSelected = this._usernameSelected.asObservable();\r\n\t@Output() readonly avatarSelected = this._avatarSelected.asObservable();\r\n @Output() readonly reported = this._reported.asObservable();\r\n @Output() readonly loaded = this._loaded.asObservable();\r\n\r\n //#endregion\r\n //#region UI Bindings\r\n\r\n @HostBinding('attr.data-comment-id') get commentId() { return this.message?.id; }\r\n @HostBinding('class.new') isNew = false;\r\n @HostBinding('class.highlighted') get isHighlighted() { return this.message?.transientState?.highlighted ?? false; }\r\n @HostBinding('class.visible') visible = false;\r\n\r\n get replyCount() { return this.message.submessages?.length || this.message.submessageCount || 0; }\r\n get element() { return this.elementRef.nativeElement; }\r\n\r\n avatarForUser(user : User) { return `url(${user?.avatarUrl ?? this.genericAvatarUrl})`; }\r\n\r\n //#endregion\r\n //#region Public Component API\r\n\r\n async waitForLoad() {\r\n await this.isLoaded ? Promise.resolve() : this.loaded.pipe(take(1)).toPromise();\r\n }\r\n\r\n //#endregion\r\n //#region Private API\r\n \r\n private setMessage(value: ChatMessage) {\r\n this._message = value;\r\n if (this._message.attachments?.length > 0) {\r\n this.isLoaded = false;\r\n } else {\r\n this.isLoaded = true;\r\n this._loaded.next();\r\n }\r\n }\r\n\r\n //#endregion\r\n //#region Actions\r\n\r\n markAttachmentsLoaded() { this.isLoaded = true; this._loaded.next(); }\r\n saveEdit() { this._edited.next(this.editedMessage); }\r\n endEditing() { this._editEnded.next(); }\r\n delete() { this._deleted.next(); }\r\n report() { this._reported.next(); }\r\n like() { this._liked.next(); }\r\n unlike() { this._unliked.next(); }\r\n share() { this._shared.next(this.message); }\r\n select() { this._selected.next(); }\r\n\tselectUser() { this._userSelected.next(); }\r\n startEdit() { this._editStarted.next(); this.editedMessage = this.message.message; }\r\n selectUsername(user: User) { this._usernameSelected.next(user); this.selectUser(); }\r\n\tselectAvatar(user: User) { this._avatarSelected.next(user); this.selectUser(); }\r\n\r\n //#endregion\r\n}\r\n","\r\n<mat-menu #pointItemMenu=\"matMenu\">\r\n <button mat-menu-item (click)=\"share()\">\r\n <mat-icon>share</mat-icon>\r\n Share\r\n </button>\r\n <button *ngIf=\"!mine\" mat-menu-item (click)=\"report()\">\r\n <mat-icon>warning</mat-icon>\r\n Report\r\n </button>\r\n <button *ngIf=\"mine\" [disabled]=\"!permissions?.canEdit || readonly\" mat-menu-item (click)=\"startEdit()\">\r\n <mat-icon>edit</mat-icon>\r\n Edit\r\n </button>\r\n <button *ngIf=\"mine\" [disabled]=\"!permissions?.canDelete || readonly\" mat-menu-item (click)=\"delete()\">\r\n <mat-icon>delete</mat-icon>\r\n Delete\r\n </button>\r\n\r\n <button *ngFor=\"let menuItem of customMenuItems\" mat-menu-item (click)=\"menuItem.action(message)\">\r\n <mat-icon>{{menuItem.icon}}</mat-icon>\r\n {{menuItem.label}}\r\n </button>\r\n\r\n</mat-menu>\r\n\r\n<div class=\"banta-message-content-container\">\r\n <div class=\"banta-user\">\r\n <div class=\"banta-user-1\">\r\n <a\r\n href=\"javascript:;\"\r\n class=\"banta-avatar\"\r\n (click)=\"selectAvatar(message.user)\"\r\n [style.background-image]=\"avatarForUser(message.user)\"></a>\r\n <div class=\"banta-user-identity\">\r\n <a href=\"javascript:;\" class=\"banta-display-name\" (click)=\"selectUser()\">{{message.user.displayName}}</a>\r\n <a href=\"javascript:;\" class=\"banta-username\" (click)=\"selectUsername(message.user)\">@{{message.user.username}}</a>\r\n </div>\r\n </div>\r\n <div class=\"banta-user-2\">\r\n <span class=\"banta-user-tag\" *ngIf=\"message.user.tag\">{{message.user.tag}}</span>\r\n <banta-timestamp [value]=\"message.sentAt\"></banta-timestamp>\r\n <span class=\"spacer\"></span>\r\n </div>\r\n </div>\r\n <div class=\"banta-content\" *ngIf=\"!editing\">\r\n <span class=\"banta-message-content\" [innerHTML]=\"message.message | mentionLinker: message.mentionLinks | bantaMarkdownToHtml\"></span>\r\n <banta-attachments \r\n [attachments]=\"message.attachments\"\r\n (loaded)=\"markAttachmentsLoaded()\"\r\n ></banta-attachments>\r\n <ul class=\"message-facts\">\r\n <li *ngIf=\"message.edits?.length > 0\">(Edited)</li>\r\n </ul>\r\n </div>\r\n <div class=\"banta-content\" *ngIf=\"editing\" style=\"padding-bottom: 2em;\">\r\n <div>\r\n <mat-form-field floatLabel=\"always\" appearance=\"outline\" style=\"width: 100%;\">\r\n <mat-label>Edit Message</mat-label>\r\n <textarea matInput [(ngModel)]=\"editedMessage\" [maxlength]=\"maxLength\"></textarea>\r\n </mat-form-field>\r\n </div>\r\n <button mat-raised-button (click)=\"saveEdit()\">Save</button> \r\n <button mat-button (click)=\"endEditing()\">Cancel</button>\r\n </div>\r\n\r\n\r\n <div class=\"banta-actions\">\r\n <div class=\"spacer\"></div>\r\n <div class=\"banta-counted-action\" *ngIf=\"showReplyAction\">\r\n <button mat-button [matTooltip]=\"replyCount > 0 ? 'Replies' : 'Reply'\" matTooltipPosition=\"below\" (click)=\"select()\">\r\n <mat-icon>comment</mat-icon>\r\n <span class=\"banta-count-indicator\">\r\n {{replyCount > 0 ? 'Replies' : 'Reply'}}\r\n {{replyCount > 0 ? '(' + replyCount + ')' : ''}}\r\n </span>\r\n </button>\r\n </div>\r\n <div class=\"banta-counted-action\" [class.active]=\"message.userState?.liked\">\r\n <button \r\n *ngIf=\"message.transientState?.liking\"\r\n mat-icon-button \r\n [disabled]=\"true\" \r\n [matTooltip]=\"upvoting ? 'Please wait...' : message.userState?.liked ? 'Unlike' : 'Like'\" \r\n matTooltipPosition=\"below\" \r\n >\r\n <mat-spinner [diameter]=\"15\" style=\"margin-left: 1em;\"></mat-spinner>\r\n </button>\r\n <button \r\n *ngIf=\"!message.transientState?.liking\"\r\n mat-button \r\n [disabled]=\"readonly\"\r\n [matTooltip]=\"permissions?.canLike ? upvoting ? 'Please wait...' : 'Like' : permissions?.canLikeErrorMessage\" \r\n matTooltipPosition=\"below\" \r\n (click)=\"message.userState?.liked ? unlike() : like()\" \r\n >\r\n <mat-icon>thumb_up</mat-icon>\r\n <span class=\"banta-count-indicator\" *ngIf=\"message.likes > 0\">\r\n {{message.likes}}\r\n </span>\r\n </button>\r\n </div>\r\n\r\n <button mat-icon-button [matMenuTriggerFor]=\"pointItemMenu\">\r\n <mat-icon>more_vert</mat-icon>\r\n </button>\r\n </div>\r\n</div>\r\n","import { Component, Input, ViewChild, ElementRef, Output, HostBinding, ViewChildren, QueryList } from \"@angular/core\";\r\nimport { User, ChatMessage, CommentsOrder, FilterMode } from '@banta/common';\r\nimport { Subject, Subscription } from 'rxjs';\r\nimport { ChatBackendBase } from \"../../chat-backend-base\";\r\nimport { ChatSourceBase } from \"../../chat-source-base\";\r\nimport { MessageMenuItem } from \"../../message-menu-item\";\r\nimport { CommentComponent } from \"../comment/comment.component\";\r\n\r\nexport interface EditEvent {\r\n message: ChatMessage;\r\n newMessage: string;\r\n}\r\n\r\n@Component({\r\n selector: 'banta-comment-view',\r\n templateUrl: './comment-view.component.html',\r\n styleUrls: ['./comment-view.component.scss']\r\n})\r\nexport class CommentViewComponent {\r\n constructor(\r\n private backend: ChatBackendBase,\r\n private elementRef: ElementRef<HTMLElement>\r\n ) {\r\n }\r\n\r\n //#region Source\r\n\r\n private _source: ChatSourceBase;\r\n @Input() get source() { return this._source; }\r\n set source(value) { this.setSource(value); }\r\n\r\n //#endregion\r\n //#region Fields\r\n\r\n private _sourceSubs = new Subscription();\r\n menuMessage: ChatMessage = null;\r\n messages: ChatMessage[] = [];\r\n currentUser: User;\r\n customSortEnabled = false;\r\n markSourceLoaded: () => void;\r\n sourceLoaded = new Promise<void>(r => this.markSourceLoaded = r);\r\n isViewingMore = false;\r\n isLoadingMore = false;\r\n hasMore = false;\r\n messageClicked = false;\r\n\r\n get previousMessages() { return this.newestLast ? this.olderMessages : this.newMessages; }\r\n get nextMessages() { return this.newestLast ? this.newMessages : this.olderMessages; }\r\n\r\n /**\r\n * While this is called \"new\" messages, it really represents the messages that would be visible *at the beginning \r\n * of the sort order*, which can be flipped by the newestLast feature (used for replies mode). \r\n * \r\n * So, when newestLast is false, regardless of the current sortOrder, newMessages are conceptually \r\n * *above* the visible set of messages.\r\n * \r\n * When newestLast is true (as in replies mode), regardless of the current sortOrder, newMessages are conceptually \r\n * *below* the visible set of messages.\r\n */\r\n newMessages: ChatMessage[] = [];\r\n\r\n /**\r\n * While this is called \"older\" messages, it really represents the messages that would be visible *at the end of the \r\n * sort order*, which can be flipped by the newestLast feature (useds for replies mode).\r\n * \r\n * So, when newestLast is false, regardless of the current sortOrder, olderMessages are conceptually *below*\r\n * the visible set of messages.\r\n * \r\n * When newestLast is true (as in replies mode), regardless of the current sortOrder, olderMessages are conceptually\r\n * *above* the visible set of messages.\r\n */\r\n olderMessages: ChatMessage[] = [];\r\n\r\n //#endregion\r\n //#region Inputs\r\n\r\n @Input() maxMessages = 2000;\r\n @Input() maxVisibleMessages: number = 200;\r\n @Input() newestLast = false;\r\n @Input() holdNewMessages = false;\r\n @Input() showEmptyState = true;\r\n @Input() allowReplies = true;\r\n @Input() enableHoldOnClick = false;\r\n @Input() enableHoldOnScroll = true;\r\n @Input() customMenuItems: MessageMenuItem[] = [];\r\n @Input() @HostBinding('class.fixed-height') fixedHeight: boolean;\r\n @Input() selectedMessage: ChatMessage;\r\n @Input() genericAvatarUrl: string;\r\n \r\n //#endregion\r\n //#region Outputs\r\n\r\n private _selected = new Subject<ChatMessage>();\r\n private _liked = new Subject<ChatMessage>();\r\n private _unliked = new Subject<ChatMessage>();\r\n private _reported = new Subject<ChatMessage>();\r\n private _userSelected = new Subject<ChatMessage>();\r\n private _usernameSelected = new Subject<User>();\r\n private _avatarSelected = new Subject<User>();\r\n private _shared = new Subject<ChatMessage>();\r\n private _deleted = new Subject<ChatMessage>();\r\n private _messageEdited = new Subject<EditEvent>();\r\n private _sortOrderChanged = new Subject<CommentsOrder>();\r\n private _filterModeChanged = new Subject<FilterMode>();\r\n\r\n @Output() readonly userSelected = this._userSelected.asObservable();\r\n @Output() readonly reported = this._reported.asObservable();\r\n @Output() readonly liked = this._liked.asObservable();\r\n @Output() readonly unliked = this._unliked.asObservable();\r\n @Output() readonly usernameSelected = this._usernameSelected.asObservable();\r\n @Output() readonly avatarSelected = this._avatarSelected.asObservable();\r\n @Output() readonly shared = this._shared.asObservable();\r\n @Output() readonly deleted = this._deleted.asObservable();\r\n @Output() readonly selected = this._selected.asObservable();\r\n @Output() readonly messageEdited = this._messageEdited.asObservable();\r\n @Output() readonly sortOrderChanged = this._sortOrderChanged.asObservable();\r\n @Output() readonly filterModeChanged = this._filterModeChanged.asObservable();\r\n\r\n //#endregion \r\n //#region UI Bindings\r\n\r\n @ViewChildren(CommentComponent) commentsQuery: QueryList<CommentComponent>;\r\n @ViewChild('messageContainer') messageContainer: ElementRef<HTMLElement>;\r\n get comments() { return Array.from(this.commentsQuery); }\r\n\r\n //#endregion\r\n\r\n /**\r\n * Returns true if this message can be found within one of the message buffers (older, current, newer)\r\n * @param message \r\n */\r\n isMessageLoadedInContext(message: ChatMessage) {\r\n return this.olderMessages.find(x => x.id === message.id)\r\n || this.messages.find(x => x.id === message.id)\r\n || this.newMessages.find(x => x.id === message.id);\r\n }\r\n\r\n async loadMessageInContext(message: ChatMessage) {\r\n await this.sourceLoaded;\r\n \r\n console.log(`Loading message ${message.id} in context...`);\r\n while (this.hasMore && !this.isMessageLoadedInContext(message)) {\r\n console.log(`...Need to load more comments to find ${message.id}`);\r\n await this.showMore();\r\n }\r\n\r\n if (!this.isMessageLoadedInContext(message)) {\r\n console.error(`Error while loading message in context: Failed to find message ${message.id}, maybe it was deleted!`);\r\n return false;\r\n }\r\n\r\n let pageSize = this.maxVisibleMessages;\r\n let items = [].concat(this.olderMessages, this.messages, this.newMessages);\r\n let index = items.findIndex(x => x.id === message.id);\r\n\r\n if (index < 0) {\r\n console.error(`Error while loading message in context: Message was not present in message list!`);\r\n return false;\r\n }\r\n\r\n let startIndex = Math.max(0, index - pageSize / 2); \r\n this.newMessages = items.splice(0, startIndex);\r\n this.messages = items.splice(0, pageSize);\r\n this.olderMessages = items;\r\n this.isViewingMore = true;\r\n }\r\n\r\n get shouldShowNewMessageIndicator() {\r\n return this.isViewingMore \r\n || this.customSortEnabled \r\n || this.sourceFilterMode !== FilterMode.ALL\r\n || this.heldMessages.length > 0;\r\n }\r\n\r\n get shouldHoldNewMessages() {\r\n if (this.customSortEnabled)\r\n return true;\r\n if (this.holdNewMessages || this.isViewingMore) {\r\n console.log(`holding due to settings`);\r\n return true;\r\n }\r\n\r\n if (this.enableHoldOnClick && this.messageClicked)\r\n return true;\r\n\r\n if (this.enableHoldOnScroll) {\r\n let keyMessage: ChatMessage;\r\n\r\n if (this.newestLast)\r\n keyMessage = this.messages[this.messages.length - 1];\r\n else\r\n keyMessage = this.messages[0];\r\n \r\n if (keyMessage) {\r\n const messageElement = this.getElementForComment(keyMessage.id);\r\n if (messageElement) {\r\n if (!this.isElementVisible(messageElement)) {\r\n console.log(`key element is not visible`);\r\n return true;\r\n } else {\r\n console.log(`key element is visible`);\r\n }\r\n } else {\r\n console.log(`could not find key element`);\r\n }\r\n } else {\r\n console.log(`could not find key message`);\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n\r\n private isElementVisible(element: Element) {\r\n const elementRect = element.getBoundingClientRect();\r\n return !!elementRect \r\n && elementRect.bottom >= 0\r\n && elementRect.right >= 0\r\n && elementRect.left <= document.documentElement.clientWidth\r\n && elementRect.top <= document.documentElement.clientHeight;\r\n }\r\n\r\n /**\r\n * Get the CommentComponent instantiated for the given ChatMessage,\r\n * if it exists in the current view. Note that messages which are not \r\n * currently shown to the user will not return a CommentComponent.\r\n * @param message \r\n * @returns \r\n */\r\n getCommentComponentForMessage(message: ChatMessage) {\r\n if (!message)\r\n throw new Error(`You must pass a valid ChatMessage`);\r\n return this.comments.find(x => x.message?.id === message.id);\r\n }\r\n\r\n saveEdit(message: ChatMessage, newMessage: string) {\r\n this._messageEdited.next({ message, newMessage });\r\n }\r\n\r\n likeMessage(message: ChatMessage) {\r\n this._liked.next(message);\r\n }\r\n\r\n unlikeMessage(message: ChatMessage) {\r\n this._unliked.next(message);\r\n }\r\n\r\n reportMessage(message: ChatMessage) {\r\n this._reported.next(message);\r\n }\r\n\r\n selectMessage(message: ChatMessage) {\r\n this._selected.next(message);\r\n }\r\n\r\n selectMessageUser(message: ChatMessage) {\r\n this._userSelected.next(message);\r\n }\r\n\r\n selectUsername(user: User) {\r\n this._usernameSelected.next(user);\r\n }\r\n\r\n selectAvatar(user: User) {\r\n this._avatarSelected.next(user);\r\n }\r\n\r\n sharedMessage(message: ChatMessage) {\r\n this._shared.next(message);\r\n }\r\n\r\n startEditing(message: ChatMessage) {\r\n this.messages.forEach(m => m.transientState.editing = false);\r\n message.transientState.editing = true;\r\n }\r\n\r\n deleteMessage(message: ChatMessage) {\r\n this._deleted.next(message);\r\n }\r\n\r\n private setSource(value: ChatSourceBase) {\r\n this.customSortEnabled = (value?.sortOrder ?? CommentsOrder.NEWEST) !== CommentsOrder.NEWEST;\r\n this.newMessages = [];\r\n this.olderMessages = [];\r\n this.heldMessages = [];\r\n\r\n (window as any).bantaSourceDebug = value;\r\n\r\n if (this._sourceSubs) {\r\n this._sourceSubs.unsubscribe();\r\n this._sourceSubs = null;\r\n }\r\n this._source = value;\r\n\r\n if (value) {\r\n const messages = (value.messages || []).slice();\r\n this.messages = messages;\r\n this.olderMessages = messages.splice(this.maxVisibleMessages, messages.length);\r\n this.hasMore = true; //this.olderMessages.length > 0;\r\n\r\n this._sourceSubs = new Subscription();\r\n this._sourceSubs.add(this._source.messageReceived.subscribe(msg => this.messageReceived(msg)));\r\n this._sourceSubs.add(this._source.messageSent.subscribe(msg => this.messageSent(msg)));\r\n\r\n this._sourceSubs.add(\r\n this.backend.userChanged.subscribe(user => this.currentUser = user)\r\n );\r\n\r\n this.getInitialMessages();\r\n }\r\n }\r\n\r\n private async getInitialMessages() {\r\n let messages = (await this._source.getExistingMessages());\r\n messages.forEach(m => m.transientState ??= {});\r\n this.messages = this.newestLast ? messages.slice().reverse() : messages;\r\n\r\n if (this.messages.length > this.maxVisibleMessages) {\r\n if (this.newestLast) {\r\n this.previousMessages.push(...this.messages.splice(0, this.messages.length - this.maxVisibleMessages));\r\n } else {\r\n this.nextMessages.unshift(...this.messages.splice(this.maxVisibleMessages, this.messages.length));\r\n }\r\n }\r\n\r\n this.debugMessages();\r\n this.sortMessages();\r\n if (this.markSourceLoaded)\r\n this.markSourceLoaded();\r\n }\r\n\r\n debugMessages() {\r\n if (!this.showDebug)\r\n return;\r\n \r\n // console.log([ \r\n // ...this.previousMessages.map(x => x.message), \r\n // '[[',\r\n // ...this.messages.map(x => x.message),\r\n // ']]',\r\n // ...this.nextMessages.map(x => x.message) \r\n // ].map(x => /\\d+/.test(x) ? this.zeroPad(x, 2) : x).join(\" \"));\r\n }\r\n\r\n zeroPad(number: number | string, count: number = 2) {\r\n let str: string;\r\n \r\n if (typeof number === 'number')\r\n str = String(number);\r\n else\r\n str = number;\r\n \r\n while (str.length < count)\r\n str = '0' + str;\r\n \r\n return str;\r\n }\r\n leftPad(str: string, count: number = 2) {\r\n while (str.length < count)\r\n str = ' ' + str;\r\n \r\n return str;\r\n }\r\n \r\n messageIdentity(index: number, chatMessage: ChatMessage) {\r\n return chatMessage.id;\r\n }\r\n\r\n get sourceSortOrder() {\r\n return this.source?.sortOrder ?? CommentsOrder.NEWEST;\r\n }\r\n\r\n get sourceFilterMode() {\r\n return this.source?.filterMode ?? FilterMode.ALL;\r\n }\r\n\r\n /**\r\n * Show the newest content.\r\n * - If an unnatural sort order is active (ie Oldest or Likes), it will be changed to Newest.\r\n * - The new content will be placed where new content goes based on newestLast (replies mode), so if it is true, the content is \r\n * placed at the end, otherwise it is placed at the beginning.\r\n * \r\n * @param event \r\n * @returns \r\n */\r\n async showNewest(event: MouseEvent) {\r\n\r\n // Regardless of how we handle this, clear out our held messages\r\n\r\n this.heldMessages = [];\r\n this.messageClicked = false;\r\n\r\n // If the sort order is not already Newest, switch to Newest and stop.\r\n // The act of changing the sort order will cause the newest content to be loaded.\r\n\r\n let naturalOrder = CommentsOrder.NEWEST;\r\n if (this.sourceSortOrder !== naturalOrder || this.sourceFilterMode !== FilterMode.ALL) {\r\n if (this.sourceSortOrder !== naturalOrder)\r\n this._sortOrderChanged.next(naturalOrder);\r\n if (this.sourceFilterMode !== FilterMode.ALL)\r\n this._filterModeChanged.next(FilterMode.ALL);\r\n return;\r\n }\r\n\r\n // On this path, we are already on Newest, but there is newer content available (such as when new content is \r\n // being buffered due to user engagement on a comment)\r\n\r\n this.isViewingMore = false;\r\n\r\n // Move all newerMessages into messages, respecting the newestLast direction (normal or replies mode)\r\n\r\n if (this.newestLast)\r\n this.messages = this.messages.concat(this.newMessages.splice(0, this.newMessages.length));\r\n else\r\n this.messages = this.newMessages.splice(0, this.newMessages.length).concat(this.messages);\r\n\r\n let overflow = this.messages.splice(this.maxVisibleMessages, this.messages.length);\r\n this.olderMessages = overflow.concat(this.olderMessages);\r\n this.olderMessages.splice(this.maxMessages - this.maxVisibleMessages, this.olderMessages.length);\r\n this.hasMore = this.olderMessages.length > 0;\r\n\r\n // Scroll to the newest comment.\r\n \r\n if (this.messages.length > 0) {\r\n if (this.newestLast) {\r\n this.scrollToComment(this.messages[this.messages.length - 1].id);\r\n } else {\r\n this.scrollToComment(this.messages[0].id);\r\n }\r\n }\r\n }\r\n\r\n get showDebug() {\r\n if (typeof window === 'undefined')\r\n return false;\r\n\r\n return localStorage['banta:debug'] === '1';\r\n }\r\n\r\n get shouldShowNext() {\r\n if (!this.newestLast) {\r\n return this.hasMore || this.nextMessages.length > 0;\r\n }\r\n\r\n return this.nextMessages.length > 0;\r\n }\r\n\r\n get shouldShowPrevious() {\r\n if (this.newestLast) {\r\n return this.hasMore || this.previousMessages.length > 0;\r\n }\r\n\r\n return this.previousMessages.length > 0;\r\n }\r\n\r\n get pageSize() {\r\n return Math.min(20, this.maxVisibleMessages);\r\n }\r\n\r\n async showPrevious() {\r\n this.isViewingMore = true;\r\n let nextPageSize = this.pageSize;\r\n this.isLoadingMore = false;\r\n\r\n if (this.previousMessages.length > 0) {\r\n const storedMessages = this.previousMessages.splice(Math.max(0, this.previousMessages.length - nextPageSize), nextPageSize);\r\n this.messages = [...storedMessages, ...this.messages];\r\n nextPageSize -= storedMessages.length;\r\n }\r\n\r\n\r\n // Load more from backend if needed\r\n // Note: Backend only supports fetching more content in one direction.\r\n\r\n let lastMessage = this.previousMessages[0] ?? this.messages[0];\r\n\r\n if (nextPageSize > 0 && this.newestLast && lastMessage) {\r\n this.isLoadingMore = true;\r\n\r\n let messages = await this.source.loadAfter(lastMessage, nextPageSize);\r\n\r\n messages = messages.slice().reverse(); // because newestLast === true\r\n messages.forEach(m => m.transientState ??= {});\r\n\r\n // In replies mode (newestLast), we want to put these new messages onto the *top* of the set of visible messages.\r\n // Otherwise we want to put them on the *bottom*.\r\n\r\n this.messages = [...messages, ...this.messages];\r\n\r\n // If we didn't receive any messages at all, there's no more to fetch.\r\n\r\n if (messages.length === 0)\r\n this.hasMore = false;\r\n\r\n this.isLoadingMore = false;\r\n }\r\n \r\n // Extract the messages that do not fit in the maxVisibleMessages buffer.\r\n\r\n if (this.messages.length > this.maxVisibleMessages) {\r\n let overflow = this.messages.splice(this.maxVisibleMessages, this.messages.length);\r\n this.nextMessages.unshift(...overflow);\r\n if (this.nextMessages.length > this.maxMessages)\r\n this.nextMessages.splice(this.maxMessages, this.nextMessages.length);\r\n }\r\n\r\n this.debugMessages();\r\n }\r\n\r\n get sortNextLabel() {\r\n if (this.sourceSortOrder === 'newest') {\r\n return 'Older';\r\n } else if (this.sourceSortOrder === 'oldest') {\r\n return 'Newer';\r\n } else if (this.sourceSortOrder === 'likes') {\r\n return 'Less Likes';\r\n }\r\n\r\n return 'More';\r\n }\r\n\r\n get sortPreviousLabel() {\r\n if (this.sourceSortOrder === 'newest') {\r\n return 'Newer';\r\n } else if (this.sourceSortOrder === 'oldest') {\r\n return 'Older';\r\n } else if (this.sourceSortOrder === 'likes') {\r\n return 'More Likes';\r\n }\r\n\r\n return 'More';\r\n }\r\n\r\n get nextLabel() { return this.newestLast ? this.sortPreviousLabel : this.sortNextLabel; }\r\n get previousLabel() { return this.newestLast ? this.sortNextLabel : this.sortPreviousLabel; }\r\n\r\n /**\r\n * Show more content\r\n * - When in replies mode (newestLast), the content is added at the top\r\n * - When in normal mode, the content is added at the bottom\r\n * - The current sort order does *not* factor in here, which is why it is showMore() not showEarlier().\r\n * \r\n * @returns \r\n */\r\n async showNext() {\r\n this.isViewingMore = true;\r\n\r\n let nextPageSize = this.pageSize;\r\n\r\n this.isLoadingMore = false;\r\n\r\n if (this.nextMessages.length > 0) {\r\n const storedMessages = this.nextMessages.splice(0, nextPageSize);\r\n this.messages = [ ...this.messages, ...storedMessages ];\r\n nextPageSize -= storedMessages.length;\r\n }\r\n\r\n const lastMessage = this.olderMessages[this.olderMessages.length - 1] ?? this.messages[this.messages.length - 1];\r\n\r\n if (nextPageSize > 0 && !this.newestLast && lastMessage) {\r\n // Load more from backend\r\n\r\n this.isLoadingMore = true;\r\n\r\n let messages = await this.source.loadAfter(lastMessage, nextPageSize);\r\n messages.forEach(m => m.transientState ??= {});\r\n this.messages = [ ...this.messages, ...messages ];\r\n\r\n // If we didn't receive any messages at all, there's no more to fetch.\r\n\r\n if (messages.length === 0)\r\n this.hasMore = false;\r\n\r\n this.isLoadingMore = false;\r\n }\r\n\r\n // Extract the messages that do not fit in the maxVisibleMessages buffer.\r\n\r\n \r\n if (this.messages.length > this.maxVisibleMessages) {\r\n let overflow = this.messages.splice(0, this.messages.length - this.maxVisibleMessages);\r\n\r\n // Regardless of the order (newestLast), newMessages represents the direction that is being pushed, since it's definition\r\n // depends on that order. Move overflowing messages into newMessages.\r\n \r\n this.previousMessages.push(...overflow);\r\n if (this.previousMessages.length > this.maxMessages)\r\n this.previousMessages.splice(0, this.previousMessages.length - this.maxMessages);\r\n }\r\n\r\n this.debugMessages();\r\n }\r\n\r\n /**\r\n * Show more content\r\n * - When in replies mode (newestLast), the content is added at the top\r\n * - When in normal mode, the content is added at the bottom\r\n * - The current sort order does *not* factor in here, which is why it is showMore() not showEarlier().\r\n * \r\n * @returns \r\n */\r\n async showMore() {\r\n this.isViewingMore = true;\r\n\r\n let nextPageSize = this.pageSize;\r\n\r\n this.isLoadingMore = false;\r\n\r\n if (this.olderMessages.length > 0) {\r\n const storedMessages = this.olderMessages.splice(0, nextPageSize);\r\n this.messages = this.messages.concat(storedMessages);\r\n nextPageSize -= storedMessages.length;\r\n this.hasMore = this.olderMessages.length > 0;\r\n }\r\n\r\n let lastMessage: ChatMessage;\r\n\r\n if (this.newestLast) {\r\n lastMessage = this.olderMessages[0] ?? this.messages[0];\r\n } else {\r\n lastMessage = this.olderMessages[this.olderMessages.length - 1] ?? this.messages[this.messages.length - 1];\r\n }\r\n\r\n if (nextPageSize > 0 && lastMessage) {\r\n // Load more from backend\r\n\r\n this.isLoadingMore = true;\r\n\r\n\r\n if (!lastMessage) {\r\n this.isLoadingMore = false;\r\n this.hasMore = false;\r\n return;\r\n }\r\n\r\n let messages = await this.source.loadAfter(lastMessage, nextPageSize);\r\n\r\n if (this.newestLast)\r\n messages = messages.slice().reverse();\r\n \r\n messages.forEach(m => m.transientState ??= {});\r\n\r\n // In replies mode (newestLast), we want to put these new messages onto the *top* of the set of visible messages.\r\n // Otherwise we want to put them on the *bottom*.\r\n\r\n if (this.newestLast) {\r\n this.messages = messages.concat(this.messages);\r\n } else {\r\n this.messages = this.messages.concat(messages);\r\n }\r\n\r\n // If we didn't receive any messages at all, there's no more to fetch.\r\n\r\n if (messages.length === 0) {\r\n this.hasMore = false;\r\n }\r\n\r\n this.isLoadingMore = false;\r\n }\r\n\r\n // Extract the messages that do not fit in the maxVisibleMessages buffer.\r\n\r\n if (this.messages.length > this.maxVisibleMessages) {\r\n let overflow: ChatMessage[] = [];\r\n if (this.newestLast)\r\n overflow = this.messages.splice(this.maxVisibleMessages, this.messages.length);\r\n else\r\n overflow = this.messages.splice(0, this.messages.length - this.maxVisibleMessages);\r\n\r\n // Regardless of the order (newestLast), newMessages represents the direction that is being pushed, since it's definition\r\n // depends on that order. Move overflowing messages into newMessages.\r\n \r\n this.newMessages = overflow.concat(this.newMessages);\r\n this.newMessages.splice(this.maxMessages - this.maxVisibleMessages, this.newMessages.length);\r\n }\r\n }\r\n\r\n private heldMessages: ChatMessage[] = [];\r\n\r\n private addMessage(message: ChatMessage) {\r\n\r\n if (!message.transientState)\r\n message.transientState ??= {};\r\n \r\n let destination = this.messages;\r\n let bucket = this.olderMessages;\r\n let newestLast = this.newestLast;\r\n\r\n if (this.shouldHoldNewMessages) {\r\n this.heldMessages.push(message);\r\n destination = this.newMessages;\r\n bucket = null;\r\n }\r\n\r\n // If we aren't on the newest sort order, new messages shouldn't be added at all\r\n if (this.sourceSortOrder !== CommentsOrder.NEWEST)\r\n return;\r\n\r\n \r\n if (newestLast) {\r\n destination.push(message);\r\n\r\n if (this.maxVisibleMessages > 0) {\r\n let overflow = destination.splice(this.maxVisibleMessages, destination.length);\r\n bucket?.push(...overflow);\r\n }\r\n } else {\r\n destination.unshift(message);\r\n \r\n if (this.maxVisibleMessages > 0) {\r\n let overflow = destination.splice(this.maxVisibleMessages, destination.length);\r\n bucket?.unshift(...overflow);\r\n }\r\n }\r\n\r\n if (bucket?.length > 0)\r\n this.hasMore = true;\r\n\r\n message.pagingCursor = String(this.incrementPagingCursors());\r\n this.sortMessages();\r\n }\r\n\r\n private incrementPagingCursors() {\r\n if (this.source.sortOrder !== CommentsOrder.NEWEST)\r\n return;\r\n \r\n let maxPagingCursor = 0;\r\n for (let group of [this.messages, this.olderMessages, this.newMessages]) {\r\n for (let message of group) {\r\n if (message.pagingCursor) {\r\n let pagingCursor = Number(message.pagingCursor) + 1;\r\n if (pagingCursor > maxPagingCursor)\r\n maxPagingCursor = pagingCursor;\r\n message.pagingCursor = String(pagingCursor);\r\n }\r\n }\r\n }\r\n\r\n return maxPagingCursor;\r\n }\r\n\r\n /**\r\n * Wait for all currently visible comments to be fully loaded, including all attachments.\r\n * Doing this will prevent layout shift when scrolling to a specific comment.\r\n */\r\n async waitForAllCommentsToLoad() {\r\n await new Promise(r => setTimeout(r, 100));\r\n await this.sourceLoaded;\r\n await Promise.all(this.comments.map(x => x.waitForLoad()));\r\n }\r\n\r\n private sortMessages() {\r\n if (!this.source)\r\n return;\r\n \r\n let sorter: (a: ChatMessage, b: ChatMessage) => number;\r\n\r\n if (this.source.sortOrder === CommentsOrder.LIKES)\r\n sorter = (a, b) => b.likes - a.likes;\r\n else if (this.source.sortOrder === CommentsOrder.NEWEST)\r\n sorter = (a, b) => (b.sentAt - a.sentAt) * (this.newestLast ? -1 : 1);\r\n else if (this.source.sortOrder === CommentsOrder.OLDEST)\r\n sorter = (a, b) => (a.sentAt - b.sentAt) * (this.newestLast ? -1 : 1);\r\n\r\n this.messages.sort(sorter);\r\n this.olderMessages.sort(sorter);\r\n this.newMessages.sort(sorter);\r\n }\r\n\r\n private messageReceived(message: ChatMessage) {\r\n this.addMessage(message);\r\n }\r\n\r\n isScrolledToLatest() {\r\n if (!this.messageContainer)\r\n return false;\r\n\r\n const el = this.messageContainer.nativeElement;\r\n const currentScroll = el.scrollTop;\r\n const currentTotal = el.scrollHeight - el.offsetHeight;\r\n\r\n return currentScroll > currentTotal - 10;\r\n }\r\n\r\n private messageSent(message: ChatMessage) {\r\n this.addMessage(message);\r\n\r\n if (!this.messageContainer)\r\n return;\r\n\r\n this.scrollToLatest();\r\n }\r\n\r\n scrollToLatest() {\r\n if (!this.messageContainer) {\r\n return;\r\n }\r\n\r\n const el = this.messageContainer.nativeElement;\r\n\r\n el.scrollIntoView({ block: 'start' });\r\n //el.scrollTop = el.scrollHeight;\r\n }\r\n\r\n get element() {\r\n return this.elementRef.nativeElement;\r\n }\r\n\r\n async scrollToComment(commentId: ChatMessage['id']) {\r\n if (typeof window === 'undefined')\r\n return;\r\n \r\n await this.waitForAllCommentsToLoad();\r\n\r\n const comment = this.getElementForComment(commentId);\r\n if (comment) {\r\n comment.scrollIntoView({\r\n inline: 'center',\r\n block: 'center'\r\n });\r\n }\r\n }\r\n\r\n getElementForComment(commentId: string) {\r\n return this.element.querySelector(`[data-comment-id=\"${commentId}\"]`);\r\n }\r\n\r\n mentionsMe(message: ChatMessage) {\r\n if (!this.currentUser)\r\n return false;\r\n\r\n if (message.message.includes(`@${this.currentUser.username}`))\r\n return true;\r\n\r\n return false;\r\n }\r\n}\r\n","<div class=\"banta-message-container\" #messageContainer>\r\n <ng-content select=\"[data-before]\"></ng-content>\r\n\r\n <div class=\"banta-top-sticky\">\r\n @if (!newestLast) {\r\n <button \r\n mat-button \r\n class=\"banta-nav\" \r\n [class.visible]=\"shouldShowNewMessageIndicator\" \r\n href=\"javascript:;\" \r\n (click)=\"showNewest($event)\"\r\n >\r\n <mat-icon>file_upload</mat-icon>\r\n Newest\r\n @if (heldMessages.length > 0) {\r\n <span class=\"count\">{{ heldMessages.length | number }}</span>\r\n }\r\n </button>\r\n }\r\n </div>\r\n\r\n <button mat-button class=\"pager\" (click)=\"showPrevious()\" [class.visible]=\"shouldShowPrevious\" [disabled]=\"isLoadingMore\">\r\n <mat-icon>expand_less</mat-icon>\r\n {{ previousLabel }}\r\n </button>\r\n\r\n @for (message of messages; track message.id) {\r\n @if (!message.hidden) {\r\n <banta-comment\r\n class=\"abbreviated\"\r\n \r\n [customMenuItems]=\"customMenuItems\"\r\n [message]=\"message\"\r\n [mine]=\"currentUser?.id === message.user?.id\"\r\n [permissions]=\"source?.permissions\"\r\n [showReplyAction]=\"allowReplies\"\r\n [editing]=\"message.transientState.editing\"\r\n [genericAvatarUrl]=\"genericAvatarUrl\"\r\n [readonly]=\"source?.readonly\"\r\n (click)=\"messageClicked = true\"\r\n (editStarted)=\"startEditing(message)\"\r\n (deleted)=\"deleteMessage(message)\"\r\n (editEnded)=\"message.transientState.editing = false\"\r\n (edited)=\"saveEdit(message, $event)\"\r\n (userSelected)=\"selectMessageUser(message)\"\r\n (avatarSelected)=\"selectAvatar($event)\"\r\n (usernameSelected)=\"selectUsername($event)\"\r\n (liked)=\"likeMessage(message)\"\r\n (unliked)=\"unlikeMessage(message)\"\r\n (reported)=\"reportMessage(message)\"\r\n (selected)=\"selectMessage(message)\"\r\n (shared)=\"sharedMessage($event)\"\r\n />\r\n <div class=\"banta-inline-replies-container\" *ngIf=\"selectedMessage === message\">\r\n <ng-content select=\".inline-replies\"></ng-content>\r\n </div>\r\n }\r\n } @empty {\r\n <div class=\"banta-empty-state\" *ngIf=\"showEmptyState\">\r\n Be the first to comment!\r\n </div>\r\n }\r\n\r\n <button mat-button class=\"pager\" (click)=\"showNext()\" [class.visible]=\"shouldShowNext\" [disabled]=\"isLoadingMore\">\r\n <mat-icon>expand_more</mat-icon>\r\n {{ nextLabel }}\r\n </button>\r\n\r\n <div class=\"banta-nav-point banta-bottom-sticky\">\r\n @if (newestLast) {\r\n <button \r\n [matBadge]=\"10\" matBadgeOverlap=\"false\"\r\n matBadgePosition=\"after\" matBadgeSize=\"large\" \r\n mat-button \r\n class=\"banta-nav\" \r\n [class.visible]=\"shouldShowNewMessageIndicator\" \r\n href=\"javascript:;\" \r\n (click)=\"showNewest($event)\"\r\n >\r\n <mat-icon>file_download</mat-icon>\r\n Newest\r\n @if (heldMessages.length > 0) {\r\n <span class=\"count\">{{ heldMessages.length | number }}</span>\r\n }\r\n </button>\r\n }\r\n </div>\r\n\r\n <div class=\"banta-loading-more\" *ngIf=\"isLoadingMore\">\r\n <mat-spinner></mat-spinner>\r\n </div>\r\n\r\n @if (showDebug) {\r\n <div style=\"color: #666\">\r\n ({{ previousMessages.length }} .. {{ messages.length }} .. {{ nextMessages.length }})\r\n\r\n dir={{newestLast ? '-1' : '1'}}\r\n v={{maxVisibleMessages}}, M={{maxMessages}}\r\n </div>\r\n }\r\n\r\n <ng-content select=\":not([data-before]):not(.inline-replies)\"></ng-content>\r\n</div>\r\n","import { Directive } from \"@angular/core\";\r\n\r\n@Directive({\r\n selector: `[bantaReplySendOptions]`\r\n})\r\nexport class BantaReplySendOptionsDirective {}","import { Component, ElementRef, Input, Output, ViewChild } from '@angular/core';\r\nimport { CDNProvider, ChatMessageAttachment } from '@banta/common';\r\nimport { Subject } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'banta-attachment-button',\r\n templateUrl: './attachment-button.component.html',\r\n styleUrls: ['./attachment-button.component.scss']\r\n})\r\nexport class AttachmentButtonComponent {\r\n constructor(\r\n private cdnProvider: CDNProvider,\r\n ) {\r\n }\r\n\r\n //#region Properties\r\n\r\n private _addedAttachment = new Subject<ChatMessageAttachment>();\r\n private _attachmentError = new Subject<ChatMessageAttachment>();\r\n\r\n //#endregion\r\n //#region Inputs\r\n\r\n @Input() disabled = false;\r\n\r\n //#endregion\r\n //#region Outputs\r\n\r\n @Output() get addedAttachment() { return this._addedAttachment.asObservable(); }\r\n @Output() get attachmentError() { return this._attachmentError.asObservable(); }\r\n\r\n //#endregion\r\n //#region UI Bindings\r\n\r\n @ViewChild('fileUpload', { static: false }) fileInput: ElementRef<HTMLInputElement>;\r\n\r\n //#endregion\r\n\r\n show() { this.fileInput.nativeElement.click(); }\r\n\r\n async fileChange(event: Event): Promise<void> {\r\n const element = (event.currentTarget as HTMLInputElement);\r\n if (element.files.length) {\r\n const file = element.files[0];\r\n let publicURL: string;\r\n\r\n let attachment: ChatMessageAttachment = {\r\n type: file.type,\r\n url: undefined,\r\n transientState: {\r\n uploading: true,\r\n error: false,\r\n errorMessage: undefined\r\n }\r\n }\r\n\r\n this._addedAttachment.next(attachment);\r\n\r\n try {\r\n publicURL = await this.cdnProvider.uploadImage(file);\r\n } catch (e) {\r\n attachment.transientState.error = true;\r\n attachment.transientState.errorMessage = \"Failed to upload\";\r\n\r\n console.error(`[Banta] Caught an error while uploading image to CDN:`);\r\n console.error(e);\r\n alert(e.message);\r\n\r\n this._attachmentError.next(attachment);\r\n return;\r\n }\r\n\r\n // If no URL was returned, then an error must have occurred. Presumably the CDN\r\n // provider has conveyed an error to the user.\r\n if (!publicURL)\r\n return;\r\n\r\n attachment.url = publicURL;\r\n attachment.transientState = undefined;\r\n }\r\n }\r\n}","<button matTooltip=\"Add an image or gif\" #button type=\"button\" mat-icon-button (click)=\"show()\" [disabled]=\"disabled\">\r\n\t<mat-icon>image</mat-icon>\r\n</button>\r\n<input style=\"display: none;\" #fileUpload [multiple]=\"false\" (change)=\"fileChange($event)\" type=\"file\" >","import { Directive, ElementRef, Input, Output } from \"@angular/core\";\r\nimport { ChatMessage, ChatMessageAttachment } from \"@banta/common\";\r\nimport { Subject } from \"rxjs\";\r\nimport { AttachmentFragment } from \"../attachment-scraper\";\r\nimport { ChatBackendBase } from \"../chat-backend-base\";\r\n\r\ninterface AttachmentFragmentState {\r\n fragment: AttachmentFragment;\r\n resolution: Promise<ChatMessageAttachment>;\r\n}\r\n\r\n@Directive({\r\n selector: '[attachmentScraper]'\r\n})\r\nexport class AttachmentScraperDirective {\r\n constructor(\r\n private elementRef: ElementRef<HTMLTextAreaElement>,\r\n private chatBackend: ChatBackendBase\r\n ) {\r\n }\r\n\r\n @Input() attachments: ChatMessageAttachment[] = [];\r\n @Output() attachmentsChange = new Subject<ChatMessageAttachment[]>();\r\n ngOnInit() {\r\n if (typeof window === 'undefined')\r\n return;\r\n \r\n this.element.addEventListener('keydown', () => {\r\n clearTimeout(this.scrapeTimeout);\r\n this.scrapeTimeout = setTimeout(() => this.scrape(), this.scrapeDebounce);\r\n });\r\n }\r\n\r\n get element() {\r\n return this.elementRef?.nativeElement;\r\n }\r\n\r\n get text() {\r\n return this.element.value;\r\n }\r\n\r\n\r\n private scrapeTimeout;\r\n private scrapeDebounce = 1500;\r\n private fragments = new Map<string, AttachmentFragmentState>();\r\n private scrape() {\r\n let message: ChatMessage = {\r\n likes: 0,\r\n message: this.text,\r\n sentAt: undefined,\r\n user: null,\r\n attachments: this.attachments\r\n };\r\n\r\n let foundFragments: string[] = [];\r\n\r\n for (let scraper of this.chatBackend.attachmentScrapers) {\r\n let fragments = scraper.findFragments(message);\r\n if (!fragments) {\r\n console.error(`Attachment fragment scraper ${scraper.constructor.name} is implemented incorrectly: Returned null instead of array`);\r\n continue;\r\n }\r\n for (let fragment of fragments) {\r\n foundFragments.push(fragment.text);\r\n if (!this.fragments.has(fragment.text)) {\r\n this.fragments.set(fragment.text, {\r\n fragment,\r\n resolution: undefined\r\n });\r\n }\r\n }\r\n }\r\n\r\n // Remove fragments that are no longer in the message.\r\n let removedFragments: string[] = [];\r\n for (let [key] of this.fragments) {\r\n if (!foundFragments.includes(key))\r\n removedFragments.push(key);\r\n }\r\n for (let removedFragment of removedFragments) {\r\n this.fragments.delete(removedFragment);\r\n }\r\n\r\n // Process any fragments that are not yet resolved (or being \r\n // resolved)\r\n\r\n for (let [key, state] of this.fragments) {\r\n if (state.resolution)\r\n continue;\r\n\r\n state.resolution = new Promise(async (resolve, reject) => {\r\n for (let resolver of this.chatBackend.attachmentResolvers) {\r\n try {\r\n let attachment = await resolver.resolveFragment(message, state.fragment);\r\n if (attachment) {\r\n console.dir(attachment);\r\n this.attachments.push(attachment);\r\n this.attachmentsChange.next(this.attachments.slice());\r\n resolve(attachment);\r\n break;\r\n }\r\n } catch (e) {\r\n console.error(`Caught error during attachment resolver ${resolver.constructor.name}:`);\r\n console.error(e);\r\n continue;\r\n }\r\n }\r\n });\r\n }\r\n }\r\n\r\n}","import { Component, ElementRef, HostBinding, Input, Output, ViewChild } from \"@angular/core\";\r\nimport { ChatMessage, ChatMessageAttachment, User } from \"@banta/common\";\r\nimport { Subject, Subscription } from \"rxjs\";\r\nimport { ChatSourceBase } from \"../../chat-source-base\";\r\nimport { AttachmentFragment } from \"../../attachment-scraper\";\r\nimport { EMOJIS } from \"../../emoji\";\r\nimport { SignInState } from \"../../chat-source\";\r\n\r\nexport interface AutoCompleteOption {\r\n label : string;\r\n action? : () => void;\r\n}\r\n\r\nexport interface HashTag {\r\n hashtag : string;\r\n description : string;\r\n}\r\n\r\ninterface AttachmentFragmentState {\r\n fragment: AttachmentFragment;\r\n resolution: Promise<ChatMessageAttachment>;\r\n}\r\n\r\n@Component({\r\n selector: 'banta-comment-field',\r\n templateUrl: './comment-field.component.html',\r\n styleUrls: ['./comment-field.component.scss']\r\n})\r\nexport class CommentFieldComponent {\r\n ngAfterViewInit() {\r\n if (typeof window !== 'undefined') {\r\n let root = document.body.querySelector('[ng-version]') || document.body;\r\n root.appendChild(this.autocompleteEl.nativeElement);\r\n }\r\n }\r\n\r\n //#region Source\r\n\r\n private _source : ChatSourceBase;\r\n @Input() get source() : ChatSourceBase { return this._source; }\r\n set source(value) { this.setSource(value); }\r\n\r\n //#endregion\r\n //#region Properties\r\n\r\n private _permissionDeniedError = new Subject<string>();\r\n private errorTimeout;\r\n private _subs = new Subscription();\r\n\r\n sending = false;\r\n sendError : Error;\r\n expandError = false;\r\n autocompleteVisible = false;\r\n autocompleteOptions : AutoCompleteOption[] = [];\r\n completionFunc : (str : string) => AutoCompleteOption[];\r\n completionPrefix : string;\r\n autoCompleteSelected : number = 0;\r\n text: string = '';\r\n chatMessageAttachments: ChatMessageAttachment[] = [];\r\n\r\n //#endregion\r\n //#region Inputs\r\n\r\n @Input() user : User;\r\n @Input() @HostBinding('class.can-comment') canComment = true;\r\n @Input() signInState: SignInState;\r\n @Input() allowAttachments = false;\r\n @Input() transientMessage: string;\r\n @Input() sendLabel = 'Send';\r\n @Input() signingInLabel = 'Signing in...';\r\n @Input() sendingLabel = 'Sending';\r\n @Input() label = 'Post a comment';\r\n @Input() permissionDeniedLabel = 'Unavailable';\r\n @Input() signInLabel = 'Sign In';\r\n @Input() maxLength = 1500;\r\n @Input() placeholder = '';\r\n @Input() shouldInterceptMessageSend?: (message: ChatMessage, source: ChatSourceBase) => boolean | Promise<boolean>;\r\n @Input() hashtags : HashTag[];\r\n @Input() participants : User[] = [];\r\n @Input() genericAvatarUrl: string;\r\n @Input() url: string;\r\n @Input() submit: (message: ChatMessage) => boolean;\r\n @Input() readonly = false;\r\n\r\n //#endregion\r\n //#region Outputs\r\n\r\n @Output() signInSelected = new Subject<void>();\r\n @Output() editAvatarSelected = new Subject<void>();\r\n @Output() focusChange = new Subject<boolean>();\r\n @Output() textChanged = new Subject<void>();\r\n @Output() get permissionDeniedError() { return this._permissionDeniedError; }\r\n \r\n //#endregion\r\n //#region UI Bindings\r\n\r\n @ViewChild('autocomplete') autocompleteEl : ElementRef<HTMLElement>;\r\n @ViewChild('autocompleteContainer') autocompleteContainerEl : ElementRef<HTMLElement>;\r\n @ViewChild('textarea') textareaEl : ElementRef<HTMLTextAreaElement>;\r\n\r\n get indicatorState() {\r\n if (this.transientMessage) {\r\n return 'transient';\r\n } else if (this.sending) {\r\n return 'sending';\r\n } else if (this.sendError) {\r\n return 'error';\r\n } else {\r\n return 'none';\r\n }\r\n }\r\n\r\n get buttonState() {\r\n if (this.sending)\r\n return 'sending';\r\n else if (this.signInState === 'signing-in')\r\n return 'signing-in';\r\n else if (!this.canComment)\r\n return 'permission-denied';\r\n else\r\n return 'send';\r\n }\r\n\r\n get sendButtonEnabled() {\r\n if (this.readonly)\r\n return false;\r\n \r\n if (this.signInState === 'signing-in')\r\n return false;\r\n \r\n if (!['connected', 'restored'].includes(this.source?.state ?? 'connected'))\r\n return false;\r\n \r\n if (!this.canComment) {\r\n // In this case, we want to enable the button because we want to be able to \r\n // send the permissionDenied message up to the host.\r\n return true;\r\n }\r\n\r\n return this.isValidMessage\r\n && !this.hasPendingAttachments\r\n && !this.sending\r\n ;\r\n }\r\n\r\n get userAvatarUrl() { return this.user?.avatarUrl || this.genericAvatarUrl; }\r\n get isValidMessage() { return (this.text || this.chatMessageAttachments.length > 0); }\r\n get hasPendingAttachments() { return this.chatMessageAttachments.some(x => x.transientState); }\r\n\r\n //#endregion\r\n //#region Private Component API\r\n\r\n private setSource(value: ChatSourceBase) {\r\n if (this._source) {\r\n this._subs?.unsubscribe();\r\n this._source = null;\r\n }\r\n\r\n this._source = value;\r\n this._subs = new Subscription();\r\n if (this._source) {\r\n setTimeout(() => {\r\n if (this._source.connectionStateChanged) {\r\n this._subs.add(this._source.connectionStateChanged.subscribe(state => {\r\n if (state === 'lost') {\r\n if (this._source.errorState === 'server-issue')\r\n this.transientMessage = `Reconnecting..`;\r\n else\r\n this.transientMessage = `Reconnecting...`;\r\n } else if (state === 'restored') {\r\n this.transientMessage = undefined;\r\n } else if (state === 'connecting') {\r\n this.transientMessage = `Connecting...`;\r\n }\r\n }));\r\n }\r\n });\r\n }\r\n }\r\n\r\n //#endregion\r\n //#region Actions\r\n\r\n sendPermissionDenied(message: string) { this._permissionDeniedError.next(message); }\r\n activateAutoComplete(option : AutoCompleteOption) { option.action(); this.dismissAutoComplete(); }\r\n onFocus() { this.focusChange.next(true); }\r\n onBlur() { this.focusChange.next(false); setTimeout(() => this.dismissAutoComplete(), 250); }\r\n showSignIn() { this.signInSelected.next(); }\r\n showEditAvatar() { this.editAvatarSelected.next(); }\r\n insertEmoji(text : string) { this.text += text; }\r\n\r\n showAutoComplete(options : AutoCompleteOption[]) {\r\n if (typeof window === 'undefined')\r\n return;\r\n \r\n this.autoCompleteSelected = 0;\r\n this.autocompleteOptions = options;\r\n let pos = this.autocompleteContainerEl.nativeElement.getBoundingClientRect();\r\n let size = this.autocompleteEl.nativeElement.getBoundingClientRect();\r\n\r\n this.autocompleteEl.nativeElement.style.left = `${window.scrollX + pos.left}px`;\r\n this.autocompleteEl.nativeElement.style.top = `${window.scrollY + pos.top}px`;\r\n this.autocompleteEl.nativeElement.style.width = `${pos.width}px`;\r\n this.autocompleteVisible = true;\r\n }\r\n\r\n dismissAutoComplete() {\r\n this.autocompleteVisible = false;\r\n this.completionFunc = null;\r\n this.completionPrefix = '';\r\n }\r\n\r\n indicateError(message : string) {\r\n this.sendError = new Error(message);\r\n this.expandError = false;\r\n clearTimeout(this.errorTimeout);\r\n this.errorTimeout = setTimeout(() => {\r\n this.expandError = true;\r\n this.errorTimeout = setTimeout(() => {\r\n this.expandError = false;\r\n }, 5*1000);\r\n }, 100);\r\n\r\n // On mobile, just show an alert dialog\r\n if (typeof window !== 'undefined' && window.innerWidth < 430)\r\n alert(message);\r\n }\r\n\r\n async autocomplete(replacement : string) {\r\n let el = this.textareaEl.nativeElement;\r\n this.text = this.text.slice(0, el.selectionStart - this.completionPrefix.length) + replacement + this.text.slice(el.selectionStart);\r\n }\r\n\r\n async insert(str : string) {\r\n let el = this.textareaEl.nativeElement;\r\n this.text = this.text.slice(0, el.selectionStart) + str + this.text.slice(el.selectionStart);\r\n }\r\n\r\n async onKeyDown(event : KeyboardEvent) {\r\n if (this.autocompleteVisible) {\r\n if (event.key === 'Escape') {\r\n this.dismissAutoComplete();\r\n return;\r\n }\r\n\r\n if (event.key === 'Shift') {\r\n return;\r\n }\r\n\r\n if (event.key === 'Enter') {\r\n if (this.autocompleteOptions[this.autoCompleteSelected]) {\r\n this.activateAutoComplete(this.autocompleteOptions[this.autoCompleteSelected]);\r\n event.stopPropagation();\r\n event.preventDefault();\r\n return;\r\n }\r\n }\r\n\r\n if (event.key === 'ArrowUp') {\r\n if (this.autoCompleteSelected === 0)\r\n this.autoCompleteSelected = this.autocompleteOptions.length - 1;\r\n else\r\n this.autoCompleteSelected = this.autoCompleteSelected - 1;\r\n event.stopPropagation();\r\n event.preventDefault();\r\n return;\r\n } else if (event.key === 'ArrowDown') {\r\n this.autoCompleteSelected = (this.autoCompleteSelected + 1) % this.autocompleteOptions.length;\r\n event.stopPropagation();\r\n event.preventDefault();\r\n return;\r\n }\r\n }\r\n\r\n if (event.key === 'Enter' && event.ctrlKey) {\r\n await this.sendMessage();\r\n return;\r\n }\r\n\r\n if (this.completionFunc) {\r\n if (event.key === 'Backspace') {\r\n this.completionPrefix = this.completionPrefix.slice(0, this.completionPrefix.length - 1);\r\n\r\n if (this.completionPrefix === '') {\r\n this.dismissAutoComplete();\r\n return;\r\n }\r\n } else if (event.key === ' ' || event.key.length > 1) {\r\n this.dismissAutoComplete();\r\n return;\r\n } else {\r\n this.completionPrefix += event.key;\r\n }\r\n\r\n this.showAutoComplete(this.completionFunc(this.completionPrefix));\r\n } else {\r\n if (event.key === ':') {\r\n this.startAutoComplete(event, prefix => {\r\n prefix = prefix.slice(1);\r\n\r\n // makes :-), :-( etc work (as they are \":)\" etc in the db)\r\n if (prefix.startsWith('-'))\r\n prefix = prefix.slice(1);\r\n\r\n return Object.keys(EMOJIS)\r\n .filter(k => k.includes(prefix) || EMOJIS[k].keywords.some(kw => kw.includes(prefix)))\r\n .map(k => ({\r\n label: `${EMOJIS[k].char} ${k}`,\r\n action: () => this.autocomplete(EMOJIS[k].char)\r\n }))\r\n .slice(0, 5)\r\n ;\r\n });\r\n } else if (event.key === '@') {\r\n this.startAutoComplete(event, prefix => {\r\n prefix = prefix.slice(1);\r\n return this.participants.filter(x => x.username.includes(prefix))\r\n .map(p => ({\r\n label: `@${p.username} -- ${p.displayName}`,\r\n action: () => this.autocomplete(`@${p.username}`)\r\n }))\r\n ;\r\n });\r\n } else if (event.key === '#') {\r\n this.startAutoComplete(event, prefix => {\r\n prefix = prefix.slice(1);\r\n\r\n return this.hashtags\r\n .filter(ht => ht.hashtag.includes(prefix))\r\n .map(ht => ({\r\n label: `#${ht.hashtag}${ht.description ? ` -- ${ht.description}` : ``}`,\r\n action: () => this.autocomplete(`#${ht.hashtag}`)\r\n }))\r\n .slice(0, 5)\r\n ;\r\n });\r\n }\r\n }\r\n }\r\n\r\n startAutoComplete(event : KeyboardEvent, completionFunc : (str : string) => AutoCompleteOption[]) {\r\n this.completionPrefix = event.key;\r\n this.completionFunc = completionFunc;\r\n this.showAutoComplete(this.completionFunc(this.completionPrefix));\r\n }\r\n\r\n async sendMessage() {\r\n if (!this.source)\r\n return;\r\n\r\n this.sending = true;\r\n this.sendError = null;\r\n try {\r\n let text = (this.text || '').trim();\r\n\r\n if (this.canComment && !this.isValidMessage)\r\n return;\r\n\r\n let message : ChatMessage = {\r\n user: this.user,\r\n sentAt: Date.now(),\r\n url: this.url ?? (typeof window !== 'undefined' ? location.href : undefined),\r\n likes: 0,\r\n message: text,\r\n attachments: this.chatMessageAttachments.filter(x => x.url)\r\n };\r\n\r\n try {\r\n await this.submit(message);\r\n this.text = '';\r\n this.chatMessageAttachments = [];\r\n } catch (e) {\r\n console.error(`[Banta/CommentField] sendMessage() failed: ${e.message}`);\r\n await new Promise<void>(resolve => setTimeout(() => resolve(), 1000));\r\n this.indicateError(e.message);\r\n }\r\n\r\n } finally {\r\n this.sending = false;\r\n setTimeout(() => {\r\n this.textareaEl.nativeElement.focus();\r\n }, 100);\r\n }\r\n }\r\n\r\n addedAttachment(attachment: ChatMessageAttachment) { this.chatMessageAttachments.push(attachment); }\r\n\r\n attachmentError(attachment: ChatMessageAttachment) {\r\n setTimeout(() => {\r\n this.chatMessageAttachments = this.chatMessageAttachments.filter(x => x !== attachment);\r\n }, 3000);\r\n }\r\n\r\n\tremoveAttachment(attachment: ChatMessageAttachment) {\r\n let index = this.chatMessageAttachments.indexOf(attachment);\r\n if (index >= 0)\r\n\t\t this.chatMessageAttachments.splice(index, 1);\r\n\t}\r\n\r\n alertError() {\r\n if (!this.sendError)\r\n return;\r\n alert(this.sendError.message);\r\n }\r\n}\r\n","<form class=\"new-message\" (submit)=\"sendMessage()\">\r\n <div class=\"banta-avatar-container\">\r\n <a href=\"javascript:;\"\r\n class=\"banta-avatar\"\r\n (click)=\"showEditAvatar()\"\r\n [style.background-image]=\"'url(' + userAvatarUrl + ')'\"\r\n ></a>\r\n </div>\r\n <div class=\"banta-text-container\">\r\n <div class=\"banta-field-container\">\r\n <div class=\"banta-field-row\">\r\n <mat-form-field class=\"message-field\" appearance=\"outline\" floatLabel=\"always\">\r\n <mat-label>{{label}}</mat-label>\r\n <textarea\r\n #textarea\r\n name=\"message\"\r\n attachmentScraper\r\n [(attachments)]=\"chatMessageAttachments\"\r\n [placeholder]=\"placeholder\"\r\n matInput\r\n cdkTextareaAutosize\r\n [maxlength]=\"maxLength\"\r\n (keydown)=\"onKeyDown($event)\"\r\n (focus)=\"onFocus()\"\r\n (blur)=\"onBlur()\"\r\n [disabled]=\"sending || readonly\"\r\n [(ngModel)]=\"text\"\r\n autocomplete=\"off\"\r\n ></textarea>\r\n </mat-form-field>\r\n <div class=\"banta-options-line\">\r\n <ng-container *ngIf=\"indicatorState === 'transient'\">\r\n <div class=\"transient-message\" [class.expanded]=\"true\" [matTooltip]=\"transientMessage\" (click)=\"alertError()\">\r\n <mat-spinner [inline]=\"true\" [diameter]=\"15\"></mat-spinner>\r\n {{transientMessage}}\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"indicatorState === 'sending'\">\r\n <div class=\"banta-transient-message\" [class.expanded]=\"true\" (click)=\"alertError()\">\r\n <mat-spinner [inline]=\"true\" [diameter]=\"15\"></mat-spinner>\r\n {{sendingLabel}}...\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"indicatorState === 'error'\">\r\n <div class=\"banta-error-message\" [class.expanded]=\"expandError\" [matTooltip]=\"sendError.message\" (click)=\"alertError()\">\r\n <mat-icon *ngIf=\"sendError\">error</mat-icon>\r\n {{sendError.message}}\r\n </div>\r\n </ng-container>\r\n\r\n\r\n <div class=\"spacer\"></div>\r\n <div class=\"custom\">\r\n <ng-content></ng-content>\r\n </div>\r\n <banta-attachment-button \r\n *ngIf=\"allowAttachments\"\r\n [disabled]=\"readonly\"\r\n (addedAttachment)=\"addedAttachment($event)\"\r\n (attachmentError)=\"attachmentError($event)\"\r\n ></banta-attachment-button>\r\n <emoji-selector-button [disabled]=\"readonly\" (selected)=\"insertEmoji($event)\"></emoji-selector-button>\r\n </div>\r\n \r\n </div>\r\n <div #autocompleteContainer class=\"autocomplete-container\">\r\n <div #autocomplete class=\"autocomplete\" [class.visible]=\"autocompleteVisible\">\r\n\r\n <div>\r\n <strong>{{completionPrefix}}</strong>...\r\n </div>\r\n <a\r\n mat-button\r\n *ngFor=\"let option of autocompleteOptions; index as index\"\r\n (click)=\"activateAutoComplete(option)\"\r\n [class.active]=\"autoCompleteSelected === index\"\r\n >\r\n {{option.label}}\r\n </a>\r\n </div>\r\n </div>\r\n\r\n <banta-attachments \r\n [attachments]=\"chatMessageAttachments\"\r\n [editing]=\"true\"\r\n (remove)=\"removeAttachment($event)\"\r\n ></banta-attachments>\r\n </div>\r\n </div>\r\n <div class=\"banta-actions\">\r\n <ng-container *ngIf=\"!user\">\r\n <button\r\n mat-raised-button\r\n color=\"primary\"\r\n type=\"button\"\r\n (click)=\"showSignIn()\"\r\n >{{signInLabel}}</button>\r\n </ng-container>\r\n <ng-container *ngIf=\"user\">\r\n <button\r\n *ngIf=\"buttonState === 'send'\"\r\n mat-raised-button\r\n class=\"send\"\r\n color=\"primary\"\r\n [disabled]=\"!sendButtonEnabled\"\r\n >\r\n <mat-icon>chevron_right</mat-icon>\r\n <span class=\"label\">{{sendLabel}}</span>\r\n </button>\r\n <button\r\n *ngIf=\"buttonState === 'sending' || buttonState === 'signing-in'\"\r\n mat-raised-button\r\n class=\"send\"\r\n color=\"primary\"\r\n [disabled]=\"!sendButtonEnabled\"\r\n >\r\n <mat-spinner class=\"icon\" diameter=\"18\" strokeWidth=\"2\"></mat-spinner>\r\n <span class=\"label\">\r\n <ng-container *ngIf=\"buttonState === 'sending'\">\r\n {{sendingLabel}}\r\n </ng-container>\r\n <ng-container *ngIf=\"buttonState === 'signing-in'\">\r\n {{signingInLabel}}\r\n </ng-container>\r\n </span>\r\n </button>\r\n <button\r\n *ngIf=\"buttonState === 'permission-denied'\"\r\n mat-raised-button\r\n class=\"send\"\r\n color=\"primary\"\r\n [disabled]=\"!sendButtonEnabled\"\r\n >\r\n {{permissionDeniedLabel}}\r\n </button>\r\n </ng-container>\r\n </div>\r\n</form>","/// <reference types=\"@types/resize-observer-browser\" />\r\n\r\nimport { Component, ContentChild, ElementRef, HostBinding, Input, NgZone, Output, QueryList, TemplateRef, ViewChild, ViewChildren } from '@angular/core';\r\nimport { User, ChatMessage, CommentsOrder, FilterMode } from '@banta/common';\r\nimport { HashTag } from '../comment-field/comment-field.component';\r\nimport { Subject, Observable, Subscription } from 'rxjs';\r\nimport { take } from 'rxjs/operators';\r\n\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { ChatBackendBase } from '../../chat-backend-base';\r\nimport { ChatSourceBase } from '../../chat-source-base';\r\nimport { MatSnackBar } from '@angular/material/snack-bar';\r\nimport { BantaReplySendOptionsDirective } from '../reply-send-options.directive';\r\nimport { MessageMenuItem } from '../../message-menu-item';\r\nimport { CommentViewComponent } from '../comment-view/comment-view.component';\r\nimport { CommentComponent } from '../comment/comment.component';\r\n\r\n/**\r\n * Comments component\r\n */\r\n@Component({\r\n selector: 'banta-comments',\r\n templateUrl: './banta-comments.component.html',\r\n styleUrls: ['./banta-comments.component.scss']\r\n})\r\nexport class BantaCommentsComponent {\r\n constructor(\r\n private backend: ChatBackendBase,\r\n private elementRef: ElementRef<HTMLElement>,\r\n private activatedRoute: ActivatedRoute,\r\n private matSnackBar: MatSnackBar,\r\n private ngZone: NgZone\r\n ) {\r\n this.sendMessage = async (message: ChatMessage) => {\r\n try {\r\n const intercept = await this.shouldInterceptMessageSend?.(message, this.source);\r\n if (!intercept) {\r\n await this.source.send(message);\r\n }\r\n\r\n if (this.source.sortOrder !== CommentsOrder.NEWEST)\r\n this.sortOrder = CommentsOrder.NEWEST;\r\n\r\n if (this.source.filterMode !== FilterMode.ALL)\r\n this.filterMode = FilterMode.ALL;\r\n\r\n return true;\r\n } catch (e) {\r\n this.handleBackendException(e, 'Could not send: ');\r\n }\r\n }\r\n\r\n this.sendReply = async (message: ChatMessage) => {\r\n try {\r\n const intercept = await this.shouldInterceptMessageSend?.(message, this.selectedMessageThread);\r\n if (!intercept) {\r\n await this.selectedMessageThread.send(message);\r\n }\r\n return true;\r\n } catch (e) {\r\n this.handleBackendException(e, 'Could not send reply: ');\r\n }\r\n }\r\n }\r\n\r\n get element() {\r\n return this.elementRef.nativeElement;\r\n }\r\n\r\n private handleBackendExceptionAsAlert(e: Error, prefix: string = '') {\r\n try {\r\n this.handleBackendException(e, prefix);\r\n } catch (e) {\r\n console.log(`[Banta/Comments] Showed user error (via alert): '${e.message}'`);\r\n console.error(e);\r\n \r\n alert(e.message);\r\n }\r\n }\r\n\r\n private handleBackendExceptionAsSnack(e: Error, prefix: string = '') {\r\n try {\r\n this.handleBackendException(e, prefix);\r\n } catch (e) {\r\n console.log(`[Banta/Comments] Showed user error (via snack): '${e.message}'`);\r\n console.error(e);\r\n \r\n this.matSnackBar.open(e.message, undefined, { duration: 3000 });\r\n //alert(e.message);\r\n }\r\n }\r\n\r\n private handleBackendException(e: Error, prefix: string = '') {\r\n let errorMessage = e.message;\r\n\r\n if (errorMessage.startsWith('permission-denied|')) {\r\n errorMessage = errorMessage.replace(/^permission-denied\\|/, '');\r\n\r\n if (errorMessage.startsWith(`app-handle|`)) {\r\n // If this is an error during authorizeAction on the backend, pass control to the user-provided \r\n // permission-denied handler.\r\n\r\n this.sendPermissionDenied(errorMessage.replace(/^app-handle\\|/, ''));\r\n return;\r\n }\r\n }\r\n\r\n throw new Error(`${prefix}${errorMessage}`);\r\n }\r\n\r\n // Lifecycle Events / Initialization\r\n\r\n ngOnInit() {\r\n this._subs.add(this.backend.userChanged.subscribe(user => this.user = user));\r\n this.startLoading();\r\n\r\n if (typeof window !== 'undefined') {\r\n let queryString = window.location.search.substring(1);\r\n let query = queryString.split('&')\r\n .map(s => s.split('='))\r\n .reduce((o, [k, v]) => (o[decodeURIComponent(k)] = decodeURIComponent(v), o), {})\r\n ;\r\n\r\n const commentID = query['comment'];\r\n if (commentID) {\r\n this.sharedCommentID = commentID;\r\n }\r\n }\r\n }\r\n\r\n private resizeObserver: ResizeObserver;\r\n private width: number;\r\n private height: number;\r\n\r\n @HostBinding('class.banta-mobile')\r\n isMobileSized: boolean = false;\r\n\r\n @ContentChild(BantaReplySendOptionsDirective, {read: TemplateRef}) \r\n sendReplyOptionsTemplate: any;\r\n\r\n markViewReady: () => void;\r\n viewReady = new Promise<void>(r => this.markViewReady = r);\r\n\r\n ngAfterViewInit() {\r\n if (typeof window !== 'undefined') {\r\n let callback = () => {\r\n let size = this.elementRef.nativeElement.getBoundingClientRect();\r\n this.ngZone.run(() => {\r\n setTimeout(() => {\r\n this.width = size.width;\r\n this.height = size.height;\r\n this.isMobileSized = this.width < 500;\r\n });\r\n })\r\n };\r\n\r\n if (typeof ResizeObserver !== 'undefined') {\r\n this.resizeObserver = new ResizeObserver(callback);\r\n this.resizeObserver.observe(this.elementRef.nativeElement);\r\n } else {\r\n // One check is better than nothing!\r\n setTimeout(() => {\r\n this.width = this.elementRef.nativeElement.clientWidth;\r\n this.height = this.elementRef.nativeElement.clientHeight;\r\n this.isMobileSized = this.width < 500;\r\n }, 1000);\r\n }\r\n\r\n callback();\r\n }\r\n\r\n this.markViewReady();\r\n }\r\n\r\n ngOnDestroy() {\r\n this._subs.unsubscribe();\r\n if (this.resizeObserver)\r\n this.resizeObserver.disconnect();\r\n }\r\n\r\n private async setSourceFromTopicID(topicID: string) {\r\n if (typeof window === 'undefined')\r\n return;\r\n\r\n setTimeout(async () => {\r\n console.log(`[Banta/Comments] Subscribing to topic source '${topicID}'`);\r\n\r\n // If we are loading a shared comment, we must override the mode to be Newest/All\r\n // to ensure we can find the comment.\r\n\r\n if (this.sharedCommentID) {\r\n this._sortOrder = CommentsOrder.NEWEST;\r\n this._filterMode = FilterMode.ALL;\r\n }\r\n\r\n this.source = await this.backend.getSourceForTopic(topicID, { \r\n sortOrder: this.sortOrder, \r\n filterMode: this.filterMode,\r\n metadata: this.metadata,\r\n initialMessageCount: this.initialMessageCount\r\n });\r\n this._sourceIsOwned = true;\r\n });\r\n }\r\n\r\n loadingTitle = 'Loading...';\r\n\r\n // Loading Screen\r\n private _loadingMessage = '';\r\n loadingMessageVisible = false;\r\n\r\n get loadingMessage() {\r\n return this._loadingMessage;\r\n }\r\n\r\n set loadingMessage(value) {\r\n this.loadingMessageVisible = false;\r\n setTimeout(() => {\r\n this._loadingMessage = value;\r\n this._loadingMessage = value;\r\n setTimeout(() => {\r\n this.loadingMessageVisible = true;\r\n })\r\n }, 500);\r\n }\r\n\r\n loading: boolean = true;\r\n showLoadingScreen = false;\r\n loadingStartedAt: number;\r\n messageChangedAt: number;\r\n sharedCommentID: string;\r\n lastSharedCommentID: string;\r\n\r\n @Input() customMenuItems: MessageMenuItem[] = [];\r\n\r\n private async startLoading() {\r\n this.loadingStartedAt = this.messageChangedAt = Date.now();\r\n\r\n if (this.updateLoading()) return;\r\n await new Promise<void>(resolve => setTimeout(() => resolve(), 100));\r\n if (this.updateLoading()) return;\r\n await new Promise<void>(resolve => setTimeout(() => resolve(), 250));\r\n if (this.updateLoading()) return;\r\n await new Promise<void>(resolve => setTimeout(() => resolve(), 500));\r\n if (this.updateLoading()) return;\r\n\r\n console.log(`[Banta] Loading is taking a long time! Showing loading screen.`);\r\n this.showLoadingScreen = true;\r\n if (typeof window !== 'undefined')\r\n this._loadingTimer = setInterval(() => {\r\n this.updateLoading();\r\n this.loadingTitle = `Connecting to Live Comments service...`;\r\n }, 1000);\r\n }\r\n \r\n private _loadingTimer;\r\n private _loadingMessageIndex = 0;\r\n\r\n /**\r\n * The canonical URL where this comment section can be found. If not specified, uses the current URL.\r\n */\r\n @Input() url: string;\r\n\r\n @Input() maxCommentLength: number = 1500;\r\n @Input() loadingMessages: string[] = [\r\n `Just a second...`,\r\n `It's definitely worth the wait!`,\r\n `This has never happened before.`,\r\n `We'll keep trying, but it's not looking great. \r\n Commenting & chat services may be down or degraded. Try reloading the page.\r\n If you keep experiencing issues or reloading the page works for you, please let us know by contacting support.\r\n `\r\n ];\r\n\r\n @Input() useInlineReplies = true;\r\n\r\n /**\r\n * Access the CommentViewComponent for this BantaCommentsComponent. \r\n * CommentViewComponent is responsible for interacting with the ChatSource \r\n * object and rendering comments as CommentComponents. It is the source of \r\n * truth for which CommentComponent corresponds to which ChatMessage. \r\n * \r\n * Note that this CommentViewComponent is only for the top level comments.\r\n * Replies are handled by a separate CommentViewComponent which can be \r\n * retrieved using the threadView property.\r\n */\r\n @ViewChild('commentView')\r\n commentView: CommentViewComponent;\r\n\r\n @ViewChildren(CommentViewComponent)\r\n threadViewQuery: QueryList<CommentViewComponent>;\r\n\r\n /**\r\n * Attempts to find the CommentComponent that corresponds to the given ChatMessage.\r\n * The ChatMessage could be a top-level message in this conversation, or a reply, \r\n * but note that a CommentComponent will only exist for a reply if the user has \r\n * the relevant reply thread open.\r\n * @param message The message to look for\r\n */\r\n getCommentComponentForMessage(message: ChatMessage): CommentComponent {\r\n if (message.parentMessageId)\r\n return this.threadView?.getCommentComponentForMessage(message);\r\n else\r\n return this.commentView.getCommentComponentForMessage(message)\r\n }\r\n\r\n /**\r\n * Access the CommentViewComponent corresponding to the currently open reply thread.\r\n * This is not the top level comments, but instead the reply thread that the user has \r\n * opened (only one set of replies can be open at a time).\r\n * \r\n * For details about what CommentViewComponent affords you, see the commentView property.\r\n */\r\n get threadView() {\r\n return Array.from(this.threadViewQuery).filter(x => x !== this.commentView)[0];\r\n }\r\n\r\n async waitForThreadView() {\r\n if (this.threadView)\r\n return this.threadView;\r\n \r\n await this.threadViewQuery.changes.pipe(take(1)).toPromise();\r\n return this.threadView;\r\n }\r\n\r\n markLoaded: () => void;\r\n loaded = new Promise<void>(r => this.markLoaded = r);\r\n\r\n get sourceState() {\r\n if (!this.source)\r\n return 'no-source';\r\n\r\n return this.source.state ?? 'connected';\r\n }\r\n\r\n private updateLoading(): boolean {\r\n if (this.sourceState && !['connecting', 'lost', 'no-source'].includes(this.sourceState)) {\r\n clearInterval(this._loadingTimer);\r\n this.loadingMessage = `Here we go!`;\r\n setTimeout(() => {\r\n this.loading = false;\r\n this.markLoaded();\r\n }, 750);\r\n return true;\r\n }\r\n\r\n console.log(`[Banta/Loader] State=${this.sourceState}`);\r\n let messageSwitchTime = 5*1000;\r\n if (this.messageChangedAt + messageSwitchTime < Date.now()) {\r\n if (this.loadingMessages[this._loadingMessageIndex]) {\r\n this.loadingMessage = this.loadingMessages[this._loadingMessageIndex++];\r\n this.messageChangedAt = Date.now();\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n\r\n // Properties\r\n\r\n private _signInSelected = new Subject<void>();\r\n private _permissionDeniedError = new Subject<string>();\r\n private _editAvatarSelected = new Subject<void>();\r\n private _upvoted = new Subject<ChatMessage>();\r\n private _reported = new Subject<ChatMessage>();\r\n private _selected = new Subject<ChatMessage>();\r\n private _userSelected = new Subject<ChatMessage>();\r\n private _shared = new Subject<ChatMessage>();\r\n private _usernameSelected = new Subject<User>();\r\n private _avatarSelected = new Subject<User>();\r\n private _source: ChatSourceBase;\r\n\r\n /**\r\n * Track whether we created this source. If we did not (ie it was passed in from the caller),\r\n * then we are not responsible for calling close(). If we do own it though, we will call close() \r\n * when we are done with it.\r\n */\r\n private _sourceIsOwned = false;\r\n private _subs = new Subscription();\r\n private _topicID: string;\r\n \r\n user: User;\r\n selectedMessage: ChatMessage;\r\n selectedMessageThread: ChatSourceBase;\r\n selectedMessageVisible = false;\r\n connectionState: string;\r\n\r\n // Inputs\r\n\r\n @Input() signInLabel = 'Sign In';\r\n @Input() sendLabel = 'Send';\r\n @Input() signingInLabel = 'Signing in...';\r\n @Input() replyLabel = 'Reply';\r\n @Input() sendingLabel = 'Sending';\r\n @Input() permissionDeniedLabel = 'Send';\r\n @Input() postCommentLabel = 'Post a comment';\r\n @Input() postReplyLabel = 'Post a reply';\r\n @Input() allowAttachments = true;\r\n @Input() fixedHeight: boolean;\r\n @Input() maxMessages: number;\r\n @Input() maxVisibleMessages: number = 20;\r\n @Input() genericAvatarUrl = `https://gravatar.com/avatar/${Date.now().toString(16)}?s=512&d=robohash`;\r\n\r\n @Input() shouldInterceptMessageSend?: (message: ChatMessage, source: ChatSourceBase) => boolean | Promise<boolean>;\r\n @Input() participants: User[] = [];\r\n\r\n private _sourceSubscription: Subscription;\r\n\r\n @Input()\r\n get source(): ChatSourceBase { return this._source; }\r\n set source(value) { \r\n if (this._source && this._sourceIsOwned) {\r\n this._source.close();\r\n this._sourceSubscription?.unsubscribe();\r\n this._source = null;\r\n this.participants = [];\r\n }\r\n\r\n this._source = value;\r\n this._sourceIsOwned = false; // Assume we don't own this source.\r\n this._sourceSubscription = new Subscription();\r\n \r\n if (value) {\r\n if (this.sharedCommentID) {\r\n this.navigateToSharedComment(this.sharedCommentID);\r\n this.lastSharedCommentID = this.sharedCommentID;\r\n this.sharedCommentID = null;\r\n }\r\n\r\n this._source.messages.forEach(m => this.addParticipant(m));\r\n\r\n if (this._source.connectionStateChanged)\r\n this._sourceSubscription.add(this._source.connectionStateChanged.subscribe(state => this.connectionState = state));\r\n else \r\n this.connectionState = 'connected';\r\n\r\n this._sourceSubscription.add(this._source.messageReceived.subscribe(m => this.addParticipant(m)));\r\n this._sourceSubscription.add(this._source.messageSent.subscribe(m => this.addParticipant(m)));\r\n this._sourceSubscription.add(this._source.messageObserved.subscribe(m => this.addParticipant(m)));\r\n this._sourceSubscription.add(\r\n this._source.messageUpdated.subscribe(msg => {\r\n console.log(`comments received message: `, msg);\r\n if (msg.id === this.selectedMessage?.id && msg.hidden) {\r\n this.unselectMessage();\r\n this.matSnackBar.open(\r\n \"The thread you were viewing was removed.\",\r\n undefined,\r\n {\r\n duration: 2500\r\n }\r\n )\r\n }\r\n })\r\n );\r\n\r\n }\r\n }\r\n @Input() \r\n hashtags: HashTag[] = [\r\n {hashtag: 'error', description: 'Cause an error'},\r\n {hashtag: 'timeout', description: 'Cause a slow timeout error'},\r\n {hashtag: 'slow', description: 'Be slow when this message is posted'},\r\n ];\r\n @Input()\r\n get topicID(): string { return this._topicID; }\r\n set topicID(value) {\r\n if (this._topicID !== value) {\r\n this._topicID = value;\r\n setTimeout(() => this.setSourceFromTopicID(value));\r\n }\r\n }\r\n\r\n // Outputs\r\n\r\n @Output() get signInSelected(): Observable<void> { return this._signInSelected; }\r\n @Output() get editAvatarSelected() { return this._editAvatarSelected; }\r\n @Output() get permissionDeniedError(): Observable<string> { return this._permissionDeniedError; }\r\n @Output() get upvoted() { return this._upvoted.asObservable(); }\r\n @Output() get reported() { return this._reported.asObservable(); }\r\n @Output() get selected() { return this._selected.asObservable(); }\r\n @Output() get userSelected() { return this._userSelected.asObservable(); }\r\n @Output() get usernameSelected() { return this._usernameSelected.asObservable(); }\r\n @Output() get avatarSelected() { return this._avatarSelected.asObservable(); }\r\n @Output() get shared() { return this._shared.asObservable(); }\r\n\r\n private _reloadSourceTimeout;\r\n private reloadSource() {\r\n clearTimeout(this._reloadSourceTimeout);\r\n\r\n let showLoaderTimeout;\r\n showLoaderTimeout = setTimeout(() => {\r\n this.loading = true;\r\n this.loadingTitle = 'Applying filters...';\r\n this.loadingMessage = 'Applying your filters and sort order is taking more time than expected. Sit tight!';\r\n this.showLoadingScreen = true;\r\n }, 500);\r\n\r\n this._reloadSourceTimeout = setTimeout(async () => {\r\n await this.setSourceFromTopicID(this.topicID);\r\n clearTimeout(showLoaderTimeout);\r\n this.loading = false;\r\n this.showLoadingScreen = true;\r\n });\r\n }\r\n\r\n private _sortOrder: CommentsOrder = 'newest';\r\n @Input() get sortOrder() { return this._sortOrder; }\r\n set sortOrder(value) {\r\n if (this._sortOrder !== value) {\r\n this._sortOrder = value;\r\n this.reloadSource();\r\n }\r\n }\r\n\r\n private _filterMode: FilterMode = FilterMode.ALL;\r\n @Input() get filterMode() { return this._filterMode; }\r\n set filterMode(value) { \r\n if (this._filterMode !== value) {\r\n this._filterMode = value;\r\n this.reloadSource();\r\n }\r\n }\r\n\r\n @Input() initialMessageCount: number = 100;\r\n\r\n private _metadata: Record<string, any> = {};\r\n\r\n /**\r\n * Arbitrary metadata to send to the chat server. This can be used to provide context about the client to the server\r\n * for things like validating authorization and other uses.\r\n */\r\n @Input() get metadata() { return this._metadata; }\r\n set metadata(value) {\r\n if (JSON.stringify(this._metadata) !== JSON.stringify(value)) {\r\n this._metadata = value;\r\n this.reloadSource();\r\n }\r\n }\r\n\r\n get filterModes() { \r\n return FilterMode.options;\r\n }\r\n\r\n get filterModeLabels() {\r\n return {\r\n [FilterMode.ALL]: 'All',\r\n [FilterMode.MINE]: 'Mine',\r\n [FilterMode.THREADS]: 'Involving Me',\r\n [FilterMode.MY_LIKES]: 'My Likes'\r\n }\r\n }\r\n\r\n get sortOrders() { \r\n return CommentsOrder.options;\r\n }\r\n\r\n get sortOrderLabels() {\r\n return {\r\n [CommentsOrder.NEWEST]: 'Newest',\r\n [CommentsOrder.OLDEST]: 'Oldest',\r\n [CommentsOrder.LIKES]: 'Likes'\r\n }\r\n }\r\n\r\n sendMessage: (message: ChatMessage) => void;\r\n sendReply: (message: ChatMessage) => void;\r\n\r\n // UI Interactions\r\n\r\n async scrollToComment(commentId: ChatMessage['id']) {\r\n if (typeof window === 'undefined')\r\n return;\r\n \r\n await this.commentView.waitForAllCommentsToLoad();\r\n\r\n const comment = document.querySelector(`[data-comment-id=\"${commentId}\"]`);\r\n if (comment) {\r\n comment.scrollIntoView({\r\n inline: 'center',\r\n block: 'center'\r\n });\r\n }\r\n }\r\n\r\n loadingSharedComment = false;\r\n sharedCommentMissing = false;\r\n\r\n async navigateToSharedComment(id: string) {\r\n this.loadingSharedComment = true;\r\n await new Promise(r => setTimeout(r, 10));\r\n this.sharedCommentMissing = false;\r\n let source = this.source;\r\n\r\n await source.ready;\r\n await this.viewReady;\r\n await this.loaded;\r\n \r\n console.log(`Navigating to shared comment with ID '${id}'...`);\r\n let message: ChatMessage;\r\n \r\n try {\r\n message = await this.source.get(id);\r\n } catch (e) {\r\n console.error(`Failed to find comment from URL: ${e.message}`);\r\n this.sharedCommentMissing = true;\r\n this.loadingSharedComment = false;\r\n\r\n if (typeof window !== 'undefined') {\r\n setTimeout(() => {\r\n let notice = this.element.querySelector('.loading-comment');\r\n notice.scrollIntoView({\r\n block: 'center',\r\n inline: 'center'\r\n });\r\n }, 200);\r\n }\r\n return;\r\n }\r\n\r\n message.transientState ??= {};\r\n\r\n // If there is a parent message, we should instead focus that and let the \r\n // scrollToComment and highlight do the work.\r\n\r\n if (message.parentMessageId) {\r\n\r\n let parentMessage = await this.source.get(message.parentMessageId);\r\n parentMessage.transientState ??= {};\r\n \r\n // Make sure that this message is loaded and visible to the user\r\n await this.commentView.loadMessageInContext(parentMessage);\r\n \r\n let thread = await this.selectMessage(parentMessage); \r\n\r\n // Need to re-retrieve the message within the new chat source to affect its\r\n // transient state.\r\n await thread.ready;\r\n \r\n // Make sure that this message is loaded and visible to the user\r\n await this.waitForThreadView();\r\n await this.threadView.loadMessageInContext(message);\r\n\r\n message = await thread.get(message.id);\r\n\r\n if (message) {\r\n message.transientState ??= {};\r\n message.transientState.highlighted = true;\r\n console.dir(message);\r\n await new Promise<void>(r => setTimeout(r, 500));\r\n }\r\n } else {\r\n // Make sure that this message is loaded and visible to the user\r\n await this.commentView.loadMessageInContext(message);\r\n\r\n message = await source.get(message.id);\r\n if (message) {\r\n message.transientState ??= {};\r\n message.transientState.highlighted = true;\r\n }\r\n }\r\n\r\n this.loadingSharedComment = false;\r\n await this.scrollToComment(id);\r\n }\r\n\r\n handlePermissionDenied(errorMessage: string) {\r\n // This is what other components call when handling permission errors\r\n \r\n if (errorMessage.startsWith(`app-handle|`)) {\r\n // If this is an error during authorizeAction on the backend, pass control to the user-provided \r\n // permission-denied handler.\r\n\r\n this.sendPermissionDenied(errorMessage.replace(/^app-handle\\|/, ''));\r\n return;\r\n }\r\n\r\n alert(errorMessage);\r\n }\r\n\r\n sendPermissionDenied(message: string) {\r\n this._permissionDeniedError.next(message);\r\n }\r\n\r\n scrollToMessage(message: ChatMessage) {\r\n let el = this.elementRef.nativeElement.querySelector(`[data-comment-id=\"${message.id}\"]`);\r\n if (!el)\r\n return;\r\n el.scrollIntoView({block: 'center', inline: 'start'});\r\n }\r\n\r\n private addParticipant(message: ChatMessage) {\r\n if (!message || !message.user || !message.user.id)\r\n return;\r\n\r\n let existing = this.participants.find(x => x.id === message.user.id);\r\n if (existing)\r\n return;\r\n this.participants.push(message.user);\r\n }\r\n\r\n // Actions\r\n\r\n async likeMessage(source: ChatSourceBase, message: ChatMessage) {\r\n if (!this.user) {\r\n await this.showSignIn();\r\n return;\r\n }\r\n\r\n this._upvoted.next(message);\r\n message.transientState.liking = true;\r\n \r\n try {\r\n await source.likeMessage(message.id);\r\n } catch (e) {\r\n this.handleBackendExceptionAsSnack(e, 'Could not like this message: ');\r\n } finally {\r\n await new Promise<void>(resolve => setTimeout(() => resolve(), 250));\r\n message.transientState.liking = false;\r\n }\r\n }\r\n\r\n async unlikeMessage(source: ChatSourceBase, message: ChatMessage) {\r\n if (!this.user) {\r\n await this.showSignIn();\r\n return;\r\n }\r\n\r\n this._upvoted.next(message);\r\n message.transientState.liking = true;\r\n\r\n if (message.userState?.liked)\r\n message.likes = (message.likes || 0) - 1;\r\n\r\n try {\r\n await source.unlikeMessage(message.id);\r\n } catch (e) {\r\n this.handleBackendExceptionAsAlert(e, 'Failed to unlike this message: ');\r\n }\r\n\r\n await new Promise<void>(resolve => setTimeout(() => resolve(), 250));\r\n message.transientState.liking = false;\r\n }\r\n\r\n async reportMessage(message: ChatMessage) {\r\n this._reported.next(message);\r\n }\r\n\r\n async unselectMessage() {\r\n let message = this.selectedMessage;\r\n\r\n this._selected.next(null);\r\n this.selectedMessage = null;\r\n if (this.selectedMessageThread) {\r\n if (this.selectedMessageThread.close)\r\n this.selectedMessageThread.close();\r\n this.selectedMessageThread = null;\r\n }\r\n\r\n if (message)\r\n setTimeout(() => this.scrollToMessage(message));\r\n }\r\n\r\n async toggleSelectedMessage(message: ChatMessage) {\r\n if (this.selectedMessage === message) {\r\n await this.unselectMessage();\r\n } else {\r\n await this.selectMessage(message);\r\n }\r\n }\r\n\r\n async selectMessage(message: ChatMessage) {\r\n if (this.selectedMessage === message) {\r\n console.log(`[Banta] Thread ${this.topicID}/${message.id} is already open.`);\r\n return this.selectedMessageThread;\r\n }\r\n\r\n if (this.selectedMessageThread) {\r\n if (this.selectedMessageThread.close)\r\n this.selectedMessageThread.close();\r\n this.selectedMessageThread = null;\r\n }\r\n\r\n this._selected.next(message);\r\n\r\n console.log(`[Banta] Opening thread for ${this.topicID}/${message.id}...`);\r\n let selectedMessageThread = await this.backend.getSourceForThread(this.topicID, message.id);\r\n\r\n if (!selectedMessageThread) {\r\n console.warn(`Failed to locate thread for message ${this.topicID}/${message.id}!`);\r\n return null;\r\n }\r\n\r\n console.log(`[Banta] Thread opened for ${this.topicID}/${message.id}.`);\r\n\r\n setTimeout(() => this.selectedMessageVisible = true);\r\n setTimeout(async () => {\r\n this.selectedMessage = message;\r\n this.selectedMessageThread = selectedMessageThread;\r\n }, 250);\r\n\r\n return selectedMessageThread;\r\n }\r\n\r\n async showSignIn() {\r\n this._signInSelected.next();\r\n }\r\n\r\n async showEditAvatar() {\r\n this._editAvatarSelected.next();\r\n }\r\n\r\n async selectMessageUser(message: ChatMessage) {\r\n this._userSelected.next(message);\r\n }\r\n\r\n async selectUsername(user: User) {\r\n this._usernameSelected.next(user);\r\n }\r\n\r\n async selectAvatar(user: User) {\r\n this._avatarSelected.next(user);\r\n }\r\n\r\n async shareMessage(message: ChatMessage) {\r\n this._shared.next(message);\r\n }\r\n\r\n async deleteMessage(message: ChatMessage) {\r\n if (!this.user) {\r\n await this.showSignIn();\r\n return;\r\n }\r\n\r\n if (!confirm(\"Are you sure you want to delete this comment? You cannot undo this action.\"))\r\n return;\r\n\r\n try {\r\n await this.source.deleteMessage(message.id);\r\n\r\n if (this.selectedMessage?.id === message.id)\r\n this.unselectMessage();\r\n\r\n } catch (e) {\r\n this.handleBackendExceptionAsAlert(e, `Could not delete message: `);\r\n }\r\n }\r\n\r\n async editMessage(source: ChatSourceBase, message: ChatMessage, newText: string) {\r\n if (!this.user) {\r\n await this.showSignIn();\r\n return;\r\n }\r\n\r\n try {\r\n await source.editMessage(message.id, newText);\r\n } catch (e) {\r\n this.handleBackendExceptionAsAlert(e, 'Could not edit this message: ');\r\n return;\r\n }\r\n\r\n message.message = newText;\r\n message.transientState.editing = false;\r\n }\r\n\r\n async startEditing(message: ChatMessage) {\r\n this.selectedMessage.transientState.editing = false;\r\n message.transientState.editing = true;\r\n }\r\n\r\n async saveEdit(message: ChatMessage, text: string) {\r\n if (!this.user) {\r\n await this.showSignIn();\r\n return;\r\n }\r\n \r\n try {\r\n await this.source.editMessage(message.id, text);\r\n message.transientState.editing = false;\r\n } catch (e) {\r\n this.handleBackendExceptionAsAlert(e, `Could not edit message: `);\r\n }\r\n }\r\n}\r\n","<ng-container *ngIf=\"loading\">\r\n <div class=\"loading-screen\" [class.visible]=\"showLoadingScreen\">\r\n <h1>{{loadingTitle}}</h1>\r\n <div>\r\n <mat-spinner [diameter]=\"300\" [strokeWidth]=\"2\"></mat-spinner>\r\n </div>\r\n\r\n <p class=\"loading-message\" [class.visible]=\"loadingMessageVisible\">{{loadingMessage}}</p>\r\n </div>\r\n</ng-container>\r\n<ng-container *ngIf=\"!loading\">\r\n <div class=\"focused\" [class.visible]=\"selectedMessageVisible\" *ngIf=\"selectedMessage && !useInlineReplies\">\r\n\r\n <div>\r\n <a mat-button href=\"javascript:;\" (click)=\"unselectMessage()\">\r\n <mat-icon>arrow_back</mat-icon>\r\n Latest Comments\r\n </a>\r\n </div>\r\n\r\n <banta-comment\r\n [message]=\"selectedMessage\"\r\n [liking]=\"selectedMessage.transientState.liking\"\r\n [mine]=\"user?.id === selectedMessage.user?.id\"\r\n [permissions]=\"source?.permissions\"\r\n [showReplyAction]=\"false\"\r\n [editing]=\"selectedMessage.transientState.editing\"\r\n [maxLength]=\"maxCommentLength\"\r\n [genericAvatarUrl]=\"genericAvatarUrl\"\r\n [readonly]=\"source?.readonly\"\r\n (editStarted)=\"startEditing(selectedMessage)\"\r\n (editEnded)=\"selectedMessage.transientState.editing = false\"\r\n (edited)=\"saveEdit(selectedMessage, $event)\"\r\n (userSelected)=\"selectMessageUser(selectedMessage)\"\r\n (avatarSelected)=\"selectAvatar($event)\"\r\n (usernameSelected)=\"selectUsername($event)\"\r\n (liked)=\"likeMessage(source, selectedMessage)\"\r\n (unliked)=\"unlikeMessage(source, selectedMessage)\"\r\n (reported)=\"reportMessage(selectedMessage)\"\r\n (selected)=\"toggleSelectedMessage(selectedMessage)\"\r\n (shared)=\"shareMessage($event)\"\r\n (deleted)=\"deleteMessage(selectedMessage)\"\r\n ></banta-comment>\r\n\r\n <div class=\"replies\">\r\n\r\n <ng-container *ngIf=\"!selectedMessageThread\">\r\n <div class=\"loading\">\r\n <mat-spinner></mat-spinner>\r\n </div>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"selectedMessageThread\">\r\n <banta-comment-view\r\n class=\"replies\"\r\n #threadView\r\n [source]=\"selectedMessageThread\"\r\n [allowReplies]=\"false\"\r\n [fixedHeight]=\"false\"\r\n [showEmptyState]=\"false\"\r\n [newestLast]=\"true\"\r\n [genericAvatarUrl]=\"genericAvatarUrl\"\r\n (liked)=\"likeMessage(selectedMessageThread, $event)\"\r\n (unliked)=\"unlikeMessage(selectedMessageThread, $event)\"\r\n (messageEdited)=\"editMessage(selectedMessageThread, $event.message, $event.newMessage)\"\r\n (reported)=\"reportMessage($event)\"\r\n (usernameSelected)=\"selectUsername($event)\"\r\n (avatarSelected)=\"selectAvatar($event)\"\r\n (shared)=\"shareMessage($event)\"\r\n (deleted)=\"deleteMessage($event)\"\r\n [customMenuItems]=\"customMenuItems\"\r\n ></banta-comment-view>\r\n\r\n <banta-comment-field\r\n [url]=\"url\"\r\n [sendLabel]=\"replyLabel\"\r\n [sendingLabel]=\"sendingLabel\"\r\n [signingInLabel]=\"signingInLabel\"\r\n [hashtags]=\"hashtags\"\r\n [participants]=\"participants\"\r\n [readonly]=\"source?.readonly\"\r\n (signInSelected)=\"showSignIn()\"\r\n (editAvatarSelected)=\"showEditAvatar()\"\r\n [source]=\"selectedMessageThread\"\r\n [maxLength]=\"maxCommentLength\"\r\n [canComment]=\"source?.permissions?.canPost\"\r\n [signInState]=\"source?.signInState\"\r\n [signInLabel]=\"signInLabel\"\r\n [permissionDeniedLabel]=\"source?.permissions?.canPostErrorMessage || permissionDeniedLabel\"\r\n (permissionDeniedError)=\"handlePermissionDenied($event)\"\r\n [shouldInterceptMessageSend]=\"shouldInterceptMessageSend\"\r\n [user]=\"user\"\r\n [label]=\"postReplyLabel\"\r\n [submit]=\"sendReply\"\r\n [allowAttachments]=\"allowAttachments\"\r\n [genericAvatarUrl]=\"genericAvatarUrl\"\r\n >\r\n <ng-container *ngTemplateOutlet=\"sendReplyOptionsTemplate\"></ng-container>\r\n </banta-comment-field>\r\n </ng-container>\r\n </div>\r\n </div>\r\n\r\n <div class=\"main\" [class.hidden]=\"selectedMessage && !useInlineReplies\">\r\n <banta-comment-field\r\n [url]=\"url\"\r\n [source]=\"source\"\r\n [user]=\"user\"\r\n [sendLabel]=\"sendLabel\"\r\n [sendingLabel]=\"sendingLabel\"\r\n [signingInLabel]=\"signingInLabel\"\r\n [signInLabel]=\"signInLabel\"\r\n [signInState]=\"source?.signInState\"\r\n [canComment]=\"source?.permissions?.canPost\"\r\n [hashtags]=\"hashtags\"\r\n [participants]=\"participants\"\r\n [label]=\"postCommentLabel\"\r\n [maxLength]=\"maxCommentLength\"\r\n [permissionDeniedLabel]=\"source?.permissions?.canPostErrorMessage || permissionDeniedLabel\"\r\n [shouldInterceptMessageSend]=\"shouldInterceptMessageSend\"\r\n [submit]=\"sendMessage\"\r\n [allowAttachments]=\"allowAttachments\"\r\n [genericAvatarUrl]=\"genericAvatarUrl\"\r\n [readonly]=\"source?.readonly\"\r\n (editAvatarSelected)=\"showEditAvatar()\"\r\n (signInSelected)=\"showSignIn()\"\r\n (permissionDeniedError)=\"handlePermissionDenied($event)\"\r\n >\r\n \r\n </banta-comment-field>\r\n\r\n <mat-menu #filterMenu=\"matMenu\">\r\n <button mat-menu-item *ngFor=\"let filter of filterModes\" (click)=\"filterMode = filter\">\r\n {{filterModeLabels[filter]}}\r\n </button>\r\n </mat-menu>\r\n <mat-menu #sortMenu=\"matMenu\">\r\n <button mat-menu-item *ngFor=\"let sort of sortOrders\" (click)=\"sortOrder = sort\">\r\n {{sortOrderLabels[sort]}}\r\n </button>\r\n </mat-menu>\r\n\r\n <div class=\"settings\">\r\n <button mat-button [matMenuTriggerFor]=\"filterMenu\">\r\n <mat-icon>filter_list</mat-icon>\r\n {{filterModeLabels[filterMode]}}\r\n </button>\r\n <button mat-button [matMenuTriggerFor]=\"sortMenu\">\r\n <mat-icon>sort</mat-icon>\r\n {{sortOrderLabels[sortOrder]}}\r\n </button>\r\n </div>\r\n\r\n <div class=\"loading-comment\" *ngIf=\"loadingSharedComment\">\r\n <h1>Loading the comment you linked to...</h1>\r\n <mat-spinner [diameter]=\"300\" [strokeWidth]=\"2\"></mat-spinner>\r\n <p>\r\n If there are a lot of comments, this might take awhile!\r\n </p>\r\n </div>\r\n <div class=\"loading-comment\" *ngIf=\"!loadingSharedComment && lastSharedCommentID\">\r\n <ng-container *ngIf=\"sharedCommentMissing\">\r\n\r\n <a class=\"close\" mat-icon-button matTooltip=\"Close this notice\" href=\"javascript:;\" (click)=\"lastSharedCommentID = null\">\r\n <mat-icon>close</mat-icon>\r\n </a>\r\n\r\n <h1>\r\n <mat-icon>error</mat-icon>\r\n Uh oh!\r\n </h1>\r\n\r\n <p>The comment you linked to can't be found! It may have been removed.</p>\r\n </ng-container>\r\n <ng-container *ngIf=\"!sharedCommentMissing\">\r\n <a class=\"close\" mat-icon-button matTooltip=\"Close this notice\" href=\"javascript:;\" (click)=\"lastSharedCommentID = null\">\r\n <mat-icon>close</mat-icon>\r\n </a>\r\n <button mat-button (click)=\"navigateToSharedComment(lastSharedCommentID)\">\r\n <mat-icon>move_down</mat-icon> Jump to shared comment\r\n </button>\r\n </ng-container>\r\n </div>\r\n\r\n <banta-comment-view\r\n #commentView\r\n [class.faded]=\"selectedMessage && !useInlineReplies\"\r\n [source]=\"source\"\r\n [fixedHeight]=\"fixedHeight\"\r\n [maxMessages]=\"maxMessages\"\r\n [maxVisibleMessages]=\"maxVisibleMessages\"\r\n [genericAvatarUrl]=\"genericAvatarUrl\"\r\n [customMenuItems]=\"customMenuItems\"\r\n [holdNewMessages]=\"selectedMessageVisible\"\r\n (userSelected)=\"selectMessageUser($event)\"\r\n (sortOrderChanged)=\"sortOrder = $event\"\r\n (filterModeChanged)=\"filterMode = $event\"\r\n (selected)=\"toggleSelectedMessage($event)\"\r\n (liked)=\"likeMessage(source, $event)\"\r\n (unliked)=\"unlikeMessage(source, $event)\"\r\n (messageEdited)=\"editMessage(source, $event.message, $event.newMessage)\"\r\n (reported)=\"reportMessage($event)\"\r\n (usernameSelected)=\"selectUsername($event)\"\r\n (avatarSelected)=\"selectAvatar($event)\"\r\n (shared)=\"shareMessage($event)\"\r\n [selectedMessage]=\"selectedMessage\"\r\n (deleted)=\"deleteMessage($event)\"\r\n >\r\n <div class=\"inline-replies\">\r\n <div class=\"focused\" [class.visible]=\"selectedMessageVisible\" *ngIf=\"selectedMessage\">\r\n <div class=\"replies\">\r\n \r\n <ng-container *ngIf=\"!selectedMessageThread\">\r\n <div class=\"loading\">\r\n <mat-spinner></mat-spinner>\r\n </div>\r\n </ng-container>\r\n \r\n <ng-container *ngIf=\"selectedMessageThread\">\r\n <banta-comment-view\r\n [source]=\"selectedMessageThread\"\r\n [allowReplies]=\"false\"\r\n [fixedHeight]=\"false\"\r\n [showEmptyState]=\"false\"\r\n [newestLast]=\"true\"\r\n [enableHoldOnClick]=\"false\"\r\n [holdNewMessages]=\"replyFieldFocused\"\r\n [genericAvatarUrl]=\"genericAvatarUrl\"\r\n (liked)=\"likeMessage(selectedMessageThread, $event)\"\r\n (unliked)=\"unlikeMessage(selectedMessageThread, $event)\"\r\n (messageEdited)=\"editMessage(selectedMessageThread, $event.message, $event.newMessage)\"\r\n (reported)=\"reportMessage($event)\"\r\n (usernameSelected)=\"selectUsername($event)\"\r\n (avatarSelected)=\"selectAvatar($event)\"\r\n (shared)=\"shareMessage($event)\"\r\n (deleted)=\"deleteMessage($event)\"\r\n ></banta-comment-view>\r\n \r\n <banta-comment-field\r\n [url]=\"url\"\r\n [sendLabel]=\"replyLabel\"\r\n [sendingLabel]=\"sendingLabel\"\r\n [signingInLabel]=\"signingInLabel\"\r\n [hashtags]=\"hashtags\"\r\n [participants]=\"participants\"\r\n (signInSelected)=\"showSignIn()\"\r\n [maxLength]=\"maxCommentLength\"\r\n [source]=\"selectedMessageThread\"\r\n [signInState]=\"source?.signInState\"\r\n [canComment]=\"source?.permissions?.canPost\"\r\n [signInLabel]=\"signInLabel\"\r\n [permissionDeniedLabel]=\"source?.permissions?.canPostErrorMessage || permissionDeniedLabel\"\r\n [readonly]=\"source?.readonly\"\r\n [shouldInterceptMessageSend]=\"shouldInterceptMessageSend\"\r\n [user]=\"user\"\r\n [label]=\"postReplyLabel\"\r\n [submit]=\"sendReply\"\r\n [allowAttachments]=\"allowAttachments\"\r\n [genericAvatarUrl]=\"genericAvatarUrl\"\r\n (permissionDeniedError)=\"handlePermissionDenied($event)\"\r\n (editAvatarSelected)=\"showEditAvatar()\"\r\n (focusChange)=\"replyFieldFocused = $event\"\r\n >\r\n <ng-container *ngTemplateOutlet=\"sendReplyOptionsTemplate\"></ng-container>\r\n </banta-comment-field>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n </banta-comment-view>\r\n </div>\r\n <div class=\"reconnecting\" *ngIf=\"connectionState === 'lost'\">\r\n <strong>Connection to Live Comments lost.</strong> Reconnecting...\r\n </div>\r\n</ng-container>\r\n","import { Component, Input, Output } from \"@angular/core\";\r\nimport { User, ChatMessage } from '@banta/common';\r\nimport { Subject } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'banta-chat-message',\r\n templateUrl: './chat-message.component.html',\r\n styleUrls: ['./chat-message.component.scss']\r\n})\r\nexport class ChatMessageComponent {\r\n private _selected = new Subject<void>();\r\n private _reported = new Subject<void>();\r\n private _upvoted = new Subject<void>();\r\n private _userSelected = new Subject<User>();\r\n\r\n @Input()\r\n message : ChatMessage;\r\n \r\n @Output() \r\n get userSelected() {\r\n return this._userSelected;\r\n }\r\n\r\n @Output()\r\n get selected() {\r\n return this._selected;\r\n }\r\n\r\n @Output()\r\n get reported() {\r\n return this._reported;\r\n }\r\n\r\n @Output()\r\n get upvoted() {\r\n return this._upvoted;\r\n }\r\n\r\n avatarForUser(user : User) {\r\n if (user && user.avatarUrl) {\r\n let url = user.avatarUrl;\r\n return `url(${url})`;\r\n }\r\n\r\n return null;\r\n }\r\n \r\n upvote() {\r\n this._upvoted.next();\r\n }\r\n\r\n report() {\r\n this._reported.next();\r\n }\r\n\r\n select() {\r\n this._selected.next();\r\n }\r\n \r\n selectUser() {\r\n this._userSelected.next(this.message.user);\r\n }\r\n\r\n}","<div class=\"message-content\">\r\n <div class=\"user\" (click)=\"selectUser()\">\r\n <div class=\"avatar\" [style.background-image]=\"avatarForUser(message.user)\"></div>\r\n <label>{{message.user.username}}</label>\r\n </div>\r\n <div class=\"content\">\r\n <div (click)=\"select()\">\r\n {{message.message}}\r\n </div>\r\n <div class=\"status\">\r\n <div class=\"count-indicator\" *ngIf=\"message.likes > 0\">\r\n <mat-icon>star</mat-icon> {{message.likes}}\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n<div class=\"actions\">\r\n <button mat-icon-button matTooltip=\"Upvote\" matTooltipPosition=\"below\" (click)=\"upvote()\">\r\n <mat-icon>thumb_up</mat-icon>\r\n </button>\r\n <button mat-icon-button matTooltip=\"Report\" matTooltipPosition=\"below\" (click)=\"report()\">\r\n <mat-icon>report</mat-icon>\r\n </button>\r\n</div>","import { Component, Input, ViewChild, ElementRef, Output } from \"@angular/core\";\r\nimport { User, ChatMessage } from '@banta/common';\r\nimport { Subject, Subscription } from 'rxjs';\r\nimport { ChatBackendBase } from \"../../chat-backend-base\";\r\nimport { ChatSourceBase } from \"../../chat-source-base\";\r\n\r\n@Component({\r\n selector: 'banta-chat-view',\r\n templateUrl: './chat-view.component.html',\r\n styleUrls: ['./chat-view.component.scss']\r\n})\r\nexport class ChatViewComponent {\r\n constructor(\r\n private backend: ChatBackendBase,\r\n private elementRef : ElementRef<HTMLElement>\r\n ) {\r\n\r\n }\r\n\r\n private _sourceSubs = new Subscription();\r\n private _source : ChatSourceBase;\r\n\r\n @Input()\r\n get source() {\r\n return this._source;\r\n }\r\n\r\n private _selected = new Subject<ChatMessage>();\r\n private _selected$ = this._selected.asObservable();\r\n private _reported = new Subject<ChatMessage>();\r\n private _reported$ = this._reported.asObservable();\r\n private _upvoted = new Subject<ChatMessage>();\r\n private _upvoted$ = this._upvoted.asObservable();\r\n private _userSelected = new Subject<ChatMessage>();\r\n private _userSelected$ = this._userSelected.asObservable();\r\n private _received = new Subject<ChatMessage>();\r\n private _received$ = this._received.asObservable();\r\n\r\n @Output() get selected() { return this._selected$; }\r\n @Output() get userSelected() { return this._userSelected$; }\r\n @Output() get reported() { return this._reported$; }\r\n @Output() get upvoted() { return this._upvoted$; }\r\n @Output() get received() { return this._received$; }\r\n\r\n set source(value) {\r\n if (this._sourceSubs) {\r\n this._sourceSubs.unsubscribe();\r\n this._sourceSubs = null;\r\n }\r\n\r\n this._source = value;\r\n\r\n this.messages = [];\r\n\r\n if (value) {\r\n this._sourceSubs = new Subscription();\r\n this.messages = value.messages.slice();\r\n\r\n this._sourceSubs.add(this._source.messageReceived.subscribe(msg => this.messageReceived(msg)));\r\n this._sourceSubs.add(this._source.messageSent.subscribe(msg => this.messageSent(msg)));\r\n\r\n this._sourceSubs.add(\r\n this.backend.userChanged\r\n .subscribe(user => this.currentUser = user)\r\n );\r\n \r\n this.getInitialMessages();\r\n }\r\n }\r\n\r\n private async getInitialMessages() {\r\n let messages = (await this._source.getExistingMessages());\r\n messages.forEach(m => m.transientState ??= {});\r\n this.messages = messages.slice().reverse();\r\n this.sortMessages();\r\n }\r\n\r\n private sortMessages() {\r\n if (!this.source)\r\n return;\r\n \r\n let sorter: (a: ChatMessage, b: ChatMessage) => number;\r\n\r\n sorter = (a, b) => (a.sentAt - b.sentAt);\r\n\r\n this.messages.sort(sorter);\r\n }\r\n\r\n messages : ChatMessage[] = [];\r\n currentUser : User;\r\n\r\n @ViewChild('messageContainer')\r\n messageContainer : ElementRef<HTMLElement>;\r\n\r\n @Input() maxMessages : number = 200;\r\n @Input() emptyLabel = 'Be the first to chat';\r\n\r\n private addMessage(message : ChatMessage) {\r\n if (this.messages.length > this.maxMessages + 1) {\r\n while (this.messages.length > this.maxMessages)\r\n this.messages.shift();\r\n }\r\n\r\n this.messages.push(message);\r\n this.sortMessages();\r\n }\r\n\r\n private messageReceived(message : ChatMessage) {\r\n this.addMessage(message);\r\n this._received.next(message);\r\n\r\n if (this.isScrolledToLatest())\r\n setTimeout(() => this.scrollToLatest());\r\n }\r\n\r\n isScrolledToLatest() {\r\n if (!this.messageContainer)\r\n return false;\r\n\r\n let el = this.messageContainer.nativeElement;\r\n let currentScroll = el.scrollTop;\r\n let currentTotal = el.scrollHeight - el.offsetHeight;\r\n \r\n return currentScroll > currentTotal - 10;\r\n }\r\n\r\n private messageSent(message : ChatMessage) {\r\n this.addMessage(message);\r\n \r\n if (!this.messageContainer)\r\n return;\r\n\r\n setTimeout(() => this.scrollToLatest());\r\n }\r\n\r\n scrollToLatest() {\r\n if (!this.messageContainer)\r\n return;\r\n \r\n let el = this.messageContainer.nativeElement;\r\n el.scrollTop = el.scrollHeight;\r\n }\r\n\r\n jumpTo(message : ChatMessage) {\r\n let element = this.elementRef.nativeElement;\r\n let messageElement = element.querySelector(`banta-chat-message[data-id=\"${message.id}\"]`)\r\n\r\n if (!messageElement) {\r\n alert(`could not find message ${message.id}`);\r\n return;\r\n }\r\n\r\n messageElement.scrollIntoView({ behavior: 'smooth' });\r\n\r\n this.flashMessage(message);\r\n }\r\n\r\n flashMessage(message : ChatMessage) {\r\n if (!message)\r\n return;\r\n \r\n this.flashedMessageId = message.id;\r\n //setTimeout(() => this.flashedMessageId = null, 250);\r\n }\r\n\r\n flashedMessageId : string;\r\n\r\n\r\n mentionsMe(message : ChatMessage) {\r\n if (!this.currentUser)\r\n return false;\r\n\r\n if (message.message.includes(`@${this.currentUser.username}`))\r\n return true;\r\n \r\n return false;\r\n }\r\n \r\n upvoteMessage(message : ChatMessage) {\r\n this._upvoted.next(message);\r\n }\r\n\r\n reportMessage(message : ChatMessage) {\r\n this._reported.next(message);\r\n }\r\n\r\n selectMessage(message : ChatMessage) {\r\n this._selected.next(message);\r\n }\r\n\r\n selectMessageUser(message : ChatMessage) {\r\n this._userSelected.next(message);\r\n }\r\n\r\n avatarForUser(user : User) {\r\n if (user && user.avatarUrl) {\r\n let url = user.avatarUrl;\r\n return `url(${url})`;\r\n }\r\n\r\n return null;\r\n }\r\n}","<div class=\"message-container\" #messageContainer>\r\n <ng-content select=\"[data-before]\"></ng-content>\r\n \r\n <div class=\"empty\" *ngIf=\"messages.length === 0\">\r\n {{emptyLabel}}\r\n </div>\r\n \r\n <ng-container *ngFor=\"let message of messages\">\r\n <banta-chat-message\r\n *ngIf=\"!message.hidden\"\r\n [message]=\"message\"\r\n [class.highlight]=\"mentionsMe(message)\" \r\n [class.flash]=\"message.id === flashedMessageId\"\r\n (selected)=\"selectMessage(message)\"\r\n (upvoted)=\"upvoteMessage(message)\"\r\n (reported)=\"reportMessage(message)\"\r\n (userSelected)=\"selectMessageUser(message)\"\r\n [attr.data-id]=\"message.id\"\r\n >\r\n </banta-chat-message>\r\n </ng-container>\r\n <ng-content select=\":not([data-before])\"></ng-content>\r\n</div>","import { Component, Input, Output, ViewChild, ElementRef } from \"@angular/core\";\r\nimport { Subject, Observable, Subscription } from 'rxjs';\r\n\r\nimport { User, ChatMessage, NewMessageForm } from '@banta/common';\r\nimport { ChatViewComponent } from '../chat-view/chat-view.component';\r\nimport { ChatBackendBase } from \"../../chat-backend-base\";\r\nimport { ChatSourceBase } from \"../../chat-source-base\";\r\n\r\n/**\r\n * Chat component\r\n */\r\n@Component({\r\n selector: 'banta-chat',\r\n templateUrl: './banta-chat.component.html',\r\n styleUrls: ['./banta-chat.component.scss']\r\n})\r\nexport class BantaChatComponent {\r\n constructor(\r\n private backend : ChatBackendBase\r\n ) {\r\n }\r\n\r\n private _source : ChatSourceBase;\r\n private _subs = new Subscription();\r\n user : User = null;\r\n\r\n @Input() shouldInterceptMessageSend?: (message: ChatMessage, source: ChatSourceBase) => boolean | Promise<boolean>;\r\n @Input() url: string;\r\n\r\n ngOnInit() {\r\n this._subs.add(this.backend.userChanged.subscribe(user => this.user = user));\r\n }\r\n\r\n ngOnDestroy() {\r\n this._subs.unsubscribe();\r\n }\r\n\r\n @Input()\r\n get source() : ChatSourceBase {\r\n return this._source;\r\n }\r\n\r\n set source(value) {\r\n this._source = value;\r\n }\r\n\r\n @Input()\r\n get topicID() : string {\r\n return this._source.identifier;\r\n }\r\n\r\n set topicID(value) {\r\n this.setSourceFromTopicID(value);\r\n }\r\n\r\n private _metadata: Record<string, any> = {};\r\n\r\n /**\r\n * Arbitrary metadata to send to the chat server. This can be used to provide context about the client to the server\r\n * for things like validating authorization and other uses.\r\n */\r\n @Input() get metadata() { return this._metadata; }\r\n set metadata(value) {\r\n if (JSON.stringify(this._metadata) !== JSON.stringify(value)) {\r\n this._metadata = value;\r\n this.reloadSource();\r\n }\r\n }\r\n\r\n private _reloadSourceTimeout;\r\n private reloadSource() {\r\n clearTimeout(this._reloadSourceTimeout);\r\n this._reloadSourceTimeout = setTimeout(() => {\r\n this.setSourceFromTopicID(this.topicID);\r\n });\r\n }\r\n\r\n private async setSourceFromTopicID(topicID : string) {\r\n if (this._source && this._source.close)\r\n this._source.close();\r\n this._source = null;\r\n this._source = await this.backend.getSourceForTopic(topicID, { \r\n metadata: this.metadata\r\n });\r\n }\r\n\r\n @Input() signInLabel = 'Sign In';\r\n @Input() sendLabel = 'Send';\r\n @Input() permissionDeniedLabel = 'Send';\r\n @Input() messageFieldPlaceholder = 'Chat';\r\n @Input() emptyLabel = 'Be the first to chat';\r\n\r\n private _selected = new Subject<ChatMessage>();\r\n private _selected$ = this._selected.asObservable();\r\n private _reported = new Subject<ChatMessage>();\r\n private _reported$ = this._reported.asObservable();\r\n private _upvoted = new Subject<ChatMessage>();\r\n private _upvoted$ = this._upvoted.asObservable();\r\n private _userSelected = new Subject<ChatMessage>();\r\n private _userSelected$ = this._userSelected.asObservable();\r\n private _permissionDeniedError = new Subject<string>();\r\n private _permissionDeniedError$ = this._permissionDeniedError.asObservable();\r\n private _signInSelected = new Subject<void>();\r\n private _signInSelected$ = this._signInSelected.asObservable();\r\n private _received = new Subject<ChatMessage>();\r\n private _received$ = this._received.asObservable();\r\n\r\n @Output() get selected() { return this._selected$; }\r\n @Output() get reported() { return this._reported$; }\r\n @Output() get upvoted() { return this._upvoted$; }\r\n @Output() get userSelected() { return this._userSelected$; }\r\n @Output() get permissionDeniedError() { return this._permissionDeniedError$; }\r\n @Output() get signInSelected() { return this._signInSelected$; }\r\n @Output() get received() { return this._received$; }\r\n\r\n onReceived(message: ChatMessage) {\r\n this._received.next(message);\r\n }\r\n\r\n showEmojiPanel = false;\r\n\r\n showSignIn() {\r\n this._signInSelected.next();\r\n }\r\n\r\n sendPermissionError(message: string) {\r\n this._permissionDeniedError.next(message);\r\n }\r\n\r\n insertEmoji(emoji) {\r\n let message = this.newMessage.message || '';\r\n\r\n this.newMessage.message = message + emoji;\r\n }\r\n\r\n onKeyDown(event : KeyboardEvent) {\r\n // TODO\r\n }\r\n\r\n @ViewChild('chatView') chatView : ChatViewComponent;\r\n @ViewChild('input') inputElementRef: ElementRef<HTMLInputElement>;\r\n\r\n jumpToMessage(message : ChatMessage) {\r\n if (this.chatView)\r\n this.chatView.jumpTo(message);\r\n }\r\n\r\n select(message : ChatMessage) {\r\n this._selected.next(message);\r\n }\r\n\r\n selectUser(message : ChatMessage) {\r\n this._userSelected.next(message);\r\n }\r\n\r\n report(message : ChatMessage) {\r\n this._reported.next(message);\r\n }\r\n\r\n async upvote(message : ChatMessage) {\r\n await this.source.likeMessage(message.id);\r\n this._upvoted.next(message);\r\n }\r\n\r\n get canChat() {\r\n if (!this.user)\r\n return false;\r\n\r\n // TODO\r\n // if (!this.user.permissions)\r\n // return true;\r\n\r\n // if (!this.user.permissions.canChat)\r\n // return true;\r\n\r\n // return this.user.permissions?.canChat(this.source);\r\n \r\n return true;\r\n }\r\n\r\n newMessage : NewMessageForm = {};\r\n\r\n async sendMessage() {\r\n if (!this.source)\r\n return;\r\n\r\n let text = (this.newMessage.message || '').trim();\r\n this.newMessage.message = '';\r\n\r\n if (text === '')\r\n return;\r\n\r\n let message : ChatMessage = {\r\n user: null,\r\n sentAt: Date.now(),\r\n likes: 0,\r\n url: this.url ?? (typeof window !== 'undefined' ? location.href : undefined),\r\n message: text\r\n };\r\n\r\n try {\r\n const intercept = await this.shouldInterceptMessageSend?.(message, this.source);\r\n if (!intercept) {\r\n await this.source.send(message);\r\n }\r\n\r\n this.chatView.scrollToLatest();\r\n this.inputElementRef.nativeElement.focus();\r\n } catch (e) {\r\n console.error(`Failed to send message: `, message);\r\n console.error(e);\r\n }\r\n }\r\n}\r\n","<banta-chat-view \r\n #chatView\r\n [source]=\"source\"\r\n [emptyLabel]=\"emptyLabel\"\r\n (upvoted)=\"upvote($event)\"\r\n (reported)=\"report($event)\"\r\n (selected)=\"select($event)\"\r\n (received)=\"onReceived($event)\"\r\n (userSelected)=\"selectUser($event)\"\r\n ></banta-chat-view>\r\n\r\n<form class=\"new-message\" (submit)=\"sendMessage()\">\r\n \r\n <div class=\"entry-container\">\r\n <input\r\n #input\r\n type=\"text\"\r\n name=\"message\" \r\n autocomplete=\"off\"\r\n enterkeyhint=\"send\"\r\n [placeholder]=\"messageFieldPlaceholder\"\r\n (keydown)=\"onKeyDown($event)\"\r\n [(ngModel)]=\"newMessage.message\" />\r\n \r\n <emoji-selector-button\r\n (selected)=\"insertEmoji($event)\"\r\n overlayY=\"bottom\"\r\n overlayX=\"end\"\r\n originY=\"top\"\r\n ></emoji-selector-button>\r\n </div>\r\n\r\n <div class=\"actions\">\r\n\r\n <ng-container *ngIf=\"!user\">\r\n <button type=\"button\" (click)=\"showSignIn()\" mat-raised-button color=\"primary\">{{signInLabel}}</button>\r\n </ng-container>\r\n <ng-container *ngIf=\"user\">\r\n <button *ngIf=\"canChat\" [disabled]=\"!newMessage.message\" mat-raised-button color=\"primary\">{{sendLabel}}</button>\r\n <button *ngIf=\"!canChat\" type=\"button\" (click)=\"sendPermissionError()\" mat-raised-button color=\"primary\">{{permissionDeniedLabel}}</button>\r\n </ng-container>\r\n </div>\r\n</form>","import { Component, Input, Output } from '@angular/core';\r\nimport { ChatMessage } from '@banta/common';\r\nimport { Subject, Observable } from 'rxjs';\r\nimport { ChatBackendBase } from '../chat-backend-base';\r\n\r\n@Component({\r\n selector: 'banta-live-comment',\r\n template: `\r\n <banta-comment \r\n *ngIf=\"message\"\r\n [message]=\"message\"\r\n (upvoted)=\"upvote()\"\r\n (reported)=\"report()\"\r\n (selected)=\"select()\"\r\n ></banta-comment>\r\n `,\r\n styles: [``]\r\n})\r\nexport class LiveCommentComponent {\r\n constructor(\r\n private backend : ChatBackendBase\r\n ) {\r\n\r\n }\r\n\r\n private _message : ChatMessage;\r\n private _upvoted = new Subject<void>();\r\n private _reported = new Subject<void>();\r\n private _selected = new Subject<void>();\r\n\r\n @Output()\r\n get upvoted() : Observable<void> {\r\n return this._upvoted;\r\n }\r\n \r\n @Output()\r\n get reported() : Observable<void> {\r\n return this._reported;\r\n }\r\n\r\n @Output()\r\n get selected() : Observable<void> {\r\n return this._selected;\r\n }\r\n \r\n @Input()\r\n get message() : ChatMessage {\r\n return this._message;\r\n }\r\n\r\n private unsubscribe : Function;\r\n\r\n set message(value) {\r\n let originalId = null;\r\n if (this._message)\r\n originalId = this._message.id;\r\n \r\n this._message = value;\r\n\r\n if (value && originalId === value.id) {\r\n return;\r\n }\r\n \r\n if (this.unsubscribe)\r\n this.unsubscribe();\r\n \r\n if (value) {\r\n this.unsubscribe = this.backend.watchMessage(value, message => this.message = message);\r\n }\r\n }\r\n\r\n report() {\r\n this._reported.next();\r\n }\r\n \r\n upvote() {\r\n this._upvoted.next();\r\n }\r\n\r\n select() {\r\n this._selected.next();\r\n }\r\n}","import { Component, Input, Output } from '@angular/core';\r\nimport { ChatMessage } from '@banta/common';\r\nimport { Subject, Observable } from 'rxjs';\r\nimport { ChatBackendBase } from '../chat-backend-base';\r\n\r\n@Component({\r\n selector: 'banta-live-chat-message',\r\n template: `\r\n <banta-chat-message \r\n *ngIf=\"message\"\r\n [message]=\"message\"\r\n (upvoted)=\"upvote()\"\r\n (reported)=\"report()\"\r\n (selected)=\"select()\"\r\n ></banta-chat-message>\r\n `,\r\n styles: [``]\r\n})\r\nexport class LiveChatMessageComponent {\r\n constructor(\r\n private backend : ChatBackendBase\r\n ) {\r\n\r\n }\r\n\r\n private _message : ChatMessage;\r\n private _upvoted = new Subject<void>();\r\n private _reported = new Subject<void>();\r\n private _selected = new Subject<void>();\r\n\r\n @Output()\r\n get upvoted() : Observable<void> {\r\n return this._upvoted;\r\n }\r\n \r\n @Output()\r\n get reported() : Observable<void> {\r\n return this._reported;\r\n }\r\n\r\n @Output()\r\n get selected() : Observable<void> {\r\n return this._selected;\r\n }\r\n \r\n @Input()\r\n get message() : ChatMessage {\r\n return this._message;\r\n }\r\n\r\n private unsubscribe : Function;\r\n\r\n set message(value) {\r\n let originalId = null;\r\n if (this._message)\r\n originalId = this._message.id;\r\n \r\n this._message = value;\r\n\r\n if (value && originalId === value.id) {\r\n return;\r\n }\r\n\r\n if (this.unsubscribe)\r\n this.unsubscribe();\r\n \r\n if (value) {\r\n this.unsubscribe = this.backend.watchMessage(value, message => this.message = message);\r\n }\r\n }\r\n\r\n report() {\r\n this._reported.next();\r\n }\r\n \r\n upvote() {\r\n this._upvoted.next();\r\n }\r\n\r\n select() {\r\n this._selected.next();\r\n }\r\n}","import { Component, Input, Output } from \"@angular/core\";\r\nimport { ChatMessage } from '@banta/common';\r\nimport { Subject, Observable } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'banta-live-message',\r\n template: `\r\n <ng-container *ngIf=\"message\">\r\n <banta-live-chat-message\r\n *ngIf=\"viewType === 'chat'\"\r\n [message]=\"message\"\r\n (upvoted)=\"upvote(message)\"\r\n (reported)=\"report(message)\"\r\n (selected)=\"select(message)\">\r\n </banta-live-chat-message>\r\n\r\n <banta-live-comment \r\n *ngIf=\"viewType === 'comment'\"\r\n [message]=\"message\"\r\n (upvoted)=\"upvote(message)\"\r\n (reported)=\"report(message)\"\r\n (selected)=\"select(message)\">\r\n </banta-live-comment>\r\n </ng-container>\r\n `,\r\n styles: [``]\r\n})\r\nexport class LiveMessageComponent {\r\n constructor() {\r\n\r\n }\r\n\r\n private _message : ChatMessage;\r\n private _upvoted = new Subject<void>();\r\n private _reported = new Subject<void>();\r\n private _selected = new Subject<void>();\r\n\r\n viewType : string;\r\n\r\n @Output() \r\n get upvoted(): Observable<void> {\r\n return this._upvoted;\r\n }\r\n\r\n @Output() \r\n get reported(): Observable<void> {\r\n return this._reported;\r\n }\r\n \r\n @Output() \r\n get selected(): Observable<void> {\r\n return this._selected;\r\n }\r\n\r\n @Input()\r\n get message() : ChatMessage {\r\n return this._message;\r\n }\r\n\r\n set message(value) {\r\n this._message = value;\r\n this.viewType = this.getViewType(value);\r\n }\r\n\r\n private getViewType(message : ChatMessage) {\r\n if (message.topicId.endsWith('_firehose'))\r\n return 'chat';\r\n else if (message.topicId.endsWith('_thepoint'))\r\n return 'comment';\r\n\r\n return 'comment';\r\n }\r\n\r\n upvote() {\r\n this._upvoted.next();\r\n }\r\n\r\n report() {\r\n this._reported.next();\r\n }\r\n\r\n select() {\r\n this._selected.next();\r\n }\r\n\r\n}","import { Component, Input, ViewChild, HostBinding } from \"@angular/core\";\r\nimport { NewMessageForm, ChatMessage, User, Notification } from '@banta/common';\r\nimport { Subject, Observable, Subscription } from 'rxjs';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { BantaChatComponent } from '../chat';\r\nimport { Output } from \"@angular/core\";\r\nimport { ChatBackendBase } from \"../chat-backend-base\";\r\nimport { ChatSourceBase } from \"../chat-source-base\";\r\n\r\n/**\r\n * Unified chat and comments component\r\n */\r\n@Component({\r\n selector: `banta`,\r\n templateUrl: './banta.component.html',\r\n styleUrls: [ './banta.component.scss' ]\r\n})\r\nexport class BantaComponent {\r\n constructor(\r\n private backend : ChatBackendBase,\r\n private matDialog : MatDialog\r\n ) {\r\n }\r\n\r\n firehoseSource : ChatSourceBase;\r\n pointSource : ChatSourceBase;\r\n\r\n private _topicID : string;\r\n private _subs = new Subscription();\r\n\r\n auxOpen = false;\r\n auxTitle = 'Notifications';\r\n auxMode = 'notifications';\r\n\r\n ngOnInit() {\r\n this._subs.add(this.backend.userChanged.subscribe(user => this.currentUser = user));\r\n this._subs.add(this.backend.notificationsChanged.subscribe(notifs => this.notifications = notifs));\r\n this._subs.add(this.backend.newNotification.subscribe(notif => {\r\n this.newNotifications = true;\r\n }));\r\n }\r\n \r\n mobileFocus : string = null;\r\n\r\n async sendPointSubMessage() {\r\n let text = (this.newPointSubMessage.message || '').trim();\r\n this.newPointSubMessage.message = '';\r\n\r\n if (text === '')\r\n return;\r\n \r\n let message : ChatMessage = {\r\n user: null,\r\n sentAt: Date.now(),\r\n likes: 0,\r\n message: text\r\n };\r\n\r\n try {\r\n await this.pointSubChat.send(message);\r\n } catch (e) {\r\n console.error(`Failed to send point sub-message:`);\r\n console.error(e);\r\n }\r\n }\r\n\r\n @ViewChild('firehose', { static: true })\r\n firehose : BantaChatComponent;\r\n\r\n async goToMessage(message : ChatMessage) {\r\n\r\n let targetMessage = message;\r\n\r\n if (message.parentMessageId) {\r\n // jump to the parent message thread...\r\n\r\n let parentMessage: ChatMessage;\r\n \r\n try {\r\n parentMessage = await this.backend.getMessage(message.topicId, message.parentMessageId);\r\n } catch (e) {\r\n console.error(`Received exception while fetching parent message:`);\r\n console.error(e);\r\n }\r\n\r\n if (!parentMessage) {\r\n console.error(`Failed to look up parent message ${message.topicId}/${message.parentMessageId}`);\r\n console.error(`Original message was:`);\r\n console.dir(targetMessage);\r\n return;\r\n }\r\n\r\n message = parentMessage;\r\n }\r\n\r\n let viewType = this.getViewType(message);\r\n\r\n if (viewType === 'comment') {\r\n if (this.pointSubChat) {\r\n if (this.pointSubChat.close)\r\n this.pointSubChat.close();\r\n this.pointSubChat = null;\r\n }\r\n this.mobileFocus = 'points';\r\n this.pointOpen = message;\r\n this.pointSubChat = await this.backend.getSourceForThread(message.topicId, message.id);\r\n this.pointOpen = await this.backend.refreshMessage(message);\r\n this.newPointSubMessage = {};\r\n } else if (viewType === 'chat') {\r\n this.mobileFocus = 'firehose';\r\n this.firehose.jumpToMessage(message);\r\n }\r\n }\r\n\r\n notifications : Notification[];\r\n newNotifications = false;\r\n \r\n pointUnfocus() {\r\n this.pointOpen = null;\r\n if (this.pointSubChat) {\r\n if (this.pointSubChat.close)\r\n this.pointSubChat.close();\r\n this.pointSubChat = null;\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n this._subs.unsubscribe();\r\n }\r\n\r\n showAux(title : string, mode : string) {\r\n this.auxOpen = true;\r\n this.auxTitle = title;\r\n this.auxMode = mode;\r\n this.mobileFocus = 'aux';\r\n }\r\n\r\n showNotifications() {\r\n this.showAux('Notifications', 'notifications');\r\n }\r\n\r\n @Input()\r\n get topicID() : string {\r\n return this._topicID;\r\n }\r\n\r\n @Input() chatLabel = 'Chat';\r\n @Input() commentsLabel = 'Comments';\r\n\r\n set topicID(value) {\r\n this._topicID = value;\r\n\r\n this.close();\r\n this.connectToTopic(this._topicID);\r\n }\r\n\r\n private async connectToTopic(id : string) {\r\n this.firehoseSource = await this.backend.getSourceForTopic(`${id}_firehose`);\r\n this.pointSource = await this.backend.getSourceForTopic(`${id}_thepoint`);\r\n }\r\n\r\n private _signInSelected = new Subject<void>();\r\n\r\n @Output()\r\n get signInSelected(): Observable<void> {\r\n return this._signInSelected;\r\n }\r\n\r\n showSignIn() {\r\n this._signInSelected.next();\r\n }\r\n\r\n close() {\r\n if (this.firehoseSource) {\r\n if (this.firehoseSource.close)\r\n this.firehoseSource.close();\r\n this.firehoseSource = null;\r\n }\r\n\r\n if (this.pointSource) {\r\n if (this.pointSource.close)\r\n this.pointSource.close();\r\n this.pointSource = null;\r\n }\r\n }\r\n\r\n @HostBinding('class.point-focus')\r\n get hasPoint() {\r\n return this.pointOpen != null;\r\n }\r\n\r\n pointOpen : ChatMessage = null;\r\n pointSubChat : ChatSourceBase = null;\r\n\r\n closeAux() {\r\n this.auxOpen = false;\r\n this.mobileFocus = 'firehose';\r\n }\r\n\r\n getViewType(message : ChatMessage) {\r\n if (message.topicId.endsWith('_firehose'))\r\n return 'chat';\r\n else if (message.topicId.endsWith('_thepoint'))\r\n return 'comment';\r\n\r\n return 'comment';\r\n }\r\n\r\n async upvoteMessage(message : ChatMessage) {\r\n // TODO\r\n //await this.backend.likeMessage(message.id);\r\n }\r\n\r\n showProfile(user : User) {\r\n this.profileUser = user;\r\n this.showAux(`@${user.username}'s Profile`, 'profile');\r\n }\r\n\r\n profileUser : User;\r\n \r\n reportedMessage : ChatMessage;\r\n\r\n sendReport(message : ChatMessage) {\r\n this.auxOpen = false;\r\n alert('would send report');\r\n }\r\n\r\n reportMessage(message : ChatMessage) {\r\n this.reportedMessage = message;\r\n this.showAux(`Report message from @${message.user.username}`, 'report');\r\n }\r\n\r\n currentUser : User;\r\n\r\n newPointSubMessage : NewMessageForm = {};\r\n\r\n genericAvatarUrl = 'https://gravatar.com/avatar/915c804e0be607a4ad766ddadea5c48a?s=512&d=https://codepen.io/assets/avatars/user-avatar-512x512-6e240cf350d2f1cc07c2bed234c3a3bb5f1b237023c204c782622e80d6b212ba.png';\r\n}","\r\n<mat-menu #userMenu=\"matMenu\">\r\n <ng-container *ngIf=\"currentUser\">\r\n <button [disabled]=\"true\" mat-menu-item>{{currentUser.displayName}} (@{{currentUser.username}})</button>\r\n <button mat-menu-item (click)=\"signOut()\">Sign Out</button>\r\n </ng-container>\r\n <ng-container *ngIf=\"!currentUser\">\r\n <button mat-menu-item>Sign In</button>\r\n </ng-container>\r\n <button mat-menu-item>Help</button>\r\n</mat-menu>\r\n\r\n<div class=\"tabs\">\r\n <div>\r\n <a mat-button (click)=\"mobileFocus = 'chat'\">{{chatLabel}}</a>\r\n <a mat-button (click)=\"mobileFocus = 'comments'\">{{commentsLabel}}</a>\r\n </div>\r\n <div class=\"spacer\"></div>\r\n <div>\r\n <ng-container *ngIf=\"currentUser\">\r\n <button mat-button [matMenuTriggerFor]=\"userMenu\">\r\n @{{currentUser.username}}\r\n </button>\r\n <button mat-icon-button (click)=\"showNotifications()\">\r\n <mat-icon>notification_important</mat-icon>\r\n </button>\r\n </ng-container>\r\n \r\n <button mat-button *ngIf=\"!currentUser\" (click)=\"showSignIn()\">\r\n Sign In\r\n </button>\r\n </div>\r\n</div>\r\n\r\n<div class=\"firehose\" [class.focus]=\"mobileFocus === 'chat'\">\r\n <header>\r\n <div>\r\n <label (click)=\"mobileFocus = 'chat'\">{{chatLabel}}</label>\r\n <div class=\"spacer\"></div>\r\n\r\n <ng-container *ngIf=\"currentUser\">\r\n <button mat-button [matMenuTriggerFor]=\"userMenu\">\r\n @{{currentUser.username}}\r\n </button>\r\n <button mat-icon-button (click)=\"showNotifications()\">\r\n <mat-icon>notification_important</mat-icon>\r\n </button>\r\n </ng-container>\r\n \r\n <button mat-button *ngIf=\"!currentUser\" (click)=\"showSignIn()\">\r\n Sign In\r\n </button>\r\n </div>\r\n </header>\r\n <banta-chat \r\n #firehose\r\n [source]=\"firehoseSource\"\r\n (signInSelected)=\"showSignIn()\"\r\n (upvoted)=\"upvoteMessage($event)\"\r\n (userSelected)=\"showProfile($event.user)\"\r\n (reported)=\"reportMessage($event)\"\r\n ></banta-chat>\r\n</div>\r\n\r\n<div class=\"aux\" [class.focus]=\"mobileFocus === 'aux'\" [class.open]=\"auxOpen\">\r\n <header>\r\n <div>\r\n <label>{{auxTitle}}</label>\r\n <div class=\"spacer\"></div>\r\n <button mat-icon-button (click)=\"auxOpen = false\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </div>\r\n </header>\r\n <div class=\"aux-contents\">\r\n <ng-container *ngIf=\"auxMode === 'profile'\">\r\n <ng-container *ngIf=\"profileUser\">\r\n\r\n <div>\r\n <strong style=\"font-size: 125%;\">\r\n {{profileUser.displayName}}\r\n </strong>\r\n @{{profileUser.username}}\r\n </div>\r\n\r\n <br/>\r\n <strong>Top Messages</strong>\r\n\r\n <div>\r\n <em>Not yet available</em>\r\n </div>\r\n\r\n <br/>\r\n <strong>Recent Messages</strong>\r\n\r\n <div>\r\n <em>Not yet available</em>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"auxMode === 'report'\">\r\n <p>Are you sure you want to report this message?</p>\r\n\r\n <banta-live-message [message]=\"reportedMessage\"></banta-live-message>\r\n\r\n <div style=\"text-align: center;\">\r\n <button mat-raised-button color=\"primary\" (click)=\"sendReport(reportedMessage)\">Yes, Report</button>\r\n \r\n <button mat-raised-button color=\"secondary\" (click)=\"auxOpen = false\">No, Cancel</button>\r\n </div>\r\n\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"auxMode === 'notifications'\">\r\n\r\n <div *ngIf=\"!notifications || notifications.length === 0\">\r\n <em>You do not have any notifications yet</em>\r\n </div>\r\n \r\n <div class=\"notifications\">\r\n <div class=\"notification\" *ngFor=\"let notif of notifications\">\r\n <div>\r\n <ng-container *ngIf=\"notif.type === 'upvote'\">\r\n @{{notif.message?.user?.username}} upvoted your post\r\n \r\n <banta-live-message\r\n [message]=\"notif.message\"\r\n (upvoted)=\"upvoteMessage(notif.message)\"\r\n (reported)=\"reportMessage(notif.message)\"\r\n (selected)=\"goToMessage(notif.message)\">\r\n </banta-live-message>\r\n\r\n </ng-container>\r\n <ng-container *ngIf=\"notif.type === 'notice'\">\r\n <div>\r\n {{notif.message}}\r\n </div>\r\n <a mat-button target=\"_blank\" href=\"{{notif.actionUrl}}\">\r\n {{notif.actionLabel}}\r\n </a>\r\n </ng-container>\r\n <ng-container *ngIf=\"notif.type === 'mention'\">\r\n You were mentioned by @{{notif.message?.user?.username}}\r\n\r\n <banta-live-message\r\n [message]=\"notif.message\"\r\n (upvoted)=\"upvoteMessage(notif.message)\"\r\n (reported)=\"reportMessage(notif.message)\"\r\n (selected)=\"goToMessage(notif.message)\">\r\n </banta-live-message>\r\n\r\n </ng-container>\r\n <ng-container *ngIf=\"notif.type === 'reply'\">\r\n @{{notif.replyMessage?.user?.username}} replied to your post\r\n \r\n <banta-live-message\r\n [message]=\"notif.replyMessage\"\r\n (upvoted)=\"upvoteMessage(notif.replyMessage)\"\r\n (reported)=\"reportMessage(notif.replyMessage)\"\r\n (selected)=\"goToMessage(notif.replyMessage)\">\r\n </banta-live-message>\r\n </ng-container>\r\n </div>\r\n\r\n <banta-timestamp [value]=\"notif.sentAt\"></banta-timestamp>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n</div>\r\n<div class=\"points\" [class.focus]=\"mobileFocus === 'points'\">\r\n <header>\r\n <div>\r\n <label>{{commentsLabel}}</label>\r\n </div>\r\n </header>\r\n <div class=\"point-focus\">\r\n <div class=\"actions\">\r\n <button mat-button (click)=\"pointUnfocus()\">\r\n <mat-icon>arrow_back</mat-icon>\r\n Back\r\n </button>\r\n\r\n <div class=\"spacer\"></div>\r\n \r\n <ng-container *ngIf=\"pointOpen\">\r\n <div class=\"counted-action\">\r\n <div class=\"count-indicator\"> \r\n {{pointOpen.likes}}\r\n </div>\r\n <button mat-icon-button>\r\n <mat-icon>thumb_up</mat-icon>\r\n </button>\r\n </div>\r\n\r\n </ng-container>\r\n </div>\r\n\r\n <div *ngIf=\"!pointSubChat\">\r\n Error: No subchat\r\n </div>\r\n \r\n <banta-comment-view\r\n class=\"subcomments\"\r\n *ngIf=\"pointSubChat\"\r\n [newestLast]=\"true\"\r\n [allowReplies]=\"false\"\r\n [source]=\"pointSubChat\"\r\n (upvoted)=\"upvoteMessage($event)\"\r\n (reported)=\"reportMessage($event)\"\r\n (userSelected)=\"showProfile($event.user)\"\r\n >\r\n \r\n <banta-comment\r\n class=\"focused-comment\"\r\n data-before\r\n *ngIf=\"pointOpen\"\r\n [showReplyAction]=\"false\"\r\n [message]=\"pointOpen\"\r\n [readonly]=\"pointSubChat?.readonly\"\r\n (upvoted)=\"upvoteMessage(pointOpen)\"\r\n (userSelected)=\"showProfile(pointOpen.user)\"\r\n (reported)=\"reportMessage(pointOpen)\"\r\n ></banta-comment>\r\n \r\n <div class=\"message reply\">\r\n Reply:\r\n <form class=\"new-message\" (submit)=\"sendPointSubMessage()\">\r\n <textarea \r\n name=\"message\" \r\n (keydown)=\"newPointSubMessageKeyDown($event)\"\r\n [(ngModel)]=\"newPointSubMessage.message\"></textarea>\r\n \r\n <div class=\"actions\">\r\n <button [disabled]=\"!newPointSubMessage.message\" \r\n mat-raised-button color=\"primary\">Send</button>\r\n </div>\r\n </form>\r\n </div>\r\n </banta-comment-view>\r\n </div>\r\n <div class=\"points-section\">\r\n <banta-comments\r\n [source]=\"pointSource\"\r\n (signInSelected)=\"showSignIn()\"\r\n (upvoted)=\"upvoteMessage($event)\"\r\n (reported)=\"reportMessage($event)\"\r\n (selected)=\"goToMessage($event)\"\r\n (userSelected)=\"showProfile($event.user)\"\r\n ></banta-comments>\r\n </div>\r\n</div>","import { Component } from \"@angular/core\";\r\n\r\n@Component({\r\n selector: 'banta-logo',\r\n template: `banta`,\r\n styles: [\r\n `\r\n :host {\r\n font-family: 'Odibee Sans', sans-serif;\r\n font-size: 40pt;\r\n }\r\n\r\n :host.small {\r\n font-size: 30pt;\r\n }\r\n `\r\n ]\r\n})\r\nexport class BantaLogoComponent {\r\n\r\n}","import { NgModule } from \"@angular/core\";\r\nimport { ChatMessageComponent } from './chat-message/chat-message.component';\r\nimport { ChatViewComponent } from './chat-view/chat-view.component';\r\nimport { BantaChatComponent } from './banta-chat/banta-chat.component';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { EmojiModule } from '../emoji';\r\nimport { LiveChatMessageComponent } from './live-chat-message.component';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatIconModule } from '@angular/material/icon';\r\n\r\nconst COMPONENTS = [\r\n ChatMessageComponent,\r\n LiveChatMessageComponent,\r\n ChatViewComponent,\r\n BantaChatComponent\r\n];\r\n\r\n@NgModule({\r\n declarations: COMPONENTS,\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n MatIconModule,\r\n MatButtonModule,\r\n EmojiModule\r\n ],\r\n exports: COMPONENTS\r\n})\r\nexport class ChatModule {\r\n}","import { Component, Input, Output } from '@angular/core';\r\nimport { CommentsOrder } from \"@banta/common\";\r\nimport { Subject } from \"rxjs\";\r\n\r\n@Component({\r\n selector: 'banta-comment-sort',\r\n templateUrl: './comment-sort.component.html',\r\n styleUrls: ['./comment-sort.component.scss']\r\n})\r\nexport class CommentSortComponent {\r\n\r\n commentsOrder = CommentsOrder;\r\n private _sortChange = new Subject<CommentsOrder>();\r\n private _sort: CommentsOrder = CommentsOrder.LIKES;\r\n\r\n @Input() \r\n get sort() { \r\n return this._sort;\r\n }\r\n\r\n set sort(value) {\r\n if (this._sort !== value) {\r\n this._sort = value;\r\n setTimeout(() => this._sortChange.next(value));\r\n }\r\n }\r\n\r\n @Output()\r\n get sortChange() {\r\n return this._sortChange.asObservable();\r\n }\r\n}\r\n","<mat-form-field appearance=\"outline\" floatLabel=\"always\">\r\n <mat-label>Sort</mat-label>\r\n <mat-select [(value)]=\"sort\" >\r\n <mat-option [value]=\"commentsOrder.NEWEST\">Newest</mat-option>\r\n <mat-option [value]=\"commentsOrder.OLDEST\">Oldest</mat-option>\r\n <mat-option [value]=\"commentsOrder.LIKES\">Likes</mat-option>\r\n </mat-select>\r\n</mat-form-field>","import { OverlayModule } from '@angular/cdk/overlay';\r\nimport { PortalModule } from '@angular/cdk/portal';\r\nimport { TextFieldModule } from '@angular/cdk/text-field';\r\nimport { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatMenuModule } from '@angular/material/menu';\r\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\r\nimport { MatSelectModule } from \"@angular/material/select\";\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { BantaCommonModule } from '../common';\r\nimport { EmojiModule } from '../emoji';\r\nimport { AttachmentButtonComponent } from './attachment-button/attachment-button.component';\r\nimport { AttachmentScraperDirective } from './attachment-scraper.directive';\r\nimport { BantaCommentsComponent } from './banta-comments/banta-comments.component';\r\nimport { CommentFieldComponent } from './comment-field/comment-field.component';\r\nimport { CommentSortComponent } from \"./comment-sort/comment-sort.component\";\r\nimport { CommentViewComponent } from './comment-view/comment-view.component';\r\nimport { CommentComponent } from './comment/comment.component';\r\nimport { LiveCommentComponent } from './live-comment.component';\r\nimport { BantaReplySendOptionsDirective } from './reply-send-options.directive';\r\n\r\nconst COMPONENTS = [\r\n CommentComponent,\r\n CommentViewComponent,\r\n BantaCommentsComponent,\r\n LiveCommentComponent,\r\n CommentFieldComponent,\r\n CommentSortComponent,\r\n AttachmentButtonComponent,\r\n BantaReplySendOptionsDirective,\r\n AttachmentScraperDirective\r\n];\r\n\r\n@NgModule({\r\n declarations: COMPONENTS,\r\n imports: [\r\n CommonModule,\r\n TextFieldModule,\r\n FormsModule,\r\n MatIconModule,\r\n MatFormFieldModule,\r\n MatInputModule,\r\n MatButtonModule,\r\n MatMenuModule,\r\n MatProgressSpinnerModule,\r\n BantaCommonModule,\r\n EmojiModule,\r\n MatTooltipModule,\r\n MatSelectModule,\r\n OverlayModule,\r\n PortalModule\r\n ],\r\n exports: COMPONENTS\r\n})\r\nexport class CommentsModule {\r\n}\r\n","import { ChatMessage, ChatPermissions, CommentsOrder, DurableSocket, User } from \"@banta/common\";\r\nimport { BehaviorSubject, Subject, Subscription } from \"rxjs\";\r\nimport { RpcEvent, SocketRPC } from \"@banta/common\";\r\nimport { ChatSourceBase } from \"./chat-source-base\";\r\nimport { ChatBackend } from \"./chat-backend\";\r\nimport { v4 as uuid } from \"uuid\";\r\nimport { ChatSourceOptions } from \"./chat-backend-base\";\r\n\r\nexport type SignInState = 'signed-out' | 'signed-in' | 'signing-in';\r\n\r\nexport class ChatSource extends SocketRPC implements ChatSourceBase {\r\n constructor(\r\n readonly backend: ChatBackend,\r\n readonly identifier: string,\r\n readonly parentIdentifier: string,\r\n options: ChatSourceOptions\r\n ) {\r\n super();\r\n this.options = options ?? {};\r\n this.ready = new Promise<void>(resolve => this.markReady = resolve);\r\n }\r\n\r\n private options: ChatSourceOptions;\r\n private subscription = new Subscription();\r\n private markReady: () => void;\r\n\r\n readonly = false;\r\n canLoadMore = true;\r\n\r\n ready: Promise<void>;\r\n\r\n permissions: ChatPermissions;\r\n private _state: 'connected' | 'connecting' | 'lost' | 'restored' = 'connecting';\r\n\r\n get sortOrder() {\r\n return this.options?.sortOrder;\r\n }\r\n\r\n get filterMode() {\r\n return this.options?.filterMode;\r\n }\r\n\r\n get state() {\r\n return this._state;\r\n }\r\n\r\n set state(value) {\r\n this._state = value;\r\n setTimeout(() => this._connectionStateChanged.next(this._state));\r\n }\r\n\r\n private _connectionStateChanged = new Subject<'connected' | 'connecting' | 'lost' | 'restored'>();\r\n private _connectionStateChanged$ = this._connectionStateChanged.asObservable();\r\n get connectionStateChanged() { return this._connectionStateChanged$; }\r\n\r\n private wasRestored = false;\r\n\r\n async bind(socket: DurableSocket): Promise<this> {\r\n super.bind(socket);\r\n\r\n this.subscription.add(this.backend.userChanged.subscribe(() => this.authenticate()));\r\n\r\n socket.addEventListener('open', async () => {\r\n console.log(`[Banta/${this.identifier}] Socket is open`);\r\n });\r\n\r\n socket.addEventListener('error', async () => {\r\n console.log(`[Banta/${this.identifier}] Socket error`);\r\n });\r\n\r\n socket.addEventListener('lost', async () => {\r\n this.state = 'lost';\r\n });\r\n\r\n socket.addEventListener('restore', async () => {\r\n this.wasRestored = true;\r\n await this.authenticate();\r\n await this.subscribeToTopic();\r\n });\r\n\r\n try {\r\n await this.subscribeToTopic();\r\n } catch (e) {\r\n console.error(`[Banta/ChatSource] Error during initial subscribeToTopic: ${e.message}`);\r\n }\r\n \r\n return this;\r\n }\r\n\r\n private mapOrUpdateMessages(messages: ChatMessage[]): ChatMessage[] {\r\n return messages.map(message => this.mapOrUpdateMessage(message));\r\n }\r\n\r\n private mapOrUpdateMessage(message: ChatMessage): ChatMessage {\r\n let existingMessage = this.messageMap.get(message.id);\r\n if (existingMessage) {\r\n message = Object.assign(existingMessage, message);\r\n } else {\r\n this.messageMap.set(message.id, message);\r\n this._messageObserved.next(message);\r\n }\r\n\r\n return message;\r\n }\r\n\r\n /**\r\n * Ask server for messages that have occurred since the message with the given ID.\r\n * This is used during brief reconnects to avoid dropping messages, while also not \r\n * causing mobbing as everyone reconnects after an issue. The backend can choose to \r\n * not service this request, instead returning undefined. In that case, the client \r\n * is expected to fetch the existing messages and start state anew.\r\n * \r\n * TODO: this is not yet used\r\n * \r\n * @param id \r\n * @returns \r\n */\r\n async loadSince(id: string): Promise<ChatMessage[]> {\r\n try {\r\n let messages = await this.idempotentPeer.loadSince(id);\r\n if (messages) {\r\n messages = this.mapOrUpdateMessages(messages);\r\n }\r\n\r\n return messages;\r\n } catch (e) {\r\n console.error(`[Banta/${this.identifier}] Error occurred while trying to get existing messages:`);\r\n console.error(e);\r\n return [];\r\n }\r\n }\r\n\r\n async getExistingMessages(): Promise<ChatMessage[]> {\r\n try {\r\n let messages = await this.idempotentPeer.getExistingMessages(this.options.initialMessageCount ?? 20);\r\n messages = this.mapOrUpdateMessages(messages);\r\n return messages;\r\n } catch (e) {\r\n console.error(`[Banta/${this.identifier}] Error occurred while trying to get existing messages:`);\r\n console.error(e);\r\n return [];\r\n }\r\n }\r\n\r\n private async ensureConnection(errorMessage?: string) {\r\n // let reason = `Connection to chat services is not currently available.`;\r\n // if (this.state !== 'connected' && this.state !== 'restored') {\r\n // if (errorMessage)\r\n // throw new Error(`${errorMessage}: ${reason}`);\r\n // else\r\n // throw new Error(`${reason}`);\r\n // }\r\n }\r\n\r\n async editMessage(messageId: string, text: string): Promise<void> {\r\n await this.ensureConnection();\r\n await this.peer.editMessage(messageId, text);\r\n }\r\n\r\n private subscribeAttempt = 0;\r\n private _errorState: string;\r\n\r\n get errorState() {\r\n return this._errorState;\r\n }\r\n\r\n async subscribeToTopic() {\r\n try {\r\n await this.immediatePeer.subscribe(\r\n this.identifier, this.parentIdentifier, this.options.sortOrder, \r\n this.options.filterMode,\r\n this.options.metadata ?? {}\r\n );\r\n this.subscribeAttempt = 0;\r\n this._errorState = undefined;\r\n this.state = this.wasRestored ? 'restored' : 'connected';\r\n this.markReady();\r\n\r\n } catch (e) {\r\n console.error(`[Banta/${this.identifier}] Error while subscribing to topic`);\r\n console.error(e);\r\n\r\n this.state = 'lost';\r\n this._errorState = 'server-issue';\r\n\r\n this.subscribeAttempt += 1;\r\n let delay = Math.min(30*1000, (3*1000 * this.subscribeAttempt) * (1 + Math.random()));\r\n console.error(`[Banta/${this.identifier}] Waiting ${delay}ms before attempting to reconnect...`);\r\n\r\n setTimeout(() => {\r\n if (this.state === 'lost') {\r\n console.info(`Attempting reconnection after error in subscribeToTopic...`);\r\n this.reconnect();\r\n }\r\n }, delay);\r\n\r\n throw e;\r\n }\r\n }\r\n\r\n private _signInState: SignInState = 'signed-out';\r\n private _signInStateChanged = new BehaviorSubject<SignInState>(this._signInState);\r\n private _signInStateChanged$ = this._signInStateChanged.asObservable();\r\n\r\n get signInState() { return this._signInState; }\r\n get signInStateChanged() { return this._signInStateChanged$; }\r\n\r\n private setSignInState(state: SignInState) {\r\n this._signInState = state;\r\n this._signInStateChanged.next(state);\r\n }\r\n async authenticate() {\r\n this.setSignInState('signing-in');\r\n if (this.backend.user) {\r\n try {\r\n await this.immediatePeer.authenticate(this.backend.user?.token);\r\n this.setSignInState('signed-in');\r\n } catch (e) {\r\n console.error(`[Banta] Could not authenticate:`);\r\n console.error(e);\r\n this.setSignInState('signed-out');\r\n }\r\n }\r\n }\r\n\r\n close(): void {\r\n super.close();\r\n this.subscription.unsubscribe();\r\n }\r\n\r\n @RpcEvent()\r\n onPermissions(permissions: ChatPermissions) {\r\n (window as any).bantaPermissionsDebug = permissions;\r\n this.permissions = permissions;\r\n }\r\n\r\n @RpcEvent()\r\n onChatMessage(message: ChatMessage) {\r\n if (this.messageMap.has(message.id)) {\r\n return this.mapOrUpdateMessage(message);\r\n } else if (!message.hidden) {\r\n // Only process non-hidden messages through here. \r\n // Hidden messages may be sent to us when they become hidden (ie moderation is occurring).\r\n // But if we never had the message to begin with, we should discard it.\r\n this.messageMap.set(message.id, message);\r\n this._messageReceived.next(message);\r\n }\r\n }\r\n\r\n private messageMap = new Map<string, ChatMessage>();\r\n private _messageReceived = new Subject<ChatMessage>();\r\n private _messageUpdated = new Subject<ChatMessage>();\r\n private _messageSent = new Subject<ChatMessage>();\r\n private _messageObserved = new Subject<ChatMessage>();\r\n\r\n get messageReceived() { return this._messageReceived.asObservable(); }\r\n get messageUpdated() { return this._messageUpdated.asObservable(); }\r\n get messageSent() { return this._messageSent.asObservable(); }\r\n get messageObserved() { return this._messageObserved.asObservable(); }\r\n\r\n messages: ChatMessage[] = [];\r\n\r\n async send(message: ChatMessage): Promise<ChatMessage> {\r\n await this.ensureConnection();\r\n message.id ??= uuid();\r\n let finishedMessage = await this.idempotentPeer.sendMessage(message);\r\n\r\n return finishedMessage;\r\n }\r\n\r\n async loadAfter(message: ChatMessage, count: number): Promise<ChatMessage[]> {\r\n if (!message)\r\n return;\r\n\r\n if (!message.pagingCursor)\r\n return [];\r\n \r\n return this.mapOrUpdateMessages(\r\n await this.idempotentPeer.loadAfter(Number(message.pagingCursor), count)\r\n );\r\n }\r\n\r\n async get(id: string): Promise<ChatMessage> {\r\n if (this.messageMap.has(id))\r\n return this.messageMap.get(id);\r\n \r\n await this.ensureConnection(`Could not get message`);\r\n let message = await this.idempotentPeer.getMessage(id);\r\n\r\n if (this.messageMap.has(id)) {\r\n let existingMessage = this.messageMap.get(id);\r\n Object.assign(existingMessage, message);\r\n message = existingMessage;\r\n } else {\r\n this.messageMap.set(id, message);\r\n }\r\n\r\n return message;\r\n }\r\n\r\n async getCount(): Promise<number> {\r\n return await this.idempotentPeer.getCount();\r\n }\r\n\r\n async likeMessage(messageId: string): Promise<void> {\r\n await this.ensureConnection();\r\n return await this.idempotentPeer.likeMessage(messageId);\r\n }\r\n\r\n async unlikeMessage(messageId: string): Promise<void> {\r\n await this.ensureConnection();\r\n return await this.idempotentPeer.unlikeMessage(messageId);\r\n }\r\n\r\n async deleteMessage(messageId: string): Promise<void> {\r\n await this.ensureConnection();\r\n return await this.idempotentPeer.deleteMessage(messageId);\r\n }\r\n\r\n}","import { ChatMessage, ChatPermissions, CommentsOrder, FilterMode } from \"@banta/common\";\r\nimport { ChatSourceBase } from \"./chat-source-base\";\r\nimport { Observable, Subject } from \"rxjs\";\r\nimport { ChatBackend } from \"./chat-backend\";\r\nimport { ChatSourceOptions } from \"./chat-backend-base\";\r\n\r\n/**\r\n * A special ChatSource which uses the REST API to load a limited number of chat messages, and does not support \r\n * sending/editing/deleting messages, liking/unliking, or loading more messages.\r\n * \r\n * This is used within Banta's SSR support.\r\n */\r\nexport class StaticChatSource implements ChatSourceBase {\r\n constructor(\r\n private backend: ChatBackend, \r\n readonly identifier: string,\r\n readonly parentIdentifier?: string,\r\n options?: ChatSourceOptions\r\n ) {\r\n \r\n this.sortOrder = options?.sortOrder ?? CommentsOrder.NEWEST;\r\n this.filterMode = options?.filterMode ?? FilterMode.ALL;\r\n this.initialMessageCount = options?.initialMessageCount ?? 100;\r\n }\r\n\r\n initialMessageCount: number;\r\n sortOrder: CommentsOrder;\r\n filterMode: FilterMode;\r\n permissions: ChatPermissions; // TODO\r\n\r\n ready = Promise.resolve(); // TODO: should we do more than this?\r\n readonly = true;\r\n canLoadMore = false;\r\n\r\n messageReceived = new Subject<ChatMessage>();\r\n messageObserved = new Subject<ChatMessage>();\r\n messageUpdated = new Subject<ChatMessage>();\r\n messageSent = new Subject<ChatMessage>();\r\n\r\n messages: ChatMessage[] = [];\r\n\r\n async send(message: ChatMessage): Promise<ChatMessage> {\r\n throw new Error(`Cannot send a message in this state.`);\r\n }\r\n\r\n close() {\r\n // no op\r\n }\r\n\r\n async getCount() {\r\n if (this.parentIdentifier) {\r\n // TODO: We need a getReplyCount or something\r\n return 0;\r\n }\r\n\r\n this.backend.getSourceCountForTopic(this.identifier);\r\n }\r\n \r\n async loadSince(id: string) {\r\n return undefined;\r\n }\r\n\r\n async getExistingMessages() {\r\n if (this.parentIdentifier) {\r\n return await this.backend.getReplies(this.parentIdentifier, this.sortOrder, this.filterMode, 0, this.initialMessageCount);\r\n } else {\r\n return await this.backend.getMessages(this.identifier, this.sortOrder, this.filterMode, 0, this.initialMessageCount);\r\n }\r\n }\r\n\r\n async loadAfter(message: ChatMessage, count: number): Promise<ChatMessage[]> {\r\n return []; // no op\r\n }\r\n\r\n async get(id: string) {\r\n return await this.backend.getMessage(this.identifier, id);\r\n }\r\n\r\n async likeMessage(messageId: string): Promise<void> {\r\n throw new Error(`Cannot perform this action in this state.`);\r\n }\r\n\r\n async unlikeMessage(messageId: string): Promise<void> {\r\n throw new Error(`Cannot perform this action in this state.`);\r\n }\r\n\r\n async editMessage(messageId: string, text: string): Promise<void> {\r\n throw new Error(`Cannot perform this action in this state.`);\r\n }\r\n\r\n async deleteMessage(messageId: string): Promise<void> {\r\n throw new Error(`Cannot perform this action in this state.`);\r\n }\r\n\r\n connectionStateChanged = new Subject<'connected' | 'connecting' | 'lost' | 'restored'>();\r\n state : 'connecting' | 'connected' | 'lost' | 'restored' = 'connected';\r\n\r\n get errorState() {\r\n return undefined;\r\n }\r\n}","import { inject, Inject, Injectable } from \"@angular/core\";\r\nimport { ChatMessage, CommentsOrder, DurableSocket, FilterMode, Notification, Topic, UrlCard, User, Vote, buildQuery } from \"@banta/common\";\r\nimport { Observable } from \"rxjs\";\r\nimport { ChatBackendBase, ChatSourceOptions } from \"./chat-backend-base\";\r\nimport { ChatSource } from \"./chat-source\";\r\nimport { ChatSourceBase } from \"./chat-source-base\";\r\nimport { BANTA_SDK_OPTIONS, SdkOptions } from \"./sdk-options\";\r\nimport { PLATFORM_ID } from \"@angular/core\";\r\nimport { isPlatformServer } from \"@angular/common\";\r\nimport { StaticChatSource } from \"./static-chat-source\";\r\nimport { v4 as uuid } from 'uuid';\r\n\r\n@Injectable()\r\nexport class ChatBackend extends ChatBackendBase {\r\n private options = inject(BANTA_SDK_OPTIONS);\r\n private platformId = inject(PLATFORM_ID);\r\n\r\n runId = uuid();\r\n\r\n get serviceUrl() {\r\n return `${this.options?.serviceUrl ?? 'http://localhost:3422'}`;\r\n }\r\n\r\n private async connectToService() {\r\n let deviceId = uuid();\r\n if (typeof localStorage !== 'undefined') {\r\n if (localStorage['banta-chat:deviceId']) {\r\n deviceId = localStorage['banta-chat:deviceId'];\r\n } else {\r\n localStorage['banta-chat:deviceId'] = deviceId;\r\n }\r\n }\r\n\r\n let socket = new DurableSocket(`${this.serviceUrl.replace(/^http/, 'ws')}/socket`, undefined, `${deviceId},${this.runId}`);\r\n await new Promise<void>((resolve, reject) => {\r\n socket.onopen = () => {\r\n resolve();\r\n }\r\n\r\n socket.onclose = e => {\r\n if (e.code === 503) {\r\n console.error(`Failed to connect to chat service!`);\r\n reject(e);\r\n }\r\n }\r\n });\r\n\r\n socket.onerror = undefined;\r\n\r\n return socket;\r\n }\r\n\r\n private isServer() {\r\n if (typeof localStorage !== 'undefined' && localStorage['banta:debug:useStaticSource'] === '1')\r\n return true;\r\n\r\n return isPlatformServer(this.platformId);\r\n }\r\n\r\n /**\r\n * Check if we are currently running inside a Googlebot user agent or via the Google inspection tool in Search Console.\r\n * We'll use this to avoid WebSockets so that comments can be indexable.\r\n * @returns \r\n */\r\n private isGooglebot() {\r\n return typeof navigator !== 'undefined' && (\r\n navigator.userAgent.includes('Googlebot')\r\n || navigator.userAgent.includes('Google-InspectionTool')\r\n );\r\n }\r\n\r\n async getSourceForTopic(topicId: string, options?: ChatSourceOptions): Promise<ChatSourceBase> {\r\n // In some cases we need to do a single REST request to fetch the messages \r\n // and not use Banta's socket RPC since the open ended lifetime of a WebSocket connection \r\n // does not match the use case.\r\n // - When running in SSR\r\n // - When running in Googlebot (Googlebot also doesn't support WebSockets anyway)\r\n\r\n if (this.isServer() || this.isGooglebot()) {\r\n return new StaticChatSource(this, topicId, undefined, options);\r\n } else {\r\n return await new ChatSource(this, topicId, undefined, { sortOrder: CommentsOrder.NEWEST, filterMode: FilterMode.ALL, ...options })\r\n .bind(await this.connectToService());\r\n }\r\n }\r\n\r\n async getSourceForThread(topicId: string, messageId: string, options?: ChatSourceOptions): Promise<ChatSourceBase> {\r\n // When running on the server platform, we're just going to do a single REST request to fetch the messages \r\n // and not use Banta's socket RPC.\r\n \r\n if (this.isServer()) {\r\n return new StaticChatSource(this, topicId, messageId, options);\r\n } else {\r\n return await new ChatSource(this, topicId, messageId, { sortOrder: CommentsOrder.NEWEST, filterMode: FilterMode.ALL, ...options })\r\n .bind(await this.connectToService());\r\n }\r\n }\r\n\r\n /**\r\n * Get the count of the given topic\r\n * @param topicId \r\n * @returns \r\n */\r\n async getSourceCountForTopic(topicId: string): Promise<number> {\r\n try {\r\n let topic = await this.getTopic(topicId);\r\n return topic?.messageCount ?? 0;\r\n } catch (e) {\r\n console.error(`[Banta/${topicId}] Failed to get message count for topic:`);\r\n console.error(e);\r\n return undefined;\r\n }\r\n }\r\n\r\n /**\r\n * Get the count of the given topics. \r\n * @param topicId Topics to count messages on. Maximum of 1000.\r\n * @returns \r\n */\r\n async getSourceCountForTopics(topicIds: string[]): Promise<Record<string, number>> {\r\n try {\r\n let topics = await this.getTopicsById(topicIds);\r\n return Object.fromEntries(topics.map(topic => [ topic.id, topic.messageCount ?? 0 ]));\r\n } catch (e) {\r\n console.error(`[Banta/Topics] Failed to get message count for topics '${topicIds.join(',')}]':`);\r\n console.error(e);\r\n return undefined;\r\n }\r\n }\r\n\r\n /**\r\n * Get information about the given topic. \r\n * @param topicId \r\n * @returns The topic object, or undefined if no such topic was found.\r\n */\r\n async getTopic(topicId: string): Promise<Topic | undefined> {\r\n let response = await fetch(`${this.serviceUrl}/topics/${topicId}`)\r\n if (response.status === 404)\r\n return undefined;\r\n if (response.status >= 400)\r\n throw new Error(`Failed to fetch topic: ${response.status}`)\r\n\r\n return <Topic> await response.json();\r\n }\r\n\r\n /**\r\n * Get information about the given topics\r\n * @param topicIds The topic IDs to look up. Maximum of 1000.\r\n * @returns An array of matching topic objects.\r\n */\r\n async getTopicsById(topicIds: string[]): Promise<Topic[]> {\r\n if (topicIds.length > 1000)\r\n throw new Error(`Cannot look up more than 1000 topics at a time.`);\r\n\r\n let response = await fetch(`${this.serviceUrl}/topics?ids=${encodeURIComponent(topicIds.join(','))}`)\r\n if (response.status >= 400)\r\n throw new Error(`Failed to fetch topic: ${response.status}`)\r\n\r\n return <Topic[]> await response.json();\r\n }\r\n\r\n /**\r\n * Get a set of messages from the given topic.\r\n * @param topicId \r\n * @returns \r\n */\r\n async getMessages(\r\n topicId: string, \r\n sort?: CommentsOrder, \r\n filter?: FilterMode, \r\n offset?: number, \r\n limit?: number\r\n ): Promise<ChatMessage[]> {\r\n let response = await fetch(\r\n `${this.serviceUrl}/topics/${topicId}/messages?${ buildQuery({ sort, filter, offset, limit }) }`\r\n );\r\n\r\n if (response.status >= 400)\r\n throw new Error(`Failed to fetch messages for topic: ${response.status}`)\r\n\r\n return <ChatMessage[]> await response.json();\r\n }\r\n\r\n /**\r\n * Get a set of messages from the given topic.\r\n * @param topicId \r\n * @returns \r\n */\r\n async getReplies(\r\n parentMessageId: string,\r\n sort?: CommentsOrder, \r\n filter?: FilterMode, \r\n offset?: number, \r\n limit?: number\r\n ): Promise<ChatMessage[]> {\r\n let response = await fetch(\r\n `${this.serviceUrl}/messages/${parentMessageId}/replies?${ buildQuery({ sort, filter, offset, limit }) }`\r\n );\r\n\r\n if (response.status >= 400)\r\n throw new Error(`Failed to fetch replies: ${response.status}`)\r\n\r\n return <ChatMessage[]> await response.json();\r\n }\r\n\r\n refreshMessage(message: ChatMessage): Promise<ChatMessage> {\r\n throw new Error(\"Method not implemented.\");\r\n }\r\n \r\n getMessage(topicId: string, messageId: string): Promise<ChatMessage> {\r\n throw new Error(\"Method not implemented.\");\r\n }\r\n getSubMessage(topicId: string, parentMessageId: string, messageId: string): Promise<ChatMessage> {\r\n throw new Error(\"Method not implemented.\");\r\n }\r\n watchMessage(message: ChatMessage, handler: (message: ChatMessage) => void): () => void {\r\n throw new Error(\"Method not implemented.\");\r\n }\r\n notificationsChanged: Observable<Notification[]>;\r\n newNotification: Observable<Notification>;\r\n \r\n async getCardForUrl(url: string): Promise<UrlCard> {\r\n let response = await fetch(`${this.serviceUrl}/urls`, {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify({\r\n url\r\n })\r\n });\r\n\r\n if (response.status == 404)\r\n return null;\r\n \r\n if (response.status >= 400)\r\n throw new Error(`Failed to retrieve URL card: ${response.status}. Body: '${await response.text()}'`);\r\n\r\n return await response.json();\r\n }\r\n}","import { Injectable } from \"@angular/core\";\r\nimport { ChatMessage, ChatMessageAttachment } from \"@banta/common\";\r\nimport { AttachmentFragment, AttachmentResolver, AttachmentScraper } from \"./attachment-scraper\";\r\nimport { ChatBackendBase } from \"./chat-backend-base\";\r\n\r\nconst URL_REGEX = new RegExp('(?!mailto:)(?:(?:http|https|ftp)://)(?:\\\\S+(?::\\\\S*)?@)?(?:(?:(?:[1-9]\\\\d?|1\\\\d\\\\d|2[01]\\\\d|22[0-3])(?:\\\\.(?:1?\\\\d{1,2}|2[0-4]\\\\d|25[0-5])){2}(?:\\\\.(?:[0-9]\\\\d?|1\\\\d\\\\d|2[0-4]\\\\d|25[0-4]))|(?:(?:[a-z\\\\u00a1-\\\\uffff0-9]+-?)*[a-z\\\\u00a1-\\\\uffff0-9]+)(?:\\\\.(?:[a-z\\\\u00a1-\\\\uffff0-9]+-?)*[a-z\\\\u00a1-\\\\uffff0-9]+)*(?:\\\\.(?:[a-z\\\\u00a1-\\\\uffff]{2,})))|localhost)(?::\\\\d{2,5})?(?:(/|\\\\?|#)[^\\\\s]*)?', 'ig');\r\n\r\nexport class UrlAttachmentScraper implements AttachmentScraper {\r\n findFragments(message: ChatMessage): AttachmentFragment[] {\r\n // If a message already has a URL attachment, don't add another one.\r\n if (message.attachments && message.attachments.filter(x => x.type === 'url').length > 0)\r\n return null;\r\n\r\n return (Array.from(message.message.match(URL_REGEX) ?? []))\r\n .reduce((a, item) => (a.includes(item) ? undefined : a.push(item), a), [])\r\n .map(url => ({\r\n text: url, \r\n offset: message.message.indexOf(url),\r\n type: 'url'\r\n }))\r\n ;\r\n }\r\n}\r\n\r\n@Injectable()\r\nexport class UrlAttachmentResolver implements AttachmentResolver {\r\n constructor(private backend: ChatBackendBase) {\r\n }\r\n\r\n async resolveFragment(message: ChatMessage, fragment: AttachmentFragment): Promise<ChatMessageAttachment> {\r\n if (fragment.type !== 'url')\r\n return null;\r\n\r\n let urlCard = await this.backend.getCardForUrl(fragment.text);\r\n if (urlCard) {\r\n return {\r\n type: 'card',\r\n url: fragment.text,\r\n card: urlCard,\r\n style: 'block'\r\n }\r\n }\r\n }\r\n\r\n}","import { ChatMessage, ChatMessageAttachment } from \"@banta/common\";\r\nimport { AttachmentFragment, AttachmentResolver } from \"./attachment-scraper\";\r\n\r\nexport class YouTubeAttachmentResolver implements AttachmentResolver {\r\n async resolveFragment(message: ChatMessage, fragment: AttachmentFragment): Promise<ChatMessageAttachment> {\r\n if (fragment.type !== 'url')\r\n return null;\r\n\r\n let videoId: string;\r\n\r\n // https://youtu.be/jXzJ7FlqX6M\r\n\r\n if (fragment.text.match(/^https:\\/\\/youtu\\.be\\//)) {\r\n let match = /^https:\\/\\/youtu\\.be\\/([^\\/]+)/.exec(fragment.text);\r\n if (match) {\r\n videoId = match[1];\r\n }\r\n }\r\n\r\n if (!videoId && fragment.text.match(/^https?:\\/\\/(www\\.|m\\.)?youtube.com\\/watch\\?v=/)) {\r\n let match = /watch\\?v=([^&]+)/.exec(fragment.text);\r\n if (match) {\r\n videoId = match[1];\r\n }\r\n }\r\n\r\n if (videoId) {\r\n return {\r\n type: 'iframe',\r\n url: `https://www.youtube.com/embed/${videoId}`,\r\n style: 'block'\r\n };\r\n }\r\n return null;\r\n }\r\n}\r\n","import { ChatMessage, ChatMessageAttachment } from \"@banta/common\";\r\nimport { AttachmentFragment, AttachmentResolver } from \"./attachment-scraper\";\r\n\r\nexport class GiphyAttachmentResolver implements AttachmentResolver {\r\n async resolveFragment(message: ChatMessage, fragment: AttachmentFragment): Promise<ChatMessageAttachment> {\r\n if (fragment.type === 'url' && fragment.text.startsWith('https://giphy.com/gifs')) {\r\n let gifId = /[^-\\/]+$/.exec(fragment.text)?.toString();\r\n if (!gifId)\r\n return null;\r\n\r\n return {\r\n type: 'iframe',\r\n url: `https://giphy.com/embed/${gifId}`,\r\n style: 'inline'\r\n };\r\n }\r\n\r\n return null;\r\n }\r\n}","import { ChatMessage, ChatMessageAttachment } from \"@banta/common\";\r\nimport { AttachmentFragment, AttachmentResolver } from \"./attachment-scraper\";\r\n\r\nexport class TweetAttachmentResolver implements AttachmentResolver {\r\n async resolveFragment(message: ChatMessage, fragment: AttachmentFragment): Promise<ChatMessageAttachment> {\r\n if (fragment.type === 'url' && (fragment.text.startsWith('https://twitter.com/') || fragment.text.startsWith('https://x.com/'))) {\r\n return {\r\n type: 'tweet',\r\n url: fragment.text,\r\n style: 'block'\r\n };\r\n }\r\n\r\n return null;\r\n }\r\n}","import { inject, ModuleWithProviders, NgModule } from '@angular/core';\r\nimport { CommentsModule } from './comments';\r\nimport { ChatModule } from './chat';\r\nimport { EmojiModule } from './emoji';\r\nimport { BantaComponent } from './banta/banta.component';\r\nimport { BantaLogoComponent } from './banta-logo.component';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { BantaCommonModule } from './common/common.module';\r\nimport { LiveMessageComponent } from './live-message.component';\r\nimport { MatButtonModule } from \"@angular/material/button\";\r\nimport { MatIconModule } from \"@angular/material/icon\";\r\nimport { MatTooltipModule } from \"@angular/material/tooltip\";\r\nimport { MatMenuModule } from \"@angular/material/menu\";\r\nimport { MatDialogModule } from \"@angular/material/dialog\";\r\nimport { MatSnackBarModule } from \"@angular/material/snack-bar\";\r\nimport { MatFormFieldModule } from \"@angular/material/form-field\";\r\nimport { MatInputModule } from \"@angular/material/input\";\r\nimport { MatProgressSpinnerModule } from \"@angular/material/progress-spinner\";\r\nimport { ChatBackend } from './chat-backend';\r\nimport { SdkOptions } from './sdk-options';\r\nimport { BANTA_SDK_OPTIONS } from './sdk-options';\r\nimport { ChatBackendBase } from './chat-backend-base';\r\nimport { OverlayModule } from '@angular/cdk/overlay';\r\nimport { PortalModule } from '@angular/cdk/portal';\r\nimport { UrlAttachmentResolver, UrlAttachmentScraper } from './url-attachments';\r\nimport { YouTubeAttachmentResolver } from './youtube-attachments';\r\nimport { GiphyAttachmentResolver } from './giphy-attachments';\r\nimport { TweetAttachmentResolver } from './tweet-attachments';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n BantaCommonModule.forRoot(),\r\n CommentsModule,\r\n ChatModule,\r\n EmojiModule,\r\n \r\n MatIconModule,\r\n MatButtonModule,\r\n MatTooltipModule,\r\n MatMenuModule,\r\n MatDialogModule,\r\n MatFormFieldModule,\r\n MatInputModule,\r\n MatProgressSpinnerModule,\r\n MatSnackBarModule,\r\n OverlayModule,\r\n PortalModule\r\n ],\r\n declarations: [\r\n BantaComponent,\r\n BantaLogoComponent,\r\n LiveMessageComponent\r\n ],\r\n exports: [\r\n BantaComponent,\r\n BantaLogoComponent,\r\n LiveMessageComponent,\r\n BantaCommonModule,\r\n ChatModule,\r\n CommentsModule,\r\n EmojiModule\r\n ]\r\n})\r\nexport class BantaSdkModule {\r\n chatBackend = inject(ChatBackendBase);\r\n\r\n constructor() {\r\n this.chatBackend.registerAttachmentScraper(new UrlAttachmentScraper());\r\n this.chatBackend.registerAttachmentResolver(new GiphyAttachmentResolver());\r\n this.chatBackend.registerAttachmentResolver(new YouTubeAttachmentResolver());\r\n this.chatBackend.registerAttachmentResolver(new TweetAttachmentResolver());\r\n this.chatBackend.registerAttachmentResolver(new UrlAttachmentResolver(this.chatBackend));\r\n }\r\n \r\n static configure(options?: SdkOptions): ModuleWithProviders<BantaSdkModule> {\r\n return {\r\n ngModule: BantaSdkModule,\r\n providers: [\r\n { \r\n provide: BANTA_SDK_OPTIONS, \r\n useValue: options || {}\r\n },\r\n { provide: ChatBackendBase, useClass: options?.backendClass ?? ChatBackend }\r\n ]\r\n }\r\n }\r\n}","/*\n * Public API Surface of sdk\n */\n\nexport * from './lib';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.TimerPool","i2","i1","twemoji","i4","i5","i6.BantaTrustResourceUrlPipe","i2.LightboxComponent","i3.BantaAttachmentComponent","COMPONENTS","i3","i6","i5.EmojiSelectorPanelComponent","i9.TimestampComponent","i10.BantaAttachmentsComponent","i12.BantaMarkdownToHtmlPipe","i13.BantaMentionLinkerPipe","i1.ChatBackendBase","i6.CommentComponent","i7","i9.BantaAttachmentsComponent","i10.EmojiSelectorButtonComponent","i12.AttachmentButtonComponent","i13.AttachmentScraperDirective","i9","i10.CommentComponent","i11.CommentViewComponent","i12.CommentFieldComponent","i3.ChatMessageComponent","i5.EmojiSelectorButtonComponent","i6.ChatViewComponent","i3.CommentComponent","i2.LiveCommentComponent","i3.LiveChatMessageComponent","i5.TimestampComponent","i7.CommentViewComponent","i8.BantaCommentsComponent","i9.BantaChatComponent","i10","i11","i12","i13.LiveMessageComponent","uuid","Injectable"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"banta-sdk.mjs","sources":["../../../projects/sdk/src/lib/common/lazy-connection.ts","../../../projects/sdk/src/lib/common/timer-pool.service.ts","../../../projects/sdk/src/lib/common/timestamp.component.ts","../../../projects/sdk/src/lib/common/lightbox/lightbox.component.ts","../../../projects/sdk/src/lib/common/lightbox/lightbox.component.html","../../../projects/sdk/src/lib/sdk-options.ts","../../../projects/sdk/src/lib/common/markdown-to-html.pipe.ts","../../../projects/sdk/src/lib/common/trust-resource-url.pipe.ts","../../../projects/sdk/src/lib/common/mention-linker.pipe.ts","../../../projects/sdk/src/lib/common/attachment/attachment.component.ts","../../../projects/sdk/src/lib/common/attachment/attachment.component.html","../../../projects/sdk/src/lib/common/attachments/attachments.component.ts","../../../projects/sdk/src/lib/common/attachments/attachments.component.html","../../../projects/sdk/src/lib/common/common.module.ts","../../../projects/sdk/src/lib/emoji/emojis.ts","../../../projects/sdk/src/lib/emoji/emoji-selector-panel/emoji-selector-panel.component.ts","../../../projects/sdk/src/lib/emoji/emoji-selector-panel/emoji-selector-panel.component.html","../../../projects/sdk/src/lib/emoji/emoji-selector-button.component.ts","../../../projects/sdk/src/lib/emoji/emoji.module.ts","../../../projects/sdk/src/lib/chat-backend-base.ts","../../../projects/sdk/src/lib/comments/comment/comment.component.ts","../../../projects/sdk/src/lib/comments/comment/comment.component.html","../../../projects/sdk/src/lib/comments/comment-view/comment-view.component.ts","../../../projects/sdk/src/lib/comments/comment-view/comment-view.component.html","../../../projects/sdk/src/lib/comments/reply-send-options.directive.ts","../../../projects/sdk/src/lib/comments/attachment-button/attachment-button.component.ts","../../../projects/sdk/src/lib/comments/attachment-button/attachment-button.component.html","../../../projects/sdk/src/lib/comments/attachment-scraper.directive.ts","../../../projects/sdk/src/lib/comments/comment-field/comment-field.component.ts","../../../projects/sdk/src/lib/comments/comment-field/comment-field.component.html","../../../projects/sdk/src/lib/comments/banta-comments/banta-comments.component.ts","../../../projects/sdk/src/lib/comments/banta-comments/banta-comments.component.html","../../../projects/sdk/src/lib/chat/chat-message/chat-message.component.ts","../../../projects/sdk/src/lib/chat/chat-message/chat-message.component.html","../../../projects/sdk/src/lib/chat/chat-view/chat-view.component.ts","../../../projects/sdk/src/lib/chat/chat-view/chat-view.component.html","../../../projects/sdk/src/lib/chat/banta-chat/banta-chat.component.ts","../../../projects/sdk/src/lib/chat/banta-chat/banta-chat.component.html","../../../projects/sdk/src/lib/comments/live-comment.component.ts","../../../projects/sdk/src/lib/chat/live-chat-message.component.ts","../../../projects/sdk/src/lib/live-message.component.ts","../../../projects/sdk/src/lib/banta/banta.component.ts","../../../projects/sdk/src/lib/banta/banta.component.html","../../../projects/sdk/src/lib/banta-logo.component.ts","../../../projects/sdk/src/lib/chat/chat.module.ts","../../../projects/sdk/src/lib/comments/comment-sort/comment-sort.component.ts","../../../projects/sdk/src/lib/comments/comment-sort/comment-sort.component.html","../../../projects/sdk/src/lib/comments/comments.module.ts","../../../projects/sdk/src/lib/chat-source.ts","../../../projects/sdk/src/lib/static-chat-source.ts","../../../projects/sdk/src/lib/chat-backend.ts","../../../projects/sdk/src/lib/url-attachments.ts","../../../projects/sdk/src/lib/youtube-attachments.ts","../../../projects/sdk/src/lib/giphy-attachments.ts","../../../projects/sdk/src/lib/tweet-attachments.ts","../../../projects/sdk/src/lib/banta-sdk.module.ts","../../../projects/sdk/src/public-api.ts","../../../projects/sdk/src/banta-sdk.ts"],"sourcesContent":["import { Subject, Observable, ConnectableObservable } from 'rxjs';\r\nimport { publish } from 'rxjs/operators';\r\n\r\nexport interface LazyConnectionOptions<T> {\r\n start : (subject : Subject<T>) => void;\r\n stop : () => void;\r\n}\r\n\r\nexport function lazyConnection<T>(options : LazyConnectionOptions<T>): Observable<T> {\r\n\r\n let obs = new Observable(observer => {\r\n let subject = new Subject<T>();\r\n let subscription = subject.subscribe(observer);\r\n\r\n options.start(subject);\r\n return () => {\r\n subscription.unsubscribe();\r\n options.stop();\r\n };\r\n });\r\n \r\n return (<ConnectableObservable<T>>obs.pipe(publish())).refCount();\r\n}","import { Injectable } from \"@banta/common\";\r\n\r\ninterface TimerState {\r\n handle?;\r\n subscribers: (() => void)[];\r\n}\r\n\r\n/**\r\n * Provides a way to hook in to a shared set of timers, instead of creating a timer per instance.\r\n * This is very useful for cases where the update is not extremely time-sensitive, but happens at scale.\r\n * The principal use case is the TimestampComponent. When several hundred (or several thousand) comments are \r\n * being displayed, we do not want to trigger thousands of independent relative timestamp updates, because over \r\n * time the updates will saturate the CPU since they don't perfectly align. \r\n */\r\n@Injectable()\r\nexport class TimerPool {\r\n private subscriptions = new Map<number, TimerState>();\r\n\r\n private newSubscriptionsNotice;\r\n private newSubscriptions = new Map<number, number>();\r\n\r\n private removedSubscriptionsNotice;\r\n private removedSubscriptions = new Map<number, number>();\r\n\r\n addTimer(interval: number, callback: () => void) {\r\n if (interval <= 0) {\r\n console.warn(`Refusing to set timer with interval of ${interval}!`);\r\n return () => {};\r\n }\r\n\r\n let state: TimerState;\r\n let sizeWas = this.subscriptions.size;\r\n\r\n if (!this.subscriptions.has(interval)) {\r\n state = { subscribers: [] };\r\n state.handle = setInterval(() => {\r\n console.debug(`[Banta/TimerPool] Notifying ${state.subscribers.length} subs [${interval}ms]`);\r\n state.subscribers.forEach(sub => sub());\r\n }, interval);\r\n this.subscriptions.set(interval, state);\r\n } else {\r\n state = this.subscriptions.get(interval);\r\n }\r\n\r\n state.subscribers.push(callback);\r\n\r\n // Debug information //////////////////////////\r\n //\r\n\r\n if (!this.newSubscriptions.has(interval))\r\n this.newSubscriptions.set(interval, 0);\r\n this.newSubscriptions.set(interval, (this.newSubscriptions.get(interval) ?? 0) + 1);\r\n\r\n clearTimeout(this.newSubscriptionsNotice);\r\n this.newSubscriptionsNotice = setTimeout(() => {\r\n for (let [interval, count] of this.newSubscriptions) {\r\n console.debug(`[Banta/TimerPool] ${count} new subscriptions to ${interval}ms [${state.subscribers.length} total]`);\r\n }\r\n\r\n this.newSubscriptions.clear();\r\n });\r\n\r\n //\r\n ///////////////////////////////////////////////\r\n\r\n if (sizeWas === 0) {\r\n console.debug(`[Banta/TimerPool] No longer idle.`);\r\n }\r\n\r\n // Unsubscribe function \r\n\r\n return () => {\r\n let state = this.subscriptions.get(interval);\r\n if (!state)\r\n return;\r\n\r\n let index = state.subscribers.indexOf(callback);\r\n if (index >= 0)\r\n state.subscribers.splice(index, 1);\r\n\r\n if (state.subscribers.length === 0) {\r\n clearInterval(state.handle);\r\n this.subscriptions.delete(interval);\r\n }\r\n\r\n if (!this.removedSubscriptions.has(interval))\r\n this.removedSubscriptions.set(interval, 0);\r\n this.removedSubscriptions.set(interval, (this.removedSubscriptions.get(interval) ?? 0) + 1);\r\n\r\n // Debug information ////////////////////////////////////////////////////////////////////\r\n\r\n clearTimeout(this.removedSubscriptionsNotice);\r\n this.removedSubscriptionsNotice = setTimeout(() => {\r\n for (let [interval, count] of this.removedSubscriptions) {\r\n let state = this.subscriptions.get(interval);\r\n console.debug(`[Banta/TimerPool] ${count} unsubscribed from ${interval}ms [${state?.subscribers?.length ?? 0} remain]`);\r\n }\r\n\r\n if (this.subscriptions.size === 0)\r\n console.debug(`[Banta/TimerPool] All subscriptions have been removed. Now idle.`);\r\n\r\n this.removedSubscriptions.clear();\r\n });\r\n };\r\n }\r\n}","import { Component, Input } from \"@angular/core\";\r\nimport { TimerPool } from \"../../lib/common/timer-pool.service\";\r\n\r\n@Component({\r\n selector: 'banta-timestamp',\r\n template: `\r\n <span *ngIf=\"showAbsolute\" [title]=\"value | date : 'short'\">\r\n {{value | date : 'shortDate'}}\r\n </span>\r\n <span *ngIf=\"!showAbsolute\" [title]=\"value | date : 'short'\">\r\n {{relative}}\r\n </span>\r\n `,\r\n styles: [``]\r\n})\r\nexport class TimestampComponent {\r\n constructor(\r\n private timerPool: TimerPool\r\n ) {\r\n }\r\n\r\n private _value : number;\r\n relative = '';\r\n tooltip = '';\r\n\r\n private timerUnsubscribe: () => void;\r\n private timerInterval: number = 0;\r\n\r\n private _destroyed = false;\r\n\r\n ngOnDestroy() {\r\n this._destroyed = true;\r\n this.timerUnsubscribe?.();\r\n this.timerUnsubscribe = undefined;\r\n }\r\n\r\n @Input()\r\n get value() {\r\n return this._value;\r\n }\r\n\r\n showAbsolute = false;\r\n\r\n update() {\r\n if (this._destroyed)\r\n return;\r\n \r\n let now = Date.now();\r\n let diff = now - this.value;\r\n let minute = 1000*60;\r\n let hour = minute * 60;\r\n let day = hour * 24;\r\n let week = day * 7;\r\n let month = day * 30;\r\n let year = day * 365;\r\n this.showAbsolute = false;\r\n let updateTime = 0;\r\n\r\n if (diff > year) {\r\n this.showAbsolute = true;\r\n this.relative = 'abs';\r\n return;\r\n }\r\n\r\n if (diff > month) {\r\n let months = Math.floor(diff / month);\r\n\r\n if (months === 1)\r\n this.relative = `${months} month ago`;\r\n else\r\n this.relative = `${months} months ago`;\r\n \r\n } else if (diff > week) {\r\n let weeks = Math.floor(diff / week);\r\n\r\n if (weeks === 1)\r\n this.relative = `${weeks} week ago`;\r\n else\r\n this.relative = `${weeks} weeks ago`;\r\n } else if (diff > day) {\r\n let days = Math.floor(diff / day);\r\n if (days === 1)\r\n this.relative = `${days} day ago`;\r\n else\r\n this.relative = `${days} days ago`;\r\n } else if (diff > hour) {\r\n let hours = Math.floor(diff / hour);\r\n if (hours === 1)\r\n this.relative = `${hours} hour ago`;\r\n else\r\n this.relative = `${hours} hours ago`;\r\n \r\n updateTime = 1000 * 60 * 30;\r\n } else if (diff > minute) {\r\n let minutes = Math.floor(diff / minute);\r\n if (minutes === 1)\r\n this.relative = `${minutes} minute ago`;\r\n else\r\n this.relative = `${minutes} minutes ago`;\r\n updateTime = 1000 * 45;\r\n } else if (diff > 30_000) {\r\n this.relative = `about a minute ago`;\r\n updateTime = 1000 * 60;\r\n } else {\r\n this.relative = `just now`;\r\n updateTime = 1000 * 30;\r\n }\r\n \r\n if (typeof window !== 'undefined') {\r\n if (this.timerInterval !== updateTime) {\r\n this.timerInterval = updateTime;\r\n this.timerUnsubscribe?.();\r\n if (updateTime > 0) {\r\n this.timerUnsubscribe = this.timerPool.addTimer(updateTime, () => this.update());\r\n }\r\n }\r\n }\r\n }\r\n\r\n set value(v) {\r\n if (this._value !== v) {\r\n this._value = v;\r\n this.update();\r\n }\r\n }\r\n}","import { Component, ElementRef, ViewChild } from \"@angular/core\";\r\n\r\n@Component({\r\n selector: 'banta-lightbox',\r\n templateUrl: './lightbox.component.html',\r\n styleUrls: ['./lightbox.component.scss']\r\n})\r\nexport class LightboxComponent {\r\n @ViewChild('container') \r\n containerElement: ElementRef<HTMLDivElement>;\r\n\r\n ngAfterViewInit() {\r\n if (typeof window !== 'undefined') {\r\n document.body.appendChild(this.containerElement.nativeElement);\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n this.containerElement.nativeElement.remove();\r\n }\r\n\r\n images: string[];\r\n currentImage: string;\r\n\r\n isOpen: boolean;\r\n\r\n close() {\r\n this.isOpen = false;\r\n }\r\n\r\n open(currentImage: string, images: string[]) {\r\n this.currentImage = currentImage;\r\n this.images = images;\r\n this.isOpen = true;\r\n }\r\n}","<div \r\n class=\"banta-lightbox-container\" \r\n #container\r\n [class.open]=\"isOpen\"\r\n >\r\n\r\n <a class=\"underlay\" (click)=\"close()\" href=\"javascript:;\"></a>\r\n\r\n <a class=\"close-button\" href=\"javascript:;\" (click)=\"close()\">\r\n <mat-icon>close</mat-icon>\r\n </a>\r\n\r\n <img [src]=\"currentImage\" />\r\n</div>\r\n","import { InjectionToken, Type } from \"@angular/core\";\r\nimport { ChatBackendBase } from \"./chat-backend-base\";\r\n\r\nexport interface SdkOptions {\r\n serviceUrl?: string;\r\n emojiUrl?: string;\r\n backendClass?: Type<ChatBackendBase>\r\n}\r\n\r\nexport const BANTA_SDK_OPTIONS = new InjectionToken<SdkOptions>('BANTA_SDK_OPTIONS');","import { Pipe, PipeTransform, inject } from '@angular/core';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\nimport { BANTA_SDK_OPTIONS } from '../sdk-options';\r\n\r\nimport createDOMPurify from 'dompurify';\r\nimport twemoji from 'twemoji';\r\n\r\nimport * as marked from 'marked';\r\n\r\nconst underline = {\r\n name: 'underline',\r\n level: 'inline', // Is this a block-level or inline-level tokenizer?\r\n start(src) { return src.match(/\\+\\+/)?.index; }, // Hint to Marked.js to stop and check for a match\r\n tokenizer(src, tokens) {\r\n const rule = /^\\+\\+(.*?)\\+\\+/; // Regex for the complete token\r\n const match = rule.exec(src);\r\n if (match) {\r\n return { // Token to generate\r\n type: 'underline', // Should match \"name\" above\r\n raw: match[0], // Text to consume from the source\r\n text: this.lexer.inlineTokens(match[1].trim()), // Additional custom properties\r\n };\r\n }\r\n },\r\n renderer(token) {\r\n return `<u>${this.parser.parseInline(token.text)}</u>`;\r\n }\r\n};\r\n\r\nmarked.marked.use({\r\n extensions: [underline]\r\n});\r\n\r\n@Pipe({\r\n name: 'bantaMarkdownToHtml'\r\n})\r\nexport class BantaMarkdownToHtmlPipe implements PipeTransform {\r\n private sanitizer = inject(DomSanitizer);\r\n private sdkOptions = inject(BANTA_SDK_OPTIONS, { optional: true });\r\n\r\n constructor() {\r\n this.renderer = new marked.Renderer();\r\n const linkRenderer = this.renderer.link;\r\n this.renderer.link = token => {\r\n const html = linkRenderer.call(this.renderer, token);\r\n return html.replace(/^<a /, '<a target=\"_blank\" rel=\"noopener noreferrer nofollow\" ');\r\n };\r\n }\r\n\r\n\tprivate get emojiUrl() {\r\n\t\treturn this.sdkOptions?.emojiUrl ?? 'https://cdn.jsdelivr.net/gh/twitter/twemoji@14.0.2/assets/';\r\n\t}\r\n\r\n renderer: marked.Renderer;\r\n transform(value: string) {\r\n if (!value)\r\n return '';\r\n\r\n let purifier = createDOMPurify(window);\r\n \r\n // https://github.com/cure53/DOMPurify/blob/e1c19cf6407d782b666cb1d02a6af191f9cbc09e/demos/hooks-target-blank-demo.html\r\n // Add a hook to make all links open a new window\r\n purifier.addHook('afterSanitizeAttributes', function(node: HTMLElement & { target?: string }) {\r\n // set all elements owning target to target=_blank\r\n if ('target' in node) {\r\n node.setAttribute('target','_blank');\r\n // prevent https://www.owasp.org/index.php/Reverse_Tabnabbing\r\n node.setAttribute('rel', 'noopener noreferrer nofollow');\r\n }\r\n // set non-HTML/MathML links to xlink:show=new\r\n if (!node.hasAttribute('target')\r\n && (node.hasAttribute('xlink:href')\r\n || node.hasAttribute('href'))) {\r\n node.setAttribute('xlink:show', 'new');\r\n }\r\n });\r\n\r\n value = marked.marked.parse(value, {\r\n renderer: this.renderer\r\n }) as string;\r\n\r\n value = twemoji.parse(value, { base: this.emojiUrl });\r\n\r\n return this.sanitizer.bypassSecurityTrustHtml(\r\n purifier.sanitize(value,\r\n {\r\n FORBID_TAGS: ['h1', 'h2', 'h3', 'h4', 'style', 'link', 'script'],\r\n FORBID_ATTR: ['style'],\r\n KEEP_CONTENT: true\r\n }\r\n )\r\n );\r\n }\r\n}","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\n\r\n@Pipe({\r\n name: 'trustResourceUrl'\r\n})\r\nexport class BantaTrustResourceUrlPipe implements PipeTransform {\r\n constructor(\r\n private sanitizer: DomSanitizer\r\n ) {\r\n }\r\n\r\n transform(value: string) {\r\n if (!value)\r\n return undefined;\r\n\r\n return this.sanitizer.bypassSecurityTrustResourceUrl(value);\r\n }\r\n}","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\nimport { ChatMessageMention } from '@banta/common';\r\n\r\n@Pipe({\r\n name: 'mentionLinker'\r\n})\r\nexport class BantaMentionLinkerPipe implements PipeTransform {\r\n transform(value: string, links?: ChatMessageMention[]) {\r\n if (!value)\r\n return '';\r\n\r\n if (!links)\r\n return value;\r\n\r\n let text = value;\r\n\r\n for (let i = 0, max = links.length; i < max; ++i) {\r\n let mention = links[i];\r\n text = text.replace(new RegExp(`${this.escapeRegExp(mention.text)}`, `gi`), `@{${i + 1}}`);\r\n }\r\n\r\n text = text.replace(/@\\{(\\d+)\\}/g, (text, i) => links[i - 1] ? this.formatLink(links[i - 1]) : text);\r\n\r\n return text;\r\n }\r\n\r\n formatLink(link: ChatMessageMention) {\r\n return `<a${ link.external ? ` target=\"_blank\" rel=\"noopener\"` : `` } class=\"mention\" href=\"${link.link}\">${link.text}</a>`;\r\n }\r\n\r\n /**\r\n * https://stackoverflow.com/questions/3446170/escape-string-for-use-in-javascript-regex\r\n */\r\n escapeRegExp(string) {\r\n return string.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&'); // $& means the whole matched string\r\n }\r\n}","import { Component, ElementRef, HostBinding, Input, Output } from \"@angular/core\";\r\nimport { ChatMessageAttachment } from \"@banta/common\";\r\nimport { Subject } from \"rxjs\";\r\n\r\nlet TWITTER_LOADED = false;\r\n\r\n@Component({\r\n selector: 'banta-attachment',\r\n templateUrl: './attachment.component.html',\r\n styleUrls: ['./attachment.component.scss']\r\n})\r\nexport class BantaAttachmentComponent {\r\n constructor(\r\n private elementRef: ElementRef<HTMLElement>\r\n ) {\r\n\r\n }\r\n\r\n private _attachment: ChatMessageAttachment;\r\n @Input() get attachment() { return this._attachment; }\r\n set attachment(value) {\r\n this._attachment = value;\r\n this.checkLoad();\r\n this.loadPlatformSpecific();\r\n }\r\n \r\n @Input() loading = false;\r\n @Input() editing = false;\r\n @Input() loadingMessage: string = 'Please wait...';\r\n @Input() error = false;\r\n @Input() errorMessage: string = 'An error has occurred';\r\n @Output() removed = new Subject<void>();\r\n @Output() activated = new Subject<void>();\r\n @Output() loaded = new Subject<void>();\r\n\r\n private _viewLoaded = false;\r\n ngAfterViewInit() {\r\n this._viewLoaded = true;\r\n this.checkLoad();\r\n }\r\n\r\n private loadTwitterWidgets() {\r\n if (typeof window !== 'undefined')\r\n window['twttr']?.widgets.load();\r\n }\r\n\r\n private loadPlatformSpecific() {\r\n if (typeof window === 'undefined')\r\n return;\r\n \r\n if (this._attachment?.type === 'tweet') {\r\n if (!TWITTER_LOADED && document.querySelector('script[src=\"https://platform.twitter.com/widgets.js\"]'))\r\n TWITTER_LOADED = true;\r\n\r\n if (typeof window !== 'undefined' && !TWITTER_LOADED) {\r\n TWITTER_LOADED = true;\r\n let script = document.createElement('script');\r\n script.src = 'https://platform.twitter.com/widgets.js';\r\n script.async = true;\r\n script.addEventListener('load', () => setTimeout(() => this.loadTwitterWidgets()));\r\n document.body.appendChild(script);\r\n } else {\r\n setTimeout(() => this.loadTwitterWidgets());\r\n }\r\n }\r\n }\r\n\r\n private checkLoad() {\r\n if (!this._attachment || !this._viewLoaded || !this.elementRef?.nativeElement)\r\n return;\r\n\r\n if (typeof window === 'undefined')\r\n this.loaded.next();\r\n else\r\n setTimeout(() => this.loaded.next(), 250);\r\n }\r\n\r\n activate() {\r\n this.activated.next();\r\n }\r\n\r\n remove() {\r\n this.removed.next();\r\n }\r\n\r\n get isError() {\r\n return this.error || this.attachment?.transientState?.error;\r\n }\r\n\r\n get theErrorMessage() {\r\n return this.errorMessage || this.attachment?.transientState?.errorMessage;\r\n }\r\n\r\n @HostBinding('class.loading')\r\n get isLoading() {\r\n return this.editing && (\r\n this.loading || !this.attachment || this.attachment.transientState?.loading \r\n || !this.attachment.url\r\n );\r\n }\r\n\r\n get isImageAttachment() {\r\n return this.attachment?.type?.startsWith('image/');\r\n }\r\n\r\n get hasFrame() {\r\n if (!this.attachment)\r\n return false;\r\n\r\n return this.attachment.type === 'iframe' || (\r\n this.attachment.type === 'card' \r\n && this.attachment.card?.player\r\n );\r\n }\r\n\r\n get frameUrl() {\r\n if (!this.attachment)\r\n return undefined;\r\n \r\n if (this.attachment.type === 'iframe') {\r\n return this.attachment.url;\r\n } else if (this.attachment.type === 'card') {\r\n return this.attachment.card.player;\r\n }\r\n }\r\n}","<button type=\"button\" (click)=\"remove()\" mat-mini-fab color=\"primary\" class=\"remove-button\" *ngIf=\"editing\">\r\n <mat-icon>close</mat-icon>\r\n</button>\r\n\r\n<ng-container *ngIf=\"isError\">\r\n <mat-icon class=\"error\">close</mat-icon>\r\n <em class=\"error\">{{theErrorMessage}}</em>\r\n</ng-container>\r\n<ng-container *ngIf=\"!isError\">\r\n <ng-container *ngIf=\"isLoading\">\r\n <mat-spinner></mat-spinner>\r\n <em>{{loadingMessage}}</em>\r\n </ng-container>\r\n <ng-container *ngIf=\"!isLoading && attachment\">\r\n <iframe *ngIf=\"hasFrame\"\r\n sandbox=\"allow-scripts allow-popups allow-same-origin allow-presentation\" \r\n [src]=\"frameUrl | trustResourceUrl\"></iframe>\r\n <a *ngIf=\"attachment.type === 'card'\" class=\"card-attachment\" [href]=\"attachment.url\" target=\"_blank\" [class.has-image]=\"attachment.card.image\">\r\n <img \r\n *ngIf=\"attachment.card.image\"\r\n class=\"thumbnail\" \r\n [src]=\"attachment.card.image\"\r\n />\r\n <div class=\"description\">\r\n <h1>{{attachment.card.title}}</h1>\r\n <div class=\"summary\">\r\n {{attachment.card.description}}\r\n </div>\r\n <cite>{{attachment.card.url}}</cite>\r\n </div>\r\n </a>\r\n <a class=\"image-attachment\" *ngIf=\"isImageAttachment && attachment.url\" href=\"javascript:;\" (click)=\"activate()\">\r\n <img [src]=\"attachment.url\" alt=\"Image Attachment\">\r\n </a>\r\n <blockquote *ngIf=\"attachment.type === 'tweet'\" \r\n class=\"twitter-tweet\">\r\n <p lang=\"en\" dir=\"ltr\"></p>\r\n <a [href]=\"attachment.url\"></a>\r\n </blockquote>\r\n </ng-container>\r\n</ng-container>","import { Component, Input, Output, ViewChild } from \"@angular/core\";\r\nimport { ChatMessage, ChatMessageAttachment } from \"@banta/common\";\r\nimport { Subject } from \"rxjs\";\r\nimport { LightboxComponent } from \"../lightbox/lightbox.component\";\r\n\r\n@Component({\r\n selector: 'banta-attachments',\r\n templateUrl: './attachments.component.html',\r\n styleUrls: ['./attachments.component.scss']\r\n})\r\nexport class BantaAttachmentsComponent {\r\n @Input() attachments: ChatMessageAttachment[];\r\n @Input() editing = false;\r\n @ViewChild('lightbox') lightbox: LightboxComponent;\r\n @Output() remove = new Subject<ChatMessageAttachment>();\r\n @Output() loaded = new Subject<void>();\r\n\r\n loadedAttachments = new WeakMap<ChatMessageAttachment, boolean>();\r\n\r\n ngAfterViewInit() {\r\n\r\n }\r\n\r\n markAttachmentLoaded(attachment: ChatMessageAttachment) {\r\n this.loadedAttachments.set(attachment, true);\r\n\r\n if (this.allAttachmentsLoaded)\r\n this.loaded.next();\r\n }\r\n\r\n isAttachmentLoaded(attachment: ChatMessageAttachment) {\r\n return this.loadedAttachments.has(attachment);\r\n }\r\n\r\n get allAttachmentsLoaded() {\r\n return this.attachments.every(x => this.isAttachmentLoaded(x));\r\n }\r\n\r\n removeAttachment(attachment: ChatMessageAttachment) {\r\n this.remove.next(attachment);\r\n }\r\n\r\n isImageAttachment(attachment: ChatMessageAttachment) {\r\n if (attachment.type.startsWith('image/'))\r\n return true;\r\n return false;\r\n }\r\n\r\n isCardAttachment(attachment: ChatMessageAttachment) {\r\n if (['card'].includes(attachment.type))\r\n return true;\r\n return false;\r\n }\r\n\r\n showLightbox(image: ChatMessageAttachment) {\r\n this.lightbox.open(\r\n image.url,\r\n this.attachments\r\n .filter(x => x.type === 'image/png')\r\n .map(x => x.url)\r\n )\r\n }\r\n\r\n get validAttachments() {\r\n return this.attachments.filter(x => x.type);\r\n }\r\n\r\n get inlineAttachments() {\r\n return this.validAttachments.filter(x => x.type !== 'card' && (x.style === 'inline' || !x.style));\r\n }\r\n\r\n get blockAttachments() {\r\n return this.validAttachments.filter(x => x.style === 'block' || x.type === 'card');\r\n }\r\n\r\n attachmentId(index: number, attachment: ChatMessageAttachment) {\r\n return attachment.url;\r\n }\r\n}","<ng-container *ngIf=\"attachments?.length > 0\">\r\n <banta-lightbox #lightbox></banta-lightbox>\r\n <div class=\"block-attachments\">\r\n <ng-container *ngFor=\"let attachment of blockAttachments; trackBy: attachmentId\">\r\n <banta-attachment \r\n [attachment]=\"attachment\"\r\n [editing]=\"editing\"\r\n (loaded)=\"markAttachmentLoaded(attachment)\"\r\n (removed)=\"removeAttachment(attachment)\"\r\n (activated)=\"showLightbox(attachment)\"\r\n ></banta-attachment>\r\n </ng-container>\r\n </div>\r\n\r\n <div \r\n class=\"inline-attachments\" \r\n [class.single]=\"attachments?.length === 1\" \r\n *ngIf=\"attachments && attachments?.length > 0\"\r\n >\r\n <ng-container *ngFor=\"let attachment of inlineAttachments; trackBy: attachmentId\">\r\n <banta-attachment \r\n [attachment]=\"attachment\"\r\n [editing]=\"editing\"\r\n (loaded)=\"markAttachmentLoaded(attachment)\"\r\n (removed)=\"removeAttachment(attachment)\"\r\n (activated)=\"showLightbox(attachment)\"\r\n ></banta-attachment>\r\n </ng-container>\r\n </div>\r\n</ng-container>","import { NgModule, ModuleWithProviders } from '@angular/core';\r\nimport { TimestampComponent } from './timestamp.component';\r\nimport { CommonModule } from '@angular/common';\r\nimport { LightboxComponent } from './lightbox/lightbox.component';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { BantaMarkdownToHtmlPipe } from './markdown-to-html.pipe';\r\nimport { BantaAttachmentsComponent } from './attachments/attachments.component';\r\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { BantaTrustResourceUrlPipe } from './trust-resource-url.pipe';\r\nimport { BantaAttachmentComponent } from './attachment/attachment.component';\r\nimport { BantaMentionLinkerPipe } from './mention-linker.pipe';\r\nimport { TimerPool } from './timer-pool.service';\r\n\r\nconst COMPONENTS = [\r\n TimestampComponent,\r\n LightboxComponent,\r\n BantaMarkdownToHtmlPipe,\r\n BantaMentionLinkerPipe,\r\n BantaTrustResourceUrlPipe,\r\n BantaAttachmentComponent,\r\n BantaAttachmentsComponent\r\n];\r\n\r\n@NgModule({\r\n declarations: COMPONENTS,\r\n imports: [\r\n CommonModule,\r\n MatIconModule,\r\n MatProgressSpinnerModule,\r\n MatButtonModule\r\n ],\r\n exports: COMPONENTS\r\n})\r\nexport class BantaCommonModule {\r\n static forRoot(): ModuleWithProviders<BantaCommonModule> {\r\n return {\r\n ngModule: BantaCommonModule,\r\n providers: [\r\n TimerPool\r\n ]\r\n }\r\n }\r\n}","export const EMOJIS = {\r\n \"grinning\": {\r\n \"keywords\": [\"face\", \"smile\", \"happy\", \"joy\", \":D\", \"grin\"],\r\n \"char\": \"😀\",\r\n \"category\": \"people\"\r\n },\r\n \"grimacing\": {\r\n \"keywords\": [\"face\", \"grimace\", \"teeth\"],\r\n \"char\": \"😬\",\r\n \"category\": \"people\"\r\n },\r\n \"grin\": {\r\n \"keywords\": [\"face\", \"happy\", \"smile\", \"joy\", \"kawaii\"],\r\n \"char\": \"😁\",\r\n \"category\": \"people\"\r\n },\r\n \"joy\": {\r\n \"keywords\": [\"face\", \"cry\", \"tears\", \"weep\", \"happy\", \"happytears\", \"haha\"],\r\n \"char\": \"😂\",\r\n \"category\": \"people\"\r\n },\r\n \"smiley\": {\r\n \"keywords\": [\"face\", \"happy\", \"joy\", \"haha\", \":D\", \":)\", \"smile\", \"funny\"],\r\n \"char\": \"😃\",\r\n \"category\": \"people\"\r\n },\r\n \"smile\": {\r\n \"keywords\": [\"face\", \"happy\", \"joy\", \"funny\", \"haha\", \"laugh\", \"like\", \":D\", \":)\"],\r\n \"char\": \"😄\",\r\n \"category\": \"people\"\r\n },\r\n \"sweat_smile\": {\r\n \"keywords\": [\"face\", \"hot\", \"happy\", \"laugh\", \"sweat\", \"smile\", \"relief\"],\r\n \"char\": \"😅\",\r\n \"category\": \"people\"\r\n },\r\n \"laughing\": {\r\n \"keywords\": [\"happy\", \"joy\", \"lol\", \"satisfied\", \"haha\", \"face\", \"glad\", \"XD\", \"laugh\"],\r\n \"char\": \"😆\",\r\n \"category\": \"people\"\r\n },\r\n \"innocent\": {\r\n \"keywords\": [\"face\", \"angel\", \"heaven\", \"halo\"],\r\n \"char\": \"😇\",\r\n \"category\": \"people\"\r\n },\r\n \"wink\": {\r\n \"keywords\": [\"face\", \"happy\", \"mischievous\", \"secret\", \";)\", \"smile\"],\r\n \"char\": \"😉\",\r\n \"category\": \"people\"\r\n },\r\n \"blush\": {\r\n \"keywords\": [\"face\", \"smile\", \"happy\", \"flushed\", \"crush\", \"embarrassed\", \"shy\", \"joy\"],\r\n \"char\": \"😊\",\r\n \"category\": \"people\"\r\n },\r\n \"slightly_smiling\": {\r\n \"keywords\": [\"face\", \"smile\"],\r\n \"char\": \"🙂\",\r\n \"category\": \"people\"\r\n },\r\n \"upside_down\": {\r\n \"keywords\": [\"face\", \"flipped\", \"silly\", \"smile\"],\r\n \"char\": \"🙃\",\r\n \"category\": \"people\"\r\n },\r\n \"relaxed\": {\r\n \"keywords\": [\"face\", \"blush\", \"massage\", \"happiness\"],\r\n \"char\": \"☺️\",\r\n \"category\": \"people\"\r\n },\r\n \"yum\": {\r\n \"keywords\": [\"happy\", \"joy\", \"tongue\", \"smile\", \"face\", \"silly\", \"yummy\", \"nom\"],\r\n \"char\": \"😋\",\r\n \"category\": \"people\"\r\n },\r\n \"relieved\": {\r\n \"keywords\": [\"face\", \"relaxed\", \"phew\", \"massage\", \"happiness\"],\r\n \"char\": \"😌\",\r\n \"category\": \"people\"\r\n },\r\n \"heart_eyes\": {\r\n \"keywords\": [\"face\", \"love\", \"like\", \"affection\", \"valentines\", \"infatuation\", \"crush\", \"heart\"],\r\n \"char\": \"😍\",\r\n \"category\": \"people\"\r\n },\r\n \"kissing_heart\": {\r\n \"keywords\": [\"face\", \"love\", \"like\", \"affection\", \"valentines\", \"infatuation\", \"kiss\"],\r\n \"char\": \"😘\",\r\n \"category\": \"people\"\r\n },\r\n \"kissing\": {\r\n \"keywords\": [\"love\", \"like\", \"face\", \"3\", \"valentines\", \"infatuation\", \"kiss\"],\r\n \"char\": \"😗\",\r\n \"category\": \"people\"\r\n },\r\n \"kissing_smiling_eyes\": {\r\n \"keywords\": [\"face\", \"affection\", \"valentines\", \"infatuation\", \"kiss\"],\r\n \"char\": \"😙\",\r\n \"category\": \"people\"\r\n },\r\n \"kissing_closed_eyes\": {\r\n \"keywords\": [\"face\", \"love\", \"like\", \"affection\", \"valentines\", \"infatuation\", \"kiss\"],\r\n \"char\": \"😚\",\r\n \"category\": \"people\"\r\n },\r\n \"stuck_out_tongue_winking_eye\": {\r\n \"keywords\": [\"face\", \"prank\", \"childish\", \"playful\", \"mischievous\", \"smile\", \"wink\", \"tongue\"],\r\n \"char\": \"😜\",\r\n \"category\": \"people\"\r\n },\r\n \"stuck_out_tongue_closed_eyes\": {\r\n \"keywords\": [\"face\", \"prank\", \"playful\", \"mischievous\", \"smile\", \"tongue\"],\r\n \"char\": \"😝\",\r\n \"category\": \"people\"\r\n },\r\n \"stuck_out_tongue\": {\r\n \"keywords\": [\"face\", \"prank\", \"childish\", \"playful\", \"mischievous\", \"smile\", \"tongue\"],\r\n \"char\": \"😛\",\r\n \"category\": \"people\"\r\n },\r\n \"money_mouth\": {\r\n \"keywords\": [\"face\", \"rich\", \"dollar\", \"money\"],\r\n \"char\": \"🤑\",\r\n \"category\": \"people\"\r\n },\r\n \"nerd\": {\r\n \"keywords\": [\"face\", \"nerdy\", \"geek\", \"dork\"],\r\n \"char\": \"🤓\",\r\n \"category\": \"people\"\r\n },\r\n \"sunglasses\": {\r\n \"keywords\": [\"face\", \"cool\", \"smile\", \"summer\", \"beach\", \"sunglass\"],\r\n \"char\": \"😎\",\r\n \"category\": \"people\"\r\n },\r\n \"hugging\": {\r\n \"keywords\": [\"face\", \"smile\", \"hug\"],\r\n \"char\": \"🤗\",\r\n \"category\": \"people\"\r\n },\r\n \"smirk\": {\r\n \"keywords\": [\"face\", \"smile\", \"mean\", \"prank\", \"smug\", \"sarcasm\"],\r\n \"char\": \"😏\",\r\n \"category\": \"people\"\r\n },\r\n \"no_mouth\": {\r\n \"keywords\": [\"face\", \"hellokitty\"],\r\n \"char\": \"😶\",\r\n \"category\": \"people\"\r\n },\r\n \"neutral_face\": {\r\n \"keywords\": [\"indifference\", \"meh\", \":|\", \"neutral\"],\r\n \"char\": \"😐\",\r\n \"category\": \"people\"\r\n },\r\n \"expressionless\": {\r\n \"keywords\": [\"face\", \"indifferent\", \"-_-\", \"meh\", \"deadpan\"],\r\n \"char\": \"😑\",\r\n \"category\": \"people\"\r\n },\r\n \"unamused\": {\r\n \"keywords\": [\"indifference\", \"bored\", \"straight face\", \"serious\", \"sarcasm\"],\r\n \"char\": \"😒\",\r\n \"category\": \"people\"\r\n },\r\n \"rolling_eyes\": {\r\n \"keywords\": [\"face\", \"eyeroll\", \"frustrated\"],\r\n \"char\": \"🙄\",\r\n \"category\": \"people\"\r\n },\r\n \"thinking\": {\r\n \"keywords\": [\"face\", \"hmmm\", \"think\", \"consider\"],\r\n \"char\": \"🤔\",\r\n \"category\": \"people\"\r\n },\r\n \"flushed\": {\r\n \"keywords\": [\"face\", \"blush\", \"shy\", \"flattered\"],\r\n \"char\": \"😳\",\r\n \"category\": \"people\"\r\n },\r\n \"disappointed\": {\r\n \"keywords\": [\"face\", \"sad\", \"upset\", \"depressed\", \":(\"],\r\n \"char\": \"😞\",\r\n \"category\": \"people\"\r\n },\r\n \"worried\": {\r\n \"keywords\": [\"face\", \"concern\", \"nervous\", \":(\"],\r\n \"char\": \"😟\",\r\n \"category\": \"people\"\r\n },\r\n \"angry\": {\r\n \"keywords\": [\"mad\", \"face\", \"annoyed\", \"frustrated\"],\r\n \"char\": \"😠\",\r\n \"category\": \"people\"\r\n },\r\n \"rage\": {\r\n \"keywords\": [\"angry\", \"mad\", \"hate\", \"despise\"],\r\n \"char\": \"😡\",\r\n \"category\": \"people\"\r\n },\r\n \"pensive\": {\r\n \"keywords\": [\"face\", \"sad\", \"depressed\", \"okay\", \"upset\"],\r\n \"char\": \"😔\",\r\n \"category\": \"people\"\r\n },\r\n \"confused\": {\r\n \"keywords\": [\"face\", \"indifference\", \"huh\", \"weird\", \"hmmm\", \":/\"],\r\n \"char\": \"😕\",\r\n \"category\": \"people\"\r\n },\r\n \"slightly_sad\": {\r\n \"keywords\": [\"face\", \"frowning\", \"disappointed\", \"sad\", \"upset\"],\r\n \"char\": \"🙁\",\r\n \"category\": \"people\"\r\n },\r\n \"white_frowning\": {\r\n \"keywords\": [\"face\", \"sad\", \"upset\", \"frown\"],\r\n \"char\": \"☹\",\r\n \"category\": \"people\"\r\n },\r\n \"persevere\": {\r\n \"keywords\": [\"face\", \"sick\", \"no\", \"upset\", \"oops\"],\r\n \"char\": \"😣\",\r\n \"category\": \"people\"\r\n },\r\n \"confounded\": {\r\n \"keywords\": [\"face\", \"confused\", \"sick\", \"unwell\", \"oops\", \":S\"],\r\n \"char\": \"😖\",\r\n \"category\": \"people\"\r\n },\r\n \"tired_face\": {\r\n \"keywords\": [\"sick\", \"whine\", \"upset\", \"frustrated\"],\r\n \"char\": \"😫\",\r\n \"category\": \"people\"\r\n },\r\n \"weary\": {\r\n \"keywords\": [\"face\", \"tired\", \"sleepy\", \"sad\", \"frustrated\", \"upset\"],\r\n \"char\": \"😩\",\r\n \"category\": \"people\"\r\n },\r\n \"triumph\": {\r\n \"keywords\": [\"face\", \"gas\", \"phew\", \"proud\", \"pride\"],\r\n \"char\": \"😤\",\r\n \"category\": \"people\"\r\n },\r\n \"open_mouth\": {\r\n \"keywords\": [\"face\", \"surprise\", \"impressed\", \"wow\", \"whoa\", \":O\"],\r\n \"char\": \"😮\",\r\n \"category\": \"people\"\r\n },\r\n \"scream\": {\r\n \"keywords\": [\"face\", \"munch\", \"scared\", \"omg\"],\r\n \"char\": \"😱\",\r\n \"category\": \"people\"\r\n },\r\n \"fearful\": {\r\n \"keywords\": [\"face\", \"scared\", \"terrified\", \"nervous\", \"oops\", \"huh\"],\r\n \"char\": \"😨\",\r\n \"category\": \"people\"\r\n },\r\n \"cold_sweat\": {\r\n \"keywords\": [\"face\", \"nervous\", \"sweat\"],\r\n \"char\": \"😰\",\r\n \"category\": \"people\"\r\n },\r\n \"hushed\": {\r\n \"keywords\": [\"face\", \"woo\", \"shh\"],\r\n \"char\": \"😯\",\r\n \"category\": \"people\"\r\n },\r\n \"frowning\": {\r\n \"keywords\": [\"face\", \"aw\", \"what\"],\r\n \"char\": \"😦\",\r\n \"category\": \"people\"\r\n },\r\n \"anguished\": {\r\n \"keywords\": [\"face\", \"stunned\", \"nervous\"],\r\n \"char\": \"😧\",\r\n \"category\": \"people\"\r\n },\r\n \"cry\": {\r\n \"keywords\": [\"face\", \"tears\", \"sad\", \"depressed\", \"upset\", \":'(\"],\r\n \"char\": \"😢\",\r\n \"category\": \"people\"\r\n },\r\n \"disappointed_relieved\": {\r\n \"keywords\": [\"face\", \"phew\", \"sweat\", \"nervous\"],\r\n \"char\": \"😥\",\r\n \"category\": \"people\"\r\n },\r\n \"sleepy\": {\r\n \"keywords\": [\"face\", \"tired\", \"rest\", \"nap\"],\r\n \"char\": \"😪\",\r\n \"category\": \"people\"\r\n },\r\n \"sweat\": {\r\n \"keywords\": [\"face\", \"hot\", \"sad\", \"tired\", \"exercise\"],\r\n \"char\": \"😓\",\r\n \"category\": \"people\"\r\n },\r\n \"sob\": {\r\n \"keywords\": [\"face\", \"cry\", \"tears\", \"sad\", \"upset\", \"depressed\"],\r\n \"char\": \"😭\",\r\n \"category\": \"people\"\r\n },\r\n \"dizzy_face\": {\r\n \"keywords\": [\"spent\", \"unconscious\", \"xox\", \"dizzy\"],\r\n \"char\": \"😵\",\r\n \"category\": \"people\"\r\n },\r\n \"astonished\": {\r\n \"keywords\": [\"face\", \"xox\", \"surprised\", \"poisoned\"],\r\n \"char\": \"😲\",\r\n \"category\": \"people\"\r\n },\r\n \"zipper_mouth\": {\r\n \"keywords\": [\"face\", \"sealed\", \"zipper\", \"secret\"],\r\n \"char\": \"🤐\",\r\n \"category\": \"people\"\r\n },\r\n \"mask\": {\r\n \"keywords\": [\"face\", \"sick\", \"ill\", \"disease\"],\r\n \"char\": \"😷\",\r\n \"category\": \"people\"\r\n },\r\n \"thermometer_face\": {\r\n \"keywords\": [\"sick\", \"temperature\", \"thermometer\", \"cold\"],\r\n \"char\": \"🤒\",\r\n \"category\": \"people\"\r\n },\r\n \"bandage_face\": {\r\n \"keywords\": [\"injured\", \"clumsy\", \"bandage\", \"hurt\"],\r\n \"char\": \"🤕\",\r\n \"category\": \"people\"\r\n },\r\n \"sleeping\": {\r\n \"keywords\": [\"face\", \"tired\", \"sleepy\", \"night\", \"zzz\"],\r\n \"char\": \"😴\",\r\n \"category\": \"people\"\r\n },\r\n \"zzz\": {\r\n \"keywords\": [\"sleepy\", \"tired\"],\r\n \"char\": \"💤\",\r\n \"category\": \"people\"\r\n },\r\n \"hankey\": {\r\n \"keywords\": [\"poop\", \"shitface\", \"fail\", \"turd\", \"shit\"],\r\n \"char\": \"💩\",\r\n \"category\": \"people\"\r\n },\r\n \"smiling_imp\": {\r\n \"keywords\": [\"devil\", \"horns\"],\r\n \"char\": \"😈\",\r\n \"category\": \"people\"\r\n },\r\n \"imp\": {\r\n \"keywords\": [\"devil\", \"angry\", \"horns\"],\r\n \"char\": \"👿\",\r\n \"category\": \"people\"\r\n },\r\n \"japanese_ogre\": {\r\n \"keywords\": [\"monster\", \"red\", \"mask\", \"halloween\", \"scary\", \"creepy\", \"devil\", \"demon\", \"japanese\", \"ogre\"],\r\n \"char\": \"👹\",\r\n \"category\": \"people\"\r\n },\r\n \"japanese_goblin\": {\r\n \"keywords\": [\"red\", \"evil\", \"mask\", \"monster\", \"scary\", \"creepy\", \"japanese\", \"goblin\"],\r\n \"char\": \"👺\",\r\n \"category\": \"people\"\r\n },\r\n \"skull\": {\r\n \"keywords\": [\"dead\", \"skeleton\", \"creepy\"],\r\n \"char\": \"💀\",\r\n \"category\": \"people\"\r\n },\r\n \"ghost\": {\r\n \"keywords\": [\"halloween\", \"spooky\", \"scary\"],\r\n \"char\": \"👻\",\r\n \"category\": \"people\"\r\n },\r\n \"alien\": {\r\n \"keywords\": [\"UFO\", \"paul\", \"weird\", \"outer_space\"],\r\n \"char\": \"👽\",\r\n \"category\": \"people\"\r\n },\r\n \"robot\": {\r\n \"keywords\": [\"computer\", \"machine\"],\r\n \"char\": \"🤖\",\r\n \"category\": \"people\"\r\n },\r\n \"smiley_cat\": {\r\n \"keywords\": [\"animal\", \"cats\", \"happy\", \"smile\"],\r\n \"char\": \"😺\",\r\n \"category\": \"people\"\r\n },\r\n \"smile_cat\": {\r\n \"keywords\": [\"animal\", \"cats\", \"smile\"],\r\n \"char\": \"😸\",\r\n \"category\": \"people\"\r\n },\r\n \"joy_cat\": {\r\n \"keywords\": [\"animal\", \"cats\", \"haha\", \"happy\", \"tears\"],\r\n \"char\": \"😹\",\r\n \"category\": \"people\"\r\n },\r\n \"heart_eyes_cat\": {\r\n \"keywords\": [\"animal\", \"love\", \"like\", \"affection\", \"cats\", \"valentines\", \"heart\"],\r\n \"char\": \"😻\",\r\n \"category\": \"people\"\r\n },\r\n \"smirk_cat\": {\r\n \"keywords\": [\"animal\", \"cats\", \"smirk\"],\r\n \"char\": \"😼\",\r\n \"category\": \"people\"\r\n },\r\n \"kissing_cat\": {\r\n \"keywords\": [\"animal\", \"cats\", \"kiss\"],\r\n \"char\": \"😽\",\r\n \"category\": \"people\"\r\n },\r\n \"scream_cat\": {\r\n \"keywords\": [\"animal\", \"cats\", \"munch\", \"scared\", \"scream\"],\r\n \"char\": \"🙀\",\r\n \"category\": \"people\"\r\n },\r\n \"crying_cat_face\": {\r\n \"keywords\": [\"animal\", \"tears\", \"weep\", \"sad\", \"cats\", \"upset\", \"cry\"],\r\n \"char\": \"😿\",\r\n \"category\": \"people\"\r\n },\r\n \"pouting_cat\": {\r\n \"keywords\": [\"animal\", \"cats\"],\r\n \"char\": \"😾\",\r\n \"category\": \"people\"\r\n },\r\n \"raised_hands\": {\r\n \"keywords\": [\"gesture\", \"hooray\", \"yea\", \"celebration\", \"hands\"],\r\n \"char\": \"🙌\",\r\n \"category\": \"people\"\r\n },\r\n \"clap\": {\r\n \"keywords\": [\"hands\", \"praise\", \"applause\", \"congrats\", \"yay\"],\r\n \"char\": \"👏\",\r\n \"category\": \"people\"\r\n },\r\n \"wave\": {\r\n \"keywords\": [\"hands\", \"gesture\", \"goodbye\", \"solong\", \"farewell\", \"hello\", \"palm\"],\r\n \"char\": \"👋\",\r\n \"category\": \"people\"\r\n },\r\n \"+1\": {\r\n \"keywords\": [\"thumbsup\", \"yes\", \"awesome\", \"good\", \"agree\", \"accept\", \"cool\", \"hand\", \"like\"],\r\n \"char\": \"👍\",\r\n \"category\": \"people\"\r\n },\r\n \"minus1\": { // TODO: should be \"-1\", fix TS bug\r\n \"keywords\": [\"thumbsdown\", \"no\", \"dislike\", \"hand\"],\r\n \"char\": \"👎\",\r\n \"category\": \"people\"\r\n },\r\n \"facepunch\": {\r\n \"keywords\": [\"angry\", \"violence\", \"fist\", \"hit\", \"attack\", \"hand\"],\r\n \"char\": \"👊\",\r\n \"category\": \"people\"\r\n },\r\n \"fist\": {\r\n \"keywords\": [\"fingers\", \"hand\", \"grasp\"],\r\n \"char\": \"✊\",\r\n \"category\": \"people\"\r\n },\r\n \"v\": {\r\n \"keywords\": [\"fingers\", \"ohyeah\", \"hand\", \"peace\", \"victory\", \"two\"],\r\n \"char\": \"✌️\",\r\n \"category\": \"people\"\r\n },\r\n \"ok_hand\": {\r\n \"keywords\": [\"fingers\", \"limbs\", \"perfect\", \"ok\"],\r\n \"char\": \"👌\",\r\n \"category\": \"people\"\r\n },\r\n \"hand\": {\r\n \"keywords\": [\"fingers\", \"stop\", \"highfive\", \"palm\", \"ban\", \"raised_hand\"],\r\n \"char\": \"✋\",\r\n \"category\": \"people\"\r\n },\r\n \"open_hands\": {\r\n \"keywords\": [\"fingers\", \"butterfly\", \"hands\", \"open\"],\r\n \"char\": \"👐\",\r\n \"category\": \"people\"\r\n },\r\n \"muscle\": {\r\n \"keywords\": [\"arm\", \"flex\", \"hand\", \"summer\", \"strong\", \"biceps\"],\r\n \"char\": \"💪\",\r\n \"category\": \"people\"\r\n },\r\n \"pray\": {\r\n \"keywords\": [\"please\", \"hope\", \"wish\", \"namaste\", \"highfive\"],\r\n \"char\": \"🙏\",\r\n \"category\": \"people\"\r\n },\r\n \"point_up\": {\r\n \"keywords\": [\"hand\", \"fingers\", \"direction\", \"up\"],\r\n \"char\": \"☝️\",\r\n \"category\": \"people\"\r\n },\r\n \"point_up_2\": {\r\n \"keywords\": [\"fingers\", \"hand\", \"direction\", \"up\"],\r\n \"char\": \"👆\",\r\n \"category\": \"people\"\r\n },\r\n \"point_down\": {\r\n \"keywords\": [\"fingers\", \"hand\", \"direction\", \"down\"],\r\n \"char\": \"👇\",\r\n \"category\": \"people\"\r\n },\r\n \"point_left\": {\r\n \"keywords\": [\"direction\", \"fingers\", \"hand\", \"left\"],\r\n \"char\": \"👈\",\r\n \"category\": \"people\"\r\n },\r\n \"point_right\": {\r\n \"keywords\": [\"fingers\", \"hand\", \"direction\", \"right\"],\r\n \"char\": \"👉\",\r\n \"category\": \"people\"\r\n },\r\n \"middle_finger\": {\r\n \"keywords\": [\"hand\", \"fingers\", \"rude\"],\r\n \"char\": \"🖕\",\r\n \"category\": \"people\"\r\n },\r\n \"splayed_fingers\": {\r\n \"keywords\": [\"hand\", \"fingers\", \"palm\"],\r\n \"char\": \"🖐\",\r\n \"category\": \"people\"\r\n },\r\n \"sign_of_horns\": {\r\n \"keywords\": [\"hand\", \"fingers\", \"evil_eye\", \"metal\", \"rock_on\"],\r\n \"char\": \"🤘\",\r\n \"category\": \"people\"\r\n },\r\n \"vulcan_salute\": {\r\n \"keywords\": [\"hand\", \"fingers\", \"spock\", \"star trek\"],\r\n \"char\": \"🖖\",\r\n \"category\": \"people\"\r\n },\r\n \"writing_hand\": {\r\n \"keywords\": [\"pen\", \"stationery\", \"write\"],\r\n \"char\": \"✍\",\r\n \"category\": \"people\"\r\n },\r\n \"nail_care\": {\r\n \"keywords\": [\"beauty\", \"manicure\", \"finger\", \"fashion\", \"nail\"],\r\n \"char\": \"💅\",\r\n \"category\": \"people\"\r\n },\r\n \"lips\": {\r\n \"keywords\": [\"mouth\", \"kiss\"],\r\n \"char\": \"👄\",\r\n \"category\": \"people\"\r\n },\r\n \"tongue\": {\r\n \"keywords\": [\"mouth\", \"playful\"],\r\n \"char\": \"👅\",\r\n \"category\": \"people\"\r\n },\r\n \"ear\": {\r\n \"keywords\": [\"face\", \"hear\", \"sound\", \"listen\"],\r\n \"char\": \"👂\",\r\n \"category\": \"people\"\r\n },\r\n \"nose\": {\r\n \"keywords\": [\"smell\", \"sniff\"],\r\n \"char\": \"👃\",\r\n \"category\": \"people\"\r\n },\r\n \"eye\": {\r\n \"keywords\": [\"face\", \"look\", \"see\", \"watch\", \"stare\"],\r\n \"char\": \"👁\",\r\n \"category\": \"people\"\r\n },\r\n \"eyes\": {\r\n \"keywords\": [\"look\", \"watch\", \"stalk\", \"peek\", \"see\"],\r\n \"char\": \"👀\",\r\n \"category\": \"people\"\r\n },\r\n \"bust_in_silhouette\": {\r\n \"keywords\": [\"user\", \"person\", \"human\"],\r\n \"char\": \"👤\",\r\n \"category\": \"people\"\r\n },\r\n \"busts_in_silhouette\": {\r\n \"keywords\": [\"user\", \"person\", \"human\", \"group\", \"team\"],\r\n \"char\": \"👥\",\r\n \"category\": \"people\"\r\n },\r\n \"speaking_head\": {\r\n \"keywords\": [\"user\", \"person\", \"human\"],\r\n \"char\": \"🗣\",\r\n \"category\": \"people\"\r\n },\r\n \"baby\": {\r\n \"keywords\": [\"child\", \"boy\", \"girl\", \"toddler\"],\r\n \"char\": \"👶\",\r\n \"category\": \"people\"\r\n },\r\n \"boy\": {\r\n \"keywords\": [\"man\", \"male\", \"guy\", \"teenager\"],\r\n \"char\": \"👦\",\r\n \"category\": \"people\"\r\n },\r\n \"girl\": {\r\n \"keywords\": [\"female\", \"woman\", \"teenager\"],\r\n \"char\": \"👧\",\r\n \"category\": \"people\"\r\n },\r\n \"man\": {\r\n \"keywords\": [\"mustache\", \"father\", \"dad\", \"guy\", \"classy\", \"sir\", \"moustache\"],\r\n \"char\": \"👨\",\r\n \"category\": \"people\"\r\n },\r\n \"woman\": {\r\n \"keywords\": [\"female\", \"girls\", \"lady\"],\r\n \"char\": \"👩\",\r\n \"category\": \"people\"\r\n },\r\n \"person_with_blond_hair\": {\r\n \"keywords\": [\"man\", \"male\", \"boy\", \"blonde\", \"guy\", \"person\"],\r\n \"char\": \"👱\",\r\n \"category\": \"people\"\r\n },\r\n \"older_man\": {\r\n \"keywords\": [\"human\", \"male\", \"men\", \"old\", \"elder\", \"senior\"],\r\n \"char\": \"👴\",\r\n \"category\": \"people\"\r\n },\r\n \"older_woman\": {\r\n \"keywords\": [\"human\", \"female\", \"women\", \"lady\", \"old\", \"elder\", \"senior\"],\r\n \"char\": \"👵\",\r\n \"category\": \"people\"\r\n },\r\n \"man_with_gua_pi_mao\": {\r\n \"keywords\": [\"male\", \"boy\", \"chinese\"],\r\n \"char\": \"👲\",\r\n \"category\": \"people\"\r\n },\r\n \"man_with_turban\": {\r\n \"keywords\": [\"male\", \"indian\", \"hinduism\", \"arabs\"],\r\n \"char\": \"👳\",\r\n \"category\": \"people\"\r\n },\r\n \"cop\": {\r\n \"keywords\": [\"man\", \"police\", \"law\", \"legal\", \"enforcement\", \"arrest\", \"911\"],\r\n \"char\": \"👮\",\r\n \"category\": \"people\"\r\n },\r\n \"construction_worker\": {\r\n \"keywords\": [\"male\", \"human\", \"wip\", \"guy\", \"build\", \"construction\", \"worker\", \"labor\"],\r\n \"char\": \"👷\",\r\n \"category\": \"people\"\r\n },\r\n \"guardsman\": {\r\n \"keywords\": [\"uk\", \"gb\", \"british\", \"male\", \"guy\", \"royal\"],\r\n \"char\": \"💂\",\r\n \"category\": \"people\"\r\n },\r\n \"sleuth\": {\r\n \"keywords\": [\"human\", \"spy\", \"detective\"],\r\n \"char\": \"🕵\",\r\n \"category\": \"people\"\r\n },\r\n \"santa\": {\r\n \"keywords\": [\"festival\", \"man\", \"male\", \"xmas\", \"father christmas\"],\r\n \"char\": \"🎅\",\r\n \"category\": \"people\"\r\n },\r\n \"angel\": {\r\n \"keywords\": [\"heaven\", \"wings\", \"halo\"],\r\n \"char\": \"👼\",\r\n \"category\": \"people\"\r\n },\r\n \"princess\": {\r\n \"keywords\": [\"girl\", \"woman\", \"female\", \"blond\", \"crown\", \"royal\", \"queen\"],\r\n \"char\": \"👸\",\r\n \"category\": \"people\"\r\n },\r\n \"bride_with_veil\": {\r\n \"keywords\": [\"couple\", \"marriage\", \"wedding\", \"woman\", \"bride\"],\r\n \"char\": \"👰\",\r\n \"category\": \"people\"\r\n },\r\n \"runner\": {\r\n \"keywords\": [\"man\", \"walking\", \"exercise\", \"race\", \"running\"],\r\n \"char\": \"🏃\",\r\n \"category\": \"people\"\r\n },\r\n \"walking\": {\r\n \"keywords\": [\"human\", \"feet\", \"steps\"],\r\n \"char\": \"🚶\",\r\n \"category\": \"people\"\r\n },\r\n \"dancer\": {\r\n \"keywords\": [\"female\", \"girl\", \"woman\", \"fun\"],\r\n \"char\": \"💃\",\r\n \"category\": \"people\"\r\n },\r\n \"dancers\": {\r\n \"keywords\": [\"female\", \"bunny\", \"women\", \"girls\"],\r\n \"char\": \"👯\",\r\n \"category\": \"people\"\r\n },\r\n \"couple\": {\r\n \"keywords\": [\"pair\", \"people\", \"human\", \"love\", \"date\", \"dating\", \"like\", \"affection\", \"valentines\", \"marriage\"],\r\n \"char\": \"👫\",\r\n \"category\": \"people\"\r\n },\r\n \"two_men_holding_hands\": {\r\n \"keywords\": [\"pair\", \"couple\", \"love\", \"like\", \"bromance\", \"friendship\", \"people\", \"human\"],\r\n \"char\": \"👬\",\r\n \"category\": \"people\"\r\n },\r\n \"two_women_holding_hands\": {\r\n \"keywords\": [\"pair\", \"friendship\", \"couple\", \"love\", \"like\", \"female\", \"people\", \"human\"],\r\n \"char\": \"👭\",\r\n \"category\": \"people\"\r\n },\r\n \"bow\": {\r\n \"keywords\": [\"man\", \"male\", \"boy\"],\r\n \"char\": \"🙇\",\r\n \"category\": \"people\"\r\n },\r\n \"information_desk_person\": {\r\n \"keywords\": [\"female\", \"girl\", \"woman\", \"human\", \"information\"],\r\n \"char\": \"💁\",\r\n \"category\": \"people\"\r\n },\r\n \"no_good\": {\r\n \"keywords\": [\"female\", \"girl\", \"woman\", \"nope\"],\r\n \"char\": \"🙅\",\r\n \"category\": \"people\"\r\n },\r\n \"ok_woman\": {\r\n \"keywords\": [\"women\", \"girl\", \"female\", \"pink\", \"human\", \"woman\"],\r\n \"char\": \"🙆\",\r\n \"category\": \"people\"\r\n },\r\n \"raising_hand\": {\r\n \"keywords\": [\"female\", \"girl\", \"woman\"],\r\n \"char\": \"🙋\",\r\n \"category\": \"people\"\r\n },\r\n \"person_with_pouting_face\": {\r\n \"keywords\": [\"female\", \"girl\", \"woman\"],\r\n \"char\": \"🙎\",\r\n \"category\": \"people\"\r\n },\r\n \"person_frowning\": {\r\n \"keywords\": [\"female\", \"girl\", \"woman\", \"sad\", \"depressed\", \"discouraged\", \"unhappy\"],\r\n \"char\": \"🙍\",\r\n \"category\": \"people\"\r\n },\r\n \"haircut\": {\r\n \"keywords\": [\"female\", \"girl\", \"woman\"],\r\n \"char\": \"💇\",\r\n \"category\": \"people\"\r\n },\r\n \"massage\": {\r\n \"keywords\": [\"female\", \"girl\", \"woman\", \"head\"],\r\n \"char\": \"💆\",\r\n \"category\": \"people\"\r\n },\r\n \"couple_with_heart\": {\r\n \"keywords\": [\"pair\", \"love\", \"like\", \"affection\", \"human\", \"dating\", \"valentines\", \"marriage\"],\r\n \"char\": \"💑\",\r\n \"category\": \"people\"\r\n },\r\n \"female_couple_with_heart\": {\r\n \"keywords\": [\"pair\", \"love\", \"like\", \"affection\", \"human\", \"dating\", \"valentines\", \"marriage\"],\r\n \"char\": \"👩❤️👩\",\r\n \"category\": \"people\"\r\n },\r\n \"male_couple_with_heart\": {\r\n \"keywords\": [\"pair\", \"love\", \"like\", \"affection\", \"human\", \"dating\", \"valentines\", \"marriage\"],\r\n \"char\": \"👨❤️👨\",\r\n \"category\": \"people\"\r\n },\r\n \"couplekiss\": {\r\n \"keywords\": [\"pair\", \"valentines\", \"love\", \"like\", \"dating\", \"marriage\"],\r\n \"char\": \"💏\",\r\n \"category\": \"people\"\r\n },\r\n \"female_couplekiss\": {\r\n \"keywords\": [\"pair\", \"valentines\", \"love\", \"like\", \"dating\", \"marriage\"],\r\n \"char\": \"👩❤️💋👩\",\r\n \"category\": \"people\"\r\n },\r\n \"male_couplekiss\": {\r\n \"keywords\": [\"pair\", \"valentines\", \"love\", \"like\", \"dating\", \"marriage\"],\r\n \"char\": \"👨❤️💋👨\",\r\n \"category\": \"people\"\r\n },\r\n \"family\": {\r\n \"keywords\": [\"home\", \"parents\", \"child\", \"mom\", \"dad\", \"father\", \"mother\", \"people\", \"human\"],\r\n \"char\": \"👪\",\r\n \"category\": \"people\"\r\n },\r\n \"family_man_woman_girl\": {\r\n \"keywords\": [\"home\", \"parents\", \"people\", \"human\", \"child\"],\r\n \"char\": \"👨👩👧\",\r\n \"category\": \"people\"\r\n },\r\n \"family_man_woman_girl_boy\": {\r\n \"keywords\": [\"home\", \"parents\", \"people\", \"human\", \"children\"],\r\n \"char\": \"👨👩👧👦\",\r\n \"category\": \"people\"\r\n },\r\n \"family_man_woman_boys\": {\r\n \"keywords\": [\"home\", \"parents\", \"people\", \"human\", \"children\"],\r\n \"char\": \"👨👩👦👦\",\r\n \"category\": \"people\"\r\n },\r\n \"family_man_woman_girls\": {\r\n \"keywords\": [\"home\", \"parents\", \"people\", \"human\", \"children\"],\r\n \"char\": \"👨👩👧👧\",\r\n \"category\": \"people\"\r\n },\r\n \"family_women_boy\": {\r\n \"keywords\": [\"home\", \"parents\", \"people\", \"human\", \"children\"],\r\n \"char\": \"👩👩👦\",\r\n \"category\": \"people\"\r\n },\r\n \"family_women_girl\": {\r\n \"keywords\": [\"home\", \"parents\", \"people\", \"human\", \"children\"],\r\n \"char\": \"👩👩👧\",\r\n \"category\": \"people\"\r\n },\r\n \"family_women_girl_boy\": {\r\n \"keywords\": [\"home\", \"parents\", \"people\", \"human\", \"children\"],\r\n \"char\": \"👩👩👧👦\",\r\n \"category\": \"people\"\r\n },\r\n \"family_women_boys\": {\r\n \"keywords\": [\"home\", \"parents\", \"people\", \"human\", \"children\"],\r\n \"char\": \"👩👩👦👦\",\r\n \"category\": \"people\"\r\n },\r\n \"family_women_girls\": {\r\n \"keywords\": [\"home\", \"parents\", \"people\", \"human\", \"children\"],\r\n \"char\": \"👩👩👧👧\",\r\n \"category\": \"people\"\r\n },\r\n \"family_men_boy\": {\r\n \"keywords\": [\"home\", \"parents\", \"people\", \"human\", \"children\"],\r\n \"char\": \"👨👨👦\",\r\n \"category\": \"people\"\r\n },\r\n \"family_men_girl\": {\r\n \"keywords\": [\"home\", \"parents\", \"people\", \"human\", \"children\"],\r\n \"char\": \"👨👨👧\",\r\n \"category\": \"people\"\r\n },\r\n \"family_men_girl_boy\": {\r\n \"keywords\": [\"home\", \"parents\", \"people\", \"human\", \"children\"],\r\n \"char\": \"👨👨👧👦\",\r\n \"category\": \"people\"\r\n },\r\n \"family_men_boys\": {\r\n \"keywords\": [\"home\", \"parents\", \"people\", \"human\", \"children\"],\r\n \"char\": \"👨👨👦👦\",\r\n \"category\": \"people\"\r\n },\r\n \"family_men_girls\": {\r\n \"keywords\": [\"home\", \"parents\", \"people\", \"human\", \"children\"],\r\n \"char\": \"👨👨👧👧\",\r\n \"category\": \"people\"\r\n },\r\n \"womans_clothes\": {\r\n \"keywords\": [\"fashion\", \"shopping\", \"female\"],\r\n \"char\": \"👚\",\r\n \"category\": \"people\"\r\n },\r\n \"shirt\": {\r\n \"keywords\": [\"fashion\", \"cloth\", \"casual\", \"tshirt\", \"tee\"],\r\n \"char\": \"👕\",\r\n \"category\": \"people\"\r\n },\r\n \"jeans\": {\r\n \"keywords\": [\"fashion\", \"shopping\"],\r\n \"char\": \"👖\",\r\n \"category\": \"people\"\r\n },\r\n \"necktie\": {\r\n \"keywords\": [\"shirt\", \"suitup\", \"formal\", \"fashion\", \"cloth\", \"business\"],\r\n \"char\": \"👔\",\r\n \"category\": \"people\"\r\n },\r\n \"dress\": {\r\n \"keywords\": [\"clothes\", \"fashion\", \"shopping\"],\r\n \"char\": \"👗\",\r\n \"category\": \"people\"\r\n },\r\n \"bikini\": {\r\n \"keywords\": [\"swimming\", \"female\", \"woman\", \"girl\", \"fashion\", \"beach\", \"summer\"],\r\n \"char\": \"👙\",\r\n \"category\": \"people\"\r\n },\r\n \"kimono\": {\r\n \"keywords\": [\"dress\", \"fashion\", \"women\", \"female\", \"japanese\"],\r\n \"char\": \"👘\",\r\n \"category\": \"people\"\r\n },\r\n \"lipstick\": {\r\n \"keywords\": [\"female\", \"girl\", \"fashion\", \"woman\"],\r\n \"char\": \"💄\",\r\n \"category\": \"people\"\r\n },\r\n \"kiss\": {\r\n \"keywords\": [\"face\", \"lips\", \"love\", \"like\", \"affection\", \"valentines\"],\r\n \"char\": \"💋\",\r\n \"category\": \"people\"\r\n },\r\n \"footprints\": {\r\n \"keywords\": [\"feet\", \"tracking\", \"walking\", \"beach\"],\r\n \"char\": \"👣\",\r\n \"category\": \"people\"\r\n },\r\n \"high_heel\": {\r\n \"keywords\": [\"fashion\", \"shoes\", \"female\", \"pumps\", \"stiletto\"],\r\n \"char\": \"👠\",\r\n \"category\": \"people\"\r\n },\r\n \"sandal\": {\r\n \"keywords\": [\"shoes\", \"fashion\", \"flip flops\"],\r\n \"char\": \"👡\",\r\n \"category\": \"people\"\r\n },\r\n \"boot\": {\r\n \"keywords\": [\"shoes\", \"fashion\"],\r\n \"char\": \"👢\",\r\n \"category\": \"people\"\r\n },\r\n \"mans_shoe\": {\r\n \"keywords\": [\"fashion\", \"male\"],\r\n \"char\": \"👞\",\r\n \"category\": \"people\"\r\n },\r\n \"athletic_shoe\": {\r\n \"keywords\": [\"shoes\", \"sports\", \"sneakers\"],\r\n \"char\": \"👟\",\r\n \"category\": \"people\"\r\n },\r\n \"womans_hat\": {\r\n \"keywords\": [\"fashion\", \"accessories\", \"female\", \"lady\", \"spring\"],\r\n \"char\": \"👒\",\r\n \"category\": \"people\"\r\n },\r\n \"tophat\": {\r\n \"keywords\": [\"magic\", \"gentleman\", \"classy\", \"circus\"],\r\n \"char\": \"🎩\",\r\n \"category\": \"people\"\r\n },\r\n \"helmet\": {\r\n \"keywords\": [\"construction\", \"build\"],\r\n \"char\": \"⛑\",\r\n \"category\": \"people\"\r\n },\r\n \"mortar_board\": {\r\n \"keywords\": [\"school\", \"college\", \"degree\", \"university\", \"graduation\", \"cap\", \"hat\", \"legal\", \"learn\", \"education\"],\r\n \"char\": \"🎓\",\r\n \"category\": \"people\"\r\n },\r\n \"crown\": {\r\n \"keywords\": [\"king\", \"kod\", \"leader\", \"royalty\", \"lord\"],\r\n \"char\": \"👑\",\r\n \"category\": \"people\"\r\n },\r\n \"school_satchel\": {\r\n \"keywords\": [\"student\", \"education\", \"bag\", \"backpack\"],\r\n \"char\": \"🎒\",\r\n \"category\": \"people\"\r\n },\r\n \"pouch\": {\r\n \"keywords\": [\"bag\", \"accessories\", \"shopping\"],\r\n \"char\": \"👝\",\r\n \"category\": \"people\"\r\n },\r\n \"purse\": {\r\n \"keywords\": [\"fashion\", \"accessories\", \"money\", \"sales\", \"shopping\"],\r\n \"char\": \"👛\",\r\n \"category\": \"people\"\r\n },\r\n \"handbag\": {\r\n \"keywords\": [\"fashion\", \"accessory\", \"accessories\", \"shopping\"],\r\n \"char\": \"👜\",\r\n \"category\": \"people\"\r\n },\r\n \"briefcase\": {\r\n \"keywords\": [\"business\", \"documents\", \"work\", \"law\", \"legal\"],\r\n \"char\": \"💼\",\r\n \"category\": \"people\"\r\n },\r\n \"eyeglasses\": {\r\n \"keywords\": [\"fashion\", \"accessories\", \"eyesight\", \"nerdy\", \"dork\", \"geek\"],\r\n \"char\": \"👓\",\r\n \"category\": \"people\"\r\n },\r\n \"dark_sunglasses\": {\r\n \"keywords\": [\"face\", \"cool\", \"accessories\"],\r\n \"char\": \"🕶\",\r\n \"category\": \"people\"\r\n },\r\n \"ring\": {\r\n \"keywords\": [\"wedding\", \"propose\", \"marriage\", \"valentines\", \"diamond\", \"fashion\", \"jewelry\", \"gem\", \"engagement\"],\r\n \"char\": \"💍\",\r\n \"category\": \"people\"\r\n },\r\n \"closed_umbrella\": {\r\n \"keywords\": [\"weather\", \"rain\", \"drizzle\"],\r\n \"char\": \"🌂\",\r\n \"category\": \"people\"\r\n },\r\n \"dog\": {\r\n \"keywords\": [\"animal\", \"friend\", \"nature\", \"woof\", \"puppy\", \"pet\", \"faithful\"],\r\n \"char\": \"🐶\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"cat\": {\r\n \"keywords\": [\"animal\", \"meow\", \"nature\", \"pet\", \"kitten\"],\r\n \"char\": \"🐱\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"mouse\": {\r\n \"keywords\": [\"animal\", \"nature\", \"cheese\", \"rodent\"],\r\n \"char\": \"🐭\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"hamster\": {\r\n \"keywords\": [\"animal\", \"nature\"],\r\n \"char\": \"🐹\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"rabbit\": {\r\n \"keywords\": [\"animal\", \"nature\", \"pet\", \"spring\", \"magic\", \"bunny\"],\r\n \"char\": \"🐰\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"bear\": {\r\n \"keywords\": [\"animal\", \"nature\", \"wild\"],\r\n \"char\": \"🐻\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"panda_face\": {\r\n \"keywords\": [\"animal\", \"nature\", \"panda\"],\r\n \"char\": \"🐼\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"koala\": {\r\n \"keywords\": [\"animal\", \"nature\"],\r\n \"char\": \"🐨\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"tiger\": {\r\n \"keywords\": [\"animal\", \"cat\", \"danger\", \"wild\", \"nature\", \"roar\"],\r\n \"char\": \"🐯\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"lion_face\": {\r\n \"keywords\": [\"animal\", \"nature\"],\r\n \"char\": \"🦁\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"cow\": {\r\n \"keywords\": [\"beef\", \"ox\", \"animal\", \"nature\", \"moo\", \"milk\"],\r\n \"char\": \"🐮\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"pig\": {\r\n \"keywords\": [\"animal\", \"oink\", \"nature\"],\r\n \"char\": \"🐷\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"pig_nose\": {\r\n \"keywords\": [\"animal\", \"oink\"],\r\n \"char\": \"🐽\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"frog\": {\r\n \"keywords\": [\"animal\", \"nature\", \"croak\", \"toad\"],\r\n \"char\": \"🐸\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"octopus\": {\r\n \"keywords\": [\"animal\", \"creature\", \"ocean\", \"sea\", \"nature\", \"beach\"],\r\n \"char\": \"🐙\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"monkey_face\": {\r\n \"keywords\": [\"animal\", \"nature\", \"circus\"],\r\n \"char\": \"🐵\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"see_no_evil\": {\r\n \"keywords\": [\"monkey\", \"animal\", \"nature\", \"haha\"],\r\n \"char\": \"🙈\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"hear_no_evil\": {\r\n \"keywords\": [\"animal\", \"monkey\", \"nature\"],\r\n \"char\": \"🙉\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"speak_no_evil\": {\r\n \"keywords\": [\"monkey\", \"animal\", \"nature\", \"omg\"],\r\n \"char\": \"🙊\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"monkey\": {\r\n \"keywords\": [\"animal\", \"nature\", \"banana\", \"circus\"],\r\n \"char\": \"🐒\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"chicken\": {\r\n \"keywords\": [\"animal\", \"cluck\", \"nature\", \"bird\"],\r\n \"char\": \"🐔\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"penguin\": {\r\n \"keywords\": [\"animal\", \"nature\"],\r\n \"char\": \"🐧\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"bird\": {\r\n \"keywords\": [\"animal\", \"nature\", \"fly\", \"tweet\", \"spring\"],\r\n \"char\": \"🐦\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"baby_chick\": {\r\n \"keywords\": [\"animal\", \"chicken\", \"bird\"],\r\n \"char\": \"🐤\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"hatching_chick\": {\r\n \"keywords\": [\"animal\", \"chicken\", \"egg\", \"born\", \"baby\", \"bird\"],\r\n \"char\": \"🐣\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"hatched_chick\": {\r\n \"keywords\": [\"animal\", \"chicken\", \"baby\", \"bird\"],\r\n \"char\": \"🐥\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"wolf\": {\r\n \"keywords\": [\"animal\", \"nature\", \"wild\"],\r\n \"char\": \"🐺\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"boar\": {\r\n \"keywords\": [\"animal\", \"nature\"],\r\n \"char\": \"🐗\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"horse\": {\r\n \"keywords\": [\"animal\", \"brown\", \"nature\"],\r\n \"char\": \"🐴\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"unicorn_face\": {\r\n \"keywords\": [\"animal\", \"nature\", \"mystical\"],\r\n \"char\": \"🦄\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"bee\": {\r\n \"keywords\": [\"animal\", \"insect\", \"nature\", \"bug\", \"spring\", \"honey\"],\r\n \"char\": \"🐝\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"bug\": {\r\n \"keywords\": [\"animal\", \"insect\", \"nature\", \"worm\"],\r\n \"char\": \"🐛\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"snail\": {\r\n \"keywords\": [\"slow\", \"animal\", \"shell\"],\r\n \"char\": \"🐌\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"beetle\": {\r\n \"keywords\": [\"animal\", \"insect\", \"nature\", \"ladybug\"],\r\n \"char\": \"🐞\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"ant\": {\r\n \"keywords\": [\"animal\", \"insect\", \"nature\", \"bug\"],\r\n \"char\": \"🐜\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"spider\": {\r\n \"keywords\": [\"animal\", \"arachnid\"],\r\n \"char\": \"🕷\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"scorpion\": {\r\n \"keywords\": [\"animal\", \"arachnid\"],\r\n \"char\": \"🦂\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"crab\": {\r\n \"keywords\": [\"animal\", \"crustacean\"],\r\n \"char\": \"🦀\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"snake\": {\r\n \"keywords\": [\"animal\", \"evil\", \"nature\", \"hiss\", \"python\"],\r\n \"char\": \"🐍\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"turtle\": {\r\n \"keywords\": [\"animal\", \"slow\", \"nature\", \"tortoise\"],\r\n \"char\": \"🐢\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"tropical_fish\": {\r\n \"keywords\": [\"animal\", \"swim\", \"ocean\", \"beach\", \"nemo\"],\r\n \"char\": \"🐠\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"fish\": {\r\n \"keywords\": [\"animal\", \"food\", \"nature\"],\r\n \"char\": \"🐟\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"blowfish\": {\r\n \"keywords\": [\"animal\", \"nature\", \"food\", \"sea\", \"ocean\"],\r\n \"char\": \"🐡\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"dolphin\": {\r\n \"keywords\": [\"animal\", \"nature\", \"fish\", \"sea\", \"ocean\", \"flipper\", \"fins\", \"beach\"],\r\n \"char\": \"🐬\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"whale\": {\r\n \"keywords\": [\"animal\", \"nature\", \"sea\", \"ocean\"],\r\n \"char\": \"🐳\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"whale2\": {\r\n \"keywords\": [\"animal\", \"nature\", \"sea\", \"ocean\"],\r\n \"char\": \"🐋\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"crocodile\": {\r\n \"keywords\": [\"animal\", \"nature\", \"reptile\", \"lizard\", \"alligator\"],\r\n \"char\": \"🐊\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"leopard\": {\r\n \"keywords\": [\"animal\", \"nature\"],\r\n \"char\": \"🐆\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"tiger2\": {\r\n \"keywords\": [\"animal\", \"nature\", \"roar\"],\r\n \"char\": \"🐅\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"water_buffalo\": {\r\n \"keywords\": [\"animal\", \"nature\", \"ox\", \"cow\"],\r\n \"char\": \"🐃\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"ox\": {\r\n \"keywords\": [\"animal\", \"cow\", \"beef\"],\r\n \"char\": \"🐂\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"cow2\": {\r\n \"keywords\": [\"beef\", \"ox\", \"animal\", \"nature\", \"moo\", \"milk\"],\r\n \"char\": \"🐄\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"dromedary_camel\": {\r\n \"keywords\": [\"animal\", \"hot\", \"desert\", \"hump\"],\r\n \"char\": \"🐪\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"camel\": {\r\n \"keywords\": [\"animal\", \"nature\", \"hot\", \"desert\", \"hump\"],\r\n \"char\": \"🐫\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"elephant\": {\r\n \"keywords\": [\"animal\", \"nature\", \"nose\", \"thailand\", \"circus\"],\r\n \"char\": \"🐘\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"goat\": {\r\n \"keywords\": [\"animal\", \"nature\"],\r\n \"char\": \"🐐\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"ram\": {\r\n \"keywords\": [\"animal\", \"sheep\", \"nature\"],\r\n \"char\": \"🐏\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"sheep\": {\r\n \"keywords\": [\"animal\", \"nature\", \"wool\", \"shipit\"],\r\n \"char\": \"🐑\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"racehorse\": {\r\n \"keywords\": [\"animal\", \"gamble\", \"luck\"],\r\n \"char\": \"🐎\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"pig2\": {\r\n \"keywords\": [\"animal\", \"nature\"],\r\n \"char\": \"🐖\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"rat\": {\r\n \"keywords\": [\"animal\", \"mouse\", \"rodent\"],\r\n \"char\": \"🐀\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"mouse2\": {\r\n \"keywords\": [\"animal\", \"nature\", \"rodent\"],\r\n \"char\": \"🐁\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"rooster\": {\r\n \"keywords\": [\"animal\", \"nature\", \"chicken\"],\r\n \"char\": \"🐓\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"turkey\": {\r\n \"keywords\": [\"animal\", \"bird\"],\r\n \"char\": \"🦃\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"dove_of_peace\": {\r\n \"keywords\": [\"animal\", \"bird\"],\r\n \"char\": \"🕊\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"dog2\": {\r\n \"keywords\": [\"animal\", \"nature\", \"friend\", \"doge\", \"pet\", \"faithful\"],\r\n \"char\": \"🐕\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"poodle\": {\r\n \"keywords\": [\"dog\", \"animal\", \"101\", \"nature\", \"pet\"],\r\n \"char\": \"🐩\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"cat2\": {\r\n \"keywords\": [\"animal\", \"meow\", \"pet\", \"cats\"],\r\n \"char\": \"🐈\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"rabbit2\": {\r\n \"keywords\": [\"animal\", \"nature\", \"pet\", \"magic\", \"spring\"],\r\n \"char\": \"🐇\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"chipmunk\": {\r\n \"keywords\": [\"animal\", \"nature\", \"rodent\", \"squirrel\"],\r\n \"char\": \"🐿\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"feet\": {\r\n \"keywords\": [\"animal\", \"tracking\", \"footprints\", \"dog\", \"cat\", \"pet\", \"paw_prints\"],\r\n \"char\": \"🐾\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"dragon\": {\r\n \"keywords\": [\"animal\", \"myth\", \"nature\", \"chinese\", \"green\"],\r\n \"char\": \"🐉\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"dragon_face\": {\r\n \"keywords\": [\"animal\", \"myth\", \"nature\", \"chinese\", \"green\"],\r\n \"char\": \"🐲\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"cactus\": {\r\n \"keywords\": [\"vegetable\", \"plant\", \"nature\"],\r\n \"char\": \"🌵\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"christmas_tree\": {\r\n \"keywords\": [\"festival\", \"vacation\", \"december\", \"xmas\", \"celebration\"],\r\n \"char\": \"🎄\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"evergreen_tree\": {\r\n \"keywords\": [\"plant\", \"nature\"],\r\n \"char\": \"🌲\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"deciduous_tree\": {\r\n \"keywords\": [\"plant\", \"nature\"],\r\n \"char\": \"🌳\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"palm_tree\": {\r\n \"keywords\": [\"plant\", \"vegetable\", \"nature\", \"summer\", \"beach\", \"mojito\", \"tropical\"],\r\n \"char\": \"🌴\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"seedling\": {\r\n \"keywords\": [\"plant\", \"nature\", \"grass\", \"lawn\", \"spring\"],\r\n \"char\": \"🌱\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"herb\": {\r\n \"keywords\": [\"vegetable\", \"plant\", \"medicine\", \"weed\", \"grass\", \"lawn\"],\r\n \"char\": \"🌿\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"shamrock\": {\r\n \"keywords\": [\"vegetable\", \"plant\", \"nature\", \"irish\", \"clover\"],\r\n \"char\": \"☘\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"four_leaf_clover\": {\r\n \"keywords\": [\"vegetable\", \"plant\", \"nature\", \"lucky\", \"irish\"],\r\n \"char\": \"🍀\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"bamboo\": {\r\n \"keywords\": [\"plant\", \"nature\", \"vegetable\", \"panda\", \"pine_decoration\"],\r\n \"char\": \"🎍\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"tanabata_tree\": {\r\n \"keywords\": [\"plant\", \"nature\", \"branch\", \"summer\"],\r\n \"char\": \"🎋\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"leaves\": {\r\n \"keywords\": [\"nature\", \"plant\", \"tree\", \"vegetable\", \"grass\", \"lawn\", \"spring\"],\r\n \"char\": \"🍃\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"fallen_leaf\": {\r\n \"keywords\": [\"nature\", \"plant\", \"vegetable\", \"leaves\"],\r\n \"char\": \"🍂\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"maple_leaf\": {\r\n \"keywords\": [\"nature\", \"plant\", \"vegetable\", \"canada\", \"fall\"],\r\n \"char\": \"🍁\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"ear_of_rice\": {\r\n \"keywords\": [\"nature\", \"plant\"],\r\n \"char\": \"🌾\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"hibiscus\": {\r\n \"keywords\": [\"plant\", \"vegetable\", \"flowers\", \"beach\"],\r\n \"char\": \"🌺\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"sunflower\": {\r\n \"keywords\": [\"nature\", \"plant\", \"fall\"],\r\n \"char\": \"🌻\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"rose\": {\r\n \"keywords\": [\"flowers\", \"valentines\", \"love\", \"spring\"],\r\n \"char\": \"🌹\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"tulip\": {\r\n \"keywords\": [\"flowers\", \"plant\", \"nature\", \"summer\", \"spring\"],\r\n \"char\": \"🌷\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"blossom\": {\r\n \"keywords\": [\"nature\", \"flowers\", \"yellow\"],\r\n \"char\": \"🌼\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"cherry_blossom\": {\r\n \"keywords\": [\"nature\", \"plant\", \"spring\", \"flower\"],\r\n \"char\": \"🌸\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"bouquet\": {\r\n \"keywords\": [\"flowers\", \"nature\", \"spring\"],\r\n \"char\": \"💐\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"mushroom\": {\r\n \"keywords\": [\"plant\", \"vegetable\"],\r\n \"char\": \"🍄\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"chestnut\": {\r\n \"keywords\": [\"food\", \"squirrel\"],\r\n \"char\": \"🌰\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"jack_o_lantern\": {\r\n \"keywords\": [\"halloween\", \"light\", \"pumpkin\", \"creepy\", \"fall\"],\r\n \"char\": \"🎃\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"shell\": {\r\n \"keywords\": [\"nature\", \"sea\", \"beach\"],\r\n \"char\": \"🐚\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"spider_web\": {\r\n \"keywords\": [\"animal\", \"insect\", \"arachnid\", \"silk\"],\r\n \"char\": \"🕸\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"earth_americas\": {\r\n \"keywords\": [\"globe\", \"world\", \"USA\", \"international\"],\r\n \"char\": \"🌎\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"earth_africa\": {\r\n \"keywords\": [\"globe\", \"world\", \"international\"],\r\n \"char\": \"🌍\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"earth_asia\": {\r\n \"keywords\": [\"globe\", \"world\", \"east\", \"international\"],\r\n \"char\": \"🌏\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"full_moon\": {\r\n \"keywords\": [\"nature\", \"yellow\", \"twilight\", \"planet\", \"space\", \"night\", \"evening\", \"sleep\"],\r\n \"char\": \"🌕\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"waning_gibbous_moon\": {\r\n \"keywords\": [\"nature\", \"twilight\", \"planet\", \"space\", \"night\", \"evening\", \"sleep\", \"waxing_gibbous_moon\"],\r\n \"char\": \"🌖\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"last_quarter_moon\": {\r\n \"keywords\": [\"nature\", \"twilight\", \"planet\", \"space\", \"night\", \"evening\", \"sleep\"],\r\n \"char\": \"🌗\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"waning_crescent_moon\": {\r\n \"keywords\": [\"nature\", \"twilight\", \"planet\", \"space\", \"night\", \"evening\", \"sleep\"],\r\n \"char\": \"🌘\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"new_moon\": {\r\n \"keywords\": [\"nature\", \"twilight\", \"planet\", \"space\", \"night\", \"evening\", \"sleep\"],\r\n \"char\": \"🌑\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"waxing_crescent_moon\": {\r\n \"keywords\": [\"nature\", \"twilight\", \"planet\", \"space\", \"night\", \"evening\", \"sleep\"],\r\n \"char\": \"🌒\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"first_quarter_moon\": {\r\n \"keywords\": [\"nature\", \"twilight\", \"planet\", \"space\", \"night\", \"evening\", \"sleep\"],\r\n \"char\": \"🌓\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"moon\": {\r\n \"keywords\": [\"nature\", \"night\", \"sky\", \"gray\", \"twilight\", \"planet\", \"space\", \"evening\", \"sleep\"],\r\n \"char\": \"🌔\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"new_moon_with_face\": {\r\n \"keywords\": [\"nature\", \"twilight\", \"planet\", \"space\", \"night\", \"evening\", \"sleep\"],\r\n \"char\": \"🌚\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"full_moon_with_face\": {\r\n \"keywords\": [\"nature\", \"twilight\", \"planet\", \"space\", \"night\", \"evening\", \"sleep\"],\r\n \"char\": \"🌝\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"first_quarter_moon_with_face\": {\r\n \"keywords\": [\"nature\", \"twilight\", \"planet\", \"space\", \"night\", \"evening\", \"sleep\"],\r\n \"char\": \"🌛\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"last_quarter_moon_with_face\": {\r\n \"keywords\": [\"nature\", \"twilight\", \"planet\", \"space\", \"night\", \"evening\", \"sleep\"],\r\n \"char\": \"🌜\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"sun_with_face\": {\r\n \"keywords\": [\"nature\", \"morning\", \"sky\"],\r\n \"char\": \"🌞\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"crescent_moon\": {\r\n \"keywords\": [\"night\", \"sleep\", \"sky\", \"evening\", \"magic\"],\r\n \"char\": \"🌙\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"star\": {\r\n \"keywords\": [\"night\", \"yellow\"],\r\n \"char\": \"⭐\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"star2\": {\r\n \"keywords\": [\"night\", \"sparkle\", \"awesome\", \"good\", \"magic\"],\r\n \"char\": \"🌟\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"dizzy\": {\r\n \"keywords\": [\"star\", \"sparkle\", \"shoot\", \"magic\"],\r\n \"char\": \"💫\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"sparkles\": {\r\n \"keywords\": [\"stars\", \"shine\", \"shiny\", \"cool\", \"awesome\", \"good\", \"magic\"],\r\n \"char\": \"✨\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"comet\": {\r\n \"keywords\": [\"space\"],\r\n \"char\": \"☄\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"sunny\": {\r\n \"keywords\": [\"weather\", \"nature\", \"brightness\", \"summer\", \"beach\", \"spring\"],\r\n \"char\": \"☀️\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"white_sun_with_small_cloud\": {\r\n \"keywords\": [\"weather\"],\r\n \"char\": \"🌤\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"partly_sunny\": {\r\n \"keywords\": [\"weather\", \"nature\", \"cloudy\", \"morning\", \"fall\", \"spring\"],\r\n \"char\": \"⛅\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"white_sun_behind_cloud\": {\r\n \"keywords\": [\"weather\"],\r\n \"char\": \"🌥\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"white_sun_behind_cloud_with_rain\": {\r\n \"keywords\": [\"weather\"],\r\n \"char\": \"🌦\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"cloud\": {\r\n \"keywords\": [\"weather\", \"sky\"],\r\n \"char\": \"☁️\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"cloud_with_rain\": {\r\n \"keywords\": [\"weather\"],\r\n \"char\": \"🌧\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"thunder_cloud_and_rain\": {\r\n \"keywords\": [\"weather\", \"lightning\"],\r\n \"char\": \"⛈\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"cloud_with_lightning\": {\r\n \"keywords\": [\"weather\", \"thunder\"],\r\n \"char\": \"🌩\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"zap\": {\r\n \"keywords\": [\"thunder\", \"weather\", \"lightning bolt\", \"fast\"],\r\n \"char\": \"⚡\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"fire\": {\r\n \"keywords\": [\"hot\", \"cook\", \"flame\"],\r\n \"char\": \"🔥\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"boom\": {\r\n \"keywords\": [\"bomb\", \"explode\", \"explosion\", \"collision\", \"blown\"],\r\n \"char\": \"💥\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"snowflake\": {\r\n \"keywords\": [\"winter\", \"season\", \"cold\", \"weather\", \"christmas\", \"xmas\"],\r\n \"char\": \"❄️\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"cloud_with_snow\": {\r\n \"keywords\": [\"weather\"],\r\n \"char\": \"🌨\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"snowman\": {\r\n \"keywords\": [\"winter\", \"season\", \"cold\", \"weather\", \"christmas\", \"xmas\", \"frozen\", \"without_snow\"],\r\n \"char\": \"⛄\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"snowman_with_snow\": {\r\n \"keywords\": [\"winter\", \"season\", \"cold\", \"weather\", \"christmas\", \"xmas\", \"frozen\"],\r\n \"char\": \"☃\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"wind_blowing_face\": {\r\n \"keywords\": [\"gust\", \"air\"],\r\n \"char\": \"🌬\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"dash\": {\r\n \"keywords\": [\"wind\", \"air\", \"fast\", \"shoo\", \"fart\", \"smoke\", \"puff\"],\r\n \"char\": \"💨\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"cloud_with_tornado\": {\r\n \"keywords\": [\"weather\", \"cyclone\", \"twister\"],\r\n \"char\": \"🌪\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"fog\": {\r\n \"keywords\": [\"weather\"],\r\n \"char\": \"🌫\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"umbrella_without_rain\": {\r\n \"keywords\": [\"weather\", \"spring\"],\r\n \"char\": \"☂\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"umbrella\": {\r\n \"keywords\": [\"rainy\", \"weather\", \"spring\"],\r\n \"char\": \"☔\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"droplet\": {\r\n \"keywords\": [\"water\", \"drip\", \"faucet\", \"spring\"],\r\n \"char\": \"💧\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"sweat_drops\": {\r\n \"keywords\": [\"water\", \"drip\", \"oops\"],\r\n \"char\": \"💦\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"ocean\": {\r\n \"keywords\": [\"sea\", \"water\", \"wave\", \"nature\", \"tsunami\", \"disaster\"],\r\n \"char\": \"🌊\",\r\n \"category\": \"animals_and_nature\"\r\n },\r\n \"green_apple\": {\r\n \"keywords\": [\"fruit\", \"nature\"],\r\n \"char\": \"🍏\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"apple\": {\r\n \"keywords\": [\"fruit\", \"mac\", \"school\"],\r\n \"char\": \"🍎\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"pear\": {\r\n \"keywords\": [\"fruit\", \"nature\", \"food\"],\r\n \"char\": \"🍐\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"tangerine\": {\r\n \"keywords\": [\"food\", \"fruit\", \"nature\", \"orange\"],\r\n \"char\": \"🍊\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"lemon\": {\r\n \"keywords\": [\"fruit\", \"nature\"],\r\n \"char\": \"🍋\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"banana\": {\r\n \"keywords\": [\"fruit\", \"food\", \"monkey\"],\r\n \"char\": \"🍌\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"watermelon\": {\r\n \"keywords\": [\"fruit\", \"food\", \"picnic\", \"summer\"],\r\n \"char\": \"🍉\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"grapes\": {\r\n \"keywords\": [\"fruit\", \"food\", \"wine\"],\r\n \"char\": \"🍇\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"strawberry\": {\r\n \"keywords\": [\"fruit\", \"food\", \"nature\"],\r\n \"char\": \"🍓\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"melon\": {\r\n \"keywords\": [\"fruit\", \"nature\", \"food\"],\r\n \"char\": \"🍈\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"cherries\": {\r\n \"keywords\": [\"food\", \"fruit\"],\r\n \"char\": \"🍒\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"peach\": {\r\n \"keywords\": [\"fruit\", \"nature\", \"food\"],\r\n \"char\": \"🍑\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"pineapple\": {\r\n \"keywords\": [\"fruit\", \"nature\", \"food\"],\r\n \"char\": \"🍍\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"tomato\": {\r\n \"keywords\": [\"fruit\", \"vegetable\", \"nature\", \"food\"],\r\n \"char\": \"🍅\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"eggplant\": {\r\n \"keywords\": [\"vegetable\", \"nature\", \"food\", \"aubergine\"],\r\n \"char\": \"🍆\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"hot_pepper\": {\r\n \"keywords\": [\"food\", \"spicy\", \"chilli\", \"chili\"],\r\n \"char\": \"🌶\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"corn\": {\r\n \"keywords\": [\"food\", \"vegetable\", \"plant\"],\r\n \"char\": \"🌽\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"sweet_potato\": {\r\n \"keywords\": [\"food\", \"nature\"],\r\n \"char\": \"🍠\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"honey_pot\": {\r\n \"keywords\": [\"bees\", \"sweet\", \"kitchen\"],\r\n \"char\": \"🍯\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"bread\": {\r\n \"keywords\": [\"food\", \"wheat\", \"breakfast\", \"toast\"],\r\n \"char\": \"🍞\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"cheese_wedge\": {\r\n \"keywords\": [\"food\", \"chadder\"],\r\n \"char\": \"🧀\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"poultry_leg\": {\r\n \"keywords\": [\"food\", \"meat\", \"drumstick\", \"bird\", \"chicken\", \"turkey\"],\r\n \"char\": \"🍗\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"meat_on_bone\": {\r\n \"keywords\": [\"good\", \"food\", \"drumstick\"],\r\n \"char\": \"🍖\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"fried_shrimp\": {\r\n \"keywords\": [\"food\", \"animal\", \"appetizer\", \"summer\"],\r\n \"char\": \"🍤\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"egg\": {\r\n \"keywords\": [\"food\", \"breakfast\", \"kitchen\"],\r\n \"char\": \"🍳\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"hamburger\": {\r\n \"keywords\": [\"meat\", \"fast food\", \"beef\", \"cheeseburger\", \"mcdonalds\", \"burger king\"],\r\n \"char\": \"🍔\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"fries\": {\r\n \"keywords\": [\"chips\", \"snack\", \"fast food\"],\r\n \"char\": \"🍟\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"hot_dog\": {\r\n \"keywords\": [\"food\", \"frankfurter\", \"hotdog\"],\r\n \"char\": \"🌭\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"pizza\": {\r\n \"keywords\": [\"food\", \"party\"],\r\n \"char\": \"🍕\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"spaghetti\": {\r\n \"keywords\": [\"food\", \"italian\", \"noodle\"],\r\n \"char\": \"🍝\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"taco\": {\r\n \"keywords\": [\"food\", \"mexican\"],\r\n \"char\": \"🌮\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"burrito\": {\r\n \"keywords\": [\"food\", \"mexican\"],\r\n \"char\": \"🌯\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"ramen\": {\r\n \"keywords\": [\"food\", \"japanese\", \"noodle\", \"chopsticks\"],\r\n \"char\": \"🍜\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"stew\": {\r\n \"keywords\": [\"food\", \"meat\", \"soup\"],\r\n \"char\": \"🍲\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"fish_cake\": {\r\n \"keywords\": [\"food\", \"japan\", \"sea\", \"beach\"],\r\n \"char\": \"🍥\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"sushi\": {\r\n \"keywords\": [\"food\", \"fish\", \"japanese\", \"rice\"],\r\n \"char\": \"🍣\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"bento\": {\r\n \"keywords\": [\"food\", \"japanese\", \"box\"],\r\n \"char\": \"🍱\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"curry\": {\r\n \"keywords\": [\"food\", \"spicy\", \"hot\", \"indian\"],\r\n \"char\": \"🍛\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"rice_ball\": {\r\n \"keywords\": [\"food\", \"japanese\"],\r\n \"char\": \"🍙\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"rice\": {\r\n \"keywords\": [\"food\", \"china\", \"asian\"],\r\n \"char\": \"🍚\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"rice_cracker\": {\r\n \"keywords\": [\"food\", \"japanese\"],\r\n \"char\": \"🍘\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"oden\": {\r\n \"keywords\": [\"food\", \"japanese\"],\r\n \"char\": \"🍢\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"dango\": {\r\n \"keywords\": [\"food\", \"dessert\", \"sweet\", \"japanese\", \"barbecue\", \"meat\"],\r\n \"char\": \"🍡\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"shaved_ice\": {\r\n \"keywords\": [\"hot\", \"dessert\", \"summer\"],\r\n \"char\": \"🍧\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"ice_cream\": {\r\n \"keywords\": [\"food\", \"hot\", \"dessert\"],\r\n \"char\": \"🍨\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"icecream\": {\r\n \"keywords\": [\"food\", \"hot\", \"dessert\", \"summer\"],\r\n \"char\": \"🍦\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"cake\": {\r\n \"keywords\": [\"food\", \"dessert\"],\r\n \"char\": \"🍰\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"birthday\": {\r\n \"keywords\": [\"food\", \"dessert\", \"cake\"],\r\n \"char\": \"🎂\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"custard\": {\r\n \"keywords\": [\"dessert\", \"food\"],\r\n \"char\": \"🍮\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"candy\": {\r\n \"keywords\": [\"snack\", \"dessert\", \"sweet\", \"lolly\"],\r\n \"char\": \"🍬\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"lollipop\": {\r\n \"keywords\": [\"food\", \"snack\", \"candy\", \"sweet\"],\r\n \"char\": \"🍭\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"chocolate_bar\": {\r\n \"keywords\": [\"food\", \"snack\", \"dessert\", \"sweet\"],\r\n \"char\": \"🍫\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"popcorn\": {\r\n \"keywords\": [\"food\", \"movie theater\", \"films\", \"snack\"],\r\n \"char\": \"🍿\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"doughnut\": {\r\n \"keywords\": [\"food\", \"dessert\", \"snack\", \"sweet\", \"donut\"],\r\n \"char\": \"🍩\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"cookie\": {\r\n \"keywords\": [\"food\", \"snack\", \"oreo\", \"chocolate\", \"sweet\", \"dessert\"],\r\n \"char\": \"🍪\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"beer\": {\r\n \"keywords\": [\"relax\", \"beverage\", \"drink\", \"drunk\", \"party\", \"pub\", \"summer\", \"alcohol\", \"booze\"],\r\n \"char\": \"🍺\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"beers\": {\r\n \"keywords\": [\"relax\", \"beverage\", \"drink\", \"drunk\", \"party\", \"pub\", \"summer\", \"alcohol\", \"booze\"],\r\n \"char\": \"🍻\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"wine_glass\": {\r\n \"keywords\": [\"drink\", \"beverage\", \"drunk\", \"alcohol\", \"booze\"],\r\n \"char\": \"🍷\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"cocktail\": {\r\n \"keywords\": [\"drink\", \"drunk\", \"alcohol\", \"beverage\", \"booze\", \"mojito\"],\r\n \"char\": \"🍸\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"tropical_drink\": {\r\n \"keywords\": [\"beverage\", \"cocktail\", \"summer\", \"beach\", \"alcohol\", \"booze\", \"mojito\"],\r\n \"char\": \"🍹\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"bottle\": {\r\n \"keywords\": [\"drink\", \"wine\", \"champagne\"],\r\n \"char\": \"🍾\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"sake\": {\r\n \"keywords\": [\"wine\", \"drink\", \"drunk\", \"beverage\", \"japanese\", \"alcohol\", \"booze\"],\r\n \"char\": \"🍶\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"tea\": {\r\n \"keywords\": [\"drink\", \"bowl\", \"breakfast\", \"green\", \"british\"],\r\n \"char\": \"🍵\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"coffee\": {\r\n \"keywords\": [\"beverage\", \"caffeine\", \"latte\", \"espresso\"],\r\n \"char\": \"☕\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"baby_bottle\": {\r\n \"keywords\": [\"food\", \"container\", \"milk\"],\r\n \"char\": \"🍼\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"fork_and_knife\": {\r\n \"keywords\": [\"cutlery\", \"kitchen\"],\r\n \"char\": \"🍴\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"fork_and_knife_with_plate\": {\r\n \"keywords\": [\"food\", \"eat\", \"meal\", \"lunch\", \"dinner\", \"restaurant\"],\r\n \"char\": \"🍽\",\r\n \"category\": \"food_and_drink\"\r\n },\r\n \"soccer\": {\r\n \"keywords\": [\"sports\", \"football\"],\r\n \"char\": \"⚽\",\r\n \"category\": \"activity\"\r\n },\r\n \"basketball\": {\r\n \"keywords\": [\"sports\", \"balls\", \"NBA\"],\r\n \"char\": \"🏀\",\r\n \"category\": \"activity\"\r\n },\r\n \"football\": {\r\n \"keywords\": [\"sports\", \"balls\", \"NFL\"],\r\n \"char\": \"🏈\",\r\n \"category\": \"activity\"\r\n },\r\n \"baseball\": {\r\n \"keywords\": [\"sports\", \"balls\"],\r\n \"char\": \"⚾\",\r\n \"category\": \"activity\"\r\n },\r\n \"tennis\": {\r\n \"keywords\": [\"sports\", \"balls\", \"green\"],\r\n \"char\": \"🎾\",\r\n \"category\": \"activity\"\r\n },\r\n \"volleyball\": {\r\n \"keywords\": [\"sports\", \"balls\"],\r\n \"char\": \"🏐\",\r\n \"category\": \"activity\"\r\n },\r\n \"rugby_football\": {\r\n \"keywords\": [\"sports\", \"team\"],\r\n \"char\": \"🏉\",\r\n \"category\": \"activity\"\r\n },\r\n \"8ball\": {\r\n \"keywords\": [\"pool\", \"hobby\", \"game\", \"luck\", \"magic\"],\r\n \"char\": \"🎱\",\r\n \"category\": \"activity\"\r\n },\r\n \"golf\": {\r\n \"keywords\": [\"sports\", \"business\", \"flag\", \"hole\", \"summer\"],\r\n \"char\": \"⛳\",\r\n \"category\": \"activity\"\r\n },\r\n \"golfer\": {\r\n \"keywords\": [\"sports\", \"business\"],\r\n \"char\": \"🏌\",\r\n \"category\": \"activity\"\r\n },\r\n \"table_tennis\": {\r\n \"keywords\": [\"sports\", \"pingpong\"],\r\n \"char\": \"🏓\",\r\n \"category\": \"activity\"\r\n },\r\n \"badminton\": {\r\n \"keywords\": [\"sports\"],\r\n \"char\": \"🏸\",\r\n \"category\": \"activity\"\r\n },\r\n \"ice_hockey\": {\r\n \"keywords\": [\"sports\"],\r\n \"char\": \"🏒\",\r\n \"category\": \"activity\"\r\n },\r\n \"field_hockey\": {\r\n \"keywords\": [\"sports\"],\r\n \"char\": \"🏑\",\r\n \"category\": \"activity\"\r\n },\r\n \"cricket\": {\r\n \"keywords\": [\"sports\"],\r\n \"char\": \"🏏\",\r\n \"category\": \"activity\"\r\n },\r\n \"ski\": {\r\n \"keywords\": [\"sports\", \"winter\", \"cold\", \"snow\"],\r\n \"char\": \"🎿\",\r\n \"category\": \"activity\"\r\n },\r\n \"skier\": {\r\n \"keywords\": [\"sports\", \"winter\", \"snow\"],\r\n \"char\": \"⛷\",\r\n \"category\": \"activity\"\r\n },\r\n \"snowboarder\": {\r\n \"keywords\": [\"sports\", \"winter\"],\r\n \"char\": \"🏂\",\r\n \"category\": \"activity\"\r\n },\r\n \"ice_skate\": {\r\n \"keywords\": [\"sports\"],\r\n \"char\": \"⛸\",\r\n \"category\": \"activity\"\r\n },\r\n \"bow_and_arrow\": {\r\n \"keywords\": [\"sports\"],\r\n \"char\": \"🏹\",\r\n \"category\": \"activity\"\r\n },\r\n \"fishing_pole_and_fish\": {\r\n \"keywords\": [\"food\", \"hobby\", \"summer\"],\r\n \"char\": \"🎣\",\r\n \"category\": \"activity\"\r\n },\r\n \"rowboat\": {\r\n \"keywords\": [\"sports\", \"hobby\", \"water\", \"ship\"],\r\n \"char\": \"🚣\",\r\n \"category\": \"activity\"\r\n },\r\n \"swimmer\": {\r\n \"keywords\": [\"sports\", \"exercise\", \"human\", \"athlete\", \"water\", \"summer\"],\r\n \"char\": \"🏊\",\r\n \"category\": \"activity\"\r\n },\r\n \"surfer\": {\r\n \"keywords\": [\"sports\", \"ocean\", \"sea\", \"summer\", \"beach\"],\r\n \"char\": \"🏄\",\r\n \"category\": \"activity\"\r\n },\r\n \"bath\": {\r\n \"keywords\": [\"clean\", \"shower\", \"bathroom\"],\r\n \"char\": \"🛀\",\r\n \"category\": \"activity\"\r\n },\r\n \"person_with_ball\": {\r\n \"keywords\": [\"sports\", \"human\"],\r\n \"char\": \"⛹\",\r\n \"category\": \"activity\"\r\n },\r\n \"weight_lifter\": {\r\n \"keywords\": [\"sports\", \"training\", \"exercise\"],\r\n \"char\": \"🏋\",\r\n \"category\": \"activity\"\r\n },\r\n \"bicyclist\": {\r\n \"keywords\": [\"sports\", \"bike\", \"exercise\", \"hipster\"],\r\n \"char\": \"🚴\",\r\n \"category\": \"activity\"\r\n },\r\n \"mountain_bicyclist\": {\r\n \"keywords\": [\"transportation\", \"sports\", \"human\", \"race\", \"bike\"],\r\n \"char\": \"🚵\",\r\n \"category\": \"activity\"\r\n },\r\n \"horse_racing\": {\r\n \"keywords\": [\"animal\", \"betting\", \"competition\", \"gambling\", \"luck\"],\r\n \"char\": \"🏇\",\r\n \"category\": \"activity\"\r\n },\r\n \"man_levitating\": {\r\n \"keywords\": [\"suit\", \"business\", \"levitate\", \"hover\", \"jump\"],\r\n \"char\": \"🕴\",\r\n \"category\": \"activity\"\r\n },\r\n \"trophy\": {\r\n \"keywords\": [\"win\", \"award\", \"contest\", \"place\", \"ftw\", \"ceremony\"],\r\n \"char\": \"🏆\",\r\n \"category\": \"activity\"\r\n },\r\n \"running_shirt_with_sash\": {\r\n \"keywords\": [\"play\", \"pageant\"],\r\n \"char\": \"🎽\",\r\n \"category\": \"activity\"\r\n },\r\n \"sports_medal\": {\r\n \"keywords\": [\"award\", \"winning\"],\r\n \"char\": \"🏅\",\r\n \"category\": \"activity\"\r\n },\r\n \"military_medal\": {\r\n \"keywords\": [\"award\", \"winning\", \"army\"],\r\n \"char\": \"🎖\",\r\n \"category\": \"activity\"\r\n },\r\n \"reminder_ribbon\": {\r\n \"keywords\": [\"sports\", \"cause\", \"support\", \"awareness\"],\r\n \"char\": \"🎗\",\r\n \"category\": \"activity\"\r\n },\r\n \"rosette\": {\r\n \"keywords\": [\"flower\", \"decoration\", \"military\"],\r\n \"char\": \"🏵\",\r\n \"category\": \"activity\"\r\n },\r\n \"ticket\": {\r\n \"keywords\": [\"event\", \"concert\", \"pass\"],\r\n \"char\": \"🎫\",\r\n \"category\": \"activity\"\r\n },\r\n \"admission_ticket\": {\r\n \"keywords\": [\"sports\", \"concert\", \"entrance\"],\r\n \"char\": \"🎟\",\r\n \"category\": \"activity\"\r\n },\r\n \"performing_arts\": {\r\n \"keywords\": [\"acting\", \"theater\", \"drama\"],\r\n \"char\": \"🎭\",\r\n \"category\": \"activity\"\r\n },\r\n \"art\": {\r\n \"keywords\": [\"design\", \"paint\", \"draw\", \"colors\"],\r\n \"char\": \"🎨\",\r\n \"category\": \"activity\"\r\n },\r\n \"circus_tent\": {\r\n \"keywords\": [\"festival\", \"carnival\", \"party\"],\r\n \"char\": \"🎪\",\r\n \"category\": \"activity\"\r\n },\r\n \"microphone\": {\r\n \"keywords\": [\"sound\", \"music\", \"PA\"],\r\n \"char\": \"🎤\",\r\n \"category\": \"activity\"\r\n },\r\n \"headphones\": {\r\n \"keywords\": [\"music\", \"score\", \"gadgets\"],\r\n \"char\": \"🎧\",\r\n \"category\": \"activity\"\r\n },\r\n \"musical_score\": {\r\n \"keywords\": [\"treble\", \"clef\"],\r\n \"char\": \"🎼\",\r\n \"category\": \"activity\"\r\n },\r\n \"musical_keyboard\": {\r\n \"keywords\": [\"piano\", \"instrument\"],\r\n \"char\": \"🎹\",\r\n \"category\": \"activity\"\r\n },\r\n \"saxophone\": {\r\n \"keywords\": [\"music\", \"instrument\", \"jazz\", \"blues\"],\r\n \"char\": \"🎷\",\r\n \"category\": \"activity\"\r\n },\r\n \"trumpet\": {\r\n \"keywords\": [\"music\", \"brass\"],\r\n \"char\": \"🎺\",\r\n \"category\": \"activity\"\r\n },\r\n \"guitar\": {\r\n \"keywords\": [\"music\", \"instrument\"],\r\n \"char\": \"🎸\",\r\n \"category\": \"activity\"\r\n },\r\n \"violin\": {\r\n \"keywords\": [\"music\", \"instrument\", \"orchestra\", \"symphony\"],\r\n \"char\": \"🎻\",\r\n \"category\": \"activity\"\r\n },\r\n \"clapper\": {\r\n \"keywords\": [\"movie\", \"film\", \"record\"],\r\n \"char\": \"🎬\",\r\n \"category\": \"activity\"\r\n },\r\n \"video_game\": {\r\n \"keywords\": [\"play\", \"console\", \"PS4\", \"controller\"],\r\n \"char\": \"🎮\",\r\n \"category\": \"activity\"\r\n },\r\n \"space_invader\": {\r\n \"keywords\": [\"game\", \"arcade\", \"play\"],\r\n \"char\": \"👾\",\r\n \"category\": \"activity\"\r\n },\r\n \"dart\": {\r\n \"keywords\": [\"game\", \"play\", \"bar\"],\r\n \"char\": \"🎯\",\r\n \"category\": \"activity\"\r\n },\r\n \"game_die\": {\r\n \"keywords\": [\"dice\", \"random\", \"tabletop\", \"play\", \"luck\"],\r\n \"char\": \"🎲\",\r\n \"category\": \"activity\"\r\n },\r\n \"slot_machine\": {\r\n \"keywords\": [\"bet\", \"gamble\", \"vegas\", \"fruit machine\", \"luck\", \"casino\"],\r\n \"char\": \"🎰\",\r\n \"category\": \"activity\"\r\n },\r\n \"bowling\": {\r\n \"keywords\": [\"sports\", \"fun\", \"play\"],\r\n \"char\": \"🎳\",\r\n \"category\": \"activity\"\r\n },\r\n \"car\": {\r\n \"keywords\": [\"red\", \"transportation\", \"vehicle\"],\r\n \"char\": \"🚗\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"taxi\": {\r\n \"keywords\": [\"uber\", \"vehicle\", \"cars\", \"transportation\"],\r\n \"char\": \"🚕\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"blue_car\": {\r\n \"keywords\": [\"transportation\", \"vehicle\"],\r\n \"char\": \"🚙\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"bus\": {\r\n \"keywords\": [\"car\", \"vehicle\", \"transportation\"],\r\n \"char\": \"🚌\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"trolleybus\": {\r\n \"keywords\": [\"bart\", \"transportation\", \"vehicle\"],\r\n \"char\": \"🚎\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"racing_car\": {\r\n \"keywords\": [\"sports\", \"race\", \"fast\", \"formula\", \"f1\"],\r\n \"char\": \"🏎\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"police_car\": {\r\n \"keywords\": [\"vehicle\", \"cars\", \"transportation\", \"law\", \"legal\", \"enforcement\"],\r\n \"char\": \"🚓\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"ambulance\": {\r\n \"keywords\": [\"health\", \"911\", \"hospital\"],\r\n \"char\": \"🚑\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"fire_engine\": {\r\n \"keywords\": [\"transportation\", \"cars\", \"vehicle\"],\r\n \"char\": \"🚒\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"minibus\": {\r\n \"keywords\": [\"vehicle\", \"car\", \"transportation\"],\r\n \"char\": \"🚐\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"truck\": {\r\n \"keywords\": [\"cars\", \"transportation\"],\r\n \"char\": \"🚚\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"articulated_lorry\": {\r\n \"keywords\": [\"vehicle\", \"cars\", \"transportation\", \"express\"],\r\n \"char\": \"🚛\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"tractor\": {\r\n \"keywords\": [\"vehicle\", \"car\", \"farming\", \"agriculture\"],\r\n \"char\": \"🚜\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"racing_motorcycle\": {\r\n \"keywords\": [\"race\", \"sports\", \"fast\"],\r\n \"char\": \"🏍\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"bike\": {\r\n \"keywords\": [\"sports\", \"bicycle\", \"exercise\", \"hipster\"],\r\n \"char\": \"🚲\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"rotating_light\": {\r\n \"keywords\": [\"police\", \"ambulance\", \"911\", \"emergency\", \"alert\", \"error\", \"pinged\", \"law\", \"legal\"],\r\n \"char\": \"🚨\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"oncoming_police_car\": {\r\n \"keywords\": [\"vehicle\", \"law\", \"legal\", \"enforcement\", \"911\"],\r\n \"char\": \"🚔\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"oncoming_bus\": {\r\n \"keywords\": [\"vehicle\", \"transportation\"],\r\n \"char\": \"🚍\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"oncoming_automobile\": {\r\n \"keywords\": [\"car\", \"vehicle\", \"transportation\"],\r\n \"char\": \"🚘\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"oncoming_taxi\": {\r\n \"keywords\": [\"vehicle\", \"cars\", \"uber\"],\r\n \"char\": \"🚖\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"aerial_tramway\": {\r\n \"keywords\": [\"transportation\", \"vehicle\", \"ski\"],\r\n \"char\": \"🚡\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"mountain_cableway\": {\r\n \"keywords\": [\"transportation\", \"vehicle\", \"ski\"],\r\n \"char\": \"🚠\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"suspension_railway\": {\r\n \"keywords\": [\"vehicle\", \"transportation\"],\r\n \"char\": \"🚟\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"railway_car\": {\r\n \"keywords\": [\"transportation\", \"vehicle\"],\r\n \"char\": \"🚃\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"train\": {\r\n \"keywords\": [\"transportation\", \"vehicle\", \"carriage\", \"public\", \"travel\"],\r\n \"char\": \"🚋\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"monorail\": {\r\n \"keywords\": [\"transportation\", \"vehicle\"],\r\n \"char\": \"🚝\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"bullettrain_side\": {\r\n \"keywords\": [\"transportation\", \"vehicle\"],\r\n \"char\": \"🚄\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"bullettrain_front\": {\r\n \"keywords\": [\"transportation\", \"vehicle\", \"speed\", \"fast\", \"public\", \"travel\"],\r\n \"char\": \"🚅\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"light_rail\": {\r\n \"keywords\": [\"transportation\", \"vehicle\"],\r\n \"char\": \"🚈\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"mountain_railway\": {\r\n \"keywords\": [\"transportation\", \"vehicle\"],\r\n \"char\": \"🚞\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"steam_locomotive\": {\r\n \"keywords\": [\"transportation\", \"vehicle\", \"train\"],\r\n \"char\": \"🚂\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"train2\": {\r\n \"keywords\": [\"transportation\", \"vehicle\"],\r\n \"char\": \"🚆\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"metro\": {\r\n \"keywords\": [\"transportation\", \"blue-square\", \"mrt\", \"underground\", \"tube\"],\r\n \"char\": \"🚇\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"tram\": {\r\n \"keywords\": [\"transportation\", \"vehicle\"],\r\n \"char\": \"🚊\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"station\": {\r\n \"keywords\": [\"transportation\", \"vehicle\", \"public\"],\r\n \"char\": \"🚉\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"helicopter\": {\r\n \"keywords\": [\"transportation\", \"vehicle\", \"fly\"],\r\n \"char\": \"🚁\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"small_airplane\": {\r\n \"keywords\": [\"flight\", \"transportation\", \"fly\", \"vehicle\"],\r\n \"char\": \"🛩\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"airplane\": {\r\n \"keywords\": [\"vehicle\", \"transportation\", \"flight\", \"fly\"],\r\n \"char\": \"✈️\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"airplane_departure\": {\r\n \"keywords\": [\"airport\", \"flight\", \"landing\"],\r\n \"char\": \"🛫\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"airplane_arrival\": {\r\n \"keywords\": [\"airport\", \"flight\", \"boarding\"],\r\n \"char\": \"🛬\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"boat\": {\r\n \"keywords\": [\"ship\", \"summer\", \"transportation\", \"water\", \"sailing\", \"sailboat\"],\r\n \"char\": \"⛵\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"motor_boat\": {\r\n \"keywords\": [\"ship\"],\r\n \"char\": \"🛥\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"speedboat\": {\r\n \"keywords\": [\"ship\", \"transportation\", \"vehicle\", \"summer\"],\r\n \"char\": \"🚤\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"ferry\": {\r\n \"keywords\": [\"boat\", \"ship\", \"yacht\"],\r\n \"char\": \"⛴\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"passenger_ship\": {\r\n \"keywords\": [\"yacht\", \"cruise\", \"ferry\"],\r\n \"char\": \"🛳\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"rocket\": {\r\n \"keywords\": [\"launch\", \"ship\", \"staffmode\", \"NASA\", \"outer space\", \"outer_space\", \"fly\"],\r\n \"char\": \"🚀\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"artificial_satellite\": {\r\n \"keywords\": [\"communication\", \"gps\", \"orbit\", \"spaceflight\", \"NASA\", \"ISS\"],\r\n \"char\": \"🛰\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"seat\": {\r\n \"keywords\": [\"sit\", \"airplane\", \"transport\", \"bus\", \"flight\", \"fly\"],\r\n \"char\": \"💺\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"anchor\": {\r\n \"keywords\": [\"ship\", \"ferry\", \"sea\", \"boat\"],\r\n \"char\": \"⚓\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"construction\": {\r\n \"keywords\": [\"wip\", \"progress\", \"caution\", \"warning\"],\r\n \"char\": \"🚧\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"fuelpump\": {\r\n \"keywords\": [\"gas station\", \"petroleum\"],\r\n \"char\": \"⛽\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"busstop\": {\r\n \"keywords\": [\"transportation\", \"wait\"],\r\n \"char\": \"🚏\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"vertical_traffic_light\": {\r\n \"keywords\": [\"transportation\", \"driving\"],\r\n \"char\": \"🚦\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"traffic_light\": {\r\n \"keywords\": [\"transportation\", \"signal\"],\r\n \"char\": \"🚥\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"checkered_flag\": {\r\n \"keywords\": [\"contest\", \"finishline\", \"race\", \"gokart\"],\r\n \"char\": \"🏁\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"ship\": {\r\n \"keywords\": [\"transportation\", \"titanic\", \"deploy\"],\r\n \"char\": \"🚢\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"ferris_wheel\": {\r\n \"keywords\": [\"photo\", \"carnival\", \"londoneye\"],\r\n \"char\": \"🎡\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"roller_coaster\": {\r\n \"keywords\": [\"carnival\", \"playground\", \"photo\", \"fun\"],\r\n \"char\": \"🎢\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"carousel_horse\": {\r\n \"keywords\": [\"photo\", \"carnival\"],\r\n \"char\": \"🎠\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"building_construction\": {\r\n \"keywords\": [\"wip\", \"working\", \"progress\"],\r\n \"char\": \"🏗\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"foggy\": {\r\n \"keywords\": [\"photo\", \"mountain\"],\r\n \"char\": \"🌁\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"tokyo_tower\": {\r\n \"keywords\": [\"photo\", \"japanese\"],\r\n \"char\": \"🗼\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"factory\": {\r\n \"keywords\": [\"building\", \"industry\", \"pollution\", \"smoke\"],\r\n \"char\": \"🏭\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"fountain\": {\r\n \"keywords\": [\"photo\", \"summer\", \"water\", \"fresh\"],\r\n \"char\": \"⛲\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"rice_scene\": {\r\n \"keywords\": [\"photo\", \"japan\", \"asia\", \"tsukimi\"],\r\n \"char\": \"🎑\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"mountain\": {\r\n \"keywords\": [\"photo\", \"nature\", \"environment\"],\r\n \"char\": \"⛰\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"snow_capped_mountain\": {\r\n \"keywords\": [\"photo\", \"nature\", \"environment\", \"winter\", \"cold\"],\r\n \"char\": \"🏔\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"mount_fuji\": {\r\n \"keywords\": [\"photo\", \"mountain\", \"nature\", \"japanese\"],\r\n \"char\": \"🗻\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"volcano\": {\r\n \"keywords\": [\"photo\", \"nature\", \"disaster\"],\r\n \"char\": \"🌋\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"japan\": {\r\n \"keywords\": [\"nation\", \"country\", \"japanese\", \"asia\"],\r\n \"char\": \"🗾\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"camping\": {\r\n \"keywords\": [\"photo\", \"outdoors\", \"tent\"],\r\n \"char\": \"🏕\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"tent\": {\r\n \"keywords\": [\"photo\", \"camping\", \"outdoors\"],\r\n \"char\": \"⛺\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"national_park\": {\r\n \"keywords\": [\"photo\", \"environment\", \"nature\"],\r\n \"char\": \"🏞\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"motorway\": {\r\n \"keywords\": [\"road\", \"cupertino\", \"interstate\", \"highway\"],\r\n \"char\": \"🛣\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"railway_track\": {\r\n \"keywords\": [\"train\", \"transportation\"],\r\n \"char\": \"🛤\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"sunrise\": {\r\n \"keywords\": [\"morning\", \"view\", \"vacation\", \"photo\"],\r\n \"char\": \"🌅\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"sunrise_over_mountains\": {\r\n \"keywords\": [\"view\", \"vacation\", \"photo\"],\r\n \"char\": \"🌄\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"desert\": {\r\n \"keywords\": [\"photo\", \"warm\", \"saharah\"],\r\n \"char\": \"🏜\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"beach_with_umbrella\": {\r\n \"keywords\": [\"weather\", \"summer\", \"sunny\", \"sand\", \"mojito\"],\r\n \"char\": \"🏖\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"desert_island\": {\r\n \"keywords\": [\"photo\", \"tropical\", \"mojito\"],\r\n \"char\": \"🏝\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"city_sunrise\": {\r\n \"keywords\": [\"photo\", \"good morning\", \"dawn\"],\r\n \"char\": \"🌇\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"city_sunset\": {\r\n \"keywords\": [\"photo\", \"evening\", \"sky\", \"buildings\"],\r\n \"char\": \"🌆\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"cityscape\": {\r\n \"keywords\": [\"photo\", \"night life\", \"urban\"],\r\n \"char\": \"🏙\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"night_with_stars\": {\r\n \"keywords\": [\"evening\", \"city\", \"downtown\"],\r\n \"char\": \"🌃\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"bridge_at_night\": {\r\n \"keywords\": [\"photo\", \"sanfrancisco\"],\r\n \"char\": \"🌉\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"milky_way\": {\r\n \"keywords\": [\"photo\", \"space\", \"stars\"],\r\n \"char\": \"🌌\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"stars\": {\r\n \"keywords\": [\"night\", \"photo\"],\r\n \"char\": \"🌠\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"sparkler\": {\r\n \"keywords\": [\"stars\", \"night\", \"shine\"],\r\n \"char\": \"🎇\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"fireworks\": {\r\n \"keywords\": [\"photo\", \"festival\", \"carnival\", \"congratulations\"],\r\n \"char\": \"🎆\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"rainbow\": {\r\n \"keywords\": [\"nature\", \"happy\", \"unicorn\", \"photo\", \"sky\", \"spring\"],\r\n \"char\": \"🌈\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"buildings\": {\r\n \"keywords\": [\"houses\", \"photo\"],\r\n \"char\": \"🏘\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"european_castle\": {\r\n \"keywords\": [\"building\", \"royalty\", \"history\"],\r\n \"char\": \"🏰\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"japanese_castle\": {\r\n \"keywords\": [\"photo\", \"building\"],\r\n \"char\": \"🏯\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"stadium\": {\r\n \"keywords\": [\"photo\", \"place\", \"sports\", \"concert\", \"venue\"],\r\n \"char\": \"🏟\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"statue_of_liberty\": {\r\n \"keywords\": [\"american\", \"newyork\"],\r\n \"char\": \"🗽\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"house\": {\r\n \"keywords\": [\"building\", \"home\"],\r\n \"char\": \"🏠\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"house_with_garden\": {\r\n \"keywords\": [\"home\", \"plant\", \"nature\"],\r\n \"char\": \"🏡\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"derelict_house\": {\r\n \"keywords\": [\"abandon\", \"evict\", \"broken\", \"building\"],\r\n \"char\": \"🏚\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"office\": {\r\n \"keywords\": [\"building\", \"bureau\", \"work\"],\r\n \"char\": \"🏢\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"department_store\": {\r\n \"keywords\": [\"building\", \"shopping\", \"mall\"],\r\n \"char\": \"🏬\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"post_office\": {\r\n \"keywords\": [\"building\", \"email\", \"communication\"],\r\n \"char\": \"🏣\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"european_post_office\": {\r\n \"keywords\": [\"building\", \"email\"],\r\n \"char\": \"🏤\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"hospital\": {\r\n \"keywords\": [\"building\", \"health\", \"surgery\", \"doctor\"],\r\n \"char\": \"🏥\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"bank\": {\r\n \"keywords\": [\"building\", \"money\", \"sales\", \"cash\", \"business\", \"enterprise\"],\r\n \"char\": \"🏦\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"hotel\": {\r\n \"keywords\": [\"building\", \"accomodation\", \"checkin\"],\r\n \"char\": \"🏨\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"convenience_store\": {\r\n \"keywords\": [\"building\", \"shopping\", \"groceries\"],\r\n \"char\": \"🏪\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"school\": {\r\n \"keywords\": [\"building\", \"student\", \"education\", \"learn\", \"teach\"],\r\n \"char\": \"🏫\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"love_hotel\": {\r\n \"keywords\": [\"like\", \"affection\", \"dating\"],\r\n \"char\": \"🏩\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"wedding\": {\r\n \"keywords\": [\"love\", \"like\", \"affection\", \"couple\", \"marriage\", \"bride\", \"groom\"],\r\n \"char\": \"💒\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"museum\": {\r\n \"keywords\": [\"art\", \"culture\", \"history\"],\r\n \"char\": \"🏛\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"church\": {\r\n \"keywords\": [\"building\", \"religion\", \"christ\"],\r\n \"char\": \"⛪\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"mosque\": {\r\n \"keywords\": [\"islam\", \"worship\", \"minaret\"],\r\n \"char\": \"🕌\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"synagogue\": {\r\n \"keywords\": [\"judaism\", \"worship\", \"temple\", \"jewish\"],\r\n \"char\": \"🕍\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"kaaba\": {\r\n \"keywords\": [\"mecca\", \"mosque\", \"islam\"],\r\n \"char\": \"🕋\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"shinto_shrine\": {\r\n \"keywords\": [\"temple\", \"japan\", \"kyoto\"],\r\n \"char\": \"⛩\",\r\n \"category\": \"travel_and_places\"\r\n },\r\n \"watch\": {\r\n \"keywords\": [\"time\", \"accessories\"],\r\n \"char\": \"⌚\",\r\n \"category\": \"objects\"\r\n },\r\n \"iphone\": {\r\n \"keywords\": [\"technology\", \"apple\", \"gadgets\", \"dial\"],\r\n \"char\": \"📱\",\r\n \"category\": \"objects\"\r\n },\r\n \"calling\": {\r\n \"keywords\": [\"iphone\", \"incoming\"],\r\n \"char\": \"📲\",\r\n \"category\": \"objects\"\r\n },\r\n \"computer\": {\r\n \"keywords\": [\"technology\", \"laptop\", \"screen\", \"display\", \"monitor\"],\r\n \"char\": \"💻\",\r\n \"category\": \"objects\"\r\n },\r\n \"keyboard\": {\r\n \"keywords\": [\"technology\", \"computer\", \"type\", \"input\", \"text\"],\r\n \"char\": \"⌨\",\r\n \"category\": \"objects\"\r\n },\r\n \"desktop_computer\": {\r\n \"keywords\": [\"technology\", \"computing\", \"screen\"],\r\n \"char\": \"🖥\",\r\n \"category\": \"objects\"\r\n },\r\n \"printer\": {\r\n \"keywords\": [\"paper\", \"ink\"],\r\n \"char\": \"🖨\",\r\n \"category\": \"objects\"\r\n },\r\n \"three_button_mouse\": {\r\n \"keywords\": [\"click\"],\r\n \"char\": \"🖱\",\r\n \"category\": \"objects\"\r\n },\r\n \"trackball\": {\r\n \"keywords\": [\"technology\", \"trackpad\"],\r\n \"char\": \"🖲\",\r\n \"category\": \"objects\"\r\n },\r\n \"joystick\": {\r\n \"keywords\": [\"game\", \"play\"],\r\n \"char\": \"🕹\",\r\n \"category\": \"objects\"\r\n },\r\n \"compression\": {\r\n \"keywords\": [\"tool\"],\r\n \"char\": \"🗜\",\r\n \"category\": \"objects\"\r\n },\r\n \"minidisc\": {\r\n \"keywords\": [\"technology\", \"record\", \"data\", \"disk\", \"90s\"],\r\n \"char\": \"💽\",\r\n \"category\": \"objects\"\r\n },\r\n \"floppy_disk\": {\r\n \"keywords\": [\"oldschool\", \"technology\", \"save\", \"90s\", \"80s\"],\r\n \"char\": \"💾\",\r\n \"category\": \"objects\"\r\n },\r\n \"cd\": {\r\n \"keywords\": [\"technology\", \"dvd\", \"disk\", \"disc\", \"90s\"],\r\n \"char\": \"💿\",\r\n \"category\": \"objects\"\r\n },\r\n \"dvd\": {\r\n \"keywords\": [\"cd\", \"disk\", \"disc\"],\r\n \"char\": \"📀\",\r\n \"category\": \"objects\"\r\n },\r\n \"vhs\": {\r\n \"keywords\": [\"record\", \"video\", \"oldschool\", \"90s\", \"80s\"],\r\n \"char\": \"📼\",\r\n \"category\": \"objects\"\r\n },\r\n \"camera\": {\r\n \"keywords\": [\"gadgets\", \"photography\"],\r\n \"char\": \"📷\",\r\n \"category\": \"objects\"\r\n },\r\n \"camera_with_flash\": {\r\n \"keywords\": [\"photography\", \"gadgets\"],\r\n \"char\": \"📸\",\r\n \"category\": \"objects\"\r\n },\r\n \"video_camera\": {\r\n \"keywords\": [\"film\", \"record\"],\r\n \"char\": \"📹\",\r\n \"category\": \"objects\"\r\n },\r\n \"movie_camera\": {\r\n \"keywords\": [\"film\", \"record\"],\r\n \"char\": \"🎥\",\r\n \"category\": \"objects\"\r\n },\r\n \"film_projector\": {\r\n \"keywords\": [\"video\", \"tape\", \"record\", \"movie\"],\r\n \"char\": \"📽\",\r\n \"category\": \"objects\"\r\n },\r\n \"film_frames\": {\r\n \"keywords\": [\"movie\"],\r\n \"char\": \"🎞\",\r\n \"category\": \"objects\"\r\n },\r\n \"telephone_receiver\": {\r\n \"keywords\": [\"technology\", \"communication\", \"dial\"],\r\n \"char\": \"📞\",\r\n \"category\": \"objects\"\r\n },\r\n \"phone\": {\r\n \"keywords\": [\"technology\", \"communication\", \"dial\", \"telephone\"],\r\n \"char\": \"☎️\",\r\n \"category\": \"objects\"\r\n },\r\n \"pager\": {\r\n \"keywords\": [\"bbcall\", \"oldschool\", \"90s\"],\r\n \"char\": \"📟\",\r\n \"category\": \"objects\"\r\n },\r\n \"fax\": {\r\n \"keywords\": [\"communication\", \"technology\"],\r\n \"char\": \"📠\",\r\n \"category\": \"objects\"\r\n },\r\n \"tv\": {\r\n \"keywords\": [\"technology\", \"program\", \"oldschool\", \"show\", \"television\"],\r\n \"char\": \"📺\",\r\n \"category\": \"objects\"\r\n },\r\n \"radio\": {\r\n \"keywords\": [\"communication\", \"music\", \"podcast\", \"program\"],\r\n \"char\": \"📻\",\r\n \"category\": \"objects\"\r\n },\r\n \"studio_microphone\": {\r\n \"keywords\": [\"singer\", \"recording\", \"artist\"],\r\n \"char\": \"🎙\",\r\n \"category\": \"objects\"\r\n },\r\n \"level_slider\": {\r\n \"keywords\": [\"scale\"],\r\n \"char\": \"🎚\",\r\n \"category\": \"objects\"\r\n },\r\n \"control_knobs\": {\r\n \"keywords\": [\"dial\"],\r\n \"char\": \"🎛\",\r\n \"category\": \"objects\"\r\n },\r\n \"stopwatch\": {\r\n \"keywords\": [\"time\", \"deadline\"],\r\n \"char\": \"⏱\",\r\n \"category\": \"objects\"\r\n },\r\n \"timer_clock\": {\r\n \"keywords\": [\"alarm\"],\r\n \"char\": \"⏲\",\r\n \"category\": \"objects\"\r\n },\r\n \"alarm_clock\": {\r\n \"keywords\": [\"time\", \"wake\"],\r\n \"char\": \"⏰\",\r\n \"category\": \"objects\"\r\n },\r\n \"mantelpiece_clock\": {\r\n \"keywords\": [\"time\"],\r\n \"char\": \"🕰\",\r\n \"category\": \"objects\"\r\n },\r\n \"hourglass_flowing_sand\": {\r\n \"keywords\": [\"oldschool\", \"time\", \"countdown\"],\r\n \"char\": \"⏳\",\r\n \"category\": \"objects\"\r\n },\r\n \"hourglass\": {\r\n \"keywords\": [\"time\", \"clock\", \"oldschool\", \"limit\", \"exam\", \"quiz\", \"test\"],\r\n \"char\": \"⌛\",\r\n \"category\": \"objects\"\r\n },\r\n \"satellite\": {\r\n \"keywords\": [\"communication\", \"future\", \"radio\", \"space\"],\r\n \"char\": \"📡\",\r\n \"category\": \"objects\"\r\n },\r\n \"battery\": {\r\n \"keywords\": [\"power\", \"energy\", \"sustain\"],\r\n \"char\": \"🔋\",\r\n \"category\": \"objects\"\r\n },\r\n \"electric_plug\": {\r\n \"keywords\": [\"charger\", \"power\"],\r\n \"char\": \"🔌\",\r\n \"category\": \"objects\"\r\n },\r\n \"bulb\": {\r\n \"keywords\": [\"light\", \"electricity\", \"idea\"],\r\n \"char\": \"💡\",\r\n \"category\": \"objects\"\r\n },\r\n \"flashlight\": {\r\n \"keywords\": [\"dark\", \"camping\", \"sight\", \"night\"],\r\n \"char\": \"🔦\",\r\n \"category\": \"objects\"\r\n },\r\n \"candle\": {\r\n \"keywords\": [\"fire\", \"wax\"],\r\n \"char\": \"🕯\",\r\n \"category\": \"objects\"\r\n },\r\n \"wastebasket\": {\r\n \"keywords\": [\"bin\", \"trash\", \"rubbish\", \"garbage\", \"toss\"],\r\n \"char\": \"🗑\",\r\n \"category\": \"objects\"\r\n },\r\n \"oil_drum\": {\r\n \"keywords\": [\"barrell\"],\r\n \"char\": \"🛢\",\r\n \"category\": \"objects\"\r\n },\r\n \"money_with_wings\": {\r\n \"keywords\": [\"dollar\", \"bills\", \"payment\", \"sale\"],\r\n \"char\": \"💸\",\r\n \"category\": \"objects\"\r\n },\r\n \"dollar\": {\r\n \"keywords\": [\"money\", \"sales\", \"bill\", \"currency\"],\r\n \"char\": \"💵\",\r\n \"category\": \"objects\"\r\n },\r\n \"yen\": {\r\n \"keywords\": [\"money\", \"sales\", \"japanese\", \"dollar\", \"currency\"],\r\n \"char\": \"💴\",\r\n \"category\": \"objects\"\r\n },\r\n \"euro\": {\r\n \"keywords\": [\"money\", \"sales\", \"dollar\", \"currency\"],\r\n \"char\": \"💶\",\r\n \"category\": \"objects\"\r\n },\r\n \"pound\": {\r\n \"keywords\": [\"british\", \"sterling\", \"money\", \"sales\", \"bills\", \"uk\", \"england\", \"currency\"],\r\n \"char\": \"💷\",\r\n \"category\": \"objects\"\r\n },\r\n \"moneybag\": {\r\n \"keywords\": [\"dollar\", \"payment\", \"coins\", \"sale\"],\r\n \"char\": \"💰\",\r\n \"category\": \"objects\"\r\n },\r\n \"credit_card\": {\r\n \"keywords\": [\"money\", \"sales\", \"dollar\", \"bill\", \"payment\", \"shopping\"],\r\n \"char\": \"💳\",\r\n \"category\": \"objects\"\r\n },\r\n \"gem\": {\r\n \"keywords\": [\"blue\", \"ruby\", \"diamond\", \"jewelry\"],\r\n \"char\": \"💎\",\r\n \"category\": \"objects\"\r\n },\r\n \"scales\": {\r\n \"keywords\": [\"law\", \"fairness\", \"weight\"],\r\n \"char\": \"⚖\",\r\n \"category\": \"objects\"\r\n },\r\n \"wrench\": {\r\n \"keywords\": [\"tools\", \"diy\", \"ikea\", \"fix\", \"maintainer\"],\r\n \"char\": \"🔧\",\r\n \"category\": \"objects\"\r\n },\r\n \"hammer\": {\r\n \"keywords\": [\"tools\", \"build\", \"create\"],\r\n \"char\": \"🔨\",\r\n \"category\": \"objects\"\r\n },\r\n \"hammer_and_pick\": {\r\n \"keywords\": [\"tools\", \"build\", \"create\"],\r\n \"char\": \"⚒\",\r\n \"category\": \"objects\"\r\n },\r\n \"hammer_and_wrench\": {\r\n \"keywords\": [\"tools\", \"build\", \"create\"],\r\n \"char\": \"🛠\",\r\n \"category\": \"objects\"\r\n },\r\n \"pick\": {\r\n \"keywords\": [\"tools\", \"dig\"],\r\n \"char\": \"⛏\",\r\n \"category\": \"objects\"\r\n },\r\n \"nut_and_bolt\": {\r\n \"keywords\": [\"handy\", \"tools\", \"fix\"],\r\n \"char\": \"🔩\",\r\n \"category\": \"objects\"\r\n },\r\n \"gear\": {\r\n \"keywords\": [\"cog\"],\r\n \"char\": \"⚙\",\r\n \"category\": \"objects\"\r\n },\r\n \"chains\": {\r\n \"keywords\": [\"lock\", \"arrest\"],\r\n \"char\": \"⛓\",\r\n \"category\": \"objects\"\r\n },\r\n \"gun\": {\r\n \"keywords\": [\"violence\", \"weapon\", \"pistol\", \"revolver\"],\r\n \"char\": \"🔫\",\r\n \"category\": \"objects\"\r\n },\r\n \"bomb\": {\r\n \"keywords\": [\"boom\", \"explode\", \"explosion\", \"terrorism\"],\r\n \"char\": \"💣\",\r\n \"category\": \"objects\"\r\n },\r\n \"hocho\": {\r\n \"keywords\": [\"knife\", \"blade\", \"cutlery\", \"kitchen\", \"weapon\"],\r\n \"char\": \"🔪\",\r\n \"category\": \"objects\"\r\n },\r\n \"dagger_knife\": {\r\n \"keywords\": [\"weapon\"],\r\n \"char\": \"🗡\",\r\n \"category\": \"objects\"\r\n },\r\n \"crossed_swords\": {\r\n \"keywords\": [\"weapon\"],\r\n \"char\": \"⚔\",\r\n \"category\": \"objects\"\r\n },\r\n \"shield\": {\r\n \"keywords\": [\"protection\", \"security\"],\r\n \"char\": \"🛡\",\r\n \"category\": \"objects\"\r\n },\r\n \"smoking\": {\r\n \"keywords\": [\"kills\", \"tobacco\", \"cigarette\", \"joint\", \"smoke\"],\r\n \"char\": \"🚬\",\r\n \"category\": \"objects\"\r\n },\r\n \"skull_and_crossbones\": {\r\n \"keywords\": [\"poison\", \"danger\", \"deadly\", \"scary\"],\r\n \"char\": \"☠\",\r\n \"category\": \"objects\"\r\n },\r\n \"coffin\": {\r\n \"keywords\": [\"vampire\", \"dead\", \"die\", \"death\", \"rip\", \"graveyard\", \"cemetery\"],\r\n \"char\": \"⚰\",\r\n \"category\": \"objects\"\r\n },\r\n \"funeral_urn\": {\r\n \"keywords\": [\"dead\", \"die\", \"death\", \"rip\", \"ashes\"],\r\n \"char\": \"⚱\",\r\n \"category\": \"objects\"\r\n },\r\n \"amphora\": {\r\n \"keywords\": [\"vase\", \"jar\"],\r\n \"char\": \"🏺\",\r\n \"category\": \"objects\"\r\n },\r\n \"crystal_ball\": {\r\n \"keywords\": [\"disco\", \"party\", \"magic\", \"circus\", \"fortune_teller\"],\r\n \"char\": \"🔮\",\r\n \"category\": \"objects\"\r\n },\r\n \"prayer_beads\": {\r\n \"keywords\": [\"dhikr\", \"religious\"],\r\n \"char\": \"📿\",\r\n \"category\": \"objects\"\r\n },\r\n \"barber\": {\r\n \"keywords\": [\"hair\", \"salon\", \"style\"],\r\n \"char\": \"💈\",\r\n \"category\": \"objects\"\r\n },\r\n \"alembic\": {\r\n \"keywords\": [\"distilling\", \"science\", \"experiment\"],\r\n \"char\": \"⚗\",\r\n \"category\": \"objects\"\r\n },\r\n \"telescope\": {\r\n \"keywords\": [\"stars\", \"space\", \"zoom\"],\r\n \"char\": \"🔭\",\r\n \"category\": \"objects\"\r\n },\r\n \"microscope\": {\r\n \"keywords\": [\"laboratory\", \"experiment\", \"zoomin\", \"science\", \"study\"],\r\n \"char\": \"🔬\",\r\n \"category\": \"objects\"\r\n },\r\n \"hole\": {\r\n \"keywords\": [\"embarrassing\"],\r\n \"char\": \"🕳\",\r\n \"category\": \"objects\"\r\n },\r\n \"pill\": {\r\n \"keywords\": [\"health\", \"medicine\", \"doctor\", \"pharmacy\", \"drug\"],\r\n \"char\": \"💊\",\r\n \"category\": \"objects\"\r\n },\r\n \"syringe\": {\r\n \"keywords\": [\"health\", \"hospital\", \"drugs\", \"blood\", \"medicine\", \"needle\", \"doctor\", \"nurse\"],\r\n \"char\": \"💉\",\r\n \"category\": \"objects\"\r\n },\r\n \"thermometer\": {\r\n \"keywords\": [\"weather\", \"temperature\", \"hot\", \"cold\"],\r\n \"char\": \"🌡\",\r\n \"category\": \"objects\"\r\n },\r\n \"label\": {\r\n \"keywords\": [\"sale\", \"tag\"],\r\n \"char\": \"🏷\",\r\n \"category\": \"objects\"\r\n },\r\n \"bookmark\": {\r\n \"keywords\": [\"favorite\", \"label\", \"save\"],\r\n \"char\": \"🔖\",\r\n \"category\": \"objects\"\r\n },\r\n \"toilet\": {\r\n \"keywords\": [\"restroom\", \"wc\", \"washroom\", \"bathroom\", \"potty\"],\r\n \"char\": \"🚽\",\r\n \"category\": \"objects\"\r\n },\r\n \"shower\": {\r\n \"keywords\": [\"clean\", \"water\", \"bathroom\"],\r\n \"char\": \"🚿\",\r\n \"category\": \"objects\"\r\n },\r\n \"bathtub\": {\r\n \"keywords\": [\"clean\", \"shower\", \"bathroom\"],\r\n \"char\": \"🛁\",\r\n \"category\": \"objects\"\r\n },\r\n \"key\": {\r\n \"keywords\": [\"lock\", \"door\", \"password\"],\r\n \"char\": \"🔑\",\r\n \"category\": \"objects\"\r\n },\r\n \"old_key\": {\r\n \"keywords\": [\"lock\", \"door\", \"password\"],\r\n \"char\": \"🗝\",\r\n \"category\": \"objects\"\r\n },\r\n \"couch_and_lamp\": {\r\n \"keywords\": [\"read\", \"chill\"],\r\n \"char\": \"🛋\",\r\n \"category\": \"objects\"\r\n },\r\n \"sleeping_accommodation\": {\r\n \"keywords\": [\"bed\", \"rest\"],\r\n \"char\": \"🛌\",\r\n \"category\": \"objects\"\r\n },\r\n \"bed\": {\r\n \"keywords\": [\"sleep\", \"rest\"],\r\n \"char\": \"🛏\",\r\n \"category\": \"objects\"\r\n },\r\n \"door\": {\r\n \"keywords\": [\"house\", \"entry\", \"exit\"],\r\n \"char\": \"🚪\",\r\n \"category\": \"objects\"\r\n },\r\n \"bellhop_bell\": {\r\n \"keywords\": [\"service\"],\r\n \"char\": \"🛎\",\r\n \"category\": \"objects\"\r\n },\r\n \"frame_with_picture\": {\r\n \"keywords\": [\"photography\"],\r\n \"char\": \"🖼\",\r\n \"category\": \"objects\"\r\n },\r\n \"world_map\": {\r\n \"keywords\": [\"location\", \"direction\"],\r\n \"char\": \"🗺\",\r\n \"category\": \"objects\"\r\n },\r\n \"umbrella_on_ground\": {\r\n \"keywords\": [\"weather\", \"summer\"],\r\n \"char\": \"⛱\",\r\n \"category\": \"objects\"\r\n },\r\n \"moyai\": {\r\n \"keywords\": [\"rock\", \"easter island\", \"moai\"],\r\n \"char\": \"🗿\",\r\n \"category\": \"objects\"\r\n },\r\n \"shopping_bags\": {\r\n \"keywords\": [\"mall\", \"buy\", \"purchase\"],\r\n \"char\": \"🛍\",\r\n \"category\": \"objects\"\r\n },\r\n \"balloon\": {\r\n \"keywords\": [\"party\", \"celebration\", \"birthday\", \"circus\"],\r\n \"char\": \"🎈\",\r\n \"category\": \"objects\"\r\n },\r\n \"flags\": {\r\n \"keywords\": [\"fish\", \"japanese\", \"koinobori\", \"carp\", \"banner\"],\r\n \"char\": \"🎏\",\r\n \"category\": \"objects\"\r\n },\r\n \"ribbon\": {\r\n \"keywords\": [\"decoration\", \"pink\", \"girl\", \"bowtie\"],\r\n \"char\": \"🎀\",\r\n \"category\": \"objects\"\r\n },\r\n \"gift\": {\r\n \"keywords\": [\"present\", \"birthday\", \"christmas\", \"xmas\"],\r\n \"char\": \"🎁\",\r\n \"category\": \"objects\"\r\n },\r\n \"confetti_ball\": {\r\n \"keywords\": [\"festival\", \"party\", \"birthday\", \"circus\"],\r\n \"char\": \"🎊\",\r\n \"category\": \"objects\"\r\n },\r\n \"tada\": {\r\n \"keywords\": [\"party\", \"contulations\", \"birthday\", \"magic\", \"circus\"],\r\n \"char\": \"🎉\",\r\n \"category\": \"objects\"\r\n },\r\n \"dolls\": {\r\n \"keywords\": [\"japanese\", \"toy\", \"kimono\"],\r\n \"char\": \"🎎\",\r\n \"category\": \"objects\"\r\n },\r\n \"wind_chime\": {\r\n \"keywords\": [\"nature\", \"ding\", \"spring\", \"bell\"],\r\n \"char\": \"🎐\",\r\n \"category\": \"objects\"\r\n },\r\n \"crossed_flags\": {\r\n \"keywords\": [\"japanese\", \"nation\", \"country\", \"border\"],\r\n \"char\": \"🎌\",\r\n \"category\": \"objects\"\r\n },\r\n \"izakaya_lantern\": {\r\n \"keywords\": [\"light\", \"paper\", \"halloween\", \"spooky\"],\r\n \"char\": \"🏮\",\r\n \"category\": \"objects\"\r\n },\r\n \"envelope\": {\r\n \"keywords\": [\"letter\", \"postal\", \"inbox\", \"communication\"],\r\n \"char\": \"✉️\",\r\n \"category\": \"objects\"\r\n },\r\n \"envelope_with_arrow\": {\r\n \"keywords\": [\"email\", \"communication\"],\r\n \"char\": \"📩\",\r\n \"category\": \"objects\"\r\n },\r\n \"incoming_envelope\": {\r\n \"keywords\": [\"email\", \"inbox\"],\r\n \"char\": \"📨\",\r\n \"category\": \"objects\"\r\n },\r\n \"email\": {\r\n \"keywords\": [\"communication\", \"inbox\"],\r\n \"char\": \"📧\",\r\n \"category\": \"objects\"\r\n },\r\n \"love_letter\": {\r\n \"keywords\": [\"email\", \"like\", \"affection\", \"envelope\", \"valentines\"],\r\n \"char\": \"💌\",\r\n \"category\": \"objects\"\r\n },\r\n \"postbox\": {\r\n \"keywords\": [\"email\", \"letter\", \"envelope\"],\r\n \"char\": \"📮\",\r\n \"category\": \"objects\"\r\n },\r\n \"mailbox_closed\": {\r\n \"keywords\": [\"email\", \"communication\", \"inbox\"],\r\n \"char\": \"📪\",\r\n \"category\": \"objects\"\r\n },\r\n \"mailbox\": {\r\n \"keywords\": [\"email\", \"inbox\", \"communication\"],\r\n \"char\": \"📫\",\r\n \"category\": \"objects\"\r\n },\r\n \"mailbox_with_mail\": {\r\n \"keywords\": [\"email\", \"inbox\", \"communication\"],\r\n \"char\": \"📬\",\r\n \"category\": \"objects\"\r\n },\r\n \"mailbox_with_no_mail\": {\r\n \"keywords\": [\"email\", \"inbox\"],\r\n \"char\": \"📭\",\r\n \"category\": \"objects\"\r\n },\r\n \"package\": {\r\n \"keywords\": [\"mail\", \"gift\", \"cardboard\", \"box\", \"moving\"],\r\n \"char\": \"📦\",\r\n \"category\": \"objects\"\r\n },\r\n \"postal_horn\": {\r\n \"keywords\": [\"instrument\", \"music\"],\r\n \"char\": \"📯\",\r\n \"category\": \"objects\"\r\n },\r\n \"inbox_tray\": {\r\n \"keywords\": [\"email\", \"documents\"],\r\n \"char\": \"📥\",\r\n \"category\": \"objects\"\r\n },\r\n \"outbox_tray\": {\r\n \"keywords\": [\"inbox\", \"email\"],\r\n \"char\": \"📤\",\r\n \"category\": \"objects\"\r\n },\r\n \"scroll\": {\r\n \"keywords\": [\"documents\", \"ancient\", \"history\", \"paper\"],\r\n \"char\": \"📜\",\r\n \"category\": \"objects\"\r\n },\r\n \"page_with_curl\": {\r\n \"keywords\": [\"documents\", \"office\", \"paper\"],\r\n \"char\": \"📃\",\r\n \"category\": \"objects\"\r\n },\r\n \"bookmark_tabs\": {\r\n \"keywords\": [\"favorite\", \"save\", \"order\", \"tidy\"],\r\n \"char\": \"📑\",\r\n \"category\": \"objects\"\r\n },\r\n \"bar_chart\": {\r\n \"keywords\": [\"graph\", \"presentation\", \"stats\"],\r\n \"char\": \"📊\",\r\n \"category\": \"objects\"\r\n },\r\n \"chart_with_upwards_trend\": {\r\n \"keywords\": [\"graph\", \"presentation\", \"stats\", \"recovery\", \"business\", \"economics\", \"money\", \"sales\", \"good\", \"success\"],\r\n \"char\": \"📈\",\r\n \"category\": \"objects\"\r\n },\r\n \"chart_with_downwards_trend\": {\r\n \"keywords\": [\"graph\", \"presentation\", \"stats\", \"recession\", \"business\", \"economics\", \"money\", \"sales\", \"bad\", \"failure\"],\r\n \"char\": \"📉\",\r\n \"category\": \"objects\"\r\n },\r\n \"page_facing_up\": {\r\n \"keywords\": [\"documents\", \"office\", \"paper\", \"information\"],\r\n \"char\": \"📄\",\r\n \"category\": \"objects\"\r\n },\r\n \"date\": {\r\n \"keywords\": [\"calendar\", \"schedule\"],\r\n \"char\": \"📅\",\r\n \"category\": \"objects\"\r\n },\r\n \"calendar\": {\r\n \"keywords\": [\"schedule\", \"date\", \"planning\"],\r\n \"char\": \"📆\",\r\n \"category\": \"objects\"\r\n },\r\n \"spiral_calendar_pad\": {\r\n \"keywords\": [\"date\", \"schedule\", \"planning\"],\r\n \"char\": \"🗓\",\r\n \"category\": \"objects\"\r\n },\r\n \"card_index\": {\r\n \"keywords\": [\"business\", \"stationery\"],\r\n \"char\": \"📇\",\r\n \"category\": \"objects\"\r\n },\r\n \"card_file_box\": {\r\n \"keywords\": [\"business\", \"stationery\"],\r\n \"char\": \"🗃\",\r\n \"category\": \"objects\"\r\n },\r\n \"ballot_box_with_ballot\": {\r\n \"keywords\": [\"election\", \"vote\"],\r\n \"char\": \"🗳\",\r\n \"category\": \"objects\"\r\n },\r\n \"file_cabinet\": {\r\n \"keywords\": [\"filing\", \"organizing\"],\r\n \"char\": \"🗄\",\r\n \"category\": \"objects\"\r\n },\r\n \"clipboard\": {\r\n \"keywords\": [\"stationery\", \"documents\"],\r\n \"char\": \"📋\",\r\n \"category\": \"objects\"\r\n },\r\n \"spiral_note_pad\": {\r\n \"keywords\": [\"memo\", \"stationery\"],\r\n \"char\": \"🗒\",\r\n \"category\": \"objects\"\r\n },\r\n \"file_folder\": {\r\n \"keywords\": [\"documents\", \"business\", \"office\"],\r\n \"char\": \"📁\",\r\n \"category\": \"objects\"\r\n },\r\n \"open_file_folder\": {\r\n \"keywords\": [\"documents\", \"load\"],\r\n \"char\": \"📂\",\r\n \"category\": \"objects\"\r\n },\r\n \"card_index_dividers\": {\r\n \"keywords\": [\"organizing\", \"business\", \"stationery\"],\r\n \"char\": \"🗂\",\r\n \"category\": \"objects\"\r\n },\r\n \"rolled_up_newspaper\": {\r\n \"keywords\": [\"press\", \"headline\"],\r\n \"char\": \"🗞\",\r\n \"category\": \"objects\"\r\n },\r\n \"newspaper\": {\r\n \"keywords\": [\"press\", \"headline\"],\r\n \"char\": \"📰\",\r\n \"category\": \"objects\"\r\n },\r\n \"notebook\": {\r\n \"keywords\": [\"stationery\", \"record\", \"notes\", \"paper\", \"study\"],\r\n \"char\": \"📓\",\r\n \"category\": \"objects\"\r\n },\r\n \"closed_book\": {\r\n \"keywords\": [\"read\", \"library\", \"knowledge\", \"textbook\", \"learn\"],\r\n \"char\": \"📕\",\r\n \"category\": \"objects\"\r\n },\r\n \"green_book\": {\r\n \"keywords\": [\"read\", \"library\", \"knowledge\", \"study\"],\r\n \"char\": \"📗\",\r\n \"category\": \"objects\"\r\n },\r\n \"blue_book\": {\r\n \"keywords\": [\"read\", \"library\", \"knowledge\", \"learn\", \"study\"],\r\n \"char\": \"📘\",\r\n \"category\": \"objects\"\r\n },\r\n \"orange_book\": {\r\n \"keywords\": [\"read\", \"library\", \"knowledge\", \"textbook\", \"study\"],\r\n \"char\": \"📙\",\r\n \"category\": \"objects\"\r\n },\r\n \"notebook_with_decorative_cover\": {\r\n \"keywords\": [\"classroom\", \"notes\", \"record\", \"paper\", \"study\"],\r\n \"char\": \"📔\",\r\n \"category\": \"objects\"\r\n },\r\n \"ledger\": {\r\n \"keywords\": [\"notes\", \"paper\"],\r\n \"char\": \"📒\",\r\n \"category\": \"objects\"\r\n },\r\n \"books\": {\r\n \"keywords\": [\"literature\", \"library\", \"study\"],\r\n \"char\": \"📚\",\r\n \"category\": \"objects\"\r\n },\r\n \"book\": {\r\n \"keywords\": [\"open_book\", \"read\", \"library\", \"knowledge\", \"literature\", \"learn\", \"study\"],\r\n \"char\": \"📖\",\r\n \"category\": \"objects\"\r\n },\r\n \"link\": {\r\n \"keywords\": [\"rings\", \"url\"],\r\n \"char\": \"🔗\",\r\n \"category\": \"objects\"\r\n },\r\n \"paperclip\": {\r\n \"keywords\": [\"documents\", \"stationery\"],\r\n \"char\": \"📎\",\r\n \"category\": \"objects\"\r\n },\r\n \"linked_paperclips\": {\r\n \"keywords\": [\"documents\", \"stationery\"],\r\n \"char\": \"🖇\",\r\n \"category\": \"objects\"\r\n },\r\n \"scissors\": {\r\n \"keywords\": [\"stationery\", \"cut\"],\r\n \"char\": \"✂️\",\r\n \"category\": \"objects\"\r\n },\r\n \"triangular_ruler\": {\r\n \"keywords\": [\"stationery\", \"math\", \"architect\", \"sketch\"],\r\n \"char\": \"📐\",\r\n \"category\": \"objects\"\r\n },\r\n \"straight_ruler\": {\r\n \"keywords\": [\"stationery\", \"calculate\", \"length\", \"math\", \"school\", \"drawing\", \"architect\", \"sketch\"],\r\n \"char\": \"📏\",\r\n \"category\": \"objects\"\r\n },\r\n \"pushpin\": {\r\n \"keywords\": [\"stationery\", \"mark\", \"here\"],\r\n \"char\": \"📌\",\r\n \"category\": \"objects\"\r\n },\r\n \"round_pushpin\": {\r\n \"keywords\": [\"stationery\", \"location\", \"map\", \"here\"],\r\n \"char\": \"📍\",\r\n \"category\": \"objects\"\r\n },\r\n \"triangular_flag_on_post\": {\r\n \"keywords\": [\"mark\", \"milestone\", \"place\"],\r\n \"char\": \"🚩\",\r\n \"category\": \"objects\"\r\n },\r\n \"waving_white_flag\": {\r\n \"keywords\": [\"losing\", \"loser\", \"lost\", \"surrender\", \"give up\", \"fail\"],\r\n \"char\": \"🏳\",\r\n \"category\": \"objects\"\r\n },\r\n \"waving_black_flag\": {\r\n \"keywords\": [\"pirate\"],\r\n \"char\": \"🏴\",\r\n \"category\": \"objects\"\r\n },\r\n \"closed_lock_with_key\": {\r\n \"keywords\": [\"security\", \"privacy\"],\r\n \"char\": \"🔐\",\r\n \"category\": \"objects\"\r\n },\r\n \"lock\": {\r\n \"keywords\": [\"security\", \"password\", \"padlock\"],\r\n \"char\": \"🔒\",\r\n \"category\": \"objects\"\r\n },\r\n \"unlock\": {\r\n \"keywords\": [\"privacy\", \"security\"],\r\n \"char\": \"🔓\",\r\n \"category\": \"objects\"\r\n },\r\n \"lock_with_ink_pen\": {\r\n \"keywords\": [\"security\", \"secret\"],\r\n \"char\": \"🔏\",\r\n \"category\": \"objects\"\r\n },\r\n \"lower_left_ballpoint_pen\": {\r\n \"keywords\": [\"stationery\", \"writing\", \"write\"],\r\n \"char\": \"🖊\",\r\n \"category\": \"objects\"\r\n },\r\n \"lower_left_fountain_pen\": {\r\n \"keywords\": [\"stationery\", \"writing\", \"write\"],\r\n \"char\": \"🖋\",\r\n \"category\": \"objects\"\r\n },\r\n \"black_nib\": {\r\n \"keywords\": [\"pen\", \"stationery\", \"writing\", \"write\"],\r\n \"char\": \"✒️\",\r\n \"category\": \"objects\"\r\n },\r\n \"memo\": {\r\n \"keywords\": [\"write\", \"documents\", \"stationery\", \"pencil\", \"paper\", \"writing\", \"legal\", \"exam\", \"quiz\", \"test\", \"study\"],\r\n \"char\": \"📝\",\r\n \"category\": \"objects\"\r\n },\r\n \"pencil2\": {\r\n \"keywords\": [\"stationery\", \"write\", \"paper\", \"writing\", \"school\", \"study\"],\r\n \"char\": \"✏️\",\r\n \"category\": \"objects\"\r\n },\r\n \"lower_left_crayon\": {\r\n \"keywords\": [\"drawing\", \"creativity\"],\r\n \"char\": \"🖍\",\r\n \"category\": \"objects\"\r\n },\r\n \"lower_left_paintbrush\": {\r\n \"keywords\": [\"drawing\", \"creativity\", \"art\"],\r\n \"char\": \"🖌\",\r\n \"category\": \"objects\"\r\n },\r\n \"mag\": {\r\n \"keywords\": [\"search\", \"zoom\", \"find\", \"detective\"],\r\n \"char\": \"🔍\",\r\n \"category\": \"objects\"\r\n },\r\n \"mag_right\": {\r\n \"keywords\": [\"search\", \"zoom\", \"find\", \"detective\"],\r\n \"char\": \"🔎\",\r\n \"category\": \"objects\"\r\n },\r\n \"heart\": {\r\n \"keywords\": [\"love\", \"like\", \"valentines\"],\r\n \"char\": \"❤️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"yellow_heart\": {\r\n \"keywords\": [\"love\", \"like\", \"affection\", \"valentines\"],\r\n \"char\": \"💛\",\r\n \"category\": \"symbols\"\r\n },\r\n \"green_heart\": {\r\n \"keywords\": [\"love\", \"like\", \"affection\", \"valentines\"],\r\n \"char\": \"💚\",\r\n \"category\": \"symbols\"\r\n },\r\n \"blue_heart\": {\r\n \"keywords\": [\"love\", \"like\", \"affection\", \"valentines\"],\r\n \"char\": \"💙\",\r\n \"category\": \"symbols\"\r\n },\r\n \"purple_heart\": {\r\n \"keywords\": [\"love\", \"like\", \"affection\", \"valentines\"],\r\n \"char\": \"💜\",\r\n \"category\": \"symbols\"\r\n },\r\n \"broken_heart\": {\r\n \"keywords\": [\"sad\", \"sorry\", \"break\", \"heart\", \"heartbreak\"],\r\n \"char\": \"💔\",\r\n \"category\": \"symbols\"\r\n },\r\n \"heavy_heart_exclamation_mark_ornament\": {\r\n \"keywords\": [\"decoration\", \"love\"],\r\n \"char\": \"❣\",\r\n \"category\": \"symbols\"\r\n },\r\n \"two_hearts\": {\r\n \"keywords\": [\"love\", \"like\", \"affection\", \"valentines\", \"heart\"],\r\n \"char\": \"💕\",\r\n \"category\": \"symbols\"\r\n },\r\n \"revolving_hearts\": {\r\n \"keywords\": [\"love\", \"like\", \"affection\", \"valentines\"],\r\n \"char\": \"💞\",\r\n \"category\": \"symbols\"\r\n },\r\n \"heartbeat\": {\r\n \"keywords\": [\"love\", \"like\", \"affection\", \"valentines\", \"pink\", \"heart\"],\r\n \"char\": \"💓\",\r\n \"category\": \"symbols\"\r\n },\r\n \"heartpulse\": {\r\n \"keywords\": [\"like\", \"love\", \"affection\", \"valentines\", \"pink\"],\r\n \"char\": \"💗\",\r\n \"category\": \"symbols\"\r\n },\r\n \"sparkling_heart\": {\r\n \"keywords\": [\"love\", \"like\", \"affection\", \"valentines\"],\r\n \"char\": \"💖\",\r\n \"category\": \"symbols\"\r\n },\r\n \"cupid\": {\r\n \"keywords\": [\"love\", \"like\", \"heart\", \"affection\", \"valentines\"],\r\n \"char\": \"💘\",\r\n \"category\": \"symbols\"\r\n },\r\n \"gift_heart\": {\r\n \"keywords\": [\"love\", \"valentines\"],\r\n \"char\": \"💝\",\r\n \"category\": \"symbols\"\r\n },\r\n \"heart_decoration\": {\r\n \"keywords\": [\"purple-square\", \"love\", \"like\"],\r\n \"char\": \"💟\",\r\n \"category\": \"symbols\"\r\n },\r\n \"peace_symbol\": {\r\n \"keywords\": [\"hippie\"],\r\n \"char\": \"☮\",\r\n \"category\": \"symbols\"\r\n },\r\n \"latin_cross\": {\r\n \"keywords\": [\"christianity\"],\r\n \"char\": \"✝\",\r\n \"category\": \"symbols\"\r\n },\r\n \"star_and_crescent\": {\r\n \"keywords\": [\"islam\"],\r\n \"char\": \"☪\",\r\n \"category\": \"symbols\"\r\n },\r\n \"om_symbol\": {\r\n \"keywords\": [\"hinduism\", \"buddhism\", \"sikhism\", \"jainism\"],\r\n \"char\": \"🕉\",\r\n \"category\": \"symbols\"\r\n },\r\n \"wheel_of_dharma\": {\r\n \"keywords\": [\"hinduism\", \"buddhism\", \"sikhism\", \"jainism\"],\r\n \"char\": \"☸\",\r\n \"category\": \"symbols\"\r\n },\r\n \"star_of_david\": {\r\n \"keywords\": [\"judaism\"],\r\n \"char\": \"✡\",\r\n \"category\": \"symbols\"\r\n },\r\n \"six_pointed_star\": {\r\n \"keywords\": [\"purple-square\", \"religion\", \"jewish\", \"hexagram\"],\r\n \"char\": \"🔯\",\r\n \"category\": \"symbols\"\r\n },\r\n \"menorah_with_nine_branches\": {\r\n \"keywords\": [\"hanukkah\", \"candles\", \"jewish\"],\r\n \"char\": \"🕎\",\r\n \"category\": \"symbols\"\r\n },\r\n \"yin_yang\": {\r\n \"keywords\": [\"balance\"],\r\n \"char\": \"☯\",\r\n \"category\": \"symbols\"\r\n },\r\n \"orthodox_cross\": {\r\n \"keywords\": [\"suppedaneum\", \"religion\"],\r\n \"char\": \"☦\",\r\n \"category\": \"symbols\"\r\n },\r\n \"place_of_worship\": {\r\n \"keywords\": [\"religion\", \"church\", \"temple\", \"prayer\"],\r\n \"char\": \"🛐\",\r\n \"category\": \"symbols\"\r\n },\r\n \"ophiuchus\": {\r\n \"keywords\": [\"sign\", \"purple-square\", \"constellation\", \"astrology\"],\r\n \"char\": \"⛎\",\r\n \"category\": \"symbols\"\r\n },\r\n \"aries\": {\r\n \"keywords\": [\"sign\", \"purple-square\", \"zodiac\", \"astrology\"],\r\n \"char\": \"♈\",\r\n \"category\": \"symbols\"\r\n },\r\n \"taurus\": {\r\n \"keywords\": [\"purple-square\", \"sign\", \"zodiac\", \"astrology\"],\r\n \"char\": \"♉\",\r\n \"category\": \"symbols\"\r\n },\r\n \"gemini\": {\r\n \"keywords\": [\"sign\", \"zodiac\", \"purple-square\", \"astrology\"],\r\n \"char\": \"♊\",\r\n \"category\": \"symbols\"\r\n },\r\n \"cancer\": {\r\n \"keywords\": [\"sign\", \"zodiac\", \"purple-square\", \"astrology\"],\r\n \"char\": \"♋\",\r\n \"category\": \"symbols\"\r\n },\r\n \"leo\": {\r\n \"keywords\": [\"sign\", \"purple-square\", \"zodiac\", \"astrology\"],\r\n \"char\": \"♌\",\r\n \"category\": \"symbols\"\r\n },\r\n \"virgo\": {\r\n \"keywords\": [\"sign\", \"zodiac\", \"purple-square\", \"astrology\"],\r\n \"char\": \"♍\",\r\n \"category\": \"symbols\"\r\n },\r\n \"libra\": {\r\n \"keywords\": [\"sign\", \"purple-square\", \"zodiac\", \"astrology\"],\r\n \"char\": \"♎\",\r\n \"category\": \"symbols\"\r\n },\r\n \"scorpius\": {\r\n \"keywords\": [\"sign\", \"zodiac\", \"purple-square\", \"astrology\", \"scorpio\"],\r\n \"char\": \"♏\",\r\n \"category\": \"symbols\"\r\n },\r\n \"sagittarius\": {\r\n \"keywords\": [\"sign\", \"zodiac\", \"purple-square\", \"astrology\"],\r\n \"char\": \"♐\",\r\n \"category\": \"symbols\"\r\n },\r\n \"capricorn\": {\r\n \"keywords\": [\"sign\", \"zodiac\", \"purple-square\", \"astrology\"],\r\n \"char\": \"♑\",\r\n \"category\": \"symbols\"\r\n },\r\n \"aquarius\": {\r\n \"keywords\": [\"sign\", \"purple-square\", \"zodiac\", \"astrology\"],\r\n \"char\": \"♒\",\r\n \"category\": \"symbols\"\r\n },\r\n \"pisces\": {\r\n \"keywords\": [\"purple-square\", \"sign\", \"zodiac\", \"astrology\"],\r\n \"char\": \"♓\",\r\n \"category\": \"symbols\"\r\n },\r\n \"id\": {\r\n \"keywords\": [\"purple-square\", \"words\"],\r\n \"char\": \"🆔\",\r\n \"category\": \"symbols\"\r\n },\r\n \"atom_symbol\": {\r\n \"keywords\": [\"science\"],\r\n \"char\": \"⚛\",\r\n \"category\": \"symbols\"\r\n },\r\n \"u7a7a\": {\r\n \"keywords\": [\"kanji\", \"japanese\", \"chinese\", \"empty\", \"sky\", \"blue-square\"],\r\n \"char\": \"🈳\",\r\n \"category\": \"symbols\"\r\n },\r\n \"u5272\": {\r\n \"keywords\": [\"cut\", \"divide\", \"chinese\", \"kanji\", \"pink-square\"],\r\n \"char\": \"🈹\",\r\n \"category\": \"symbols\"\r\n },\r\n \"radioactive_sign\": {\r\n \"keywords\": [\"nuclear\", \"danger\"],\r\n \"char\": \"☢\",\r\n \"category\": \"symbols\"\r\n },\r\n \"biohazard_sign\": {\r\n \"keywords\": [\"danger\"],\r\n \"char\": \"☣\",\r\n \"category\": \"symbols\"\r\n },\r\n \"mobile_phone_off\": {\r\n \"keywords\": [\"mute\", \"orange-square\", \"silence\", \"quiet\"],\r\n \"char\": \"📴\",\r\n \"category\": \"symbols\"\r\n },\r\n \"vibration_mode\": {\r\n \"keywords\": [\"orange-square\", \"phone\"],\r\n \"char\": \"📳\",\r\n \"category\": \"symbols\"\r\n },\r\n \"u6709\": {\r\n \"keywords\": [\"orange-square\", \"chinese\", \"have\", \"kanji\"],\r\n \"char\": \"🈶\",\r\n \"category\": \"symbols\"\r\n },\r\n \"u7121\": {\r\n \"keywords\": [\"nothing\", \"chinese\", \"kanji\", \"japanese\", \"orange-square\"],\r\n \"char\": \"🈚\",\r\n \"category\": \"symbols\"\r\n },\r\n \"u7533\": {\r\n \"keywords\": [\"chinese\", \"japanese\", \"kanji\", \"orange-square\"],\r\n \"char\": \"🈸\",\r\n \"category\": \"symbols\"\r\n },\r\n \"u55b6\": {\r\n \"keywords\": [\"japanese\", \"opening hours\", \"orange-square\"],\r\n \"char\": \"🈺\",\r\n \"category\": \"symbols\"\r\n },\r\n \"u6708\": {\r\n \"keywords\": [\"chinese\", \"month\", \"moon\", \"japanese\", \"orange-square\", \"kanji\"],\r\n \"char\": \"🈷️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"eight_pointed_black_star\": {\r\n \"keywords\": [\"orange-square\", \"shape\", \"polygon\"],\r\n \"char\": \"✴️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"vs\": {\r\n \"keywords\": [\"words\", \"orange-square\"],\r\n \"char\": \"🆚\",\r\n \"category\": \"symbols\"\r\n },\r\n \"accept\": {\r\n \"keywords\": [\"ok\", \"good\", \"chinese\", \"kanji\", \"agree\", \"yes\", \"orange-circle\"],\r\n \"char\": \"🉑\",\r\n \"category\": \"symbols\"\r\n },\r\n \"white_flower\": {\r\n \"keywords\": [\"japanese\", \"spring\"],\r\n \"char\": \"💮\",\r\n \"category\": \"symbols\"\r\n },\r\n \"ideograph_advantage\": {\r\n \"keywords\": [\"chinese\", \"kanji\", \"obtain\", \"get\", \"circle\"],\r\n \"char\": \"🉐\",\r\n \"category\": \"symbols\"\r\n },\r\n \"secret\": {\r\n \"keywords\": [\"privacy\", \"chinese\", \"sshh\", \"kanji\", \"red-circle\"],\r\n \"char\": \"㊙️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"congratulations\": {\r\n \"keywords\": [\"chinese\", \"kanji\", \"japanese\", \"red-circle\"],\r\n \"char\": \"㊗️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"u5408\": {\r\n \"keywords\": [\"japanese\", \"chinese\", \"join\", \"kanji\", \"red-square\"],\r\n \"char\": \"🈴\",\r\n \"category\": \"symbols\"\r\n },\r\n \"u6e80\": {\r\n \"keywords\": [\"full\", \"chinese\", \"japanese\", \"red-square\", \"kanji\"],\r\n \"char\": \"🈵\",\r\n \"category\": \"symbols\"\r\n },\r\n \"u7981\": {\r\n \"keywords\": [\"kanji\", \"japanese\", \"chinese\", \"forbidden\", \"limit\", \"restricted\", \"red-square\"],\r\n \"char\": \"🈲\",\r\n \"category\": \"symbols\"\r\n },\r\n \"a\": {\r\n \"keywords\": [\"red-square\", \"alphabet\", \"letter\"],\r\n \"char\": \"🅰️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"b\": {\r\n \"keywords\": [\"red-square\", \"alphabet\", \"letter\"],\r\n \"char\": \"🅱️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"ab\": {\r\n \"keywords\": [\"red-square\", \"alphabet\"],\r\n \"char\": \"🆎\",\r\n \"category\": \"symbols\"\r\n },\r\n \"cl\": {\r\n \"keywords\": [\"alphabet\", \"words\", \"red-square\"],\r\n \"char\": \"🆑\",\r\n \"category\": \"symbols\"\r\n },\r\n \"o2\": {\r\n \"keywords\": [\"alphabet\", \"red-square\", \"letter\"],\r\n \"char\": \"🅾️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"sos\": {\r\n \"keywords\": [\"help\", \"red-square\", \"words\", \"emergency\", \"911\"],\r\n \"char\": \"🆘\",\r\n \"category\": \"symbols\"\r\n },\r\n \"no_entry\": {\r\n \"keywords\": [\"limit\", \"security\", \"privacy\", \"bad\", \"denied\", \"stop\", \"circle\"],\r\n \"char\": \"⛔\",\r\n \"category\": \"symbols\"\r\n },\r\n \"name_badge\": {\r\n \"keywords\": [\"fire\", \"forbid\"],\r\n \"char\": \"📛\",\r\n \"category\": \"symbols\"\r\n },\r\n \"no_entry_sign\": {\r\n \"keywords\": [\"forbid\", \"stop\", \"limit\", \"denied\", \"disallow\", \"circle\"],\r\n \"char\": \"🚫\",\r\n \"category\": \"symbols\"\r\n },\r\n \"x\": {\r\n \"keywords\": [\"no\", \"delete\", \"remove\", \"cancel\"],\r\n \"char\": \"❌\",\r\n \"category\": \"symbols\"\r\n },\r\n \"o\": {\r\n \"keywords\": [\"circle\", \"round\"],\r\n \"char\": \"⭕\",\r\n \"category\": \"symbols\"\r\n },\r\n \"anger\": {\r\n \"keywords\": [\"angry\", \"mad\"],\r\n \"char\": \"💢\",\r\n \"category\": \"symbols\"\r\n },\r\n \"hotsprings\": {\r\n \"keywords\": [\"bath\", \"warm\", \"relax\"],\r\n \"char\": \"♨️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"no_pedestrians\": {\r\n \"keywords\": [\"rules\", \"crossing\", \"walking\", \"circle\"],\r\n \"char\": \"🚷\",\r\n \"category\": \"symbols\"\r\n },\r\n \"do_not_litter\": {\r\n \"keywords\": [\"trash\", \"bin\", \"garbage\", \"circle\"],\r\n \"char\": \"🚯\",\r\n \"category\": \"symbols\"\r\n },\r\n \"no_bicycles\": {\r\n \"keywords\": [\"cyclist\", \"prohibited\", \"circle\"],\r\n \"char\": \"🚳\",\r\n \"category\": \"symbols\"\r\n },\r\n \"non-potable_water\": {\r\n \"keywords\": [\"drink\", \"faucet\", \"tap\", \"circle\"],\r\n \"char\": \"🚱\",\r\n \"category\": \"symbols\"\r\n },\r\n \"underage\": {\r\n \"keywords\": [\"18\", \"drink\", \"pub\", \"night\", \"minor\", \"circle\"],\r\n \"char\": \"🔞\",\r\n \"category\": \"symbols\"\r\n },\r\n \"no_mobile_phones\": {\r\n \"keywords\": [\"iphone\", \"mute\", \"circle\"],\r\n \"char\": \"📵\",\r\n \"category\": \"symbols\"\r\n },\r\n \"exclamation\": {\r\n \"keywords\": [\"heavy_exclamation_mark\", \"danger\", \"surprise\", \"punctuation\", \"wow\", \"warning\"],\r\n \"char\": \"❗\",\r\n \"category\": \"symbols\"\r\n },\r\n \"grey_exclamation\": {\r\n \"keywords\": [\"surprise\", \"punctuation\", \"gray\", \"wow\", \"warning\"],\r\n \"char\": \"❕\",\r\n \"category\": \"symbols\"\r\n },\r\n \"question\": {\r\n \"keywords\": [\"doubt\", \"confused\"],\r\n \"char\": \"❓\",\r\n \"category\": \"symbols\"\r\n },\r\n \"grey_question\": {\r\n \"keywords\": [\"doubts\", \"gray\", \"huh\", \"confused\"],\r\n \"char\": \"❔\",\r\n \"category\": \"symbols\"\r\n },\r\n \"bangbang\": {\r\n \"keywords\": [\"exclamation\", \"surprise\"],\r\n \"char\": \"‼️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"interrobang\": {\r\n \"keywords\": [\"wat\", \"punctuation\", \"surprise\"],\r\n \"char\": \"⁉️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"100\": {\r\n \"keywords\": [\"score\", \"perfect\", \"numbers\", \"century\", \"exam\", \"quiz\", \"test\", \"pass\", \"hundred\"],\r\n \"char\": \"💯\",\r\n \"category\": \"symbols\"\r\n },\r\n \"low_brightness\": {\r\n \"keywords\": [\"sun\", \"afternoon\", \"warm\", \"summer\"],\r\n \"char\": \"🔅\",\r\n \"category\": \"symbols\"\r\n },\r\n \"high_brightness\": {\r\n \"keywords\": [\"sun\", \"light\"],\r\n \"char\": \"🔆\",\r\n \"category\": \"symbols\"\r\n },\r\n \"trident\": {\r\n \"keywords\": [\"weapon\", \"spear\"],\r\n \"char\": \"🔱\",\r\n \"category\": \"symbols\"\r\n },\r\n \"fleur_de_lis\": {\r\n \"keywords\": [\"decorative\", \"scout\"],\r\n \"char\": \"⚜\",\r\n \"category\": \"symbols\"\r\n },\r\n \"part_alternation_mark\": {\r\n \"keywords\": [\"graph\", \"presentation\", \"stats\", \"business\", \"economics\", \"bad\"],\r\n \"char\": \"〽️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"warning\": {\r\n \"keywords\": [\"exclamation\", \"wip\", \"alert\", \"error\", \"problem\", \"issue\"],\r\n \"char\": \"⚠️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"children_crossing\": {\r\n \"keywords\": [\"school\", \"warning\", \"danger\", \"sign\", \"driving\", \"yellow-diamond\"],\r\n \"char\": \"🚸\",\r\n \"category\": \"symbols\"\r\n },\r\n \"beginner\": {\r\n \"keywords\": [\"badge\", \"shield\"],\r\n \"char\": \"🔰\",\r\n \"category\": \"symbols\"\r\n },\r\n \"recycle\": {\r\n \"keywords\": [\"arrow\", \"environment\", \"garbage\", \"trash\"],\r\n \"char\": \"♻️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"u6307\": {\r\n \"keywords\": [\"chinese\", \"point\", \"green-square\", \"kanji\"],\r\n \"char\": \"🈯\",\r\n \"category\": \"symbols\"\r\n },\r\n \"chart\": {\r\n \"keywords\": [\"green-square\", \"graph\", \"presentation\", \"stats\"],\r\n \"char\": \"💹\",\r\n \"category\": \"symbols\"\r\n },\r\n \"sparkle\": {\r\n \"keywords\": [\"stars\", \"green-square\", \"awesome\", \"good\", \"fireworks\"],\r\n \"char\": \"❇️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"eight_spoked_asterisk\": {\r\n \"keywords\": [\"star\", \"sparkle\", \"green-square\"],\r\n \"char\": \"✳️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"negative_squared_cross_mark\": {\r\n \"keywords\": [\"x\", \"green-square\", \"no\", \"deny\"],\r\n \"char\": \"❎\",\r\n \"category\": \"symbols\"\r\n },\r\n \"white_check_mark\": {\r\n \"keywords\": [\"green-square\", \"ok\", \"agree\", \"vote\", \"election\", \"answer\"],\r\n \"char\": \"✅\",\r\n \"category\": \"symbols\"\r\n },\r\n \"diamond_shape_with_a_dot_inside\": {\r\n \"keywords\": [\"jewel\", \"blue\", \"gem\", \"crystal\", \"fancy\"],\r\n \"char\": \"💠\",\r\n \"category\": \"symbols\"\r\n },\r\n \"cyclone\": {\r\n \"keywords\": [\"weather\", \"swirl\", \"blue\", \"cloud\", \"vortex\", \"spiral\", \"whirlpool\", \"spin\"],\r\n \"char\": \"🌀\",\r\n \"category\": \"symbols\"\r\n },\r\n \"loop\": {\r\n \"keywords\": [\"tape\", \"cassette\"],\r\n \"char\": \"➿\",\r\n \"category\": \"symbols\"\r\n },\r\n \"globe_with_meridians\": {\r\n \"keywords\": [\"earth\", \"international\", \"world\", \"internet\", \"interweb\", \"i18n\"],\r\n \"char\": \"🌐\",\r\n \"category\": \"symbols\"\r\n },\r\n \"m\": {\r\n \"keywords\": [\"alphabet\", \"blue-circle\", \"letter\"],\r\n \"char\": \"Ⓜ️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"atm\": {\r\n \"keywords\": [\"money\", \"sales\", \"cash\", \"blue-square\", \"payment\", \"bank\"],\r\n \"char\": \"🏧\",\r\n \"category\": \"symbols\"\r\n },\r\n \"sa\": {\r\n \"keywords\": [\"japanese\", \"blue-square\", \"katakana\"],\r\n \"char\": \"🈂️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"passport_control\": {\r\n \"keywords\": [\"custom\", \"blue-square\"],\r\n \"char\": \"🛂\",\r\n \"category\": \"symbols\"\r\n },\r\n \"customs\": {\r\n \"keywords\": [\"passport\", \"border\", \"blue-square\"],\r\n \"char\": \"🛃\",\r\n \"category\": \"symbols\"\r\n },\r\n \"baggage_claim\": {\r\n \"keywords\": [\"blue-square\", \"airport\", \"transport\"],\r\n \"char\": \"🛄\",\r\n \"category\": \"symbols\"\r\n },\r\n \"left_luggage\": {\r\n \"keywords\": [\"blue-square\", \"travel\"],\r\n \"char\": \"🛅\",\r\n \"category\": \"symbols\"\r\n },\r\n \"wheelchair\": {\r\n \"keywords\": [\"blue-square\", \"disabled\", \"a11y\", \"accessibility\"],\r\n \"char\": \"♿\",\r\n \"category\": \"symbols\"\r\n },\r\n \"no_smoking\": {\r\n \"keywords\": [\"cigarette\", \"blue-square\", \"smell\", \"smoke\"],\r\n \"char\": \"🚭\",\r\n \"category\": \"symbols\"\r\n },\r\n \"wc\": {\r\n \"keywords\": [\"toilet\", \"restroom\", \"blue-square\"],\r\n \"char\": \"🚾\",\r\n \"category\": \"symbols\"\r\n },\r\n \"parking\": {\r\n \"keywords\": [\"cars\", \"blue-square\", \"alphabet\", \"letter\"],\r\n \"char\": \"🅿️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"potable_water\": {\r\n \"keywords\": [\"blue-square\", \"liquid\", \"restroom\", \"cleaning\", \"faucet\"],\r\n \"char\": \"🚰\",\r\n \"category\": \"symbols\"\r\n },\r\n \"mens\": {\r\n \"keywords\": [\"toilet\", \"restroom\", \"wc\", \"blue-square\", \"gender\", \"male\"],\r\n \"char\": \"🚹\",\r\n \"category\": \"symbols\"\r\n },\r\n \"womens\": {\r\n \"keywords\": [\"purple-square\", \"woman\", \"female\", \"toilet\", \"loo\", \"restroom\", \"gender\"],\r\n \"char\": \"🚺\",\r\n \"category\": \"symbols\"\r\n },\r\n \"baby_symbol\": {\r\n \"keywords\": [\"orange-square\", \"child\"],\r\n \"char\": \"🚼\",\r\n \"category\": \"symbols\"\r\n },\r\n \"restroom\": {\r\n \"keywords\": [\"blue-square\", \"toilet\", \"refresh\", \"wc\", \"gender\"],\r\n \"char\": \"🚻\",\r\n \"category\": \"symbols\"\r\n },\r\n \"put_litter_in_its_place\": {\r\n \"keywords\": [\"blue-square\", \"sign\", \"human\", \"info\"],\r\n \"char\": \"🚮\",\r\n \"category\": \"symbols\"\r\n },\r\n \"cinema\": {\r\n \"keywords\": [\"blue-square\", \"record\", \"film\", \"movie\", \"curtain\", \"stage\", \"theater\"],\r\n \"char\": \"🎦\",\r\n \"category\": \"symbols\"\r\n },\r\n \"signal_strength\": {\r\n \"keywords\": [\"blue-square\", \"reception\", \"phone\", \"internet\", \"connection\", \"wifi\", \"bluetooth\", \"bars\"],\r\n \"char\": \"📶\",\r\n \"category\": \"symbols\"\r\n },\r\n \"koko\": {\r\n \"keywords\": [\"blue-square\", \"here\", \"katakana\", \"japanese\", \"destination\"],\r\n \"char\": \"🈁\",\r\n \"category\": \"symbols\"\r\n },\r\n \"ng\": {\r\n \"keywords\": [\"blue-square\", \"words\", \"shape\", \"icon\"],\r\n \"char\": \"🆖\",\r\n \"category\": \"symbols\"\r\n },\r\n \"ok\": {\r\n \"keywords\": [\"good\", \"agree\", \"yes\", \"blue-square\"],\r\n \"char\": \"🆗\",\r\n \"category\": \"symbols\"\r\n },\r\n \"up\": {\r\n \"keywords\": [\"blue-square\", \"above\", \"high\"],\r\n \"char\": \"🆙\",\r\n \"category\": \"symbols\"\r\n },\r\n \"cool\": {\r\n \"keywords\": [\"words\", \"blue-square\"],\r\n \"char\": \"🆒\",\r\n \"category\": \"symbols\"\r\n },\r\n \"new\": {\r\n \"keywords\": [\"blue-square\", \"words\", \"start\"],\r\n \"char\": \"🆕\",\r\n \"category\": \"symbols\"\r\n },\r\n \"free\": {\r\n \"keywords\": [\"blue-square\", \"words\"],\r\n \"char\": \"🆓\",\r\n \"category\": \"symbols\"\r\n },\r\n \"zero\": {\r\n \"keywords\": [\"0\", \"numbers\", \"blue-square\", \"null\"],\r\n \"char\": \"0️⃣\",\r\n \"category\": \"symbols\"\r\n },\r\n \"one\": {\r\n \"keywords\": [\"blue-square\", \"numbers\", \"1\"],\r\n \"char\": \"1️⃣\",\r\n \"category\": \"symbols\"\r\n },\r\n \"two\": {\r\n \"keywords\": [\"numbers\", \"2\", \"prime\", \"blue-square\"],\r\n \"char\": \"2️⃣\",\r\n \"category\": \"symbols\"\r\n },\r\n \"three\": {\r\n \"keywords\": [\"3\", \"numbers\", \"prime\", \"blue-square\"],\r\n \"char\": \"3️⃣\",\r\n \"category\": \"symbols\"\r\n },\r\n \"four\": {\r\n \"keywords\": [\"4\", \"numbers\", \"blue-square\"],\r\n \"char\": \"4️⃣\",\r\n \"category\": \"symbols\"\r\n },\r\n \"five\": {\r\n \"keywords\": [\"5\", \"numbers\", \"blue-square\", \"prime\"],\r\n \"char\": \"5️⃣\",\r\n \"category\": \"symbols\"\r\n },\r\n \"six\": {\r\n \"keywords\": [\"6\", \"numbers\", \"blue-square\"],\r\n \"char\": \"6️⃣\",\r\n \"category\": \"symbols\"\r\n },\r\n \"seven\": {\r\n \"keywords\": [\"7\", \"numbers\", \"blue-square\", \"prime\"],\r\n \"char\": \"7️⃣\",\r\n \"category\": \"symbols\"\r\n },\r\n \"eight\": {\r\n \"keywords\": [\"8\", \"blue-square\", \"numbers\"],\r\n \"char\": \"8️⃣\",\r\n \"category\": \"symbols\"\r\n },\r\n \"nine\": {\r\n \"keywords\": [\"blue-square\", \"numbers\", \"9\"],\r\n \"char\": \"9️⃣\",\r\n \"category\": \"symbols\"\r\n },\r\n \"keycap_ten\": {\r\n \"keywords\": [\"numbers\", \"10\", \"blue-square\"],\r\n \"char\": \"🔟\",\r\n \"category\": \"symbols\"\r\n },\r\n \"keycap_star\": {\r\n \"keywords\": [\"asterisk\"],\r\n \"char\": \"*⃣\",\r\n \"category\": \"symbols\"\r\n },\r\n \"1234\": {\r\n \"keywords\": [\"numbers\", \"blue-square\"],\r\n \"char\": \"🔢\",\r\n \"category\": \"symbols\"\r\n },\r\n \"arrow_forward\": {\r\n \"keywords\": [\"blue-square\", \"right\", \"direction\", \"play\"],\r\n \"char\": \"▶️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"double_vertical_bar\": {\r\n \"keywords\": [\"pause\", \"blue-square\"],\r\n \"char\": \"⏸\",\r\n \"category\": \"symbols\"\r\n },\r\n \"black_right_pointing_triangle_with_double_vertical_bar\": {\r\n \"keywords\": [\"forward\", \"next\", \"blue-square\"],\r\n \"char\": \"⏭\",\r\n \"category\": \"symbols\"\r\n },\r\n \"black_square_for_stop\": {\r\n \"keywords\": [\"blue-square\"],\r\n \"char\": \"⏹\",\r\n \"category\": \"symbols\"\r\n },\r\n \"black_circle_for_record\": {\r\n \"keywords\": [\"blue-square\"],\r\n \"char\": \"⏺\",\r\n \"category\": \"symbols\"\r\n },\r\n \"black_right_pointing_double_triangle_with_vertical_bar\": {\r\n \"keywords\": [\"blue-square\", \"play\", \"pause\"],\r\n \"char\": \"⏯\",\r\n \"category\": \"symbols\"\r\n },\r\n \"black_left_pointing_double_triangle_with_vertical_bar\": {\r\n \"keywords\": [\"backward\"],\r\n \"char\": \"⏮\",\r\n \"category\": \"symbols\"\r\n },\r\n \"fast_forward\": {\r\n \"keywords\": [\"blue-square\", \"play\", \"speed\", \"continue\"],\r\n \"char\": \"⏩\",\r\n \"category\": \"symbols\"\r\n },\r\n \"rewind\": {\r\n \"keywords\": [\"play\", \"blue-square\"],\r\n \"char\": \"⏪\",\r\n \"category\": \"symbols\"\r\n },\r\n \"twisted_rightwards_arrows\": {\r\n \"keywords\": [\"blue-square\", \"shuffle\", \"music\", \"random\"],\r\n \"char\": \"🔀\",\r\n \"category\": \"symbols\"\r\n },\r\n \"repeat\": {\r\n \"keywords\": [\"loop\", \"record\"],\r\n \"char\": \"🔁\",\r\n \"category\": \"symbols\"\r\n },\r\n \"repeat_one\": {\r\n \"keywords\": [\"blue-square\", \"loop\"],\r\n \"char\": \"🔂\",\r\n \"category\": \"symbols\"\r\n },\r\n \"arrow_backward\": {\r\n \"keywords\": [\"blue-square\", \"left\", \"direction\"],\r\n \"char\": \"◀️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"arrow_up_small\": {\r\n \"keywords\": [\"blue-square\", \"triangle\", \"direction\", \"point\", \"forward\", \"top\"],\r\n \"char\": \"🔼\",\r\n \"category\": \"symbols\"\r\n },\r\n \"arrow_down_small\": {\r\n \"keywords\": [\"blue-square\", \"direction\", \"bottom\"],\r\n \"char\": \"🔽\",\r\n \"category\": \"symbols\"\r\n },\r\n \"arrow_double_up\": {\r\n \"keywords\": [\"blue-square\", \"direction\", \"top\"],\r\n \"char\": \"⏫\",\r\n \"category\": \"symbols\"\r\n },\r\n \"arrow_double_down\": {\r\n \"keywords\": [\"blue-square\", \"direction\", \"bottom\"],\r\n \"char\": \"⏬\",\r\n \"category\": \"symbols\"\r\n },\r\n \"arrow_right\": {\r\n \"keywords\": [\"blue-square\", \"next\"],\r\n \"char\": \"➡️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"arrow_left\": {\r\n \"keywords\": [\"blue-square\", \"previous\", \"back\"],\r\n \"char\": \"⬅️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"arrow_up\": {\r\n \"keywords\": [\"blue-square\", \"continue\", \"top\", \"direction\"],\r\n \"char\": \"⬆️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"arrow_down\": {\r\n \"keywords\": [\"blue-square\", \"direction\", \"bottom\"],\r\n \"char\": \"⬇️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"arrow_upper_right\": {\r\n \"keywords\": [\"blue-square\", \"point\", \"direction\", \"diagonal\", \"northeast\"],\r\n \"char\": \"↗️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"arrow_lower_right\": {\r\n \"keywords\": [\"blue-square\", \"direction\", \"diagonal\", \"southeast\"],\r\n \"char\": \"↘️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"arrow_lower_left\": {\r\n \"keywords\": [\"blue-square\", \"direction\", \"diagonal\", \"southwest\"],\r\n \"char\": \"↙️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"arrow_upper_left\": {\r\n \"keywords\": [\"blue-square\", \"point\", \"direction\", \"diagonal\", \"northwest\"],\r\n \"char\": \"↖️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"arrow_up_down\": {\r\n \"keywords\": [\"blue-square\", \"direction\", \"way\", \"vertical\"],\r\n \"char\": \"↕️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"left_right_arrow\": {\r\n \"keywords\": [\"shape\", \"direction\", \"horizontal\", \"sideways\"],\r\n \"char\": \"↔️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"arrows_counterclockwise\": {\r\n \"keywords\": [\"blue-square\", \"sync\", \"cycle\"],\r\n \"char\": \"🔄\",\r\n \"category\": \"symbols\"\r\n },\r\n \"arrow_right_hook\": {\r\n \"keywords\": [\"blue-square\", \"return\", \"rotate\", \"direction\"],\r\n \"char\": \"↪️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"leftwards_arrow_with_hook\": {\r\n \"keywords\": [\"back\", \"return\", \"blue-square\", \"undo\", \"enter\"],\r\n \"char\": \"↩️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"arrow_heading_up\": {\r\n \"keywords\": [\"blue-square\", \"direction\", \"top\"],\r\n \"char\": \"⤴️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"arrow_heading_down\": {\r\n \"keywords\": [\"blue-square\", \"direction\", \"bottom\"],\r\n \"char\": \"⤵️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"hash\": {\r\n \"keywords\": [\"symbol\", \"blue-square\", \"twitter\"],\r\n \"char\": \"#️⃣\",\r\n \"category\": \"symbols\"\r\n },\r\n \"information_source\": {\r\n \"keywords\": [\"blue-square\", \"alphabet\", \"letter\"],\r\n \"char\": \"ℹ️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"abc\": {\r\n \"keywords\": [\"blue-square\", \"alphabet\"],\r\n \"char\": \"🔤\",\r\n \"category\": \"symbols\"\r\n },\r\n \"abcd\": {\r\n \"keywords\": [\"blue-square\", \"alphabet\"],\r\n \"char\": \"🔡\",\r\n \"category\": \"symbols\"\r\n },\r\n \"capital_abcd\": {\r\n \"keywords\": [\"alphabet\", \"words\", \"blue-square\"],\r\n \"char\": \"🔠\",\r\n \"category\": \"symbols\"\r\n },\r\n \"symbols\": {\r\n \"keywords\": [\"blue-square\", \"music\", \"note\", \"ampersand\", \"percent\", \"glyphs\", \"characters\"],\r\n \"char\": \"🔣\",\r\n \"category\": \"symbols\"\r\n },\r\n \"musical_note\": {\r\n \"keywords\": [\"score\", \"tone\", \"sound\"],\r\n \"char\": \"🎵\",\r\n \"category\": \"symbols\"\r\n },\r\n \"notes\": {\r\n \"keywords\": [\"music\", \"score\"],\r\n \"char\": \"🎶\",\r\n \"category\": \"symbols\"\r\n },\r\n \"wavy_dash\": {\r\n \"keywords\": [\"draw\", \"line\", \"moustache\", \"mustache\", \"squiggle\", \"scribble\"],\r\n \"char\": \"〰️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"curly_loop\": {\r\n \"keywords\": [\"scribble\", \"draw\", \"shape\", \"squiggle\"],\r\n \"char\": \"➰\",\r\n \"category\": \"symbols\"\r\n },\r\n \"heavy_check_mark\": {\r\n \"keywords\": [\"ok\", \"nike\", \"answer\", \"yes\", \"tick\"],\r\n \"char\": \"✔️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"arrows_clockwise\": {\r\n \"keywords\": [\"sync\", \"cycle\", \"round\", \"repeat\"],\r\n \"char\": \"🔃\",\r\n \"category\": \"symbols\"\r\n },\r\n \"heavy_plus_sign\": {\r\n \"keywords\": [\"math\", \"calculation\", \"addition\", \"more\", \"increase\"],\r\n \"char\": \"➕\",\r\n \"category\": \"symbols\"\r\n },\r\n \"heavy_minus_sign\": {\r\n \"keywords\": [\"math\", \"calculation\", \"subtract\", \"less\"],\r\n \"char\": \"➖\",\r\n \"category\": \"symbols\"\r\n },\r\n \"heavy_division_sign\": {\r\n \"keywords\": [\"divide\", \"math\", \"calculation\"],\r\n \"char\": \"➗\",\r\n \"category\": \"symbols\"\r\n },\r\n \"heavy_multiplication_x\": {\r\n \"keywords\": [\"math\", \"calculation\"],\r\n \"char\": \"✖️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"heavy_dollar_sign\": {\r\n \"keywords\": [\"money\", \"sales\", \"payment\", \"currency\", \"buck\"],\r\n \"char\": \"💲\",\r\n \"category\": \"symbols\"\r\n },\r\n \"currency_exchange\": {\r\n \"keywords\": [\"money\", \"sales\", \"dollar\", \"travel\"],\r\n \"char\": \"💱\",\r\n \"category\": \"symbols\"\r\n },\r\n \"copyright\": {\r\n \"keywords\": [\"ip\", \"license\", \"circle\", \"law\", \"legal\"],\r\n \"char\": \"©️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"registered\": {\r\n \"keywords\": [\"alphabet\", \"circle\"],\r\n \"char\": \"®️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"tm\": {\r\n \"keywords\": [\"trademark\", \"brand\", \"law\", \"legal\"],\r\n \"char\": \"™️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"end\": {\r\n \"keywords\": [\"words\", \"arrow\"],\r\n \"char\": \"🔚\",\r\n \"category\": \"symbols\"\r\n },\r\n \"back\": {\r\n \"keywords\": [\"arrow\", \"words\", \"return\"],\r\n \"char\": \"🔙\",\r\n \"category\": \"symbols\"\r\n },\r\n \"on\": {\r\n \"keywords\": [\"arrow\", \"words\"],\r\n \"char\": \"🔛\",\r\n \"category\": \"symbols\"\r\n },\r\n \"top\": {\r\n \"keywords\": [\"words\", \"blue-square\"],\r\n \"char\": \"🔝\",\r\n \"category\": \"symbols\"\r\n },\r\n \"soon\": {\r\n \"keywords\": [\"arrow\", \"words\"],\r\n \"char\": \"🔜\",\r\n \"category\": \"symbols\"\r\n },\r\n \"ballot_box_with_check\": {\r\n \"keywords\": [\"ok\", \"agree\", \"confirm\", \"black-square\", \"vote\", \"election\", \"yes\"],\r\n \"char\": \"☑️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"radio_button\": {\r\n \"keywords\": [\"input\", \"old\", \"music\", \"circle\"],\r\n \"char\": \"🔘\",\r\n \"category\": \"symbols\"\r\n },\r\n \"white_circle\": {\r\n \"keywords\": [\"shape\", \"round\"],\r\n \"char\": \"⚪\",\r\n \"category\": \"symbols\"\r\n },\r\n \"black_circle\": {\r\n \"keywords\": [\"shape\", \"button\", \"round\"],\r\n \"char\": \"⚫\",\r\n \"category\": \"symbols\"\r\n },\r\n \"red_circle\": {\r\n \"keywords\": [\"shape\", \"error\", \"danger\"],\r\n \"char\": \"🔴\",\r\n \"category\": \"symbols\"\r\n },\r\n \"large_blue_circle\": {\r\n \"keywords\": [\"shape\", \"icon\", \"button\"],\r\n \"char\": \"🔵\",\r\n \"category\": \"symbols\"\r\n },\r\n \"small_orange_diamond\": {\r\n \"keywords\": [\"shape\", \"jewel\", \"gem\"],\r\n \"char\": \"🔸\",\r\n \"category\": \"symbols\"\r\n },\r\n \"small_blue_diamond\": {\r\n \"keywords\": [\"shape\", \"jewel\", \"gem\"],\r\n \"char\": \"🔹\",\r\n \"category\": \"symbols\"\r\n },\r\n \"large_orange_diamond\": {\r\n \"keywords\": [\"shape\", \"jewel\", \"gem\"],\r\n \"char\": \"🔶\",\r\n \"category\": \"symbols\"\r\n },\r\n \"large_blue_diamond\": {\r\n \"keywords\": [\"shape\", \"jewel\", \"gem\"],\r\n \"char\": \"🔷\",\r\n \"category\": \"symbols\"\r\n },\r\n \"small_red_triangle\": {\r\n \"keywords\": [\"shape\", \"direction\", \"up\", \"top\"],\r\n \"char\": \"🔺\",\r\n \"category\": \"symbols\"\r\n },\r\n \"black_small_square\": {\r\n \"keywords\": [\"shape\", \"icon\"],\r\n \"char\": \"▪️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"white_small_square\": {\r\n \"keywords\": [\"shape\", \"icon\"],\r\n \"char\": \"▫️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"black_large_square\": {\r\n \"keywords\": [\"shape\", \"icon\", \"button\"],\r\n \"char\": \"⬛\",\r\n \"category\": \"symbols\"\r\n },\r\n \"white_large_square\": {\r\n \"keywords\": [\"shape\", \"icon\", \"stone\", \"button\"],\r\n \"char\": \"⬜\",\r\n \"category\": \"symbols\"\r\n },\r\n \"small_red_triangle_down\": {\r\n \"keywords\": [\"shape\", \"direction\", \"bottom\"],\r\n \"char\": \"🔻\",\r\n \"category\": \"symbols\"\r\n },\r\n \"black_medium_square\": {\r\n \"keywords\": [\"shape\", \"button\", \"icon\"],\r\n \"char\": \"◼️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"white_medium_square\": {\r\n \"keywords\": [\"shape\", \"stone\", \"icon\"],\r\n \"char\": \"◻️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"black_medium_small_square\": {\r\n \"keywords\": [\"icon\", \"shape\", \"button\"],\r\n \"char\": \"◾\",\r\n \"category\": \"symbols\"\r\n },\r\n \"white_medium_small_square\": {\r\n \"keywords\": [\"shape\", \"stone\", \"icon\", \"button\"],\r\n \"char\": \"◽\",\r\n \"category\": \"symbols\"\r\n },\r\n \"black_square_button\": {\r\n \"keywords\": [\"shape\", \"input\", \"frame\"],\r\n \"char\": \"🔲\",\r\n \"category\": \"symbols\"\r\n },\r\n \"white_square_button\": {\r\n \"keywords\": [\"shape\", \"input\"],\r\n \"char\": \"🔳\",\r\n \"category\": \"symbols\"\r\n },\r\n \"speaker\": {\r\n \"keywords\": [\"sound\", \"volume\", \"silence\", \"broadcast\"],\r\n \"char\": \"🔈\",\r\n \"category\": \"symbols\"\r\n },\r\n \"sound\": {\r\n \"keywords\": [\"volume\", \"speaker\", \"broadcast\"],\r\n \"char\": \"🔉\",\r\n \"category\": \"symbols\"\r\n },\r\n \"loud_sound\": {\r\n \"keywords\": [\"volume\", \"noise\", \"noisy\", \"speaker\", \"broadcast\"],\r\n \"char\": \"🔊\",\r\n \"category\": \"symbols\"\r\n },\r\n \"mute\": {\r\n \"keywords\": [\"sound\", \"volume\", \"silence\", \"quiet\"],\r\n \"char\": \"🔇\",\r\n \"category\": \"symbols\"\r\n },\r\n \"mega\": {\r\n \"keywords\": [\"sound\", \"speaker\", \"volume\"],\r\n \"char\": \"📣\",\r\n \"category\": \"symbols\"\r\n },\r\n \"loudspeaker\": {\r\n \"keywords\": [\"volume\", \"sound\"],\r\n \"char\": \"📢\",\r\n \"category\": \"symbols\"\r\n },\r\n \"bell\": {\r\n \"keywords\": [\"sound\", \"notification\", \"christmas\", \"xmas\", \"chime\"],\r\n \"char\": \"🔔\",\r\n \"category\": \"symbols\"\r\n },\r\n \"no_bell\": {\r\n \"keywords\": [\"sound\", \"volume\", \"mute\", \"quiet\", \"silent\"],\r\n \"char\": \"🔕\",\r\n \"category\": \"symbols\"\r\n },\r\n \"black_joker\": {\r\n \"keywords\": [\"poker\", \"cards\", \"game\", \"play\", \"magic\"],\r\n \"char\": \"🃏\",\r\n \"category\": \"symbols\"\r\n },\r\n \"mahjong\": {\r\n \"keywords\": [\"game\", \"play\", \"chinese\", \"kanji\"],\r\n \"char\": \"🀄\",\r\n \"category\": \"symbols\"\r\n },\r\n \"spades\": {\r\n \"keywords\": [\"poker\", \"cards\", \"suits\", \"magic\"],\r\n \"char\": \"♠️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"clubs\": {\r\n \"keywords\": [\"poker\", \"cards\", \"magic\", \"suits\"],\r\n \"char\": \"♣️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"hearts\": {\r\n \"keywords\": [\"poker\", \"cards\", \"magic\", \"suits\"],\r\n \"char\": \"♥️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"diamonds\": {\r\n \"keywords\": [\"poker\", \"cards\", \"magic\", \"suits\"],\r\n \"char\": \"♦️\",\r\n \"category\": \"symbols\"\r\n },\r\n \"flower_playing_cards\": {\r\n \"keywords\": [\"game\", \"sunset\", \"red\"],\r\n \"char\": \"🎴\",\r\n \"category\": \"symbols\"\r\n },\r\n \"thought_balloon\": {\r\n \"keywords\": [\"bubble\", \"cloud\", \"speech\", \"thinking\"],\r\n \"char\": \"💭\",\r\n \"category\": \"symbols\"\r\n },\r\n \"right_anger_bubble\": {\r\n \"keywords\": [\"caption\", \"speech\", \"thinking\", \"mad\"],\r\n \"char\": \"🗯\",\r\n \"category\": \"symbols\"\r\n },\r\n \"speech_balloon\": {\r\n \"keywords\": [\"bubble\", \"words\", \"message\", \"talk\", \"chatting\"],\r\n \"char\": \"💬\",\r\n \"category\": \"symbols\"\r\n },\r\n \"left_speech_bubble\": {\r\n \"keywords\": [\"words\", \"message\", \"talk\", \"chatting\"],\r\n \"char\": \"🗨\",\r\n \"category\": \"symbols\"\r\n },\r\n \"clock1\": {\r\n \"keywords\": [\"time\", \"late\", \"early\", \"schedule\"],\r\n \"char\": \"🕐\",\r\n \"category\": \"symbols\"\r\n },\r\n \"clock2\": {\r\n \"keywords\": [\"time\", \"late\", \"early\", \"schedule\"],\r\n \"char\": \"🕑\",\r\n \"category\": \"symbols\"\r\n },\r\n \"clock3\": {\r\n \"keywords\": [\"time\", \"late\", \"early\", \"schedule\"],\r\n \"char\": \"🕒\",\r\n \"category\": \"symbols\"\r\n },\r\n \"clock4\": {\r\n \"keywords\": [\"time\", \"late\", \"early\", \"schedule\"],\r\n \"char\": \"🕓\",\r\n \"category\": \"symbols\"\r\n },\r\n \"clock5\": {\r\n \"keywords\": [\"time\", \"late\", \"early\", \"schedule\"],\r\n \"char\": \"🕔\",\r\n \"category\": \"symbols\"\r\n },\r\n \"clock6\": {\r\n \"keywords\": [\"time\", \"late\", \"early\", \"schedule\", \"dawn\", \"dusk\"],\r\n \"char\": \"🕕\",\r\n \"category\": \"symbols\"\r\n },\r\n \"clock7\": {\r\n \"keywords\": [\"time\", \"late\", \"early\", \"schedule\"],\r\n \"char\": \"🕖\",\r\n \"category\": \"symbols\"\r\n },\r\n \"clock8\": {\r\n \"keywords\": [\"time\", \"late\", \"early\", \"schedule\"],\r\n \"char\": \"🕗\",\r\n \"category\": \"symbols\"\r\n },\r\n \"clock9\": {\r\n \"keywords\": [\"time\", \"late\", \"early\", \"schedule\"],\r\n \"char\": \"🕘\",\r\n \"category\": \"symbols\"\r\n },\r\n \"clock10\": {\r\n \"keywords\": [\"time\", \"late\", \"early\", \"schedule\"],\r\n \"char\": \"🕙\",\r\n \"category\": \"symbols\"\r\n },\r\n \"clock11\": {\r\n \"keywords\": [\"time\", \"late\", \"early\", \"schedule\"],\r\n \"char\": \"🕚\",\r\n \"category\": \"symbols\"\r\n },\r\n \"clock12\": {\r\n \"keywords\": [\"time\", \"noon\", \"midnight\", \"midday\", \"late\", \"early\", \"schedule\"],\r\n \"char\": \"🕛\",\r\n \"category\": \"symbols\"\r\n },\r\n \"clock130\": {\r\n \"keywords\": [\"time\", \"late\", \"early\", \"schedule\"],\r\n \"char\": \"🕜\",\r\n \"category\": \"symbols\"\r\n },\r\n \"clock230\": {\r\n \"keywords\": [\"time\", \"late\", \"early\", \"schedule\"],\r\n \"char\": \"🕝\",\r\n \"category\": \"symbols\"\r\n },\r\n \"clock330\": {\r\n \"keywords\": [\"time\", \"late\", \"early\", \"schedule\"],\r\n \"char\": \"🕞\",\r\n \"category\": \"symbols\"\r\n },\r\n \"clock430\": {\r\n \"keywords\": [\"time\", \"late\", \"early\", \"schedule\"],\r\n \"char\": \"🕟\",\r\n \"category\": \"symbols\"\r\n },\r\n \"clock530\": {\r\n \"keywords\": [\"time\", \"late\", \"early\", \"schedule\"],\r\n \"char\": \"🕠\",\r\n \"category\": \"symbols\"\r\n },\r\n \"clock630\": {\r\n \"keywords\": [\"time\", \"late\", \"early\", \"schedule\"],\r\n \"char\": \"🕡\",\r\n \"category\": \"symbols\"\r\n },\r\n \"clock730\": {\r\n \"keywords\": [\"time\", \"late\", \"early\", \"schedule\"],\r\n \"char\": \"🕢\",\r\n \"category\": \"symbols\"\r\n },\r\n \"clock830\": {\r\n \"keywords\": [\"time\", \"late\", \"early\", \"schedule\"],\r\n \"char\": \"🕣\",\r\n \"category\": \"symbols\"\r\n },\r\n \"clock930\": {\r\n \"keywords\": [\"time\", \"late\", \"early\", \"schedule\"],\r\n \"char\": \"🕤\",\r\n \"category\": \"symbols\"\r\n },\r\n \"clock1030\": {\r\n \"keywords\": [\"time\", \"late\", \"early\", \"schedule\"],\r\n \"char\": \"🕥\",\r\n \"category\": \"symbols\"\r\n },\r\n \"clock1130\": {\r\n \"keywords\": [\"time\", \"late\", \"early\", \"schedule\"],\r\n \"char\": \"🕦\",\r\n \"category\": \"symbols\"\r\n },\r\n \"clock1230\": {\r\n \"keywords\": [\"time\", \"late\", \"early\", \"schedule\"],\r\n \"char\": \"🕧\",\r\n \"category\": \"symbols\"\r\n },\r\n \"af\": {\r\n \"keywords\": [\"afghanistan\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇦🇫\",\r\n \"category\": \"flags\"\r\n },\r\n \"ax\": {\r\n \"keywords\": [\"Åland\", \"islands\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇦🇽\",\r\n \"category\": \"flags\"\r\n },\r\n \"al\": {\r\n \"keywords\": [\"albania\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇦🇱\",\r\n \"category\": \"flags\"\r\n },\r\n \"dz\": {\r\n \"keywords\": [\"algeria\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇩🇿\",\r\n \"category\": \"flags\"\r\n },\r\n \"as\": {\r\n \"keywords\": [\"american\", \"samoa\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇦🇸\",\r\n \"category\": \"flags\"\r\n },\r\n \"ad\": {\r\n \"keywords\": [\"andorra\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇦🇩\",\r\n \"category\": \"flags\"\r\n },\r\n \"ao\": {\r\n \"keywords\": [\"angola\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇦🇴\",\r\n \"category\": \"flags\"\r\n },\r\n \"ai\": {\r\n \"keywords\": [\"anguilla\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇦🇮\",\r\n \"category\": \"flags\"\r\n },\r\n \"aq\": {\r\n \"keywords\": [\"antarctica\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇦🇶\",\r\n \"category\": \"flags\"\r\n },\r\n \"ag\": {\r\n \"keywords\": [\"antigua\", \"barbuda\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇦🇬\",\r\n \"category\": \"flags\"\r\n },\r\n \"ar\": {\r\n \"keywords\": [\"argentina\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇦🇷\",\r\n \"category\": \"flags\"\r\n },\r\n \"am\": {\r\n \"keywords\": [\"armenia\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇦🇲\",\r\n \"category\": \"flags\"\r\n },\r\n \"aw\": {\r\n \"keywords\": [\"aruba\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇦🇼\",\r\n \"category\": \"flags\"\r\n },\r\n \"au\": {\r\n \"keywords\": [\"australia\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇦🇺\",\r\n \"category\": \"flags\"\r\n },\r\n \"at\": {\r\n \"keywords\": [\"austria\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇦🇹\",\r\n \"category\": \"flags\"\r\n },\r\n \"az\": {\r\n \"keywords\": [\"azerbaijan\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇦🇿\",\r\n \"category\": \"flags\"\r\n },\r\n \"bs\": {\r\n \"keywords\": [\"bahamas\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇧🇸\",\r\n \"category\": \"flags\"\r\n },\r\n \"bh\": {\r\n \"keywords\": [\"bahrain\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇧🇭\",\r\n \"category\": \"flags\"\r\n },\r\n \"bd\": {\r\n \"keywords\": [\"bangladesh\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇧🇩\",\r\n \"category\": \"flags\"\r\n },\r\n \"bb\": {\r\n \"keywords\": [\"barbados\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇧🇧\",\r\n \"category\": \"flags\"\r\n },\r\n \"by\": {\r\n \"keywords\": [\"belarus\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇧🇾\",\r\n \"category\": \"flags\"\r\n },\r\n \"be\": {\r\n \"keywords\": [\"belgium\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇧🇪\",\r\n \"category\": \"flags\"\r\n },\r\n \"bz\": {\r\n \"keywords\": [\"belize\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇧🇿\",\r\n \"category\": \"flags\"\r\n },\r\n \"bj\": {\r\n \"keywords\": [\"benin\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇧🇯\",\r\n \"category\": \"flags\"\r\n },\r\n \"bm\": {\r\n \"keywords\": [\"bermuda\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇧🇲\",\r\n \"category\": \"flags\"\r\n },\r\n \"bt\": {\r\n \"keywords\": [\"bhutan\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇧🇹\",\r\n \"category\": \"flags\"\r\n },\r\n \"bo\": {\r\n \"keywords\": [\"bolivia\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇧🇴\",\r\n \"category\": \"flags\"\r\n },\r\n \"bq\": {\r\n \"keywords\": [\"bonaire\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇧🇶\",\r\n \"category\": \"flags\"\r\n },\r\n \"ba\": {\r\n \"keywords\": [\"bosnia\", \"herzegovina\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇧🇦\",\r\n \"category\": \"flags\"\r\n },\r\n \"bw\": {\r\n \"keywords\": [\"botswana\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇧🇼\",\r\n \"category\": \"flags\"\r\n },\r\n \"br\": {\r\n \"keywords\": [\"brazil\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇧🇷\",\r\n \"category\": \"flags\"\r\n },\r\n \"io\": {\r\n \"keywords\": [\"british\", \"indian\", \"ocean\", \"territory\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇮🇴\",\r\n \"category\": \"flags\"\r\n },\r\n \"vg\": {\r\n \"keywords\": [\"british\", \"virgin\", \"islands\", \"bvi\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇻🇬\",\r\n \"category\": \"flags\"\r\n },\r\n \"bn\": {\r\n \"keywords\": [\"brunei\", \"darussalam\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇧🇳\",\r\n \"category\": \"flags\"\r\n },\r\n \"bg\": {\r\n \"keywords\": [\"bulgaria\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇧🇬\",\r\n \"category\": \"flags\"\r\n },\r\n \"bf\": {\r\n \"keywords\": [\"burkina\", \"faso\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇧🇫\",\r\n \"category\": \"flags\"\r\n },\r\n \"bi\": {\r\n \"keywords\": [\"burundi\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇧🇮\",\r\n \"category\": \"flags\"\r\n },\r\n \"cv\": {\r\n \"keywords\": [\"cabo\", \"verde\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇨🇻\",\r\n \"category\": \"flags\"\r\n },\r\n \"kh\": {\r\n \"keywords\": [\"cambodia\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇰🇭\",\r\n \"category\": \"flags\"\r\n },\r\n \"cm\": {\r\n \"keywords\": [\"cameroon\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇨🇲\",\r\n \"category\": \"flags\"\r\n },\r\n \"ca\": {\r\n \"keywords\": [\"canada\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇨🇦\",\r\n \"category\": \"flags\"\r\n },\r\n \"ic\": {\r\n \"keywords\": [\"canary\", \"islands\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇮🇨\",\r\n \"category\": \"flags\"\r\n },\r\n \"ky\": {\r\n \"keywords\": [\"cayman\", \"islands\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇰🇾\",\r\n \"category\": \"flags\"\r\n },\r\n \"cf\": {\r\n \"keywords\": [\"central\", \"african\", \"republic\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇨🇫\",\r\n \"category\": \"flags\"\r\n },\r\n \"td\": {\r\n \"keywords\": [\"chad\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇹🇩\",\r\n \"category\": \"flags\"\r\n },\r\n \"chile\": {\r\n \"keywords\": [\"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇨🇱\",\r\n \"category\": \"flags\"\r\n },\r\n \"cn\": {\r\n \"keywords\": [\"china\", \"chinese\", \"prc\", \"flag\", \"country\", \"nation\", \"banner\"],\r\n \"char\": \"🇨🇳\",\r\n \"category\": \"flags\"\r\n },\r\n \"cx\": {\r\n \"keywords\": [\"christmas\", \"island\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇨🇽\",\r\n \"category\": \"flags\"\r\n },\r\n \"cc\": {\r\n \"keywords\": [\"cocos\", \"keeling\", \"islands\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇨🇨\",\r\n \"category\": \"flags\"\r\n },\r\n \"co\": {\r\n \"keywords\": [\"colombia\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇨🇴\",\r\n \"category\": \"flags\"\r\n },\r\n \"km\": {\r\n \"keywords\": [\"comoros\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇰🇲\",\r\n \"category\": \"flags\"\r\n },\r\n \"cg\": {\r\n \"keywords\": [\"congo\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇨🇬\",\r\n \"category\": \"flags\"\r\n },\r\n \"drc\": {\r\n \"keywords\": [\"congo\", \"democratic\", \"republic\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇨🇩\",\r\n \"category\": \"flags\"\r\n },\r\n \"ck\": {\r\n \"keywords\": [\"cook\", \"islands\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇨🇰\",\r\n \"category\": \"flags\"\r\n },\r\n \"cr\": {\r\n \"keywords\": [\"costa\", \"rica\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇨🇷\",\r\n \"category\": \"flags\"\r\n },\r\n \"hr\": {\r\n \"keywords\": [\"croatia\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇭🇷\",\r\n \"category\": \"flags\"\r\n },\r\n \"cu\": {\r\n \"keywords\": [\"cuba\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇨🇺\",\r\n \"category\": \"flags\"\r\n },\r\n \"cw\": {\r\n \"keywords\": [\"curaçao\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇨🇼\",\r\n \"category\": \"flags\"\r\n },\r\n \"cy\": {\r\n \"keywords\": [\"cyprus\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇨🇾\",\r\n \"category\": \"flags\"\r\n },\r\n \"cz\": {\r\n \"keywords\": [\"czech_republic\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇨🇿\",\r\n \"category\": \"flags\"\r\n },\r\n \"dk\": {\r\n \"keywords\": [\"denmark\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇩🇰\",\r\n \"category\": \"flags\"\r\n },\r\n \"dj\": {\r\n \"keywords\": [\"djibouti\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇩🇯\",\r\n \"category\": \"flags\"\r\n },\r\n \"dm\": {\r\n \"keywords\": [\"dominica\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇩🇲\",\r\n \"category\": \"flags\"\r\n },\r\n \"do\": {\r\n \"keywords\": [\"dominican\", \"republic\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇩🇴\",\r\n \"category\": \"flags\"\r\n },\r\n \"ec\": {\r\n \"keywords\": [\"ecuador\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇪🇨\",\r\n \"category\": \"flags\"\r\n },\r\n \"eg\": {\r\n \"keywords\": [\"egypt\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇪🇬\",\r\n \"category\": \"flags\"\r\n },\r\n \"sv\": {\r\n \"keywords\": [\"el\", \"salvador\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇸🇻\",\r\n \"category\": \"flags\"\r\n },\r\n \"gq\": {\r\n \"keywords\": [\"equatorial\", \"guinea\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇬🇶\",\r\n \"category\": \"flags\"\r\n },\r\n \"er\": {\r\n \"keywords\": [\"eritrea\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇪🇷\",\r\n \"category\": \"flags\"\r\n },\r\n \"ee\": {\r\n \"keywords\": [\"estonia\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇪🇪\",\r\n \"category\": \"flags\"\r\n },\r\n \"et\": {\r\n \"keywords\": [\"ethiopia\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇪🇹\",\r\n \"category\": \"flags\"\r\n },\r\n \"eu\": {\r\n \"keywords\": [\"european\", \"union\", \"flag\", \"banner\"],\r\n \"char\": \"🇪🇺\",\r\n \"category\": \"flags\"\r\n },\r\n \"fk\": {\r\n \"keywords\": [\"falkland\", \"islands\", \"malvinas\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇫🇰\",\r\n \"category\": \"flags\"\r\n },\r\n \"fo\": {\r\n \"keywords\": [\"faroe\", \"islands\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇫🇴\",\r\n \"category\": \"flags\"\r\n },\r\n \"fj\": {\r\n \"keywords\": [\"fiji\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇫🇯\",\r\n \"category\": \"flags\"\r\n },\r\n \"fi\": {\r\n \"keywords\": [\"finland\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇫🇮\",\r\n \"category\": \"flags\"\r\n },\r\n \"fr\": {\r\n \"keywords\": [\"banner\", \"flag\", \"nation\", \"france\", \"french\", \"country\"],\r\n \"char\": \"🇫🇷\",\r\n \"category\": \"flags\"\r\n },\r\n \"gf\": {\r\n \"keywords\": [\"french\", \"guiana\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇬🇫\",\r\n \"category\": \"flags\"\r\n },\r\n \"pf\": {\r\n \"keywords\": [\"french\", \"polynesia\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇵🇫\",\r\n \"category\": \"flags\"\r\n },\r\n \"tf\": {\r\n \"keywords\": [\"french\", \"southern\", \"territories\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇹🇫\",\r\n \"category\": \"flags\"\r\n },\r\n \"ga\": {\r\n \"keywords\": [\"gabon\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇬🇦\",\r\n \"category\": \"flags\"\r\n },\r\n \"gm\": {\r\n \"keywords\": [\"gambia\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇬🇲\",\r\n \"category\": \"flags\"\r\n },\r\n \"ge\": {\r\n \"keywords\": [\"georgia\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇬🇪\",\r\n \"category\": \"flags\"\r\n },\r\n \"de\": {\r\n \"keywords\": [\"german\", \"nation\", \"flag\", \"country\", \"banner\"],\r\n \"char\": \"🇩🇪\",\r\n \"category\": \"flags\"\r\n },\r\n \"gh\": {\r\n \"keywords\": [\"ghana\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇬🇭\",\r\n \"category\": \"flags\"\r\n },\r\n \"gi\": {\r\n \"keywords\": [\"gibraltar\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇬🇮\",\r\n \"category\": \"flags\"\r\n },\r\n \"gr\": {\r\n \"keywords\": [\"greece\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇬🇷\",\r\n \"category\": \"flags\"\r\n },\r\n \"gl\": {\r\n \"keywords\": [\"greenland\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇬🇱\",\r\n \"category\": \"flags\"\r\n },\r\n \"gd\": {\r\n \"keywords\": [\"grenada\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇬🇩\",\r\n \"category\": \"flags\"\r\n },\r\n \"gp\": {\r\n \"keywords\": [\"guadeloupe\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇬🇵\",\r\n \"category\": \"flags\"\r\n },\r\n \"gu\": {\r\n \"keywords\": [\"guam\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇬🇺\",\r\n \"category\": \"flags\"\r\n },\r\n \"gt\": {\r\n \"keywords\": [\"guatemala\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇬🇹\",\r\n \"category\": \"flags\"\r\n },\r\n \"gg\": {\r\n \"keywords\": [\"guernsey\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇬🇬\",\r\n \"category\": \"flags\"\r\n },\r\n \"gn\": {\r\n \"keywords\": [\"guinea\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇬🇳\",\r\n \"category\": \"flags\"\r\n },\r\n \"gw\": {\r\n \"keywords\": [\"guinea\", \"bissau\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇬🇼\",\r\n \"category\": \"flags\"\r\n },\r\n \"gy\": {\r\n \"keywords\": [\"guyana\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇬🇾\",\r\n \"category\": \"flags\"\r\n },\r\n \"ht\": {\r\n \"keywords\": [\"haiti\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇭🇹\",\r\n \"category\": \"flags\"\r\n },\r\n \"hn\": {\r\n \"keywords\": [\"honduras\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇭🇳\",\r\n \"category\": \"flags\"\r\n },\r\n \"hk\": {\r\n \"keywords\": [\"hong\", \"kong\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇭🇰\",\r\n \"category\": \"flags\"\r\n },\r\n \"hu\": {\r\n \"keywords\": [\"hungary\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇭🇺\",\r\n \"category\": \"flags\"\r\n },\r\n \"is\": {\r\n \"keywords\": [\"iceland\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇮🇸\",\r\n \"category\": \"flags\"\r\n },\r\n \"in\": {\r\n \"keywords\": [\"india\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇮🇳\",\r\n \"category\": \"flags\"\r\n },\r\n \"indonesia\": {\r\n \"keywords\": [\"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇮🇩\",\r\n \"category\": \"flags\"\r\n },\r\n \"ir\": {\r\n \"keywords\": [\"iran,\", \"islamic\", \"republic\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇮🇷\",\r\n \"category\": \"flags\"\r\n },\r\n \"iq\": {\r\n \"keywords\": [\"iraq\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇮🇶\",\r\n \"category\": \"flags\"\r\n },\r\n \"ie\": {\r\n \"keywords\": [\"ireland\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇮🇪\",\r\n \"category\": \"flags\"\r\n },\r\n \"im\": {\r\n \"keywords\": [\"isle\", \"man\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇮🇲\",\r\n \"category\": \"flags\"\r\n },\r\n \"il\": {\r\n \"keywords\": [\"israel\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇮🇱\",\r\n \"category\": \"flags\"\r\n },\r\n \"it\": {\r\n \"keywords\": [\"italy\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇮🇹\",\r\n \"category\": \"flags\"\r\n },\r\n \"ci\": {\r\n \"keywords\": [\"ivory\", \"coast\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇨🇮\",\r\n \"category\": \"flags\"\r\n },\r\n \"jm\": {\r\n \"keywords\": [\"jamaica\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇯🇲\",\r\n \"category\": \"flags\"\r\n },\r\n \"jp\": {\r\n \"keywords\": [\"japanese\", \"nation\", \"flag\", \"country\", \"banner\"],\r\n \"char\": \"🇯🇵\",\r\n \"category\": \"flags\"\r\n },\r\n \"je\": {\r\n \"keywords\": [\"jersey\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇯🇪\",\r\n \"category\": \"flags\"\r\n },\r\n \"jo\": {\r\n \"keywords\": [\"jordan\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇯🇴\",\r\n \"category\": \"flags\"\r\n },\r\n \"kz\": {\r\n \"keywords\": [\"kazakhstan\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇰🇿\",\r\n \"category\": \"flags\"\r\n },\r\n \"ke\": {\r\n \"keywords\": [\"kenya\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇰🇪\",\r\n \"category\": \"flags\"\r\n },\r\n \"ki\": {\r\n \"keywords\": [\"kiribati\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇰🇮\",\r\n \"category\": \"flags\"\r\n },\r\n \"xk\": {\r\n \"keywords\": [\"kosovo\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇽🇰\",\r\n \"category\": \"flags\"\r\n },\r\n \"kw\": {\r\n \"keywords\": [\"kuwait\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇰🇼\",\r\n \"category\": \"flags\"\r\n },\r\n \"kg\": {\r\n \"keywords\": [\"kyrgyzstan\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇰🇬\",\r\n \"category\": \"flags\"\r\n },\r\n \"la\": {\r\n \"keywords\": [\"lao\", \"democratic\", \"republic\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇱🇦\",\r\n \"category\": \"flags\"\r\n },\r\n \"lv\": {\r\n \"keywords\": [\"latvia\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇱🇻\",\r\n \"category\": \"flags\"\r\n },\r\n \"lb\": {\r\n \"keywords\": [\"lebanon\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇱🇧\",\r\n \"category\": \"flags\"\r\n },\r\n \"ls\": {\r\n \"keywords\": [\"lesotho\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇱🇸\",\r\n \"category\": \"flags\"\r\n },\r\n \"lr\": {\r\n \"keywords\": [\"liberia\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇱🇷\",\r\n \"category\": \"flags\"\r\n },\r\n \"ly\": {\r\n \"keywords\": [\"libya\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇱🇾\",\r\n \"category\": \"flags\"\r\n },\r\n \"li\": {\r\n \"keywords\": [\"liechtenstein\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇱🇮\",\r\n \"category\": \"flags\"\r\n },\r\n \"lt\": {\r\n \"keywords\": [\"lithuania\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇱🇹\",\r\n \"category\": \"flags\"\r\n },\r\n \"lu\": {\r\n \"keywords\": [\"luxembourg\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇱🇺\",\r\n \"category\": \"flags\"\r\n },\r\n \"mo\": {\r\n \"keywords\": [\"macao\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇲🇴\",\r\n \"category\": \"flags\"\r\n },\r\n \"mk\": {\r\n \"keywords\": [\"macedonia,\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇲🇰\",\r\n \"category\": \"flags\"\r\n },\r\n \"mg\": {\r\n \"keywords\": [\"madagascar\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇲🇬\",\r\n \"category\": \"flags\"\r\n },\r\n \"mw\": {\r\n \"keywords\": [\"malawi\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇲🇼\",\r\n \"category\": \"flags\"\r\n },\r\n \"my\": {\r\n \"keywords\": [\"malaysia\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇲🇾\",\r\n \"category\": \"flags\"\r\n },\r\n \"mv\": {\r\n \"keywords\": [\"maldives\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇲🇻\",\r\n \"category\": \"flags\"\r\n },\r\n \"ml\": {\r\n \"keywords\": [\"mali\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇲🇱\",\r\n \"category\": \"flags\"\r\n },\r\n \"mt\": {\r\n \"keywords\": [\"malta\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇲🇹\",\r\n \"category\": \"flags\"\r\n },\r\n \"mh\": {\r\n \"keywords\": [\"marshall\", \"islands\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇲🇭\",\r\n \"category\": \"flags\"\r\n },\r\n \"mq\": {\r\n \"keywords\": [\"martinique\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇲🇶\",\r\n \"category\": \"flags\"\r\n },\r\n \"mr\": {\r\n \"keywords\": [\"mauritania\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇲🇷\",\r\n \"category\": \"flags\"\r\n },\r\n \"mu\": {\r\n \"keywords\": [\"mauritius\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇲🇺\",\r\n \"category\": \"flags\"\r\n },\r\n \"yt\": {\r\n \"keywords\": [\"mayotte\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇾🇹\",\r\n \"category\": \"flags\"\r\n },\r\n \"mx\": {\r\n \"keywords\": [\"mexico\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇲🇽\",\r\n \"category\": \"flags\"\r\n },\r\n \"fm\": {\r\n \"keywords\": [\"micronesia,\", \"federated\", \"states\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇫🇲\",\r\n \"category\": \"flags\"\r\n },\r\n \"md\": {\r\n \"keywords\": [\"moldova,\", \"republic\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇲🇩\",\r\n \"category\": \"flags\"\r\n },\r\n \"mc\": {\r\n \"keywords\": [\"monaco\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇲🇨\",\r\n \"category\": \"flags\"\r\n },\r\n \"mn\": {\r\n \"keywords\": [\"mongolia\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇲🇳\",\r\n \"category\": \"flags\"\r\n },\r\n \"me\": {\r\n \"keywords\": [\"montenegro\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇲🇪\",\r\n \"category\": \"flags\"\r\n },\r\n \"ms\": {\r\n \"keywords\": [\"montserrat\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇲🇸\",\r\n \"category\": \"flags\"\r\n },\r\n \"ma\": {\r\n \"keywords\": [\"morocco\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇲🇦\",\r\n \"category\": \"flags\"\r\n },\r\n \"mz\": {\r\n \"keywords\": [\"mozambique\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇲🇿\",\r\n \"category\": \"flags\"\r\n },\r\n \"mm\": {\r\n \"keywords\": [\"myanmar\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇲🇲\",\r\n \"category\": \"flags\"\r\n },\r\n \"na\": {\r\n \"keywords\": [\"namibia\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇳🇦\",\r\n \"category\": \"flags\"\r\n },\r\n \"nr\": {\r\n \"keywords\": [\"nauru\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇳🇷\",\r\n \"category\": \"flags\"\r\n },\r\n \"np\": {\r\n \"keywords\": [\"nepal\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇳🇵\",\r\n \"category\": \"flags\"\r\n },\r\n \"nl\": {\r\n \"keywords\": [\"netherlands\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇳🇱\",\r\n \"category\": \"flags\"\r\n },\r\n \"nc\": {\r\n \"keywords\": [\"new\", \"caledonia\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇳🇨\",\r\n \"category\": \"flags\"\r\n },\r\n \"nz\": {\r\n \"keywords\": [\"new\", \"zealand\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇳🇿\",\r\n \"category\": \"flags\"\r\n },\r\n \"ni\": {\r\n \"keywords\": [\"nicaragua\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇳🇮\",\r\n \"category\": \"flags\"\r\n },\r\n \"ne\": {\r\n \"keywords\": [\"niger\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇳🇪\",\r\n \"category\": \"flags\"\r\n },\r\n \"nigeria\": {\r\n \"keywords\": [\"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇳🇬\",\r\n \"category\": \"flags\"\r\n },\r\n \"nu\": {\r\n \"keywords\": [\"niue\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇳🇺\",\r\n \"category\": \"flags\"\r\n },\r\n \"nf\": {\r\n \"keywords\": [\"norfolk\", \"island\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇳🇫\",\r\n \"category\": \"flags\"\r\n },\r\n \"mp\": {\r\n \"keywords\": [\"northern\", \"mariana\", \"islands\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇲🇵\",\r\n \"category\": \"flags\"\r\n },\r\n \"kp\": {\r\n \"keywords\": [\"north\", \"korea\", \"nation\", \"flag\", \"country\", \"banner\"],\r\n \"char\": \"🇰🇵\",\r\n \"category\": \"flags\"\r\n },\r\n \"no\": {\r\n \"keywords\": [\"norway\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇳🇴\",\r\n \"category\": \"flags\"\r\n },\r\n \"om\": {\r\n \"keywords\": [\"oman\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇴🇲\",\r\n \"category\": \"flags\"\r\n },\r\n \"pk\": {\r\n \"keywords\": [\"pakistan\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇵🇰\",\r\n \"category\": \"flags\"\r\n },\r\n \"pw\": {\r\n \"keywords\": [\"palau\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇵🇼\",\r\n \"category\": \"flags\"\r\n },\r\n \"ps\": {\r\n \"keywords\": [\"palestine\", \"palestinian\", \"territories\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇵🇸\",\r\n \"category\": \"flags\"\r\n },\r\n \"pa\": {\r\n \"keywords\": [\"panama\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇵🇦\",\r\n \"category\": \"flags\"\r\n },\r\n \"pg\": {\r\n \"keywords\": [\"papua\", \"new\", \"guinea\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇵🇬\",\r\n \"category\": \"flags\"\r\n },\r\n \"py\": {\r\n \"keywords\": [\"paraguay\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇵🇾\",\r\n \"category\": \"flags\"\r\n },\r\n \"pe\": {\r\n \"keywords\": [\"peru\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇵🇪\",\r\n \"category\": \"flags\"\r\n },\r\n \"ph\": {\r\n \"keywords\": [\"philippines\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇵🇭\",\r\n \"category\": \"flags\"\r\n },\r\n \"pn\": {\r\n \"keywords\": [\"pitcairn\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇵🇳\",\r\n \"category\": \"flags\"\r\n },\r\n \"pl\": {\r\n \"keywords\": [\"poland\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇵🇱\",\r\n \"category\": \"flags\"\r\n },\r\n \"pt\": {\r\n \"keywords\": [\"portugal\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇵🇹\",\r\n \"category\": \"flags\"\r\n },\r\n \"pr\": {\r\n \"keywords\": [\"puerto\", \"rico\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇵🇷\",\r\n \"category\": \"flags\"\r\n },\r\n \"qa\": {\r\n \"keywords\": [\"qatar\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇶🇦\",\r\n \"category\": \"flags\"\r\n },\r\n \"re\": {\r\n \"keywords\": [\"réunion\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇷🇪\",\r\n \"category\": \"flags\"\r\n },\r\n \"ro\": {\r\n \"keywords\": [\"romania\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇷🇴\",\r\n \"category\": \"flags\"\r\n },\r\n \"ru\": {\r\n \"keywords\": [\"russian\", \"federation\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇷🇺\",\r\n \"category\": \"flags\"\r\n },\r\n \"rw\": {\r\n \"keywords\": [\"rwanda\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇷🇼\",\r\n \"category\": \"flags\"\r\n },\r\n \"bl\": {\r\n \"keywords\": [\"saint\", \"barthélemy\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇧🇱\",\r\n \"category\": \"flags\"\r\n },\r\n \"sh\": {\r\n \"keywords\": [\"saint\", \"helena\", \"ascension\", \"tristan\", \"cunha\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇸🇭\",\r\n \"category\": \"flags\"\r\n },\r\n \"kn\": {\r\n \"keywords\": [\"saint\", \"kitts\", \"nevis\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇰🇳\",\r\n \"category\": \"flags\"\r\n },\r\n \"lc\": {\r\n \"keywords\": [\"saint\", \"lucia\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇱🇨\",\r\n \"category\": \"flags\"\r\n },\r\n \"pm\": {\r\n \"keywords\": [\"saint\", \"pierre\", \"miquelon\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇵🇲\",\r\n \"category\": \"flags\"\r\n },\r\n \"vc\": {\r\n \"keywords\": [\"saint\", \"vincent\", \"grenadines\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇻🇨\",\r\n \"category\": \"flags\"\r\n },\r\n \"ws\": {\r\n \"keywords\": [\"samoa\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇼🇸\",\r\n \"category\": \"flags\"\r\n },\r\n \"sm\": {\r\n \"keywords\": [\"san\", \"marino\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇸🇲\",\r\n \"category\": \"flags\"\r\n },\r\n \"st\": {\r\n \"keywords\": [\"sao\", \"tome\", \"principe\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇸🇹\",\r\n \"category\": \"flags\"\r\n },\r\n \"saudi_arabia\": {\r\n \"keywords\": [\"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇸🇦\",\r\n \"category\": \"flags\"\r\n },\r\n \"sn\": {\r\n \"keywords\": [\"senegal\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇸🇳\",\r\n \"category\": \"flags\"\r\n },\r\n \"rs\": {\r\n \"keywords\": [\"serbia\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇷🇸\",\r\n \"category\": \"flags\"\r\n },\r\n \"sc\": {\r\n \"keywords\": [\"seychelles\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇸🇨\",\r\n \"category\": \"flags\"\r\n },\r\n \"sl\": {\r\n \"keywords\": [\"sierra\", \"leone\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇸🇱\",\r\n \"category\": \"flags\"\r\n },\r\n \"sg\": {\r\n \"keywords\": [\"singapore\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇸🇬\",\r\n \"category\": \"flags\"\r\n },\r\n \"sx\": {\r\n \"keywords\": [\"sint\", \"maarten\", \"dutch\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇸🇽\",\r\n \"category\": \"flags\"\r\n },\r\n \"sk\": {\r\n \"keywords\": [\"slovakia\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇸🇰\",\r\n \"category\": \"flags\"\r\n },\r\n \"si\": {\r\n \"keywords\": [\"slovenia\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇸🇮\",\r\n \"category\": \"flags\"\r\n },\r\n \"sb\": {\r\n \"keywords\": [\"solomon\", \"islands\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇸🇧\",\r\n \"category\": \"flags\"\r\n },\r\n \"so\": {\r\n \"keywords\": [\"somalia\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇸🇴\",\r\n \"category\": \"flags\"\r\n },\r\n \"za\": {\r\n \"keywords\": [\"south\", \"africa\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇿🇦\",\r\n \"category\": \"flags\"\r\n },\r\n \"gs\": {\r\n \"keywords\": [\"south\", \"georgia\", \"sandwich\", \"islands\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇬🇸\",\r\n \"category\": \"flags\"\r\n },\r\n \"kr\": {\r\n \"keywords\": [\"south\", \"korea\", \"nation\", \"flag\", \"country\", \"banner\"],\r\n \"char\": \"🇰🇷\",\r\n \"category\": \"flags\"\r\n },\r\n \"ss\": {\r\n \"keywords\": [\"south\", \"sudan\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇸🇸\",\r\n \"category\": \"flags\"\r\n },\r\n \"es\": {\r\n \"keywords\": [\"spain\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇪🇸\",\r\n \"category\": \"flags\"\r\n },\r\n \"lk\": {\r\n \"keywords\": [\"sri\", \"lanka\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇱🇰\",\r\n \"category\": \"flags\"\r\n },\r\n \"sd\": {\r\n \"keywords\": [\"sudan\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇸🇩\",\r\n \"category\": \"flags\"\r\n },\r\n \"sr\": {\r\n \"keywords\": [\"suriname\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇸🇷\",\r\n \"category\": \"flags\"\r\n },\r\n \"sz\": {\r\n \"keywords\": [\"swaziland\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇸🇿\",\r\n \"category\": \"flags\"\r\n },\r\n \"se\": {\r\n \"keywords\": [\"sweden\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇸🇪\",\r\n \"category\": \"flags\"\r\n },\r\n \"ch\": {\r\n \"keywords\": [\"switzerland\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇨🇭\",\r\n \"category\": \"flags\"\r\n },\r\n \"sy\": {\r\n \"keywords\": [\"syrian\", \"arab\", \"republic\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇸🇾\",\r\n \"category\": \"flags\"\r\n },\r\n \"tw\": {\r\n \"keywords\": [\"taiwan\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇹🇼\",\r\n \"category\": \"flags\"\r\n },\r\n \"tj\": {\r\n \"keywords\": [\"tajikistan\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇹🇯\",\r\n \"category\": \"flags\"\r\n },\r\n \"tz\": {\r\n \"keywords\": [\"tanzania,\", \"united\", \"republic\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇹🇿\",\r\n \"category\": \"flags\"\r\n },\r\n \"th\": {\r\n \"keywords\": [\"thailand\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇹🇭\",\r\n \"category\": \"flags\"\r\n },\r\n \"tl\": {\r\n \"keywords\": [\"timor\", \"leste\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇹🇱\",\r\n \"category\": \"flags\"\r\n },\r\n \"tg\": {\r\n \"keywords\": [\"togo\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇹🇬\",\r\n \"category\": \"flags\"\r\n },\r\n \"tk\": {\r\n \"keywords\": [\"tokelau\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇹🇰\",\r\n \"category\": \"flags\"\r\n },\r\n \"to\": {\r\n \"keywords\": [\"tonga\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇹🇴\",\r\n \"category\": \"flags\"\r\n },\r\n \"tt\": {\r\n \"keywords\": [\"trinidad\", \"tobago\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇹🇹\",\r\n \"category\": \"flags\"\r\n },\r\n \"tn\": {\r\n \"keywords\": [\"tunisia\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇹🇳\",\r\n \"category\": \"flags\"\r\n },\r\n \"tr\": {\r\n \"keywords\": [\"turkey\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇹🇷\",\r\n \"category\": \"flags\"\r\n },\r\n \"turkmenistan\": {\r\n \"keywords\": [\"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇹🇲\",\r\n \"category\": \"flags\"\r\n },\r\n \"tc\": {\r\n \"keywords\": [\"turks\", \"caicos\", \"islands\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇹🇨\",\r\n \"category\": \"flags\"\r\n },\r\n \"tuvalu\": {\r\n \"keywords\": [\"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇹🇻\",\r\n \"category\": \"flags\"\r\n },\r\n \"ug\": {\r\n \"keywords\": [\"uganda\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇺🇬\",\r\n \"category\": \"flags\"\r\n },\r\n \"ua\": {\r\n \"keywords\": [\"ukraine\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇺🇦\",\r\n \"category\": \"flags\"\r\n },\r\n \"ae\": {\r\n \"keywords\": [\"united\", \"arab\", \"emirates\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇦🇪\",\r\n \"category\": \"flags\"\r\n },\r\n \"gb\": {\r\n \"keywords\": [\"united\", \"kingdom\", \"great\", \"britain\", \"northern\", \"ireland\", \"flag\", \"nation\", \"country\", \"banner\", \"british\", \"UK\", \"english\", \"england\", \"union jack\"],\r\n \"char\": \"🇬🇧\",\r\n \"category\": \"flags\"\r\n },\r\n \"us\": {\r\n \"keywords\": [\"united\", \"states\", \"america\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇺🇸\",\r\n \"category\": \"flags\"\r\n },\r\n \"vi\": {\r\n \"keywords\": [\"virgin\", \"islands\", \"us\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇻🇮\",\r\n \"category\": \"flags\"\r\n },\r\n \"uy\": {\r\n \"keywords\": [\"uruguay\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇺🇾\",\r\n \"category\": \"flags\"\r\n },\r\n \"uz\": {\r\n \"keywords\": [\"uzbekistan\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇺🇿\",\r\n \"category\": \"flags\"\r\n },\r\n \"vu\": {\r\n \"keywords\": [\"vanuatu\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇻🇺\",\r\n \"category\": \"flags\"\r\n },\r\n \"va\": {\r\n \"keywords\": [\"vatican\", \"city\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇻🇦\",\r\n \"category\": \"flags\"\r\n },\r\n \"ve\": {\r\n \"keywords\": [\"venezuela\", \"bolivarian\", \"republic\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇻🇪\",\r\n \"category\": \"flags\"\r\n },\r\n \"vn\": {\r\n \"keywords\": [\"viet\", \"nam\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇻🇳\",\r\n \"category\": \"flags\"\r\n },\r\n \"wf\": {\r\n \"keywords\": [\"wallis\", \"futuna\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇼🇫\",\r\n \"category\": \"flags\"\r\n },\r\n \"eh\": {\r\n \"keywords\": [\"western\", \"sahara\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇪🇭\",\r\n \"category\": \"flags\"\r\n },\r\n \"ye\": {\r\n \"keywords\": [\"yemen\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇾🇪\",\r\n \"category\": \"flags\"\r\n },\r\n \"zm\": {\r\n \"keywords\": [\"zambia\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇿🇲\",\r\n \"category\": \"flags\"\r\n },\r\n \"zw\": {\r\n \"keywords\": [\"zimbabwe\", \"flag\", \"nation\", \"country\", \"banner\"],\r\n \"char\": \"🇿🇼\",\r\n \"category\": \"flags\"\r\n },\r\n \"octocat\": {\r\n \"keywords\": [\"animal\", \"octopus\", \"github\", \"custom_\"],\r\n \"char\": null,\r\n \"category\": \"_custom\"\r\n },\r\n \"shipit\": {\r\n \"keywords\": [\"squirrel\", \"detective\", \"animal\", \"sherlock\", \"inspector\", \"custom_\"],\r\n \"char\": null,\r\n \"category\": \"_custom\"\r\n },\r\n \"bowtie\": {\r\n \"keywords\": [\"face\", \"formal\", \"fashion\", \"suit\", \"classy\", \"magic\", \"circus\"],\r\n \"char\": null,\r\n \"category\": \"_custom\"\r\n },\r\n \"neckbeard\": {\r\n \"keywords\": [\"nerdy\", \"face\", \"custom_\"],\r\n \"char\": null,\r\n \"category\": \"_custom\"\r\n },\r\n \"metal\": {\r\n \"keywords\": [\"fingers\", \"rocknroll\", \"concert\", \"band\", \"custom_\"],\r\n \"char\": null,\r\n \"category\": \"_custom\"\r\n },\r\n \"fu\": {\r\n \"keywords\": [\"fuck\", \"finger\", \"dislike\", \"thumbsdown\", \"disapprove\", \"no\", \"custom_\"],\r\n \"char\": null,\r\n \"category\": \"_custom\"\r\n },\r\n \"trollface\": {\r\n \"keywords\": [\"internet\", \"meme\", \"custom_\"],\r\n \"char\": null,\r\n \"category\": \"_custom\"\r\n },\r\n \"godmode\": {\r\n \"keywords\": [\"doom\", \"oldschool\"],\r\n \"char\": null,\r\n \"category\": \"_custom\"\r\n },\r\n \"goberserk\": {\r\n \"keywords\": [\"doom\", \"rage\", \"bloody\", \"hurt\"],\r\n \"char\": null,\r\n \"category\": \"_custom\"\r\n },\r\n \"finnadie\": {\r\n \"keywords\": [\"doom\", \"oldschool\"],\r\n \"char\": null,\r\n \"category\": \"_custom\"\r\n },\r\n \"feelsgood\": {\r\n \"keywords\": [\"doom\", \"oldschool\"],\r\n \"char\": null,\r\n \"category\": \"_custom\"\r\n },\r\n \"rage1\": {\r\n \"keywords\": [\"angry\", \"mad\", \"hate\", \"despise\"],\r\n \"char\": null,\r\n \"category\": \"_custom\"\r\n },\r\n \"rage2\": {\r\n \"keywords\": [\"angry\", \"mad\", \"hate\", \"despise\"],\r\n \"char\": null,\r\n \"category\": \"_custom\"\r\n },\r\n \"rage3\": {\r\n \"keywords\": [\"angry\", \"mad\", \"hate\", \"despise\"],\r\n \"char\": null,\r\n \"category\": \"_custom\"\r\n },\r\n \"rage4\": {\r\n \"keywords\": [\"angry\", \"mad\", \"hate\", \"despise\"],\r\n \"char\": null,\r\n \"category\": \"_custom\"\r\n },\r\n \"suspect\": {\r\n \"keywords\": [\"mad\", \"custom_\"],\r\n \"char\": null,\r\n \"category\": \"_custom\"\r\n },\r\n \"hurtrealbad\": {\r\n \"keywords\": [\"mad\", \"injured\", \"doom\", \"oldschool\", \"custom_\"],\r\n \"char\": null,\r\n \"category\": \"_custom\"\r\n }\r\n}","declare var twemoji: {\r\n parse(str: string, options?: { folder?: string, ext?: string, base?: string }): string;\r\n}\r\n\r\nimport { Component, inject, OnInit, Output } from '@angular/core';\r\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\r\nimport { Subject } from 'rxjs';\r\nimport { BANTA_SDK_OPTIONS } from '../../sdk-options';\r\n\r\ninterface Emoji {\r\n\tkeywords : string[];\r\n\tchar : string;\r\n\thtml? : SafeHtml;\r\n\tcategory : string;\r\n}\r\n\r\nimport { EMOJIS } from '../emojis';\r\n\r\n@Component({\r\n\tselector: 'emoji-selector-panel',\r\n\ttemplateUrl: './emoji-selector-panel.component.html',\r\n\tstyleUrls: ['./emoji-selector-panel.component.scss']\r\n})\r\nexport class EmojiSelectorPanelComponent implements OnInit {\r\n\r\n\tprivate sanitizer = inject(DomSanitizer);\r\n\tprivate sdkOptions = inject(BANTA_SDK_OPTIONS, { optional: true });\r\n\r\n\tcategories : any[];\r\n\tactiveCategory : string = 'people';\r\n\tsearchResults : any[] = [];\r\n searchVisible = false;\r\n\t\r\n\t@Output()\r\n\tprivate selected : Subject<string> = new Subject();\r\n\r\n\tprivate _searchQuery : string;\r\n\r\n\tget searchQuery() {\r\n\t\treturn this._searchQuery;\r\n\t}\r\n\r\n\tset searchQuery(value) {\r\n\t\tthis._searchQuery = value;\r\n\t\tsetTimeout(() => {\r\n\t\t\tthis.searchResults = Object.keys(EMOJIS).filter(k => k.includes(value)).map(k => EMOJIS[k]);\r\n\t\t\tthis.searchResults.splice(50, this.searchResults.length);\r\n\t\t\tconsole.log(`looking for '${value}' => ${this.searchResults.length} results`);\r\n\t\t});\r\n\t}\r\n\r\n\thumanize(str : string) {\r\n\t\treturn str.replace(/(^| )[a-z]/g, k => k.toUpperCase()).replace(/_/g, ' ');\r\n\t}\r\n\r\n\tselect(char : string) {\r\n\t\tthis.selected.next(char);\r\n\t}\r\n\r\n\tpairs(object) {\r\n\t\treturn Object.keys(object).map(key => [key, object[key]]);\r\n\t}\r\n\r\n\thideSearch() {\r\n\t\t// because of the \"outside click detection\"\r\n setTimeout(() => {\r\n this.searchVisible = false;\r\n });\r\n\t}\r\n\t\r\n showSearch() {\r\n\t\t// because of the \"outside click detection\"\r\n setTimeout(() => {\r\n this.searchVisible = true;\r\n });\r\n }\r\n\r\n\tprivate get emojiUrl() {\r\n\t\treturn this.sdkOptions?.emojiUrl ?? 'https://cdn.jsdelivr.net/gh/twitter/twemoji@14.0.2/assets/';\r\n\t}\r\n\r\n\tngOnInit() {\r\n\r\n\t\tlet cats = {};\r\n\t\tlet categoryIcons = {\r\n\t\t\tsymbols: 'warning',\r\n\t\t\tpeople: 'people',\r\n\t\t\tanimals_and_nature: 'nature',\r\n\t\t\ttravel_and_places: 'location_on',\r\n\t\t\tactivity: 'local_activity',\r\n\t\t\tfood_and_drink: 'restaurant',\r\n\t\t\tobjects: 'computer',\r\n\t\t\tflags: 'flag'\r\n\t\t};\r\n\t\tfor (let pair of this.pairs(EMOJIS)) {\r\n\t\t\tlet name = pair[0];\r\n\t\t\tlet emoji : Emoji = pair[1];\r\n\r\n\t\t\tif (!cats[emoji.category]) {\r\n\t\t\t\tcats[emoji.category] = {\r\n\t\t\t\t\tname: emoji.category,\r\n\t\t\t\t\ticon: categoryIcons[emoji.category] || 'code',\r\n\t\t\t\t\temojis: []\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\temoji.html = this.sanitizer.bypassSecurityTrustHtml(\r\n\t\t\t\ttwemoji.parse(emoji.char || '', { base: this.emojiUrl })\r\n\t\t\t);\r\n\r\n\t\t\tcats[emoji.category].emojis.push(emoji);\r\n\t\t}\r\n\r\n\t\tthis.categories = this.pairs(cats).map(pair => pair[1]);\r\n\t}\r\n\r\n}\r\n","<div class=\"search-box\" *ngIf=\"searchVisible\">\r\n\t<a mat-icon-button href=\"javascript:;\" (click)=\"hideSearch()\">\r\n\t\t<mat-icon>arrow_back</mat-icon>\r\n\t</a>\r\n\t<mat-form-field appearance=\"outline\" floatLabel=\"always\">\r\n\t\t<mat-label>Search for emoji</mat-label>\r\n\t\t<input name=\"search\" type=\"text\" matInput placeholder=\"Start typing\" [(ngModel)]=\"searchQuery\" />\r\n\t</mat-form-field>\r\n</div>\r\n\r\n<div class=\"selector\">\r\n\t<ng-container *ngIf=\"searchVisible\">\r\n\t\t<div class=\"emoji-list\">\r\n\t\t\t<a href=\"javascript:;\" (click)=\"select(emoji.char)\" \r\n\t\t\t\t*ngFor=\"let emoji of searchResults\" [innerHtml]=\"emoji.html || ''\">\r\n\t\t\t</a>\r\n\t\t</div>\r\n\t</ng-container>\r\n\t<ng-container *ngIf=\"!searchVisible\">\r\n\t\t<div class=\"categories\">\r\n\t\t\t<ng-container *ngIf=\"!searchVisible\">\r\n\t\t\t\t<a [title]=\"humanize(category.name)\" [class.active]=\"activeCategory === category.name\" mat-icon-button *ngFor=\"let category of categories\" (click)=\"activeCategory = category.name\">\r\n\t\t\t\t\t<mat-icon>{{category.icon}}</mat-icon>\r\n\t\t\t\t</a>\r\n\r\n\t\t\t\t<a title=\"Search\" [class.active] mat-icon-button (click)=\"showSearch()\">\r\n\t\t\t\t\t<mat-icon>search</mat-icon>\r\n\t\t\t\t</a>\r\n\t\t\t</ng-container>\r\n\t\t</div>\r\n\t\t<ng-container *ngFor=\"let category of categories\">\r\n\t\t\t<div class=\"emoji-list\" *ngIf=\"activeCategory && activeCategory == category.name\">\r\n\t\t\t\t<a href=\"javascript:;\" (click)=\"select(emoji.char)\" \r\n\t\t\t\t\t*ngFor=\"let emoji of category.emojis\" [innerHtml]=\"emoji.html || ''\">\r\n\t\t\t\t</a>\r\n\t\t\t</div>\r\n\t\t</ng-container>\r\n\t</ng-container>\r\n</div>","/// <reference types=\"@types/resize-observer-browser\" />\r\n\r\nimport { FlexibleConnectedPositionStrategy, Overlay, OverlayRef } from '@angular/cdk/overlay';\r\nimport { ComponentPortal, TemplatePortal } from '@angular/cdk/portal';\r\nimport { Component, ElementRef, HostBinding, Output, ViewChild, Input } from '@angular/core';\r\nimport { Subject, Observable } from 'rxjs';\r\nimport { EmojiSelectorPanelComponent } from './emoji-selector-panel/emoji-selector-panel.component';\r\n\r\n@Component({\r\n selector: 'emoji-selector-button',\r\n template: `\r\n <button #button type=\"button\" mat-icon-button (click)=\"show()\" [disabled]=\"disabled\">\r\n <mat-icon>emoji_emotions</mat-icon>\r\n </button>\r\n <ng-template cdkPortal #selectorPanelTemplate=\"cdkPortal\">\r\n <emoji-selector-panel \r\n #panel\r\n (selected)=\"insert($event)\"\r\n ></emoji-selector-panel>\r\n </ng-template>\r\n `,\r\n styles: [`\r\n :host {\r\n display: block;\r\n position: relative;\r\n }\r\n\r\n button {\r\n color: #666\r\n }\r\n `]\r\n})\r\nexport class EmojiSelectorButtonComponent {\r\n constructor(\r\n private elementRef: ElementRef<HTMLElement>,\r\n private overlay: Overlay\r\n ) {\r\n }\r\n\r\n @ViewChild('selectorPanelTemplate') selectorPanelTemplate: TemplatePortal<any>;\r\n\r\n private _selected = new Subject<string>();\r\n showEmojiPanel = false;\r\n\r\n @Output()\r\n get selected() : Observable<string> {\r\n return this._selected;\r\n }\r\n\r\n private overlayRef: OverlayRef;\r\n\r\n get isOpen() {\r\n return this.overlayRef;\r\n }\r\n\r\n /**\r\n * Insert the given emoji.\r\n * @param str \r\n */\r\n insert(str) {\r\n this._selected.next(str);\r\n this.close();\r\n }\r\n\r\n close() {\r\n if (this.overlayRef) {\r\n this.overlayRef.dispose();\r\n this.overlayRef = null;\r\n }\r\n }\r\n\r\n @Input() disabled = false;\r\n @Input() overlayX: 'start' | 'center' | 'end' = 'end';\r\n @Input() overlayY: 'top' | 'center' | 'bottom' = 'top';\r\n @Input() originX: 'start' | 'center' | 'end' = 'end';\r\n @Input() originY: 'top' | 'center' | 'bottom' = 'bottom';\r\n\r\n show() {\r\n if (this.isOpen) {\r\n this.close();\r\n }\r\n\r\n this.overlayRef = this.overlay.create({\r\n positionStrategy: this.overlay.position()\r\n .flexibleConnectedTo(this.elementRef)\r\n .withPositions([\r\n { \r\n originX: this.originX, \r\n originY: this.originY,\r\n overlayX: this.overlayX,\r\n overlayY: this.overlayY\r\n }\r\n ])\r\n .withFlexibleDimensions(true),\r\n hasBackdrop: true,\r\n disposeOnNavigation: true,\r\n scrollStrategy: this.overlay.scrollStrategies.reposition({\r\n autoClose: true\r\n })\r\n });\r\n\r\n this.overlayRef.backdropClick().subscribe(() => {\r\n this.close();\r\n })\r\n\r\n this.overlayRef.keydownEvents().subscribe(event => {\r\n if (event.key === 'Escape') {\r\n this.close();\r\n }\r\n });\r\n this.overlayRef.attach(this.selectorPanelTemplate);\r\n }\r\n}","import { NgModule } from '@angular/core';\r\nimport { EmojiSelectorPanelComponent } from './emoji-selector-panel/emoji-selector-panel.component';\r\nimport { CommonModule } from '@angular/common';\r\nimport { EmojiSelectorButtonComponent } from './emoji-selector-button.component';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { OverlayModule } from '@angular/cdk/overlay';\r\nimport { PortalModule } from '@angular/cdk/portal';\r\n\r\nconst COMPONENTS = [\r\n EmojiSelectorPanelComponent,\r\n EmojiSelectorButtonComponent\r\n];\r\n\r\n@NgModule({\r\n declarations: COMPONENTS,\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n MatIconModule,\r\n MatButtonModule,\r\n MatFormFieldModule,\r\n MatInputModule,\r\n OverlayModule,\r\n PortalModule\r\n ],\r\n exports: COMPONENTS\r\n})\r\nexport class EmojiModule {\r\n\r\n}","import { BehaviorSubject, Observable } from 'rxjs';\r\nimport { ChatMessage, Vote, CommentsOrder, Notification, User, UrlCard, FilterMode, Topic } from '@banta/common';\r\nimport { ChatSourceBase } from './chat-source-base';\r\nimport { AttachmentResolver, AttachmentScraper } from './attachment-scraper';\r\n\r\nexport interface ChatSourceOptions {\r\n sortOrder?: CommentsOrder;\r\n filterMode?: FilterMode;\r\n\r\n /**\r\n * How many messages should be loaded initially?\r\n */\r\n initialMessageCount?: number;\r\n metadata?: Record<string, any>;\r\n}\r\n\r\nexport abstract class ChatBackendBase {\r\n constructor() {\r\n }\r\n \r\n abstract getSourceForTopic(topicId : string, options?: ChatSourceOptions) : Promise<ChatSourceBase>;\r\n abstract getSourceForThread(topicId : string, messageId : string, options?: ChatSourceOptions) : Promise<ChatSourceBase>;\r\n\r\n /**\r\n * Get the count of the given topic\r\n * @param topicId \r\n * @returns \r\n */\r\n abstract getSourceCountForTopic(topicId: string): Promise<number>;\r\n\r\n /**\r\n * Get the count of the given topics. \r\n * @param topicId Topics to count messages on. Maximum of 1000.\r\n * @returns \r\n */\r\n abstract getSourceCountForTopics(topicIds: string[]): Promise<Record<string, number>>;\r\n\r\n /**\r\n * Get information about the given topic. \r\n * @param topicId \r\n * @returns The topic object, or undefined if no such topic was found.\r\n */\r\n abstract getTopic(topicId: string): Promise<Topic | undefined>;\r\n\r\n /**\r\n * Get information about the given topics\r\n * @param topicIds The topic IDs to look up. Maximum of 1000.\r\n * @returns An array of matching topic objects.\r\n */\r\n abstract getTopicsById(topicIds: string[]): Promise<Topic[]>;\r\n\r\n /**\r\n * Get a set of messages from the given topic.\r\n * @param topicId \r\n * @returns \r\n */\r\n abstract getMessages(\r\n topicId: string, \r\n sort?: CommentsOrder, \r\n filter?: FilterMode, \r\n offset?: number, \r\n limit?: number\r\n ): Promise<ChatMessage[]>;\r\n\r\n /**\r\n * Get a set of messages from the given topic.\r\n * @param topicId \r\n * @returns \r\n */\r\n abstract getReplies(\r\n parentMessageId: string,\r\n sort?: CommentsOrder, \r\n filter?: FilterMode, \r\n offset?: number, \r\n limit?: number\r\n ): Promise<ChatMessage[]>;\r\n\r\n abstract refreshMessage(message : ChatMessage): Promise<ChatMessage>;\r\n abstract getMessage(topicId : string, messageId : string): Promise<ChatMessage>;\r\n abstract getSubMessage(topicId : string, parentMessageId : string, messageId : string): Promise<ChatMessage>;\r\n abstract watchMessage(message : ChatMessage, handler : (message : ChatMessage) => void) : () => void;\r\n abstract getCardForUrl(url: string): Promise<UrlCard>;\r\n readonly notificationsChanged : Observable<Notification[]>;\r\n readonly newNotification : Observable<Notification>;\r\n \r\n private _userChanged = new BehaviorSubject<User>(null);\r\n private _user : User;\r\n \r\n get userChanged() : Observable<User> {\r\n return this._userChanged;\r\n }\r\n \r\n set user(user : User) {\r\n this._user = user;\r\n this._userChanged.next(user);\r\n }\r\n\r\n get user() {\r\n return this._user;\r\n }\r\n \r\n private _attachmentScrapers: AttachmentScraper[] = [];\r\n private _attachmentResolvers: AttachmentResolver[] = [];\r\n\r\n registerAttachmentScraper(scraper: AttachmentScraper) {\r\n this._attachmentScrapers.push(scraper);\r\n }\r\n\r\n registerAttachmentResolver(resolver: AttachmentResolver) {\r\n this._attachmentResolvers.push(resolver);\r\n }\r\n\r\n get attachmentScrapers() {\r\n return this._attachmentScrapers.slice();\r\n }\r\n\r\n get attachmentResolvers() {\r\n return this._attachmentResolvers.slice();\r\n }\r\n}","import { Component, Output, Input, HostBinding, ElementRef } from \"@angular/core\";\r\nimport { Subject } from 'rxjs';\r\nimport { ChatMessage, ChatPermissions, User } from '@banta/common';\r\nimport { MessageMenuItem } from \"../../message-menu-item\";\r\nimport { take } from 'rxjs/operators';\r\n\r\n@Component({\r\n selector: 'banta-comment',\r\n templateUrl: './comment.component.html',\r\n styleUrls: ['./comment.component.scss']\r\n})\r\nexport class CommentComponent {\r\n constructor(\r\n private elementRef: ElementRef<HTMLElement>\r\n ) {\r\n }\r\n\r\n ngOnInit() {\r\n let maxTime = 100;\r\n let minTime = 0;\r\n let randomTime = minTime + Math.random() * (maxTime - minTime);\r\n\r\n setTimeout(() => {\r\n this.isNew = true;\r\n this.visible = true;\r\n setTimeout(() => this.isNew = false, 1000);\r\n }, randomTime);\r\n }\r\n\r\n //#region Message\r\n\r\n @Input() get message() { return this._message; }\r\n set message(value) { this.setMessage(value); }\r\n private _message : ChatMessage;\r\n\r\n //#endregion\r\n //#region Properties\r\n \r\n private isLoaded = false;\r\n editedMessage: string;\r\n\r\n //#endregion\r\n //#region Inputs\r\n \r\n @Input() customMenuItems: MessageMenuItem[];\r\n @Input() showReplyAction = true;\r\n @Input() maxLength: number = 1500;\r\n @Input() permissions: ChatPermissions;\r\n @Input() mine = false;\r\n @Input() editing = false;\r\n @Input() genericAvatarUrl: string;\r\n @Input() readonly = false;\r\n\r\n //#endregion\r\n //#region Outputs\r\n\r\n private _reported = new Subject<void>();\r\n private _selected = new Subject<void>();\r\n private _liked = new Subject<void>();\r\n private _unliked = new Subject<void>();\r\n private _shared = new Subject<ChatMessage>();\r\n\tprivate _userSelected = new Subject<void>();\r\n\tprivate _avatarSelected = new Subject<User>();\r\n\tprivate _usernameSelected = new Subject<User>();\r\n private _editStarted = new Subject<void>();\r\n private _deleted = new Subject<void>();\r\n private _editEnded = new Subject<void>();\r\n private _edited = new Subject<string>();\r\n private _loaded = new Subject<void>();\r\n \r\n @Output() readonly liked = this._liked.asObservable();\r\n @Output() readonly unliked = this._unliked.asObservable();\r\n @Output() readonly selected = this._selected.asObservable();\r\n @Output() readonly edited = this._edited.asObservable();\r\n @Output() readonly deleted = this._deleted.asObservable();\r\n @Output() readonly editStarted = this._editStarted.asObservable();\r\n @Output() readonly editEnded = this._editEnded.asObservable();\r\n @Output() readonly shared = this._shared.asObservable();\r\n\t@Output() readonly userSelected = this._userSelected.asObservable();\r\n @Output() readonly usernameSelected = this._usernameSelected.asObservable();\r\n\t@Output() readonly avatarSelected = this._avatarSelected.asObservable();\r\n @Output() readonly reported = this._reported.asObservable();\r\n @Output() readonly loaded = this._loaded.asObservable();\r\n\r\n //#endregion\r\n //#region UI Bindings\r\n\r\n @HostBinding('attr.data-comment-id') get commentId() { return this.message?.id; }\r\n @HostBinding('class.new') isNew = false;\r\n @HostBinding('class.highlighted') get isHighlighted() { return this.message?.transientState?.highlighted ?? false; }\r\n @HostBinding('class.visible') visible = false;\r\n\r\n get replyCount() { return this.message.submessages?.length || this.message.submessageCount || 0; }\r\n get element() { return this.elementRef.nativeElement; }\r\n\r\n avatarForUser(user : User) { return `url(${user?.avatarUrl ?? this.genericAvatarUrl})`; }\r\n\r\n //#endregion\r\n //#region Public Component API\r\n\r\n async waitForLoad() {\r\n await this.isLoaded ? Promise.resolve() : this.loaded.pipe(take(1)).toPromise();\r\n }\r\n\r\n //#endregion\r\n //#region Private API\r\n \r\n private setMessage(value: ChatMessage) {\r\n this._message = value;\r\n if (this._message.attachments?.length > 0) {\r\n this.isLoaded = false;\r\n } else {\r\n this.isLoaded = true;\r\n this._loaded.next();\r\n }\r\n }\r\n\r\n //#endregion\r\n //#region Actions\r\n\r\n markAttachmentsLoaded() { this.isLoaded = true; this._loaded.next(); }\r\n saveEdit() { this._edited.next(this.editedMessage); }\r\n endEditing() { this._editEnded.next(); }\r\n delete() { this._deleted.next(); }\r\n report() { this._reported.next(); }\r\n like() { this._liked.next(); }\r\n unlike() { this._unliked.next(); }\r\n share() { this._shared.next(this.message); }\r\n select() { this._selected.next(); }\r\n\tselectUser() { this._userSelected.next(); }\r\n startEdit() { this._editStarted.next(); this.editedMessage = this.message.message; }\r\n selectUsername(user: User) { this._usernameSelected.next(user); this.selectUser(); }\r\n\tselectAvatar(user: User) { this._avatarSelected.next(user); this.selectUser(); }\r\n\r\n //#endregion\r\n}\r\n","\r\n<mat-menu #pointItemMenu=\"matMenu\">\r\n <button mat-menu-item (click)=\"share()\">\r\n <mat-icon>share</mat-icon>\r\n Share\r\n </button>\r\n <button *ngIf=\"!mine\" mat-menu-item (click)=\"report()\">\r\n <mat-icon>warning</mat-icon>\r\n Report\r\n </button>\r\n <button *ngIf=\"mine\" [disabled]=\"!permissions?.canEdit || readonly\" mat-menu-item (click)=\"startEdit()\">\r\n <mat-icon>edit</mat-icon>\r\n Edit\r\n </button>\r\n <button *ngIf=\"mine\" [disabled]=\"!permissions?.canDelete || readonly\" mat-menu-item (click)=\"delete()\">\r\n <mat-icon>delete</mat-icon>\r\n Delete\r\n </button>\r\n\r\n <button *ngFor=\"let menuItem of customMenuItems\" mat-menu-item (click)=\"menuItem.action(message)\">\r\n <mat-icon>{{menuItem.icon}}</mat-icon>\r\n {{menuItem.label}}\r\n </button>\r\n\r\n</mat-menu>\r\n\r\n<div class=\"banta-message-content-container\">\r\n <div class=\"banta-user\">\r\n <div class=\"banta-user-1\">\r\n <a\r\n href=\"javascript:;\"\r\n class=\"banta-avatar\"\r\n (click)=\"selectAvatar(message.user)\"\r\n [style.background-image]=\"avatarForUser(message.user)\"></a>\r\n <div class=\"banta-user-identity\">\r\n <a href=\"javascript:;\" class=\"banta-display-name\" (click)=\"selectUser()\">{{message.user.displayName}}</a>\r\n <a href=\"javascript:;\" class=\"banta-username\" (click)=\"selectUsername(message.user)\">@{{message.user.username}}</a>\r\n </div>\r\n </div>\r\n <div class=\"banta-user-2\">\r\n <span class=\"banta-user-tag\" *ngIf=\"message.user.tag\">{{message.user.tag}}</span>\r\n <banta-timestamp [value]=\"message.sentAt\"></banta-timestamp>\r\n <span class=\"spacer\"></span>\r\n </div>\r\n </div>\r\n <div class=\"banta-content\" *ngIf=\"!editing\">\r\n <span class=\"banta-message-content\" [innerHTML]=\"message.message | mentionLinker: message.mentionLinks | bantaMarkdownToHtml\"></span>\r\n <banta-attachments \r\n [attachments]=\"message.attachments\"\r\n (loaded)=\"markAttachmentsLoaded()\"\r\n ></banta-attachments>\r\n <ul class=\"message-facts\">\r\n <li *ngIf=\"message.edits?.length > 0\">(Edited)</li>\r\n </ul>\r\n </div>\r\n <div class=\"banta-content\" *ngIf=\"editing\" style=\"padding-bottom: 2em;\">\r\n <div>\r\n <mat-form-field floatLabel=\"always\" appearance=\"outline\" style=\"width: 100%;\">\r\n <mat-label>Edit Message</mat-label>\r\n <textarea matInput [(ngModel)]=\"editedMessage\" [maxlength]=\"maxLength\"></textarea>\r\n </mat-form-field>\r\n </div>\r\n <button mat-raised-button (click)=\"saveEdit()\">Save</button> \r\n <button mat-button (click)=\"endEditing()\">Cancel</button>\r\n </div>\r\n\r\n\r\n <div class=\"banta-actions\">\r\n <div class=\"spacer\"></div>\r\n <div class=\"banta-counted-action\" *ngIf=\"showReplyAction\">\r\n <button mat-button [matTooltip]=\"replyCount > 0 ? 'Replies' : 'Reply'\" matTooltipPosition=\"below\" (click)=\"select()\">\r\n <mat-icon>comment</mat-icon>\r\n <span class=\"banta-count-indicator\">\r\n {{replyCount > 0 ? 'Replies' : 'Reply'}}\r\n {{replyCount > 0 ? '(' + replyCount + ')' : ''}}\r\n </span>\r\n </button>\r\n </div>\r\n <div class=\"banta-counted-action\" [class.active]=\"message.userState?.liked\">\r\n <button \r\n *ngIf=\"message.transientState?.liking\"\r\n mat-icon-button \r\n [disabled]=\"true\" \r\n [matTooltip]=\"upvoting ? 'Please wait...' : message.userState?.liked ? 'Unlike' : 'Like'\" \r\n matTooltipPosition=\"below\" \r\n >\r\n <mat-spinner [diameter]=\"15\" style=\"margin-left: 1em;\"></mat-spinner>\r\n </button>\r\n <button \r\n *ngIf=\"!message.transientState?.liking\"\r\n mat-button \r\n [disabled]=\"readonly\"\r\n [matTooltip]=\"permissions?.canLike ? upvoting ? 'Please wait...' : 'Like' : permissions?.canLikeErrorMessage\" \r\n matTooltipPosition=\"below\" \r\n (click)=\"message.userState?.liked ? unlike() : like()\" \r\n >\r\n <mat-icon>thumb_up</mat-icon>\r\n <span class=\"banta-count-indicator\" *ngIf=\"message.likes > 0\">\r\n {{message.likes}}\r\n </span>\r\n </button>\r\n </div>\r\n\r\n <button mat-icon-button [matMenuTriggerFor]=\"pointItemMenu\">\r\n <mat-icon>more_vert</mat-icon>\r\n </button>\r\n </div>\r\n</div>\r\n","import { Component, Input, ViewChild, ElementRef, Output, HostBinding, ViewChildren, QueryList } from \"@angular/core\";\r\nimport { User, ChatMessage, CommentsOrder, FilterMode } from '@banta/common';\r\nimport { Subject, Subscription } from 'rxjs';\r\nimport { ChatBackendBase } from \"../../chat-backend-base\";\r\nimport { ChatSourceBase } from \"../../chat-source-base\";\r\nimport { MessageMenuItem } from \"../../message-menu-item\";\r\nimport { CommentComponent } from \"../comment/comment.component\";\r\n\r\nexport interface EditEvent {\r\n message: ChatMessage;\r\n newMessage: string;\r\n}\r\n\r\nconst DEFAULT_MAX_MESSAGES = 2000;\r\nconst DEFAULT_MAX_VISIBLE_MESSAGES = 200;\r\n\r\n@Component({\r\n selector: 'banta-comment-view',\r\n templateUrl: './comment-view.component.html',\r\n styleUrls: ['./comment-view.component.scss']\r\n})\r\nexport class CommentViewComponent {\r\n constructor(\r\n private backend: ChatBackendBase,\r\n private elementRef: ElementRef<HTMLElement>\r\n ) {\r\n }\r\n\r\n //#region Source\r\n\r\n private _source: ChatSourceBase;\r\n @Input() get source() { return this._source; }\r\n set source(value) { this.setSource(value); }\r\n\r\n //#endregion\r\n //#region Fields\r\n\r\n private _sourceSubs = new Subscription();\r\n menuMessage: ChatMessage = null;\r\n messages: ChatMessage[] = [];\r\n currentUser: User;\r\n customSortEnabled = false;\r\n markSourceLoaded: () => void;\r\n sourceLoaded = new Promise<void>(r => this.markSourceLoaded = r);\r\n isViewingMore = false;\r\n isLoadingMore = false;\r\n hasMore = false;\r\n messageClicked = false;\r\n\r\n get previousMessages() { return this.newestLast ? this.olderMessages : this.newMessages; }\r\n get nextMessages() { return this.newestLast ? this.newMessages : this.olderMessages; }\r\n\r\n /**\r\n * While this is called \"new\" messages, it really represents the messages that would be visible *at the beginning \r\n * of the sort order*, which can be flipped by the newestLast feature (used for replies mode). \r\n * \r\n * So, when newestLast is false (top-level comments), regardless of the current sortOrder, newMessages are conceptually \r\n * *above* the visible set of messages.\r\n * \r\n * When newestLast is true (as in replies mode), regardless of the current sortOrder, newMessages are conceptually \r\n * *below* the visible set of messages.\r\n */\r\n newMessages: ChatMessage[] = [];\r\n\r\n /**\r\n * While this is called \"older\" messages, it really represents the messages that would be visible *at the end of the \r\n * sort order*, which can be flipped by the newestLast feature (useds for replies mode).\r\n * \r\n * So, when newestLast is false, regardless of the current sortOrder, olderMessages are conceptually *below*\r\n * the visible set of messages.\r\n * \r\n * When newestLast is true (as in replies mode), regardless of the current sortOrder, olderMessages are conceptually\r\n * *above* the visible set of messages.\r\n */\r\n olderMessages: ChatMessage[] = [];\r\n\r\n //#endregion\r\n //#region Inputs\r\n\r\n private _maxMessages: number;\r\n @Input()\r\n set maxMessages(value) { this._maxMessages = value; }\r\n get maxMessages() { return this._maxMessages ?? DEFAULT_MAX_MESSAGES; }\r\n\r\n private _maxVisibleMessages: number;\r\n @Input() \r\n set maxVisibleMessages(value) { this._maxVisibleMessages = value; }\r\n get maxVisibleMessages() { return this._maxVisibleMessages ?? DEFAULT_MAX_VISIBLE_MESSAGES; }\r\n\r\n @Input() newestLast = false;\r\n @Input() holdNewMessages = false;\r\n @Input() showEmptyState = true;\r\n @Input() allowReplies = true;\r\n @Input() enableHoldOnClick = false;\r\n @Input() enableHoldOnScroll = true;\r\n @Input() customMenuItems: MessageMenuItem[] = [];\r\n @Input() @HostBinding('class.fixed-height') fixedHeight: boolean;\r\n @Input() selectedMessage: ChatMessage;\r\n @Input() genericAvatarUrl: string;\r\n \r\n //#endregion\r\n //#region Outputs\r\n\r\n private _selected = new Subject<ChatMessage>();\r\n private _liked = new Subject<ChatMessage>();\r\n private _unliked = new Subject<ChatMessage>();\r\n private _reported = new Subject<ChatMessage>();\r\n private _userSelected = new Subject<ChatMessage>();\r\n private _usernameSelected = new Subject<User>();\r\n private _avatarSelected = new Subject<User>();\r\n private _shared = new Subject<ChatMessage>();\r\n private _deleted = new Subject<ChatMessage>();\r\n private _messageEdited = new Subject<EditEvent>();\r\n private _sortOrderChanged = new Subject<CommentsOrder>();\r\n private _filterModeChanged = new Subject<FilterMode>();\r\n\r\n @Output() readonly userSelected = this._userSelected.asObservable();\r\n @Output() readonly reported = this._reported.asObservable();\r\n @Output() readonly liked = this._liked.asObservable();\r\n @Output() readonly unliked = this._unliked.asObservable();\r\n @Output() readonly usernameSelected = this._usernameSelected.asObservable();\r\n @Output() readonly avatarSelected = this._avatarSelected.asObservable();\r\n @Output() readonly shared = this._shared.asObservable();\r\n @Output() readonly deleted = this._deleted.asObservable();\r\n @Output() readonly selected = this._selected.asObservable();\r\n @Output() readonly messageEdited = this._messageEdited.asObservable();\r\n @Output() readonly sortOrderChanged = this._sortOrderChanged.asObservable();\r\n @Output() readonly filterModeChanged = this._filterModeChanged.asObservable();\r\n\r\n //#endregion \r\n //#region UI Bindings\r\n\r\n @ViewChildren(CommentComponent) commentsQuery: QueryList<CommentComponent>;\r\n @ViewChild('messageContainer') messageContainer: ElementRef<HTMLElement>;\r\n get comments() { return Array.from(this.commentsQuery); }\r\n\r\n //#endregion\r\n\r\n /**\r\n * Returns true if this message can be found within one of the message buffers (older, current, newer)\r\n * @param message \r\n */\r\n isMessageLoadedInContext(message: ChatMessage) {\r\n return this.olderMessages.find(x => x.id === message.id)\r\n || this.messages.find(x => x.id === message.id)\r\n || this.newMessages.find(x => x.id === message.id);\r\n }\r\n\r\n async loadMessageInContext(message: ChatMessage) {\r\n await this.sourceLoaded;\r\n \r\n console.log(`Loading message ${message.id} in context...`);\r\n while (this.hasMore && !this.isMessageLoadedInContext(message)) {\r\n console.log(`...Need to load more comments to find ${message.id}`);\r\n await this.showMore();\r\n }\r\n\r\n if (!this.isMessageLoadedInContext(message)) {\r\n console.error(`Error while loading message in context: Failed to find message ${message.id}, maybe it was deleted!`);\r\n return false;\r\n }\r\n\r\n let items = [].concat(this.olderMessages, this.messages, this.newMessages);\r\n let index = items.findIndex(x => x.id === message.id);\r\n\r\n if (index < 0) {\r\n console.error(`Error while loading message in context: Message was not present in message list!`);\r\n return false;\r\n }\r\n\r\n let startIndex = Math.max(0, index - this.maxVisibleMessages / 2);\r\n this.newMessages = items.splice(0, startIndex);\r\n this.messages = items.splice(0, this.maxVisibleMessages);\r\n this.olderMessages = items;\r\n this.isViewingMore = true;\r\n }\r\n\r\n get shouldShowNewMessageIndicator() {\r\n return this.isViewingMore \r\n || this.customSortEnabled \r\n || this.sourceFilterMode !== FilterMode.ALL\r\n || this.heldMessages.length > 0;\r\n }\r\n\r\n get shouldHoldNewMessages() {\r\n if (this.customSortEnabled)\r\n return true;\r\n if (this.holdNewMessages || this.isViewingMore) {\r\n console.log(`holding due to settings`);\r\n return true;\r\n }\r\n\r\n if (this.enableHoldOnClick && this.messageClicked)\r\n return true;\r\n\r\n if (this.enableHoldOnScroll) {\r\n let keyMessage: ChatMessage;\r\n\r\n if (this.newestLast)\r\n keyMessage = this.messages[this.messages.length - 1];\r\n else\r\n keyMessage = this.messages[0];\r\n \r\n if (keyMessage) {\r\n const messageElement = this.getElementForComment(keyMessage.id);\r\n if (messageElement) {\r\n if (!this.isElementVisible(messageElement)) {\r\n console.log(`key element is not visible`);\r\n return true;\r\n } else {\r\n console.log(`key element is visible`);\r\n }\r\n } else {\r\n console.log(`could not find key element`);\r\n }\r\n } else {\r\n console.log(`could not find key message`);\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n\r\n private isElementVisible(element: Element) {\r\n const elementRect = element.getBoundingClientRect();\r\n return !!elementRect \r\n && elementRect.bottom >= 0\r\n && elementRect.right >= 0\r\n && elementRect.left <= document.documentElement.clientWidth\r\n && elementRect.top <= document.documentElement.clientHeight;\r\n }\r\n\r\n /**\r\n * Get the CommentComponent instantiated for the given ChatMessage,\r\n * if it exists in the current view. Note that messages which are not \r\n * currently shown to the user will not return a CommentComponent.\r\n * @param message \r\n * @returns \r\n */\r\n getCommentComponentForMessage(message: ChatMessage) {\r\n if (!message)\r\n throw new Error(`You must pass a valid ChatMessage`);\r\n return this.comments.find(x => x.message?.id === message.id);\r\n }\r\n\r\n saveEdit(message: ChatMessage, newMessage: string) {\r\n this._messageEdited.next({ message, newMessage });\r\n }\r\n\r\n likeMessage(message: ChatMessage) {\r\n this._liked.next(message);\r\n }\r\n\r\n unlikeMessage(message: ChatMessage) {\r\n this._unliked.next(message);\r\n }\r\n\r\n reportMessage(message: ChatMessage) {\r\n this._reported.next(message);\r\n }\r\n\r\n selectMessage(message: ChatMessage) {\r\n this._selected.next(message);\r\n }\r\n\r\n selectMessageUser(message: ChatMessage) {\r\n this._userSelected.next(message);\r\n }\r\n\r\n selectUsername(user: User) {\r\n this._usernameSelected.next(user);\r\n }\r\n\r\n selectAvatar(user: User) {\r\n this._avatarSelected.next(user);\r\n }\r\n\r\n sharedMessage(message: ChatMessage) {\r\n this._shared.next(message);\r\n }\r\n\r\n startEditing(message: ChatMessage) {\r\n this.messages.forEach(m => m.transientState.editing = false);\r\n message.transientState.editing = true;\r\n }\r\n\r\n deleteMessage(message: ChatMessage) {\r\n this._deleted.next(message);\r\n }\r\n\r\n private setSource(value: ChatSourceBase) {\r\n this.customSortEnabled = (value?.sortOrder ?? CommentsOrder.NEWEST) !== CommentsOrder.NEWEST;\r\n this.newMessages = [];\r\n this.olderMessages = [];\r\n this.heldMessages = [];\r\n\r\n (window as any).bantaSourceDebug = value;\r\n\r\n if (this._sourceSubs) {\r\n this._sourceSubs.unsubscribe();\r\n this._sourceSubs = null;\r\n }\r\n this._source = value;\r\n\r\n if (value) {\r\n const messages = (value.messages || []).slice();\r\n this.messages = messages;\r\n this.olderMessages = messages.splice(this.maxVisibleMessages, messages.length);\r\n this.hasMore = true; //this.olderMessages.length > 0;\r\n\r\n this._sourceSubs = new Subscription();\r\n this._sourceSubs.add(this._source.messageReceived.subscribe(msg => this.messageReceived(msg)));\r\n this._sourceSubs.add(this._source.messageSent.subscribe(msg => this.messageSent(msg)));\r\n\r\n this._sourceSubs.add(\r\n this.backend.userChanged.subscribe(user => this.currentUser = user)\r\n );\r\n\r\n this.getInitialMessages();\r\n }\r\n }\r\n\r\n private async getInitialMessages() {\r\n let messages = (await this._source.getExistingMessages());\r\n messages.forEach(m => m.transientState ??= {});\r\n this.messages = this.newestLast ? messages.slice().reverse() : messages;\r\n\r\n if (this.messages.length > this.maxVisibleMessages) {\r\n if (this.newestLast) {\r\n this.previousMessages.push(...this.messages.splice(0, this.messages.length - this.maxVisibleMessages));\r\n } else {\r\n this.nextMessages.unshift(...this.messages.splice(this.maxVisibleMessages, this.messages.length));\r\n }\r\n }\r\n\r\n this.debugMessages();\r\n this.sortMessages();\r\n if (this.markSourceLoaded)\r\n this.markSourceLoaded();\r\n }\r\n\r\n debugMessages() {\r\n if (!this.showDebug)\r\n return;\r\n \r\n // console.log([ \r\n // ...this.previousMessages.map(x => x.message), \r\n // '[[',\r\n // ...this.messages.map(x => x.message),\r\n // ']]',\r\n // ...this.nextMessages.map(x => x.message) \r\n // ].map(x => /\\d+/.test(x) ? this.zeroPad(x, 2) : x).join(\" \"));\r\n }\r\n\r\n zeroPad(number: number | string, count: number = 2) {\r\n let str: string;\r\n \r\n if (typeof number === 'number')\r\n str = String(number);\r\n else\r\n str = number;\r\n \r\n while (str.length < count)\r\n str = '0' + str;\r\n \r\n return str;\r\n }\r\n leftPad(str: string, count: number = 2) {\r\n while (str.length < count)\r\n str = ' ' + str;\r\n \r\n return str;\r\n }\r\n \r\n messageIdentity(index: number, chatMessage: ChatMessage) {\r\n return chatMessage.id;\r\n }\r\n\r\n get sourceSortOrder() {\r\n return this.source?.sortOrder ?? CommentsOrder.NEWEST;\r\n }\r\n\r\n get sourceFilterMode() {\r\n return this.source?.filterMode ?? FilterMode.ALL;\r\n }\r\n\r\n /**\r\n * Show the newest content.\r\n * - If an unnatural sort order is active (ie Oldest or Likes), it will be changed to Newest.\r\n * - The new content will be placed where new content goes based on newestLast (replies mode), so if it is true, the content is \r\n * placed at the end, otherwise it is placed at the beginning.\r\n * \r\n * @param event \r\n * @returns \r\n */\r\n async showNewest(event: MouseEvent) {\r\n\r\n // Regardless of how we handle this, clear out our held messages\r\n\r\n this.heldMessages = [];\r\n this.messageClicked = false;\r\n\r\n // If the sort order is not already Newest, switch to Newest and stop.\r\n // The act of changing the sort order will cause the newest content to be loaded.\r\n\r\n let naturalOrder = CommentsOrder.NEWEST;\r\n if (this.sourceSortOrder !== naturalOrder || this.sourceFilterMode !== FilterMode.ALL) {\r\n if (this.sourceSortOrder !== naturalOrder)\r\n this._sortOrderChanged.next(naturalOrder);\r\n if (this.sourceFilterMode !== FilterMode.ALL)\r\n this._filterModeChanged.next(FilterMode.ALL);\r\n return;\r\n }\r\n\r\n // On this path, we are already on Newest, but there is newer content available (such as when new content is \r\n // being buffered due to user engagement on a comment)\r\n\r\n this.isViewingMore = false;\r\n\r\n // Move all newerMessages into messages, respecting the newestLast direction (normal or replies mode)\r\n\r\n if (this.newestLast)\r\n this.messages = this.messages.concat(this.newMessages.splice(0, this.newMessages.length));\r\n else\r\n this.messages = this.newMessages.splice(0, this.newMessages.length).concat(this.messages);\r\n\r\n let overflow = this.messages.splice(this.maxVisibleMessages, this.messages.length);\r\n this.olderMessages = overflow.concat(this.olderMessages);\r\n this.olderMessages.splice(this.maxMessages - this.maxVisibleMessages, this.olderMessages.length);\r\n this.hasMore = this.olderMessages.length > 0;\r\n\r\n // Scroll to the newest comment.\r\n \r\n if (this.messages.length > 0) {\r\n if (this.newestLast) {\r\n this.scrollToComment(this.messages[this.messages.length - 1].id);\r\n } else {\r\n this.scrollToComment(this.messages[0].id);\r\n }\r\n }\r\n }\r\n\r\n get showDebug() {\r\n if (typeof window === 'undefined')\r\n return false;\r\n\r\n return localStorage['banta:debug'] === '1';\r\n }\r\n\r\n get shouldShowNext() {\r\n if (!this.newestLast) {\r\n return this.hasMore || this.nextMessages.length > 0;\r\n }\r\n\r\n return this.nextMessages.length > 0;\r\n }\r\n\r\n get shouldShowPrevious() {\r\n if (this.newestLast) {\r\n return this.hasMore || this.previousMessages.length > 0;\r\n }\r\n\r\n return this.previousMessages.length > 0;\r\n }\r\n\r\n get pageSize() {\r\n return Math.min(20, this.maxVisibleMessages || 20);\r\n }\r\n\r\n async showPrevious() {\r\n this.isViewingMore = true;\r\n let nextPageSize = this.pageSize;\r\n this.isLoadingMore = false;\r\n\r\n if (isNaN(nextPageSize))\r\n throw new Error(`Not safe to load more with NaN page size`);\r\n\r\n if (this.previousMessages.length > 0) {\r\n const storedMessages = this.previousMessages.splice(Math.max(0, this.previousMessages.length - nextPageSize), nextPageSize);\r\n this.messages = [...storedMessages, ...this.messages];\r\n nextPageSize -= storedMessages.length;\r\n }\r\n\r\n\r\n // Load more from backend if needed\r\n // Note: Backend only supports fetching more content in one direction.\r\n\r\n let lastMessage = this.previousMessages[0] ?? this.messages[0];\r\n\r\n if (nextPageSize > 0 && this.newestLast && lastMessage) {\r\n this.isLoadingMore = true;\r\n\r\n let messages = await this.source.loadAfter(lastMessage, nextPageSize);\r\n\r\n messages = messages.slice().reverse(); // because newestLast === true\r\n messages.forEach(m => m.transientState ??= {});\r\n\r\n // In replies mode (newestLast), we want to put these new messages onto the *top* of the set of visible messages.\r\n // Otherwise we want to put them on the *bottom*.\r\n\r\n this.messages = [...messages, ...this.messages];\r\n\r\n // If we didn't receive any messages at all, there's no more to fetch.\r\n\r\n if (messages.length === 0)\r\n this.hasMore = false;\r\n\r\n this.isLoadingMore = false;\r\n }\r\n \r\n // Extract the messages that do not fit in the maxVisibleMessages buffer.\r\n\r\n if (this.messages.length > this.maxVisibleMessages) {\r\n let overflow = this.messages.splice(this.maxVisibleMessages, this.messages.length);\r\n this.nextMessages.unshift(...overflow);\r\n if (this.nextMessages.length > this.maxMessages)\r\n this.nextMessages.splice(this.maxMessages, this.nextMessages.length);\r\n }\r\n\r\n this.debugMessages();\r\n }\r\n\r\n get sortNextLabel() {\r\n if (this.sourceSortOrder === 'newest') {\r\n return 'Older';\r\n } else if (this.sourceSortOrder === 'oldest') {\r\n return 'Newer';\r\n } else if (this.sourceSortOrder === 'likes') {\r\n return 'Less Likes';\r\n }\r\n\r\n return 'More';\r\n }\r\n\r\n get sortPreviousLabel() {\r\n if (this.sourceSortOrder === 'newest') {\r\n return 'Newer';\r\n } else if (this.sourceSortOrder === 'oldest') {\r\n return 'Older';\r\n } else if (this.sourceSortOrder === 'likes') {\r\n return 'More Likes';\r\n }\r\n\r\n return 'More';\r\n }\r\n\r\n get nextLabel() { return this.newestLast ? this.sortPreviousLabel : this.sortNextLabel; }\r\n get previousLabel() { return this.newestLast ? this.sortNextLabel : this.sortPreviousLabel; }\r\n\r\n /**\r\n * Show more content\r\n * - When in replies mode (newestLast), the content is added at the top\r\n * - When in normal mode, the content is added at the bottom\r\n * - The current sort order does *not* factor in here, which is why it is showMore() not showEarlier().\r\n * \r\n * @returns \r\n */\r\n async showNext() {\r\n this.isViewingMore = true;\r\n\r\n let nextPageSize = this.pageSize;\r\n\r\n if (isNaN(nextPageSize))\r\n throw new Error(`Not safe to load more with NaN page size`);\r\n\r\n this.isLoadingMore = false;\r\n\r\n if (this.nextMessages.length > 0) {\r\n const storedMessages = this.nextMessages.splice(0, nextPageSize);\r\n this.messages = [ ...this.messages, ...storedMessages ];\r\n nextPageSize -= storedMessages.length;\r\n }\r\n\r\n const lastMessage = this.olderMessages[this.olderMessages.length - 1] ?? this.messages[this.messages.length - 1];\r\n\r\n if (nextPageSize > 0 && !this.newestLast && lastMessage) {\r\n // Load more from backend\r\n\r\n this.isLoadingMore = true;\r\n\r\n let messages = await this.source.loadAfter(lastMessage, nextPageSize);\r\n messages.forEach(m => m.transientState ??= {});\r\n this.messages = [ ...this.messages, ...messages ];\r\n\r\n // If we didn't receive any messages at all, there's no more to fetch.\r\n\r\n if (messages.length === 0)\r\n this.hasMore = false;\r\n\r\n this.isLoadingMore = false;\r\n }\r\n\r\n // Extract the messages that do not fit in the maxVisibleMessages buffer.\r\n\r\n \r\n if (this.messages.length > this.maxVisibleMessages) {\r\n let overflow = this.messages.splice(0, this.messages.length - this.maxVisibleMessages);\r\n\r\n // Regardless of the order (newestLast), newMessages represents the direction that is being pushed, since it's definition\r\n // depends on that order. Move overflowing messages into newMessages.\r\n \r\n this.previousMessages.push(...overflow);\r\n if (this.previousMessages.length > this.maxMessages)\r\n this.previousMessages.splice(0, this.previousMessages.length - this.maxMessages);\r\n }\r\n\r\n this.debugMessages();\r\n }\r\n\r\n /**\r\n * Show more content\r\n * - When in replies mode (newestLast), the content is added at the top\r\n * - When in normal mode, the content is added at the bottom\r\n * - The current sort order does *not* factor in here, which is why it is showMore() not showEarlier().\r\n * \r\n * @returns \r\n */\r\n async showMore() {\r\n this.isViewingMore = true;\r\n\r\n let nextPageSize = this.pageSize;\r\n\r\n if (isNaN(nextPageSize))\r\n throw new Error(`Not safe to load more with NaN page size`);\r\n\r\n this.isLoadingMore = false;\r\n\r\n if (this.olderMessages.length > 0) {\r\n const storedMessages = this.olderMessages.splice(0, nextPageSize);\r\n this.messages = this.messages.concat(storedMessages);\r\n nextPageSize -= storedMessages.length;\r\n this.hasMore = this.olderMessages.length > 0;\r\n }\r\n\r\n let lastMessage: ChatMessage;\r\n\r\n if (this.newestLast) {\r\n lastMessage = this.olderMessages[0] ?? this.messages[0];\r\n } else {\r\n lastMessage = this.olderMessages[this.olderMessages.length - 1] ?? this.messages[this.messages.length - 1];\r\n }\r\n\r\n if (nextPageSize > 0 && lastMessage) {\r\n // Load more from backend\r\n\r\n this.isLoadingMore = true;\r\n\r\n\r\n if (!lastMessage) {\r\n this.isLoadingMore = false;\r\n this.hasMore = false;\r\n return;\r\n }\r\n\r\n let messages = await this.source.loadAfter(lastMessage, nextPageSize);\r\n\r\n if (this.newestLast)\r\n messages = messages.slice().reverse();\r\n \r\n messages.forEach(m => m.transientState ??= {});\r\n\r\n // In replies mode (newestLast), we want to put these new messages onto the *top* of the set of visible messages.\r\n // Otherwise we want to put them on the *bottom*.\r\n\r\n if (this.newestLast) {\r\n this.messages = messages.concat(this.messages);\r\n } else {\r\n this.messages = this.messages.concat(messages);\r\n }\r\n\r\n // If we didn't receive any messages at all, there's no more to fetch.\r\n\r\n if (messages.length === 0) {\r\n this.hasMore = false;\r\n }\r\n\r\n this.isLoadingMore = false;\r\n }\r\n\r\n // Extract the messages that do not fit in the maxVisibleMessages buffer.\r\n\r\n if (this.messages.length > this.maxVisibleMessages) {\r\n let overflow: ChatMessage[] = [];\r\n \r\n // Move overflowing messages into newMessages.\r\n // Regardless of the order (newestLast), newMessages represents the direction that is being loaded, \r\n // since it's definition depends on that order. \r\n\r\n if (this.newestLast) {\r\n overflow = this.messages.splice(this.maxVisibleMessages, this.messages.length);\r\n this.newMessages = overflow.concat(this.newMessages);\r\n this.newMessages.splice(this.maxMessages - this.maxVisibleMessages, this.newMessages.length);\r\n } else {\r\n overflow = this.messages.splice(0, this.messages.length - this.maxVisibleMessages);\r\n this.newMessages.push(...overflow);\r\n if (this.newMessages.length > this.maxMessages - this.maxVisibleMessages)\r\n this.newMessages.splice(0, this.newMessages.length - (this.maxMessages - this.maxVisibleMessages));\r\n }\r\n \r\n }\r\n }\r\n\r\n private heldMessages: ChatMessage[] = [];\r\n\r\n private addMessage(message: ChatMessage) {\r\n\r\n if (!message.transientState)\r\n message.transientState ??= {};\r\n \r\n let destination = this.messages;\r\n let bucket = this.olderMessages;\r\n let newestLast = this.newestLast;\r\n\r\n if (this.shouldHoldNewMessages) {\r\n this.heldMessages.push(message);\r\n destination = this.newMessages;\r\n bucket = null;\r\n }\r\n\r\n // If we aren't on the newest sort order, new messages shouldn't be added at all\r\n if (this.sourceSortOrder !== CommentsOrder.NEWEST)\r\n return;\r\n\r\n \r\n if (newestLast) {\r\n destination.push(message);\r\n\r\n if (this.maxVisibleMessages > 0) {\r\n let overflow = destination.splice(this.maxVisibleMessages, destination.length);\r\n bucket?.push(...overflow);\r\n }\r\n } else {\r\n destination.unshift(message);\r\n \r\n if (this.maxVisibleMessages > 0) {\r\n let overflow = destination.splice(this.maxVisibleMessages, destination.length);\r\n bucket?.unshift(...overflow);\r\n }\r\n }\r\n\r\n if (bucket?.length > 0)\r\n this.hasMore = true;\r\n\r\n message.pagingCursor = String(this.incrementPagingCursors());\r\n this.sortMessages();\r\n }\r\n\r\n private incrementPagingCursors() {\r\n if (this.source.sortOrder !== CommentsOrder.NEWEST)\r\n return;\r\n \r\n let maxPagingCursor = 0;\r\n for (let group of [this.messages, this.olderMessages, this.newMessages]) {\r\n for (let message of group) {\r\n if (message.pagingCursor) {\r\n let pagingCursor = Number(message.pagingCursor) + 1;\r\n if (pagingCursor > maxPagingCursor)\r\n maxPagingCursor = pagingCursor;\r\n message.pagingCursor = String(pagingCursor);\r\n }\r\n }\r\n }\r\n\r\n return maxPagingCursor;\r\n }\r\n\r\n /**\r\n * Wait for all currently visible comments to be fully loaded, including all attachments.\r\n * Doing this will prevent layout shift when scrolling to a specific comment.\r\n */\r\n async waitForAllCommentsToLoad() {\r\n await new Promise(r => setTimeout(r, 100));\r\n await this.sourceLoaded;\r\n await Promise.all(this.comments.map(x => x.waitForLoad()));\r\n }\r\n\r\n private sortMessages() {\r\n if (!this.source)\r\n return;\r\n \r\n let sorter: (a: ChatMessage, b: ChatMessage) => number;\r\n\r\n if (this.source.sortOrder === CommentsOrder.LIKES)\r\n sorter = (a, b) => b.likes - a.likes;\r\n else if (this.source.sortOrder === CommentsOrder.NEWEST)\r\n sorter = (a, b) => (b.sentAt - a.sentAt) * (this.newestLast ? -1 : 1);\r\n else if (this.source.sortOrder === CommentsOrder.OLDEST)\r\n sorter = (a, b) => (a.sentAt - b.sentAt) * (this.newestLast ? -1 : 1);\r\n\r\n this.messages.sort(sorter);\r\n this.olderMessages.sort(sorter);\r\n this.newMessages.sort(sorter);\r\n }\r\n\r\n private messageReceived(message: ChatMessage) {\r\n this.addMessage(message);\r\n }\r\n\r\n isScrolledToLatest() {\r\n if (!this.messageContainer)\r\n return false;\r\n\r\n const el = this.messageContainer.nativeElement;\r\n const currentScroll = el.scrollTop;\r\n const currentTotal = el.scrollHeight - el.offsetHeight;\r\n\r\n return currentScroll > currentTotal - 10;\r\n }\r\n\r\n private messageSent(message: ChatMessage) {\r\n this.addMessage(message);\r\n\r\n if (!this.messageContainer)\r\n return;\r\n\r\n this.scrollToLatest();\r\n }\r\n\r\n scrollToLatest() {\r\n if (!this.messageContainer) {\r\n return;\r\n }\r\n\r\n const el = this.messageContainer.nativeElement;\r\n\r\n el.scrollIntoView({ block: 'start' });\r\n //el.scrollTop = el.scrollHeight;\r\n }\r\n\r\n get element() {\r\n return this.elementRef.nativeElement;\r\n }\r\n\r\n async scrollToComment(commentId: ChatMessage['id']) {\r\n if (typeof window === 'undefined')\r\n return;\r\n \r\n await this.waitForAllCommentsToLoad();\r\n\r\n const comment = this.getElementForComment(commentId);\r\n if (comment) {\r\n comment.scrollIntoView({\r\n inline: 'center',\r\n block: 'center'\r\n });\r\n }\r\n }\r\n\r\n getElementForComment(commentId: string) {\r\n return this.element.querySelector(`[data-comment-id=\"${commentId}\"]`);\r\n }\r\n\r\n mentionsMe(message: ChatMessage) {\r\n if (!this.currentUser)\r\n return false;\r\n\r\n if (message.message.includes(`@${this.currentUser.username}`))\r\n return true;\r\n\r\n return false;\r\n }\r\n}\r\n","<div class=\"banta-message-container\" #messageContainer>\r\n <ng-content select=\"[data-before]\"></ng-content>\r\n\r\n <div class=\"banta-top-sticky\">\r\n @if (!newestLast) {\r\n <button \r\n mat-button \r\n class=\"banta-nav\" \r\n [class.visible]=\"shouldShowNewMessageIndicator\" \r\n href=\"javascript:;\" \r\n (click)=\"showNewest($event)\"\r\n >\r\n <mat-icon>file_upload</mat-icon>\r\n Newest\r\n @if (heldMessages.length > 0) {\r\n <span class=\"count\">{{ heldMessages.length | number }}</span>\r\n }\r\n </button>\r\n }\r\n </div>\r\n\r\n <button mat-button class=\"pager\" (click)=\"showPrevious()\" [class.visible]=\"shouldShowPrevious\" [disabled]=\"isLoadingMore\">\r\n <mat-icon>expand_less</mat-icon>\r\n {{ previousLabel }}\r\n </button>\r\n\r\n @for (message of messages; track message.id) {\r\n @if (!message.hidden) {\r\n <banta-comment\r\n class=\"abbreviated\"\r\n \r\n [customMenuItems]=\"customMenuItems\"\r\n [message]=\"message\"\r\n [mine]=\"currentUser?.id === message.user?.id\"\r\n [permissions]=\"source?.permissions\"\r\n [showReplyAction]=\"allowReplies\"\r\n [editing]=\"message.transientState.editing\"\r\n [genericAvatarUrl]=\"genericAvatarUrl\"\r\n [readonly]=\"source?.readonly\"\r\n (click)=\"messageClicked = true\"\r\n (editStarted)=\"startEditing(message)\"\r\n (deleted)=\"deleteMessage(message)\"\r\n (editEnded)=\"message.transientState.editing = false\"\r\n (edited)=\"saveEdit(message, $event)\"\r\n (userSelected)=\"selectMessageUser(message)\"\r\n (avatarSelected)=\"selectAvatar($event)\"\r\n (usernameSelected)=\"selectUsername($event)\"\r\n (liked)=\"likeMessage(message)\"\r\n (unliked)=\"unlikeMessage(message)\"\r\n (reported)=\"reportMessage(message)\"\r\n (selected)=\"selectMessage(message)\"\r\n (shared)=\"sharedMessage($event)\"\r\n />\r\n <div class=\"banta-inline-replies-container\" *ngIf=\"selectedMessage === message\">\r\n <ng-content select=\".inline-replies\"></ng-content>\r\n </div>\r\n }\r\n } @empty {\r\n <div class=\"banta-empty-state\" *ngIf=\"showEmptyState\">\r\n Be the first to comment!\r\n </div>\r\n }\r\n\r\n <button mat-button class=\"pager\" (click)=\"showNext()\" [class.visible]=\"shouldShowNext\" [disabled]=\"isLoadingMore\">\r\n <mat-icon>expand_more</mat-icon>\r\n {{ nextLabel }}\r\n </button>\r\n\r\n <div class=\"banta-nav-point banta-bottom-sticky\">\r\n @if (newestLast) {\r\n <button \r\n [matBadge]=\"10\" matBadgeOverlap=\"false\"\r\n matBadgePosition=\"after\" matBadgeSize=\"large\" \r\n mat-button \r\n class=\"banta-nav\" \r\n [class.visible]=\"shouldShowNewMessageIndicator\" \r\n href=\"javascript:;\" \r\n (click)=\"showNewest($event)\"\r\n >\r\n <mat-icon>file_download</mat-icon>\r\n Newest\r\n @if (heldMessages.length > 0) {\r\n <span class=\"count\">{{ heldMessages.length | number }}</span>\r\n }\r\n </button>\r\n }\r\n </div>\r\n\r\n <div class=\"banta-loading-more\" *ngIf=\"isLoadingMore\">\r\n <mat-spinner></mat-spinner>\r\n </div>\r\n\r\n @if (showDebug) {\r\n <div style=\"color: #666\">\r\n ({{ previousMessages.length }} .. {{ messages.length }} .. {{ nextMessages.length }})\r\n\r\n dir={{newestLast ? '-1' : '1'}}\r\n v={{maxVisibleMessages}}, M={{maxMessages}}\r\n </div>\r\n }\r\n\r\n <ng-content select=\":not([data-before]):not(.inline-replies)\"></ng-content>\r\n</div>\r\n","import { Directive } from \"@angular/core\";\r\n\r\n@Directive({\r\n selector: `[bantaReplySendOptions]`\r\n})\r\nexport class BantaReplySendOptionsDirective {}","import { Component, ElementRef, Input, Output, ViewChild } from '@angular/core';\r\nimport { CDNProvider, ChatMessageAttachment } from '@banta/common';\r\nimport { Subject } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'banta-attachment-button',\r\n templateUrl: './attachment-button.component.html',\r\n styleUrls: ['./attachment-button.component.scss']\r\n})\r\nexport class AttachmentButtonComponent {\r\n constructor(\r\n private cdnProvider: CDNProvider,\r\n ) {\r\n }\r\n\r\n //#region Properties\r\n\r\n private _addedAttachment = new Subject<ChatMessageAttachment>();\r\n private _attachmentError = new Subject<ChatMessageAttachment>();\r\n\r\n //#endregion\r\n //#region Inputs\r\n\r\n @Input() disabled = false;\r\n\r\n //#endregion\r\n //#region Outputs\r\n\r\n @Output() get addedAttachment() { return this._addedAttachment.asObservable(); }\r\n @Output() get attachmentError() { return this._attachmentError.asObservable(); }\r\n\r\n //#endregion\r\n //#region UI Bindings\r\n\r\n @ViewChild('fileUpload', { static: false }) fileInput: ElementRef<HTMLInputElement>;\r\n\r\n //#endregion\r\n\r\n show() { this.fileInput.nativeElement.click(); }\r\n\r\n async fileChange(event: Event): Promise<void> {\r\n const element = (event.currentTarget as HTMLInputElement);\r\n if (element.files.length) {\r\n const file = element.files[0];\r\n let publicURL: string;\r\n\r\n let attachment: ChatMessageAttachment = {\r\n type: file.type,\r\n url: undefined,\r\n transientState: {\r\n uploading: true,\r\n error: false,\r\n errorMessage: undefined\r\n }\r\n }\r\n\r\n this._addedAttachment.next(attachment);\r\n\r\n try {\r\n publicURL = await this.cdnProvider.uploadImage(file);\r\n } catch (e) {\r\n attachment.transientState.error = true;\r\n attachment.transientState.errorMessage = \"Failed to upload\";\r\n\r\n console.error(`[Banta] Caught an error while uploading image to CDN:`);\r\n console.error(e);\r\n alert(e.message);\r\n\r\n this._attachmentError.next(attachment);\r\n return;\r\n }\r\n\r\n // If no URL was returned, then an error must have occurred. Presumably the CDN\r\n // provider has conveyed an error to the user.\r\n if (!publicURL)\r\n return;\r\n\r\n attachment.url = publicURL;\r\n attachment.transientState = undefined;\r\n }\r\n }\r\n}","<button matTooltip=\"Add an image or gif\" #button type=\"button\" mat-icon-button (click)=\"show()\" [disabled]=\"disabled\">\r\n\t<mat-icon>image</mat-icon>\r\n</button>\r\n<input style=\"display: none;\" #fileUpload [multiple]=\"false\" (change)=\"fileChange($event)\" type=\"file\" >","import { Directive, ElementRef, Input, Output } from \"@angular/core\";\r\nimport { ChatMessage, ChatMessageAttachment } from \"@banta/common\";\r\nimport { Subject } from \"rxjs\";\r\nimport { AttachmentFragment } from \"../attachment-scraper\";\r\nimport { ChatBackendBase } from \"../chat-backend-base\";\r\n\r\ninterface AttachmentFragmentState {\r\n fragment: AttachmentFragment;\r\n resolution: Promise<ChatMessageAttachment>;\r\n}\r\n\r\n@Directive({\r\n selector: '[attachmentScraper]'\r\n})\r\nexport class AttachmentScraperDirective {\r\n constructor(\r\n private elementRef: ElementRef<HTMLTextAreaElement>,\r\n private chatBackend: ChatBackendBase\r\n ) {\r\n }\r\n\r\n @Input() attachments: ChatMessageAttachment[] = [];\r\n @Output() attachmentsChange = new Subject<ChatMessageAttachment[]>();\r\n ngOnInit() {\r\n if (typeof window === 'undefined')\r\n return;\r\n \r\n this.element.addEventListener('keydown', () => {\r\n clearTimeout(this.scrapeTimeout);\r\n this.scrapeTimeout = setTimeout(() => this.scrape(), this.scrapeDebounce);\r\n });\r\n }\r\n\r\n get element() {\r\n return this.elementRef?.nativeElement;\r\n }\r\n\r\n get text() {\r\n return this.element.value;\r\n }\r\n\r\n\r\n private scrapeTimeout;\r\n private scrapeDebounce = 1500;\r\n private fragments = new Map<string, AttachmentFragmentState>();\r\n private scrape() {\r\n let message: ChatMessage = {\r\n likes: 0,\r\n message: this.text,\r\n sentAt: undefined,\r\n user: null,\r\n attachments: this.attachments\r\n };\r\n\r\n let foundFragments: string[] = [];\r\n\r\n for (let scraper of this.chatBackend.attachmentScrapers) {\r\n let fragments = scraper.findFragments(message);\r\n if (!fragments) {\r\n console.error(`Attachment fragment scraper ${scraper.constructor.name} is implemented incorrectly: Returned null instead of array`);\r\n continue;\r\n }\r\n for (let fragment of fragments) {\r\n foundFragments.push(fragment.text);\r\n if (!this.fragments.has(fragment.text)) {\r\n this.fragments.set(fragment.text, {\r\n fragment,\r\n resolution: undefined\r\n });\r\n }\r\n }\r\n }\r\n\r\n // Remove fragments that are no longer in the message.\r\n let removedFragments: string[] = [];\r\n for (let [key] of this.fragments) {\r\n if (!foundFragments.includes(key))\r\n removedFragments.push(key);\r\n }\r\n for (let removedFragment of removedFragments) {\r\n this.fragments.delete(removedFragment);\r\n }\r\n\r\n // Process any fragments that are not yet resolved (or being \r\n // resolved)\r\n\r\n for (let [key, state] of this.fragments) {\r\n if (state.resolution)\r\n continue;\r\n\r\n state.resolution = new Promise(async (resolve, reject) => {\r\n for (let resolver of this.chatBackend.attachmentResolvers) {\r\n try {\r\n let attachment = await resolver.resolveFragment(message, state.fragment);\r\n if (attachment) {\r\n console.dir(attachment);\r\n this.attachments.push(attachment);\r\n this.attachmentsChange.next(this.attachments.slice());\r\n resolve(attachment);\r\n break;\r\n }\r\n } catch (e) {\r\n console.error(`Caught error during attachment resolver ${resolver.constructor.name}:`);\r\n console.error(e);\r\n continue;\r\n }\r\n }\r\n });\r\n }\r\n }\r\n\r\n}","import { Component, ElementRef, HostBinding, Input, Output, ViewChild } from \"@angular/core\";\r\nimport { ChatMessage, ChatMessageAttachment, User } from \"@banta/common\";\r\nimport { Subject, Subscription } from \"rxjs\";\r\nimport { ChatSourceBase } from \"../../chat-source-base\";\r\nimport { AttachmentFragment } from \"../../attachment-scraper\";\r\nimport { EMOJIS } from \"../../emoji\";\r\nimport { SignInState } from \"../../chat-source\";\r\n\r\nexport interface AutoCompleteOption {\r\n label : string;\r\n action? : () => void;\r\n}\r\n\r\nexport interface HashTag {\r\n hashtag : string;\r\n description : string;\r\n}\r\n\r\ninterface AttachmentFragmentState {\r\n fragment: AttachmentFragment;\r\n resolution: Promise<ChatMessageAttachment>;\r\n}\r\n\r\n@Component({\r\n selector: 'banta-comment-field',\r\n templateUrl: './comment-field.component.html',\r\n styleUrls: ['./comment-field.component.scss']\r\n})\r\nexport class CommentFieldComponent {\r\n ngAfterViewInit() {\r\n if (typeof window !== 'undefined') {\r\n let root = document.body.querySelector('[ng-version]') || document.body;\r\n root.appendChild(this.autocompleteEl.nativeElement);\r\n }\r\n }\r\n\r\n //#region Source\r\n\r\n private _source : ChatSourceBase;\r\n @Input() get source() : ChatSourceBase { return this._source; }\r\n set source(value) { this.setSource(value); }\r\n\r\n //#endregion\r\n //#region Properties\r\n\r\n private _permissionDeniedError = new Subject<string>();\r\n private errorTimeout;\r\n private _subs = new Subscription();\r\n\r\n sending = false;\r\n sendError : Error;\r\n expandError = false;\r\n autocompleteVisible = false;\r\n autocompleteOptions : AutoCompleteOption[] = [];\r\n completionFunc : (str : string) => AutoCompleteOption[];\r\n completionPrefix : string;\r\n autoCompleteSelected : number = 0;\r\n text: string = '';\r\n chatMessageAttachments: ChatMessageAttachment[] = [];\r\n\r\n //#endregion\r\n //#region Inputs\r\n\r\n @Input() user : User;\r\n @Input() @HostBinding('class.can-comment') canComment = true;\r\n @Input() signInState: SignInState;\r\n @Input() allowAttachments = false;\r\n @Input() transientMessage: string;\r\n @Input() sendLabel = 'Send';\r\n @Input() signingInLabel = 'Signing in...';\r\n @Input() sendingLabel = 'Sending';\r\n @Input() label = 'Post a comment';\r\n @Input() permissionDeniedLabel = 'Unavailable';\r\n @Input() signInLabel = 'Sign In';\r\n @Input() maxLength = 1500;\r\n @Input() placeholder = '';\r\n @Input() shouldInterceptMessageSend?: (message: ChatMessage, source: ChatSourceBase) => boolean | Promise<boolean>;\r\n @Input() hashtags : HashTag[];\r\n @Input() participants : User[] = [];\r\n @Input() genericAvatarUrl: string;\r\n @Input() url: string;\r\n @Input() submit: (message: ChatMessage) => boolean;\r\n @Input() readonly = false;\r\n\r\n //#endregion\r\n //#region Outputs\r\n\r\n @Output() signInSelected = new Subject<void>();\r\n @Output() editAvatarSelected = new Subject<void>();\r\n @Output() focusChange = new Subject<boolean>();\r\n @Output() textChanged = new Subject<void>();\r\n @Output() get permissionDeniedError() { return this._permissionDeniedError; }\r\n \r\n //#endregion\r\n //#region UI Bindings\r\n\r\n @ViewChild('autocomplete') autocompleteEl : ElementRef<HTMLElement>;\r\n @ViewChild('autocompleteContainer') autocompleteContainerEl : ElementRef<HTMLElement>;\r\n @ViewChild('textarea') textareaEl : ElementRef<HTMLTextAreaElement>;\r\n\r\n get indicatorState() {\r\n if (this.transientMessage) {\r\n return 'transient';\r\n } else if (this.sending) {\r\n return 'sending';\r\n } else if (this.sendError) {\r\n return 'error';\r\n } else {\r\n return 'none';\r\n }\r\n }\r\n\r\n get buttonState() {\r\n if (this.sending)\r\n return 'sending';\r\n else if (this.signInState === 'signing-in')\r\n return 'signing-in';\r\n else if (!this.canComment)\r\n return 'permission-denied';\r\n else\r\n return 'send';\r\n }\r\n\r\n get sendButtonEnabled() {\r\n if (this.readonly)\r\n return false;\r\n \r\n if (this.signInState === 'signing-in')\r\n return false;\r\n \r\n if (!['connected', 'restored'].includes(this.source?.state ?? 'connected'))\r\n return false;\r\n \r\n if (!this.canComment) {\r\n // In this case, we want to enable the button because we want to be able to \r\n // send the permissionDenied message up to the host.\r\n return true;\r\n }\r\n\r\n return this.isValidMessage\r\n && !this.hasPendingAttachments\r\n && !this.sending\r\n ;\r\n }\r\n\r\n get userAvatarUrl() { return this.user?.avatarUrl || this.genericAvatarUrl; }\r\n get isValidMessage() { return (this.text || this.chatMessageAttachments.length > 0); }\r\n get hasPendingAttachments() { return this.chatMessageAttachments.some(x => x.transientState); }\r\n\r\n //#endregion\r\n //#region Private Component API\r\n\r\n private setSource(value: ChatSourceBase) {\r\n if (this._source) {\r\n this._subs?.unsubscribe();\r\n this._source = null;\r\n }\r\n\r\n this._source = value;\r\n this._subs = new Subscription();\r\n if (this._source) {\r\n setTimeout(() => {\r\n if (this._source.connectionStateChanged) {\r\n this._subs.add(this._source.connectionStateChanged.subscribe(state => {\r\n if (state === 'lost') {\r\n if (this._source.errorState === 'server-issue')\r\n this.transientMessage = `Reconnecting..`;\r\n else\r\n this.transientMessage = `Reconnecting...`;\r\n } else if (state === 'restored') {\r\n this.transientMessage = undefined;\r\n } else if (state === 'connecting') {\r\n this.transientMessage = `Connecting...`;\r\n }\r\n }));\r\n }\r\n });\r\n }\r\n }\r\n\r\n //#endregion\r\n //#region Actions\r\n\r\n sendPermissionDenied(message: string) { this._permissionDeniedError.next(message); }\r\n activateAutoComplete(option : AutoCompleteOption) { option.action(); this.dismissAutoComplete(); }\r\n onFocus() { this.focusChange.next(true); }\r\n onBlur() { this.focusChange.next(false); setTimeout(() => this.dismissAutoComplete(), 250); }\r\n showSignIn() { this.signInSelected.next(); }\r\n showEditAvatar() { this.editAvatarSelected.next(); }\r\n insertEmoji(text : string) { this.text += text; }\r\n\r\n showAutoComplete(options : AutoCompleteOption[]) {\r\n if (typeof window === 'undefined')\r\n return;\r\n \r\n this.autoCompleteSelected = 0;\r\n this.autocompleteOptions = options;\r\n let pos = this.autocompleteContainerEl.nativeElement.getBoundingClientRect();\r\n let size = this.autocompleteEl.nativeElement.getBoundingClientRect();\r\n\r\n this.autocompleteEl.nativeElement.style.left = `${window.scrollX + pos.left}px`;\r\n this.autocompleteEl.nativeElement.style.top = `${window.scrollY + pos.top}px`;\r\n this.autocompleteEl.nativeElement.style.width = `${pos.width}px`;\r\n this.autocompleteVisible = true;\r\n }\r\n\r\n dismissAutoComplete() {\r\n this.autocompleteVisible = false;\r\n this.completionFunc = null;\r\n this.completionPrefix = '';\r\n }\r\n\r\n indicateError(message : string) {\r\n this.sendError = new Error(message);\r\n this.expandError = false;\r\n clearTimeout(this.errorTimeout);\r\n this.errorTimeout = setTimeout(() => {\r\n this.expandError = true;\r\n this.errorTimeout = setTimeout(() => {\r\n this.expandError = false;\r\n }, 5*1000);\r\n }, 100);\r\n\r\n // On mobile, just show an alert dialog\r\n if (typeof window !== 'undefined' && window.innerWidth < 430)\r\n alert(message);\r\n }\r\n\r\n async autocomplete(replacement : string) {\r\n let el = this.textareaEl.nativeElement;\r\n this.text = this.text.slice(0, el.selectionStart - this.completionPrefix.length) + replacement + this.text.slice(el.selectionStart);\r\n }\r\n\r\n async insert(str : string) {\r\n let el = this.textareaEl.nativeElement;\r\n this.text = this.text.slice(0, el.selectionStart) + str + this.text.slice(el.selectionStart);\r\n }\r\n\r\n async onKeyDown(event : KeyboardEvent) {\r\n if (this.autocompleteVisible) {\r\n if (event.key === 'Escape') {\r\n this.dismissAutoComplete();\r\n return;\r\n }\r\n\r\n if (event.key === 'Shift') {\r\n return;\r\n }\r\n\r\n if (event.key === 'Enter') {\r\n if (this.autocompleteOptions[this.autoCompleteSelected]) {\r\n this.activateAutoComplete(this.autocompleteOptions[this.autoCompleteSelected]);\r\n event.stopPropagation();\r\n event.preventDefault();\r\n return;\r\n }\r\n }\r\n\r\n if (event.key === 'ArrowUp') {\r\n if (this.autoCompleteSelected === 0)\r\n this.autoCompleteSelected = this.autocompleteOptions.length - 1;\r\n else\r\n this.autoCompleteSelected = this.autoCompleteSelected - 1;\r\n event.stopPropagation();\r\n event.preventDefault();\r\n return;\r\n } else if (event.key === 'ArrowDown') {\r\n this.autoCompleteSelected = (this.autoCompleteSelected + 1) % this.autocompleteOptions.length;\r\n event.stopPropagation();\r\n event.preventDefault();\r\n return;\r\n }\r\n }\r\n\r\n if (event.key === 'Enter' && event.ctrlKey) {\r\n await this.sendMessage();\r\n return;\r\n }\r\n\r\n if (this.completionFunc) {\r\n if (event.key === 'Backspace') {\r\n this.completionPrefix = this.completionPrefix.slice(0, this.completionPrefix.length - 1);\r\n\r\n if (this.completionPrefix === '') {\r\n this.dismissAutoComplete();\r\n return;\r\n }\r\n } else if (event.key === ' ' || event.key.length > 1) {\r\n this.dismissAutoComplete();\r\n return;\r\n } else {\r\n this.completionPrefix += event.key;\r\n }\r\n\r\n this.showAutoComplete(this.completionFunc(this.completionPrefix));\r\n } else {\r\n if (event.key === ':') {\r\n this.startAutoComplete(event, prefix => {\r\n prefix = prefix.slice(1);\r\n\r\n // makes :-), :-( etc work (as they are \":)\" etc in the db)\r\n if (prefix.startsWith('-'))\r\n prefix = prefix.slice(1);\r\n\r\n return Object.keys(EMOJIS)\r\n .filter(k => k.includes(prefix) || EMOJIS[k].keywords.some(kw => kw.includes(prefix)))\r\n .map(k => ({\r\n label: `${EMOJIS[k].char} ${k}`,\r\n action: () => this.autocomplete(EMOJIS[k].char)\r\n }))\r\n .slice(0, 5)\r\n ;\r\n });\r\n } else if (event.key === '@') {\r\n this.startAutoComplete(event, prefix => {\r\n prefix = prefix.slice(1);\r\n return this.participants.filter(x => x.username.includes(prefix))\r\n .map(p => ({\r\n label: `@${p.username} -- ${p.displayName}`,\r\n action: () => this.autocomplete(`@${p.username}`)\r\n }))\r\n ;\r\n });\r\n } else if (event.key === '#') {\r\n this.startAutoComplete(event, prefix => {\r\n prefix = prefix.slice(1);\r\n\r\n return this.hashtags\r\n .filter(ht => ht.hashtag.includes(prefix))\r\n .map(ht => ({\r\n label: `#${ht.hashtag}${ht.description ? ` -- ${ht.description}` : ``}`,\r\n action: () => this.autocomplete(`#${ht.hashtag}`)\r\n }))\r\n .slice(0, 5)\r\n ;\r\n });\r\n }\r\n }\r\n }\r\n\r\n startAutoComplete(event : KeyboardEvent, completionFunc : (str : string) => AutoCompleteOption[]) {\r\n this.completionPrefix = event.key;\r\n this.completionFunc = completionFunc;\r\n this.showAutoComplete(this.completionFunc(this.completionPrefix));\r\n }\r\n\r\n async sendMessage() {\r\n if (!this.source)\r\n return;\r\n\r\n this.sending = true;\r\n this.sendError = null;\r\n try {\r\n let text = (this.text || '').trim();\r\n\r\n if (this.canComment && !this.isValidMessage)\r\n return;\r\n\r\n let message : ChatMessage = {\r\n user: this.user,\r\n sentAt: Date.now(),\r\n url: this.url ?? (typeof window !== 'undefined' ? location.href : undefined),\r\n likes: 0,\r\n message: text,\r\n attachments: this.chatMessageAttachments.filter(x => x.url)\r\n };\r\n\r\n try {\r\n await this.submit(message);\r\n this.text = '';\r\n this.chatMessageAttachments = [];\r\n } catch (e) {\r\n console.error(`[Banta/CommentField] sendMessage() failed: ${e.message}`);\r\n await new Promise<void>(resolve => setTimeout(() => resolve(), 1000));\r\n this.indicateError(e.message);\r\n }\r\n\r\n } finally {\r\n this.sending = false;\r\n setTimeout(() => {\r\n this.textareaEl.nativeElement.focus();\r\n }, 100);\r\n }\r\n }\r\n\r\n addedAttachment(attachment: ChatMessageAttachment) { this.chatMessageAttachments.push(attachment); }\r\n\r\n attachmentError(attachment: ChatMessageAttachment) {\r\n setTimeout(() => {\r\n this.chatMessageAttachments = this.chatMessageAttachments.filter(x => x !== attachment);\r\n }, 3000);\r\n }\r\n\r\n\tremoveAttachment(attachment: ChatMessageAttachment) {\r\n let index = this.chatMessageAttachments.indexOf(attachment);\r\n if (index >= 0)\r\n\t\t this.chatMessageAttachments.splice(index, 1);\r\n\t}\r\n\r\n alertError() {\r\n if (!this.sendError)\r\n return;\r\n alert(this.sendError.message);\r\n }\r\n}\r\n","<form class=\"new-message\" (submit)=\"sendMessage()\">\r\n <div class=\"banta-avatar-container\">\r\n <a href=\"javascript:;\"\r\n class=\"banta-avatar\"\r\n (click)=\"showEditAvatar()\"\r\n [style.background-image]=\"'url(' + userAvatarUrl + ')'\"\r\n ></a>\r\n </div>\r\n <div class=\"banta-text-container\">\r\n <div class=\"banta-field-container\">\r\n <div class=\"banta-field-row\">\r\n <mat-form-field class=\"message-field\" appearance=\"outline\" floatLabel=\"always\">\r\n <mat-label>{{label}}</mat-label>\r\n <textarea\r\n #textarea\r\n name=\"message\"\r\n attachmentScraper\r\n [(attachments)]=\"chatMessageAttachments\"\r\n [placeholder]=\"placeholder\"\r\n matInput\r\n cdkTextareaAutosize\r\n [maxlength]=\"maxLength\"\r\n (keydown)=\"onKeyDown($event)\"\r\n (focus)=\"onFocus()\"\r\n (blur)=\"onBlur()\"\r\n [disabled]=\"sending || readonly\"\r\n [(ngModel)]=\"text\"\r\n autocomplete=\"off\"\r\n ></textarea>\r\n </mat-form-field>\r\n <div class=\"banta-options-line\">\r\n <ng-container *ngIf=\"indicatorState === 'transient'\">\r\n <div class=\"transient-message\" [class.expanded]=\"true\" [matTooltip]=\"transientMessage\" (click)=\"alertError()\">\r\n <mat-spinner [inline]=\"true\" [diameter]=\"15\"></mat-spinner>\r\n {{transientMessage}}\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"indicatorState === 'sending'\">\r\n <div class=\"banta-transient-message\" [class.expanded]=\"true\" (click)=\"alertError()\">\r\n <mat-spinner [inline]=\"true\" [diameter]=\"15\"></mat-spinner>\r\n {{sendingLabel}}...\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"indicatorState === 'error'\">\r\n <div class=\"banta-error-message\" [class.expanded]=\"expandError\" [matTooltip]=\"sendError.message\" (click)=\"alertError()\">\r\n <mat-icon *ngIf=\"sendError\">error</mat-icon>\r\n {{sendError.message}}\r\n </div>\r\n </ng-container>\r\n\r\n\r\n <div class=\"spacer\"></div>\r\n <div class=\"custom\">\r\n <ng-content></ng-content>\r\n </div>\r\n <banta-attachment-button \r\n *ngIf=\"allowAttachments\"\r\n [disabled]=\"readonly\"\r\n (addedAttachment)=\"addedAttachment($event)\"\r\n (attachmentError)=\"attachmentError($event)\"\r\n ></banta-attachment-button>\r\n <emoji-selector-button [disabled]=\"readonly\" (selected)=\"insertEmoji($event)\"></emoji-selector-button>\r\n </div>\r\n \r\n </div>\r\n <div #autocompleteContainer class=\"autocomplete-container\">\r\n <div #autocomplete class=\"autocomplete\" [class.visible]=\"autocompleteVisible\">\r\n\r\n <div>\r\n <strong>{{completionPrefix}}</strong>...\r\n </div>\r\n <a\r\n mat-button\r\n *ngFor=\"let option of autocompleteOptions; index as index\"\r\n (click)=\"activateAutoComplete(option)\"\r\n [class.active]=\"autoCompleteSelected === index\"\r\n >\r\n {{option.label}}\r\n </a>\r\n </div>\r\n </div>\r\n\r\n <banta-attachments \r\n [attachments]=\"chatMessageAttachments\"\r\n [editing]=\"true\"\r\n (remove)=\"removeAttachment($event)\"\r\n ></banta-attachments>\r\n </div>\r\n </div>\r\n <div class=\"banta-actions\">\r\n <ng-container *ngIf=\"!user\">\r\n <button\r\n mat-raised-button\r\n color=\"primary\"\r\n type=\"button\"\r\n (click)=\"showSignIn()\"\r\n >{{signInLabel}}</button>\r\n </ng-container>\r\n <ng-container *ngIf=\"user\">\r\n <button\r\n *ngIf=\"buttonState === 'send'\"\r\n mat-raised-button\r\n class=\"send\"\r\n color=\"primary\"\r\n [disabled]=\"!sendButtonEnabled\"\r\n >\r\n <mat-icon>chevron_right</mat-icon>\r\n <span class=\"label\">{{sendLabel}}</span>\r\n </button>\r\n <button\r\n *ngIf=\"buttonState === 'sending' || buttonState === 'signing-in'\"\r\n mat-raised-button\r\n class=\"send\"\r\n color=\"primary\"\r\n [disabled]=\"!sendButtonEnabled\"\r\n >\r\n <mat-spinner class=\"icon\" diameter=\"18\" strokeWidth=\"2\"></mat-spinner>\r\n <span class=\"label\">\r\n <ng-container *ngIf=\"buttonState === 'sending'\">\r\n {{sendingLabel}}\r\n </ng-container>\r\n <ng-container *ngIf=\"buttonState === 'signing-in'\">\r\n {{signingInLabel}}\r\n </ng-container>\r\n </span>\r\n </button>\r\n <button\r\n *ngIf=\"buttonState === 'permission-denied'\"\r\n mat-raised-button\r\n class=\"send\"\r\n color=\"primary\"\r\n [disabled]=\"!sendButtonEnabled\"\r\n >\r\n {{permissionDeniedLabel}}\r\n </button>\r\n </ng-container>\r\n </div>\r\n</form>","/// <reference types=\"@types/resize-observer-browser\" />\r\n\r\nimport { Component, ContentChild, ElementRef, HostBinding, Input, NgZone, Output, QueryList, TemplateRef, ViewChild, ViewChildren } from '@angular/core';\r\nimport { User, ChatMessage, CommentsOrder, FilterMode } from '@banta/common';\r\nimport { HashTag } from '../comment-field/comment-field.component';\r\nimport { Subject, Observable, Subscription } from 'rxjs';\r\nimport { take } from 'rxjs/operators';\r\n\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { ChatBackendBase } from '../../chat-backend-base';\r\nimport { ChatSourceBase } from '../../chat-source-base';\r\nimport { MatSnackBar } from '@angular/material/snack-bar';\r\nimport { BantaReplySendOptionsDirective } from '../reply-send-options.directive';\r\nimport { MessageMenuItem } from '../../message-menu-item';\r\nimport { CommentViewComponent } from '../comment-view/comment-view.component';\r\nimport { CommentComponent } from '../comment/comment.component';\r\n\r\n/**\r\n * Comments component\r\n */\r\n@Component({\r\n selector: 'banta-comments',\r\n templateUrl: './banta-comments.component.html',\r\n styleUrls: ['./banta-comments.component.scss']\r\n})\r\nexport class BantaCommentsComponent {\r\n constructor(\r\n private backend: ChatBackendBase,\r\n private elementRef: ElementRef<HTMLElement>,\r\n private activatedRoute: ActivatedRoute,\r\n private matSnackBar: MatSnackBar,\r\n private ngZone: NgZone\r\n ) {\r\n this.sendMessage = async (message: ChatMessage) => {\r\n try {\r\n const intercept = await this.shouldInterceptMessageSend?.(message, this.source);\r\n if (!intercept) {\r\n await this.source.send(message);\r\n }\r\n\r\n if (this.source.sortOrder !== CommentsOrder.NEWEST)\r\n this.sortOrder = CommentsOrder.NEWEST;\r\n\r\n if (this.source.filterMode !== FilterMode.ALL)\r\n this.filterMode = FilterMode.ALL;\r\n\r\n return true;\r\n } catch (e) {\r\n this.handleBackendException(e, 'Could not send: ');\r\n }\r\n }\r\n\r\n this.sendReply = async (message: ChatMessage) => {\r\n try {\r\n const intercept = await this.shouldInterceptMessageSend?.(message, this.selectedMessageThread);\r\n if (!intercept) {\r\n await this.selectedMessageThread.send(message);\r\n }\r\n return true;\r\n } catch (e) {\r\n this.handleBackendException(e, 'Could not send reply: ');\r\n }\r\n }\r\n }\r\n\r\n get element() {\r\n return this.elementRef.nativeElement;\r\n }\r\n\r\n private handleBackendExceptionAsAlert(e: Error, prefix: string = '') {\r\n try {\r\n this.handleBackendException(e, prefix);\r\n } catch (e) {\r\n console.log(`[Banta/Comments] Showed user error (via alert): '${e.message}'`);\r\n console.error(e);\r\n \r\n alert(e.message);\r\n }\r\n }\r\n\r\n private handleBackendExceptionAsSnack(e: Error, prefix: string = '') {\r\n try {\r\n this.handleBackendException(e, prefix);\r\n } catch (e) {\r\n console.log(`[Banta/Comments] Showed user error (via snack): '${e.message}'`);\r\n console.error(e);\r\n \r\n this.matSnackBar.open(e.message, undefined, { duration: 3000 });\r\n //alert(e.message);\r\n }\r\n }\r\n\r\n private handleBackendException(e: Error, prefix: string = '') {\r\n let errorMessage = e.message;\r\n\r\n if (errorMessage.startsWith('permission-denied|')) {\r\n errorMessage = errorMessage.replace(/^permission-denied\\|/, '');\r\n\r\n if (errorMessage.startsWith(`app-handle|`)) {\r\n // If this is an error during authorizeAction on the backend, pass control to the user-provided \r\n // permission-denied handler.\r\n\r\n this.sendPermissionDenied(errorMessage.replace(/^app-handle\\|/, ''));\r\n return;\r\n }\r\n }\r\n\r\n throw new Error(`${prefix}${errorMessage}`);\r\n }\r\n\r\n // Lifecycle Events / Initialization\r\n\r\n ngOnInit() {\r\n this._subs.add(this.backend.userChanged.subscribe(user => this.user = user));\r\n this.startLoading();\r\n\r\n if (typeof window !== 'undefined') {\r\n let queryString = window.location.search.substring(1);\r\n let query = queryString.split('&')\r\n .map(s => s.split('='))\r\n .reduce((o, [k, v]) => (o[decodeURIComponent(k)] = decodeURIComponent(v), o), {})\r\n ;\r\n\r\n const commentID = query['comment'];\r\n if (commentID) {\r\n this.sharedCommentID = commentID;\r\n }\r\n }\r\n }\r\n\r\n private resizeObserver: ResizeObserver;\r\n private width: number;\r\n private height: number;\r\n\r\n @HostBinding('class.banta-mobile')\r\n isMobileSized: boolean = false;\r\n\r\n @ContentChild(BantaReplySendOptionsDirective, {read: TemplateRef}) \r\n sendReplyOptionsTemplate: any;\r\n\r\n markViewReady: () => void;\r\n viewReady = new Promise<void>(r => this.markViewReady = r);\r\n\r\n ngAfterViewInit() {\r\n if (typeof window !== 'undefined') {\r\n let callback = () => {\r\n let size = this.elementRef.nativeElement.getBoundingClientRect();\r\n this.ngZone.run(() => {\r\n setTimeout(() => {\r\n this.width = size.width;\r\n this.height = size.height;\r\n this.isMobileSized = this.width < 500;\r\n });\r\n })\r\n };\r\n\r\n if (typeof ResizeObserver !== 'undefined') {\r\n this.resizeObserver = new ResizeObserver(callback);\r\n this.resizeObserver.observe(this.elementRef.nativeElement);\r\n } else {\r\n // One check is better than nothing!\r\n setTimeout(() => {\r\n this.width = this.elementRef.nativeElement.clientWidth;\r\n this.height = this.elementRef.nativeElement.clientHeight;\r\n this.isMobileSized = this.width < 500;\r\n }, 1000);\r\n }\r\n\r\n callback();\r\n }\r\n\r\n this.markViewReady();\r\n }\r\n\r\n ngOnDestroy() {\r\n this._subs.unsubscribe();\r\n if (this.resizeObserver)\r\n this.resizeObserver.disconnect();\r\n }\r\n\r\n private async setSourceFromTopicID(topicID: string) {\r\n if (typeof window === 'undefined')\r\n return;\r\n\r\n setTimeout(async () => {\r\n console.log(`[Banta/Comments] Subscribing to topic source '${topicID}'`);\r\n\r\n // If we are loading a shared comment, we must override the mode to be Newest/All\r\n // to ensure we can find the comment.\r\n\r\n if (this.sharedCommentID) {\r\n this._sortOrder = CommentsOrder.NEWEST;\r\n this._filterMode = FilterMode.ALL;\r\n }\r\n\r\n this.source = await this.backend.getSourceForTopic(topicID, { \r\n sortOrder: this.sortOrder, \r\n filterMode: this.filterMode,\r\n metadata: this.metadata,\r\n initialMessageCount: this.initialMessageCount\r\n });\r\n this._sourceIsOwned = true;\r\n });\r\n }\r\n\r\n loadingTitle = 'Loading...';\r\n\r\n // Loading Screen\r\n private _loadingMessage = '';\r\n loadingMessageVisible = false;\r\n\r\n get loadingMessage() {\r\n return this._loadingMessage;\r\n }\r\n\r\n set loadingMessage(value) {\r\n this.loadingMessageVisible = false;\r\n setTimeout(() => {\r\n this._loadingMessage = value;\r\n this._loadingMessage = value;\r\n setTimeout(() => {\r\n this.loadingMessageVisible = true;\r\n })\r\n }, 500);\r\n }\r\n\r\n loading: boolean = true;\r\n showLoadingScreen = false;\r\n loadingStartedAt: number;\r\n messageChangedAt: number;\r\n sharedCommentID: string;\r\n lastSharedCommentID: string;\r\n\r\n @Input() customMenuItems: MessageMenuItem[] = [];\r\n\r\n private async startLoading() {\r\n this.loadingStartedAt = this.messageChangedAt = Date.now();\r\n\r\n if (this.updateLoading()) return;\r\n await new Promise<void>(resolve => setTimeout(() => resolve(), 100));\r\n if (this.updateLoading()) return;\r\n await new Promise<void>(resolve => setTimeout(() => resolve(), 250));\r\n if (this.updateLoading()) return;\r\n await new Promise<void>(resolve => setTimeout(() => resolve(), 500));\r\n if (this.updateLoading()) return;\r\n\r\n console.log(`[Banta] Loading is taking a long time! Showing loading screen.`);\r\n this.showLoadingScreen = true;\r\n if (typeof window !== 'undefined')\r\n this._loadingTimer = setInterval(() => {\r\n this.updateLoading();\r\n this.loadingTitle = `Connecting to Live Comments service...`;\r\n }, 1000);\r\n }\r\n \r\n private _loadingTimer;\r\n private _loadingMessageIndex = 0;\r\n\r\n /**\r\n * The canonical URL where this comment section can be found. If not specified, uses the current URL.\r\n */\r\n @Input() url: string;\r\n\r\n @Input() maxCommentLength: number = 1500;\r\n @Input() loadingMessages: string[] = [\r\n `Just a second...`,\r\n `It's definitely worth the wait!`,\r\n `This has never happened before.`,\r\n `We'll keep trying, but it's not looking great. \r\n Commenting & chat services may be down or degraded. Try reloading the page.\r\n If you keep experiencing issues or reloading the page works for you, please let us know by contacting support.\r\n `\r\n ];\r\n\r\n @Input() useInlineReplies = true;\r\n\r\n /**\r\n * Access the CommentViewComponent for this BantaCommentsComponent. \r\n * CommentViewComponent is responsible for interacting with the ChatSource \r\n * object and rendering comments as CommentComponents. It is the source of \r\n * truth for which CommentComponent corresponds to which ChatMessage. \r\n * \r\n * Note that this CommentViewComponent is only for the top level comments.\r\n * Replies are handled by a separate CommentViewComponent which can be \r\n * retrieved using the threadView property.\r\n */\r\n @ViewChild('commentView')\r\n commentView: CommentViewComponent;\r\n\r\n @ViewChildren(CommentViewComponent)\r\n threadViewQuery: QueryList<CommentViewComponent>;\r\n\r\n /**\r\n * Attempts to find the CommentComponent that corresponds to the given ChatMessage.\r\n * The ChatMessage could be a top-level message in this conversation, or a reply, \r\n * but note that a CommentComponent will only exist for a reply if the user has \r\n * the relevant reply thread open.\r\n * @param message The message to look for\r\n */\r\n getCommentComponentForMessage(message: ChatMessage): CommentComponent {\r\n if (message.parentMessageId)\r\n return this.threadView?.getCommentComponentForMessage(message);\r\n else\r\n return this.commentView.getCommentComponentForMessage(message)\r\n }\r\n\r\n /**\r\n * Access the CommentViewComponent corresponding to the currently open reply thread.\r\n * This is not the top level comments, but instead the reply thread that the user has \r\n * opened (only one set of replies can be open at a time).\r\n * \r\n * For details about what CommentViewComponent affords you, see the commentView property.\r\n */\r\n get threadView() {\r\n return Array.from(this.threadViewQuery).filter(x => x !== this.commentView)[0];\r\n }\r\n\r\n async waitForThreadView() {\r\n if (this.threadView)\r\n return this.threadView;\r\n \r\n await this.threadViewQuery.changes.pipe(take(1)).toPromise();\r\n return this.threadView;\r\n }\r\n\r\n markLoaded: () => void;\r\n loaded = new Promise<void>(r => this.markLoaded = r);\r\n\r\n get sourceState() {\r\n if (!this.source)\r\n return 'no-source';\r\n\r\n return this.source.state ?? 'connected';\r\n }\r\n\r\n private updateLoading(): boolean {\r\n if (this.sourceState && !['connecting', 'lost', 'no-source'].includes(this.sourceState)) {\r\n clearInterval(this._loadingTimer);\r\n this.loadingMessage = `Here we go!`;\r\n setTimeout(() => {\r\n this.loading = false;\r\n this.markLoaded();\r\n }, 750);\r\n return true;\r\n }\r\n\r\n console.log(`[Banta/Loader] State=${this.sourceState}`);\r\n let messageSwitchTime = 5*1000;\r\n if (this.messageChangedAt + messageSwitchTime < Date.now()) {\r\n if (this.loadingMessages[this._loadingMessageIndex]) {\r\n this.loadingMessage = this.loadingMessages[this._loadingMessageIndex++];\r\n this.messageChangedAt = Date.now();\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n\r\n // Properties\r\n\r\n private _signInSelected = new Subject<void>();\r\n private _permissionDeniedError = new Subject<string>();\r\n private _editAvatarSelected = new Subject<void>();\r\n private _upvoted = new Subject<ChatMessage>();\r\n private _reported = new Subject<ChatMessage>();\r\n private _selected = new Subject<ChatMessage>();\r\n private _userSelected = new Subject<ChatMessage>();\r\n private _shared = new Subject<ChatMessage>();\r\n private _usernameSelected = new Subject<User>();\r\n private _avatarSelected = new Subject<User>();\r\n private _source: ChatSourceBase;\r\n\r\n /**\r\n * Track whether we created this source. If we did not (ie it was passed in from the caller),\r\n * then we are not responsible for calling close(). If we do own it though, we will call close() \r\n * when we are done with it.\r\n */\r\n private _sourceIsOwned = false;\r\n private _subs = new Subscription();\r\n private _topicID: string;\r\n \r\n user: User;\r\n selectedMessage: ChatMessage;\r\n selectedMessageThread: ChatSourceBase;\r\n selectedMessageVisible = false;\r\n connectionState: string;\r\n\r\n // Inputs\r\n\r\n @Input() signInLabel = 'Sign In';\r\n @Input() sendLabel = 'Send';\r\n @Input() signingInLabel = 'Signing in...';\r\n @Input() replyLabel = 'Reply';\r\n @Input() sendingLabel = 'Sending';\r\n @Input() permissionDeniedLabel = 'Send';\r\n @Input() postCommentLabel = 'Post a comment';\r\n @Input() postReplyLabel = 'Post a reply';\r\n @Input() allowAttachments = true;\r\n @Input() fixedHeight: boolean;\r\n @Input() maxMessages: number;\r\n @Input() maxVisibleMessages: number = 20;\r\n @Input() genericAvatarUrl = `https://gravatar.com/avatar/${Date.now().toString(16)}?s=512&d=robohash`;\r\n\r\n @Input() shouldInterceptMessageSend?: (message: ChatMessage, source: ChatSourceBase) => boolean | Promise<boolean>;\r\n @Input() participants: User[] = [];\r\n\r\n private _sourceSubscription: Subscription;\r\n\r\n @Input()\r\n get source(): ChatSourceBase { return this._source; }\r\n set source(value) { \r\n if (this._source && this._sourceIsOwned) {\r\n this._source.close();\r\n this._sourceSubscription?.unsubscribe();\r\n this._source = null;\r\n this.participants = [];\r\n }\r\n\r\n this._source = value;\r\n this._sourceIsOwned = false; // Assume we don't own this source.\r\n this._sourceSubscription = new Subscription();\r\n \r\n if (value) {\r\n if (this.sharedCommentID) {\r\n this.navigateToSharedComment(this.sharedCommentID);\r\n this.lastSharedCommentID = this.sharedCommentID;\r\n this.sharedCommentID = null;\r\n }\r\n\r\n this._source.messages.forEach(m => this.addParticipant(m));\r\n\r\n if (this._source.connectionStateChanged)\r\n this._sourceSubscription.add(this._source.connectionStateChanged.subscribe(state => this.connectionState = state));\r\n else \r\n this.connectionState = 'connected';\r\n\r\n this._sourceSubscription.add(this._source.messageReceived.subscribe(m => this.addParticipant(m)));\r\n this._sourceSubscription.add(this._source.messageSent.subscribe(m => this.addParticipant(m)));\r\n this._sourceSubscription.add(this._source.messageObserved.subscribe(m => this.addParticipant(m)));\r\n this._sourceSubscription.add(\r\n this._source.messageUpdated.subscribe(msg => {\r\n console.log(`comments received message: `, msg);\r\n if (msg.id === this.selectedMessage?.id && msg.hidden) {\r\n this.unselectMessage();\r\n this.matSnackBar.open(\r\n \"The thread you were viewing was removed.\",\r\n undefined,\r\n {\r\n duration: 2500\r\n }\r\n )\r\n }\r\n })\r\n );\r\n\r\n }\r\n }\r\n @Input() \r\n hashtags: HashTag[] = [\r\n {hashtag: 'error', description: 'Cause an error'},\r\n {hashtag: 'timeout', description: 'Cause a slow timeout error'},\r\n {hashtag: 'slow', description: 'Be slow when this message is posted'},\r\n ];\r\n @Input()\r\n get topicID(): string { return this._topicID; }\r\n set topicID(value) {\r\n if (this._topicID !== value) {\r\n this._topicID = value;\r\n setTimeout(() => this.setSourceFromTopicID(value));\r\n }\r\n }\r\n\r\n // Outputs\r\n\r\n @Output() get signInSelected(): Observable<void> { return this._signInSelected; }\r\n @Output() get editAvatarSelected() { return this._editAvatarSelected; }\r\n @Output() get permissionDeniedError(): Observable<string> { return this._permissionDeniedError; }\r\n @Output() get upvoted() { return this._upvoted.asObservable(); }\r\n @Output() get reported() { return this._reported.asObservable(); }\r\n @Output() get selected() { return this._selected.asObservable(); }\r\n @Output() get userSelected() { return this._userSelected.asObservable(); }\r\n @Output() get usernameSelected() { return this._usernameSelected.asObservable(); }\r\n @Output() get avatarSelected() { return this._avatarSelected.asObservable(); }\r\n @Output() get shared() { return this._shared.asObservable(); }\r\n\r\n private _reloadSourceTimeout;\r\n private reloadSource() {\r\n clearTimeout(this._reloadSourceTimeout);\r\n\r\n let showLoaderTimeout;\r\n showLoaderTimeout = setTimeout(() => {\r\n this.loading = true;\r\n this.loadingTitle = 'Applying filters...';\r\n this.loadingMessage = 'Applying your filters and sort order is taking more time than expected. Sit tight!';\r\n this.showLoadingScreen = true;\r\n }, 500);\r\n\r\n this._reloadSourceTimeout = setTimeout(async () => {\r\n await this.setSourceFromTopicID(this.topicID);\r\n clearTimeout(showLoaderTimeout);\r\n this.loading = false;\r\n this.showLoadingScreen = true;\r\n });\r\n }\r\n\r\n private _sortOrder: CommentsOrder = 'newest';\r\n @Input() get sortOrder() { return this._sortOrder; }\r\n set sortOrder(value) {\r\n if (this._sortOrder !== value) {\r\n this._sortOrder = value;\r\n this.reloadSource();\r\n }\r\n }\r\n\r\n private _filterMode: FilterMode = FilterMode.ALL;\r\n @Input() get filterMode() { return this._filterMode; }\r\n set filterMode(value) { \r\n if (this._filterMode !== value) {\r\n this._filterMode = value;\r\n this.reloadSource();\r\n }\r\n }\r\n\r\n @Input() initialMessageCount: number = 100;\r\n\r\n private _metadata: Record<string, any> = {};\r\n\r\n /**\r\n * Arbitrary metadata to send to the chat server. This can be used to provide context about the client to the server\r\n * for things like validating authorization and other uses.\r\n */\r\n @Input() get metadata() { return this._metadata; }\r\n set metadata(value) {\r\n if (JSON.stringify(this._metadata) !== JSON.stringify(value)) {\r\n this._metadata = value;\r\n this.reloadSource();\r\n }\r\n }\r\n\r\n get filterModes() { \r\n return FilterMode.options;\r\n }\r\n\r\n get filterModeLabels() {\r\n return {\r\n [FilterMode.ALL]: 'All',\r\n [FilterMode.MINE]: 'Mine',\r\n [FilterMode.THREADS]: 'Involving Me',\r\n [FilterMode.MY_LIKES]: 'My Likes'\r\n }\r\n }\r\n\r\n get sortOrders() { \r\n return CommentsOrder.options;\r\n }\r\n\r\n get sortOrderLabels() {\r\n return {\r\n [CommentsOrder.NEWEST]: 'Newest',\r\n [CommentsOrder.OLDEST]: 'Oldest',\r\n [CommentsOrder.LIKES]: 'Likes'\r\n }\r\n }\r\n\r\n sendMessage: (message: ChatMessage) => void;\r\n sendReply: (message: ChatMessage) => void;\r\n\r\n // UI Interactions\r\n\r\n async scrollToComment(commentId: ChatMessage['id']) {\r\n if (typeof window === 'undefined')\r\n return;\r\n \r\n await this.commentView.waitForAllCommentsToLoad();\r\n\r\n const comment = document.querySelector(`[data-comment-id=\"${commentId}\"]`);\r\n if (comment) {\r\n comment.scrollIntoView({\r\n inline: 'center',\r\n block: 'center'\r\n });\r\n }\r\n }\r\n\r\n loadingSharedComment = false;\r\n sharedCommentMissing = false;\r\n\r\n async navigateToSharedComment(id: string) {\r\n this.loadingSharedComment = true;\r\n await new Promise(r => setTimeout(r, 10));\r\n this.sharedCommentMissing = false;\r\n let source = this.source;\r\n\r\n await source.ready;\r\n await this.viewReady;\r\n await this.loaded;\r\n \r\n console.log(`Navigating to shared comment with ID '${id}'...`);\r\n let message: ChatMessage;\r\n \r\n try {\r\n message = await this.source.get(id);\r\n } catch (e) {\r\n console.error(`Failed to find comment from URL: ${e.message}`);\r\n this.sharedCommentMissing = true;\r\n this.loadingSharedComment = false;\r\n\r\n if (typeof window !== 'undefined') {\r\n setTimeout(() => {\r\n let notice = this.element.querySelector('.loading-comment');\r\n notice.scrollIntoView({\r\n block: 'center',\r\n inline: 'center'\r\n });\r\n }, 200);\r\n }\r\n return;\r\n }\r\n\r\n message.transientState ??= {};\r\n\r\n // If there is a parent message, we should instead focus that and let the \r\n // scrollToComment and highlight do the work.\r\n\r\n if (message.parentMessageId) {\r\n\r\n let parentMessage = await this.source.get(message.parentMessageId);\r\n parentMessage.transientState ??= {};\r\n \r\n // Make sure that this message is loaded and visible to the user\r\n await this.commentView.loadMessageInContext(parentMessage);\r\n \r\n let thread = await this.selectMessage(parentMessage); \r\n\r\n // Need to re-retrieve the message within the new chat source to affect its\r\n // transient state.\r\n await thread.ready;\r\n \r\n // Make sure that this message is loaded and visible to the user\r\n await this.waitForThreadView();\r\n await this.threadView.loadMessageInContext(message);\r\n\r\n message = await thread.get(message.id);\r\n\r\n if (message) {\r\n message.transientState ??= {};\r\n message.transientState.highlighted = true;\r\n console.dir(message);\r\n await new Promise<void>(r => setTimeout(r, 500));\r\n }\r\n } else {\r\n // Make sure that this message is loaded and visible to the user\r\n await this.commentView.loadMessageInContext(message);\r\n\r\n message = await source.get(message.id);\r\n if (message) {\r\n message.transientState ??= {};\r\n message.transientState.highlighted = true;\r\n }\r\n }\r\n\r\n this.loadingSharedComment = false;\r\n await this.scrollToComment(id);\r\n }\r\n\r\n handlePermissionDenied(errorMessage: string) {\r\n // This is what other components call when handling permission errors\r\n \r\n if (errorMessage.startsWith(`app-handle|`)) {\r\n // If this is an error during authorizeAction on the backend, pass control to the user-provided \r\n // permission-denied handler.\r\n\r\n this.sendPermissionDenied(errorMessage.replace(/^app-handle\\|/, ''));\r\n return;\r\n }\r\n\r\n alert(errorMessage);\r\n }\r\n\r\n sendPermissionDenied(message: string) {\r\n this._permissionDeniedError.next(message);\r\n }\r\n\r\n scrollToMessage(message: ChatMessage) {\r\n let el = this.elementRef.nativeElement.querySelector(`[data-comment-id=\"${message.id}\"]`);\r\n if (!el)\r\n return;\r\n el.scrollIntoView({block: 'center', inline: 'start'});\r\n }\r\n\r\n private addParticipant(message: ChatMessage) {\r\n if (!message || !message.user || !message.user.id)\r\n return;\r\n\r\n let existing = this.participants.find(x => x.id === message.user.id);\r\n if (existing)\r\n return;\r\n this.participants.push(message.user);\r\n }\r\n\r\n // Actions\r\n\r\n async likeMessage(source: ChatSourceBase, message: ChatMessage) {\r\n if (!this.user) {\r\n await this.showSignIn();\r\n return;\r\n }\r\n\r\n this._upvoted.next(message);\r\n message.transientState.liking = true;\r\n \r\n try {\r\n await source.likeMessage(message.id);\r\n } catch (e) {\r\n this.handleBackendExceptionAsSnack(e, 'Could not like this message: ');\r\n } finally {\r\n await new Promise<void>(resolve => setTimeout(() => resolve(), 250));\r\n message.transientState.liking = false;\r\n }\r\n }\r\n\r\n async unlikeMessage(source: ChatSourceBase, message: ChatMessage) {\r\n if (!this.user) {\r\n await this.showSignIn();\r\n return;\r\n }\r\n\r\n this._upvoted.next(message);\r\n message.transientState.liking = true;\r\n\r\n if (message.userState?.liked)\r\n message.likes = (message.likes || 0) - 1;\r\n\r\n try {\r\n await source.unlikeMessage(message.id);\r\n } catch (e) {\r\n this.handleBackendExceptionAsAlert(e, 'Failed to unlike this message: ');\r\n }\r\n\r\n await new Promise<void>(resolve => setTimeout(() => resolve(), 250));\r\n message.transientState.liking = false;\r\n }\r\n\r\n async reportMessage(message: ChatMessage) {\r\n this._reported.next(message);\r\n }\r\n\r\n async unselectMessage() {\r\n let message = this.selectedMessage;\r\n\r\n this._selected.next(null);\r\n this.selectedMessage = null;\r\n if (this.selectedMessageThread) {\r\n if (this.selectedMessageThread.close)\r\n this.selectedMessageThread.close();\r\n this.selectedMessageThread = null;\r\n }\r\n\r\n if (message)\r\n setTimeout(() => this.scrollToMessage(message));\r\n }\r\n\r\n async toggleSelectedMessage(message: ChatMessage) {\r\n if (this.selectedMessage === message) {\r\n await this.unselectMessage();\r\n } else {\r\n await this.selectMessage(message);\r\n }\r\n }\r\n\r\n async selectMessage(message: ChatMessage) {\r\n if (this.selectedMessage === message) {\r\n console.log(`[Banta] Thread ${this.topicID}/${message.id} is already open.`);\r\n return this.selectedMessageThread;\r\n }\r\n\r\n if (this.selectedMessageThread) {\r\n if (this.selectedMessageThread.close)\r\n this.selectedMessageThread.close();\r\n this.selectedMessageThread = null;\r\n }\r\n\r\n this._selected.next(message);\r\n\r\n console.log(`[Banta] Opening thread for ${this.topicID}/${message.id}...`);\r\n let selectedMessageThread = await this.backend.getSourceForThread(this.topicID, message.id, {\r\n metadata: this.metadata\r\n });\r\n\r\n if (!selectedMessageThread) {\r\n console.warn(`Failed to locate thread for message ${this.topicID}/${message.id}!`);\r\n return null;\r\n }\r\n\r\n console.log(`[Banta] Thread opened for ${this.topicID}/${message.id}.`);\r\n\r\n setTimeout(() => this.selectedMessageVisible = true);\r\n setTimeout(async () => {\r\n this.selectedMessage = message;\r\n this.selectedMessageThread = selectedMessageThread;\r\n }, 250);\r\n\r\n return selectedMessageThread;\r\n }\r\n\r\n async showSignIn() {\r\n this._signInSelected.next();\r\n }\r\n\r\n async showEditAvatar() {\r\n this._editAvatarSelected.next();\r\n }\r\n\r\n async selectMessageUser(message: ChatMessage) {\r\n this._userSelected.next(message);\r\n }\r\n\r\n async selectUsername(user: User) {\r\n this._usernameSelected.next(user);\r\n }\r\n\r\n async selectAvatar(user: User) {\r\n this._avatarSelected.next(user);\r\n }\r\n\r\n async shareMessage(message: ChatMessage) {\r\n this._shared.next(message);\r\n }\r\n\r\n async deleteMessage(message: ChatMessage) {\r\n if (!this.user) {\r\n await this.showSignIn();\r\n return;\r\n }\r\n\r\n if (!confirm(\"Are you sure you want to delete this comment? You cannot undo this action.\"))\r\n return;\r\n\r\n try {\r\n await this.source.deleteMessage(message.id);\r\n\r\n if (this.selectedMessage?.id === message.id)\r\n this.unselectMessage();\r\n\r\n } catch (e) {\r\n this.handleBackendExceptionAsAlert(e, `Could not delete message: `);\r\n }\r\n }\r\n\r\n async editMessage(source: ChatSourceBase, message: ChatMessage, newText: string) {\r\n if (!this.user) {\r\n await this.showSignIn();\r\n return;\r\n }\r\n\r\n try {\r\n await source.editMessage(message.id, newText);\r\n } catch (e) {\r\n this.handleBackendExceptionAsAlert(e, 'Could not edit this message: ');\r\n return;\r\n }\r\n\r\n message.message = newText;\r\n message.transientState.editing = false;\r\n }\r\n\r\n async startEditing(message: ChatMessage) {\r\n this.selectedMessage.transientState.editing = false;\r\n message.transientState.editing = true;\r\n }\r\n\r\n async saveEdit(message: ChatMessage, text: string) {\r\n if (!this.user) {\r\n await this.showSignIn();\r\n return;\r\n }\r\n \r\n try {\r\n await this.source.editMessage(message.id, text);\r\n message.transientState.editing = false;\r\n } catch (e) {\r\n this.handleBackendExceptionAsAlert(e, `Could not edit message: `);\r\n }\r\n }\r\n}\r\n","<ng-container *ngIf=\"loading\">\r\n <div class=\"loading-screen\" [class.visible]=\"showLoadingScreen\">\r\n <h1>{{loadingTitle}}</h1>\r\n <div>\r\n <mat-spinner [diameter]=\"300\" [strokeWidth]=\"2\"></mat-spinner>\r\n </div>\r\n\r\n <p class=\"loading-message\" [class.visible]=\"loadingMessageVisible\">{{loadingMessage}}</p>\r\n </div>\r\n</ng-container>\r\n<ng-container *ngIf=\"!loading\">\r\n <div class=\"focused\" [class.visible]=\"selectedMessageVisible\" *ngIf=\"selectedMessage && !useInlineReplies\">\r\n\r\n <div>\r\n <a mat-button href=\"javascript:;\" (click)=\"unselectMessage()\">\r\n <mat-icon>arrow_back</mat-icon>\r\n Latest Comments\r\n </a>\r\n </div>\r\n\r\n <banta-comment\r\n [message]=\"selectedMessage\"\r\n [liking]=\"selectedMessage.transientState.liking\"\r\n [mine]=\"user?.id === selectedMessage.user?.id\"\r\n [permissions]=\"source?.permissions\"\r\n [showReplyAction]=\"false\"\r\n [editing]=\"selectedMessage.transientState.editing\"\r\n [maxLength]=\"maxCommentLength\"\r\n [genericAvatarUrl]=\"genericAvatarUrl\"\r\n [readonly]=\"source?.readonly\"\r\n (editStarted)=\"startEditing(selectedMessage)\"\r\n (editEnded)=\"selectedMessage.transientState.editing = false\"\r\n (edited)=\"saveEdit(selectedMessage, $event)\"\r\n (userSelected)=\"selectMessageUser(selectedMessage)\"\r\n (avatarSelected)=\"selectAvatar($event)\"\r\n (usernameSelected)=\"selectUsername($event)\"\r\n (liked)=\"likeMessage(source, selectedMessage)\"\r\n (unliked)=\"unlikeMessage(source, selectedMessage)\"\r\n (reported)=\"reportMessage(selectedMessage)\"\r\n (selected)=\"toggleSelectedMessage(selectedMessage)\"\r\n (shared)=\"shareMessage($event)\"\r\n (deleted)=\"deleteMessage(selectedMessage)\"\r\n ></banta-comment>\r\n\r\n <div class=\"replies\">\r\n\r\n <ng-container *ngIf=\"!selectedMessageThread\">\r\n <div class=\"loading\">\r\n <mat-spinner></mat-spinner>\r\n </div>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"selectedMessageThread\">\r\n <banta-comment-view\r\n class=\"replies\"\r\n #threadView\r\n [source]=\"selectedMessageThread\"\r\n [allowReplies]=\"false\"\r\n [fixedHeight]=\"false\"\r\n [showEmptyState]=\"false\"\r\n [newestLast]=\"true\"\r\n [genericAvatarUrl]=\"genericAvatarUrl\"\r\n (liked)=\"likeMessage(selectedMessageThread, $event)\"\r\n (unliked)=\"unlikeMessage(selectedMessageThread, $event)\"\r\n (messageEdited)=\"editMessage(selectedMessageThread, $event.message, $event.newMessage)\"\r\n (reported)=\"reportMessage($event)\"\r\n (usernameSelected)=\"selectUsername($event)\"\r\n (avatarSelected)=\"selectAvatar($event)\"\r\n (shared)=\"shareMessage($event)\"\r\n (deleted)=\"deleteMessage($event)\"\r\n [customMenuItems]=\"customMenuItems\"\r\n ></banta-comment-view>\r\n\r\n <banta-comment-field\r\n [url]=\"url\"\r\n [sendLabel]=\"replyLabel\"\r\n [sendingLabel]=\"sendingLabel\"\r\n [signingInLabel]=\"signingInLabel\"\r\n [hashtags]=\"hashtags\"\r\n [participants]=\"participants\"\r\n [readonly]=\"source?.readonly\"\r\n (signInSelected)=\"showSignIn()\"\r\n (editAvatarSelected)=\"showEditAvatar()\"\r\n [source]=\"selectedMessageThread\"\r\n [maxLength]=\"maxCommentLength\"\r\n [canComment]=\"source?.permissions?.canPost\"\r\n [signInState]=\"source?.signInState\"\r\n [signInLabel]=\"signInLabel\"\r\n [permissionDeniedLabel]=\"source?.permissions?.canPostErrorMessage || permissionDeniedLabel\"\r\n (permissionDeniedError)=\"handlePermissionDenied($event)\"\r\n [shouldInterceptMessageSend]=\"shouldInterceptMessageSend\"\r\n [user]=\"user\"\r\n [label]=\"postReplyLabel\"\r\n [submit]=\"sendReply\"\r\n [allowAttachments]=\"allowAttachments\"\r\n [genericAvatarUrl]=\"genericAvatarUrl\"\r\n >\r\n <ng-container *ngTemplateOutlet=\"sendReplyOptionsTemplate\"></ng-container>\r\n </banta-comment-field>\r\n </ng-container>\r\n </div>\r\n </div>\r\n\r\n <div class=\"main\" [class.hidden]=\"selectedMessage && !useInlineReplies\">\r\n <banta-comment-field\r\n [url]=\"url\"\r\n [source]=\"source\"\r\n [user]=\"user\"\r\n [sendLabel]=\"sendLabel\"\r\n [sendingLabel]=\"sendingLabel\"\r\n [signingInLabel]=\"signingInLabel\"\r\n [signInLabel]=\"signInLabel\"\r\n [signInState]=\"source?.signInState\"\r\n [canComment]=\"source?.permissions?.canPost\"\r\n [hashtags]=\"hashtags\"\r\n [participants]=\"participants\"\r\n [label]=\"postCommentLabel\"\r\n [maxLength]=\"maxCommentLength\"\r\n [permissionDeniedLabel]=\"source?.permissions?.canPostErrorMessage || permissionDeniedLabel\"\r\n [shouldInterceptMessageSend]=\"shouldInterceptMessageSend\"\r\n [submit]=\"sendMessage\"\r\n [allowAttachments]=\"allowAttachments\"\r\n [genericAvatarUrl]=\"genericAvatarUrl\"\r\n [readonly]=\"source?.readonly\"\r\n (editAvatarSelected)=\"showEditAvatar()\"\r\n (signInSelected)=\"showSignIn()\"\r\n (permissionDeniedError)=\"handlePermissionDenied($event)\"\r\n >\r\n \r\n </banta-comment-field>\r\n\r\n <mat-menu #filterMenu=\"matMenu\">\r\n <button mat-menu-item *ngFor=\"let filter of filterModes\" (click)=\"filterMode = filter\">\r\n {{filterModeLabels[filter]}}\r\n </button>\r\n </mat-menu>\r\n <mat-menu #sortMenu=\"matMenu\">\r\n <button mat-menu-item *ngFor=\"let sort of sortOrders\" (click)=\"sortOrder = sort\">\r\n {{sortOrderLabels[sort]}}\r\n </button>\r\n </mat-menu>\r\n\r\n <div class=\"settings\">\r\n <button mat-button [matMenuTriggerFor]=\"filterMenu\">\r\n <mat-icon>filter_list</mat-icon>\r\n {{filterModeLabels[filterMode]}}\r\n </button>\r\n <button mat-button [matMenuTriggerFor]=\"sortMenu\">\r\n <mat-icon>sort</mat-icon>\r\n {{sortOrderLabels[sortOrder]}}\r\n </button>\r\n </div>\r\n\r\n <div class=\"loading-comment\" *ngIf=\"loadingSharedComment\">\r\n <h1>Loading the comment you linked to...</h1>\r\n <mat-spinner [diameter]=\"300\" [strokeWidth]=\"2\"></mat-spinner>\r\n <p>\r\n If there are a lot of comments, this might take awhile!\r\n </p>\r\n </div>\r\n <div class=\"loading-comment\" *ngIf=\"!loadingSharedComment && lastSharedCommentID\">\r\n <ng-container *ngIf=\"sharedCommentMissing\">\r\n\r\n <a class=\"close\" mat-icon-button matTooltip=\"Close this notice\" href=\"javascript:;\" (click)=\"lastSharedCommentID = null\">\r\n <mat-icon>close</mat-icon>\r\n </a>\r\n\r\n <h1>\r\n <mat-icon>error</mat-icon>\r\n Uh oh!\r\n </h1>\r\n\r\n <p>The comment you linked to can't be found! It may have been removed.</p>\r\n </ng-container>\r\n <ng-container *ngIf=\"!sharedCommentMissing\">\r\n <a class=\"close\" mat-icon-button matTooltip=\"Close this notice\" href=\"javascript:;\" (click)=\"lastSharedCommentID = null\">\r\n <mat-icon>close</mat-icon>\r\n </a>\r\n <button mat-button (click)=\"navigateToSharedComment(lastSharedCommentID)\">\r\n <mat-icon>move_down</mat-icon> Jump to shared comment\r\n </button>\r\n </ng-container>\r\n </div>\r\n\r\n <banta-comment-view\r\n #commentView\r\n [class.faded]=\"selectedMessage && !useInlineReplies\"\r\n [source]=\"source\"\r\n [fixedHeight]=\"fixedHeight\"\r\n [maxMessages]=\"maxMessages\"\r\n [maxVisibleMessages]=\"maxVisibleMessages\"\r\n [genericAvatarUrl]=\"genericAvatarUrl\"\r\n [customMenuItems]=\"customMenuItems\"\r\n [holdNewMessages]=\"selectedMessageVisible\"\r\n (userSelected)=\"selectMessageUser($event)\"\r\n (sortOrderChanged)=\"sortOrder = $event\"\r\n (filterModeChanged)=\"filterMode = $event\"\r\n (selected)=\"toggleSelectedMessage($event)\"\r\n (liked)=\"likeMessage(source, $event)\"\r\n (unliked)=\"unlikeMessage(source, $event)\"\r\n (messageEdited)=\"editMessage(source, $event.message, $event.newMessage)\"\r\n (reported)=\"reportMessage($event)\"\r\n (usernameSelected)=\"selectUsername($event)\"\r\n (avatarSelected)=\"selectAvatar($event)\"\r\n (shared)=\"shareMessage($event)\"\r\n [selectedMessage]=\"selectedMessage\"\r\n (deleted)=\"deleteMessage($event)\"\r\n >\r\n <div class=\"inline-replies\">\r\n <div class=\"focused\" [class.visible]=\"selectedMessageVisible\" *ngIf=\"selectedMessage\">\r\n <div class=\"replies\">\r\n \r\n <ng-container *ngIf=\"!selectedMessageThread\">\r\n <div class=\"loading\">\r\n <mat-spinner></mat-spinner>\r\n </div>\r\n </ng-container>\r\n \r\n <ng-container *ngIf=\"selectedMessageThread\">\r\n <banta-comment-view\r\n [source]=\"selectedMessageThread\"\r\n [allowReplies]=\"false\"\r\n [fixedHeight]=\"false\"\r\n [showEmptyState]=\"false\"\r\n [newestLast]=\"true\"\r\n [enableHoldOnClick]=\"false\"\r\n [holdNewMessages]=\"replyFieldFocused\"\r\n [genericAvatarUrl]=\"genericAvatarUrl\"\r\n (liked)=\"likeMessage(selectedMessageThread, $event)\"\r\n (unliked)=\"unlikeMessage(selectedMessageThread, $event)\"\r\n (messageEdited)=\"editMessage(selectedMessageThread, $event.message, $event.newMessage)\"\r\n (reported)=\"reportMessage($event)\"\r\n (usernameSelected)=\"selectUsername($event)\"\r\n (avatarSelected)=\"selectAvatar($event)\"\r\n (shared)=\"shareMessage($event)\"\r\n (deleted)=\"deleteMessage($event)\"\r\n ></banta-comment-view>\r\n \r\n <banta-comment-field\r\n [url]=\"url\"\r\n [sendLabel]=\"replyLabel\"\r\n [sendingLabel]=\"sendingLabel\"\r\n [signingInLabel]=\"signingInLabel\"\r\n [hashtags]=\"hashtags\"\r\n [participants]=\"participants\"\r\n (signInSelected)=\"showSignIn()\"\r\n [maxLength]=\"maxCommentLength\"\r\n [source]=\"selectedMessageThread\"\r\n [signInState]=\"source?.signInState\"\r\n [canComment]=\"source?.permissions?.canPost\"\r\n [signInLabel]=\"signInLabel\"\r\n [permissionDeniedLabel]=\"source?.permissions?.canPostErrorMessage || permissionDeniedLabel\"\r\n [readonly]=\"source?.readonly\"\r\n [shouldInterceptMessageSend]=\"shouldInterceptMessageSend\"\r\n [user]=\"user\"\r\n [label]=\"postReplyLabel\"\r\n [submit]=\"sendReply\"\r\n [allowAttachments]=\"allowAttachments\"\r\n [genericAvatarUrl]=\"genericAvatarUrl\"\r\n (permissionDeniedError)=\"handlePermissionDenied($event)\"\r\n (editAvatarSelected)=\"showEditAvatar()\"\r\n (focusChange)=\"replyFieldFocused = $event\"\r\n >\r\n <ng-container *ngTemplateOutlet=\"sendReplyOptionsTemplate\"></ng-container>\r\n </banta-comment-field>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n </banta-comment-view>\r\n </div>\r\n <div class=\"reconnecting\" *ngIf=\"connectionState === 'lost'\">\r\n <strong>Connection to Live Comments lost.</strong> Reconnecting...\r\n </div>\r\n</ng-container>\r\n","import { Component, Input, Output } from \"@angular/core\";\r\nimport { User, ChatMessage } from '@banta/common';\r\nimport { Subject } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'banta-chat-message',\r\n templateUrl: './chat-message.component.html',\r\n styleUrls: ['./chat-message.component.scss']\r\n})\r\nexport class ChatMessageComponent {\r\n private _selected = new Subject<void>();\r\n private _reported = new Subject<void>();\r\n private _upvoted = new Subject<void>();\r\n private _userSelected = new Subject<User>();\r\n\r\n @Input()\r\n message : ChatMessage;\r\n \r\n @Output() \r\n get userSelected() {\r\n return this._userSelected;\r\n }\r\n\r\n @Output()\r\n get selected() {\r\n return this._selected;\r\n }\r\n\r\n @Output()\r\n get reported() {\r\n return this._reported;\r\n }\r\n\r\n @Output()\r\n get upvoted() {\r\n return this._upvoted;\r\n }\r\n\r\n avatarForUser(user : User) {\r\n if (user && user.avatarUrl) {\r\n let url = user.avatarUrl;\r\n return `url(${url})`;\r\n }\r\n\r\n return null;\r\n }\r\n \r\n upvote() {\r\n this._upvoted.next();\r\n }\r\n\r\n report() {\r\n this._reported.next();\r\n }\r\n\r\n select() {\r\n this._selected.next();\r\n }\r\n \r\n selectUser() {\r\n this._userSelected.next(this.message.user);\r\n }\r\n\r\n}","<div class=\"message-content\">\r\n <div class=\"user\" (click)=\"selectUser()\">\r\n <div class=\"avatar\" [style.background-image]=\"avatarForUser(message.user)\"></div>\r\n <label>{{message.user.username}}</label>\r\n </div>\r\n <div class=\"content\">\r\n <div (click)=\"select()\">\r\n {{message.message}}\r\n </div>\r\n <div class=\"status\">\r\n <div class=\"count-indicator\" *ngIf=\"message.likes > 0\">\r\n <mat-icon>star</mat-icon> {{message.likes}}\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n<div class=\"actions\">\r\n <button mat-icon-button matTooltip=\"Upvote\" matTooltipPosition=\"below\" (click)=\"upvote()\">\r\n <mat-icon>thumb_up</mat-icon>\r\n </button>\r\n <button mat-icon-button matTooltip=\"Report\" matTooltipPosition=\"below\" (click)=\"report()\">\r\n <mat-icon>report</mat-icon>\r\n </button>\r\n</div>","import { Component, Input, ViewChild, ElementRef, Output } from \"@angular/core\";\r\nimport { User, ChatMessage } from '@banta/common';\r\nimport { Subject, Subscription } from 'rxjs';\r\nimport { ChatBackendBase } from \"../../chat-backend-base\";\r\nimport { ChatSourceBase } from \"../../chat-source-base\";\r\n\r\n@Component({\r\n selector: 'banta-chat-view',\r\n templateUrl: './chat-view.component.html',\r\n styleUrls: ['./chat-view.component.scss']\r\n})\r\nexport class ChatViewComponent {\r\n constructor(\r\n private backend: ChatBackendBase,\r\n private elementRef : ElementRef<HTMLElement>\r\n ) {\r\n\r\n }\r\n\r\n private _sourceSubs = new Subscription();\r\n private _source : ChatSourceBase;\r\n\r\n @Input()\r\n get source() {\r\n return this._source;\r\n }\r\n\r\n private _selected = new Subject<ChatMessage>();\r\n private _selected$ = this._selected.asObservable();\r\n private _reported = new Subject<ChatMessage>();\r\n private _reported$ = this._reported.asObservable();\r\n private _upvoted = new Subject<ChatMessage>();\r\n private _upvoted$ = this._upvoted.asObservable();\r\n private _userSelected = new Subject<ChatMessage>();\r\n private _userSelected$ = this._userSelected.asObservable();\r\n private _received = new Subject<ChatMessage>();\r\n private _received$ = this._received.asObservable();\r\n\r\n @Output() get selected() { return this._selected$; }\r\n @Output() get userSelected() { return this._userSelected$; }\r\n @Output() get reported() { return this._reported$; }\r\n @Output() get upvoted() { return this._upvoted$; }\r\n @Output() get received() { return this._received$; }\r\n\r\n set source(value) {\r\n if (this._sourceSubs) {\r\n this._sourceSubs.unsubscribe();\r\n this._sourceSubs = null;\r\n }\r\n\r\n this._source = value;\r\n\r\n this.messages = [];\r\n\r\n if (value) {\r\n this._sourceSubs = new Subscription();\r\n this.messages = value.messages.slice();\r\n\r\n this._sourceSubs.add(this._source.messageReceived.subscribe(msg => this.messageReceived(msg)));\r\n this._sourceSubs.add(this._source.messageSent.subscribe(msg => this.messageSent(msg)));\r\n\r\n this._sourceSubs.add(\r\n this.backend.userChanged\r\n .subscribe(user => this.currentUser = user)\r\n );\r\n \r\n this.getInitialMessages();\r\n }\r\n }\r\n\r\n private async getInitialMessages() {\r\n let messages = (await this._source.getExistingMessages());\r\n messages.forEach(m => m.transientState ??= {});\r\n this.messages = messages.slice().reverse();\r\n this.sortMessages();\r\n }\r\n\r\n private sortMessages() {\r\n if (!this.source)\r\n return;\r\n \r\n let sorter: (a: ChatMessage, b: ChatMessage) => number;\r\n\r\n sorter = (a, b) => (a.sentAt - b.sentAt);\r\n\r\n this.messages.sort(sorter);\r\n }\r\n\r\n messages : ChatMessage[] = [];\r\n currentUser : User;\r\n\r\n @ViewChild('messageContainer')\r\n messageContainer : ElementRef<HTMLElement>;\r\n\r\n @Input() maxMessages : number = 200;\r\n @Input() emptyLabel = 'Be the first to chat';\r\n\r\n private addMessage(message : ChatMessage) {\r\n if (this.messages.length > this.maxMessages + 1) {\r\n while (this.messages.length > this.maxMessages)\r\n this.messages.shift();\r\n }\r\n\r\n this.messages.push(message);\r\n this.sortMessages();\r\n }\r\n\r\n private messageReceived(message : ChatMessage) {\r\n this.addMessage(message);\r\n this._received.next(message);\r\n\r\n if (this.isScrolledToLatest())\r\n setTimeout(() => this.scrollToLatest());\r\n }\r\n\r\n isScrolledToLatest() {\r\n if (!this.messageContainer)\r\n return false;\r\n\r\n let el = this.messageContainer.nativeElement;\r\n let currentScroll = el.scrollTop;\r\n let currentTotal = el.scrollHeight - el.offsetHeight;\r\n \r\n return currentScroll > currentTotal - 10;\r\n }\r\n\r\n private messageSent(message : ChatMessage) {\r\n this.addMessage(message);\r\n \r\n if (!this.messageContainer)\r\n return;\r\n\r\n setTimeout(() => this.scrollToLatest());\r\n }\r\n\r\n scrollToLatest() {\r\n if (!this.messageContainer)\r\n return;\r\n \r\n let el = this.messageContainer.nativeElement;\r\n el.scrollTop = el.scrollHeight;\r\n }\r\n\r\n jumpTo(message : ChatMessage) {\r\n let element = this.elementRef.nativeElement;\r\n let messageElement = element.querySelector(`banta-chat-message[data-id=\"${message.id}\"]`)\r\n\r\n if (!messageElement) {\r\n alert(`could not find message ${message.id}`);\r\n return;\r\n }\r\n\r\n messageElement.scrollIntoView({ behavior: 'smooth' });\r\n\r\n this.flashMessage(message);\r\n }\r\n\r\n flashMessage(message : ChatMessage) {\r\n if (!message)\r\n return;\r\n \r\n this.flashedMessageId = message.id;\r\n //setTimeout(() => this.flashedMessageId = null, 250);\r\n }\r\n\r\n flashedMessageId : string;\r\n\r\n\r\n mentionsMe(message : ChatMessage) {\r\n if (!this.currentUser)\r\n return false;\r\n\r\n if (message.message.includes(`@${this.currentUser.username}`))\r\n return true;\r\n \r\n return false;\r\n }\r\n \r\n upvoteMessage(message : ChatMessage) {\r\n this._upvoted.next(message);\r\n }\r\n\r\n reportMessage(message : ChatMessage) {\r\n this._reported.next(message);\r\n }\r\n\r\n selectMessage(message : ChatMessage) {\r\n this._selected.next(message);\r\n }\r\n\r\n selectMessageUser(message : ChatMessage) {\r\n this._userSelected.next(message);\r\n }\r\n\r\n avatarForUser(user : User) {\r\n if (user && user.avatarUrl) {\r\n let url = user.avatarUrl;\r\n return `url(${url})`;\r\n }\r\n\r\n return null;\r\n }\r\n}","<div class=\"message-container\" #messageContainer>\r\n <ng-content select=\"[data-before]\"></ng-content>\r\n \r\n <div class=\"empty\" *ngIf=\"messages.length === 0\">\r\n {{emptyLabel}}\r\n </div>\r\n \r\n <ng-container *ngFor=\"let message of messages\">\r\n <banta-chat-message\r\n *ngIf=\"!message.hidden\"\r\n [message]=\"message\"\r\n [class.highlight]=\"mentionsMe(message)\" \r\n [class.flash]=\"message.id === flashedMessageId\"\r\n (selected)=\"selectMessage(message)\"\r\n (upvoted)=\"upvoteMessage(message)\"\r\n (reported)=\"reportMessage(message)\"\r\n (userSelected)=\"selectMessageUser(message)\"\r\n [attr.data-id]=\"message.id\"\r\n >\r\n </banta-chat-message>\r\n </ng-container>\r\n <ng-content select=\":not([data-before])\"></ng-content>\r\n</div>","import { Component, Input, Output, ViewChild, ElementRef } from \"@angular/core\";\r\nimport { Subject, Observable, Subscription } from 'rxjs';\r\n\r\nimport { User, ChatMessage, NewMessageForm } from '@banta/common';\r\nimport { ChatViewComponent } from '../chat-view/chat-view.component';\r\nimport { ChatBackendBase } from \"../../chat-backend-base\";\r\nimport { ChatSourceBase } from \"../../chat-source-base\";\r\n\r\n/**\r\n * Chat component\r\n */\r\n@Component({\r\n selector: 'banta-chat',\r\n templateUrl: './banta-chat.component.html',\r\n styleUrls: ['./banta-chat.component.scss']\r\n})\r\nexport class BantaChatComponent {\r\n constructor(\r\n private backend : ChatBackendBase\r\n ) {\r\n }\r\n\r\n private _source : ChatSourceBase;\r\n private _subs = new Subscription();\r\n user : User = null;\r\n\r\n @Input() shouldInterceptMessageSend?: (message: ChatMessage, source: ChatSourceBase) => boolean | Promise<boolean>;\r\n @Input() url: string;\r\n\r\n ngOnInit() {\r\n this._subs.add(this.backend.userChanged.subscribe(user => this.user = user));\r\n }\r\n\r\n ngOnDestroy() {\r\n this._subs.unsubscribe();\r\n }\r\n\r\n @Input()\r\n get source() : ChatSourceBase {\r\n return this._source;\r\n }\r\n\r\n set source(value) {\r\n this._source = value;\r\n }\r\n\r\n @Input()\r\n get topicID() : string {\r\n return this._source.identifier;\r\n }\r\n\r\n set topicID(value) {\r\n this.setSourceFromTopicID(value);\r\n }\r\n\r\n private _metadata: Record<string, any> = {};\r\n\r\n /**\r\n * Arbitrary metadata to send to the chat server. This can be used to provide context about the client to the server\r\n * for things like validating authorization and other uses.\r\n */\r\n @Input() get metadata() { return this._metadata; }\r\n set metadata(value) {\r\n if (JSON.stringify(this._metadata) !== JSON.stringify(value)) {\r\n this._metadata = value;\r\n this.reloadSource();\r\n }\r\n }\r\n\r\n private _reloadSourceTimeout;\r\n private reloadSource() {\r\n clearTimeout(this._reloadSourceTimeout);\r\n this._reloadSourceTimeout = setTimeout(() => {\r\n this.setSourceFromTopicID(this.topicID);\r\n });\r\n }\r\n\r\n private async setSourceFromTopicID(topicID : string) {\r\n if (this._source && this._source.close)\r\n this._source.close();\r\n this._source = null;\r\n this._source = await this.backend.getSourceForTopic(topicID, { \r\n metadata: this.metadata\r\n });\r\n }\r\n\r\n @Input() signInLabel = 'Sign In';\r\n @Input() sendLabel = 'Send';\r\n @Input() permissionDeniedLabel = 'Send';\r\n @Input() messageFieldPlaceholder = 'Chat';\r\n @Input() emptyLabel = 'Be the first to chat';\r\n\r\n private _selected = new Subject<ChatMessage>();\r\n private _selected$ = this._selected.asObservable();\r\n private _reported = new Subject<ChatMessage>();\r\n private _reported$ = this._reported.asObservable();\r\n private _upvoted = new Subject<ChatMessage>();\r\n private _upvoted$ = this._upvoted.asObservable();\r\n private _userSelected = new Subject<ChatMessage>();\r\n private _userSelected$ = this._userSelected.asObservable();\r\n private _permissionDeniedError = new Subject<string>();\r\n private _permissionDeniedError$ = this._permissionDeniedError.asObservable();\r\n private _signInSelected = new Subject<void>();\r\n private _signInSelected$ = this._signInSelected.asObservable();\r\n private _received = new Subject<ChatMessage>();\r\n private _received$ = this._received.asObservable();\r\n\r\n @Output() get selected() { return this._selected$; }\r\n @Output() get reported() { return this._reported$; }\r\n @Output() get upvoted() { return this._upvoted$; }\r\n @Output() get userSelected() { return this._userSelected$; }\r\n @Output() get permissionDeniedError() { return this._permissionDeniedError$; }\r\n @Output() get signInSelected() { return this._signInSelected$; }\r\n @Output() get received() { return this._received$; }\r\n\r\n onReceived(message: ChatMessage) {\r\n this._received.next(message);\r\n }\r\n\r\n showEmojiPanel = false;\r\n\r\n showSignIn() {\r\n this._signInSelected.next();\r\n }\r\n\r\n sendPermissionError(message: string) {\r\n this._permissionDeniedError.next(message);\r\n }\r\n\r\n insertEmoji(emoji) {\r\n let message = this.newMessage.message || '';\r\n\r\n this.newMessage.message = message + emoji;\r\n }\r\n\r\n onKeyDown(event : KeyboardEvent) {\r\n // TODO\r\n }\r\n\r\n @ViewChild('chatView') chatView : ChatViewComponent;\r\n @ViewChild('input') inputElementRef: ElementRef<HTMLInputElement>;\r\n\r\n jumpToMessage(message : ChatMessage) {\r\n if (this.chatView)\r\n this.chatView.jumpTo(message);\r\n }\r\n\r\n select(message : ChatMessage) {\r\n this._selected.next(message);\r\n }\r\n\r\n selectUser(message : ChatMessage) {\r\n this._userSelected.next(message);\r\n }\r\n\r\n report(message : ChatMessage) {\r\n this._reported.next(message);\r\n }\r\n\r\n async upvote(message : ChatMessage) {\r\n await this.source.likeMessage(message.id);\r\n this._upvoted.next(message);\r\n }\r\n\r\n get canChat() {\r\n if (!this.user)\r\n return false;\r\n\r\n // TODO\r\n // if (!this.user.permissions)\r\n // return true;\r\n\r\n // if (!this.user.permissions.canChat)\r\n // return true;\r\n\r\n // return this.user.permissions?.canChat(this.source);\r\n \r\n return true;\r\n }\r\n\r\n newMessage : NewMessageForm = {};\r\n\r\n async sendMessage() {\r\n if (!this.source)\r\n return;\r\n\r\n let text = (this.newMessage.message || '').trim();\r\n this.newMessage.message = '';\r\n\r\n if (text === '')\r\n return;\r\n\r\n let message : ChatMessage = {\r\n user: null,\r\n sentAt: Date.now(),\r\n likes: 0,\r\n url: this.url ?? (typeof window !== 'undefined' ? location.href : undefined),\r\n message: text\r\n };\r\n\r\n try {\r\n const intercept = await this.shouldInterceptMessageSend?.(message, this.source);\r\n if (!intercept) {\r\n await this.source.send(message);\r\n }\r\n\r\n this.chatView.scrollToLatest();\r\n this.inputElementRef.nativeElement.focus();\r\n } catch (e) {\r\n console.error(`Failed to send message: `, message);\r\n console.error(e);\r\n }\r\n }\r\n}\r\n","<banta-chat-view \r\n #chatView\r\n [source]=\"source\"\r\n [emptyLabel]=\"emptyLabel\"\r\n (upvoted)=\"upvote($event)\"\r\n (reported)=\"report($event)\"\r\n (selected)=\"select($event)\"\r\n (received)=\"onReceived($event)\"\r\n (userSelected)=\"selectUser($event)\"\r\n ></banta-chat-view>\r\n\r\n<form class=\"new-message\" (submit)=\"sendMessage()\">\r\n \r\n <div class=\"entry-container\">\r\n <input\r\n #input\r\n type=\"text\"\r\n name=\"message\" \r\n autocomplete=\"off\"\r\n enterkeyhint=\"send\"\r\n [placeholder]=\"messageFieldPlaceholder\"\r\n (keydown)=\"onKeyDown($event)\"\r\n [(ngModel)]=\"newMessage.message\" />\r\n \r\n <emoji-selector-button\r\n (selected)=\"insertEmoji($event)\"\r\n overlayY=\"bottom\"\r\n overlayX=\"end\"\r\n originY=\"top\"\r\n ></emoji-selector-button>\r\n </div>\r\n\r\n <div class=\"actions\">\r\n\r\n <ng-container *ngIf=\"!user\">\r\n <button type=\"button\" (click)=\"showSignIn()\" mat-raised-button color=\"primary\">{{signInLabel}}</button>\r\n </ng-container>\r\n <ng-container *ngIf=\"user\">\r\n <button *ngIf=\"canChat\" [disabled]=\"!newMessage.message\" mat-raised-button color=\"primary\">{{sendLabel}}</button>\r\n <button *ngIf=\"!canChat\" type=\"button\" (click)=\"sendPermissionError()\" mat-raised-button color=\"primary\">{{permissionDeniedLabel}}</button>\r\n </ng-container>\r\n </div>\r\n</form>","import { Component, Input, Output } from '@angular/core';\r\nimport { ChatMessage } from '@banta/common';\r\nimport { Subject, Observable } from 'rxjs';\r\nimport { ChatBackendBase } from '../chat-backend-base';\r\n\r\n@Component({\r\n selector: 'banta-live-comment',\r\n template: `\r\n <banta-comment \r\n *ngIf=\"message\"\r\n [message]=\"message\"\r\n (upvoted)=\"upvote()\"\r\n (reported)=\"report()\"\r\n (selected)=\"select()\"\r\n ></banta-comment>\r\n `,\r\n styles: [``]\r\n})\r\nexport class LiveCommentComponent {\r\n constructor(\r\n private backend : ChatBackendBase\r\n ) {\r\n\r\n }\r\n\r\n private _message : ChatMessage;\r\n private _upvoted = new Subject<void>();\r\n private _reported = new Subject<void>();\r\n private _selected = new Subject<void>();\r\n\r\n @Output()\r\n get upvoted() : Observable<void> {\r\n return this._upvoted;\r\n }\r\n \r\n @Output()\r\n get reported() : Observable<void> {\r\n return this._reported;\r\n }\r\n\r\n @Output()\r\n get selected() : Observable<void> {\r\n return this._selected;\r\n }\r\n \r\n @Input()\r\n get message() : ChatMessage {\r\n return this._message;\r\n }\r\n\r\n private unsubscribe : Function;\r\n\r\n set message(value) {\r\n let originalId = null;\r\n if (this._message)\r\n originalId = this._message.id;\r\n \r\n this._message = value;\r\n\r\n if (value && originalId === value.id) {\r\n return;\r\n }\r\n \r\n if (this.unsubscribe)\r\n this.unsubscribe();\r\n \r\n if (value) {\r\n this.unsubscribe = this.backend.watchMessage(value, message => this.message = message);\r\n }\r\n }\r\n\r\n report() {\r\n this._reported.next();\r\n }\r\n \r\n upvote() {\r\n this._upvoted.next();\r\n }\r\n\r\n select() {\r\n this._selected.next();\r\n }\r\n}","import { Component, Input, Output } from '@angular/core';\r\nimport { ChatMessage } from '@banta/common';\r\nimport { Subject, Observable } from 'rxjs';\r\nimport { ChatBackendBase } from '../chat-backend-base';\r\n\r\n@Component({\r\n selector: 'banta-live-chat-message',\r\n template: `\r\n <banta-chat-message \r\n *ngIf=\"message\"\r\n [message]=\"message\"\r\n (upvoted)=\"upvote()\"\r\n (reported)=\"report()\"\r\n (selected)=\"select()\"\r\n ></banta-chat-message>\r\n `,\r\n styles: [``]\r\n})\r\nexport class LiveChatMessageComponent {\r\n constructor(\r\n private backend : ChatBackendBase\r\n ) {\r\n\r\n }\r\n\r\n private _message : ChatMessage;\r\n private _upvoted = new Subject<void>();\r\n private _reported = new Subject<void>();\r\n private _selected = new Subject<void>();\r\n\r\n @Output()\r\n get upvoted() : Observable<void> {\r\n return this._upvoted;\r\n }\r\n \r\n @Output()\r\n get reported() : Observable<void> {\r\n return this._reported;\r\n }\r\n\r\n @Output()\r\n get selected() : Observable<void> {\r\n return this._selected;\r\n }\r\n \r\n @Input()\r\n get message() : ChatMessage {\r\n return this._message;\r\n }\r\n\r\n private unsubscribe : Function;\r\n\r\n set message(value) {\r\n let originalId = null;\r\n if (this._message)\r\n originalId = this._message.id;\r\n \r\n this._message = value;\r\n\r\n if (value && originalId === value.id) {\r\n return;\r\n }\r\n\r\n if (this.unsubscribe)\r\n this.unsubscribe();\r\n \r\n if (value) {\r\n this.unsubscribe = this.backend.watchMessage(value, message => this.message = message);\r\n }\r\n }\r\n\r\n report() {\r\n this._reported.next();\r\n }\r\n \r\n upvote() {\r\n this._upvoted.next();\r\n }\r\n\r\n select() {\r\n this._selected.next();\r\n }\r\n}","import { Component, Input, Output } from \"@angular/core\";\r\nimport { ChatMessage } from '@banta/common';\r\nimport { Subject, Observable } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'banta-live-message',\r\n template: `\r\n <ng-container *ngIf=\"message\">\r\n <banta-live-chat-message\r\n *ngIf=\"viewType === 'chat'\"\r\n [message]=\"message\"\r\n (upvoted)=\"upvote(message)\"\r\n (reported)=\"report(message)\"\r\n (selected)=\"select(message)\">\r\n </banta-live-chat-message>\r\n\r\n <banta-live-comment \r\n *ngIf=\"viewType === 'comment'\"\r\n [message]=\"message\"\r\n (upvoted)=\"upvote(message)\"\r\n (reported)=\"report(message)\"\r\n (selected)=\"select(message)\">\r\n </banta-live-comment>\r\n </ng-container>\r\n `,\r\n styles: [``]\r\n})\r\nexport class LiveMessageComponent {\r\n constructor() {\r\n\r\n }\r\n\r\n private _message : ChatMessage;\r\n private _upvoted = new Subject<void>();\r\n private _reported = new Subject<void>();\r\n private _selected = new Subject<void>();\r\n\r\n viewType : string;\r\n\r\n @Output() \r\n get upvoted(): Observable<void> {\r\n return this._upvoted;\r\n }\r\n\r\n @Output() \r\n get reported(): Observable<void> {\r\n return this._reported;\r\n }\r\n \r\n @Output() \r\n get selected(): Observable<void> {\r\n return this._selected;\r\n }\r\n\r\n @Input()\r\n get message() : ChatMessage {\r\n return this._message;\r\n }\r\n\r\n set message(value) {\r\n this._message = value;\r\n this.viewType = this.getViewType(value);\r\n }\r\n\r\n private getViewType(message : ChatMessage) {\r\n if (message.topicId.endsWith('_firehose'))\r\n return 'chat';\r\n else if (message.topicId.endsWith('_thepoint'))\r\n return 'comment';\r\n\r\n return 'comment';\r\n }\r\n\r\n upvote() {\r\n this._upvoted.next();\r\n }\r\n\r\n report() {\r\n this._reported.next();\r\n }\r\n\r\n select() {\r\n this._selected.next();\r\n }\r\n\r\n}","import { Component, Input, ViewChild, HostBinding } from \"@angular/core\";\r\nimport { NewMessageForm, ChatMessage, User, Notification } from '@banta/common';\r\nimport { Subject, Observable, Subscription } from 'rxjs';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { BantaChatComponent } from '../chat';\r\nimport { Output } from \"@angular/core\";\r\nimport { ChatBackendBase } from \"../chat-backend-base\";\r\nimport { ChatSourceBase } from \"../chat-source-base\";\r\n\r\n/**\r\n * Unified chat and comments component\r\n */\r\n@Component({\r\n selector: `banta`,\r\n templateUrl: './banta.component.html',\r\n styleUrls: [ './banta.component.scss' ]\r\n})\r\nexport class BantaComponent {\r\n constructor(\r\n private backend : ChatBackendBase,\r\n private matDialog : MatDialog\r\n ) {\r\n }\r\n\r\n firehoseSource : ChatSourceBase;\r\n pointSource : ChatSourceBase;\r\n\r\n private _topicID : string;\r\n private _subs = new Subscription();\r\n\r\n auxOpen = false;\r\n auxTitle = 'Notifications';\r\n auxMode = 'notifications';\r\n\r\n ngOnInit() {\r\n this._subs.add(this.backend.userChanged.subscribe(user => this.currentUser = user));\r\n this._subs.add(this.backend.notificationsChanged.subscribe(notifs => this.notifications = notifs));\r\n this._subs.add(this.backend.newNotification.subscribe(notif => {\r\n this.newNotifications = true;\r\n }));\r\n }\r\n \r\n mobileFocus : string = null;\r\n\r\n async sendPointSubMessage() {\r\n let text = (this.newPointSubMessage.message || '').trim();\r\n this.newPointSubMessage.message = '';\r\n\r\n if (text === '')\r\n return;\r\n \r\n let message : ChatMessage = {\r\n user: null,\r\n sentAt: Date.now(),\r\n likes: 0,\r\n message: text\r\n };\r\n\r\n try {\r\n await this.pointSubChat.send(message);\r\n } catch (e) {\r\n console.error(`Failed to send point sub-message:`);\r\n console.error(e);\r\n }\r\n }\r\n\r\n @ViewChild('firehose', { static: true })\r\n firehose : BantaChatComponent;\r\n\r\n async goToMessage(message : ChatMessage) {\r\n\r\n let targetMessage = message;\r\n\r\n if (message.parentMessageId) {\r\n // jump to the parent message thread...\r\n\r\n let parentMessage: ChatMessage;\r\n \r\n try {\r\n parentMessage = await this.backend.getMessage(message.topicId, message.parentMessageId);\r\n } catch (e) {\r\n console.error(`Received exception while fetching parent message:`);\r\n console.error(e);\r\n }\r\n\r\n if (!parentMessage) {\r\n console.error(`Failed to look up parent message ${message.topicId}/${message.parentMessageId}`);\r\n console.error(`Original message was:`);\r\n console.dir(targetMessage);\r\n return;\r\n }\r\n\r\n message = parentMessage;\r\n }\r\n\r\n let viewType = this.getViewType(message);\r\n\r\n if (viewType === 'comment') {\r\n if (this.pointSubChat) {\r\n if (this.pointSubChat.close)\r\n this.pointSubChat.close();\r\n this.pointSubChat = null;\r\n }\r\n this.mobileFocus = 'points';\r\n this.pointOpen = message;\r\n this.pointSubChat = await this.backend.getSourceForThread(message.topicId, message.id);\r\n this.pointOpen = await this.backend.refreshMessage(message);\r\n this.newPointSubMessage = {};\r\n } else if (viewType === 'chat') {\r\n this.mobileFocus = 'firehose';\r\n this.firehose.jumpToMessage(message);\r\n }\r\n }\r\n\r\n notifications : Notification[];\r\n newNotifications = false;\r\n \r\n pointUnfocus() {\r\n this.pointOpen = null;\r\n if (this.pointSubChat) {\r\n if (this.pointSubChat.close)\r\n this.pointSubChat.close();\r\n this.pointSubChat = null;\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n this._subs.unsubscribe();\r\n }\r\n\r\n showAux(title : string, mode : string) {\r\n this.auxOpen = true;\r\n this.auxTitle = title;\r\n this.auxMode = mode;\r\n this.mobileFocus = 'aux';\r\n }\r\n\r\n showNotifications() {\r\n this.showAux('Notifications', 'notifications');\r\n }\r\n\r\n @Input()\r\n get topicID() : string {\r\n return this._topicID;\r\n }\r\n\r\n @Input() chatLabel = 'Chat';\r\n @Input() commentsLabel = 'Comments';\r\n\r\n set topicID(value) {\r\n this._topicID = value;\r\n\r\n this.close();\r\n this.connectToTopic(this._topicID);\r\n }\r\n\r\n private async connectToTopic(id : string) {\r\n this.firehoseSource = await this.backend.getSourceForTopic(`${id}_firehose`);\r\n this.pointSource = await this.backend.getSourceForTopic(`${id}_thepoint`);\r\n }\r\n\r\n private _signInSelected = new Subject<void>();\r\n\r\n @Output()\r\n get signInSelected(): Observable<void> {\r\n return this._signInSelected;\r\n }\r\n\r\n showSignIn() {\r\n this._signInSelected.next();\r\n }\r\n\r\n close() {\r\n if (this.firehoseSource) {\r\n if (this.firehoseSource.close)\r\n this.firehoseSource.close();\r\n this.firehoseSource = null;\r\n }\r\n\r\n if (this.pointSource) {\r\n if (this.pointSource.close)\r\n this.pointSource.close();\r\n this.pointSource = null;\r\n }\r\n }\r\n\r\n @HostBinding('class.point-focus')\r\n get hasPoint() {\r\n return this.pointOpen != null;\r\n }\r\n\r\n pointOpen : ChatMessage = null;\r\n pointSubChat : ChatSourceBase = null;\r\n\r\n closeAux() {\r\n this.auxOpen = false;\r\n this.mobileFocus = 'firehose';\r\n }\r\n\r\n getViewType(message : ChatMessage) {\r\n if (message.topicId.endsWith('_firehose'))\r\n return 'chat';\r\n else if (message.topicId.endsWith('_thepoint'))\r\n return 'comment';\r\n\r\n return 'comment';\r\n }\r\n\r\n async upvoteMessage(message : ChatMessage) {\r\n // TODO\r\n //await this.backend.likeMessage(message.id);\r\n }\r\n\r\n showProfile(user : User) {\r\n this.profileUser = user;\r\n this.showAux(`@${user.username}'s Profile`, 'profile');\r\n }\r\n\r\n profileUser : User;\r\n \r\n reportedMessage : ChatMessage;\r\n\r\n sendReport(message : ChatMessage) {\r\n this.auxOpen = false;\r\n alert('would send report');\r\n }\r\n\r\n reportMessage(message : ChatMessage) {\r\n this.reportedMessage = message;\r\n this.showAux(`Report message from @${message.user.username}`, 'report');\r\n }\r\n\r\n currentUser : User;\r\n\r\n newPointSubMessage : NewMessageForm = {};\r\n\r\n genericAvatarUrl = 'https://gravatar.com/avatar/915c804e0be607a4ad766ddadea5c48a?s=512&d=https://codepen.io/assets/avatars/user-avatar-512x512-6e240cf350d2f1cc07c2bed234c3a3bb5f1b237023c204c782622e80d6b212ba.png';\r\n}","\r\n<mat-menu #userMenu=\"matMenu\">\r\n <ng-container *ngIf=\"currentUser\">\r\n <button [disabled]=\"true\" mat-menu-item>{{currentUser.displayName}} (@{{currentUser.username}})</button>\r\n <button mat-menu-item (click)=\"signOut()\">Sign Out</button>\r\n </ng-container>\r\n <ng-container *ngIf=\"!currentUser\">\r\n <button mat-menu-item>Sign In</button>\r\n </ng-container>\r\n <button mat-menu-item>Help</button>\r\n</mat-menu>\r\n\r\n<div class=\"tabs\">\r\n <div>\r\n <a mat-button (click)=\"mobileFocus = 'chat'\">{{chatLabel}}</a>\r\n <a mat-button (click)=\"mobileFocus = 'comments'\">{{commentsLabel}}</a>\r\n </div>\r\n <div class=\"spacer\"></div>\r\n <div>\r\n <ng-container *ngIf=\"currentUser\">\r\n <button mat-button [matMenuTriggerFor]=\"userMenu\">\r\n @{{currentUser.username}}\r\n </button>\r\n <button mat-icon-button (click)=\"showNotifications()\">\r\n <mat-icon>notification_important</mat-icon>\r\n </button>\r\n </ng-container>\r\n \r\n <button mat-button *ngIf=\"!currentUser\" (click)=\"showSignIn()\">\r\n Sign In\r\n </button>\r\n </div>\r\n</div>\r\n\r\n<div class=\"firehose\" [class.focus]=\"mobileFocus === 'chat'\">\r\n <header>\r\n <div>\r\n <label (click)=\"mobileFocus = 'chat'\">{{chatLabel}}</label>\r\n <div class=\"spacer\"></div>\r\n\r\n <ng-container *ngIf=\"currentUser\">\r\n <button mat-button [matMenuTriggerFor]=\"userMenu\">\r\n @{{currentUser.username}}\r\n </button>\r\n <button mat-icon-button (click)=\"showNotifications()\">\r\n <mat-icon>notification_important</mat-icon>\r\n </button>\r\n </ng-container>\r\n \r\n <button mat-button *ngIf=\"!currentUser\" (click)=\"showSignIn()\">\r\n Sign In\r\n </button>\r\n </div>\r\n </header>\r\n <banta-chat \r\n #firehose\r\n [source]=\"firehoseSource\"\r\n (signInSelected)=\"showSignIn()\"\r\n (upvoted)=\"upvoteMessage($event)\"\r\n (userSelected)=\"showProfile($event.user)\"\r\n (reported)=\"reportMessage($event)\"\r\n ></banta-chat>\r\n</div>\r\n\r\n<div class=\"aux\" [class.focus]=\"mobileFocus === 'aux'\" [class.open]=\"auxOpen\">\r\n <header>\r\n <div>\r\n <label>{{auxTitle}}</label>\r\n <div class=\"spacer\"></div>\r\n <button mat-icon-button (click)=\"auxOpen = false\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </div>\r\n </header>\r\n <div class=\"aux-contents\">\r\n <ng-container *ngIf=\"auxMode === 'profile'\">\r\n <ng-container *ngIf=\"profileUser\">\r\n\r\n <div>\r\n <strong style=\"font-size: 125%;\">\r\n {{profileUser.displayName}}\r\n </strong>\r\n @{{profileUser.username}}\r\n </div>\r\n\r\n <br/>\r\n <strong>Top Messages</strong>\r\n\r\n <div>\r\n <em>Not yet available</em>\r\n </div>\r\n\r\n <br/>\r\n <strong>Recent Messages</strong>\r\n\r\n <div>\r\n <em>Not yet available</em>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"auxMode === 'report'\">\r\n <p>Are you sure you want to report this message?</p>\r\n\r\n <banta-live-message [message]=\"reportedMessage\"></banta-live-message>\r\n\r\n <div style=\"text-align: center;\">\r\n <button mat-raised-button color=\"primary\" (click)=\"sendReport(reportedMessage)\">Yes, Report</button>\r\n \r\n <button mat-raised-button color=\"secondary\" (click)=\"auxOpen = false\">No, Cancel</button>\r\n </div>\r\n\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"auxMode === 'notifications'\">\r\n\r\n <div *ngIf=\"!notifications || notifications.length === 0\">\r\n <em>You do not have any notifications yet</em>\r\n </div>\r\n \r\n <div class=\"notifications\">\r\n <div class=\"notification\" *ngFor=\"let notif of notifications\">\r\n <div>\r\n <ng-container *ngIf=\"notif.type === 'upvote'\">\r\n @{{notif.message?.user?.username}} upvoted your post\r\n \r\n <banta-live-message\r\n [message]=\"notif.message\"\r\n (upvoted)=\"upvoteMessage(notif.message)\"\r\n (reported)=\"reportMessage(notif.message)\"\r\n (selected)=\"goToMessage(notif.message)\">\r\n </banta-live-message>\r\n\r\n </ng-container>\r\n <ng-container *ngIf=\"notif.type === 'notice'\">\r\n <div>\r\n {{notif.message}}\r\n </div>\r\n <a mat-button target=\"_blank\" href=\"{{notif.actionUrl}}\">\r\n {{notif.actionLabel}}\r\n </a>\r\n </ng-container>\r\n <ng-container *ngIf=\"notif.type === 'mention'\">\r\n You were mentioned by @{{notif.message?.user?.username}}\r\n\r\n <banta-live-message\r\n [message]=\"notif.message\"\r\n (upvoted)=\"upvoteMessage(notif.message)\"\r\n (reported)=\"reportMessage(notif.message)\"\r\n (selected)=\"goToMessage(notif.message)\">\r\n </banta-live-message>\r\n\r\n </ng-container>\r\n <ng-container *ngIf=\"notif.type === 'reply'\">\r\n @{{notif.replyMessage?.user?.username}} replied to your post\r\n \r\n <banta-live-message\r\n [message]=\"notif.replyMessage\"\r\n (upvoted)=\"upvoteMessage(notif.replyMessage)\"\r\n (reported)=\"reportMessage(notif.replyMessage)\"\r\n (selected)=\"goToMessage(notif.replyMessage)\">\r\n </banta-live-message>\r\n </ng-container>\r\n </div>\r\n\r\n <banta-timestamp [value]=\"notif.sentAt\"></banta-timestamp>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n</div>\r\n<div class=\"points\" [class.focus]=\"mobileFocus === 'points'\">\r\n <header>\r\n <div>\r\n <label>{{commentsLabel}}</label>\r\n </div>\r\n </header>\r\n <div class=\"point-focus\">\r\n <div class=\"actions\">\r\n <button mat-button (click)=\"pointUnfocus()\">\r\n <mat-icon>arrow_back</mat-icon>\r\n Back\r\n </button>\r\n\r\n <div class=\"spacer\"></div>\r\n \r\n <ng-container *ngIf=\"pointOpen\">\r\n <div class=\"counted-action\">\r\n <div class=\"count-indicator\"> \r\n {{pointOpen.likes}}\r\n </div>\r\n <button mat-icon-button>\r\n <mat-icon>thumb_up</mat-icon>\r\n </button>\r\n </div>\r\n\r\n </ng-container>\r\n </div>\r\n\r\n <div *ngIf=\"!pointSubChat\">\r\n Error: No subchat\r\n </div>\r\n \r\n <banta-comment-view\r\n class=\"subcomments\"\r\n *ngIf=\"pointSubChat\"\r\n [newestLast]=\"true\"\r\n [allowReplies]=\"false\"\r\n [source]=\"pointSubChat\"\r\n (upvoted)=\"upvoteMessage($event)\"\r\n (reported)=\"reportMessage($event)\"\r\n (userSelected)=\"showProfile($event.user)\"\r\n >\r\n \r\n <banta-comment\r\n class=\"focused-comment\"\r\n data-before\r\n *ngIf=\"pointOpen\"\r\n [showReplyAction]=\"false\"\r\n [message]=\"pointOpen\"\r\n [readonly]=\"pointSubChat?.readonly\"\r\n (upvoted)=\"upvoteMessage(pointOpen)\"\r\n (userSelected)=\"showProfile(pointOpen.user)\"\r\n (reported)=\"reportMessage(pointOpen)\"\r\n ></banta-comment>\r\n \r\n <div class=\"message reply\">\r\n Reply:\r\n <form class=\"new-message\" (submit)=\"sendPointSubMessage()\">\r\n <textarea \r\n name=\"message\" \r\n (keydown)=\"newPointSubMessageKeyDown($event)\"\r\n [(ngModel)]=\"newPointSubMessage.message\"></textarea>\r\n \r\n <div class=\"actions\">\r\n <button [disabled]=\"!newPointSubMessage.message\" \r\n mat-raised-button color=\"primary\">Send</button>\r\n </div>\r\n </form>\r\n </div>\r\n </banta-comment-view>\r\n </div>\r\n <div class=\"points-section\">\r\n <banta-comments\r\n [source]=\"pointSource\"\r\n (signInSelected)=\"showSignIn()\"\r\n (upvoted)=\"upvoteMessage($event)\"\r\n (reported)=\"reportMessage($event)\"\r\n (selected)=\"goToMessage($event)\"\r\n (userSelected)=\"showProfile($event.user)\"\r\n ></banta-comments>\r\n </div>\r\n</div>","import { Component } from \"@angular/core\";\r\n\r\n@Component({\r\n selector: 'banta-logo',\r\n template: `banta`,\r\n styles: [\r\n `\r\n :host {\r\n font-family: 'Odibee Sans', sans-serif;\r\n font-size: 40pt;\r\n }\r\n\r\n :host.small {\r\n font-size: 30pt;\r\n }\r\n `\r\n ]\r\n})\r\nexport class BantaLogoComponent {\r\n\r\n}","import { NgModule } from \"@angular/core\";\r\nimport { ChatMessageComponent } from './chat-message/chat-message.component';\r\nimport { ChatViewComponent } from './chat-view/chat-view.component';\r\nimport { BantaChatComponent } from './banta-chat/banta-chat.component';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { EmojiModule } from '../emoji';\r\nimport { LiveChatMessageComponent } from './live-chat-message.component';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatIconModule } from '@angular/material/icon';\r\n\r\nconst COMPONENTS = [\r\n ChatMessageComponent,\r\n LiveChatMessageComponent,\r\n ChatViewComponent,\r\n BantaChatComponent\r\n];\r\n\r\n@NgModule({\r\n declarations: COMPONENTS,\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n MatIconModule,\r\n MatButtonModule,\r\n EmojiModule\r\n ],\r\n exports: COMPONENTS\r\n})\r\nexport class ChatModule {\r\n}","import { Component, Input, Output } from '@angular/core';\r\nimport { CommentsOrder } from \"@banta/common\";\r\nimport { Subject } from \"rxjs\";\r\n\r\n@Component({\r\n selector: 'banta-comment-sort',\r\n templateUrl: './comment-sort.component.html',\r\n styleUrls: ['./comment-sort.component.scss']\r\n})\r\nexport class CommentSortComponent {\r\n\r\n commentsOrder = CommentsOrder;\r\n private _sortChange = new Subject<CommentsOrder>();\r\n private _sort: CommentsOrder = CommentsOrder.LIKES;\r\n\r\n @Input() \r\n get sort() { \r\n return this._sort;\r\n }\r\n\r\n set sort(value) {\r\n if (this._sort !== value) {\r\n this._sort = value;\r\n setTimeout(() => this._sortChange.next(value));\r\n }\r\n }\r\n\r\n @Output()\r\n get sortChange() {\r\n return this._sortChange.asObservable();\r\n }\r\n}\r\n","<mat-form-field appearance=\"outline\" floatLabel=\"always\">\r\n <mat-label>Sort</mat-label>\r\n <mat-select [(value)]=\"sort\" >\r\n <mat-option [value]=\"commentsOrder.NEWEST\">Newest</mat-option>\r\n <mat-option [value]=\"commentsOrder.OLDEST\">Oldest</mat-option>\r\n <mat-option [value]=\"commentsOrder.LIKES\">Likes</mat-option>\r\n </mat-select>\r\n</mat-form-field>","import { OverlayModule } from '@angular/cdk/overlay';\r\nimport { PortalModule } from '@angular/cdk/portal';\r\nimport { TextFieldModule } from '@angular/cdk/text-field';\r\nimport { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatMenuModule } from '@angular/material/menu';\r\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\r\nimport { MatSelectModule } from \"@angular/material/select\";\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { BantaCommonModule } from '../common';\r\nimport { EmojiModule } from '../emoji';\r\nimport { AttachmentButtonComponent } from './attachment-button/attachment-button.component';\r\nimport { AttachmentScraperDirective } from './attachment-scraper.directive';\r\nimport { BantaCommentsComponent } from './banta-comments/banta-comments.component';\r\nimport { CommentFieldComponent } from './comment-field/comment-field.component';\r\nimport { CommentSortComponent } from \"./comment-sort/comment-sort.component\";\r\nimport { CommentViewComponent } from './comment-view/comment-view.component';\r\nimport { CommentComponent } from './comment/comment.component';\r\nimport { LiveCommentComponent } from './live-comment.component';\r\nimport { BantaReplySendOptionsDirective } from './reply-send-options.directive';\r\n\r\nconst COMPONENTS = [\r\n CommentComponent,\r\n CommentViewComponent,\r\n BantaCommentsComponent,\r\n LiveCommentComponent,\r\n CommentFieldComponent,\r\n CommentSortComponent,\r\n AttachmentButtonComponent,\r\n BantaReplySendOptionsDirective,\r\n AttachmentScraperDirective\r\n];\r\n\r\n@NgModule({\r\n declarations: COMPONENTS,\r\n imports: [\r\n CommonModule,\r\n TextFieldModule,\r\n FormsModule,\r\n MatIconModule,\r\n MatFormFieldModule,\r\n MatInputModule,\r\n MatButtonModule,\r\n MatMenuModule,\r\n MatProgressSpinnerModule,\r\n BantaCommonModule,\r\n EmojiModule,\r\n MatTooltipModule,\r\n MatSelectModule,\r\n OverlayModule,\r\n PortalModule\r\n ],\r\n exports: COMPONENTS\r\n})\r\nexport class CommentsModule {\r\n}\r\n","import { ChatMessage, ChatPermissions, CommentsOrder, DurableSocket, User } from \"@banta/common\";\r\nimport { BehaviorSubject, Subject, Subscription } from \"rxjs\";\r\nimport { RpcEvent, SocketRPC } from \"@banta/common\";\r\nimport { ChatSourceBase } from \"./chat-source-base\";\r\nimport { ChatBackend } from \"./chat-backend\";\r\nimport { v4 as uuid } from \"uuid\";\r\nimport { ChatSourceOptions } from \"./chat-backend-base\";\r\n\r\nexport type SignInState = 'signed-out' | 'signed-in' | 'signing-in';\r\n\r\nexport class ChatSource extends SocketRPC implements ChatSourceBase {\r\n constructor(\r\n readonly backend: ChatBackend,\r\n readonly identifier: string,\r\n readonly parentIdentifier: string,\r\n options: ChatSourceOptions\r\n ) {\r\n super();\r\n this.options = options ?? {};\r\n this.ready = new Promise<void>(resolve => this.markReady = resolve);\r\n }\r\n\r\n private options: ChatSourceOptions;\r\n private subscription = new Subscription();\r\n private markReady: () => void;\r\n\r\n readonly = false;\r\n canLoadMore = true;\r\n\r\n ready: Promise<void>;\r\n\r\n permissions: ChatPermissions;\r\n private _state: 'connected' | 'connecting' | 'lost' | 'restored' = 'connecting';\r\n\r\n get sortOrder() {\r\n return this.options?.sortOrder;\r\n }\r\n\r\n get filterMode() {\r\n return this.options?.filterMode;\r\n }\r\n\r\n get state() {\r\n return this._state;\r\n }\r\n\r\n set state(value) {\r\n this._state = value;\r\n setTimeout(() => this._connectionStateChanged.next(this._state));\r\n }\r\n\r\n private _connectionStateChanged = new Subject<'connected' | 'connecting' | 'lost' | 'restored'>();\r\n private _connectionStateChanged$ = this._connectionStateChanged.asObservable();\r\n get connectionStateChanged() { return this._connectionStateChanged$; }\r\n\r\n private wasRestored = false;\r\n\r\n async bind(socket: DurableSocket): Promise<this> {\r\n super.bind(socket);\r\n\r\n this.subscription.add(this.backend.userChanged.subscribe(() => this.authenticate()));\r\n\r\n socket.addEventListener('open', async () => {\r\n console.log(`[Banta/${this.identifier}] Socket is open`);\r\n });\r\n\r\n socket.addEventListener('error', async () => {\r\n console.log(`[Banta/${this.identifier}] Socket error`);\r\n });\r\n\r\n socket.addEventListener('lost', async () => {\r\n this.state = 'lost';\r\n });\r\n\r\n socket.addEventListener('restore', async () => {\r\n this.wasRestored = true;\r\n await this.authenticate();\r\n await this.subscribeToTopic();\r\n });\r\n\r\n try {\r\n await this.subscribeToTopic();\r\n } catch (e) {\r\n console.error(`[Banta/ChatSource] Error during initial subscribeToTopic: ${e.message}`);\r\n }\r\n \r\n return this;\r\n }\r\n\r\n private mapOrUpdateMessages(messages: ChatMessage[]): ChatMessage[] {\r\n return messages.map(message => this.mapOrUpdateMessage(message));\r\n }\r\n\r\n private mapOrUpdateMessage(message: ChatMessage): ChatMessage {\r\n let existingMessage = this.messageMap.get(message.id);\r\n if (existingMessage) {\r\n message = Object.assign(existingMessage, message);\r\n } else {\r\n this.messageMap.set(message.id, message);\r\n this._messageObserved.next(message);\r\n }\r\n\r\n return message;\r\n }\r\n\r\n /**\r\n * Ask server for messages that have occurred since the message with the given ID.\r\n * This is used during brief reconnects to avoid dropping messages, while also not \r\n * causing mobbing as everyone reconnects after an issue. The backend can choose to \r\n * not service this request, instead returning undefined. In that case, the client \r\n * is expected to fetch the existing messages and start state anew.\r\n * \r\n * TODO: this is not yet used\r\n * \r\n * @param id \r\n * @returns \r\n */\r\n async loadSince(id: string): Promise<ChatMessage[]> {\r\n try {\r\n let messages = await this.idempotentPeer.loadSince(id);\r\n if (messages) {\r\n messages = this.mapOrUpdateMessages(messages);\r\n }\r\n\r\n return messages;\r\n } catch (e) {\r\n console.error(`[Banta/${this.identifier}] Error occurred while trying to get existing messages:`);\r\n console.error(e);\r\n return [];\r\n }\r\n }\r\n\r\n async getExistingMessages(): Promise<ChatMessage[]> {\r\n try {\r\n let messages = await this.idempotentPeer.getExistingMessages(this.options.initialMessageCount ?? 20);\r\n messages = this.mapOrUpdateMessages(messages);\r\n return messages;\r\n } catch (e) {\r\n console.error(`[Banta/${this.identifier}] Error occurred while trying to get existing messages:`);\r\n console.error(e);\r\n return [];\r\n }\r\n }\r\n\r\n private async ensureConnection(errorMessage?: string) {\r\n // let reason = `Connection to chat services is not currently available.`;\r\n // if (this.state !== 'connected' && this.state !== 'restored') {\r\n // if (errorMessage)\r\n // throw new Error(`${errorMessage}: ${reason}`);\r\n // else\r\n // throw new Error(`${reason}`);\r\n // }\r\n }\r\n\r\n async editMessage(messageId: string, text: string): Promise<void> {\r\n await this.ensureConnection();\r\n await this.peer.editMessage(messageId, text);\r\n }\r\n\r\n private subscribeAttempt = 0;\r\n private _errorState: string;\r\n\r\n get errorState() {\r\n return this._errorState;\r\n }\r\n\r\n async subscribeToTopic() {\r\n try {\r\n await this.immediatePeer.subscribe(\r\n this.identifier, this.parentIdentifier, this.options.sortOrder, \r\n this.options.filterMode,\r\n this.options.metadata ?? {}\r\n );\r\n this.subscribeAttempt = 0;\r\n this._errorState = undefined;\r\n this.state = this.wasRestored ? 'restored' : 'connected';\r\n this.markReady();\r\n\r\n } catch (e) {\r\n console.error(`[Banta/${this.identifier}] Error while subscribing to topic`);\r\n console.error(e);\r\n\r\n this.state = 'lost';\r\n this._errorState = 'server-issue';\r\n\r\n this.subscribeAttempt += 1;\r\n let delay = Math.min(30*1000, (3*1000 * this.subscribeAttempt) * (1 + Math.random()));\r\n console.error(`[Banta/${this.identifier}] Waiting ${delay}ms before attempting to reconnect...`);\r\n\r\n setTimeout(() => {\r\n if (this.state === 'lost') {\r\n console.info(`Attempting reconnection after error in subscribeToTopic...`);\r\n this.reconnect();\r\n }\r\n }, delay);\r\n\r\n throw e;\r\n }\r\n }\r\n\r\n private _signInState: SignInState = 'signed-out';\r\n private _signInStateChanged = new BehaviorSubject<SignInState>(this._signInState);\r\n private _signInStateChanged$ = this._signInStateChanged.asObservable();\r\n\r\n get signInState() { return this._signInState; }\r\n get signInStateChanged() { return this._signInStateChanged$; }\r\n\r\n private setSignInState(state: SignInState) {\r\n this._signInState = state;\r\n this._signInStateChanged.next(state);\r\n }\r\n async authenticate() {\r\n this.setSignInState('signing-in');\r\n if (this.backend.user) {\r\n try {\r\n await this.immediatePeer.authenticate(this.backend.user?.token);\r\n this.setSignInState('signed-in');\r\n } catch (e) {\r\n console.error(`[Banta] Could not authenticate:`);\r\n console.error(e);\r\n this.setSignInState('signed-out');\r\n }\r\n }\r\n }\r\n\r\n close(): void {\r\n super.close();\r\n this.subscription.unsubscribe();\r\n }\r\n\r\n @RpcEvent()\r\n onPermissions(permissions: ChatPermissions) {\r\n (window as any).bantaPermissionsDebug = permissions;\r\n this.permissions = permissions;\r\n }\r\n\r\n @RpcEvent()\r\n onChatMessage(message: ChatMessage) {\r\n if (this.messageMap.has(message.id)) {\r\n return this.mapOrUpdateMessage(message);\r\n } else if (!message.hidden) {\r\n // Only process non-hidden messages through here. \r\n // Hidden messages may be sent to us when they become hidden (ie moderation is occurring).\r\n // But if we never had the message to begin with, we should discard it.\r\n this.messageMap.set(message.id, message);\r\n this._messageReceived.next(message);\r\n }\r\n }\r\n\r\n private messageMap = new Map<string, ChatMessage>();\r\n private _messageReceived = new Subject<ChatMessage>();\r\n private _messageUpdated = new Subject<ChatMessage>();\r\n private _messageSent = new Subject<ChatMessage>();\r\n private _messageObserved = new Subject<ChatMessage>();\r\n\r\n get messageReceived() { return this._messageReceived.asObservable(); }\r\n get messageUpdated() { return this._messageUpdated.asObservable(); }\r\n get messageSent() { return this._messageSent.asObservable(); }\r\n get messageObserved() { return this._messageObserved.asObservable(); }\r\n\r\n messages: ChatMessage[] = [];\r\n\r\n async send(message: ChatMessage): Promise<ChatMessage> {\r\n await this.ensureConnection();\r\n message.id ??= uuid();\r\n let finishedMessage = await this.idempotentPeer.sendMessage(message);\r\n\r\n return finishedMessage;\r\n }\r\n\r\n async loadAfter(message: ChatMessage, count: number): Promise<ChatMessage[]> {\r\n if (!message)\r\n return;\r\n\r\n if (!message.pagingCursor)\r\n return [];\r\n \r\n return this.mapOrUpdateMessages(\r\n await this.idempotentPeer.loadAfter(Number(message.pagingCursor), count)\r\n );\r\n }\r\n\r\n async get(id: string): Promise<ChatMessage> {\r\n if (this.messageMap.has(id))\r\n return this.messageMap.get(id);\r\n \r\n await this.ensureConnection(`Could not get message`);\r\n let message = await this.idempotentPeer.getMessage(id);\r\n\r\n if (this.messageMap.has(id)) {\r\n let existingMessage = this.messageMap.get(id);\r\n Object.assign(existingMessage, message);\r\n message = existingMessage;\r\n } else {\r\n this.messageMap.set(id, message);\r\n }\r\n\r\n return message;\r\n }\r\n\r\n async getCount(): Promise<number> {\r\n return await this.idempotentPeer.getCount();\r\n }\r\n\r\n async likeMessage(messageId: string): Promise<void> {\r\n await this.ensureConnection();\r\n return await this.idempotentPeer.likeMessage(messageId);\r\n }\r\n\r\n async unlikeMessage(messageId: string): Promise<void> {\r\n await this.ensureConnection();\r\n return await this.idempotentPeer.unlikeMessage(messageId);\r\n }\r\n\r\n async deleteMessage(messageId: string): Promise<void> {\r\n await this.ensureConnection();\r\n return await this.idempotentPeer.deleteMessage(messageId);\r\n }\r\n\r\n}","import { ChatMessage, ChatPermissions, CommentsOrder, FilterMode } from \"@banta/common\";\r\nimport { ChatSourceBase } from \"./chat-source-base\";\r\nimport { Observable, Subject } from \"rxjs\";\r\nimport { ChatBackend } from \"./chat-backend\";\r\nimport { ChatSourceOptions } from \"./chat-backend-base\";\r\n\r\n/**\r\n * A special ChatSource which uses the REST API to load a limited number of chat messages, and does not support \r\n * sending/editing/deleting messages, liking/unliking, or loading more messages.\r\n * \r\n * This is used within Banta's SSR support.\r\n */\r\nexport class StaticChatSource implements ChatSourceBase {\r\n constructor(\r\n private backend: ChatBackend, \r\n readonly identifier: string,\r\n readonly parentIdentifier?: string,\r\n options?: ChatSourceOptions\r\n ) {\r\n \r\n this.sortOrder = options?.sortOrder ?? CommentsOrder.NEWEST;\r\n this.filterMode = options?.filterMode ?? FilterMode.ALL;\r\n this.initialMessageCount = options?.initialMessageCount ?? 100;\r\n }\r\n\r\n initialMessageCount: number;\r\n sortOrder: CommentsOrder;\r\n filterMode: FilterMode;\r\n permissions: ChatPermissions; // TODO\r\n\r\n ready = Promise.resolve(); // TODO: should we do more than this?\r\n readonly = true;\r\n canLoadMore = false;\r\n\r\n messageReceived = new Subject<ChatMessage>();\r\n messageObserved = new Subject<ChatMessage>();\r\n messageUpdated = new Subject<ChatMessage>();\r\n messageSent = new Subject<ChatMessage>();\r\n\r\n messages: ChatMessage[] = [];\r\n\r\n async send(message: ChatMessage): Promise<ChatMessage> {\r\n throw new Error(`Cannot send a message in this state.`);\r\n }\r\n\r\n close() {\r\n // no op\r\n }\r\n\r\n async getCount() {\r\n if (this.parentIdentifier) {\r\n // TODO: We need a getReplyCount or something\r\n return 0;\r\n }\r\n\r\n this.backend.getSourceCountForTopic(this.identifier);\r\n }\r\n \r\n async loadSince(id: string) {\r\n return undefined;\r\n }\r\n\r\n async getExistingMessages() {\r\n if (this.parentIdentifier) {\r\n return await this.backend.getReplies(this.parentIdentifier, this.sortOrder, this.filterMode, 0, this.initialMessageCount);\r\n } else {\r\n return await this.backend.getMessages(this.identifier, this.sortOrder, this.filterMode, 0, this.initialMessageCount);\r\n }\r\n }\r\n\r\n async loadAfter(message: ChatMessage, count: number): Promise<ChatMessage[]> {\r\n return []; // no op\r\n }\r\n\r\n async get(id: string) {\r\n return await this.backend.getMessage(this.identifier, id);\r\n }\r\n\r\n async likeMessage(messageId: string): Promise<void> {\r\n throw new Error(`Cannot perform this action in this state.`);\r\n }\r\n\r\n async unlikeMessage(messageId: string): Promise<void> {\r\n throw new Error(`Cannot perform this action in this state.`);\r\n }\r\n\r\n async editMessage(messageId: string, text: string): Promise<void> {\r\n throw new Error(`Cannot perform this action in this state.`);\r\n }\r\n\r\n async deleteMessage(messageId: string): Promise<void> {\r\n throw new Error(`Cannot perform this action in this state.`);\r\n }\r\n\r\n connectionStateChanged = new Subject<'connected' | 'connecting' | 'lost' | 'restored'>();\r\n state : 'connecting' | 'connected' | 'lost' | 'restored' = 'connected';\r\n\r\n get errorState() {\r\n return undefined;\r\n }\r\n}","import { inject, Inject, Injectable } from \"@angular/core\";\r\nimport { ChatMessage, CommentsOrder, DurableSocket, FilterMode, Notification, Topic, UrlCard, User, Vote, buildQuery } from \"@banta/common\";\r\nimport { Observable } from \"rxjs\";\r\nimport { ChatBackendBase, ChatSourceOptions } from \"./chat-backend-base\";\r\nimport { ChatSource } from \"./chat-source\";\r\nimport { ChatSourceBase } from \"./chat-source-base\";\r\nimport { BANTA_SDK_OPTIONS, SdkOptions } from \"./sdk-options\";\r\nimport { PLATFORM_ID } from \"@angular/core\";\r\nimport { isPlatformServer } from \"@angular/common\";\r\nimport { StaticChatSource } from \"./static-chat-source\";\r\nimport { v4 as uuid } from 'uuid';\r\n\r\n@Injectable()\r\nexport class ChatBackend extends ChatBackendBase {\r\n private options = inject(BANTA_SDK_OPTIONS);\r\n private platformId = inject(PLATFORM_ID);\r\n\r\n runId = uuid();\r\n\r\n get serviceUrl() {\r\n return `${this.options?.serviceUrl ?? 'http://localhost:3422'}`;\r\n }\r\n\r\n private async connectToService() {\r\n let deviceId = uuid();\r\n if (typeof localStorage !== 'undefined') {\r\n if (localStorage['banta-chat:deviceId']) {\r\n deviceId = localStorage['banta-chat:deviceId'];\r\n } else {\r\n localStorage['banta-chat:deviceId'] = deviceId;\r\n }\r\n }\r\n\r\n let socket = new DurableSocket(`${this.serviceUrl.replace(/^http/, 'ws')}/socket`, undefined, `${deviceId},${this.runId}`);\r\n await new Promise<void>((resolve, reject) => {\r\n socket.onopen = () => {\r\n resolve();\r\n }\r\n\r\n socket.onclose = e => {\r\n if (e.code === 503) {\r\n console.error(`Failed to connect to chat service!`);\r\n reject(e);\r\n }\r\n }\r\n });\r\n\r\n socket.onerror = undefined;\r\n\r\n return socket;\r\n }\r\n\r\n private isServer() {\r\n if (typeof localStorage !== 'undefined' && localStorage['banta:debug:useStaticSource'] === '1')\r\n return true;\r\n\r\n return isPlatformServer(this.platformId);\r\n }\r\n\r\n /**\r\n * Check if we are currently running inside a Googlebot user agent or via the Google inspection tool in Search Console.\r\n * We'll use this to avoid WebSockets so that comments can be indexable.\r\n * @returns \r\n */\r\n private isGooglebot() {\r\n return typeof navigator !== 'undefined' && (\r\n navigator.userAgent.includes('Googlebot')\r\n || navigator.userAgent.includes('Google-InspectionTool')\r\n );\r\n }\r\n\r\n async getSourceForTopic(topicId: string, options?: ChatSourceOptions): Promise<ChatSourceBase> {\r\n // In some cases we need to do a single REST request to fetch the messages \r\n // and not use Banta's socket RPC since the open ended lifetime of a WebSocket connection \r\n // does not match the use case.\r\n // - When running in SSR\r\n // - When running in Googlebot (Googlebot also doesn't support WebSockets anyway)\r\n\r\n if (this.isServer() || this.isGooglebot()) {\r\n return new StaticChatSource(this, topicId, undefined, options);\r\n } else {\r\n return await new ChatSource(this, topicId, undefined, { sortOrder: CommentsOrder.NEWEST, filterMode: FilterMode.ALL, ...options })\r\n .bind(await this.connectToService());\r\n }\r\n }\r\n\r\n async getSourceForThread(topicId: string, messageId: string, options?: ChatSourceOptions): Promise<ChatSourceBase> {\r\n // When running on the server platform, we're just going to do a single REST request to fetch the messages \r\n // and not use Banta's socket RPC.\r\n \r\n if (this.isServer()) {\r\n return new StaticChatSource(this, topicId, messageId, options);\r\n } else {\r\n return await new ChatSource(this, topicId, messageId, { sortOrder: CommentsOrder.NEWEST, filterMode: FilterMode.ALL, ...options })\r\n .bind(await this.connectToService());\r\n }\r\n }\r\n\r\n /**\r\n * Get the count of the given topic\r\n * @param topicId \r\n * @returns \r\n */\r\n async getSourceCountForTopic(topicId: string): Promise<number> {\r\n try {\r\n let topic = await this.getTopic(topicId);\r\n return topic?.messageCount ?? 0;\r\n } catch (e) {\r\n console.error(`[Banta/${topicId}] Failed to get message count for topic:`);\r\n console.error(e);\r\n return undefined;\r\n }\r\n }\r\n\r\n /**\r\n * Get the count of the given topics. \r\n * @param topicId Topics to count messages on. Maximum of 1000.\r\n * @returns \r\n */\r\n async getSourceCountForTopics(topicIds: string[]): Promise<Record<string, number>> {\r\n try {\r\n let topics = await this.getTopicsById(topicIds);\r\n return Object.fromEntries(topics.map(topic => [ topic.id, topic.messageCount ?? 0 ]));\r\n } catch (e) {\r\n console.error(`[Banta/Topics] Failed to get message count for topics '${topicIds.join(',')}]':`);\r\n console.error(e);\r\n return undefined;\r\n }\r\n }\r\n\r\n /**\r\n * Get information about the given topic. \r\n * @param topicId \r\n * @returns The topic object, or undefined if no such topic was found.\r\n */\r\n async getTopic(topicId: string): Promise<Topic | undefined> {\r\n let response = await fetch(`${this.serviceUrl}/topics/${topicId}`)\r\n if (response.status === 404)\r\n return undefined;\r\n if (response.status >= 400)\r\n throw new Error(`Failed to fetch topic: ${response.status}`)\r\n\r\n return <Topic> await response.json();\r\n }\r\n\r\n /**\r\n * Get information about the given topics\r\n * @param topicIds The topic IDs to look up. Maximum of 1000.\r\n * @returns An array of matching topic objects.\r\n */\r\n async getTopicsById(topicIds: string[]): Promise<Topic[]> {\r\n if (topicIds.length > 1000)\r\n throw new Error(`Cannot look up more than 1000 topics at a time.`);\r\n\r\n let response = await fetch(`${this.serviceUrl}/topics?ids=${encodeURIComponent(topicIds.join(','))}`)\r\n if (response.status >= 400)\r\n throw new Error(`Failed to fetch topic: ${response.status}`)\r\n\r\n return <Topic[]> await response.json();\r\n }\r\n\r\n /**\r\n * Get a set of messages from the given topic.\r\n * @param topicId \r\n * @returns \r\n */\r\n async getMessages(\r\n topicId: string, \r\n sort?: CommentsOrder, \r\n filter?: FilterMode, \r\n offset?: number, \r\n limit?: number\r\n ): Promise<ChatMessage[]> {\r\n let response = await fetch(\r\n `${this.serviceUrl}/topics/${topicId}/messages?${ buildQuery({ sort, filter, offset, limit }) }`\r\n );\r\n\r\n if (response.status >= 400)\r\n throw new Error(`Failed to fetch messages for topic: ${response.status}`)\r\n\r\n return <ChatMessage[]> await response.json();\r\n }\r\n\r\n /**\r\n * Get a set of messages from the given topic.\r\n * @param topicId \r\n * @returns \r\n */\r\n async getReplies(\r\n parentMessageId: string,\r\n sort?: CommentsOrder, \r\n filter?: FilterMode, \r\n offset?: number, \r\n limit?: number\r\n ): Promise<ChatMessage[]> {\r\n let response = await fetch(\r\n `${this.serviceUrl}/messages/${parentMessageId}/replies?${ buildQuery({ sort, filter, offset, limit }) }`\r\n );\r\n\r\n if (response.status >= 400)\r\n throw new Error(`Failed to fetch replies: ${response.status}`)\r\n\r\n return <ChatMessage[]> await response.json();\r\n }\r\n\r\n refreshMessage(message: ChatMessage): Promise<ChatMessage> {\r\n throw new Error(\"Method not implemented.\");\r\n }\r\n \r\n getMessage(topicId: string, messageId: string): Promise<ChatMessage> {\r\n throw new Error(\"Method not implemented.\");\r\n }\r\n getSubMessage(topicId: string, parentMessageId: string, messageId: string): Promise<ChatMessage> {\r\n throw new Error(\"Method not implemented.\");\r\n }\r\n watchMessage(message: ChatMessage, handler: (message: ChatMessage) => void): () => void {\r\n throw new Error(\"Method not implemented.\");\r\n }\r\n notificationsChanged: Observable<Notification[]>;\r\n newNotification: Observable<Notification>;\r\n \r\n async getCardForUrl(url: string): Promise<UrlCard> {\r\n let response = await fetch(`${this.serviceUrl}/urls`, {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify({\r\n url\r\n })\r\n });\r\n\r\n if (response.status == 404)\r\n return null;\r\n \r\n if (response.status >= 400)\r\n throw new Error(`Failed to retrieve URL card: ${response.status}. Body: '${await response.text()}'`);\r\n\r\n return await response.json();\r\n }\r\n}","import { Injectable } from \"@angular/core\";\r\nimport { ChatMessage, ChatMessageAttachment } from \"@banta/common\";\r\nimport { AttachmentFragment, AttachmentResolver, AttachmentScraper } from \"./attachment-scraper\";\r\nimport { ChatBackendBase } from \"./chat-backend-base\";\r\n\r\nconst URL_REGEX = new RegExp('(?!mailto:)(?:(?:http|https|ftp)://)(?:\\\\S+(?::\\\\S*)?@)?(?:(?:(?:[1-9]\\\\d?|1\\\\d\\\\d|2[01]\\\\d|22[0-3])(?:\\\\.(?:1?\\\\d{1,2}|2[0-4]\\\\d|25[0-5])){2}(?:\\\\.(?:[0-9]\\\\d?|1\\\\d\\\\d|2[0-4]\\\\d|25[0-4]))|(?:(?:[a-z\\\\u00a1-\\\\uffff0-9]+-?)*[a-z\\\\u00a1-\\\\uffff0-9]+)(?:\\\\.(?:[a-z\\\\u00a1-\\\\uffff0-9]+-?)*[a-z\\\\u00a1-\\\\uffff0-9]+)*(?:\\\\.(?:[a-z\\\\u00a1-\\\\uffff]{2,})))|localhost)(?::\\\\d{2,5})?(?:(/|\\\\?|#)[^\\\\s]*)?', 'ig');\r\n\r\nexport class UrlAttachmentScraper implements AttachmentScraper {\r\n findFragments(message: ChatMessage): AttachmentFragment[] {\r\n // If a message already has a URL attachment, don't add another one.\r\n if (message.attachments && message.attachments.filter(x => x.type === 'url').length > 0)\r\n return null;\r\n\r\n return (Array.from(message.message.match(URL_REGEX) ?? []))\r\n .reduce((a, item) => (a.includes(item) ? undefined : a.push(item), a), [])\r\n .map(url => ({\r\n text: url, \r\n offset: message.message.indexOf(url),\r\n type: 'url'\r\n }))\r\n ;\r\n }\r\n}\r\n\r\n@Injectable()\r\nexport class UrlAttachmentResolver implements AttachmentResolver {\r\n constructor(private backend: ChatBackendBase) {\r\n }\r\n\r\n async resolveFragment(message: ChatMessage, fragment: AttachmentFragment): Promise<ChatMessageAttachment> {\r\n if (fragment.type !== 'url')\r\n return null;\r\n\r\n let urlCard = await this.backend.getCardForUrl(fragment.text);\r\n if (urlCard) {\r\n return {\r\n type: 'card',\r\n url: fragment.text,\r\n card: urlCard,\r\n style: 'block'\r\n }\r\n }\r\n }\r\n\r\n}","import { ChatMessage, ChatMessageAttachment } from \"@banta/common\";\r\nimport { AttachmentFragment, AttachmentResolver } from \"./attachment-scraper\";\r\n\r\nexport class YouTubeAttachmentResolver implements AttachmentResolver {\r\n async resolveFragment(message: ChatMessage, fragment: AttachmentFragment): Promise<ChatMessageAttachment> {\r\n if (fragment.type !== 'url')\r\n return null;\r\n\r\n let videoId: string;\r\n\r\n // https://youtu.be/jXzJ7FlqX6M\r\n\r\n if (fragment.text.match(/^https:\\/\\/youtu\\.be\\//)) {\r\n let match = /^https:\\/\\/youtu\\.be\\/([^\\/]+)/.exec(fragment.text);\r\n if (match) {\r\n videoId = match[1];\r\n }\r\n }\r\n\r\n if (!videoId && fragment.text.match(/^https?:\\/\\/(www\\.|m\\.)?youtube.com\\/watch\\?v=/)) {\r\n let match = /watch\\?v=([^&]+)/.exec(fragment.text);\r\n if (match) {\r\n videoId = match[1];\r\n }\r\n }\r\n\r\n if (videoId) {\r\n return {\r\n type: 'iframe',\r\n url: `https://www.youtube.com/embed/${videoId}`,\r\n style: 'block'\r\n };\r\n }\r\n return null;\r\n }\r\n}\r\n","import { ChatMessage, ChatMessageAttachment } from \"@banta/common\";\r\nimport { AttachmentFragment, AttachmentResolver } from \"./attachment-scraper\";\r\n\r\nexport class GiphyAttachmentResolver implements AttachmentResolver {\r\n async resolveFragment(message: ChatMessage, fragment: AttachmentFragment): Promise<ChatMessageAttachment> {\r\n if (fragment.type === 'url' && fragment.text.startsWith('https://giphy.com/gifs')) {\r\n let gifId = /[^-\\/]+$/.exec(fragment.text)?.toString();\r\n if (!gifId)\r\n return null;\r\n\r\n return {\r\n type: 'iframe',\r\n url: `https://giphy.com/embed/${gifId}`,\r\n style: 'inline'\r\n };\r\n }\r\n\r\n return null;\r\n }\r\n}","import { ChatMessage, ChatMessageAttachment } from \"@banta/common\";\r\nimport { AttachmentFragment, AttachmentResolver } from \"./attachment-scraper\";\r\n\r\nexport class TweetAttachmentResolver implements AttachmentResolver {\r\n async resolveFragment(message: ChatMessage, fragment: AttachmentFragment): Promise<ChatMessageAttachment> {\r\n if (fragment.type === 'url' && (fragment.text.startsWith('https://twitter.com/') || fragment.text.startsWith('https://x.com/'))) {\r\n return {\r\n type: 'tweet',\r\n url: fragment.text,\r\n style: 'block'\r\n };\r\n }\r\n\r\n return null;\r\n }\r\n}","import { inject, ModuleWithProviders, NgModule } from '@angular/core';\r\nimport { CommentsModule } from './comments';\r\nimport { ChatModule } from './chat';\r\nimport { EmojiModule } from './emoji';\r\nimport { BantaComponent } from './banta/banta.component';\r\nimport { BantaLogoComponent } from './banta-logo.component';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { BantaCommonModule } from './common/common.module';\r\nimport { LiveMessageComponent } from './live-message.component';\r\nimport { MatButtonModule } from \"@angular/material/button\";\r\nimport { MatIconModule } from \"@angular/material/icon\";\r\nimport { MatTooltipModule } from \"@angular/material/tooltip\";\r\nimport { MatMenuModule } from \"@angular/material/menu\";\r\nimport { MatDialogModule } from \"@angular/material/dialog\";\r\nimport { MatSnackBarModule } from \"@angular/material/snack-bar\";\r\nimport { MatFormFieldModule } from \"@angular/material/form-field\";\r\nimport { MatInputModule } from \"@angular/material/input\";\r\nimport { MatProgressSpinnerModule } from \"@angular/material/progress-spinner\";\r\nimport { ChatBackend } from './chat-backend';\r\nimport { SdkOptions } from './sdk-options';\r\nimport { BANTA_SDK_OPTIONS } from './sdk-options';\r\nimport { ChatBackendBase } from './chat-backend-base';\r\nimport { OverlayModule } from '@angular/cdk/overlay';\r\nimport { PortalModule } from '@angular/cdk/portal';\r\nimport { UrlAttachmentResolver, UrlAttachmentScraper } from './url-attachments';\r\nimport { YouTubeAttachmentResolver } from './youtube-attachments';\r\nimport { GiphyAttachmentResolver } from './giphy-attachments';\r\nimport { TweetAttachmentResolver } from './tweet-attachments';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n BantaCommonModule.forRoot(),\r\n CommentsModule,\r\n ChatModule,\r\n EmojiModule,\r\n \r\n MatIconModule,\r\n MatButtonModule,\r\n MatTooltipModule,\r\n MatMenuModule,\r\n MatDialogModule,\r\n MatFormFieldModule,\r\n MatInputModule,\r\n MatProgressSpinnerModule,\r\n MatSnackBarModule,\r\n OverlayModule,\r\n PortalModule\r\n ],\r\n declarations: [\r\n BantaComponent,\r\n BantaLogoComponent,\r\n LiveMessageComponent\r\n ],\r\n exports: [\r\n BantaComponent,\r\n BantaLogoComponent,\r\n LiveMessageComponent,\r\n BantaCommonModule,\r\n ChatModule,\r\n CommentsModule,\r\n EmojiModule\r\n ]\r\n})\r\nexport class BantaSdkModule {\r\n chatBackend = inject(ChatBackendBase);\r\n\r\n constructor() {\r\n this.chatBackend.registerAttachmentScraper(new UrlAttachmentScraper());\r\n this.chatBackend.registerAttachmentResolver(new GiphyAttachmentResolver());\r\n this.chatBackend.registerAttachmentResolver(new YouTubeAttachmentResolver());\r\n this.chatBackend.registerAttachmentResolver(new TweetAttachmentResolver());\r\n this.chatBackend.registerAttachmentResolver(new UrlAttachmentResolver(this.chatBackend));\r\n }\r\n \r\n static configure(options?: SdkOptions): ModuleWithProviders<BantaSdkModule> {\r\n return {\r\n ngModule: BantaSdkModule,\r\n providers: [\r\n { \r\n provide: BANTA_SDK_OPTIONS, \r\n useValue: options || {}\r\n },\r\n { provide: ChatBackendBase, useClass: options?.backendClass ?? ChatBackend }\r\n ]\r\n }\r\n }\r\n}","/*\r\n * Public API Surface of sdk\r\n */\r\n\r\nexport * from './lib';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.TimerPool","i2","i1","twemoji","i4","i5","i6.BantaTrustResourceUrlPipe","i2.LightboxComponent","i3.BantaAttachmentComponent","COMPONENTS","i3","i6","i5.EmojiSelectorPanelComponent","i9.TimestampComponent","i10.BantaAttachmentsComponent","i12.BantaMarkdownToHtmlPipe","i13.BantaMentionLinkerPipe","i1.ChatBackendBase","i6.CommentComponent","i7","i9.BantaAttachmentsComponent","i10.EmojiSelectorButtonComponent","i12.AttachmentButtonComponent","i13.AttachmentScraperDirective","i9","i10.CommentComponent","i11.CommentViewComponent","i12.CommentFieldComponent","i3.ChatMessageComponent","i5.EmojiSelectorButtonComponent","i6.ChatViewComponent","i3.CommentComponent","i2.LiveCommentComponent","i3.LiveChatMessageComponent","i5.TimestampComponent","i7.CommentViewComponent","i8.BantaCommentsComponent","i9.BantaChatComponent","i10","i11","i12","i13.LiveMessageComponent","uuid","Injectable"],"mappings":"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"}
|