@a11y-hud/vue 1.0.0-rc.0 → 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/README.md CHANGED
@@ -67,10 +67,19 @@ const scopeRef = ref(null);
67
67
 
68
68
  | Prop | Type | Default | Description |
69
69
  |------|------|---------|-------------|
70
- | `theme` | `"auto" \| "default" \| "light" \| "high-contrast"` | `"auto"` | Panel theme |
70
+ | `theme` | `Theme` | `"auto"` | Panel theme — `"auto"`, `"default"`, `"light"`, `"high-contrast"`, `"github-dark"`, `"github-light"`, `"tokyo-night"`, `"solarized-dark"` |
71
71
  | `scope` | `Element \| null` | — | Restrict scan to a subtree |
72
72
  | `autoScan` | `boolean` | `true` | Auto-rescan on DOM mutations |
73
73
  | `debounce` | `number` | `500` | Debounce delay in ms |
74
+ | `runOnly` | `string[]` | — | Restrict axe to specific rule-set tags |
75
+
76
+ ### Composable return value
77
+
78
+ `useA11yHud` returns `{ runScan, setTheme, setRunOnly, exportResults, ignores }`. `runScan()` resolves `Promise<AxeResults | null>` — `null` if called before the HUD has mounted.
79
+
80
+ ### Server-side rendering
81
+
82
+ Importing `@a11y-hud/vue` is safe on the server (e.g. Nuxt); the HUD mounts in `onMounted`, so nothing renders server-side.
74
83
 
75
84
  ## License
76
85
 
package/dist/index.d.ts CHANGED
@@ -19,6 +19,10 @@ declare const A11yHud: vue.DefineComponent<vue.ExtractPropTypes<{
19
19
  type: PropType<number>;
20
20
  default: undefined;
21
21
  };
