@yaronelh/accessibilitytool 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (82) hide show
  1. package/CHANGELOG.md +162 -0
  2. package/LICENSE +21 -0
  3. package/README.md +373 -0
  4. package/dist/common.d.ts +22 -0
  5. package/dist/common.js +215 -0
  6. package/dist/common.js.map +1 -0
  7. package/dist/core/event-utils.d.ts +2 -0
  8. package/dist/core/event-utils.js +15 -0
  9. package/dist/core/event-utils.js.map +1 -0
  10. package/dist/core/hotkeys.d.ts +3 -0
  11. package/dist/core/hotkeys.js +35 -0
  12. package/dist/core/hotkeys.js.map +1 -0
  13. package/dist/core/icon-assets.d.ts +13 -0
  14. package/dist/core/icon-assets.js +148 -0
  15. package/dist/core/icon-assets.js.map +1 -0
  16. package/dist/core/options.d.ts +6 -0
  17. package/dist/core/options.js +58 -0
  18. package/dist/core/options.js.map +1 -0
  19. package/dist/core/security.d.ts +3 -0
  20. package/dist/core/security.js +45 -0
  21. package/dist/core/security.js.map +1 -0
  22. package/dist/core/session.d.ts +14 -0
  23. package/dist/core/session.js +43 -0
  24. package/dist/core/session.js.map +1 -0
  25. package/dist/interfaces/accessibility.interface.d.ts +208 -0
  26. package/dist/interfaces/accessibility.interface.js +23 -0
  27. package/dist/interfaces/accessibility.interface.js.map +1 -0
  28. package/dist/interfaces/common.interface.d.ts +39 -0
  29. package/dist/interfaces/common.interface.js +3 -0
  30. package/dist/interfaces/common.interface.js.map +1 -0
  31. package/dist/interfaces/menu.interface.d.ts +18 -0
  32. package/dist/interfaces/menu.interface.js +3 -0
  33. package/dist/interfaces/menu.interface.js.map +1 -0
  34. package/dist/main.d.ts +84 -0
  35. package/dist/main.js +1771 -0
  36. package/dist/main.js.map +1 -0
  37. package/dist/menu-interface.d.ts +24 -0
  38. package/dist/menu-interface.js +561 -0
  39. package/dist/menu-interface.js.map +1 -0
  40. package/dist/storage.d.ts +9 -0
  41. package/dist/storage.js +40 -0
  42. package/dist/storage.js.map +1 -0
  43. package/dist-cjs/common.d.ts +22 -0
  44. package/dist-cjs/common.js +215 -0
  45. package/dist-cjs/common.js.map +1 -0
  46. package/dist-cjs/core/event-utils.d.ts +2 -0
  47. package/dist-cjs/core/event-utils.js +15 -0
  48. package/dist-cjs/core/event-utils.js.map +1 -0
  49. package/dist-cjs/core/hotkeys.d.ts +3 -0
  50. package/dist-cjs/core/hotkeys.js +35 -0
  51. package/dist-cjs/core/hotkeys.js.map +1 -0
  52. package/dist-cjs/core/icon-assets.d.ts +13 -0
  53. package/dist-cjs/core/icon-assets.js +148 -0
  54. package/dist-cjs/core/icon-assets.js.map +1 -0
  55. package/dist-cjs/core/options.d.ts +6 -0
  56. package/dist-cjs/core/options.js +58 -0
  57. package/dist-cjs/core/options.js.map +1 -0
  58. package/dist-cjs/core/security.d.ts +3 -0
  59. package/dist-cjs/core/security.js +45 -0
  60. package/dist-cjs/core/security.js.map +1 -0
  61. package/dist-cjs/core/session.d.ts +14 -0
  62. package/dist-cjs/core/session.js +43 -0
  63. package/dist-cjs/core/session.js.map +1 -0
  64. package/dist-cjs/interfaces/accessibility.interface.d.ts +208 -0
  65. package/dist-cjs/interfaces/accessibility.interface.js +23 -0
  66. package/dist-cjs/interfaces/accessibility.interface.js.map +1 -0
  67. package/dist-cjs/interfaces/common.interface.d.ts +39 -0
  68. package/dist-cjs/interfaces/common.interface.js +3 -0
  69. package/dist-cjs/interfaces/common.interface.js.map +1 -0
  70. package/dist-cjs/interfaces/menu.interface.d.ts +18 -0
  71. package/dist-cjs/interfaces/menu.interface.js +3 -0
  72. package/dist-cjs/interfaces/menu.interface.js.map +1 -0
  73. package/dist-cjs/main.d.ts +84 -0
  74. package/dist-cjs/main.js +1771 -0
  75. package/dist-cjs/main.js.map +1 -0
  76. package/dist-cjs/menu-interface.d.ts +24 -0
  77. package/dist-cjs/menu-interface.js +561 -0
  78. package/dist-cjs/menu-interface.js.map +1 -0
  79. package/dist-cjs/storage.d.ts +9 -0
  80. package/dist-cjs/storage.js +40 -0
  81. package/dist-cjs/storage.js.map +1 -0
  82. package/package.json +82 -0
