UNPKG

angular-vlibras

Version:

A library for integrating VLibras into Angular applications.

1 lines 8.76 kB
{"version":3,"file":"angular-vlibras.mjs","sources":["../../../projects/angular-vlibras/src/lib/angular-vlibras.service.ts","../../../projects/angular-vlibras/src/lib/utils.ts","../../../projects/angular-vlibras/src/lib/angular-vlibras.component.ts","../../../projects/angular-vlibras/src/lib/angular-vlibras.component.html","../../../projects/angular-vlibras/src/public-api.ts","../../../projects/angular-vlibras/src/angular-vlibras.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AngularVlibrasService {\r\n\r\n constructor() { }\r\n}\r\n","export type WidgetPosition = 'left' | 'right' | 'bottom' | 'top' | 'bottom-left' | 'top-left' | 'bottom-right' | 'top-right';\r\n\r\nexport const mapPosition: Record<WidgetPosition, string> = {\r\n 'left': 'L',\r\n 'right': 'R',\r\n 'bottom': 'B',\r\n 'top': 'T',\r\n 'bottom-left': 'BL',\r\n 'top-left': 'TL',\r\n 'bottom-right': 'BR',\r\n 'top-right': 'TR',\r\n};\r\n\r\nexport type AvatarOption = 'icaro' | 'hosana' | 'guga' | 'random';\r\n","import { Component, Input } from '@angular/core';\r\nimport { AvatarOption, mapPosition, WidgetPosition } from './utils';\r\n\r\n@Component({\r\n selector: 'angular-vlibras',\r\n standalone: true,\r\n templateUrl: 'angular-vlibras.component.html',\r\n})\r\nexport class AngularVlibras {\r\n src: string = 'https://vlibras.gov.br/app/vlibras-plugin.js';\r\n urlWidget: string = 'https://vlibras.gov.br/app';\r\n\r\n @Input() position?: WidgetPosition;\r\n @Input() avatar?: AvatarOption = 'guga';\r\n @Input() opacity?: number = 1;\r\n\r\n private script: HTMLScriptElement | null = null;\r\n\r\n ngOnInit(): void {\r\n this.init();\r\n }\r\n\r\n public init(): void {\r\n this.script = document.createElement('script');\r\n this.script.addEventListener('load', () => this.createWidget());\r\n this.script.src = this.src;\r\n document.body.appendChild(this.script);\r\n }\r\n\r\n public createWidget(): void {\r\n this.script?.removeEventListener('load', () => this.createWidget());\r\n new (window as any).VLibras.Widget({\r\n position: mapPosition[this.position ?? 'right'],\r\n rootPath: this.urlWidget,\r\n avatar: this.avatar,\r\n opacity: this.opacity\r\n });\r\n this.observeDOMChanges();\r\n }\r\n\r\n private generateUniqueKeyframeName(baseName: string): string {\r\n return `${baseName}-${Math.random().toString(36).substring(2, 15)}`;\r\n }\r\n\r\n private updateKeyframeNameInStyles(oldName: string, newName: string): void {\r\n document.querySelectorAll('style').forEach((styleTag) => {\r\n const containsOldName = new RegExp(`@keyframes\\\\s+${oldName}|\\\\b${oldName}\\\\b`, 'g').test(styleTag.textContent || '');\r\n\r\n if (this.containsVpOrVw(styleTag.textContent || '') && containsOldName) {\r\n const updatedContent = (styleTag.textContent || '')\r\n .replace(new RegExp(`@keyframes\\\\s+${oldName}`, 'g'), `@keyframes ${newName}`)\r\n .replace(new RegExp('(animation:\\\\s*[^;}]*?)(;|})', 'g'), (match) => {\r\n return match.replace(new RegExp(`\\\\b${oldName}\\\\b`, 'g'), newName);\r\n });\r\n styleTag.textContent = updatedContent;\r\n }\r\n });\r\n }\r\n\r\n private containsVpOrVw(selectorText: string): boolean {\r\n return /\\[vp\\]|\\[vw\\]|\\.vp|\\.vw|\\.vpw/.test(selectorText);\r\n }\r\n\r\n private validationStyleSheet(node: Node): boolean {\r\n if (node.nodeName === 'STYLE' || (node.nodeName === 'LINK' && (node as HTMLLinkElement).rel === 'stylesheet')) {\r\n const styleSheet = (node as HTMLStyleElement | HTMLLinkElement).sheet;\r\n return styleSheet !== null && styleSheet.cssRules !== null;\r\n }\r\n return false;\r\n }\r\n\r\n private observeDOMChanges(): void {\r\n const observer = new MutationObserver((mutations) => {\r\n mutations.forEach((mutation) => {\r\n mutation.addedNodes.forEach((node) => {\r\n if (this.validationStyleSheet(node)) {\r\n Array.from((node as HTMLStyleElement).sheet!.cssRules).forEach((rule) => {\r\n if (rule.type === CSSRule.KEYFRAMES_RULE) {\r\n this.updateKeyframeNameInStyles((rule as CSSKeyframesRule).name, this.generateUniqueKeyframeName((rule as CSSKeyframesRule).name));\r\n }\r\n });\r\n }\r\n });\r\n });\r\n });\r\n\r\n observer.observe(document.head, { childList: true, subtree: true });\r\n }\r\n}\r\n","<div vw class=\"enabled\">\r\n <div vw-access-button class=\"active\"></div>\r\n <div vw-plugin-wrapper>\r\n <div class=\"vw-plugin-top-wrapper\"></div>\r\n </div>\r\n</div>\r\n","/*\r\n * Public API Surface of angular-vlibras\r\n */\r\n\r\nexport * from './lib/angular-vlibras.service';\r\nexport * from './lib/angular-vlibras.component';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}