22
+ runOnly: {
23
+ type: PropType<string[]>;
24
+ default: undefined;
25
+ };
22
26
  }>, () => null, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, vue.PublicProps, Readonly<vue.ExtractPropTypes<{
23
27
  theme: {
24
28
  type: PropType<Theme>;
@@ -36,10 +40,15 @@ declare const A11yHud: vue.DefineComponent<vue.ExtractPropTypes<{
36
40
  type: PropType<number>;
37
41
  default: undefined;
38
42
  };
43
+ runOnly: {
44
+ type: PropType<string[]>;
45
+ default: undefined;
46
+ };
39
47
  }>> & Readonly<{}>, {
40
48
  theme: Theme;
41
49
  autoScan: boolean;
42
50
  debounce: number;
51
+ runOnly: string[];
43
52
  scope: Element | null;
44
53
  }, {}, {}, {}, string, vue.ComponentProvideOptions, true, {}, any>;
45
54
 
@@ -52,7 +61,7 @@ interface UseA11yHudOptions {
52
61
  }
53
62
  type A11yHudProps = UseA11yHudOptions;
54
63
  interface UseA11yHudReturn {
55
- runScan(): Promise<AxeResults>;
64
+ runScan(): Promise<AxeResults | null>;
56
65
  setTheme(theme: Theme): void;
57
66
  setRunOnly(tags: string[]): void;
58
67
  exportResults(): string | null;
package/dist/index.js CHANGED
@@ -127,6 +127,10 @@ var A11yHud = defineComponent({
127
127
  debounce: {
128
128
  type: Number,
129
129
  default: void 0
130
+ },
131
+ runOnly: {
132
+ type: Array,
133
+ default: void 0
130
134
  }
131
135
  },
132
136
  setup(props) {
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/composable.ts","../src/component.ts"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["import type { A11yHudElement, A11yHudInstance, AxeResults, Theme } from \"a11y-hud\";\nimport { mount } from \"a11y-hud\";\nimport { onMounted, onUnmounted, shallowRef, watch } from \"vue\";\nimport type { UseA11yHudOptions, UseA11yHudReturn } from \"./types.js\";\n\nexport function useA11yHud(options: UseA11yHudOptions = {}): UseA11yHudReturn {\n const instanceRef = shallowRef<A11yHudInstance | null>(null);\n const elementRef = shallowRef<A11yHudElement | null>(null);\n\n onMounted(() => {\n const { theme, autoScan, debounce, runOnly } = options;\n const instance = mount({\n ...(theme !== undefined && { theme }),\n ...(autoScan !== undefined && { autoScan }),\n ...(debounce !== undefined && { debounce }),\n ...(runOnly !== undefined && { runOnly }),\n });\n instanceRef.value = instance;\n elementRef.value = document.querySelector<A11yHudElement>(\"a11y-hud\");\n const el = elementRef.value;\n if (el) {\n el.scopeElement = options.scope ?? undefined;\n }\n void instance.runScan();\n });\n\n onUnmounted(() => {\n instanceRef.value?.unmount();\n instanceRef.value = null;\n elementRef.value = null;\n });\n\n // Render-settled signal: fires after the scope prop changes, syncing the CE's\n // scopeElement and triggering a rescan. Route changes and general DOM mutations\n // are handled by the core's MutationObserver; this watch covers the prop-change\n // path (e.g. enabling/disabling scope, passing a different ref).\n watch(\n () => options.scope,\n () => {\n const instance = instanceRef.value;\n const el = elementRef.value;\n if (!instance || !el) return;\n el.scopeElement = options.scope ?? undefined;\n void instance.runScan();\n },\n { flush: \"post\" }\n );\n\n watch(\n () => options.theme,\n (newTheme) => {\n if (newTheme !== undefined) instanceRef.value?.setTheme(newTheme);\n },\n { flush: \"post\" }\n );\n\n watch(\n () => options.autoScan,\n (newAutoScan) => {\n const el = elementRef.value;\n if (!el) return;\n if (newAutoScan === false) {\n el.removeAttribute(\"auto-scan\");\n } else {\n el.setAttribute(\"auto-scan\", \"\");\n }\n },\n { flush: \"post\" }\n );\n\n watch(\n () => options.debounce,\n (newDebounce) => {\n const el = elementRef.value;\n if (!el || newDebounce === undefined) return;\n el.setAttribute(\"debounce\", String(newDebounce));\n },\n { flush: \"post\" }\n );\n\n watch(\n () => options.runOnly,\n (newRunOnly) => {\n if (newRunOnly !== undefined) instanceRef.value?.setRunOnly(newRunOnly);\n },\n { flush: \"post\" }\n );\n\n function runScan(): Promise<AxeResults> {\n return instanceRef.value?.runScan() ?? Promise.resolve(null as unknown as AxeResults);\n }\n\n function setTheme(theme: Theme): void {\n instanceRef.value?.setTheme(theme);\n }\n\n function setRunOnly(tags: string[]): void {\n instanceRef.value?.setRunOnly(tags);\n }\n\n function exportResults(): string | null {\n return instanceRef.value?.exportResults() ?? null;\n }\n\n const ignores = {\n add(ruleId: string, selector?: string): void {\n instanceRef.value?.ignores.add(ruleId, selector);\n },\n remove(ruleId: string, selector?: string): void {\n instanceRef.value?.ignores.remove(ruleId, selector);\n },\n clear(): void {\n instanceRef.value?.ignores.clear();\n },\n list() {\n return instanceRef.value?.ignores.list() ?? [];\n },\n exportJson(): string {\n return instanceRef.value?.ignores.exportJson() ?? \"[]\";\n },\n importJson(json: string): void {\n instanceRef.value?.ignores.importJson(json);\n },\n };\n\n return { runScan, setTheme, setRunOnly, exportResults, ignores };\n}\n","import type { Theme } from \"a11y-hud\";\nimport type { PropType } from \"vue\";\nimport { defineComponent } from \"vue\";\nimport { useA11yHud } from \"./composable.js\";\nimport type { A11yHudProps } from \"./types.js\";\n\nexport const A11yHud = defineComponent({\n name: \"A11yHud\",\n props: {\n theme: {\n type: String as PropType<Theme>,\n default: undefined,\n },\n scope: {\n type: Object as PropType<Element | null>,\n default: undefined,\n },\n autoScan: {\n type: Boolean as PropType<boolean>,\n default: undefined,\n },\n debounce: {\n type: Number as PropType<number>,\n default: undefined,\n },\n },\n setup(props) {\n useA11yHud(props as A11yHudProps);\n return () => null;\n },\n});\n"]}
1
+ {"version":3,"sources":["../src/composable.ts","../src/component.ts"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["import type { A11yHudElement, A11yHudInstance, AxeResults, Theme } from \"a11y-hud\";\nimport { mount } from \"a11y-hud\";\nimport { onMounted, onUnmounted, shallowRef, watch } from \"vue\";\nimport type { UseA11yHudOptions, UseA11yHudReturn } from \"./types.js\";\n\nexport function useA11yHud(options: UseA11yHudOptions = {}): UseA11yHudReturn {\n const instanceRef = shallowRef<A11yHudInstance | null>(null);\n const elementRef = shallowRef<A11yHudElement | null>(null);\n\n onMounted(() => {\n const { theme, autoScan, debounce, runOnly } = options;\n const instance = mount({\n ...(theme !== undefined && { theme }),\n ...(autoScan !== undefined && { autoScan }),\n ...(debounce !== undefined && { debounce }),\n ...(runOnly !== undefined && { runOnly }),\n });\n instanceRef.value = instance;\n elementRef.value = document.querySelector<A11yHudElement>(\"a11y-hud\");\n const el = elementRef.value;\n if (el) {\n el.scopeElement = options.scope ?? undefined;\n }\n void instance.runScan();\n });\n\n onUnmounted(() => {\n instanceRef.value?.unmount();\n instanceRef.value = null;\n elementRef.value = null;\n });\n\n // Render-settled signal: fires after the scope prop changes, syncing the CE's\n // scopeElement and triggering a rescan. Route changes and general DOM mutations\n // are handled by the core's MutationObserver; this watch covers the prop-change\n // path (e.g. enabling/disabling scope, passing a different ref).\n watch(\n () => options.scope,\n () => {\n const instance = instanceRef.value;\n const el = elementRef.value;\n if (!instance || !el) return;\n el.scopeElement = options.scope ?? undefined;\n void instance.runScan();\n },\n { flush: \"post\" }\n );\n\n watch(\n () => options.theme,\n (newTheme) => {\n if (newTheme !== undefined) instanceRef.value?.setTheme(newTheme);\n },\n { flush: \"post\" }\n );\n\n watch(\n () => options.autoScan,\n (newAutoScan) => {\n const el = elementRef.value;\n if (!el) return;\n if (newAutoScan === false) {\n el.removeAttribute(\"auto-scan\");\n } else {\n el.setAttribute(\"auto-scan\", \"\");\n }\n },\n { flush: \"post\" }\n );\n\n watch(\n () => options.debounce,\n (newDebounce) => {\n const el = elementRef.value;\n if (!el || newDebounce === undefined) return;\n el.setAttribute(\"debounce\", String(newDebounce));\n },\n { flush: \"post\" }\n );\n\n watch(\n () => options.runOnly,\n (newRunOnly) => {\n if (newRunOnly !== undefined) instanceRef.value?.setRunOnly(newRunOnly);\n },\n { flush: \"post\" }\n );\n\n function runScan(): Promise<AxeResults | null> {\n return instanceRef.value?.runScan() ?? Promise.resolve(null);\n }\n\n function setTheme(theme: Theme): void {\n instanceRef.value?.setTheme(theme);\n }\n\n function setRunOnly(tags: string[]): void {\n instanceRef.value?.setRunOnly(tags);\n }\n\n function exportResults(): string | null {\n return instanceRef.value?.exportResults() ?? null;\n }\n\n const ignores = {\n add(ruleId: string, selector?: string): void {\n instanceRef.value?.ignores.add(ruleId, selector);\n },\n remove(ruleId: string, selector?: string): void {\n instanceRef.value?.ignores.remove(ruleId, selector);\n },\n clear(): void {\n instanceRef.value?.ignores.clear();\n },\n list() {\n return instanceRef.value?.ignores.list() ?? [];\n },\n exportJson(): string {\n return instanceRef.value?.ignores.exportJson() ?? \"[]\";\n },\n importJson(json: string): void {\n instanceRef.value?.ignores.importJson(json);\n },\n };\n\n return { runScan, setTheme, setRunOnly, exportResults, ignores };\n}\n","import type { Theme } from \"a11y-hud\";\nimport type { PropType } from \"vue\";\nimport { defineComponent } from \"vue\";\nimport { useA11yHud } from \"./composable.js\";\nimport type { A11yHudProps } from \"./types.js\";\n\nexport const A11yHud = defineComponent({\n name: \"A11yHud\",\n props: {\n theme: {\n type: String as PropType<Theme>,\n default: undefined,\n },\n scope: {\n type: Object as PropType<Element | null>,\n default: undefined,\n },\n autoScan: {\n type: Boolean as PropType<boolean>,\n default: undefined,\n },\n debounce: {\n type: Number as PropType<number>,\n default: undefined,\n },\n runOnly: {\n type: Array as PropType<string[]>,\n default: undefined,\n },\n },\n setup(props) {\n useA11yHud(props as A11yHudProps);\n return () => null;\n },\n});\n"]}
package/package.json CHANGED
@@ -1,16 +1,16 @@
1
1
  {
2
2
  "name": "@a11y-hud/vue",
3
- "version": "1.0.0-rc.0",
3
+ "version": "1.0.0",
4
4
  "description": "Vue adapter for a11y-hud — run axe-core accessibility audits in your Vue app with no DevTools required.",
5
5
  "type": "module",
6
6
  "exports": {
7
7
  ".": {
8
8
  "types": "./dist/index.d.ts",
9
- "import": "./dist/index.js",
10
- "require": "./dist/index.cjs"
11
- }
9
+ "default": "./dist/index.js"
10
+ },
11
+ "./package.json": "./package.json"
12
12
  },
13
- "main": "./dist/index.cjs",
13
+ "main": "./dist/index.js",
14
14
  "module": "./dist/index.js",
15
15
  "types": "./dist/index.d.ts",
16
16
  "files": [
@@ -19,20 +19,20 @@
19
19
  "README.md"
20
20
  ],
21
21
  "dependencies": {
22
- "a11y-hud": "1.0.0-rc.0"
22
+ "a11y-hud": "1.0.0"
23
23
  },
24
24
  "peerDependencies": {
25
25
  "vue": ">=3.4"
26
26
  },
27
27
  "devDependencies": {
28
- "@playwright/test": "^1.49.1",
29
- "@vue/test-utils": "^2.4.6",
30
- "@vitejs/plugin-vue": "^6.0.5",
31
- "@vitest/coverage-v8": "^4.1.5",
28
+ "@playwright/test": "^1.63.0",
29
+ "@vitejs/plugin-vue": "^6.0.9",
30
+ "@vitest/coverage-v8": "^4.1.11",
31
+ "@vue/test-utils": "^2.5.1",
32
32
  "jsdom": "^29.1.1",
33
- "tsup": "^8.3.5",
34
- "vue": "^3.5.0",
35
- "vitest": "^4.1.5"
33
+ "tsup": "^8.5.1",
34
+ "vitest": "^4.1.11",
35
+ "vue": "^3.5.43"
36
36
  },
37
37
  "engines": {
38
38
  "node": ">=22"
package/dist/index.cjs DELETED
@@ -1,143 +0,0 @@
1
- 'use strict';
2
-
3
- var vue = require('vue');
4
- var a11yHud = require('a11y-hud');
5
-
6
- // src/component.ts
7
- function useA11yHud(options = {}) {
8
- const instanceRef = vue.shallowRef(null);
9
- const elementRef = vue.shallowRef(null);
10
- vue.onMounted(() => {
11
- const { theme, autoScan, debounce, runOnly } = options;
12
- const instance = a11yHud.mount({
13
- ...theme !== void 0 && { theme },
14
- ...autoScan !== void 0 && { autoScan },
15
- ...debounce !== void 0 && { debounce },
16
- ...runOnly !== void 0 && { runOnly }
17
- });
18
- instanceRef.value = instance;
19
- elementRef.value = document.querySelector("a11y-hud");
20
- const el = elementRef.value;
21
- if (el) {
22
- el.scopeElement = options.scope ?? void 0;
23
- }
24
- void instance.runScan();
25
- });
26
- vue.onUnmounted(() => {
27
- instanceRef.value?.unmount();
28
- instanceRef.value = null;
29
- elementRef.value = null;
30
- });
31
- vue.watch(
32
- () => options.scope,
33
- () => {
34
- const instance = instanceRef.value;
35
- const el = elementRef.value;
36
- if (!instance || !el) return;
37
- el.scopeElement = options.scope ?? void 0;
38
- void instance.runScan();
39
- },
40
- { flush: "post" }
41
- );
42
- vue.watch(
43
- () => options.theme,
44
- (newTheme) => {
45
- if (newTheme !== void 0) instanceRef.value?.setTheme(newTheme);
46
- },
47
- { flush: "post" }
48
- );
49
- vue.watch(
50
- () => options.autoScan,
51
- (newAutoScan) => {
52
- const el = elementRef.value;
53
- if (!el) return;
54
- if (newAutoScan === false) {
55
- el.removeAttribute("auto-scan");
56
- } else {
57
- el.setAttribute("auto-scan", "");
58
- }
59
- },
60
- { flush: "post" }
61
- );
62
- vue.watch(
63
- () => options.debounce,
64
- (newDebounce) => {
65
- const el = elementRef.value;
66
- if (!el || newDebounce === void 0) return;
67
- el.setAttribute("debounce", String(newDebounce));
68
- },
69
- { flush: "post" }
70
- );
71
- vue.watch(
72
- () => options.runOnly,
73
- (newRunOnly) => {
74
- if (newRunOnly !== void 0) instanceRef.value?.setRunOnly(newRunOnly);
75
- },
76
- { flush: "post" }
77
- );
78
- function runScan() {
79
- return instanceRef.value?.runScan() ?? Promise.resolve(null);
80
- }
81
- function setTheme(theme) {
82
- instanceRef.value?.setTheme(theme);
83
- }
84
- function setRunOnly(tags) {
85
- instanceRef.value?.setRunOnly(tags);
86
- }
87
- function exportResults() {
88
- return instanceRef.value?.exportResults() ?? null;
89
- }
90
- const ignores = {
91
- add(ruleId, selector) {
92
- instanceRef.value?.ignores.add(ruleId, selector);
93
- },
94
- remove(ruleId, selector) {
95
- instanceRef.value?.ignores.remove(ruleId, selector);
96
- },
97
- clear() {
98
- instanceRef.value?.ignores.clear();
99
- },
100
- list() {
101
- return instanceRef.value?.ignores.list() ?? [];
102
- },
103
- exportJson() {
104
- return instanceRef.value?.ignores.exportJson() ?? "[]";
105
- },
106
- importJson(json) {
107
- instanceRef.value?.ignores.importJson(json);
108
- }
109
- };
110
- return { runScan, setTheme, setRunOnly, exportResults, ignores };
111
- }
112
-
113
- // src/component.ts
114
- var A11yHud = vue.defineComponent({
115
- name: "A11yHud",
116
- props: {
117
- theme: {
118
- type: String,
119
- default: void 0
120
- },
121
- scope: {
122
- type: Object,
123
- default: void 0
124
- },
125
- autoScan: {
126
- type: Boolean,
127
- default: void 0
128
- },
129
- debounce: {
130
- type: Number,
131
- default: void 0
132
- }
133
- },
134
- setup(props) {
135
- useA11yHud(props);
136
- return () => null;
137
- }
138
- });
139
-
140
- exports.A11yHud = A11yHud;
141
- exports.useA11yHud = useA11yHud;
142
- //# sourceMappingURL=index.cjs.map
143
- //# sourceMappingURL=index.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/composable.ts","../src/component.ts"],"names":["shallowRef","onMounted","mount","onUnmounted","watch","defineComponent"],"mappings":";;;;;;AAKO,SAAS,UAAA,CAAW,OAAA,GAA6B,EAAC,EAAqB;AAC5E,EAAA,MAAM,WAAA,GAAcA,eAAmC,IAAI,CAAA;AAC3D,EAAA,MAAM,UAAA,GAAaA,eAAkC,IAAI,CAAA;AAEzD,EAAAC,aAAA,CAAU,MAAM;AACd,IAAA,MAAM,EAAE,KAAA,EAAO,QAAA,EAAU,QAAA,EAAU,SAAQ,GAAI,OAAA;AAC/C,IAAA,MAAM,WAAWC,aAAA,CAAM;AAAA,MACrB,GAAI,KAAA,KAAU,MAAA,IAAa,EAAE,KAAA,EAAM;AAAA,MACnC,GAAI,QAAA,KAAa,MAAA,IAAa,EAAE,QAAA,EAAS;AAAA,MACzC,GAAI,QAAA,KAAa,MAAA,IAAa,EAAE,QAAA,EAAS;AAAA,MACzC,GAAI,OAAA,KAAY,MAAA,IAAa,EAAE,OAAA;AAAQ,KACxC,CAAA;AACD,IAAA,WAAA,CAAY,KAAA,GAAQ,QAAA;AACpB,IAAA,UAAA,CAAW,KAAA,GAAQ,QAAA,CAAS,aAAA,CAA8B,UAAU,CAAA;AACpE,IAAA,MAAM,KAAK,UAAA,CAAW,KAAA;AACtB,IAAA,IAAI,EAAA,EAAI;AACN,MAAA,EAAA,CAAG,YAAA,GAAe,QAAQ,KAAA,IAAS,MAAA;AAAA,IACrC;AACA,IAAA,KAAK,SAAS,OAAA,EAAQ;AAAA,EACxB,CAAC,CAAA;AAED,EAAAC,eAAA,CAAY,MAAM;AAChB,IAAA,WAAA,CAAY,OAAO,OAAA,EAAQ;AAC3B,IAAA,WAAA,CAAY,KAAA,GAAQ,IAAA;AACpB,IAAA,UAAA,CAAW,KAAA,GAAQ,IAAA;AAAA,EACrB,CAAC,CAAA;AAMD,EAAAC,SAAA;AAAA,IACE,MAAM,OAAA,CAAQ,KAAA;AAAA,IACd,MAAM;AACJ,MAAA,MAAM,WAAW,WAAA,CAAY,KAAA;AAC7B,MAAA,MAAM,KAAK,UAAA,CAAW,KAAA;AACtB,MAAA,IAAI,CAAC,QAAA,IAAY,CAAC,EAAA,EAAI;AACtB,MAAA,EAAA,CAAG,YAAA,GAAe,QAAQ,KAAA,IAAS,MAAA;AACnC,MAAA,KAAK,SAAS,OAAA,EAAQ;AAAA,IACxB,CAAA;AAAA,IACA,EAAE,OAAO,MAAA;AAAO,GAClB;AAEA,EAAAA,SAAA;AAAA,IACE,MAAM,OAAA,CAAQ,KAAA;AAAA,IACd,CAAC,QAAA,KAAa;AACZ,MAAA,IAAI,QAAA,KAAa,MAAA,EAAW,WAAA,CAAY,KAAA,EAAO,SAAS,QAAQ,CAAA;AAAA,IAClE,CAAA;AAAA,IACA,EAAE,OAAO,MAAA;AAAO,GAClB;AAEA,EAAAA,SAAA;AAAA,IACE,MAAM,OAAA,CAAQ,QAAA;AAAA,IACd,CAAC,WAAA,KAAgB;AACf,MAAA,MAAM,KAAK,UAAA,CAAW,KAAA;AACtB,MAAA,IAAI,CAAC,EAAA,EAAI;AACT,MAAA,IAAI,gBAAgB,KAAA,EAAO;AACzB,QAAA,EAAA,CAAG,gBAAgB,WAAW,CAAA;AAAA,MAChC,CAAA,MAAO;AACL,QAAA,EAAA,CAAG,YAAA,CAAa,aAAa,EAAE,CAAA;AAAA,MACjC;AAAA,IACF,CAAA;AAAA,IACA,EAAE,OAAO,MAAA;AAAO,GAClB;AAEA,EAAAA,SAAA;AAAA,IACE,MAAM,OAAA,CAAQ,QAAA;AAAA,IACd,CAAC,WAAA,KAAgB;AACf,MAAA,MAAM,KAAK,UAAA,CAAW,KAAA;AACtB,MAAA,IAAI,CAAC,EAAA,IAAM,WAAA,KAAgB,MAAA,EAAW;AACtC,MAAA,EAAA,CAAG,YAAA,CAAa,UAAA,EAAY,MAAA,CAAO,WAAW,CAAC,CAAA;AAAA,IACjD,CAAA;AAAA,IACA,EAAE,OAAO,MAAA;AAAO,GAClB;AAEA,EAAAA,SAAA;AAAA,IACE,MAAM,OAAA,CAAQ,OAAA;AAAA,IACd,CAAC,UAAA,KAAe;AACd,MAAA,IAAI,UAAA,KAAe,MAAA,EAAW,WAAA,CAAY,KAAA,EAAO,WAAW,UAAU,CAAA;AAAA,IACxE,CAAA;AAAA,IACA,EAAE,OAAO,MAAA;AAAO,GAClB;AAEA,EAAA,SAAS,OAAA,GAA+B;AACtC,IAAA,OAAO,YAAY,KAAA,EAAO,OAAA,EAAQ,IAAK,OAAA,CAAQ,QAAQ,IAA6B,CAAA;AAAA,EACtF;AAEA,EAAA,SAAS,SAAS,KAAA,EAAoB;AACpC,IAAA,WAAA,CAAY,KAAA,EAAO,SAAS,KAAK,CAAA;AAAA,EACnC;AAEA,EAAA,SAAS,WAAW,IAAA,EAAsB;AACxC,IAAA,WAAA,CAAY,KAAA,EAAO,WAAW,IAAI,CAAA;AAAA,EACpC;AAEA,EAAA,SAAS,aAAA,GAA+B;AACtC,IAAA,OAAO,WAAA,CAAY,KAAA,EAAO,aAAA,EAAc,IAAK,IAAA;AAAA,EAC/C;AAEA,EAAA,MAAM,OAAA,GAAU;AAAA,IACd,GAAA,CAAI,QAAgB,QAAA,EAAyB;AAC3C,MAAA,WAAA,CAAY,KAAA,EAAO,OAAA,CAAQ,GAAA,CAAI,MAAA,EAAQ,QAAQ,CAAA;AAAA,IACjD,CAAA;AAAA,IACA,MAAA,CAAO,QAAgB,QAAA,EAAyB;AAC9C,MAAA,WAAA,CAAY,KAAA,EAAO,OAAA,CAAQ,MAAA,CAAO,MAAA,EAAQ,QAAQ,CAAA;AAAA,IACpD,CAAA;AAAA,IACA,KAAA,GAAc;AACZ,MAAA,WAAA,CAAY,KAAA,EAAO,QAAQ,KAAA,EAAM;AAAA,IACnC,CAAA;AAAA,IACA,IAAA,GAAO;AACL,MAAA,OAAO,WAAA,CAAY,KAAA,EAAO,OAAA,CAAQ,IAAA,MAAU,EAAC;AAAA,IAC/C,CAAA;AAAA,IACA,UAAA,GAAqB;AACnB,MAAA,OAAO,WAAA,CAAY,KAAA,EAAO,OAAA,CAAQ,UAAA,EAAW,IAAK,IAAA;AAAA,IACpD,CAAA;AAAA,IACA,WAAW,IAAA,EAAoB;AAC7B,MAAA,WAAA,CAAY,KAAA,EAAO,OAAA,CAAQ,UAAA,CAAW,IAAI,CAAA;AAAA,IAC5C;AAAA,GACF;AAEA,EAAA,OAAO,EAAE,OAAA,EAAS,QAAA,EAAU,UAAA,EAAY,eAAe,OAAA,EAAQ;AACjE;;;ACxHO,IAAM,UAAUC,mBAAA,CAAgB;AAAA,EACrC,IAAA,EAAM,SAAA;AAAA,EACN,KAAA,EAAO;AAAA,IACL,KAAA,EAAO;AAAA,MACL,IAAA,EAAM,MAAA;AAAA,MACN,OAAA,EAAS;AAAA,KACX;AAAA,IACA,KAAA,EAAO;AAAA,MACL,IAAA,EAAM,MAAA;AAAA,MACN,OAAA,EAAS;AAAA,KACX;AAAA,IACA,QAAA,EAAU;AAAA,MACR,IAAA,EAAM,OAAA;AAAA,MACN,OAAA,EAAS;AAAA,KACX;AAAA,IACA,QAAA,EAAU;AAAA,MACR,IAAA,EAAM,MAAA;AAAA,MACN,OAAA,EAAS;AAAA;AACX,GACF;AAAA,EACA,MAAM,KAAA,EAAO;AACX,IAAA,UAAA,CAAW,KAAqB,CAAA;AAChC,IAAA,OAAO,MAAM,IAAA;AAAA,EACf;AACF,CAAC","file":"index.cjs","sourcesContent":["import type { A11yHudElement, A11yHudInstance, AxeResults, Theme } from \"a11y-hud\";\nimport { mount } from \"a11y-hud\";\nimport { onMounted, onUnmounted, shallowRef, watch } from \"vue\";\nimport type { UseA11yHudOptions, UseA11yHudReturn } from \"./types.js\";\n\nexport function useA11yHud(options: UseA11yHudOptions = {}): UseA11yHudReturn {\n const instanceRef = shallowRef<A11yHudInstance | null>(null);\n const elementRef = shallowRef<A11yHudElement | null>(null);\n\n onMounted(() => {\n const { theme, autoScan, debounce, runOnly } = options;\n const instance = mount({\n ...(theme !== undefined && { theme }),\n ...(autoScan !== undefined && { autoScan }),\n ...(debounce !== undefined && { debounce }),\n ...(runOnly !== undefined && { runOnly }),\n });\n instanceRef.value = instance;\n elementRef.value = document.querySelector<A11yHudElement>(\"a11y-hud\");\n const el = elementRef.value;\n if (el) {\n el.scopeElement = options.scope ?? undefined;\n }\n void instance.runScan();\n });\n\n onUnmounted(() => {\n instanceRef.value?.unmount();\n instanceRef.value = null;\n elementRef.value = null;\n });\n\n // Render-settled signal: fires after the scope prop changes, syncing the CE's\n // scopeElement and triggering a rescan. Route changes and general DOM mutations\n // are handled by the core's MutationObserver; this watch covers the prop-change\n // path (e.g. enabling/disabling scope, passing a different ref).\n watch(\n () => options.scope,\n () => {\n const instance = instanceRef.value;\n const el = elementRef.value;\n if (!instance || !el) return;\n el.scopeElement = options.scope ?? undefined;\n void instance.runScan();\n },\n { flush: \"post\" }\n );\n\n watch(\n () => options.theme,\n (newTheme) => {\n if (newTheme !== undefined) instanceRef.value?.setTheme(newTheme);\n },\n { flush: \"post\" }\n );\n\n watch(\n () => options.autoScan,\n (newAutoScan) => {\n const el = elementRef.value;\n if (!el) return;\n if (newAutoScan === false) {\n el.removeAttribute(\"auto-scan\");\n } else {\n el.setAttribute(\"auto-scan\", \"\");\n }\n },\n { flush: \"post\" }\n );\n\n watch(\n () => options.debounce,\n (newDebounce) => {\n const el = elementRef.value;\n if (!el || newDebounce === undefined) return;\n el.setAttribute(\"debounce\", String(newDebounce));\n },\n { flush: \"post\" }\n );\n\n watch(\n () => options.runOnly,\n (newRunOnly) => {\n if (newRunOnly !== undefined) instanceRef.value?.setRunOnly(newRunOnly);\n },\n { flush: \"post\" }\n );\n\n function runScan(): Promise<AxeResults> {\n return instanceRef.value?.runScan() ?? Promise.resolve(null as unknown as AxeResults);\n }\n\n function setTheme(theme: Theme): void {\n instanceRef.value?.setTheme(theme);\n }\n\n function setRunOnly(tags: string[]): void {\n instanceRef.value?.setRunOnly(tags);\n }\n\n function exportResults(): string | null {\n return instanceRef.value?.exportResults() ?? null;\n }\n\n const ignores = {\n add(ruleId: string, selector?: string): void {\n instanceRef.value?.ignores.add(ruleId, selector);\n },\n remove(ruleId: string, selector?: string): void {\n instanceRef.value?.ignores.remove(ruleId, selector);\n },\n clear(): void {\n instanceRef.value?.ignores.clear();\n },\n list() {\n return instanceRef.value?.ignores.list() ?? [];\n },\n exportJson(): string {\n return instanceRef.value?.ignores.exportJson() ?? \"[]\";\n },\n importJson(json: string): void {\n instanceRef.value?.ignores.importJson(json);\n },\n };\n\n return { runScan, setTheme, setRunOnly, exportResults, ignores };\n}\n","import type { Theme } from \"a11y-hud\";\nimport type { PropType } from \"vue\";\nimport { defineComponent } from \"vue\";\nimport { useA11yHud } from \"./composable.js\";\nimport type { A11yHudProps } from \"./types.js\";\n\nexport const A11yHud = defineComponent({\n name: \"A11yHud\",\n props: {\n theme: {\n type: String as PropType<Theme>,\n default: undefined,\n },\n scope: {\n type: Object as PropType<Element | null>,\n default: undefined,\n },\n autoScan: {\n type: Boolean as PropType<boolean>,\n default: undefined,\n },\n debounce: {\n type: Number as PropType<number>,\n default: undefined,\n },\n },\n setup(props) {\n useA11yHud(props as A11yHudProps);\n return () => null;\n },\n});\n"]}
package/dist/index.d.cts DELETED
@@ -1,71 +0,0 @@
1
- import * as vue from 'vue';
2
- import { PropType } from 'vue';
3
- import { Theme, AxeResults, IgnoreEntry } from 'a11y-hud';
4
-
5
- declare const A11yHud: vue.DefineComponent<vue.ExtractPropTypes<{
6
- theme: {
7
- type: PropType<Theme>;
8
- default: undefined;
9
- };
10
- scope: {
11
- type: PropType<Element | null>;
12
- default: undefined;
13
- };
14
- autoScan: {
15
- type: PropType<boolean>;
16
- default: undefined;
17
- };
18
- debounce: {
19
- type: PropType<number>;
20
- default: undefined;
21
- };
22
- }>, () => null, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, vue.PublicProps, Readonly<vue.ExtractPropTypes<{
23
- theme: {
24
- type: PropType<Theme>;
25
- default: undefined;
26
- };
27
- scope: {
28
- type: PropType<Element | null>;
29
- default: undefined;
30
- };
31
- autoScan: {
32
- type: PropType<boolean>;
33
- default: undefined;
34
- };
35
- debounce: {
36
- type: PropType<number>;
37
- default: undefined;
38
- };
39
- }>> & Readonly<{}>, {
40
- theme: Theme;
41
- autoScan: boolean;
42
- debounce: number;
43
- scope: Element | null;
44
- }, {}, {}, {}, string, vue.ComponentProvideOptions, true, {}, any>;
45
-
46
- interface UseA11yHudOptions {
47
- theme?: Theme;
48
- scope?: Element | null;
49
- autoScan?: boolean;
50
- debounce?: number;
51
- runOnly?: string[];
52
- }
53
- type A11yHudProps = UseA11yHudOptions;
54
- interface UseA11yHudReturn {
55
- runScan(): Promise<AxeResults>;
56
- setTheme(theme: Theme): void;
57
- setRunOnly(tags: string[]): void;
58
- exportResults(): string | null;
59
- ignores: {
60
- add(ruleId: string, selector?: string): void;
61
- remove(ruleId: string, selector?: string): void;
62
- clear(): void;
63
- list(): IgnoreEntry[];
64
- exportJson(): string;
65
- importJson(json: string): void;
66
- };
67
- }
68
-
69
- declare function useA11yHud(options?: UseA11yHudOptions): UseA11yHudReturn;
70
-
71
- export { A11yHud, type A11yHudProps, type UseA11yHudOptions, type UseA11yHudReturn, useA11yHud };