@@ -0,0 +1,22 @@
1
+ import { ICommon, IDeployedObjects, IFormattedDim, IInjectStyleOptions, IJsonToHtml } from './interfaces/common.interface.js';
2
+ export declare class Common implements ICommon {
3
+ static DEFAULT_PIXEL: string;
4
+ private body;
5
+ private deployedMap;
6
+ private _isIOS;
7
+ private _canvas;
8
+ constructor();
9
+ isIOS(): boolean;
10
+ jsonToHtml(obj: IJsonToHtml): HTMLElement;
11
+ injectStyle(css: string, innerOptions?: IInjectStyleOptions): HTMLStyleElement;
12
+ getFormattedDim(value: string): IFormattedDim;
13
+ extend(src: any, dest: any): any;
14
+ injectIconsFont(urls: Array<string>, callback: Function): void;
15
+ getFixedFont(name: string): any;
16
+ getFixedPseudoFont(name: string): any;
17
+ isFontLoaded(fontFamily?: string, callback?: Function): any;
18
+ warn(msg: string): void;
19
+ get deployedObjects(): IDeployedObjects;
20
+ createScreenshot(url: string): Promise<string>;
21
+ getFileExtension(filename: string): string;
22
+ }
@@ -0,0 +1,215 @@
1
+ 'use strict';
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Common = void 0;
4
+ const security_js_1 = require("./core/security.js");
5
+ class Common {
6
+ static DEFAULT_PIXEL = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAA1JREFUGFdj+P///38ACfsD/QVDRcoAAAAASUVORK5CYII=';
7
+ body;
8
+ deployedMap;
9
+ _isIOS;
10
+ _canvas;
11
+ constructor() {
12
+ this.body = document.body || document.querySelector('body');
13
+ this.deployedMap = new Map();
14
+ }
15
+ isIOS() {
16
+ if (typeof this._isIOS === 'boolean')
17
+ return this._isIOS;
18
+ const isIOS = () => {
19
+ const regex = new RegExp(/iPad|iPhone|iPod|iPad Simulator|iPhone Simulator|iPod Simulator/i);
20
+ // Use userAgentData if available, otherwise fallback to userAgent
21
+ if (navigator.userAgentData && navigator.userAgentData.platform) {
22
+ const platform = navigator.userAgentData.platform;
23
+ return regex.test(platform);
24
+ }
25
+ else if (navigator.userAgent) {
26
+ return regex.test(navigator.userAgent);
27
+ }
28
+ return false;
29
+ };
30
+ this._isIOS = isIOS();
31
+ return this._isIOS;
32
+ }
33
+ jsonToHtml(obj) {
34
+ let elm = document.createElement(obj.type);
35
+ const attrs = obj.attrs || {};
36
+ for (let i in attrs) {
37
+ const safeValue = (0, security_js_1.sanitizeDomAttribute)(obj.type.toLowerCase(), i, attrs[i]);
38
+ if (safeValue !== null)
39
+ elm.setAttribute(i, safeValue);
40
+ }
41
+ for (let i in obj.children || []) {
42
+ let newElem = null;
43
+ if (obj.children[i].type === '#text') {
44
+ newElem = document.createTextNode(obj.children[i].text);
45
+ }
46
+ else
47
+ newElem = this.jsonToHtml(obj.children[i]);
48
+ if ((newElem && newElem.tagName && newElem.tagName.toLowerCase() !== 'undefined') ||
49
+ newElem.nodeType === 3)
50
+ elm.appendChild(newElem);
51
+ }
52
+ return elm;
53
+ }
54
+ injectStyle(css, innerOptions = {}) {
55
+ let sheet = document.createElement('style');
56
+ sheet.appendChild(document.createTextNode(css));
57
+ if (innerOptions.className)
58
+ sheet.classList.add(innerOptions.className);
59
+ this.body.appendChild(sheet);
60
+ return sheet;
61
+ }
62
+ getFormattedDim(value) {
63
+ if (!value)
64
+ return null;
65
+ value = String(value);
66
+ let returnBySuffix = function (val, suffix) {
67
+ return {
68
+ size: val.substring(0, val.indexOf(suffix)),
69
+ suffix: suffix
70
+ };
71
+ };
72
+ if (value.indexOf('%') > -1)
73
+ return returnBySuffix(value, '%');
74
+ if (value.indexOf('px') > -1)
75
+ return returnBySuffix(value, 'px');
76
+ if (value.indexOf('em') > -1)
77
+ return returnBySuffix(value, 'em');
78
+ if (value.indexOf('rem') > -1)
79
+ return returnBySuffix(value, 'rem');
80
+ if (value.indexOf('pt') > -1)
81
+ return returnBySuffix(value, 'pt');
82
+ if (value === 'auto')
83
+ return returnBySuffix(value, '');
84
+ }
85
+ extend(src, dest) {
86
+ for (let i in src) {
87
+ if (typeof src[i] === 'object') {
88
+ if (dest && dest[i]) {
89
+ if (dest[i] instanceof Array)
90
+ src[i] = dest[i];
91
+ else
92
+ src[i] = this.extend(src[i], dest[i]);
93
+ }
94
+ }
95
+ else if (typeof dest === 'object' && typeof dest[i] !== 'undefined') {
96
+ src[i] = dest[i];
97
+ }
98
+ }
99
+ return src;
100
+ }
101
+ injectIconsFont(urls, callback) {
102
+ if (urls && urls.length) {
103
+ let head = document.getElementsByTagName('head')[0];
104
+ let counter = 0;
105
+ let hasErrors = false;
106
+ let onload = (e) => {
107
+ hasErrors = hasErrors || e.type === '';
108
+ if (!--counter)
109
+ callback(hasErrors);
110
+ };
111
+ urls.forEach((url) => {
112
+ let link = document.createElement('link');
113
+ link.type = 'text/css';
114
+ link.rel = 'stylesheet';
115
+ link.href = url;
116
+ link.className = `_access-font-icon-${counter++}`;
117
+ link.onload = onload;
118
+ link.onerror = onload;
119
+ this.deployedObjects.set('.' + link.className, true);
120
+ head.appendChild(link);
121
+ });
122
+ }
123
+ }
124
+ getFixedFont(name) {
125
+ if (this.isIOS())
126
+ return name.replaceAll(' ', '+');
127
+ return name;
128
+ }
129
+ getFixedPseudoFont(name) {
130
+ if (this.isIOS())
131
+ return name.replaceAll('+', ' ');
132
+ return name;
133
+ }
134
+ isFontLoaded(fontFamily, callback) {
135
+ try {
136
+ const onReady = () => {
137
+ return callback(document.fonts.check(`1em ${fontFamily.replaceAll('+', ' ')}`));
138
+ // return callback(document.fonts.check(`1em ${fontFamily}`));
139
+ };
140
+ document.fonts.ready.then(() => {
141
+ onReady();
142
+ }, () => {
143
+ onReady();
144
+ });
145
+ }
146
+ catch (e) {
147
+ return callback(true);
148
+ }
149
+ }
150
+ warn(msg) {
151
+ let prefix = 'Accessibility: ';
152
+ if (console.warn)
153
+ console.warn(prefix + msg);
154
+ else
155
+ console.log(prefix + msg);
156
+ }
157
+ get deployedObjects() {
158
+ return {
159
+ get: (key) => {
160
+ return this.deployedMap.get(key);
161
+ },
162
+ contains: (key) => {
163
+ return this.deployedMap.has(key);
164
+ },
165
+ set: (key, val) => {
166
+ this.deployedMap.set(key, val);
167
+ },
168
+ remove: (key) => {
169
+ this.deployedMap.delete(key);
170
+ },
171
+ getAll: () => {
172
+ return this.deployedMap;
173
+ }
174
+ };
175
+ }
176
+ createScreenshot(url) {
177
+ return new Promise((resolve, reject) => {
178
+ if (!this._canvas)
179
+ this._canvas = document.createElement('canvas');
180
+ const img = new Image();
181
+ this._canvas.style.position = 'fixed';
182
+ this._canvas.style.top = '0';
183
+ this._canvas.style.left = '0';
184
+ this._canvas.style.opacity = '0.05';
185
+ this._canvas.style.transform = 'scale(0.05)';
186
+ img.crossOrigin = 'anonymous';
187
+ img.onload = async () => {
188
+ document.body.appendChild(this._canvas);
189
+ const ctx = this._canvas.getContext('2d');
190
+ this._canvas.width = img.naturalWidth;
191
+ this._canvas.height = img.naturalHeight;
192
+ ctx.clearRect(0, 0, this._canvas.width, this._canvas.height);
193
+ // await this.setTimeout(1500);
194
+ ctx.drawImage(img, 0, 0);
195
+ let res = Common.DEFAULT_PIXEL;
196
+ try {
197
+ res = this._canvas.toDataURL('image/png');
198
+ }
199
+ catch (e) { }
200
+ resolve(res);
201
+ this._canvas.remove();
202
+ };
203
+ img.onerror = () => {
204
+ // Return a 1X1 pixels transparent image as a fallback
205
+ resolve(Common.DEFAULT_PIXEL);
206
+ };
207
+ img.src = url;
208
+ });
209
+ }
210
+ getFileExtension(filename) {
211
+ return filename.substring(filename.lastIndexOf('.') + 1, filename.length) || filename;
212
+ }
213
+ }
214
+ exports.Common = Common;
215
+ //# sourceMappingURL=common.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"common.js","sourceRoot":"","sources":["../src/common.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function isActivationEvent(event: Event | KeyboardEvent): boolean;
2
+ export declare function getEventTarget<T extends HTMLElement>(event?: Event | null): T;
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isActivationEvent = isActivationEvent;
4
+ exports.getEventTarget = getEventTarget;
5
+ function isActivationEvent(event) {
6
+ if (event.type === 'click')
7
+ return true;
8
+ if (!(event instanceof KeyboardEvent))
9
+ return true;
10
+ return event.key === 'Enter';
11
+ }
12
+ function getEventTarget(event) {
13
+ return (event?.target ?? null);
14
+ }
15
+ //# sourceMappingURL=event-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event-utils.js","sourceRoot":"","sources":["../../src/core/event-utils.ts"],"names":[],"mappings":";;AAAA,8CAKC;AAED,wCAEC;AATD,SAAgB,iBAAiB,CAAC,KAA4B;IAC7D,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO;QAAE,OAAO,IAAI,CAAC;IACxC,IAAI,CAAC,CAAC,KAAK,YAAY,aAAa,CAAC;QAAE,OAAO,IAAI,CAAC;IAEnD,OAAO,KAAK,CAAC,GAAG,KAAK,OAAO,CAAC;AAC9B,CAAC;AAED,SAAgB,cAAc,CAAwB,KAAoB;IACzE,OAAO,CAAE,KAAK,EAAE,MAAmB,IAAI,IAAI,CAAC,CAAC;AAC9C,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { IAccessibilityHotkeysOptions } from '../interfaces/accessibility.interface.js';
2
+ export declare function parseHotkeyLabel(hotkeys: IAccessibilityHotkeysOptions, hotkeyPrefix: string, arr: Array<any>): string;
3
+ export declare function findMatchingHotkey(keys: IAccessibilityHotkeysOptions['keys'], event: KeyboardEvent): [string, any];
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parseHotkeyLabel = parseHotkeyLabel;
4
+ exports.findMatchingHotkey = findMatchingHotkey;
5
+ function parseHotkeyLabel(hotkeys, hotkeyPrefix, arr) {
6
+ return hotkeys.enabled
7
+ ? hotkeys.helpTitles
8
+ ? hotkeyPrefix +
9
+ arr
10
+ .map(function (val) {
11
+ return Number.isInteger(val)
12
+ ? String.fromCharCode(val).toLowerCase()
13
+ : val.replace('Key', '');
14
+ })
15
+ .join('+')
16
+ : ''
17
+ : '';
18
+ }
19
+ function findMatchingHotkey(keys, event) {
20
+ return Object.entries(keys).find(function (entry) {
21
+ const [, combo] = entry;
22
+ let matches = true;
23
+ for (let i = 0; i < combo.length; i++) {
24
+ if (Number.isInteger(combo[i])) {
25
+ if (event.keyCode !== combo[i])
26
+ matches = false;
27
+ }
28
+ else if (event[combo[i]] !== true) {
29
+ matches = false;
30
+ }
31
+ }
32
+ return matches;
33
+ });
34
+ }
35
+ //# sourceMappingURL=hotkeys.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hotkeys.js","sourceRoot":"","sources":["../../src/core/hotkeys.ts"],"names":[],"mappings":";;AAEA,4CAiBC;AAED,gDAkBC;AArCD,SAAgB,gBAAgB,CAC/B,OAAqC,EACrC,YAAoB,EACpB,GAAe;IAEf,OAAO,OAAO,CAAC,OAAO;QACrB,CAAC,CAAC,OAAO,CAAC,UAAU;YACnB,CAAC,CAAC,YAAY;gBACb,GAAG;qBACD,GAAG,CAAC,UAAU,GAAG;oBACjB,OAAO,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC;wBAC3B,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE;wBACxC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;gBAC3B,CAAC,CAAC;qBACD,IAAI,CAAC,GAAG,CAAC;YACZ,CAAC,CAAC,EAAE;QACL,CAAC,CAAC,EAAE,CAAC;AACP,CAAC;AAED,SAAgB,kBAAkB,CACjC,IAA0C,EAC1C,KAAoB;IAEpB,OAAO,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,KAAK;QAC/C,MAAM,CAAC,EAAE,KAAK,CAAC,GAAG,KAAK,CAAC;QACxB,IAAI,OAAO,GAAG,IAAI,CAAC;QAEnB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACvC,IAAI,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBAChC,IAAI,KAAK,CAAC,OAAO,KAAK,KAAK,CAAC,CAAC,CAAC;oBAAE,OAAO,GAAG,KAAK,CAAC;YACjD,CAAC;iBAAM,IAAK,KAA4C,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;gBAC7E,OAAO,GAAG,KAAK,CAAC;YACjB,CAAC;QACF,CAAC;QAED,OAAO,OAAO,CAAC;IAChB,CAAC,CAAC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,13 @@
1
+ import { IJsonToHtml } from '../interfaces/common.interface.js';
2
+ export declare function createDefaultLauncherIcon(): {
3
+ type: string;
4
+ attrs: {
5
+ src: string;
6
+ alt: string;
7
+ 'aria-hidden': string;
8
+ class: string;
9
+ };
10
+ };
11
+ export declare function createDefaultCloseIcon(): IJsonToHtml;
12
+ export declare function createDefaultResetIcon(): IJsonToHtml;
13
+ export declare function buildBuiltinActionIconCss(): string;
@@ -0,0 +1,148 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createDefaultLauncherIcon = createDefaultLauncherIcon;
4
+ exports.createDefaultCloseIcon = createDefaultCloseIcon;
5
+ exports.createDefaultResetIcon = createDefaultResetIcon;
6
+ exports.buildBuiltinActionIconCss = buildBuiltinActionIconCss;
7
+ // Default icon shapes are sourced from the local Material icon packages:
8
+ // @material-design-icons/svg and @material-symbols/svg-400
9
+ const svgDataUri = (path, viewBox = '0 0 24 24') => `data:image/svg+xml;utf8,${encodeURIComponent(`<svg xmlns="http://www.w3.org/2000/svg" viewBox="${viewBox}" fill="none"><path fill="currentColor" d="${path}"/></svg>`)}`;
10
+ const svgMarkupUri = (markup) => `data:image/svg+xml;utf8,${encodeURIComponent(markup)}`;
11
+ const imageIcon = (path, className, viewBox) => ({
12
+ type: 'img',
13
+ attrs: {
14
+ src: svgDataUri(path, viewBox),
15
+ alt: '',
16
+ 'aria-hidden': 'true',
17
+ class: className
18
+ }
19
+ });
20
+ const normalizeIconDefinition = (icon) => typeof icon === 'string' ? { path: icon, viewBox: '0 0 24 24' } : icon;
21
+ const ICON_PATHS = {
22
+ close: {
23
+ path: 'M480-438 270-228q-9 9-21 9t-21-9q-9-9-9-21t9-21l210-210-210-210q-9-9-9-21t9-21q9-9 21-9t21 9l210 210 210-210q9-9 21-9t21 9q9 9 9 21t-9 21L522-480l210 210q9 9 9 21t-9 21q-9 9-21 9t-21-9L480-438Z',
24
+ viewBox: '0 -960 960 960'
25
+ },
26
+ reset: {
27
+ path: 'M418-126q-111-21-184.5-109T160-439q0-71 30-134t85-107q8-6 19-5.5t19 8.5q10 10 9 23t-13 23q-42 35-65.5 85.5T220-439q0 94 58 163.5T425-186q11 2 18.5 11t7.5 20q0 14-10 22.5t-23 6.5Zm126 0q-13 2-23-6.5T511-155q0-11 7.5-20t18.5-11q90-20 147-89.5T741-439q0-109-75.5-184.5T481-699h-20l39 39q8 8 8 21t-8 21q-9 9-22 9t-21-9l-91-90q-5-5-7-10t-2-11q0-6 2-11t7-10l91-91q8-8 21-8t22 8q8 9 8 22t-8 21l-39 39h20q134 0 227 93.5T801-439q0 116-73 204T544-126Z',
28
+ viewBox: '0 -960 960 960'
29
+ },
30
+ increaseText: {
31
+ path: 'm172-350-49 128q-4 10-12.56 16-8.55 6-19.44 6-19 0-29-15.5T59-248l192-488q5-11 14.16-17.5T285-760h30q11.45 0 20.22 6.5Q344-747 349-736l192 489q7 17-3.55 32-10.54 15-28.51 15-10.94 0-20.04-6.13-9.11-6.14-12.9-16.87l-48-127H172Zm24-64h208L302-685h-4L196-414Zm534-36H630q-12.75 0-21.37-8.68-8.63-8.67-8.63-21.5 0-12.82 8.63-21.32 8.62-8.5 21.37-8.5h100v-100q0-12.75 8.68-21.38 8.67-8.62 21.5-8.62 12.82 0 21.32 8.62 8.5 8.63 8.5 21.38v100h100q12.75 0 21.38 8.68 8.62 8.67 8.62 21.5 0 12.82-8.62 21.32-8.63 8.5-21.38 8.5H790v100q0 12.75-8.68 21.37-8.67 8.63-21.5 8.63-12.82 0-21.32-8.63-8.5-8.62-8.5-21.37v-100Z',
32
+ viewBox: '0 -960 960 960'
33
+ },
34
+ decreaseText: {
35
+ path: 'M640-450q-13 0-21.5-8.5T610-480q0-13 8.5-21.5T640-510h250q13 0 21.5 8.5T920-480q0 13-8.5 21.5T890-450H640ZM172-350l-49 128q-4 10-12.5 16T91-200q-19 0-29-15.5T59-248l192-488q5-11 14-17.5t20-6.5h30q11 0 20 6.5t14 17.5l192 489q7 17-3.5 32T509-200q-11 0-20-6t-13-17l-48-127H172Zm24-64h208L302-685h-4L196-414Z',
36
+ viewBox: '0 -960 960 960'
37
+ },
38
+ increaseTextSpacing: {
39
+ path: 'm210-683-67 66q-9 8-21 8t-21-9q-9-9-9-21t9-21l118-118q5-5 10-7t11-2q6 0 11 2t10 7l118 118q9 9 9 21t-9 21q-9 9-21 8.5t-21-8.5l-67-65v408l67-66q9-8 21-8t21 9q9 9 9 21t-9 21L261-180q-5 5-10 7t-11 2q-6 0-11-2t-10-7L101-298q-9-9-9-21t9-21q9-9 21-8.5t21 8.5l67 65v-408Zm300 483q-13 0-21.5-8.5T480-230q0-13 8.5-21.5T510-260h340q13 0 21.5 8.5T880-230q0 13-8.5 21.5T850-200H510Zm0-250q-13 0-21.5-8.5T480-480q0-13 8.5-21.5T510-510h340q13 0 21.5 8.5T880-480q0 13-8.5 21.5T850-450H510Zm0-250q-13 0-21.5-8.5T480-730q0-13 8.5-21.5T510-760h340q13 0 21.5 8.5T880-730q0 13-8.5 21.5T850-700H510Z',
40
+ viewBox: '0 -960 960 960'
41
+ },
42
+ decreaseTextSpacing: {
43
+ path: 'm210-683-67 66q-9 8-21 8t-21-9q-9-9-9-21t9-21l118-118q5-5 10-7t11-2q6 0 11 2t10 7l118 118q9 9 9 21t-9 21q-9 9-21 8.5t-21-8.5l-67-65v408l67-66q9-8 21-8t21 9q9 9 9 21t-9 21L261-180q-5 5-10 7t-11 2q-6 0-11-2t-10-7L101-298q-9-9-9-21t9-21q9-9 21-8.5t21 8.5l67 65v-408Zm300 483q-13 0-21.5-8.5T480-230q0-13 8.5-21.5T510-260h340q13 0 21.5 8.5T880-230q0 13-8.5 21.5T850-200H510Zm0-250q-13 0-21.5-8.5T480-480q0-13 8.5-21.5T510-510h340q13 0 21.5 8.5T880-480q0 13-8.5 21.5T850-450H510Zm0-250q-13 0-21.5-8.5T480-730q0-13 8.5-21.5T510-760h340q13 0 21.5 8.5T880-730q0 13-8.5 21.5T850-700H510Z',
44
+ viewBox: '0 -960 960 960'
45
+ },
46
+ increaseLineHeight: {
47
+ path: 'M450-235v-490l-67 66q-9 9-21 9t-21-9q-9-9-9-21t9-21l118-118q5-5 10-7t11-2q6 0 11 2t10 7l118 118q9 9 9 21t-9 21q-9 9-21.5 9t-21.5-9l-66-66v490l67-66q9-8 21-8.5t21 8.5q9 9 9 21t-9 21L501-141q-5 5-10 7t-11 2q-6 0-11-2t-10-7L341-259q-9-9-9-21t9-21q9-9 21-8.5t21 8.5l67 66Z',
48
+ viewBox: '0 -960 960 960'
49
+ },
50
+ decreaseLineHeight: {
51
+ path: 'M450-235v-490l-67 66q-9 9-21 9t-21-9q-9-9-9-21t9-21l118-118q5-5 10-7t11-2q6 0 11 2t10 7l118 118q9 9 9 21t-9 21q-9 9-21.5 9t-21.5-9l-66-66v490l67-66q9-8 21-8.5t21 8.5q9 9 9 21t-9 21L501-141q-5 5-10 7t-11 2q-6 0-11-2t-10-7L341-259q-9-9-9-21t9-21q9-9 21-8.5t21 8.5l67 66Z',
52
+ viewBox: '0 -960 960 960'
53
+ },
54
+ invertColors: {
55
+ path: 'M480-120q-132 0-226-91.5T160-435q0-66 25-122.5T254-658l194-191q7-7 15.5-10t16.5-3q8 0 16.5 3t15.5 10l194 191q44 44 69 100.5T800-435q0 131-93.5 223T480-120Zm0-60v-616L294-613q-36 36-55 80t-19 98q0 107 76.5 181T480-180Z',
56
+ viewBox: '0 -960 960 960'
57
+ },
58
+ grayHues: {
59
+ path: 'M324-111.5Q251-143 197-197t-85.5-127Q80-397 80-480t31.5-156Q143-709 197-763t127-85.5Q397-880 480-880t156 31.5Q709-817 763-763t85.5 127Q880-563 880-480t-31.5 156Q817-251 763-197t-127 85.5Q563-80 480-80t-156-31.5ZM510-141q38-4 74-16t70-31H510v47Zm0-107h219q14-17 27.5-34t24.5-37H510v71Zm0-131h294q8-17 10-35t3-36H510v71Zm0-131h307q-1-18-3-36t-10-35H510v71Zm0-131h271q-10-20-24-37l-28-34H510v71Zm0-131h144q-34-19-70-31.5T510-819v47Z',
60
+ viewBox: '0 -960 960 960'
61
+ },
62
+ underlineLinks: {
63
+ path: 'M230-140q-13 0-21.5-8.5T200-170q0-13 8.5-21.5T230-200h500q13 0 21.5 8.5T760-170q0 13-8.5 21.5T730-140H230Zm93.5-198.5Q267-397 267-497v-302q0-17 12.5-29t29.5-12q17 0 29 12t12 29v302q0 63 34 101t96 38q62 0 96-38t34-101v-302q0-17 12.5-29t29.5-12q17 0 29 12t12 29v302q0 100-56.5 158.5T480-280q-100 0-156.5-58.5Z',
64
+ viewBox: '0 -960 960 960'
65
+ },
66
+ bigCursor: {
67
+ path: 'M605-105q-19 9-38 2t-28-26L412-401 294-236q-13 18-33.5 11T240-254v-564q0-19 17-27t32 3l443 348q17 14 9.5 34T713-440H505l124 269q9 19 2 38t-26 28Z',
68
+ viewBox: '0 -960 960 960'
69
+ },
70
+ readingGuide: {
71
+ path: 'M190-390q-12.75 0-21.37-8.68-8.63-8.67-8.63-21.5 0-12.82 8.63-21.32 8.62-8.5 21.37-8.5h580q12.75 0 21.38 8.68 8.62 8.67 8.62 21.5 0 12.82-8.62 21.32-8.63 8.5-21.38 8.5H190Zm0-120q-12.75 0-21.37-8.68-8.63-8.67-8.63-21.5 0-12.82 8.63-21.32 8.62-8.5 21.37-8.5h580q12.75 0 21.38 8.68 8.62 8.67 8.62 21.5 0 12.82-8.62 21.32-8.63 8.5-21.38 8.5H190Z',
72
+ viewBox: '0 -960 960 960'
73
+ },
74
+ textToSpeech: {
75
+ path: 'M140-80q-24.75 0-42.37-17.63Q80-115.25 80-140v-680q0-24.75 17.63-42.38Q115.25-880 140-880h270q12.75 0 21.38 8.68 8.62 8.67 8.62 21.5 0 12.82-8.62 21.32-8.63 8.5-21.38 8.5H140v680h480v-80q0-12.75 8.68-21.38 8.67-8.62 21.5-8.62 12.82 0 21.32 8.62 8.5 8.63 8.5 21.38v80q0 24.75-17.62 42.37Q644.75-80 620-80H140Zm130-170q-12.75 0-21.37-8.68-8.63-8.67-8.63-21.5 0-12.82 8.63-21.32 8.62-8.5 21.37-8.5h220q12.75 0 21.38 8.68 8.62 8.67 8.62 21.5 0 12.82-8.62 21.32-8.63 8.5-21.38 8.5H270Zm0-120q-12.75 0-21.37-8.68-8.63-8.67-8.63-21.5 0-12.82 8.63-21.32 8.62-8.5 21.37-8.5h140q12.75 0 21.38 8.68 8.62 8.67 8.62 21.5 0 12.82-8.62 21.32-8.63 8.5-21.38 8.5H270Zm80-150q-12.5 0-21.25-8.75T320-550v-140q0-12.5 8.75-21.25T350-720h110l109-109q5-5 10.22-7 5.21-2 10.78-2 12.75 0 21.38 8.5Q620-821 620-808v376q0 13-8.62 21.5-8.63 8.5-21.38 8.5-6 0-11-2t-10-7L460-520H350Zm450-100q0 51-26.5 93.5T702-461q-8 4-15-.28-7-4.29-7-13.72v-298q0-9 7.5-14t15.5-1q46 25 71.5 70t25.5 98Zm60 0q0-76-41.5-139.5T708-856q-11-5-16-16.5t0-22.15Q697-906 709-911q12-5 23 0 86 40 137 118.5 51 78.51 51 172.5 0 94-51 172.5T732-329q-11 5-23 0t-17-16.35q-5-10.65 0-22.15 5-11.5 16-16.5 69-33 110.5-96.5T860-620Z',
76
+ viewBox: '0 -960 960 960'
77
+ },
78
+ speechToText: {
79
+ path: 'M689.57-570q-28.57 0-49.07-20.5T620-640v-160q0-29 20.56-49.5Q661.13-870 690-870q29 0 49.5 20.5T760-800v160q0 29-20.5 49.5T689.57-570ZM180-80q-24.75 0-42.37-17.63Q120-115.25 120-140v-680q0-24.75 17.63-42.38Q155.25-880 180-880h310q12.75 0 21.38 8.68 8.62 8.67 8.62 21.5 0 12.82-8.62 21.32-8.63 8.5-21.38 8.5H180v680h480v-80q0-12.75 8.68-21.38 8.67-8.62 21.5-8.62 12.82 0 21.32 8.62 8.5 8.63 8.5 21.38v80q0 24.75-17.62 42.37Q684.75-80 660-80H180Zm350-170H310q-12.75 0-21.37-8.68-8.63-8.67-8.63-21.5 0-12.82 8.63-21.32 8.62-8.5 21.37-8.5h220q12.75 0 21.38 8.68 8.62 8.67 8.62 21.5 0 12.82-8.62 21.32-8.63 8.5-21.38 8.5Zm-80-120H310q-12.75 0-21.37-8.68-8.63-8.67-8.63-21.5 0-12.82 8.63-21.32 8.62-8.5 21.37-8.5h140q12.75 0 21.38 8.68 8.62 8.67 8.62 21.5 0 12.82-8.62 21.32-8.63 8.5-21.38 8.5Zm240-120q54 0 94.5-33.5T836-607q3-14 12.1-23.5 9.11-9.5 22-9.5 12.9 0 20.9 10 8 10 6 24-11 68-59.5 116T720-432v72q0 12.75-8.68 21.37-8.67 8.63-21.5 8.63-12.82 0-21.32-8.63-8.5-8.62-8.5-21.37v-72q-68-10-117-58t-60-116q-2-14 6-24t20.9-10q12.89 0 22 9.5Q541-621 544-607q11 50 51.5 83.5T690-490Z',
80
+ viewBox: '0 -960 960 960'
81
+ },
82
+ disableAnimations: {
83
+ path: 'M354-80q-56 0-106-20.5T159-160q-38-38-58.5-87.5T80-354q0-80 41.5-146T232-598q20-42 53-75t77-55q32-71 97.5-111.5T607-880q56 0 105.5 20.5T800-800q38 39 59 88t21 105q0 84-38.5 146.5T728-362q-20 44-52.5 76.5T598-232q-32 71-97.5 111.5T354-80Zm0-60q45 0 86.5-19.5T508-211q-63 7-120.5-12.5T286-286q-44-43-63-101t-12-121q-33 26-52 67.5T140-354q0 45 16 84t46 68q30 29 68.5 45.5T354-140Zm126-127q45 0 86-19t69-52q-63 7-120-13.5T415-416q-44-45-64-102.5T339-639q-40 38-56 73.5T267-480q0 44 16 83t46 69q29 29 68 45t83 16Z',
84
+ viewBox: '0 -960 960 960'
85
+ }
86
+ };
87
+ function createDefaultLauncherIcon() {
88
+ return {
89
+ type: 'img',
90
+ attrs: {
91
+ src: svgMarkupUri(`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" fill="none">
92
+ <rect x="6" y="6" width="52" height="52" rx="12" fill="#5B93FF"/>
93
+ <g transform="translate(13 13) scale(1.58)">
94
+ <path fill="#fff" d="M20.5 6c-2.61.7-5.67 1-8.5 1s-5.89-.3-8.5-1L3 8c1.86.5 4 .83 6 1v13h2v-6h2v6h2V9c2-.17 4.14-.5 6-1l-.5-2zM12 6c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2z"/>
95
+ </g>
96
+ </svg>`),
97
+ alt: '',
98
+ 'aria-hidden': 'true',
99
+ class: '_access-inline-icon _access-launcher-icon'
100
+ }
101
+ };
102
+ }
103
+ function createDefaultCloseIcon() {
104
+ const icon = normalizeIconDefinition(ICON_PATHS.close);
105
+ return imageIcon(icon.path, '_access-inline-icon _access-close-icon', icon.viewBox);
106
+ }
107
+ function createDefaultResetIcon() {
108
+ const icon = normalizeIconDefinition(ICON_PATHS.reset);
109
+ return imageIcon(icon.path, '_access-inline-icon _access-reset-icon', icon.viewBox);
110
+ }
111
+ function buildBuiltinActionIconCss() {
112
+ const actionMap = {
113
+ increaseText: ICON_PATHS.increaseText,
114
+ decreaseText: ICON_PATHS.decreaseText,
115
+ increaseTextSpacing: ICON_PATHS.increaseTextSpacing,
116
+ decreaseTextSpacing: ICON_PATHS.decreaseTextSpacing,
117
+ increaseLineHeight: ICON_PATHS.increaseLineHeight,
118
+ decreaseLineHeight: ICON_PATHS.decreaseLineHeight,
119
+ invertColors: ICON_PATHS.invertColors,
120
+ grayHues: ICON_PATHS.grayHues,
121
+ underlineLinks: ICON_PATHS.underlineLinks,
122
+ bigCursor: ICON_PATHS.bigCursor,
123
+ readingGuide: ICON_PATHS.readingGuide,
124
+ textToSpeech: ICON_PATHS.textToSpeech,
125
+ speechToText: ICON_PATHS.speechToText,
126
+ disableAnimations: ICON_PATHS.disableAnimations
127
+ };
128
+ return Object.entries(actionMap)
129
+ .map(([action, icon]) => {
130
+ const definition = normalizeIconDefinition(icon);
131
+ return `._access-menu ul li button[data-access-action="${action}"]:before {
132
+ content: '';
133
+ font-size: 0 !important;
134
+ background-color: currentColor;
135
+ -webkit-mask-image: url("${svgDataUri(definition.path, definition.viewBox)}");
136
+ mask-image: url("${svgDataUri(definition.path, definition.viewBox)}");
137
+ -webkit-mask-repeat: no-repeat;
138
+ mask-repeat: no-repeat;
139
+ -webkit-mask-position: center;
140
+ mask-position: center;
141
+ -webkit-mask-size: contain;
142
+ mask-size: contain;
143
+ }
144
+ `;
145
+ })
146
+ .join('\n');
147
+ }
148
+ //# sourceMappingURL=icon-assets.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"icon-assets.js","sourceRoot":"","sources":["../../src/core/icon-assets.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import { IAccessibilityModuleOrder, IAccessibilityOptions } from '../interfaces/accessibility.interface.js';
2
+ import { Common } from '../common.js';
3
+ export declare function addDefaultIconOptions(targetOptions: IAccessibilityOptions, userOptions: IAccessibilityOptions): void;
4
+ export declare function ensureModuleOrder(defaultOrder: Array<IAccessibilityModuleOrder>, modulesOrder: Array<IAccessibilityModuleOrder>): void;
5
+ export declare function disableUnsupportedFeatures(common: Common, options: IAccessibilityOptions): void;
6
+ export declare function buildDefaultModuleOrder(): IAccessibilityModuleOrder[];
@@ -0,0 +1,58 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.addDefaultIconOptions = addDefaultIconOptions;
4
+ exports.ensureModuleOrder = ensureModuleOrder;
5
+ exports.disableUnsupportedFeatures = disableUnsupportedFeatures;
6
+ exports.buildDefaultModuleOrder = buildDefaultModuleOrder;
7
+ const accessibility_interface_js_1 = require("../interfaces/accessibility.interface.js");
8
+ const icon_assets_js_1 = require("./icon-assets.js");
9
+ function addDefaultIconOptions(targetOptions, userOptions) {
10
+ if (userOptions.icon?.closeIconElem)
11
+ targetOptions.icon.closeIconElem = userOptions.icon.closeIconElem;
12
+ if (userOptions.icon?.resetIconElem)
13
+ targetOptions.icon.resetIconElem = userOptions.icon.resetIconElem;
14
+ if (userOptions.icon?.imgElem)
15
+ targetOptions.icon.imgElem = userOptions.icon.imgElem;
16
+ if (!targetOptions.icon.closeIconElem) {
17
+ targetOptions.icon.closeIconElem = (0, icon_assets_js_1.createDefaultCloseIcon)();
18
+ }
19
+ if (!targetOptions.icon.resetIconElem) {
20
+ targetOptions.icon.resetIconElem = (0, icon_assets_js_1.createDefaultResetIcon)();
21
+ }
22
+ if (!targetOptions.icon.imgElem) {
23
+ targetOptions.icon.imgElem = (0, icon_assets_js_1.createDefaultLauncherIcon)();
24
+ }
25
+ }
26
+ function ensureModuleOrder(defaultOrder, modulesOrder) {
27
+ defaultOrder.forEach((moduleOrder) => {
28
+ if (!modulesOrder.find((existingOrder) => existingOrder.type === moduleOrder.type)) {
29
+ modulesOrder.push(moduleOrder);
30
+ }
31
+ });
32
+ }
33
+ function disableUnsupportedFeatures(common, options) {
34
+ if (!('webkitSpeechRecognition' in window) || location.protocol !== 'https:') {
35
+ common.warn("speech to text isn't supported in this browser or in http protocol (https required)");
36
+ options.modules.speechToText = false;
37
+ }
38
+ const windowAny = window;
39
+ if (!windowAny.SpeechSynthesisUtterance || !windowAny.speechSynthesis) {
40
+ common.warn("text to speech isn't supported in this browser");
41
+ options.modules.textToSpeech = false;
42
+ }
43
+ }
44
+ function buildDefaultModuleOrder() {
45
+ const modulesOrder = [];
46
+ const keys = Object.keys(accessibility_interface_js_1.AccessibilityModulesType);
47
+ keys.forEach((key) => {
48
+ const keyNum = parseInt(key);
49
+ if (!isNaN(keyNum)) {
50
+ modulesOrder.push({
51
+ type: keyNum,
52
+ order: keyNum
53
+ });
54
+ }
55
+ });
56
+ return modulesOrder;
57
+ }
58
+ //# sourceMappingURL=options.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"options.js","sourceRoot":"","sources":["../../src/core/options.ts"],"names":[],"mappings":";;AAYA,sDAmBC;AAED,8CASC;AAED,gEAWC;AAED,0DAeC;AAxED,yFAIkD;AAElD,qDAI0B;AAE1B,SAAgB,qBAAqB,CACpC,aAAoC,EACpC,WAAkC;IAElC,IAAI,WAAW,CAAC,IAAI,EAAE,aAAa;QAAE,aAAa,CAAC,IAAI,CAAC,aAAa,GAAG,WAAW,CAAC,IAAI,CAAC,aAAa,CAAC;IACvG,IAAI,WAAW,CAAC,IAAI,EAAE,aAAa;QAAE,aAAa,CAAC,IAAI,CAAC,aAAa,GAAG,WAAW,CAAC,IAAI,CAAC,aAAa,CAAC;IACvG,IAAI,WAAW,CAAC,IAAI,EAAE,OAAO;QAAE,aAAa,CAAC,IAAI,CAAC,OAAO,GAAG,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC;IAErF,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;QACvC,aAAa,CAAC,IAAI,CAAC,aAAa,GAAG,IAAA,uCAAsB,GAAE,CAAC;IAC7D,CAAC;IAED,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;QACvC,aAAa,CAAC,IAAI,CAAC,aAAa,GAAG,IAAA,uCAAsB,GAAE,CAAC;IAC7D,CAAC;IAED,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;QACjC,aAAa,CAAC,IAAI,CAAC,OAAO,GAAG,IAAA,0CAAyB,GAAE,CAAC;IAC1D,CAAC;AACF,CAAC;AAED,SAAgB,iBAAiB,CAChC,YAA8C,EAC9C,YAA8C;IAE9C,YAAY,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,EAAE;QACpC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,aAAa,EAAE,EAAE,CAAC,aAAa,CAAC,IAAI,KAAK,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC;YACpF,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAChC,CAAC;IACF,CAAC,CAAC,CAAC;AACJ,CAAC;AAED,SAAgB,0BAA0B,CAAC,MAAc,EAAE,OAA8B;IACxF,IAAI,CAAC,CAAC,yBAAyB,IAAI,MAAM,CAAC,IAAI,QAAQ,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAC9E,MAAM,CAAC,IAAI,CAAC,qFAAqF,CAAC,CAAC;QACnG,OAAO,CAAC,OAAO,CAAC,YAAY,GAAG,KAAK,CAAC;IACtC,CAAC;IAED,MAAM,SAAS,GAAG,MAAa,CAAC;IAChC,IAAI,CAAC,SAAS,CAAC,wBAAwB,IAAI,CAAC,SAAS,CAAC,eAAe,EAAE,CAAC;QACvE,MAAM,CAAC,IAAI,CAAC,gDAAgD,CAAC,CAAC;QAC9D,OAAO,CAAC,OAAO,CAAC,YAAY,GAAG,KAAK,CAAC;IACtC,CAAC;AACF,CAAC;AAED,SAAgB,uBAAuB;IACtC,MAAM,YAAY,GAAG,EAAsC,CAAC;IAC5D,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,qDAAwB,CAAC,CAAC;IAEnD,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;QACpB,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;QAC7B,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;YACpB,YAAY,CAAC,IAAI,CAAC;gBACjB,IAAI,EAAE,MAAM;gBACZ,KAAK,EAAE,MAAM;aACb,CAAC,CAAC;QACJ,CAAC;IACF,CAAC,CAAC,CAAC;IAEH,OAAO,YAAY,CAAC;AACrB,CAAC"}
@@ -0,0 +1,3 @@
1
+ export declare function escapeCssString(value: string): string;
2
+ export declare function sanitizeDomAttribute(tagName: string, attrName: string, attrValue: unknown): string;
3
+ export declare function normalizeIframeUrl(url: string, allowedOrigins?: string[]): string;
@@ -0,0 +1,45 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.escapeCssString = escapeCssString;
4
+ exports.sanitizeDomAttribute = sanitizeDomAttribute;
5
+ exports.normalizeIframeUrl = normalizeIframeUrl;
6
+ function escapeCssString(value) {
7
+ return String(value)
8
+ .replace(/\\/g, '\\\\')
9
+ .replace(/"/g, '\\"')
10
+ .replace(/\r/g, '\\r')
11
+ .replace(/\n/g, '\\n');
12
+ }
13
+ function sanitizeDomAttribute(tagName, attrName, attrValue) {
14
+ const normalizedName = attrName.toLowerCase();
15
+ if (normalizedName.startsWith('on'))
16
+ return null;
17
+ if ((normalizedName === 'src' || normalizedName === 'href') &&
18
+ typeof attrValue === 'string' &&
19
+ /^\s*javascript:/i.test(attrValue)) {
20
+ return null;
21
+ }
22
+ if (tagName === 'iframe' &&
23
+ normalizedName === 'src' &&
24
+ typeof attrValue === 'string' &&
25
+ /^\s*(data:|javascript:|file:)/i.test(attrValue)) {
26
+ return null;
27
+ }
28
+ return String(attrValue);
29
+ }
30
+ function normalizeIframeUrl(url, allowedOrigins = []) {
31
+ try {
32
+ const parsed = new URL(url, window.location.href);
33
+ const sameOrigin = parsed.origin === window.location.origin;
34
+ const allowed = allowedOrigins.includes(parsed.origin);
35
+ if (sameOrigin || allowed)
36
+ return parsed.toString();
37
+ if (parsed.protocol === 'https:')
38
+ return parsed.toString();
39
+ return null;
40
+ }
41
+ catch (error) {
42
+ return null;
43
+ }
44
+ }
45
+ //# sourceMappingURL=security.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"security.js","sourceRoot":"","sources":["../../src/core/security.ts"],"names":[],"mappings":";;AAAA,0CAMC;AAED,oDAuBC;AAED,gDAYC;AA7CD,SAAgB,eAAe,CAAC,KAAa;IAC5C,OAAO,MAAM,CAAC,KAAK,CAAC;SAClB,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC;SACtB,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC;SACpB,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC;SACrB,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AACzB,CAAC;AAED,SAAgB,oBAAoB,CAAC,OAAe,EAAE,QAAgB,EAAE,SAAkB;IACzF,MAAM,cAAc,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC;IAE9C,IAAI,cAAc,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAEjD,IACC,CAAC,cAAc,KAAK,KAAK,IAAI,cAAc,KAAK,MAAM,CAAC;QACvD,OAAO,SAAS,KAAK,QAAQ;QAC7B,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,EACjC,CAAC;QACF,OAAO,IAAI,CAAC;IACb,CAAC;IAED,IACC,OAAO,KAAK,QAAQ;QACpB,cAAc,KAAK,KAAK;QACxB,OAAO,SAAS,KAAK,QAAQ;QAC7B,gCAAgC,CAAC,IAAI,CAAC,SAAS,CAAC,EAC/C,CAAC;QACF,OAAO,IAAI,CAAC;IACb,CAAC;IAED,OAAO,MAAM,CAAC,SAAS,CAAC,CAAC;AAC1B,CAAC;AAED,SAAgB,kBAAkB,CAAC,GAAW,EAAE,iBAA2B,EAAE;IAC5E,IAAI,CAAC;QACJ,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAClD,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,KAAK,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;QAC5D,MAAM,OAAO,GAAG,cAAc,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAEvD,IAAI,UAAU,IAAI,OAAO;YAAE,OAAO,MAAM,CAAC,QAAQ,EAAE,CAAC;QACpD,IAAI,MAAM,CAAC,QAAQ,KAAK,QAAQ;YAAE,OAAO,MAAM,CAAC,QAAQ,EAAE,CAAC;QAC3D,OAAO,IAAI,CAAC;IACb,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,OAAO,IAAI,CAAC;IACb,CAAC;AACF,CAAC"}
@@ -0,0 +1,14 @@
1
+ import { Storage } from '../storage.js';
2
+ import { ISessionState } from '../interfaces/accessibility.interface.js';
3
+ export declare function saveSessionState(storage: Storage, sessionState: ISessionState): void;
4
+ export declare function restoreSessionState(storage: Storage, handlers: {
5
+ applyTextSize(isIncrease: boolean): void;
6
+ applyTextSpace(isIncrease: boolean): void;
7
+ applyLineHeight(isIncrease: boolean): void;
8
+ enableInvertColors(): void;
9
+ enableGrayHues(): void;
10
+ enableUnderlineLinks(): void;
11
+ enableBigCursor(): void;
12
+ enableReadingGuide(): void;
13
+ assignSessionState(sessionState: ISessionState): void;
14
+ }): void;