ufc-itapaje-accessibility 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.mts +442 -0
- package/dist/index.d.ts +442 -0
- package/dist/index.global.js +2472 -0
- package/dist/index.global.js.map +1 -0
- package/dist/index.js +1939 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +1916 -0
- package/dist/index.mjs.map +1 -0
- package/package.json +40 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/main.ts","../src/common.ts","../src/interfaces/accessibility.interface.ts","../src/menu-interface.ts","../src/storage.ts","../src/theme.ts","../src/presets/pt-br.ts","../src/presets/modules.ts","../src/accessibility.ts"],"sourcesContent":["'use strict';\nimport 'regenerator-runtime/runtime.js';\nimport { Common } from './common';\nimport {\n AccessibilityModulesType,\n IAccessibility,\n IAccessibilityModuleOrder,\n IAccessibilityOptions,\n ICustomFunction,\n IIframeModal,\n ISessionState,\n IStateValues,\n} from './interfaces/accessibility.interface';\nimport { IFormattedDim, IJsonToHtml } from './interfaces/common.interface';\nimport { IMenuInterface } from './interfaces/menu.interface';\nimport { MenuInterface } from './menu-interface';\nimport { Storage } from './storage';\n\nexport class Accessibility implements IAccessibility {\n static CSS_CLASS_NAME = '_access-main-css';\n static MENU_WIDTH = '20vw';\n\n private _isReading: boolean = false;\n private _common: Common;\n private _storage: Storage;\n private _options: IAccessibilityOptions;\n private _sessionState: ISessionState;\n private _htmlInitFS!: IFormattedDim;\n private _body!: HTMLBodyElement;\n private _html!: HTMLElement;\n private _icon!: HTMLElement;\n private _menu!: HTMLElement;\n private _htmlOrgFontSize!: string;\n private _stateValues!: IStateValues;\n private _recognition: any;\n private _speechToTextTarget!: HTMLElement;\n private _onKeyDownBind: any;\n private _fixedDefaultFont: string;\n\n public menuInterface!: IMenuInterface;\n public options: IAccessibilityOptions;\n\n constructor(options = {} as IAccessibilityOptions) {\n this._common = new Common();\n this._storage = new Storage();\n this._fixedDefaultFont = this._common.getFixedFont('Material Icons');\n this._options = this.defaultOptions;\n this.options = this._common.extend(this._options, options);\n this.addModuleOrderIfNotDefined();\n this.addDefaultOptions(options);\n this.disabledUnsupportedFeatures();\n this._onKeyDownBind = this.onKeyDown.bind(this);\n this._sessionState = {\n textSize: 0,\n textSpace: 0,\n lineHeight: 0,\n invertColors: false,\n grayHues: false,\n underlineLinks: false,\n bigCursor: false,\n readingGuide: false,\n };\n\n if (this.options.icon?.useEmojis) {\n this.fontFallback();\n this.build();\n } else {\n this._common.injectIconsFont(this.options.icon?.fontFaceSrc ?? [], (hasError: boolean) => {\n this.build();\n if (this.options.icon?.fontFamilyValidation) {\n setTimeout(() => {\n this._common.isFontLoaded(this.options.icon!.fontFamilyValidation, (isLoaded: boolean) => {\n if (!isLoaded || hasError) {\n this._common.warn(`${this.options.icon!.fontFamilyValidation} font not loaded, using emojis`);\n this.fontFallback();\n this.destroy();\n this.build();\n }\n });\n });\n }\n });\n }\n\n if (this.options.modules?.speechToText) {\n window.addEventListener('beforeunload', () => {\n if (this._isReading) {\n window.speechSynthesis.cancel();\n this._isReading = false;\n }\n });\n }\n }\n\n get stateValues() { return this._stateValues; }\n set stateValues(value: IStateValues) { this._stateValues = value; }\n get html() { return this._html; }\n get body() { return this._body; }\n get menu() { return this._menu; }\n get sessionState() { return this._sessionState; }\n set sessionState(value: ISessionState) { this._sessionState = value; }\n get common() { return this._common; }\n get recognition() { return this._recognition; }\n get isReading() { return this._isReading; }\n set isReading(value: boolean) { this._isReading = value; }\n get fixedDefaultFont() { return this._fixedDefaultFont; }\n\n private get defaultOptions(): IAccessibilityOptions {\n const res: IAccessibilityOptions = {\n icon: {\n img: 'accessibility',\n fontFaceSrc: ['https://fonts.googleapis.com/icon?family=Material+Icons'],\n fontClass: 'material-icons',\n useEmojis: false,\n closeIcon: 'close',\n resetIcon: 'refresh',\n },\n hotkeys: {\n enabled: false,\n helpTitles: true,\n keys: {\n toggleMenu: ['ctrlKey', 'altKey', 65],\n invertColors: ['ctrlKey', 'altKey', 73],\n grayHues: ['ctrlKey', 'altKey', 71],\n underlineLinks: ['ctrlKey', 'altKey', 85],\n bigCursor: ['ctrlKey', 'altKey', 67],\n readingGuide: ['ctrlKey', 'altKey', 82],\n textToSpeech: ['ctrlKey', 'altKey', 84],\n speechToText: ['ctrlKey', 'altKey', 83],\n disableAnimations: ['ctrlKey', 'altKey', 81],\n },\n },\n guide: { cBorder: '#20ff69', cBackground: '#000000', height: '12px' },\n suppressCssInjection: false,\n suppressDomInjection: false,\n labels: {\n resetTitle: 'Reset', closeTitle: 'Close', menuTitle: 'Accessibility Options',\n increaseText: 'increase text size', decreaseText: 'decrease text size',\n increaseTextSpacing: 'increase text spacing', decreaseTextSpacing: 'decrease text spacing',\n invertColors: 'invert colors', grayHues: 'gray hues', bigCursor: 'big cursor',\n readingGuide: 'reading guide', underlineLinks: 'underline links',\n textToSpeech: 'text to speech', speechToText: 'speech to text',\n disableAnimations: 'disable animations', increaseLineHeight: 'increase line height',\n decreaseLineHeight: 'decrease line height', hotkeyPrefix: 'Hotkey: ',\n dyslexicFont: 'Dyslexic font', hideImages: 'Hide images',\n },\n textPixelMode: false,\n textEmlMode: true,\n textSizeFactor: 12.5,\n animations: { buttons: true },\n modules: {\n increaseText: true, decreaseText: true, increaseTextSpacing: true,\n decreaseTextSpacing: true, increaseLineHeight: true, decreaseLineHeight: true,\n invertColors: true, grayHues: true, bigCursor: true, readingGuide: true,\n underlineLinks: true, textToSpeech: true, speechToText: true, disableAnimations: true,\n dyslexicFont: true, hideImages: true,\n },\n modulesOrder: [] as Array<IAccessibilityModuleOrder>,\n session: { persistent: true },\n iframeModals: [] as Array<IIframeModal>,\n customFunctions: [] as Array<ICustomFunction>,\n statement: { url: '' },\n feedback: { url: '' },\n linkSelector: 'a',\n logoImage: '',\n language: { textToSpeechLang: '', speechToTextLang: '' },\n };\n\n Object.keys(AccessibilityModulesType)\n .filter(k => !isNaN(parseInt(k)))\n .forEach(k => {\n const n = parseInt(k);\n res.modulesOrder!.push({ type: n, order: n });\n });\n\n return res;\n }\n\n initFontSize() {\n if (!this._htmlInitFS) {\n const htmlInitFS = this._common.getFormattedDim(getComputedStyle(this._html).fontSize);\n const bodyInitFS = this._common.getFormattedDim(getComputedStyle(this._body).fontSize);\n this._html.style.fontSize = ((htmlInitFS.size as number) / 16 * 100) + '%';\n this._htmlOrgFontSize = this._html.style.fontSize;\n this._body.style.fontSize = ((bodyInitFS.size as number) / (htmlInitFS.size as number)) + 'em';\n }\n }\n\n fontFallback() {\n this.options.icon!.useEmojis = true;\n this.options.icon!.img = '♿';\n this.options.icon!.fontClass = '';\n }\n\n addDefaultOptions(options: IAccessibilityOptions) {\n if (options.icon?.closeIconElem) this.options.icon!.closeIconElem = options.icon.closeIconElem;\n if (options.icon?.resetIconElem) this.options.icon!.resetIconElem = options.icon.resetIconElem;\n if (options.icon?.imgElem) this.options.icon!.imgElem = options.icon.imgElem;\n if (!this.options.icon!.closeIconElem)\n this.options.icon!.closeIconElem = { type: '#text', text: !this.options.icon!.useEmojis ? (this.options.icon!.closeIcon ?? 'close') : 'X' };\n if (!this.options.icon!.resetIconElem)\n this.options.icon!.resetIconElem = { type: '#text', text: !this.options.icon!.useEmojis ? (this.options.icon!.resetIcon ?? 'refresh') : '♲' };\n if (!this.options.icon!.imgElem)\n this.options.icon!.imgElem = { type: '#text', text: this.options.icon!.img! };\n }\n\n addModuleOrderIfNotDefined() {\n this.defaultOptions.modulesOrder!.forEach(mo => {\n if (!this.options.modulesOrder!.find(imo => imo.type === mo.type))\n this.options.modulesOrder!.push(mo);\n });\n }\n\n disabledUnsupportedFeatures() {\n if (!('webkitSpeechRecognition' in window) || location.protocol !== 'https:') {\n this._common.warn('speech to text requires a browser with webkitSpeechRecognition and https');\n this.options.modules!.speechToText = false;\n }\n const w = window as any;\n if (!w.SpeechSynthesisUtterance || !w.speechSynthesis) {\n this._common.warn('text to speech is not supported in this browser');\n this.options.modules!.textToSpeech = false;\n }\n }\n\n public injectCss(injectFull: boolean) {\n const iconTop = '7px', iconLeft = '5px';\n const useEmojis = this.options.icon?.useEmojis;\n const mandatory = `\n html._access_cursor * {\n cursor: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGQiPjxzdmcgdmVyc2lvbj0iMS4xIiBpZD0iTGF5ZXJfMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiIHdpZHRoPSIyOS4xODhweCIgaGVpZ2h0PSI0My42MjVweCIgdmlld0JveD0iMCAwIDI5LjE4OCA0My42MjUiIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDI5LjE4OCA0My42MjUiIHhtbDpzcGFjZT0icHJlc2VydmUiPjxnPjxwb2x5Z29uIGZpbGw9IiNGRkZGRkYiIHN0cm9rZT0iI0Q5REFEOSIgc3Ryb2tlLXdpZHRoPSIxLjE0MDYiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgcG9pbnRzPSIyLjgsNC41NDkgMjYuODQ3LDE5LjkwMiAxNi45NjQsMjIuNzAxIDI0LjIzOSwzNy43NDkgMTguMjc4LDQyLjAxNyA5Ljc0MSwzMC43MjQgMS4xMzgsMzUuODA5ICIvPjxnPjxnPjxnPjxwYXRoIGZpbGw9IiMyMTI2MjciIGQ9Ik0yOS4xNzUsMjEuMTU1YzAuMDcxLTAuNjEzLTAuMTY1LTEuMjUzLTAuNjM1LTEuNTczTDIuMTY1LDAuMjU4Yy0wLjQyNC0wLjMyLTAuOTg4LTAuMzQ2LTEuNDM1LTAuMDUzQzAuMjgyLDAuNDk3LDAsMS4wMywwLDEuNjE3djM0LjE3MWMwLDAuNjEzLDAuMzA2LDEuMTQ2LDAuNzc2LDEuNDM5YzAuNDcxLDAuMjY3LDEuMDU5LDAuMjEzLDEuNDgyLTAuMTZsNy40ODItNi4zNDRsNi44NDcsMTIuMTU1YzAuMjU5LDAuNDgsMC43MjksMC43NDYsMS4yLDAuNzQ2YzAuMjM1LDAsMC40OTQtMC4wOCwwLjcwNi0wLjIxM2w2Ljk4OC00LjU4NWMwLjMyOS0wLjIxMywwLjU2NS0wLjU4NiwwLjY1OS0xLjAxM2MwLjA5NC0wLjQyNiwwLjAyNC0wLjg4LTAuMTg4LTEuMjI2bC02LjM3Ni0xMS4zODJsOC42MTEtMi43NDVDMjguNzA1LDIyLjI3NCwyOS4xMDUsMjEuNzY4LDI5LjE3NSwyMS4xNTV6IE0xNi45NjQsMjIuNzAxYy0wLjQyNCwwLjEzMy0wLjc3NiwwLjUwNi0wLjk0MSwwLjk2Yy0wLjE2NSwwLjQ4LTAuMTE4LDEuMDEzLDAuMTE4LDEuNDM5bDYuNTg4LDExLjc4MWwtNC41NDEsMi45ODVsLTYuODk0LTEyLjMxNWMtMC4yMTItMC4zNzMtMC41NDEtMC42NC0wLjk0MS0wLjcyYy0wLjA5NC0wLjAyNy0wLjE2NS0wLjAyNy0wLjI1OS0wLjAyN2MtMC4zMDYsMC0wLjU4OCwwLjEwNy0wLjg0NywwLjMyTDIuOCwzMi41OVY0LjU0OWwyMS41OTksMTUuODA2TDE2Ljk2NCwyMi43MDF6Ii8+PC9nPjwvZz48L2c+PC9nPjwvc3ZnPg==),auto!important;\n }\n @keyframes _access-dialog-backdrop {\n 0% { background: var(--_access-menu-dialog-backdrop-background-start, rgba(0,0,0,0.1)); }\n 100% { background: var(--_access-menu-dialog-backdrop-background-end, rgba(0,0,0,0.5)); }\n }\n dialog._access::backdrop, dialog._access {\n transition-duration: var(--_access-menu-dialog-backdrop-transition-duration, 0.35s);\n transition-timing-function: var(--_access-menu-dialog-backdrop-transition-timing-function, ease-in-out);\n }\n dialog._access:modal { border-color: transparent; border-width: 0; padding: 0; }\n dialog._access[open]::backdrop {\n background: var(--_access-menu-dialog-backdrop-background-end, rgba(0,0,0,0.5));\n animation: _access-dialog-backdrop var(--_access-menu-dialog-backdrop-transition-duration, 0.35s) ease-in-out;\n }\n dialog._access.closing[open]::backdrop { background: var(--_access-menu-dialog-backdrop-background-start, rgba(0,0,0,0.1)); }\n dialog._access.closing[open] { opacity: 0; }\n .screen-reader-wrapper { margin: 0; position: absolute; bottom: -4px; width: calc(100% - 2px); left: 1px; }\n .screen-reader-wrapper-step-1, .screen-reader-wrapper-step-2, .screen-reader-wrapper-step-3 {\n float: left; background: var(--_access-menu-background-color, #fff);\n width: 33.33%; height: 3px; border-radius: 10px;\n }\n .screen-reader-wrapper-step-1.active, .screen-reader-wrapper-step-2.active, .screen-reader-wrapper-step-3.active {\n background: var(--_access-menu-item-button-background, #f9f9f9);\n }\n .access_read_guide_bar {\n box-sizing: border-box;\n background: var(--_access-menu-read-guide-bg, ${this.options.guide!.cBackground});\n width: 100%!important; min-width: 100%!important; position: fixed!important;\n height: var(--_access-menu-read-guide-height, ${this.options.guide!.height}) !important;\n border: var(--_access-menu-read-guide-border, solid 3px ${this.options.guide!.cBorder});\n border-radius: 5px; top: 15px; z-index: 2147483647;\n }`;\n\n let css = mandatory;\n if (injectFull) {\n css = `\n ._access-scrollbar::-webkit-scrollbar-track { -webkit-box-shadow: var(--_access-scrollbar-track-box-shadow, inset 0 0 6px rgba(0,0,0,0.3)); background-color: var(--_access-scrollbar-track-background-color, #F5F5F5); }\n ._access-scrollbar::-webkit-scrollbar { width: var(--_access-scrollbar-width, 6px); background-color: var(--_access-scrollbar-background-color, #F5F5F5); }\n ._access-scrollbar::-webkit-scrollbar-thumb { background-color: var(--_access-scrollbar-thumb-background-color, #999999); }\n ._access-icon {\n position: var(--_access-icon-position, fixed);\n width: var(--_access-icon-width, 50px); height: var(--_access-icon-height, 50px);\n bottom: var(--_access-icon-bottom, 80px); top: var(--_access-icon-top, unset);\n left: var(--_access-icon-left, unset); right: var(--_access-icon-right, 10px);\n z-index: var(--_access-icon-z-index, 9999);\n font: var(--_access-icon-font, 40px / 45px \"Material Icons\");\n background: var(--_access-icon-bg, #4054b2); color: var(--_access-icon-color, #fff);\n background-repeat: no-repeat; background-size: contain;\n cursor: pointer; opacity: 0; transition-duration: .35s;\n user-select: none;\n ${!useEmojis ? 'box-shadow: 1px 1px 5px rgba(0,0,0,.5);' : ''}\n transform: ${!useEmojis ? 'scale(1)' : 'skewX(14deg)'};\n border-radius: 50%;\n border: 3px solid #FFFFFF;\n text-align: var(--_access-icon-text-align, center);\n display: flex; align-items: center; justify-content: center;\n }\n .content {\n display: flex;\n flex-direction: column;\n align-items: center;\n flex: 1;\n min-height: 0;\n border-top-left-radius: 20px;\n border-top-right-radius: 20px;\n padding: 30px 0px 20px;\n background: #F3F4F6;\n overflow-y: auto;\n }\n ._access-icon:hover { transform: var(--_access-icon-transform-hover, scale(1.1)); }\n ._access-menu {\n user-select: none; position: fixed;\n width: var(--_access-menu-width, ${Accessibility.MENU_WIDTH});\n height: var(--_access-menu-height, auto);\n padding: 0px;\n display: flex;\n flex-direction: column;\n align-items: center;\n transition-duration: var(--_access-menu-transition-duration, .35s);\n z-index: var(--_access-menu-z-index, 99991); opacity: 1;\n background-color: var(--_access-menu-background-color, #F3F4F6);\n color: var(--_access-menu-color, #000);\n border-radius: var(--_access-menu-border-radius, 3px);\n font-family: var(--_access-menu-font-family, RobotoDraft, Roboto, sans-serif, Arial);\n min-width: var(--_access-menu-min-width, 300px);\n box-shadow: var(--_access-menu-box-shadow, -2px -2px 12px rgba(0, 0, 0, 0.2));\n height: 100%;\n ${getComputedStyle(this._body).direction === 'rtl' ? 'text-indent: -5px' : ''}\n top: var(--_access-menu-top, unset); left: var(--_access-menu-left, unset);\n bottom: var(--_access-menu-bottom, 0); right: var(--_access-menu-right, 0);\n padding-bottom: 20px;\n word-spacing: normal; letter-spacing: normal; line-height: normal;\n overflow-y: auto;\n }\n @media (max-width: 600px) {\n ._access-menu {\n height: 100vh !important; /* Força ocupar toda a altura */\n height: 100dvh !important; /* Correção para navegadores mobile (Safari/Chrome) */\n max-height: 100dvh !important;\n overflow-y: auto; /* Permite rolar os botões caso sumam da tela */\n }\n }\n ._access-menu.close {\n z-index: -1; width: 0; opacity: 0; background-color: transparent;\n right: calc(-1 * var(--_access-menu-width, ${Accessibility.MENU_WIDTH}));\n }\n ._access-menu ._text-center {\n font-size: var(--_access-menu-header-font-size, 22px);\n font-weight: var(--_access-menu-header-font-weight, bold);\n margin: var(--_access-menu-header-margin, 0px 0 -15px);\n padding: 40px 30px;\n color: var(--_access-menu-header-color, #FFFFFF);\n text-align: var(--_access-menu-header-text-align, left);\n background: #0048FF;\n width: 100%;\n display: flex;\n flex-direction: row-reverse;\n align-items: center;\n justify-content: space-between;\n gap: 8px;\n\n }\n\n\n ._access-menu ._menu-close-btn {\n\n padding: 10px;\n color: #FFFFFF;\n border-radius: 50%;\n transition: .3s ease;\n transform: rotate(0deg);\n -style: normal !important;\n background: #0d2f8a;\n blur: 1.2;\n cursor: pointer;\n font-size: 24px !important;\n font-weight: bold;\n align-self: flex-end;\n justify-self: flex-end;\n }\n\n @media (max-width: 765px) {\n ._access-menu ._text-center {\n font-size: 18px;\n padding: 40px 20px;\n }\n\n ._access-menu ._menu-close-btn {\n font-size: 18px;\n padding: 5px;\n }\n }\n ._access-menu ._menu-reset-btn {\n position: relative;\n width: 90%;\n padding: 15px;\n margin: 10px auto;\n background: #0048FF;\n color: #FFFFFF;\n border-radius: 10px;\n box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.5);\n cursor: pointer;\n font-style: normal !important;\n display: flex; align-items: center; justify-content: center; gap: 6px;\n }\n ._access-menu ._menu-close-btn:hover { scale: 1.05; }\n ._access-menu ._menu-reset-btn:hover { scale: 1.03; }\n\n ._access-menu ul {\n width: 90%;\n padding: 0 0 5px;\n position: relative;\n display: flex;\n flex-wrap: wrap;\n gap: 4px;\n font-size: var(--_access-menu-font-size, 18px);\n margin: 0;\n max-height: 100hv;\n background: #F3F4F6;\n }\n ${mandatory}\n ._access-menu ul li {\n width: 45%;\n min-height: 100px;\n position: relative;\n list-style-type: none;\n user-select: none;\n margin: 2px auto;\n font-size: var(--_access-menu-item-font-size, 18px) !important;\n line-height: var(--_access-menu-item-line-height, 18px) !important;\n color: var(--_access-menu-item-color, rgba(0,0,0,.8));\n }\n ._access-menu ul li button {\n display: inline-flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n background: var(--_access-menu-item-button-background, #FFFFFF);\n padding: 10px;\n gap: 8px;\n width: 100%;\n height: 100%;\n text-align: center;\n position: relative;\n transition-duration: var(--_access-menu-item-button-transition-duration, .35s);\n box-shadow: 4px 2px 1px rgba(0, 0, 0, 0.1);\n border-radius: var(--_access-menu-item-button-border-radius, 8px);\n cursor: pointer;\n }\n ._access-menu ul li.position { display: inline-block; width: auto; }\n ._access-menu ul.before-collapse li button { opacity: var(--_access-menu-item-button-before-collapse-opacity, 0.05); }\n ._access-menu ul li button.active, ._access-menu ul li button.active:hover {\n border: 2px solid var(--_access-menu-item-button-active-border-color, #0048FF) !important;\n }\n ._access-menu div.active { color: var(--_access-menu-div-active-color, #0048FF); }\n ._access-menu ul li button.active, ._access-menu ul li button.active:hover, ._access-menu ul li button.active:before, ._access-menu ul li button.active:hover:before { color: var(--_access-menu-item-button-active-color, #0048FF); }\n ._access-menu ul li button:hover {\n color: var(--_access-menu-item-button-hover-color, #003366);\n background-color: var(--_access-menu-item-button-hover-background-color, #FFFFFF);\n scale: 1.03;\n }\n ._access-menu ul li.not-supported { display: none; }\n ._access-menu ul li button:before {\n content: ' ';\n font-family: var(--_access-menu-button-font-family-before, ${this._fixedDefaultFont});\n text-rendering: optimizeLegibility;\n font-feature-settings: \"liga\" 1;\n font-style: normal;\n text-transform: none;\n line-height: ${!useEmojis ? '1' : '1.1'};\n font-size: ${!useEmojis ? '24px' : '20px'} !important;\n\n /* Alinhamento corrigido */\n display: flex;\n align-items: center;\n justify-content: center;\n width: 20px;\n height: 20px;\n\n -webkit-font-smoothing: antialiased;\n color: var(--_access-menu-item-icon-color, rgba(0,0,0,.6));\n direction: ltr;\n text-indent: 0;\n transition-duration: .35s;\n\n }\n ._access-menu ul li button svg path { fill: var(--_access-menu-item-icon-color, rgba(0,0,0,.8)); transition-duration: .35s; }\n ._access-menu ul li button:hover svg path { fill: var(--_access-menu-item-hover-icon-color, #003366); }\n ._access-menu ul li button.active svg path { fill: var(--_access-menu-item-active-icon-color, #0048FF); }\n ._access-menu ul li:hover button:before { color: var(--_access-menu-item-hover-icon-color, #003366); }\n ._access-menu ul li button[data-access-action=\"increaseText\"]:before { content: var(--_access-menu-item-icon-increase-text, ${!useEmojis ? '\"zoom_in\"' : '\"🔼\"'}); top: var(--_access-menu-item-icon-increase-text-top, ${iconTop}); left: var(--_access-menu-item-icon-increase-text-left, ${iconLeft}); }\n ._access-menu ul li button[data-access-action=\"decreaseText\"]:before { content: var(--_access-menu-item-icon-decrease-text, ${!useEmojis ? '\"zoom_out\"' : '\"🔽\"'}); top: ${iconTop}; left: ${iconLeft}; }\n ._access-menu ul li button[data-access-action=\"increaseTextSpacing\"]:before { content: var(--_access-menu-item-icon-increase-text-spacing, ${!useEmojis ? '\"unfold_more\"' : '\"🔼\"'}); transform: var(--_access-menu-item-icon-increase-text-spacing-transform, rotate(90deg) translate(-7px, 2px)); top: 14px; left: 0; }\n ._access-menu ul li button[data-access-action=\"decreaseTextSpacing\"]:before { content: var(--_access-menu-item-icon-decrease-text-spacing, ${!useEmojis ? '\"unfold_less\"' : '\"🔽\"'}); transform: var(--_access-menu-item-icon-decrease-text-spacing-transform, rotate(90deg) translate(-7px, 2px)); top: 14px; left: 0; }\n ._access-menu ul li button[data-access-action=\"invertColors\"]:before { content: var(--_access-menu-item-icon-invert-colors, ${!useEmojis ? '\"invert_colors\"' : '\"🎆\"'}); top: ${iconTop}; left: ${iconLeft}; }\n ._access-menu ul li button[data-access-action=\"grayHues\"]:before { content: var(--_access-menu-item-icon-gray-hues, ${!useEmojis ? '\"format_color_reset\"' : '\"🌫️\"'}); top: ${iconTop}; left: ${iconLeft}; }\n ._access-menu ul li button[data-access-action=\"underlineLinks\"]:before { content: var(--_access-menu-item-icon-underline-links, ${!useEmojis ? '\"format_underlined\"' : '\"🔗\"'}); top: ${iconTop}; left: ${iconLeft}; }\n ._access-menu ul li button[data-access-action=\"bigCursor\"]:before { content: var(--_access-menu-item-icon-big-cursor, inherit); top: ${iconTop}; left: ${iconLeft}; }\n ._access-menu ul li button[data-access-action=\"readingGuide\"]:before { content: var(--_access-menu-item-icon-reading-guide, ${!useEmojis ? '\"border_horizontal\"' : '\"↔️\"'}); top: ${iconTop}; left: ${iconLeft}; }\n ._access-menu ul li button[data-access-action=\"textToSpeech\"]:before { content: var(--_access-menu-item-icon-text-to-speech, ${!useEmojis ? '\"record_voice_over\"' : '\"⏺️\"'}); top: ${iconTop}; left: ${iconLeft}; }\n ._access-menu ul li button[data-access-action=\"speechToText\"]:before { content: var(--_access-menu-item-icon-speech-to-text, ${!useEmojis ? '\"mic\"' : '\"🎤\"'}); top: ${iconTop}; left: ${iconLeft}; }\n ._access-menu ul li button[data-access-action=\"disableAnimations\"]:before { content: var(--_access-menu-item-icon-disable-animations, ${!useEmojis ? '\"animation\"' : '\"🏃♂️\"'}); top: ${iconTop}; left: ${iconLeft}; }\n ._access-menu ul li button[data-access-action=\"iframeModals\"]:before { content: var(--_access-menu-item-icon-iframe-modals, ${!useEmojis ? '\"policy\"' : '\"⚖️\"'}); top: ${iconTop}; left: ${iconLeft}; }\n ._access-menu ul li button[data-access-action=\"customFunctions\"]:before { content: var(--_access-menu-item-icon-custom-functions, ${!useEmojis ? '\"psychology_alt\"' : '\"❓\"'}); top: ${iconTop}; left: ${iconLeft}; }\n ._access-menu ul li button[data-access-action=\"increaseLineHeight\"]:before { content: var(--_access-menu-item-icon-increase-line-height, ${!useEmojis ? '\"unfold_more\"' : '\"🔼\"'}); top: ${iconTop}; left: ${iconLeft}; }\n ._access-menu ul li button[data-access-action=\"decreaseLineHeight\"]:before { content: var(--_access-menu-item-icon-decrease-line-height, ${!useEmojis ? '\"unfold_less\"' : '\"🔽\"'}); top: ${iconTop}; left: ${iconLeft}; }\n ._access-menu ul li button[data-access-action=\"dyslexicFont\"]:before { content: var(--_access-menu-item-icon-dyslexic-font, ${!useEmojis ? '\"font_download\"' : '\"🔤\"'}); top: ${iconTop}; left: ${iconLeft}; }\n ._access-menu ul li button[data-access-action=\"hideImages\"]:before { content: var(--_access-menu-item-icon-hide-images, ${!useEmojis ? '\"hide_image\"' : '\"🚫\"'}); top: ${iconTop}; left: ${iconLeft}; }\n ._access-menu-logo {\n display: block;\n max-width: 40%;\n margin: 8px auto 4px;\n object-fit: contain;\n }\n ._access-cycle-indicator { position: absolute; bottom: 6px; left: 50%; transform: translateX(-50%); display: flex; gap: 4px; }\n ._access-cycle-indicator span { width: 16px; height: 3px; border-radius: 2px; background: #ccc; transition: background 0.2s; }\n ._access-cycle-indicator span.filled { background: #0048FF; }\n `;\n }\n\n this._common.injectStyle(css, { className: Accessibility.CSS_CLASS_NAME });\n this._common.deployedObjects.set(`.${Accessibility.CSS_CLASS_NAME}`, false);\n }\n\n public removeCSS() {\n document.querySelector(`.${Accessibility.CSS_CLASS_NAME}`)?.remove();\n }\n\n injectIcon(): HTMLElement {\n const className = `_access-icon ${this.options.icon!.fontClass} _access`;\n const iconElem = this._common.jsonToHtml({\n type: 'i',\n attrs: {\n class: className,\n title: this.options.hotkeys!.enabled ? this.parseKeys(this.options.hotkeys!.keys.toggleMenu) : this.options.labels!.menuTitle,\n tabIndex: '0',\n },\n children: [this.options.icon!.imgElem!],\n });\n this._body.appendChild(iconElem);\n this._common.deployedObjects.set('._access-icon', false);\n return iconElem;\n }\n\n parseKeys(arr: Array<any>) {\n if (!this.options.hotkeys!.enabled) return '';\n if (!this.options.hotkeys!.helpTitles) return '';\n return this.options.labels!.hotkeyPrefix + arr\n .map(val => Number.isInteger(val) ? String.fromCharCode(val).toLowerCase() : val.replace('Key', ''))\n .join('+');\n }\n\n injectMenu(): HTMLElement {\n const labels = this.options.labels!;\n const hotkeys = this.options.hotkeys!;\n const mods = this.options.modules ?? {};\n const menuItems: IJsonToHtml[] = [\n { action: 'increaseText', label: labels.increaseText },\n { action: 'decreaseText', label: labels.decreaseText },\n { action: 'increaseTextSpacing', label: labels.increaseTextSpacing },\n { action: 'decreaseTextSpacing', label: labels.decreaseTextSpacing },\n { action: 'increaseLineHeight', label: labels.increaseLineHeight },\n { action: 'decreaseLineHeight', label: labels.decreaseLineHeight },\n { action: 'invertColors', label: labels.invertColors, hotkey: hotkeys.keys.invertColors },\n { action: 'grayHues', label: labels.grayHues, hotkey: hotkeys.keys.grayHues },\n { action: 'underlineLinks', label: labels.underlineLinks, hotkey: hotkeys.keys.underlineLinks },\n { action: 'bigCursor', label: labels.bigCursor, hotkey: hotkeys.keys.bigCursor },\n { action: 'readingGuide', label: labels.readingGuide, hotkey: hotkeys.keys.readingGuide },\n { action: 'disableAnimations', label: labels.disableAnimations, hotkey: hotkeys.keys.disableAnimations },\n { action: 'dyslexicFont', label: labels.dyslexicFont },\n { action: 'hideImages', label: labels.hideImages },\n ].filter(({ action }) => (mods as any)[action] !== false)\n .map(({ action, label, hotkey }: any) => ({\n type: 'li',\n children: [{\n type: 'button',\n attrs: { 'data-access-action': action, ...(hotkey ? { title: this.parseKeys(hotkey) } : {}) },\n children: [\n ...(action === 'bigCursor' ? [{ type: 'div', attrs: { id: 'iconBigCursor' } }] : []),\n { type: '#text', text: label },\n ],\n }],\n }));\n\n const json: IJsonToHtml = {\n type: 'div',\n attrs: { class: '_access-menu close _access' },\n children: [\n {\n type: 'div',\n attrs: { class: '_text-center', role: 'presentation' },\n children: [\n {\n type: 'button',\n attrs: { class: `_menu-close-btn _menu-btn ${this.options.icon!.fontClass}`, style: `font-family: var(--_access-menu-close-btn-font-family, ${this._fixedDefaultFont})`, title: hotkeys.enabled ? this.parseKeys(hotkeys.keys.toggleMenu) : labels.closeTitle },\n children: [this.options.icon!.closeIconElem!],\n },\n { type: '#text', text: labels.menuTitle },\n\n ],\n },\n {\n type: 'div',\n attrs: { class: 'content' },\n children: [\n { type: 'ul', attrs: { class: 'before-collapse _access-scrollbar' }, children: menuItems },\n {\n type: 'button',\n attrs: { class: '_menu-reset-btn', title: labels.resetTitle },\n children: [\n { type: 'span', attrs: { class: this.options.icon!.fontClass, style: `font-family: var(--_access-menu-reset-btn-font-family, ${this._fixedDefaultFont}); font-size: 18px; line-height: 1;` }, children: [this.options.icon!.resetIconElem!] },\n { type: 'span', children: [{ type: '#text', text: labels.resetTitle }] },\n ],\n },\n ],\n },\n\n ...(this.options.logoImage ? [{\n type: 'img',\n attrs: { src: this.options.logoImage, alt: '', class: '_access-menu-logo' },\n }] : []),\n ],\n };\n\n if (this.options.iframeModals) {\n this.options.iframeModals.forEach((im, i) => {\n const btn: IJsonToHtml = {\n type: 'li',\n children: [{\n type: 'button',\n attrs: { 'data-access-action': 'iframeModals', 'data-access-url': im.iframeUrl },\n children: [{ type: '#text', text: im.buttonText }],\n }],\n };\n const icon = im.icon && !this.options.icon?.useEmojis ? im.icon : (im.emoji && this.options.icon?.useEmojis ? im.emoji : null);\n if (icon) {\n btn.children![0].attrs!['data-access-iframe-index'] = String(i);\n const className = '_data-access-iframe-index-' + i;\n this._common.injectStyle(`._access-menu ul li button[data-access-action=\"iframeModals\"][data-access-iframe-index=\"${i}\"]:before { content: \"${icon}\"; }`, { className });\n this._common.deployedObjects.set('.' + className, false);\n }\n const ul = json.children![1].children![0];\n if (this.options.modules!.textToSpeech) ul.children!.splice(ul.children!.length - 2, 0, btn);\n else ul.children!.push(btn);\n });\n }\n\n if (this.options.customFunctions) {\n this.options.customFunctions.forEach((cf, i) => {\n const btn: IJsonToHtml = {\n type: 'li',\n children: [{\n type: 'button',\n attrs: { 'data-access-action': 'customFunctions', 'data-access-custom-id': cf.id, 'data-access-custom-index': String(i) },\n children: [{ type: '#text', text: cf.buttonText }],\n }],\n };\n const icon = cf.icon && !this.options.icon?.useEmojis ? cf.icon : (cf.emoji && this.options.icon?.useEmojis ? cf.emoji : null);\n if (icon) {\n const className = '_data-access-custom-id-' + cf.id;\n this._common.injectStyle(`._access-menu ul li button[data-access-action=\"customFunctions\"][data-access-custom-id=\"${cf.id}\"]:before { content: \"${icon}\"; }`, { className });\n this._common.deployedObjects.set('.' + className, false);\n }\n const ul = json.children![1].children![0];\n if (this.options.modules!.textToSpeech) ul.children!.splice(ul.children!.length - 2, 0, btn);\n else ul.children!.push(btn);\n });\n }\n\n const menuElem = this._common.jsonToHtml(json);\n this._body.appendChild(menuElem);\n\n setTimeout(() => {\n const ic = document.getElementById('iconBigCursor');\n if (ic) {\n ic.outerHTML += '<svg version=\"1.1\" id=\"iconBigCursorSvg\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\" style=\"position:absolute;width:19px;height:19px;top:9px;left:9px\" xml:space=\"preserve\"><path d=\"M 423.547 323.115 l -320 -320 c -3.051 -3.051 -7.637 -3.947 -11.627 -2.304 s -6.592 5.547 -6.592 9.856 V 480 c 0 4.501 2.837 8.533 7.083 10.048 c 4.224 1.536 8.981 0.192 11.84 -3.285 l 85.205 -104.128 l 56.853 123.179 c 1.792 3.883 5.653 6.187 9.685 6.187 c 1.408 0 2.837 -0.277 4.203 -0.875 l 74.667 -32 c 2.645 -1.131 4.736 -3.285 5.76 -5.973 c 1.024 -2.688 0.939 -5.675 -0.277 -8.299 l -57.024 -123.52 h 132.672 c 4.309 0 8.213 -2.603 9.856 -6.592 C 427.515 330.752 426.598 326.187 423.547 323.115 Z\"/></svg>';\n document.getElementById('iconBigCursor')?.remove();\n }\n }, 1);\n\n this._common.deployedObjects.set('._access-menu', false);\n\n const addToggleListener = (el: Element | null, handler: () => void) => {\n el?.addEventListener('click', () => handler(), false);\n el?.addEventListener('keyup', (e: Event) => {\n if ((e as KeyboardEvent).key === 'Enter') handler();\n }, false);\n };\n\n addToggleListener(menuElem.querySelector('._menu-close-btn'), () => this.toggleMenu());\n addToggleListener(menuElem.querySelector('._menu-reset-btn'), () => this.resetAll());\n\n return menuElem;\n }\n\n getVoices(): Promise<SpeechSynthesisVoice[]> {\n return new Promise(resolve => {\n const synth = window.speechSynthesis;\n const id = setInterval(() => {\n if (synth.getVoices().length !== 0) { resolve(synth.getVoices()); clearInterval(id); }\n }, 10);\n });\n }\n\n async injectTts(): Promise<void> {\n const voices = await this.getVoices();\n const targetLang = this.options.language!.textToSpeechLang.toLowerCase();\n const isLngSupported = !targetLang || voices.some(v =>\n v.lang.toLowerCase() === targetLang ||\n v.lang.toLowerCase().startsWith(targetLang.split('-')[0])\n );\n if (!isLngSupported) return;\n\n const tts = this.common.jsonToHtml({\n type: 'li',\n children: [{\n type: 'button',\n attrs: { 'data-access-action': 'textToSpeech', title: this.parseKeys(this.options.hotkeys!.keys.textToSpeech) },\n children: [\n { type: '#text', text: this.options.labels!.textToSpeech },\n {\n type: 'div', attrs: { class: 'screen-reader-wrapper' }, children: [\n { type: 'div', attrs: { class: 'screen-reader-wrapper-step-1', tabIndex: '-1' } },\n { type: 'div', attrs: { class: 'screen-reader-wrapper-step-2', tabIndex: '-1' } },\n { type: 'div', attrs: { class: 'screen-reader-wrapper-step-3', tabIndex: '-1' } },\n ]\n },\n ],\n }],\n });\n const sts = this.common.jsonToHtml({\n type: 'li',\n children: [{\n type: 'button',\n attrs: { 'data-access-action': 'speechToText', title: this.parseKeys(this.options.hotkeys!.keys.speechToText) },\n children: [{ type: '#text', text: this.options.labels!.speechToText }],\n }],\n });\n\n const ul = this._menu.querySelector('ul')!;\n ul.appendChild(sts);\n ul.appendChild(tts);\n }\n\n addListeners() {\n this._menu.querySelectorAll('ul li').forEach(li => {\n ['click', 'keyup'].forEach(evt =>\n li.addEventListener(evt, (e: Event) => {\n const ev = e || window.event;\n if ((ev as KeyboardEvent).detail === 0 && (ev as KeyboardEvent).key !== 'Enter') return;\n const actionEl = (ev.target as HTMLElement).closest<HTMLElement>('[data-access-action]');\n if (!actionEl) return;\n this.invoke(actionEl.getAttribute('data-access-action')!, actionEl);\n })\n );\n });\n\n [...Array.from(this._menu.getElementsByClassName('screen-reader-wrapper-step-1')),\n ...Array.from(this._menu.getElementsByClassName('screen-reader-wrapper-step-2')),\n ...Array.from(this._menu.getElementsByClassName('screen-reader-wrapper-step-3'))\n ].forEach(el =>\n el.addEventListener('click', (e: Event) => {\n const action = (e.target as HTMLElement).parentElement!.parentElement!.getAttribute('data-access-action')!;\n this.invoke(action, e.target as HTMLElement);\n }, false)\n );\n }\n\n sortModuleTypes() {\n this.options.modulesOrder!.sort((a, b) => a.order - b.order);\n }\n\n disableUnsupportedModulesAndSort() {\n this.sortModuleTypes();\n const ul = this._menu.querySelector('ul')!;\n this.options.modulesOrder!.forEach(item => {\n const module = AccessibilityModulesType[item.type] as string;\n const enabled = (this.options.modules as any)[module];\n const btn = this._menu.querySelector<HTMLElement>(`button[data-access-action=\"${module}\"]`);\n if (btn) {\n btn.parentElement!.remove();\n ul.appendChild(btn.parentElement!);\n if (!enabled) btn.parentElement!.classList.add('not-supported');\n }\n });\n }\n\n resetAll() {\n this.menuInterface.textToSpeech(true);\n this.menuInterface.speechToText(true);\n this.menuInterface.disableAnimations(true);\n this.menuInterface.underlineLinks(true);\n this.menuInterface.grayHues(true);\n this.menuInterface.invertColors(true);\n this.menuInterface.bigCursor(true);\n this.menuInterface.readingGuide(true);\n this.menuInterface.dyslexicFont(true);\n this.menuInterface.hideImages(true);\n this.resetTextSize();\n this.resetTextSpace();\n this.resetLineHeight();\n this.menuInterface.refreshCycleButtons();\n }\n\n resetTextSize() {\n this.resetIfDefined(this._stateValues.body.fontSize, this._body.style, 'fontSize');\n if (typeof this._htmlOrgFontSize !== 'undefined') this._html.style.fontSize = this._htmlOrgFontSize;\n document.querySelectorAll('[data-init-font-size]').forEach(el => {\n (el as HTMLElement).style.fontSize = el.getAttribute('data-init-font-size')!;\n el.removeAttribute('data-init-font-size');\n });\n this._sessionState.textSize = 0;\n this.onChange(true);\n }\n\n resetLineHeight() {\n this.resetIfDefined(this._stateValues.body.lineHeight, this.body.style, 'lineHeight');\n document.querySelectorAll('[data-init-line-height]').forEach(el => {\n (el as HTMLElement).style.lineHeight = el.getAttribute('data-init-line-height')!;\n el.removeAttribute('data-init-line-height');\n });\n this.sessionState.lineHeight = 0;\n this.onChange(true);\n }\n\n resetTextSpace() {\n this.resetIfDefined(this._stateValues.body.wordSpacing, this._body.style, 'wordSpacing');\n this.resetIfDefined(this._stateValues.body.letterSpacing, this._body.style, 'letterSpacing');\n document.querySelectorAll('[data-init-word-spacing]').forEach(el => {\n (el as HTMLElement).style.wordSpacing = el.getAttribute('data-init-word-spacing')!;\n el.removeAttribute('data-init-word-spacing');\n });\n document.querySelectorAll('[data-init-letter-spacing]').forEach(el => {\n (el as HTMLElement).style.letterSpacing = el.getAttribute('data-init-letter-spacing')!;\n el.removeAttribute('data-init-letter-spacing');\n });\n this._sessionState.textSpace = 0;\n this.onChange(true);\n }\n\n alterTextSize(isIncrease: boolean) {\n this._sessionState.textSize += isIncrease ? 1 : -1;\n this.onChange(true);\n let factor = this.options.textSizeFactor! * (isIncrease ? 1 : -1);\n\n if (this.options.textPixelMode) {\n const excludeSize = Array.from(document.querySelectorAll('._access *'));\n document.querySelectorAll('*:not(._access)').forEach(el => {\n if (excludeSize.includes(el)) return;\n const fSize = getComputedStyle(el).fontSize;\n if (fSize?.includes('px')) {\n if (!el.getAttribute('data-init-font-size')) el.setAttribute('data-init-font-size', fSize);\n (el as HTMLElement).style.fontSize = (parseInt(fSize) + factor) + 'px';\n }\n });\n const bodyFs = getComputedStyle(this._body).fontSize;\n if (bodyFs?.includes('px')) {\n if (!this._body.getAttribute('data-init-font-size')) this._body.setAttribute('data-init-font-size', bodyFs);\n this._body.style.fontSize = (parseInt(bodyFs) + factor) + 'px';\n }\n } else if (this.options.textEmlMode) {\n const fp = this._html.style.fontSize;\n if (fp.includes('%')) this._html.style.fontSize = (parseInt(fp) + factor) + '%';\n else this._common.warn('textEmlMode: html element font-size is not in %.');\n } else {\n const fSize = this._common.getFormattedDim(getComputedStyle(this._body).fontSize);\n if (typeof this._stateValues.body.fontSize === 'undefined')\n this._stateValues.body.fontSize = fSize.size + fSize.suffix;\n if (fSize?.suffix) this._body.style.fontSize = ((fSize.size as number) + factor) + fSize.suffix;\n }\n if (this._stateValues.textToSpeech) this.textToSpeech(`Text Size ${isIncrease ? 'Increased' : 'Decreased'}`);\n }\n\n alterLineHeight(isIncrease: boolean) {\n this.sessionState.lineHeight += isIncrease ? 1 : -1;\n this.onChange(true);\n let factor = (isIncrease ? 1 : -1) * (this.options.textEmlMode ? 20 : 2);\n const exclude = Array.from(document.querySelectorAll('._access *'));\n\n document.querySelectorAll('*:not(._access)').forEach(el => {\n if (exclude.includes(el)) return;\n if (this.options.textPixelMode) {\n const lh = getComputedStyle(el).lineHeight;\n if (lh?.includes('px')) {\n if (!el.getAttribute('data-init-line-height')) el.setAttribute('data-init-line-height', lh);\n (el as HTMLElement).style.lineHeight = (parseInt(lh) + factor) + 'px';\n }\n } else if (this.options.textEmlMode) {\n let lh = getComputedStyle(el).lineHeight;\n const fs = getComputedStyle(el).fontSize;\n if (lh === 'normal') lh = (parseInt(fs) * 1.2) + 'px';\n if (lh?.includes('px')) {\n const pct = (parseInt(lh) * 100) / parseInt(fs);\n if (!el.getAttribute('data-init-line-height')) el.setAttribute('data-init-line-height', pct + '%');\n (el as HTMLElement).style.lineHeight = (pct + factor) + '%';\n }\n if (typeof this._stateValues.body.lineHeight === 'undefined') this._stateValues.body.lineHeight = '';\n }\n });\n if (this._stateValues.textToSpeech) this.textToSpeech(`Line Height ${isIncrease ? 'Increased' : 'Decreased'}`);\n }\n\n alterTextSpace(isIncrease: boolean) {\n this._sessionState.textSpace += isIncrease ? 1 : -1;\n this.onChange(true);\n const factor = isIncrease ? 2 : -2;\n\n if (this.options.textPixelMode) {\n const exclude = Array.from(document.querySelectorAll('._access *'));\n document.querySelectorAll('*:not(._access)').forEach(el => {\n if (exclude.includes(el)) return;\n const ws = (el as HTMLElement).style.wordSpacing;\n if (!el.getAttribute('data-init-word-spacing')) el.setAttribute('data-init-word-spacing', ws);\n (el as HTMLElement).style.wordSpacing = ws?.includes('px') ? (parseInt(ws) + factor) + 'px' : factor + 'px';\n const ls = (el as HTMLElement).style.letterSpacing;\n if (!el.getAttribute('data-init-letter-spacing')) el.setAttribute('data-init-letter-spacing', ls);\n (el as HTMLElement).style.letterSpacing = ls?.includes('px') ? (parseInt(ls) + factor) + 'px' : factor + 'px';\n });\n } else {\n const ws = this._common.getFormattedDim(getComputedStyle(this._body).wordSpacing) as any;\n if (typeof this._stateValues.body.wordSpacing === 'undefined') this._stateValues.body.wordSpacing = '';\n if (ws?.suffix) this._body.style.wordSpacing = ((ws.size * 1) + factor) + ws.suffix;\n const ls = this._common.getFormattedDim(getComputedStyle(this._body).letterSpacing) as any;\n if (typeof this._stateValues.body.letterSpacing === 'undefined') this._stateValues.body.letterSpacing = '';\n if (ls?.suffix) this._body.style.letterSpacing = ((ls.size * 1) + factor) + ls.suffix;\n }\n if (this._stateValues.textToSpeech) this.textToSpeech(`Text Spacing ${isIncrease ? 'Increased' : 'Decreased'}`);\n }\n\n speechToText() {\n const SR = (window as any).SpeechRecognition || (window as any).webkitSpeechRecognition;\n if (!SR) return;\n this._recognition = new SR();\n this._recognition.continuous = true;\n this._recognition.interimResults = true;\n this._recognition.onstart = () => this._body.classList.add('_access-listening');\n this._recognition.onend = () => this._body.classList.remove('_access-listening');\n this._recognition.onresult = (event: any) => {\n if (typeof event.results === 'undefined') return;\n let final = '';\n for (let i = event.resultIndex; i < event.results.length; ++i)\n if (event.results[i].isFinal) final += event.results[i][0].transcript;\n if (final && this._speechToTextTarget) {\n this._speechToTextTarget.parentElement!.classList.remove('_access-listening');\n const tag = this._speechToTextTarget.tagName.toLowerCase();\n if (tag === 'input' || tag === 'textarea')\n (this._speechToTextTarget as HTMLInputElement).value = final;\n else if (this._speechToTextTarget.getAttribute('contenteditable') !== null)\n this._speechToTextTarget.innerText = final;\n }\n };\n this._recognition.lang = this.options.language!.speechToTextLang;\n this._recognition.start();\n }\n\n textToSpeech(text: string) {\n const w = window as any;\n if (!w.SpeechSynthesisUtterance || !w.speechSynthesis) return;\n const msg = new w.SpeechSynthesisUtterance(text);\n msg.lang = this.options.language!.textToSpeechLang;\n msg.rate = this._stateValues.speechRate;\n msg.onend = () => { this._isReading = false; };\n const voices = w.speechSynthesis.getVoices();\n const voice = voices.find((v: SpeechSynthesisVoice) => v.lang === msg.lang);\n if (voice) msg.voice = voice;\n else this._common.warn('text to speech language not supported!');\n if (window.speechSynthesis.pending || window.speechSynthesis.speaking) window.speechSynthesis.cancel();\n window.speechSynthesis.speak(msg);\n this._isReading = true;\n }\n\n createScreenShot(url: string): Promise<string> {\n return this._common.createScreenshot(url);\n }\n\n listen() {\n this._recognition?.stop?.();\n this._speechToTextTarget = (window as any).event?.target as HTMLElement;\n this.speechToText();\n }\n\n read(e: Event) {\n try {\n e = (window as any).event || e;\n e?.preventDefault?.();\n e?.stopPropagation?.();\n } catch { }\n\n const menuEls = Array.from(document.querySelectorAll('._access-menu *'));\n if (menuEls.includes((window as any).event?.target as Element) && e instanceof MouseEvent) return;\n\n if (e instanceof KeyboardEvent && (e.shiftKey && e.key === 'Tab' || e.key === 'Tab')) {\n this.textToSpeech(((window as any).event?.target as HTMLElement)?.innerText);\n return;\n }\n\n if (this._isReading) { window.speechSynthesis.cancel(); this._isReading = false; }\n else this.textToSpeech(((window as any).event?.target as HTMLElement)?.innerText);\n }\n\n runHotkey(name: string) {\n if (name === 'toggleMenu') { this.toggleMenu(); return; }\n if (typeof (this.menuInterface as any)[name] === 'function' && (this._options.modules as any)[name])\n (this.menuInterface as any)[name](false);\n }\n\n toggleMenu() {\n const shouldClose = this._menu.classList.contains('close');\n setTimeout(() => this._menu.querySelector('ul')!.classList.toggle('before-collapse'), shouldClose ? 10 : 500);\n this._menu.classList.toggle('close');\n this.options.icon!.tabIndex = shouldClose ? 0 : -1;\n this._menu.childNodes.forEach(child => {\n if (child.hasChildNodes() && child.nodeType === Node.ELEMENT_NODE && (child as HTMLElement).tagName === 'P')\n (child as HTMLElement).tabIndex = -1;\n });\n }\n\n invoke(action: string, button: HTMLElement) {\n if (typeof (this.menuInterface as any)[action] === 'function')\n (this.menuInterface as any)[action](undefined, button);\n }\n\n onKeyDown(e: KeyboardEvent) {\n const act = Object.entries(this.options.hotkeys!.keys).find(([, keys]) =>\n keys.every((k: string | number) => Number.isInteger(k) ? e.keyCode === k : (e as any)[k] === true)\n );\n if (act) this.runHotkey(act[0]);\n }\n\n build() {\n this._stateValues = { underlineLinks: false, textToSpeech: false, bigCursor: false, readingGuide: false, speechRate: 1, body: {}, html: {} };\n this._body = document.body as HTMLBodyElement;\n this._html = document.documentElement;\n if (this.options.textEmlMode) this.initFontSize();\n this.injectCss(!this.options.suppressCssInjection && !this.options.suppressDomInjection);\n if (!this.options.suppressDomInjection) {\n this._icon = this.injectIcon();\n this._menu = this.injectMenu();\n this.injectTts();\n setTimeout(() => { this.addListeners(); this.disableUnsupportedModulesAndSort(); }, 10);\n if (this.options.hotkeys!.enabled) document.addEventListener('keydown', this._onKeyDownBind, false);\n this._icon.addEventListener('click', () => this.toggleMenu(), false);\n this._icon.addEventListener('keyup', (e) => { if (e.key === 'Enter') this.toggleMenu(); }, false);\n setTimeout(() => { this._icon.style.opacity = '1'; }, 10);\n\n document.addEventListener('keydown', (e: KeyboardEvent) => {\n if (e.key === 'Escape' && !this._menu.classList.contains('close')) this.toggleMenu();\n }, false);\n\n document.addEventListener('click', (e: MouseEvent) => {\n if (this._menu.classList.contains('close')) return;\n if (this._menu.contains(e.target as Node) || this._icon.contains(e.target as Node)) return;\n this.toggleMenu();\n }, false);\n }\n\n this.updateReadGuide = (e: Event | TouchEvent | any) => {\n const newPos = e.type === 'touchmove' ? e.changedTouches[0].clientY : e.y;\n const bar = document.getElementById('access_read_guide_bar');\n if (bar) bar.style.top = (newPos - (parseInt(this.options.guide!.height) + 5)) + 'px';\n };\n\n this.menuInterface = new MenuInterface(this);\n if (this.options.session!.persistent) this.setSessionFromCache();\n }\n\n updateReadGuide(e: Event | TouchEvent | any) {\n const newPos = e.type === 'touchmove' ? e.changedTouches[0].clientY : e.y;\n const bar = document.getElementById('access_read_guide_bar');\n if (bar) bar.style.top = (newPos - (parseInt(this.options.guide!.height) + 5)) + 'px';\n }\n\n resetIfDefined(src: string, dest: any, prop: string) {\n if (typeof src !== 'undefined') dest[prop] = src;\n }\n\n onChange(updateSession: boolean) {\n if (updateSession && this.options.session!.persistent) this.saveSession();\n }\n\n saveSession() { this._storage.set('_accessState', this.sessionState); }\n\n setSessionFromCache() {\n const s = this._storage.get('_accessState');\n if (!s) return;\n if (s.textSize) {\n let n = s.textSize;\n if (n > 0) while (n--) this.alterTextSize(true);\n else while (n++) this.alterTextSize(false);\n }\n if (s.textSpace) {\n let n = s.textSpace;\n if (n > 0) while (n--) this.alterTextSpace(true);\n else while (n++) this.alterTextSpace(false);\n }\n if (s.lineHeight) {\n let n = s.lineHeight;\n if (n > 0) while (n--) this.alterLineHeight(true);\n else while (n++) this.alterLineHeight(false);\n }\n if (s.invertColors) this.menuInterface.invertColors();\n if (s.grayHues) this.menuInterface.grayHues();\n if (s.underlineLinks) this.menuInterface.underlineLinks();\n if (s.bigCursor) this.menuInterface.bigCursor();\n if (s.readingGuide) this.menuInterface.readingGuide();\n this.sessionState = s;\n }\n\n destroy() {\n this._common.deployedObjects.getAll().forEach((_, key) => {\n document.querySelector(key)?.parentElement?.removeChild(document.querySelector(key)!);\n });\n document.removeEventListener('keydown', this._onKeyDownBind, false);\n }\n}\n\nexport default Accessibility;\n","'use strict';\n\nimport { ICommon, IDeployedObjects, IFormattedDim, IInjectStyleOptions, IJsonToHtml } from './interfaces/common.interface';\n\nexport class Common implements ICommon {\n static DEFAULT_PIXEL = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAA1JREFUGFdj+P///38ACfsD/QVDRcoAAAAASUVORK5CYII=';\n private body!: HTMLBodyElement;\n private deployedMap!: Map<string, boolean>;\n private _isIOS!: boolean;\n private _canvas!: HTMLCanvasElement;\n\n constructor() {\n this.body = (document.body || document.querySelector('body')) as HTMLBodyElement;\n this.deployedMap = new Map<string, boolean>();\n }\n\n isIOS() {\n if (typeof this._isIOS === 'boolean') return this._isIOS;\n const devices = ['iPad Simulator', 'iPhone Simulator', 'iPod Simulator', 'iPad', 'iPhone', 'iPod'];\n this._isIOS = !!navigator.platform && devices.some(d => navigator.platform === d);\n return this._isIOS;\n }\n\n jsonToHtml(obj: IJsonToHtml): HTMLElement {\n let elm = document.createElement(obj.type);\n for (let i in obj.attrs) {\n elm.setAttribute(i, obj.attrs[i]);\n }\n for (const child of (obj.children ?? [])) {\n let newElem: any = null;\n if (child.type === '#text') {\n newElem = document.createTextNode(child.text ?? '');\n } else {\n newElem = this.jsonToHtml(child);\n }\n if ((newElem?.tagName?.toLowerCase() !== 'undefined') || newElem.nodeType === 3)\n elm.appendChild(newElem);\n }\n return elm;\n }\n\n injectStyle(css: string, innerOptions = {} as IInjectStyleOptions) {\n let sheet = document.createElement('style');\n sheet.appendChild(document.createTextNode(css));\n if (innerOptions.className) sheet.classList.add(innerOptions.className);\n this.body.appendChild(sheet);\n return sheet;\n }\n\n getFormattedDim(value: string): IFormattedDim {\n if (!value) return null as any;\n value = String(value);\n const by = (val: string, suffix: string): IFormattedDim => ({\n size: val.substring(0, val.indexOf(suffix)),\n suffix,\n });\n if (value.includes('%')) return by(value, '%');\n if (value.includes('rem')) return by(value, 'rem');\n if (value.includes('px')) return by(value, 'px');\n if (value.includes('em')) return by(value, 'em');\n if (value.includes('pt')) return by(value, 'pt');\n if (value === 'auto') return by(value, '');\n return null as any;\n }\n\n extend(src: any, dest: any) {\n for (let i in src) {\n if (typeof src[i] === 'object') {\n if (dest && dest[i]) {\n if (dest[i] instanceof Array) src[i] = dest[i];\n else src[i] = this.extend(src[i], dest[i]);\n }\n } else if (typeof dest === 'object' && typeof dest[i] !== 'undefined') {\n src[i] = dest[i];\n }\n }\n return src;\n }\n\n injectIconsFont(urls: Array<string>, callback: Function) {\n if (!urls?.length) return;\n let head = document.getElementsByTagName('head')[0];\n let counter = 0;\n let hasErrors = false;\n let onload = (e: Event | string) => {\n if (typeof e === 'string' || e.type === 'error') hasErrors = true;\n if (!--counter) callback(hasErrors);\n };\n urls.forEach(url => {\n let link = document.createElement('link');\n link.type = 'text/css';\n link.rel = 'stylesheet';\n link.href = url;\n link.className = `_access-font-icon-${counter++}`;\n link.onload = onload;\n link.onerror = onload;\n this.deployedObjects.set('.' + link.className, true);\n head.appendChild(link);\n });\n }\n\n getFixedFont(name: string) {\n if (this.isIOS()) return (name as any).replaceAll(' ', '+');\n return name;\n }\n\n getFixedPseudoFont(name: string) {\n if (this.isIOS()) return (name as any).replaceAll('+', ' ');\n return name;\n }\n\n isFontLoaded(fontFamily?: string, callback?: Function) {\n try {\n const onReady = () => callback!((document as any).fonts.check(`1em ${(fontFamily as any).replaceAll('+', ' ')}`));\n (document as any).fonts.ready.then(onReady, onReady);\n } catch {\n callback!(true);\n }\n }\n\n warn(msg: string) {\n const prefix = 'AccessibilityWidget: ';\n (console.warn || console.log)(prefix + msg);\n }\n\n get deployedObjects(): IDeployedObjects {\n return {\n get: (key: string) => this.deployedMap.get(key)!,\n contains: (key: string) => this.deployedMap.has(key),\n set: (key: string, val: boolean) => { this.deployedMap.set(key, val); },\n remove: (key: string) => { this.deployedMap.delete(key); },\n getAll: () => this.deployedMap,\n };\n }\n\n createScreenshot(url: string): Promise<string> {\n return new Promise((resolve) => {\n if (!this._canvas) this._canvas = document.createElement('canvas');\n const img = new Image();\n this._canvas.style.cssText = 'position:fixed;top:0;left:0;opacity:0.05;transform:scale(0.05)';\n img.crossOrigin = 'anonymous';\n img.onload = () => {\n document.body.appendChild(this._canvas);\n const ctx = this._canvas.getContext('2d')!;\n this._canvas.width = img.naturalWidth;\n this._canvas.height = img.naturalHeight;\n ctx.clearRect(0, 0, this._canvas.width, this._canvas.height);\n ctx.drawImage(img, 0, 0);\n let res = Common.DEFAULT_PIXEL;\n try { res = this._canvas.toDataURL('image/png'); } catch {}\n resolve(res);\n this._canvas.remove();\n };\n img.onerror = () => resolve(Common.DEFAULT_PIXEL);\n img.src = url;\n });\n }\n\n getFileExtension(filename: string): string {\n return filename.substring(filename.lastIndexOf('.') + 1) || filename;\n }\n}\n","import { ICommon, IJsonToHtml, IUnitsDim } from './common.interface';\nimport { IMenuInterface } from './menu.interface';\n\nexport interface IAccessibility {\n menuInterface: IMenuInterface;\n options: IAccessibilityOptions;\n sessionState: ISessionState;\n common: ICommon;\n stateValues: IStateValues;\n isReading?: boolean;\n readonly html: HTMLElement;\n readonly body: HTMLBodyElement;\n readonly menu: HTMLElement;\n readonly recognition: any;\n readonly fixedDefaultFont: string;\n alterTextSize(isIncrease: boolean): void;\n alterTextSpace(isIncrease: boolean): void;\n alterLineHeight(isIncrease: boolean): void;\n resetTextSize(): void;\n resetTextSpace(): void;\n resetLineHeight(): void;\n speechToText(): void;\n textToSpeech(text: string): void;\n listen(): void;\n read(e?: Event): void;\n runHotkey(name: string): void;\n toggleMenu(): void;\n invoke(action: string, button: HTMLElement): void;\n build(): void;\n updateReadGuide(e: Event | TouchEvent | any): void;\n resetIfDefined(src: string, dest: any, prop: string): void;\n onChange(updateSession: boolean): void;\n createScreenShot(url: string): Promise<string>;\n injectCss(injectFull: boolean): void;\n removeCSS(): void;\n}\n\nexport interface IAccessibilityOptions {\n icon?: IAccessibilityIconOptions;\n hotkeys?: IAccessibilityHotkeysOptions;\n guide?: IAccessibilityGuideOptions;\n labels?: IAccessibilityMenuLabelsOptions;\n textToSpeechLang?: string;\n speechToTextLang?: string;\n textPixelMode?: boolean;\n textEmlMode?: boolean;\n textSizeFactor?: number;\n modules?: IAccessibilityModulesOptions;\n modulesOrder?: Array<IAccessibilityModuleOrder>;\n session?: IAccessibilitySessionOptions;\n iframeModals?: Array<IIframeModal>;\n customFunctions?: Array<ICustomFunction>;\n statement?: IAccessibilityUrlOptions;\n feedback?: IAccessibilityUrlOptions;\n language?: IAccessibilityLanguageOptions;\n linkSelector?: string;\n logoImage?: string;\n suppressCssInjection?: boolean;\n suppressDomInjection?: boolean;\n animations?: IAccessibilityAnimationsOptions;\n}\n\nexport interface ICustomFunction {\n method: (cf: ICustomFunction, active: boolean) => void;\n buttonText: string;\n id: any;\n toggle?: boolean;\n icon?: string;\n emoji?: string;\n}\n\nexport interface IIframeModal {\n iframeUrl: string;\n buttonText: string;\n icon?: string;\n emoji?: string;\n}\n\nexport interface IAccessibilityIconOptions {\n img?: string;\n imgElem?: IJsonToHtml;\n fontFaceSrc?: Array<string>;\n fontClass?: string;\n useEmojis?: boolean;\n fontFamilyValidation?: string;\n tabIndex?: number;\n closeIcon?: string;\n resetIcon?: string;\n closeIconElem?: IJsonToHtml;\n resetIconElem?: IJsonToHtml;\n}\n\nexport interface IAccessibilityIconPositionOptions {\n top?: IUnitsDim;\n bottom?: IUnitsDim;\n left?: IUnitsDim;\n right?: IUnitsDim;\n type?: string;\n}\n\nexport interface IAccessibilityIconDimensionsOptions {\n width: IUnitsDim;\n height: IUnitsDim;\n}\n\nexport interface IAccessibilityHotkeysOptions {\n enabled?: boolean;\n helpTitles?: boolean;\n keys: IAccessibilityHotkeysKeysOptions;\n}\n\nexport interface IAccessibilityHotkeysKeysOptions {\n toggleMenu: Array<any>;\n invertColors: Array<any>;\n grayHues: Array<any>;\n underlineLinks: Array<any>;\n bigCursor: Array<any>;\n readingGuide: Array<any>;\n textToSpeech: Array<any>;\n speechToText: Array<any>;\n disableAnimations: Array<any>;\n}\n\nexport interface IAccessibilityGuideOptions {\n cBorder: string;\n cBackground: string;\n height: string;\n}\n\nexport interface IAccessibilityMenuDimensionsOptions {\n width: IUnitsDim;\n height: IUnitsDim;\n}\n\nexport interface IAccessibilityMenuLabelsOptions {\n resetTitle: string;\n closeTitle: string;\n menuTitle: string;\n increaseText: string;\n decreaseText: string;\n increaseTextSpacing: string;\n decreaseTextSpacing: string;\n invertColors: string;\n grayHues: string;\n bigCursor: string;\n readingGuide: string;\n underlineLinks: string;\n textToSpeech: string;\n speechToText: string;\n disableAnimations: string;\n increaseLineHeight: string;\n decreaseLineHeight: string;\n hotkeyPrefix: string;\n dyslexicFont: string;\n hideImages: string;\n}\n\nexport interface IAccessibilityModulesOptions {\n increaseText?: boolean;\n decreaseText?: boolean;\n increaseTextSpacing?: boolean;\n decreaseTextSpacing?: boolean;\n increaseLineHeight?: boolean;\n decreaseLineHeight?: boolean;\n invertColors?: boolean;\n grayHues?: boolean;\n bigCursor?: boolean;\n readingGuide?: boolean;\n underlineLinks?: boolean;\n textToSpeech?: boolean;\n speechToText?: boolean;\n disableAnimations?: boolean;\n dyslexicFont?: boolean;\n hideImages?: boolean;\n}\n\nexport interface IAccessibilityAnimationsOptions {\n buttons?: boolean;\n}\n\nexport enum AccessibilityModulesType {\n increaseText = 1,\n decreaseText = 2,\n increaseTextSpacing = 3,\n decreaseTextSpacing = 4,\n increaseLineHeight = 5,\n decreaseLineHeight = 6,\n invertColors = 7,\n grayHues = 8,\n bigCursor = 9,\n readingGuide = 10,\n underlineLinks = 11,\n textToSpeech = 12,\n speechToText = 13,\n disableAnimations = 14,\n iframeModals = 15,\n customFunctions = 16,\n dyslexicFont = 17,\n hideImages = 18,\n}\n\nexport interface IAccessibilityModuleOrder {\n order: number;\n type: AccessibilityModulesType;\n}\n\nexport interface IAccessibilitySessionOptions {\n persistent?: boolean;\n}\n\nexport interface IAccessibilityUrlOptions {\n url: string;\n}\n\nexport interface IAccessibilityLanguageOptions {\n textToSpeechLang: string;\n speechToTextLang: string;\n}\n\nexport interface ISessionState {\n textSize: number;\n textSpace: number;\n lineHeight: number;\n invertColors?: boolean;\n grayHues?: boolean;\n underlineLinks?: boolean;\n bigCursor?: boolean;\n readingGuide?: boolean;\n}\n\nexport interface IStateValues {\n underlineLinks?: boolean;\n textToSpeech?: boolean;\n bigCursor?: boolean;\n readingGuide?: boolean;\n invertColors?: boolean;\n grayHues?: boolean;\n speechToText?: boolean;\n disableAnimations?: boolean;\n dyslexicFont?: boolean;\n hideImages?: boolean;\n speechRate?: number;\n body: any;\n html: any;\n}\n","import { IAccessibility } from './interfaces/accessibility.interface';\nimport { IMenuInterface } from './interfaces/menu.interface';\n\nexport class MenuInterface implements IMenuInterface {\n private _acc: IAccessibility;\n private readBind: any;\n private _dialog!: HTMLDialogElement;\n\n constructor(accessibility: IAccessibility) {\n this._acc = accessibility;\n this.readBind = this._acc.read.bind(this._acc);\n }\n\n private updateCycleButton(btn: HTMLElement, level: number, max: number) {\n if (level > 0) btn.classList.add('active'); else btn.classList.remove('active');\n let indicator = btn.querySelector('._access-cycle-indicator');\n if (!indicator) {\n indicator = document.createElement('div');\n indicator.className = '_access-cycle-indicator';\n for (let i = 0; i < max; i++) indicator.appendChild(document.createElement('span'));\n btn.appendChild(indicator);\n }\n indicator.querySelectorAll('span').forEach((span, i) => span.classList.toggle('filled', i < level));\n }\n\n refreshCycleButtons() {\n const find = (action: string) => this._acc.menu?.querySelector<HTMLElement>(`[data-access-action=\"${action}\"]`);\n const t = find('increaseText'); if (t) this.updateCycleButton(t, this._acc.sessionState.textSize, 3);\n const s = find('increaseTextSpacing'); if (s) this.updateCycleButton(s, this._acc.sessionState.textSpace, 3);\n const l = find('increaseLineHeight'); if (l) this.updateCycleButton(l, this._acc.sessionState.lineHeight, 3);\n }\n\n increaseText(_destroy?: boolean, btn?: HTMLElement) {\n if (this._acc.sessionState.textSize >= 3) {\n this._acc.resetTextSize();\n } else {\n this._acc.alterTextSize(true);\n }\n if (btn) this.updateCycleButton(btn, this._acc.sessionState.textSize, 3);\n }\n decreaseText() { this._acc.alterTextSize(false); }\n increaseTextSpacing(_destroy?: boolean, btn?: HTMLElement) {\n if (this._acc.sessionState.textSpace >= 3) {\n this._acc.resetTextSpace();\n } else {\n this._acc.alterTextSpace(true);\n }\n if (btn) this.updateCycleButton(btn, this._acc.sessionState.textSpace, 3);\n }\n decreaseTextSpacing() { this._acc.alterTextSpace(false); }\n increaseLineHeight(_destroy?: boolean, btn?: HTMLElement) {\n if (this._acc.sessionState.lineHeight >= 3) {\n this._acc.resetLineHeight();\n } else {\n this._acc.alterLineHeight(true);\n }\n if (btn) this.updateCycleButton(btn, this._acc.sessionState.lineHeight, 3);\n }\n decreaseLineHeight() { this._acc.alterLineHeight(false); }\n\n invertColors(destroy?: boolean) {\n const counterClass = '_access-invert-counter';\n const removeCounter = () => document.querySelector('.' + counterClass)?.remove();\n\n if (typeof this._acc.stateValues.html.backgroundColor === 'undefined')\n this._acc.stateValues.html.backgroundColor = getComputedStyle(this._acc.html).backgroundColor;\n if (typeof this._acc.stateValues.html.color === 'undefined')\n this._acc.stateValues.html.color = getComputedStyle(this._acc.html).color;\n\n if (destroy) {\n this._acc.resetIfDefined(this._acc.stateValues.html.backgroundColor, this._acc.html.style, 'backgroundColor');\n this._acc.resetIfDefined(this._acc.stateValues.html.color, this._acc.html.style, 'color');\n if (!this._acc.options.suppressDomInjection)\n this._acc.menu.querySelector('[data-access-action=\"invertColors\"]')?.classList.remove('active');\n this._acc.stateValues.invertColors = false;\n this._acc.sessionState.invertColors = false;\n this._acc.onChange(true);\n this._acc.html.style.filter = '';\n removeCounter();\n return;\n }\n\n if (!this._acc.options.suppressDomInjection)\n this._acc.menu.querySelector('[data-access-action=\"invertColors\"]')?.classList.toggle('active');\n this._acc.stateValues.invertColors = !this._acc.stateValues.invertColors;\n this._acc.sessionState.invertColors = this._acc.stateValues.invertColors!;\n this._acc.onChange(true);\n\n if (this._acc.stateValues.invertColors) {\n if (this._acc.stateValues.grayHues) this._acc.menuInterface.grayHues(true);\n this._acc.html.style.filter = 'invert(1)';\n this._acc.common.injectStyle('._access { filter: invert(1) !important; }', { className: counterClass });\n this._acc.common.deployedObjects.set('.' + counterClass, false);\n if (this._acc.stateValues.textToSpeech) this._acc.textToSpeech('Colors Inverted');\n } else {\n this._acc.html.style.filter = '';\n removeCounter();\n if (this._acc.stateValues.textToSpeech) this._acc.textToSpeech('Colors Set To Normal');\n }\n }\n\n grayHues(destroy?: boolean) {\n const overlayClass = '_access-gray-overlay';\n const removeOverlay = () => {\n document.querySelector('.' + overlayClass)?.remove();\n };\n\n if (destroy) {\n if (!this._acc.options.suppressDomInjection)\n this._acc.menu.querySelector('[data-access-action=\"grayHues\"]')?.classList.remove('active');\n this._acc.stateValues.grayHues = false;\n this._acc.sessionState.grayHues = false;\n this._acc.onChange(true);\n removeOverlay();\n return;\n }\n\n if (!this._acc.options.suppressDomInjection)\n this._acc.menu.querySelector('[data-access-action=\"grayHues\"]')?.classList.toggle('active');\n this._acc.stateValues.grayHues = !this._acc.stateValues.grayHues;\n this._acc.sessionState.grayHues = this._acc.stateValues.grayHues!;\n this._acc.onChange(true);\n\n if (this._acc.stateValues.grayHues) {\n if (this._acc.stateValues.invertColors) this.invertColors(true);\n const overlay = document.createElement('div');\n overlay.className = overlayClass;\n overlay.style.cssText = 'position:fixed;inset:0;z-index:9998;backdrop-filter:grayscale(1);-webkit-backdrop-filter:grayscale(1);pointer-events:none;';\n document.body.appendChild(overlay);\n this._acc.common.deployedObjects.set('.' + overlayClass, false);\n if (this._acc.stateValues.textToSpeech) this._acc.textToSpeech('Gray Hues Enabled.');\n } else {\n removeOverlay();\n if (this._acc.stateValues.textToSpeech) this._acc.textToSpeech('Gray Hues Disabled.');\n }\n }\n\n underlineLinks(destroy?: boolean) {\n const className = '_access-underline';\n const remove = () => {\n const style = document.querySelector('.' + className);\n if (style) {\n style.parentElement!.removeChild(style);\n this._acc.common.deployedObjects.remove('.' + className);\n }\n };\n\n if (destroy) {\n this._acc.stateValues.underlineLinks = false;\n this._acc.sessionState.underlineLinks = false;\n this._acc.onChange(true);\n if (!this._acc.options.suppressDomInjection)\n this._acc.menu.querySelector('[data-access-action=\"underlineLinks\"]')?.classList.remove('active');\n return remove();\n }\n\n if (!this._acc.options.suppressDomInjection)\n this._acc.menu.querySelector('[data-access-action=\"underlineLinks\"]')?.classList.toggle('active');\n this._acc.stateValues.underlineLinks = !this._acc.stateValues.underlineLinks;\n this._acc.sessionState.underlineLinks = this._acc.stateValues.underlineLinks;\n this._acc.onChange(true);\n\n if (this._acc.stateValues.underlineLinks) {\n const parts = (this._acc.options.linkSelector ?? 'a').split(',').map(s => s.trim());\n const rules = parts.flatMap(s => [`body ${s}`, `body ${s} *`]).join(', ');\n this._acc.common.injectStyle(`${rules} { text-decoration: underline !important; }`, { className });\n this._acc.common.deployedObjects.set('.' + className, true);\n if (this._acc.stateValues.textToSpeech) this._acc.textToSpeech('Links UnderLined');\n } else {\n if (this._acc.stateValues.textToSpeech) this._acc.textToSpeech('Links UnderLine Removed');\n remove();\n }\n }\n\n bigCursor(destroy?: boolean) {\n if (destroy) {\n this._acc.html.classList.remove('_access_cursor');\n if (!this._acc.options.suppressDomInjection)\n this._acc.menu.querySelector('[data-access-action=\"bigCursor\"]')?.classList.remove('active');\n this._acc.stateValues.bigCursor = false;\n this._acc.sessionState.bigCursor = false;\n this._acc.onChange(true);\n return;\n }\n\n if (!this._acc.options.suppressDomInjection)\n this._acc.menu.querySelector('[data-access-action=\"bigCursor\"]')?.classList.toggle('active');\n this._acc.stateValues.bigCursor = !this._acc.stateValues.bigCursor;\n this._acc.sessionState.bigCursor = this._acc.stateValues.bigCursor;\n this._acc.onChange(true);\n this._acc.html.classList.toggle('_access_cursor');\n if (this._acc.stateValues.textToSpeech)\n this._acc.textToSpeech(this._acc.stateValues.bigCursor ? 'Big Cursor Enabled' : 'Big Cursor Disabled');\n }\n\n readingGuide(destroy?: boolean) {\n if (destroy) {\n document.getElementById('access_read_guide_bar')?.remove();\n if (!this._acc.options.suppressDomInjection)\n this._acc.menu.querySelector('[data-access-action=\"readingGuide\"]')?.classList.remove('active');\n this._acc.stateValues.readingGuide = false;\n this._acc.sessionState.readingGuide = false;\n this._acc.onChange(true);\n document.body.removeEventListener('touchmove', this._acc.updateReadGuide, false);\n document.body.removeEventListener('mousemove', this._acc.updateReadGuide, false);\n return;\n }\n\n if (!this._acc.options.suppressDomInjection)\n this._acc.menu.querySelector('[data-access-action=\"readingGuide\"]')?.classList.toggle('active');\n this._acc.stateValues.readingGuide = !this._acc.stateValues.readingGuide;\n this._acc.sessionState.readingGuide = this._acc.stateValues.readingGuide;\n this._acc.onChange(true);\n\n if (this._acc.stateValues.readingGuide) {\n const read = document.createElement('div');\n read.id = 'access_read_guide_bar';\n read.classList.add('access_read_guide_bar');\n document.body.append(read);\n document.body.addEventListener('touchmove', this._acc.updateReadGuide, false);\n document.body.addEventListener('mousemove', this._acc.updateReadGuide, false);\n } else {\n document.getElementById('access_read_guide_bar')?.remove();\n document.body.removeEventListener('touchmove', this._acc.updateReadGuide, false);\n document.body.removeEventListener('mousemove', this._acc.updateReadGuide, false);\n if (this._acc.stateValues.textToSpeech) this._acc.textToSpeech('Reading Guide Disabled');\n }\n }\n\n textToSpeech(destroy?: boolean) {\n const tSpeechList = this._acc.menu.querySelector('[data-access-action=\"textToSpeech\"]');\n if (!tSpeechList) return;\n\n const step1 = document.getElementsByClassName('screen-reader-wrapper-step-1');\n const step2 = document.getElementsByClassName('screen-reader-wrapper-step-2');\n const step3 = document.getElementsByClassName('screen-reader-wrapper-step-3');\n this._acc.onChange(false);\n\n const className = '_access-text-to-speech';\n const remove = () => {\n const style = document.querySelector('.' + className);\n if (style) {\n style.parentElement!.removeChild(style);\n document.removeEventListener('click', this.readBind, false);\n document.removeEventListener('keyup', this.readBind, false);\n this._acc.common.deployedObjects.remove('.' + className);\n }\n window.speechSynthesis?.cancel();\n this._acc.isReading = false;\n };\n\n if (destroy) {\n tSpeechList.classList.remove('active');\n step1[0]?.classList.remove('active');\n step2[0]?.classList.remove('active');\n step3[0]?.classList.remove('active');\n this._acc.stateValues.textToSpeech = false;\n window.speechSynthesis?.cancel();\n return remove();\n }\n\n if (this._acc.stateValues.speechRate === 1 && !tSpeechList.classList.contains('active')) {\n this._acc.stateValues.textToSpeech = true;\n this._acc.textToSpeech('Screen Reader enabled. Reading Pace - Normal');\n tSpeechList.classList.add('active');\n step1[0]?.classList.add('active');\n step2[0]?.classList.add('active');\n step3[0]?.classList.add('active');\n } else if (this._acc.stateValues.speechRate === 1 && tSpeechList.classList.contains('active')) {\n this._acc.stateValues.speechRate = 1.5;\n this._acc.textToSpeech('Reading Pace - Fast');\n step1[0]?.classList.remove('active');\n } else if (this._acc.stateValues.speechRate === 1.5 && tSpeechList.classList.contains('active')) {\n this._acc.stateValues.speechRate = 0.7;\n this._acc.textToSpeech('Reading Pace - Slow');\n step2[0]?.classList.remove('active');\n } else {\n this._acc.stateValues.speechRate = 1;\n this._acc.textToSpeech('Screen Reader - Disabled');\n tSpeechList.classList.remove('active');\n step3[0]?.classList.remove('active');\n const timeout = setInterval(() => {\n if (this._acc.isReading) return;\n this._acc.stateValues.textToSpeech = false;\n remove();\n clearTimeout(timeout);\n }, 500);\n return;\n }\n\n if (tSpeechList.classList.contains('active') && this._acc.stateValues.speechRate === 1) {\n this._acc.common.injectStyle('*:hover { box-shadow: 2px 2px 2px rgba(180,180,180,0.7); }', { className });\n this._acc.common.deployedObjects.set('.' + className, true);\n document.addEventListener('click', this.readBind, false);\n document.addEventListener('keyup', this.readBind, false);\n }\n }\n\n speechToText(destroy?: boolean) {\n const sTextList = this._acc.menu.querySelector('[data-access-action=\"speechToText\"]');\n if (!sTextList) return;\n\n this._acc.onChange(false);\n const className = '_access-speech-to-text';\n const remove = () => {\n this._acc.recognition?.stop?.();\n this._acc.body.classList.remove('_access-listening');\n document.querySelector('.' + className)?.parentElement?.removeChild(document.querySelector('.' + className)!);\n this._acc.common.deployedObjects.remove('.' + className);\n document.querySelectorAll('._access-mic').forEach(input => {\n input.removeEventListener('focus', this._acc.listen.bind(this._acc), false);\n input.classList.remove('_access-mic');\n });\n sTextList.classList.remove('active');\n };\n\n if (destroy) {\n this._acc.stateValues.speechToText = false;\n return remove();\n }\n\n this._acc.stateValues.speechToText = !this._acc.stateValues.speechToText;\n if (this._acc.stateValues.speechToText) {\n const iconContent = !this._acc.options.icon?.useEmojis ? '\"mic\"' : 'var(--_access-menu-item-icon-mic,\"🎤\")';\n const fontFamily = !this._acc.options.icon?.useEmojis\n ? `font-family: var(--_access-menu-item-icon-font-family-after, ${this._acc.fixedDefaultFont});`\n : '';\n const css = `\n body:after {\n content: ${iconContent};\n ${fontFamily}\n position: fixed; z-index: 1100; top: 1vw; right: 1vw;\n width: 36px; height: 36px; font-size: 30px; line-height: 36px;\n border-radius: 50%; background: rgba(255,255,255,0.7);\n display: flex; justify-content: center; align-items: center;\n }\n body._access-listening:after { animation: _access-listening-animation 2s infinite ease; }\n @keyframes _access-listening-animation {\n 0% { background-color: transparent; }\n 50% { background-color: #EF9A9A; }\n }\n `;\n this._acc.common.injectStyle(css, { className });\n this._acc.common.deployedObjects.set('.' + className, true);\n document.querySelectorAll('input[type=\"text\"], input[type=\"email\"], input[type=\"tel\"], input[type=\"search\"], textarea, [contenteditable]').forEach(input => {\n input.addEventListener('blur', () => this._acc.recognition?.stop?.(), false);\n input.addEventListener('focus', this._acc.listen.bind(this._acc), false);\n input.parentElement!.classList.add('_access-mic');\n });\n sTextList.classList.add('active');\n } else {\n remove();\n }\n }\n\n disableAnimations(destroy?: boolean) {\n const className = '_access-disable-animations';\n const autoplayStopped = 'data-autoplay-stopped';\n\n const remove = () => {\n if (!this._acc.options.suppressDomInjection)\n this._acc.menu.querySelector('[data-access-action=\"disableAnimations\"]')?.classList.remove('active');\n this._acc.stateValues.disableAnimations = false;\n document.querySelector('.' + className)?.parentElement?.removeChild(document.querySelector('.' + className)!);\n this._acc.common.deployedObjects.remove('.' + className);\n (document.querySelectorAll('[data-org-src]') as NodeListOf<HTMLImageElement>).forEach(img => {\n const screenshot = img.src;\n img.setAttribute('src', img.getAttribute('data-org-src')!);\n img.setAttribute('data-org-src', screenshot);\n });\n (document.querySelectorAll(`video[${autoplayStopped}]`) as NodeListOf<HTMLVideoElement>).forEach(v => {\n v.setAttribute('autoplay', '');\n v.removeAttribute(autoplayStopped);\n v.play();\n });\n };\n\n if (destroy) { remove(); return; }\n\n this._acc.stateValues.disableAnimations = !this._acc.stateValues.disableAnimations;\n if (!this._acc.stateValues.disableAnimations) { remove(); return; }\n\n if (!this._acc.options.suppressDomInjection)\n this._acc.menu.querySelector('[data-access-action=\"disableAnimations\"]')?.classList.add('active');\n\n this._acc.common.injectStyle(\n 'body * { animation-duration: 0.0ms !important; transition-duration: 0.0ms !important; }',\n { className }\n );\n this._acc.common.deployedObjects.set('.' + className, true);\n\n (document.querySelectorAll('img') as NodeListOf<HTMLImageElement>).forEach(async img => {\n const ext = this._acc.common.getFileExtension(img.src);\n if (ext?.toLowerCase() === 'gif') {\n let screenshot = img.getAttribute('data-org-src');\n if (!screenshot) screenshot = await this._acc.common.createScreenshot(img.src);\n img.setAttribute('data-org-src', img.src);\n img.src = screenshot!;\n }\n });\n\n (document.querySelectorAll('video[autoplay]') as NodeListOf<HTMLVideoElement>).forEach(v => {\n v.setAttribute(autoplayStopped, '');\n v.removeAttribute('autoplay');\n v.pause();\n });\n }\n\n iframeModals(destroy?: boolean, button?: HTMLElement) {\n if (!button) destroy = true;\n const close = () => {\n if (this._dialog) {\n this._dialog.classList.add('closing');\n setTimeout(() => {\n this._dialog.classList.remove('closing');\n this._dialog.close();\n this._dialog.remove();\n detach();\n }, 350);\n }\n button?.classList.remove('active');\n };\n const onClose = () => close();\n const detach = () => {\n this._dialog?.querySelector('button')?.removeEventListener('click', onClose, false);\n this._dialog?.removeEventListener('close', onClose);\n };\n\n if (destroy) { close(); return; }\n\n button!.classList.add('active');\n if (!this._dialog) this._dialog = document.createElement('dialog');\n this._dialog.classList.add('_access');\n this._dialog.innerHTML = '';\n this._dialog.appendChild(this._acc.common.jsonToHtml({\n type: 'div',\n children: [\n {\n type: 'div',\n children: [{\n type: 'button',\n attrs: {\n role: 'button',\n class: this._acc.options.icon?.useEmojis ? '' : (this._acc.options.icon?.fontClass ?? ''),\n style: 'position:absolute;top:5px;cursor:pointer;font-size:24px!important;font-weight:bold;background:transparent;border:none;left:5px;color:#d63c3c;padding:0;',\n },\n children: [{ type: '#text', text: this._acc.options.icon?.useEmojis ? 'X' : 'close' }],\n }],\n },\n {\n type: 'div',\n children: [{\n type: 'iframe',\n attrs: { src: button!.getAttribute('data-access-url'), style: 'width:50vw;height:50vh;padding:30px;' },\n }],\n },\n ],\n }));\n document.body.appendChild(this._dialog);\n this._dialog.querySelector('button')!.addEventListener('click', onClose, false);\n this._dialog.addEventListener('close', onClose);\n this._dialog.showModal();\n }\n\n customFunctions(destroy?: boolean, button?: HTMLElement) {\n if (!button) return;\n const cf = this._acc.options.customFunctions![parseInt(button.getAttribute('data-access-custom-index')!)];\n if (cf.toggle && button.classList.contains('active')) destroy = true;\n if (destroy) {\n if (cf.toggle) button.classList.remove('active');\n cf.method(cf, false);\n } else {\n if (cf.toggle) button.classList.add('active');\n cf.method(cf, true);\n }\n }\n\n dyslexicFont(destroy?: boolean) {\n const className = '_access-dyslexic-font';\n const btn = this._acc.menu.querySelector('[data-access-action=\"dyslexicFont\"]');\n\n if (destroy) {\n this._acc.stateValues.dyslexicFont = false;\n btn?.classList.remove('active');\n document.querySelector('.' + className)?.remove();\n return;\n }\n\n this._acc.stateValues.dyslexicFont = !this._acc.stateValues.dyslexicFont;\n btn?.classList.toggle('active');\n\n if (this._acc.stateValues.dyslexicFont) {\n this._acc.common.injectStyle(`\n @font-face {\n font-family: 'OpenDyslexic';\n src: url('https://cdn.jsdelivr.net/npm/open-dyslexic@1.0.3/open-dyslexic-regular.woff2') format('woff2');\n font-weight: normal; font-style: normal;\n }\n body *:not(._access):not(._access *) { font-family: OpenDyslexic, Arial, sans-serif !important; }\n `, { className });\n this._acc.common.deployedObjects.set('.' + className, false);\n } else {\n document.querySelector('.' + className)?.remove();\n }\n }\n\n hideImages(destroy?: boolean) {\n const className = '_access-hide-images';\n const btn = this._acc.menu.querySelector('[data-access-action=\"hideImages\"]');\n\n if (destroy) {\n this._acc.stateValues.hideImages = false;\n btn?.classList.remove('active');\n document.querySelector('.' + className)?.remove();\n return;\n }\n\n this._acc.stateValues.hideImages = !this._acc.stateValues.hideImages;\n btn?.classList.toggle('active');\n\n if (this._acc.stateValues.hideImages) {\n this._acc.common.injectStyle(\n 'img, picture, svg:not(._access svg) { visibility: hidden !important; } *:not(._access):not(._access *) { background-image: none !important; }',\n { className }\n );\n this._acc.common.deployedObjects.set('.' + className, false);\n } else {\n document.querySelector('.' + className)?.remove();\n }\n }\n}\n","'use strict';\n\nexport class Storage {\n has(key: string): boolean {\n return Object.prototype.hasOwnProperty.call(window.localStorage, key);\n }\n\n set(key: string, value: any): void {\n window.localStorage.setItem(key, JSON.stringify(value));\n }\n\n get(key: string): any {\n const item = window.localStorage.getItem(key);\n try { return JSON.parse(item!); } catch { return item; }\n }\n\n clear(): void {\n window.localStorage.clear();\n }\n\n remove(key: string): void {\n window.localStorage.removeItem(key);\n }\n\n isSupported(): boolean {\n const test = '_test';\n try {\n localStorage.setItem(test, test);\n localStorage.removeItem(test);\n return true;\n } catch {\n return false;\n }\n }\n}\n","export interface AccessibilityTheme {\n /** Cor principal do ícone e botões ativos */\n primaryColor?: string;\n /** Cor de fundo do menu */\n menuBackground?: string;\n /** Cor do texto no menu */\n menuColor?: string;\n /** Cor de fundo do ícone flutuante */\n iconBackground?: string;\n /** Cor do ícone flutuante */\n iconColor?: string;\n /** Largura do menu (ex: '300px', '25vw') */\n menuWidth?: string;\n /** Border radius do menu e ícone */\n borderRadius?: string;\n /** Família de fonte do menu */\n fontFamily?: string;\n /** Cor do texto dos itens do menu */\n itemColor?: string;\n /** Cor de fundo dos botões do menu */\n itemButtonBackground?: string;\n /** Cor ao passar o mouse nos botões */\n itemButtonHoverBackground?: string;\n /** Cor dos ícones dos itens */\n itemIconColor?: string;\n /** Sombra do ícone flutuante */\n iconBoxShadow?: string;\n /** Altura do menu */\n menuHeight?: string;\n /** Altura máxima do menu */\n menuMaxHeight?: string;\n /** Posição top do menu */\n menuTop?: string;\n}\n\nconst VAR_MAP: Record<keyof AccessibilityTheme, string | string[]> = {\n primaryColor: ['--_access-icon-bg', '--_access-menu-item-button-active-background-color'],\n menuBackground: '--_access-menu-background-color',\n menuColor: '--_access-menu-color',\n iconBackground: '--_access-icon-bg',\n iconColor: '--_access-icon-color',\n menuWidth: '--_access-menu-width',\n borderRadius: ['--_access-menu-border-radius', '--_access-icon-border-radius', '--_access-menu-item-button-border-radius'],\n fontFamily: '--_access-menu-font-family',\n itemColor: '--_access-menu-item-color',\n itemButtonBackground: '--_access-menu-item-button-background',\n itemButtonHoverBackground: '--_access-menu-item-button-hover-background-color',\n itemIconColor: '--_access-menu-item-icon-color',\n iconBoxShadow: '--_access-icon-box-shadow',\n menuHeight: '--_access-menu-height',\n menuMaxHeight: '--_access-menu-max-height',\n menuTop: '--_access-menu-top',\n};\n\nexport function createThemeCss(theme: AccessibilityTheme): string {\n const declarations: string[] = [];\n for (const [key, value] of Object.entries(theme) as [keyof AccessibilityTheme, string][]) {\n if (!value) continue;\n const vars = VAR_MAP[key];\n if (!vars) continue;\n const varList = Array.isArray(vars) ? vars : [vars];\n varList.forEach(v => declarations.push(` ${v}: ${value};`));\n }\n return `:root {\\n${declarations.join('\\n')}\\n}`;\n}\n\nexport function applyTheme(theme: AccessibilityTheme): void {\n const css = createThemeCss(theme);\n const id = 'accessibility-widget-theme';\n const existing = document.getElementById(id);\n if (existing) { existing.textContent = css; return; }\n const style = document.createElement('style');\n style.id = id;\n style.textContent = css;\n document.head.appendChild(style);\n}\n\nexport function removeTheme(): void {\n document.getElementById('accessibility-widget-theme')?.remove();\n}\n","import { IAccessibilityMenuLabelsOptions } from '../interfaces/accessibility.interface';\n\nexport const ptBRLabels: IAccessibilityMenuLabelsOptions = {\n resetTitle: 'Resetar',\n closeTitle: 'Fechar',\n menuTitle: 'Menu de Acessibilidade',\n increaseText: 'Aumentar texto',\n decreaseText: 'Diminuir texto',\n increaseTextSpacing: 'Aumentar espaçamento',\n decreaseTextSpacing: 'Diminuir espaçamento',\n invertColors: 'Inverter cores',\n grayHues: 'Tons de cinza',\n bigCursor: 'Cursor grande',\n readingGuide: 'Guia de leitura',\n underlineLinks: 'Sublinhar links',\n textToSpeech: 'Texto para fala',\n speechToText: 'Fala para texto',\n disableAnimations: 'Desativar animações',\n increaseLineHeight: 'Aumentar altura de linha',\n decreaseLineHeight: 'Diminuir altura de linha',\n hotkeyPrefix: 'Atalho: ',\n dyslexicFont: 'Fonte para dislexia',\n hideImages: 'Ocultar imagens',\n};\n","import { ICustomFunction } from '../interfaces/accessibility.interface';\n\nexport interface CreateModuleConfig {\n /** ID único do módulo */\n id: string;\n /** Texto exibido no botão */\n label: string;\n /** Ícone Material Icons (quando não usa emojis) */\n icon?: string;\n /** Emoji (quando usa emojis) */\n emoji?: string;\n /** Se true, o botão alterna entre ativo/inativo */\n toggle?: boolean;\n /** Chamado quando o módulo é ativado */\n onActivate: () => void;\n /** Chamado quando o módulo é desativado (apenas se toggle = true) */\n onDeactivate?: () => void;\n}\n\nexport function createModule(config: CreateModuleConfig): ICustomFunction {\n return {\n id: config.id,\n buttonText: config.label,\n icon: config.icon,\n emoji: config.emoji,\n toggle: config.toggle ?? true,\n method: (_cf: ICustomFunction, active: boolean) => {\n if (active) config.onActivate();\n else config.onDeactivate?.();\n },\n };\n}\n\nexport interface CreateModuleGroupConfig {\n modules: CreateModuleConfig[];\n}\n\nexport function createModules(configs: CreateModuleConfig[]): ICustomFunction[] {\n return configs.map(createModule);\n}\n","import Accessibility from './main';\nimport {\n IAccessibility,\n IAccessibilityOptions,\n IAccessibilityIconOptions,\n IAccessibilityIconPositionOptions,\n IAccessibilityIconDimensionsOptions,\n IAccessibilityHotkeysOptions,\n IAccessibilityHotkeysKeysOptions,\n IAccessibilityGuideOptions,\n IAccessibilityMenuDimensionsOptions,\n IAccessibilityMenuLabelsOptions,\n IAccessibilityModulesOptions,\n IAccessibilityAnimationsOptions,\n IAccessibilitySessionOptions,\n ISessionState,\n IStateValues,\n ICustomFunction,\n IIframeModal,\n AccessibilityModulesType,\n} from './interfaces/accessibility.interface';\nimport { IMenuInterface } from './interfaces/menu.interface';\nimport { AccessibilityTheme, applyTheme, createThemeCss, removeTheme } from './theme';\nimport { ptBRLabels } from './presets/pt-br';\nimport { createModule, createModules, CreateModuleConfig } from './presets/modules';\n\nif (typeof window !== 'undefined') {\n (window as any).Accessibility = Accessibility;\n}\n\nexport {\n Accessibility,\n // interfaces\n IAccessibility,\n IAccessibilityOptions,\n IAccessibilityIconOptions,\n IAccessibilityIconPositionOptions,\n IAccessibilityIconDimensionsOptions,\n IAccessibilityHotkeysOptions,\n IAccessibilityHotkeysKeysOptions,\n IAccessibilityGuideOptions,\n IAccessibilityMenuDimensionsOptions,\n IAccessibilityMenuLabelsOptions,\n IAccessibilityModulesOptions,\n IAccessibilityAnimationsOptions,\n IAccessibilitySessionOptions,\n ISessionState,\n IStateValues,\n ICustomFunction,\n IIframeModal,\n IMenuInterface,\n AccessibilityModulesType,\n // theming\n AccessibilityTheme,\n applyTheme,\n createThemeCss,\n removeTheme,\n // presets\n ptBRLabels,\n createModule,\n createModules,\n CreateModuleConfig,\n};\n\nexport default Accessibility;\n"],"mappings":"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","names":["AccessibilityModulesType","_a","_b","_c","_a","e","_a"]}
|
package/package.json
ADDED
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "ufc-itapaje-accessibility",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "Widget de acessibilidade customizável com suporte a temas, fonte para dislexia, ocultar imagens e módulos extras.",
|
|
5
|
+
"main": "dist/index.js",
|
|
6
|
+
"module": "dist/index.mjs",
|
|
7
|
+
"types": "dist/index.d.ts",
|
|
8
|
+
"unpkg": "dist/index.global.js",
|
|
9
|
+
"jsdelivr": "dist/index.global.js",
|
|
10
|
+
"exports": {
|
|
11
|
+
".": {
|
|
12
|
+
"types": "./dist/index.d.ts",
|
|
13
|
+
"import": "./dist/index.mjs",
|
|
14
|
+
"require": "./dist/index.js"
|
|
15
|
+
}
|
|
16
|
+
},
|
|
17
|
+
"files": ["dist"],
|
|
18
|
+
"scripts": {
|
|
19
|
+
"build": "tsup",
|
|
20
|
+
"dev": "tsup --watch",
|
|
21
|
+
"typecheck": "tsc --noEmit"
|
|
22
|
+
},
|
|
23
|
+
"devDependencies": {
|
|
24
|
+
"tsup": "^8.4.0",
|
|
25
|
+
"typescript": "^5.8.0"
|
|
26
|
+
},
|
|
27
|
+
"peerDependencies": {
|
|
28
|
+
"regenerator-runtime": "^0.14.1"
|
|
29
|
+
},
|
|
30
|
+
"peerDependenciesMeta": {
|
|
31
|
+
"regenerator-runtime": { "optional": true }
|
|
32
|
+
},
|
|
33
|
+
"keywords": ["accessibility", "a11y", "widget", "wcag", "ufc", "dyslexia", "screen-reader"],
|
|
34
|
+
"author": "João Bruno Sousa",
|
|
35
|
+
"license": "MIT",
|
|
36
|
+
"repository": {
|
|
37
|
+
"type": "git",
|
|
38
|
+
"url": "https://github.com/JBrunoS/ufc-itapaje-accessibility"
|
|
39
|
+
}
|
|
40
|
+
}
|